From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd33.google.com (mail-io1-xd33.google.com [IPv6:2607:f8b0:4864:20::d33]) by sourceware.org (Postfix) with ESMTPS id 0926C398E830 for ; Mon, 28 Sep 2020 17:54:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0926C398E830 Received: by mail-io1-xd33.google.com with SMTP id v8so2052701iom.6 for ; Mon, 28 Sep 2020 10:54:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=coCxpYXZtaW5wMOJJEfbcJ/ITOck6pEZECJwwu28mOE=; b=obzNQKEKewqyfG6IdxQ5ur/IjZG371STNQ4eB9JYUMmtr3DaVsMSsBMo6C1+KsTlOf 8gXQ1KGjBiXNnlysdkHqAEUhhoM9vut+NBjyoZi21K11Uhhmi4R5HfE4gV1VZnOt8AXP zSo3qJ28zW4BwAb7mPhj6SoUlD7Ij7X31inTLA+uolW/0u3C1XwPXYQAlFeK5J2eBlOQ vlN7PN4+7H+BAJXKc0lE6iugoIyo0RnEJadG9Z5ReQpwZ1uN+CKWQSFse7Ymt2A9eK7n AXI2REBRNOghJCZ/slVGbVosuSdQ1ObZ4R3dKVMVm0v5lab4YV3+a0SC8kwVk4y772pD nS1Q== X-Gm-Message-State: AOAM530/ASp9FUFtHGmtLzNGml6Px866looIuOR/SokYTrZcc69YyoD/ uXekTCoBGbmrmbpv+KV0fninaLiBS6BK6Vaimpj2DtH58wE= X-Google-Smtp-Source: ABdhPJzBolfWbQnGct7Pz4uhlRV35UxPgjUkkkvWT9BTnkO1FJHHPwHERBUtfMAKEZz5nDFwQY8BiMa+K7z8AlVJ6oU= X-Received: by 2002:a02:6607:: with SMTP id k7mr2141624jac.91.1601315685465; Mon, 28 Sep 2020 10:54:45 -0700 (PDT) MIME-Version: 1.0 References: <20200918160709.949608-1-hjl.tools@gmail.com> <20200918160709.949608-2-hjl.tools@gmail.com> <87imby6obw.fsf@oldenburg2.str.redhat.com> <87y2ku574k.fsf@oldenburg2.str.redhat.com> <87lfgu56c8.fsf@oldenburg2.str.redhat.com> <87pn663qm5.fsf@oldenburg2.str.redhat.com> In-Reply-To: <87pn663qm5.fsf@oldenburg2.str.redhat.com> From: "H.J. Lu" Date: Mon, 28 Sep 2020 10:54:09 -0700 Message-ID: Subject: V3 [PATCH] x86: Initialize CPU info via IFUNC relocation [BZ 26203] To: Florian Weimer Cc: "H.J. Lu via Libc-alpha" Content-Type: multipart/mixed; boundary="0000000000009b22f805b0635c75" X-Spam-Status: No, score=-3032.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Sep 2020 17:54:47 -0000 --0000000000009b22f805b0635c75 Content-Type: text/plain; charset="UTF-8" On Mon, Sep 28, 2020 at 7:47 AM Florian Weimer wrote: > > * H. J. Lu: > > > On Mon, Sep 28, 2020 at 7:22 AM Florian Weimer wrote: > >> > >> * H. J. Lu: > >> > >> > We want to call init_cacheinfo as early as possible. __libc_early_init is > >> > still too late. > >> > >> My point is that we should call it from IFUNC resolvers that need it, > >> and from __libc_early_init. That should cover all cases, no? > > > > Why call it from __libc_early_init after it has been called by > > IFUNC reloc? IFUNC relocations are processed before > > __libc_early_init is called. > > IFUNC relocations might not existing in a --disable-multi-arch build, > but it may still need the cacheinfo data if the hard-coded > implementations need them. IFUNC is always supported on x86. multi-arch uses IFUNC, not the other way around. > We would still run the IFUNC resolver for the artificial IFUNC resolver > with its function pointer, but: > > My concern is that you seem to have a specific ordering dependency on > IFUNC resolvers, and I would like to get rid of that: Initialize the > necessary data on demand (for string function selection), and during > __libc_early_init for potential use from string functions. > > I hope this clarifies what I'm looking for. Please let me know if this > is not reasonable. > Here is the updated patch. Does it address your concerns? Thanks. -- H.J. --0000000000009b22f805b0635c75 Content-Type: application/x-patch; name="0001-x86-Initialize-CPU-info-via-IFUNC-relocation-BZ-2620.patch" Content-Disposition: attachment; filename="0001-x86-Initialize-CPU-info-via-IFUNC-relocation-BZ-2620.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kfmtwhwm0 RnJvbSAwNzQzMDY4NWM1ZWJkN2FjY2NhYWM4NzAzMDYzNjk4ZjBmMWI0MWYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFNhdCwgNCBKdWwgMjAyMCAwNjozNTo0OSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHg4NjogSW5p dGlhbGl6ZSBDUFUgaW5mbyB2aWEgSUZVTkMgcmVsb2NhdGlvbiBbQlogMjYyMDNdCgpYODYgQ1BV IGZlYXR1cmVzIGluIGxkLnNvIGFyZSBpbml0aWFsaXplZCBieSBpbml0X2NwdV9mZWF0dXJlcywg d2hpY2ggaXMKaW52b2tlZCBieSBETF9QTEFURk9STV9JTklUIGZyb20gX2RsX3N5c2RlcF9zdGFy dC4gIEJ1dCB3aGVuIGxkLnNvIGlzCmxvYWRlZCBieSBzdGF0aWMgZXhlY3V0YWJsZSwgRExfUExB VEZPUk1fSU5JVCBpcyBuZXZlciBjYWxsZWQuICBBbHNvCng4NiBjYWNoZSBpbmZvIGluIGxpYmMu byBhbmQgbGliYy5hIGlzIGluaXRpYWxpemVkIGJ5IGEgY29uc3RydWN0b3IKd2hpY2ggbWF5IGJl IGNhbGxlZCB0b28gbGF0ZS4gIFNpbmNlIHNvbWUgZmllbGRzIGluIF9ydGxkX2dsb2JhbF9ybwpp biBsZC5zbyBhcmUgaW5pdGlhbGl6ZWQgYnkgZHluYW1pYyByZWxvY2F0aW9uLCB3ZSBjYW4gYWxz byBpbml0aWFsaXplCng4NiBDUFUgZmVhdHVyZXMgaW4gX3J0bGRfZ2xvYmFsX3JvIGluIGxkLnNv IGFuZCBjYWNoZSBpbmZvIGluIGxpYmMuc28KYnkgaW5pdGlhbGl6aW5nIGR1bW15IGZ1bmN0aW9u IHBvaW50ZXJzIGluIGxkLnNvIGFuZCBsaWJjLnNvIHZpYSBJRlVOQwpyZWxvY2F0aW9uLgoKS2V5 IHBvaW50czoKCjEuIElGVU5DIGlzIGFsd2F5cyBzdXBwb3J0ZWQsIGluZGVwZW5kZW50IG9mIC0t ZW5hYmxlLW11bHRpLWFyY2ggb3IKLS1kaXNhYmxlLW11bHRpLWFyY2guICBMaW5rZXIgZ2VuZXJh dGVzIElGVU5DIHJlbG9jYXRpb25zIGZyb20gaW5wdXQKSUZVTkMgb2JqZWN0cyBhbmQgbGQuc28g cGVyZm9ybXMgSUZVTkMgcmVsb2NhdGlvbnMuCjIuIFRoZXJlIGFyZSBubyBJRlVOQyBkZXBlbmRl bmNpZXMgaW4gbGQuc28gYmVmb3JlIGR5bmFtaWMgcmVsb2NhdGlvbgpoYXZlIGJlZW4gcGVyZm9y bWVkLAozLiBUaGUgeDg2IENQVSBmZWF0dXJlcyBpbiBsZC5zbyBpcyBpbml0aWFsaXplZCBieSBE TF9QTEFURk9STV9JTklUCmluIGR5bmFtaWMgZXhlY3V0YWJsZSBhbmQgYnkgSUZVTkMgcmVsb2Nh dGlvbiBpbiBkbG9wZW4gaW4gc3RhdGljCmV4ZWN1dGFibGUuCjQuIFRoZSB4ODYgY2FjaGUgaW5m byBpbiBsaWJjLm8gaXMgaW5pdGlhbGl6ZWQgYnkgSUZVTkMgcmVsb2NhdGlvbi4KNS4gSW4gbGli Yy5hLCBib3RoIHg4NiBDUFUgZmVhdHVyZXMgYW5kIGNhY2hlIGluZm8gYXJlIGluaXRpYWxpemVk IGZyb20KQVJDSF9JTklUX0NQVV9GRUFUVVJFUywgbm90IGJ5IElGVU5DIHJlbG9jYXRpb24sIGJl Zm9yZSBfX2xpYmNfZWFybHlfaW5pdAppcyBjYWxsZWQuCgpOb3RlOiBfZGxfeDg2X2luaXRfY3B1 X2ZlYXR1cmVzIGNhbiBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgZnJvbQpETF9QTEFURk9STV9J TklUIGFuZCBkdXJpbmcgcmVsb2NhdGlvbiBpbiBsZC5zby4KLS0tCiBzeXNkZXBzL2kzODYvZGwt bWFjaGluZS5oICAgICAgICAgIHwgIDMgKy0tCiBzeXNkZXBzL3g4Ni9jYWNoZWluZm8uYyAgICAg ICAgICAgIHwgMTAgKysrKysrKysrLQogc3lzZGVwcy94ODYvZGwtZ2V0LWNwdS1mZWF0dXJlcy5j ICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKy0KIHN5c2RlcHMveDg2L2luY2x1ZGUvY3B1 LWZlYXR1cmVzLmggfCAgMSArCiBzeXNkZXBzL3g4Nl82NC9kbC1tYWNoaW5lLmggICAgICAgIHwg IDMgKy0tCiA1IGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy9pMzg2L2RsLW1hY2hpbmUuaCBiL3N5c2RlcHMvaTM4Ni9k bC1tYWNoaW5lLmgKaW5kZXggMGYwODA3OWU0OC4uNWUyMmU3OTVjYyAxMDA2NDQKLS0tIGEvc3lz ZGVwcy9pMzg2L2RsLW1hY2hpbmUuaAorKysgYi9zeXNkZXBzL2kzODYvZGwtbWFjaGluZS5oCkBA IC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSA8c3lzZGVwLmg+CiAjaW5jbHVkZSA8dGxzLmg+CiAj aW5jbHVkZSA8ZGwtdGxzZGVzYy5oPgotI2luY2x1ZGUgPGNwdS1mZWF0dXJlcy5jPgoKIC8qIFJl dHVybiBub256ZXJvIGlmZiBFTEYgaGVhZGVyIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgcnVubmlu ZyBob3N0LiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQpA QCAtMjUwLDcgKzI0OSw3IEBAIGRsX3BsYXRmb3JtX2luaXQgKHZvaWQpCiAjaWYgSVNfSU4gKHJ0 bGQpCiAgIC8qIGluaXRfY3B1X2ZlYXR1cmVzIGhhcyBiZWVuIGNhbGxlZCBlYXJseSBmcm9tIF9f bGliY19zdGFydF9tYWluIGluCiAgICAgIHN0YXRpYyBleGVjdXRhYmxlLiAgKi8KLSAgaW5pdF9j cHVfZmVhdHVyZXMgKCZHTFJPKGRsX3g4Nl9jcHVfZmVhdHVyZXMpKTsKKyAgX2RsX3g4Nl9pbml0 X2NwdV9mZWF0dXJlcyAoKTsKICNlbHNlCiAgIGlmIChHTFJPKGRsX3BsYXRmb3JtKSAhPSBOVUxM ICYmICpHTFJPKGRsX3BsYXRmb3JtKSA9PSAnXDAnKQogICAgIC8qIEF2b2lkIGFuIGVtcHR5IHN0 cmluZyB3aGljaCB3b3VsZCBkaXN0dXJiIHVzLiAgKi8KZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2 L2NhY2hlaW5mby5jIGIvc3lzZGVwcy94ODYvY2FjaGVpbmZvLmMKaW5kZXggMjE3YzIxYzM0Zi4u N2EzMjVhYjcwZSAxMDA2NDQKLS0tIGEvc3lzZGVwcy94ODYvY2FjaGVpbmZvLmMKKysrIGIvc3lz ZGVwcy94ODYvY2FjaGVpbmZvLmMKQEAgLTc1Niw3ICs3NTYsNiBAQCBpbnRlbF9idWdfbm9fY2Fj aGVfaW5mbzoKCiBzdGF0aWMgdm9pZAotX19hdHRyaWJ1dGVfXygoY29uc3RydWN0b3IpKQogaW5p dF9jYWNoZWluZm8gKHZvaWQpCiB7CiAgIC8qIEZpbmQgb3V0IHdoYXQgYnJhbmQgb2YgcHJvY2Vz c29yLiAgKi8KQEAgLTc3MCw2ICs3NjksOCBAQCBpbml0X2NhY2hlaW5mbyAodm9pZCkKICAgdW5z aWduZWQgaW50IHRocmVhZHMgPSAwOwogICBjb25zdCBzdHJ1Y3QgY3B1X2ZlYXR1cmVzICpjcHVf ZmVhdHVyZXMgPSBfX2dldF9jcHVfZmVhdHVyZXMgKCk7CgorICBhc3NlcnQgKGNwdV9mZWF0dXJl cy0+YmFzaWMua2luZCAhPSBhcmNoX2tpbmRfdW5rbm93bik7CisKICAgaWYgKGNwdV9mZWF0dXJl cy0+YmFzaWMua2luZCA9PSBhcmNoX2tpbmRfaW50ZWwpCiAgICAgewogICAgICAgZGF0YSA9IGhh bmRsZV9pbnRlbCAoX1NDX0xFVkVMMV9EQ0FDSEVfU0laRSwgY3B1X2ZlYXR1cmVzKTsKQEAgLTg5 NCw0ICs4OTUsMTEgQEAgaW5pdF9jYWNoZWluZm8gKHZvaWQpCiAjIGVuZGlmCiB9CgorLyogTkI6 IENhbGwgaW5pdF9jYWNoZWluZm8gYnkgaW5pdGlhbGl6aW5nIGEgZHVtbXkgZnVuY3Rpb24gcG9p bnRlciB2aWEKKyAgIElGVU5DIHJlbG9jYXRpb24uICAqLworZXh0ZXJuIHZvaWQgX194ODZfY2Fj aGVpbmZvICh2b2lkKSBhdHRyaWJ1dGVfaGlkZGVuOworY29uc3Qgdm9pZCAoKl9feDg2X2NhY2hl aW5mb19wKSAodm9pZCkgYXR0cmlidXRlX2hpZGRlbgorICA9IF9feDg2X2NhY2hlaW5mbzsKKwor X19pZnVuYyAoX194ODZfY2FjaGVpbmZvLCBfX3g4Nl9jYWNoZWluZm8sIE5VTEwsIHZvaWQsIGlu aXRfY2FjaGVpbmZvKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy94ODYvZGwtZ2V0LWNw dS1mZWF0dXJlcy5jIGIvc3lzZGVwcy94ODYvZGwtZ2V0LWNwdS1mZWF0dXJlcy5jCmluZGV4IDVm OWU0NmIwYzYuLmRhNDY5N2I4OTUgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMveDg2L2RsLWdldC1jcHUt ZmVhdHVyZXMuYworKysgYi9zeXNkZXBzL3g4Ni9kbC1nZXQtY3B1LWZlYXR1cmVzLmMKQEAgLTEs NCArMSw0IEBACi0vKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKy8q IEluaXRpYWxpemUgQ1BVIGZlYXR1cmUgZGF0YSB2aWEgSUZVTkMgcmVsb2NhdGlvbi4KICAgIENv cHlyaWdodCAoQykgMjAxNS0yMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgoKICAg IFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgpAQCAtMTgsNiArMTgsMjkgQEAKCiAjaW5jbHVkZSA8bGRzb2RlZnMuaD4KCisj aWZkZWYgU0hBUkVECisjIGluY2x1ZGUgPGNwdS1mZWF0dXJlcy5jPgorCisvKiBOQjogTm9ybWFs bHksIERMX1BMQVRGT1JNX0lOSVQgY2FsbHMgaW5pdF9jcHVfZmVhdHVyZXMgdG8gaW5pdGlhbGl6 ZQorICAgQ1BVIGZlYXR1cmVzLiAgQnV0IHdoZW4gbG9hZGluZyBsZC5zbyBpbnNpZGUgb2Ygc3Rh dGljIGV4ZWN1dGFibGUsCisgICBETF9QTEFURk9STV9JTklUIGlzbid0IGNhbGxlZC4gIENhbGwg aW5pdF9jcHVfZmVhdHVyZXMgYnkgaW5pdGlhbGl6aW5nCisgICBhIGR1bW15IGZ1bmN0aW9uIHBv aW50ZXIgdmlhIElGVU5DIHJlbG9jYXRpb24gZm9yIGxkLnNvLiAgKi8KK2V4dGVybiB2b2lkIF9f eDg2X2NwdV9mZWF0dXJlcyAodm9pZCkgYXR0cmlidXRlX2hpZGRlbjsKK2NvbnN0IHZvaWQgKCpf X3g4Nl9jcHVfZmVhdHVyZXNfcCkgKHZvaWQpIGF0dHJpYnV0ZV9oaWRkZW4KKyAgPSBfX3g4Nl9j cHVfZmVhdHVyZXM7CisKK3ZvaWQKK19kbF94ODZfaW5pdF9jcHVfZmVhdHVyZXMgKHZvaWQpCit7 CisgIHN0cnVjdCBjcHVfZmVhdHVyZXMgKmNwdV9mZWF0dXJlcyA9IF9fZ2V0X2NwdV9mZWF0dXJl cyAoKTsKKyAgaWYgKGNwdV9mZWF0dXJlcy0+YmFzaWMua2luZCA9PSBhcmNoX2tpbmRfdW5rbm93 bikKKyAgICBpbml0X2NwdV9mZWF0dXJlcyAoY3B1X2ZlYXR1cmVzKTsKK30KKworX19pZnVuYyAo X194ODZfY3B1X2ZlYXR1cmVzLCBfX3g4Nl9jcHVfZmVhdHVyZXMsIE5VTEwsIHZvaWQsCisJIF9k bF94ODZfaW5pdF9jcHVfZmVhdHVyZXMpOworI2VuZGlmCisKICN1bmRlZiBfX3g4Nl9nZXRfY3B1 X2ZlYXR1cmVzCgogY29uc3Qgc3RydWN0IGNwdV9mZWF0dXJlcyAqCmRpZmYgLS1naXQgYS9zeXNk ZXBzL3g4Ni9pbmNsdWRlL2NwdS1mZWF0dXJlcy5oIGIvc3lzZGVwcy94ODYvaW5jbHVkZS9jcHUt ZmVhdHVyZXMuaAppbmRleCBkY2YyOWI2ZmU4Li5mNjJiZTBiOWIzIDEwMDY0NAotLS0gYS9zeXNk ZXBzL3g4Ni9pbmNsdWRlL2NwdS1mZWF0dXJlcy5oCisrKyBiL3N5c2RlcHMveDg2L2luY2x1ZGUv Y3B1LWZlYXR1cmVzLmgKQEAgLTE1OSw2ICsxNTksNyBAQCBzdHJ1Y3QgY3B1X2ZlYXR1cmVzCiAv KiBVbnVzZWQgZm9yIHg4Ni4gICovCiAjICBkZWZpbmUgSU5JVF9BUkNIKCkKICMgIGRlZmluZSBf X3g4Nl9nZXRfY3B1X2ZlYXR1cmVzKG1heCkgKCZHTFJPKGRsX3g4Nl9jcHVfZmVhdHVyZXMpKQor ZXh0ZXJuIHZvaWQgX2RsX3g4Nl9pbml0X2NwdV9mZWF0dXJlcyAodm9pZCkgYXR0cmlidXRlX2hp ZGRlbjsKICMgZW5kaWYKCiAjIGlmZGVmIF9feDg2XzY0X18KZGlmZiAtLWdpdCBhL3N5c2RlcHMv eDg2XzY0L2RsLW1hY2hpbmUuaCBiL3N5c2RlcHMveDg2XzY0L2RsLW1hY2hpbmUuaAppbmRleCBj YTczZDhmZWY5Li43NzNlOTRjOGJiIDEwMDY0NAotLS0gYS9zeXNkZXBzL3g4Nl82NC9kbC1tYWNo aW5lLmgKKysrIGIvc3lzZGVwcy94ODZfNjQvZGwtbWFjaGluZS5oCkBAIC0yNiw3ICsyNiw2IEBA CiAjaW5jbHVkZSA8c3lzZGVwLmg+CiAjaW5jbHVkZSA8dGxzLmg+CiAjaW5jbHVkZSA8ZGwtdGxz ZGVzYy5oPgotI2luY2x1ZGUgPGNwdS1mZWF0dXJlcy5jPgoKIC8qIFJldHVybiBub256ZXJvIGlm ZiBFTEYgaGVhZGVyIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgcnVubmluZyBob3N0LiAgKi8KIHN0 YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQpAQCAtMjI1LDcgKzIyNCw3 IEBAIGRsX3BsYXRmb3JtX2luaXQgKHZvaWQpCiAjaWYgSVNfSU4gKHJ0bGQpCiAgIC8qIGluaXRf Y3B1X2ZlYXR1cmVzIGhhcyBiZWVuIGNhbGxlZCBlYXJseSBmcm9tIF9fbGliY19zdGFydF9tYWlu IGluCiAgICAgIHN0YXRpYyBleGVjdXRhYmxlLiAgKi8KLSAgaW5pdF9jcHVfZmVhdHVyZXMgKCZH TFJPKGRsX3g4Nl9jcHVfZmVhdHVyZXMpKTsKKyAgX2RsX3g4Nl9pbml0X2NwdV9mZWF0dXJlcyAo KTsKICNlbHNlCiAgIGlmIChHTFJPKGRsX3BsYXRmb3JtKSAhPSBOVUxMICYmICpHTFJPKGRsX3Bs YXRmb3JtKSA9PSAnXDAnKQogICAgIC8qIEF2b2lkIGFuIGVtcHR5IHN0cmluZyB3aGljaCB3b3Vs ZCBkaXN0dXJiIHVzLiAgKi8KLS0KMi4yNi4yCi0tLQogc3lzZGVwcy9pMzg2L2RsLW1hY2hpbmUu aCAgICAgICAgICB8ICA3ICsrKy0tLS0KIHN5c2RlcHMveDg2L2NhY2hlaW5mby5jICAgICAgICAg ICAgfCAyMSArKysrKysrKysrKysrKysrKysrLS0KIHN5c2RlcHMveDg2L2NwdS1mZWF0dXJlcy5j ICAgICAgICAgfCAxMiArKysrKysrKysrKy0KIHN5c2RlcHMveDg2L2RsLWdldC1jcHUtZmVhdHVy ZXMuYyAgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHN5c2RlcHMveDg2L2luY2x1 ZGUvY3B1LWZlYXR1cmVzLmggfCAgMSArCiBzeXNkZXBzL3g4Ni9saWJjLXN0YXJ0LmMgICAgICAg ICAgIHwgIDIgKy0KIHN5c2RlcHMveDg2XzY0L2RsLW1hY2hpbmUuaCAgICAgICAgfCAgNyArKyst LS0tCiA3IGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3N5c2RlcHMvaTM4Ni9kbC1tYWNoaW5lLmggYi9zeXNkZXBzL2kzODYvZGwt bWFjaGluZS5oCmluZGV4IDBmMDgwNzllNDguLmJkYzIxZDFhM2MgMTAwNjQ0Ci0tLSBhL3N5c2Rl cHMvaTM4Ni9kbC1tYWNoaW5lLmgKKysrIGIvc3lzZGVwcy9pMzg2L2RsLW1hY2hpbmUuaApAQCAt MjUsNyArMjUsNiBAQAogI2luY2x1ZGUgPHN5c2RlcC5oPgogI2luY2x1ZGUgPHRscy5oPgogI2lu Y2x1ZGUgPGRsLXRsc2Rlc2MuaD4KLSNpbmNsdWRlIDxjcHUtZmVhdHVyZXMuYz4KIAogLyogUmV0 dXJuIG5vbnplcm8gaWZmIEVMRiBoZWFkZXIgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBydW5uaW5n IGhvc3QuICAqLwogc3RhdGljIGlubGluZSBpbnQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCkBA IC0yNDgsOSArMjQ3LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fYXR0cmlidXRlX18gKCh1bnVz ZWQpKQogZGxfcGxhdGZvcm1faW5pdCAodm9pZCkKIHsKICNpZiBJU19JTiAocnRsZCkKLSAgLyog aW5pdF9jcHVfZmVhdHVyZXMgaGFzIGJlZW4gY2FsbGVkIGVhcmx5IGZyb20gX19saWJjX3N0YXJ0 X21haW4gaW4KLSAgICAgc3RhdGljIGV4ZWN1dGFibGUuICAqLwotICBpbml0X2NwdV9mZWF0dXJl cyAoJkdMUk8oZGxfeDg2X2NwdV9mZWF0dXJlcykpOworICAvKiBfZGxfeDg2X2luaXRfY3B1X2Zl YXR1cmVzIGlzIGEgd3JhcHBlciBmb3IgaW5pdF9jcHVfZmVhdHVyZXMgd2hpY2gKKyAgICAgaGFz IGJlZW4gY2FsbGVkIGVhcmx5IGZyb20gX19saWJjX3N0YXJ0X21haW4gaW4gc3RhdGljIGV4ZWN1 dGFibGUuICAqLworICBfZGxfeDg2X2luaXRfY3B1X2ZlYXR1cmVzICgpOwogI2Vsc2UKICAgaWYg KEdMUk8oZGxfcGxhdGZvcm0pICE9IE5VTEwgJiYgKkdMUk8oZGxfcGxhdGZvcm0pID09ICdcMCcp CiAgICAgLyogQXZvaWQgYW4gZW1wdHkgc3RyaW5nIHdoaWNoIHdvdWxkIGRpc3R1cmIgdXMuICAq LwpkaWZmIC0tZ2l0IGEvc3lzZGVwcy94ODYvY2FjaGVpbmZvLmMgYi9zeXNkZXBzL3g4Ni9jYWNo ZWluZm8uYwppbmRleCAyMTdjMjFjMzRmLi44NzllMTgyNzM4IDEwMDY0NAotLS0gYS9zeXNkZXBz L3g4Ni9jYWNoZWluZm8uYworKysgYi9zeXNkZXBzL3g4Ni9jYWNoZWluZm8uYwpAQCAtMTYsNyAr MTYsOSBAQAogICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3Qs IHNlZQogICAgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAKLSNpZiBJU19J TiAobGliYykKKy8qIE5COiBJbiBsaWJjLmEsIHRoaXMgZmlsZSBpcyBpbmNsdWRlZCBpbiBsaWJj LXN0YXRpYy5jLiAgSW4gbGliYy5zbywKKyAgIHRoaXMgZmlsZSBpcyBzdGFuZGFsb25lLiAgKi8K KyNpZiBJU19JTiAobGliYykgJiYgKGRlZmluZWQgU0hBUkVEIHx8IGRlZmluZWQgX1BSSVZBVEVf Q1BVX0ZFQVRVUkVTX0gpCiAKICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlIDxzdGRib29s Lmg+CkBAIC03NTYsNyArNzU4LDYgQEAgaW50ZWxfYnVnX25vX2NhY2hlX2luZm86CiAKIAogc3Rh dGljIHZvaWQKLV9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSkKIGluaXRfY2FjaGVpbmZvICh2 b2lkKQogewogICAvKiBGaW5kIG91dCB3aGF0IGJyYW5kIG9mIHByb2Nlc3Nvci4gICovCkBAIC03 NzAsNiArNzcxLDEyIEBAIGluaXRfY2FjaGVpbmZvICh2b2lkKQogICB1bnNpZ25lZCBpbnQgdGhy ZWFkcyA9IDA7CiAgIGNvbnN0IHN0cnVjdCBjcHVfZmVhdHVyZXMgKmNwdV9mZWF0dXJlcyA9IF9f Z2V0X2NwdV9mZWF0dXJlcyAoKTsKIAorICAvKiBOQjogSW4gbGliYy5zbywgY3B1X2ZlYXR1cmVz IGlzIGRlZmluZWQgaW4gbGQuc28gYW5kIGlzIGluaXRpYWxpemVkCisgICAgIGJ5IERMX1BMQVRG T1JNX0lOSVQgb3IgSUZVTkMgcmVsb2NhdGlvbiBiZWZvcmUgaW5pdF9jYWNoZWluZm8gaXMKKyAg ICAgY2FsbGVkIGJ5IElGVU5DIHJlbG9jYXRpb24uICBJbiBsaWJjLmEsIGluaXRfY2FjaGVpbmZv IGlzIGNhbGxlZAorICAgICBmcm9tIGluaXRfY3B1X2ZlYXR1cmVzIGJ5IEFSQ0hfSU5JVF9DUFVf RkVBVFVSRVMuICAqLworICBhc3NlcnQgKGNwdV9mZWF0dXJlcy0+YmFzaWMua2luZCAhPSBhcmNo X2tpbmRfdW5rbm93bik7CisKICAgaWYgKGNwdV9mZWF0dXJlcy0+YmFzaWMua2luZCA9PSBhcmNo X2tpbmRfaW50ZWwpCiAgICAgewogICAgICAgZGF0YSA9IGhhbmRsZV9pbnRlbCAoX1NDX0xFVkVM MV9EQ0FDSEVfU0laRSwgY3B1X2ZlYXR1cmVzKTsKQEAgLTg5NCw0ICs5MDEsMTQgQEAgaW5pdF9j YWNoZWluZm8gKHZvaWQpCiAjIGVuZGlmCiB9CiAKKyMgaWZkZWYgU0hBUkVECisvKiBOQjogSW4g bGliYy5zbywgY2FsbCBpbml0X2NhY2hlaW5mbyBieSBpbml0aWFsaXppbmcgYSBkdW1teSBmdW5j dGlvbgorICAgcG9pbnRlciB2aWEgSUZVTkMgcmVsb2NhdGlvbiBhZnRlciBDUFUgZmVhdHVyZXMg aW4gbGQuc28gaGF2ZSBiZWVuCisgICBpbml0aWFsaXplZCBieSBETF9QTEFURk9STV9JTklUIG9y IElGVU5DIHJlbG9jYXRpb24uICAqLworZXh0ZXJuIHZvaWQgX194ODZfY2FjaGVpbmZvICh2b2lk KSBhdHRyaWJ1dGVfaGlkZGVuOworY29uc3Qgdm9pZCAoKl9feDg2X2NhY2hlaW5mb19wKSAodm9p ZCkgYXR0cmlidXRlX2hpZGRlbgorICA9IF9feDg2X2NhY2hlaW5mbzsKKworX19pZnVuYyAoX194 ODZfY2FjaGVpbmZvLCBfX3g4Nl9jYWNoZWluZm8sIE5VTEwsIHZvaWQsIGluaXRfY2FjaGVpbmZv KTsKKyMgZW5kaWYKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy94ODYvY3B1LWZlYXR1cmVz LmMgYi9zeXNkZXBzL3g4Ni9jcHUtZmVhdHVyZXMuYwppbmRleCA2NTUxZGYxOWMwLi44NzRjZTlj ODg2IDEwMDY0NAotLS0gYS9zeXNkZXBzL3g4Ni9jcHUtZmVhdHVyZXMuYworKysgYi9zeXNkZXBz L3g4Ni9jcHUtZmVhdHVyZXMuYwpAQCAtMTYsNyArMTYsMTIgQEAKICAgIExpY2Vuc2UgYWxvbmcg d2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUKICAgIDxodHRwczovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uICAqLwogCi0jaW5jbHVkZSA8Y3B1aWQuaD4KKyNpZmRlZiBTSEFSRUQK Ky8qIE5COiBXb3JrYXJvdW5kIHRoZSBHQ0MgPGNwdWlkLmg+IGJ1ZzoKKwlodHRwczovL2djYy5n bnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD05NjIzOAorICovCisjIGluY2x1ZGUgPGNw dWlkLmg+CisjZW5kaWYKICNpbmNsdWRlIDxjcHUtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxkbC1o d2NhcC5oPgogI2luY2x1ZGUgPGxpYmMtcG9pbnRlci1hcml0aC5oPgpAQCAtNzQ2LDQgKzc1MSw5 IEBAIG5vX2NwdWlkOgogIyBlbmRpZgogICAgIH0KICNlbmRpZgorCisjaWZuZGVmIFNIQVJFRAor ICAvKiBOQjogSW4gbGliYy5hLCBjYWxsIGluaXRfY2FjaGVpbmZvLiAgKi8KKyAgaW5pdF9jYWNo ZWluZm8gKCk7CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2L2RsLWdldC1jcHUt ZmVhdHVyZXMuYyBiL3N5c2RlcHMveDg2L2RsLWdldC1jcHUtZmVhdHVyZXMuYwppbmRleCA1Zjll NDZiMGM2Li4zNDk0NzJkOTlmIDEwMDY0NAotLS0gYS9zeXNkZXBzL3g4Ni9kbC1nZXQtY3B1LWZl YXR1cmVzLmMKKysrIGIvc3lzZGVwcy94ODYvZGwtZ2V0LWNwdS1mZWF0dXJlcy5jCkBAIC0xLDQg KzEsNCBAQAotLyogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisvKiBJ bml0aWFsaXplIENQVSBmZWF0dXJlIGRhdGEgdmlhIElGVU5DIHJlbG9jYXRpb24uCiAgICBDb3B5 cmlnaHQgKEMpIDIwMTUtMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogICAg VGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCkBAIC0xOCw2ICsxOCwzMSBAQAogCiAjaW5jbHVkZSA8bGRzb2RlZnMuaD4KIAor I2lmZGVmIFNIQVJFRAorIyBpbmNsdWRlIDxjcHUtZmVhdHVyZXMuYz4KKworLyogTkI6IE5vcm1h bGx5LCBETF9QTEFURk9STV9JTklUIGNhbGxzIGluaXRfY3B1X2ZlYXR1cmVzIHRvIGluaXRpYWxp emUKKyAgIENQVSBmZWF0dXJlcyBpbiBkeW5hbWljIGV4ZWN1dGFibGUuICBCdXQgd2hlbiBsb2Fk aW5nIGxkLnNvIGluc2lkZSBvZgorICAgc3RhdGljIGV4ZWN1dGFibGUsIERMX1BMQVRGT1JNX0lO SVQgaXNuJ3QgY2FsbGVkIGFuZCBJRlVOQyByZWxvY2F0aW9uCisgICBpcyB1c2VkIHRvIGNhbGwg aW5pdF9jcHVfZmVhdHVyZXMuICBJbiBzdGF0aWMgZXhlY3V0YWJsZSwgaXQgaXMgY2FsbGVkCisg ICBvbmNlIGJ5IElGVU5DIHJlbG9jYXRpb24uICBJbiBkeW5hbWljIGV4ZWN1dGFibGUsIGl0IGlz IGNhbGxlZCB0d2ljZQorICAgYnkgRExfUExBVEZPUk1fSU5JVCBhbmQgYnkgSUZVTkMgcmVsb2Nh dGlvbi4gICovCitleHRlcm4gdm9pZCBfX3g4Nl9jcHVfZmVhdHVyZXMgKHZvaWQpIGF0dHJpYnV0 ZV9oaWRkZW47Citjb25zdCB2b2lkICgqX194ODZfY3B1X2ZlYXR1cmVzX3ApICh2b2lkKSBhdHRy aWJ1dGVfaGlkZGVuCisgID0gX194ODZfY3B1X2ZlYXR1cmVzOworCit2b2lkCitfZGxfeDg2X2lu aXRfY3B1X2ZlYXR1cmVzICh2b2lkKQoreworICBzdHJ1Y3QgY3B1X2ZlYXR1cmVzICpjcHVfZmVh dHVyZXMgPSBfX2dldF9jcHVfZmVhdHVyZXMgKCk7CisgIGlmIChjcHVfZmVhdHVyZXMtPmJhc2lj LmtpbmQgPT0gYXJjaF9raW5kX3Vua25vd24pCisgICAgaW5pdF9jcHVfZmVhdHVyZXMgKGNwdV9m ZWF0dXJlcyk7Cit9CisKK19faWZ1bmMgKF9feDg2X2NwdV9mZWF0dXJlcywgX194ODZfY3B1X2Zl YXR1cmVzLCBOVUxMLCB2b2lkLAorCSBfZGxfeDg2X2luaXRfY3B1X2ZlYXR1cmVzKTsKKyNlbmRp ZgorCiAjdW5kZWYgX194ODZfZ2V0X2NwdV9mZWF0dXJlcwogCiBjb25zdCBzdHJ1Y3QgY3B1X2Zl YXR1cmVzICoKZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2L2luY2x1ZGUvY3B1LWZlYXR1cmVzLmgg Yi9zeXNkZXBzL3g4Ni9pbmNsdWRlL2NwdS1mZWF0dXJlcy5oCmluZGV4IGRjZjI5YjZmZTguLmY2 MmJlMGI5YjMgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMveDg2L2luY2x1ZGUvY3B1LWZlYXR1cmVzLmgK KysrIGIvc3lzZGVwcy94ODYvaW5jbHVkZS9jcHUtZmVhdHVyZXMuaApAQCAtMTU5LDYgKzE1OSw3 IEBAIHN0cnVjdCBjcHVfZmVhdHVyZXMKIC8qIFVudXNlZCBmb3IgeDg2LiAgKi8KICMgIGRlZmlu ZSBJTklUX0FSQ0goKQogIyAgZGVmaW5lIF9feDg2X2dldF9jcHVfZmVhdHVyZXMobWF4KSAoJkdM Uk8oZGxfeDg2X2NwdV9mZWF0dXJlcykpCitleHRlcm4gdm9pZCBfZGxfeDg2X2luaXRfY3B1X2Zl YXR1cmVzICh2b2lkKSBhdHRyaWJ1dGVfaGlkZGVuOwogIyBlbmRpZgogCiAjIGlmZGVmIF9feDg2 XzY0X18KZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2L2xpYmMtc3RhcnQuYyBiL3N5c2RlcHMveDg2 L2xpYmMtc3RhcnQuYwppbmRleCA4NzViYjkzZTU1Li40ZjcyZmNmMzk3IDEwMDY0NAotLS0gYS9z eXNkZXBzL3g4Ni9saWJjLXN0YXJ0LmMKKysrIGIvc3lzZGVwcy94ODYvbGliYy1zdGFydC5jCkBA IC0yMCw3ICsyMCw3IEBACiAgICBQSUUuICAqLwogIyBpbmNsdWRlIDxzdGFydHVwLmg+CiAjIGlu Y2x1ZGUgPGxkc29kZWZzLmg+Ci0jIGluY2x1ZGUgPGNwdS1mZWF0dXJlcy5oPgorIyBpbmNsdWRl IDxjYWNoZWluZm8uYz4KICMgaW5jbHVkZSA8Y3B1LWZlYXR1cmVzLmM+CiAKIGV4dGVybiBzdHJ1 Y3QgY3B1X2ZlYXR1cmVzIF9kbF94ODZfY3B1X2ZlYXR1cmVzOwpkaWZmIC0tZ2l0IGEvc3lzZGVw cy94ODZfNjQvZGwtbWFjaGluZS5oIGIvc3lzZGVwcy94ODZfNjQvZGwtbWFjaGluZS5oCmluZGV4 IGNhNzNkOGZlZjkuLmJiOTNjN2M2YWIgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMveDg2XzY0L2RsLW1h Y2hpbmUuaAorKysgYi9zeXNkZXBzL3g4Nl82NC9kbC1tYWNoaW5lLmgKQEAgLTI2LDcgKzI2LDYg QEAKICNpbmNsdWRlIDxzeXNkZXAuaD4KICNpbmNsdWRlIDx0bHMuaD4KICNpbmNsdWRlIDxkbC10 bHNkZXNjLmg+Ci0jaW5jbHVkZSA8Y3B1LWZlYXR1cmVzLmM+CiAKIC8qIFJldHVybiBub256ZXJv IGlmZiBFTEYgaGVhZGVyIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgcnVubmluZyBob3N0LiAgKi8K IHN0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQpAQCAtMjIzLDkgKzIy Miw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKIGRsX3Bs YXRmb3JtX2luaXQgKHZvaWQpCiB7CiAjaWYgSVNfSU4gKHJ0bGQpCi0gIC8qIGluaXRfY3B1X2Zl YXR1cmVzIGhhcyBiZWVuIGNhbGxlZCBlYXJseSBmcm9tIF9fbGliY19zdGFydF9tYWluIGluCi0g ICAgIHN0YXRpYyBleGVjdXRhYmxlLiAgKi8KLSAgaW5pdF9jcHVfZmVhdHVyZXMgKCZHTFJPKGRs X3g4Nl9jcHVfZmVhdHVyZXMpKTsKKyAgLyogX2RsX3g4Nl9pbml0X2NwdV9mZWF0dXJlcyBpcyBh IHdyYXBwZXIgZm9yIGluaXRfY3B1X2ZlYXR1cmVzIHdoaWNoCisgICAgIGhhcyBiZWVuIGNhbGxl ZCBlYXJseSBmcm9tIF9fbGliY19zdGFydF9tYWluIGluIHN0YXRpYyBleGVjdXRhYmxlLiAgKi8K KyAgX2RsX3g4Nl9pbml0X2NwdV9mZWF0dXJlcyAoKTsKICNlbHNlCiAgIGlmIChHTFJPKGRsX3Bs YXRmb3JtKSAhPSBOVUxMICYmICpHTFJPKGRsX3BsYXRmb3JtKSA9PSAnXDAnKQogICAgIC8qIEF2 b2lkIGFuIGVtcHR5IHN0cmluZyB3aGljaCB3b3VsZCBkaXN0dXJiIHVzLiAgKi8KLS0gCjIuMjYu MgoK --0000000000009b22f805b0635c75--