From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x143.google.com (mail-il1-x143.google.com [IPv6:2607:f8b0:4864:20::143]) by sourceware.org (Postfix) with ESMTPS id 95ECB386F465 for ; Mon, 22 Jun 2020 23:15:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 95ECB386F465 Received: by mail-il1-x143.google.com with SMTP id i18so6216693ilk.10 for ; Mon, 22 Jun 2020 16:15:25 -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=caNwA1LfPfMxq8hHlTdfkNh6fMO/B+JNIwhP8IFZZZ8=; b=ezxdoPyWg/1Tge51lGMB99oqmNAv+sRxJWrS+mc6X4Kr0aZ/AMqjqz5Wh7vLAD4hkv cdo1vzy3Uv/St+T4yLBlKAKz/T0f3VTRzSlS2OmeMqj8ff7UHeFRTtocvP8+HZ4Y5T9W OviOcBlgJmPJaeSQVwQF65D4RNq7mIHXZ51y+NeRP63KButUqqH+MSgH67iyDK1rKmyH 9nv7Juc+EnR0dT8qqmsH1FGpWPaUINA0ZWyABQRoDBItnNgglZmtkzSI8TXODfi4TzTR SNEYhVH1KJqhrkdxBr6K/VMOKRsYO6eqdmNq9t+TCAKaCzW8DX6p+XXxOUgl0YTh6QeP /+rQ== X-Gm-Message-State: AOAM530QQf/mfY86Nc7LgnXw8NRzW01WEvotLuIlYZWZ9ltmX7oXgHrE G/kg+2PNnAUKUsFMOBKA6V5OhewstRgPpEyUfzFvWN0W X-Google-Smtp-Source: ABdhPJwxIU8pIqUiEhTKuviUXMo5SBTVydtaqZPneL9MhHgs/erP4fG+qQpQlTOzdBnUnzvJ7ruHcTYIokSPbnb5Ghc= X-Received: by 2002:a92:244c:: with SMTP id k73mr20362798ilk.292.1592867725006; Mon, 22 Jun 2020 16:15:25 -0700 (PDT) MIME-Version: 1.0 References: <20200617193100.1115529-1-hjl.tools@gmail.com> <87mu50rccl.fsf@oldenburg2.str.redhat.com> <87o8pbpiuy.fsf@oldenburg2.str.redhat.com> <87ftamg7ez.fsf@oldenburg2.str.redhat.com> <87a70ug5v8.fsf@oldenburg2.str.redhat.com> In-Reply-To: From: "H.J. Lu" Date: Mon, 22 Jun 2020 16:14:48 -0700 Message-ID: Subject: V4: [PATCH] x86: Install [BZ #26124] To: Florian Weimer Cc: "H.J. Lu via Libc-alpha" , Joseph Myers Content-Type: multipart/mixed; boundary="000000000000ecfebd05a8b46a3d" X-Spam-Status: No, score=-8.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, 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, 22 Jun 2020 23:15:29 -0000 --000000000000ecfebd05a8b46a3d Content-Type: text/plain; charset="UTF-8" On Mon, Jun 22, 2020 at 3:18 PM H.J. Lu wrote: > > On Mon, Jun 22, 2020 at 2:15 PM Florian Weimer wrote: > > > > * H. J. Lu: > > > > > I changed the manual to > > > > > > @deftypefn Macro int HAS_CPU_FEATURE (@var{name}) > > > This macro returns a nonzero value (true) if the processor has the feature > > > @var{name}. > > > @end deftypefn > > > > > > @deftypefn Macro int CPU_FEATURE_USABLE (@var{name}) > > > This macro returns a nonzero value (true) if the processor feature > > > @var{name} is supported by the operating system. > > > > Does this mean that it's necessary to check both before using the > > feature? This is what the description implies to me. > > CPU_FEATURE_USABLE is true only if HAS_CPU_FEATURE is true. > > > If CPU_FEATURE_USABLE implies HAS_CPU_FEATURE (so it's not necessary to > > check both), then I don't see the use case for HAS_CPU_FEATURE. To me, > > exposing both liks like a trap for programmers: they might check CPU > > support only, but not operating system support. That's trap that we > > have fallen into with glibc itself at least once. > > Since not all features need OS support, only a subset of features have both. > HAS_CPU_FEATURE is useful on its own. For example, it can be used to > identify processors even if OS doesn't support the feature. All the information > is readily available. I just provide a macro with a stable ABI to access it. > > > > > >> >> struct cpu_features (even in its reduced form) is fairly large. We will > > >> >> never be able to reduce its size again if it becomes public ABI. > > >> > > > >> > Fixed by > > >> > > > >> > struct cpu_features > > >> > { > > >> > struct cpu_features_basic basic; > > >> > unsigned int *usable_p; > > >> > struct cpuid_registers cpuid[COMMON_CPUID_INDEX_MAX]; > > >> > }; > > >> > > >> I think the cpuid member is the fat part. But the pointer indirection > > >> allows us to grow the *usable_p part without having to duplicate the > > >> backing storage for __x86_get_cpu_features, so it is an improvement. > > >> > > >> > __builtin_cpu_supports is equivalent to CPU_FEATURE_USABLE and it > > >> > doesn't support HAS_CPU_FEATURE which does provide useful information. > > >> > > >> I'm still puzzled as to why you aren't extending the existing function. > > >> > > > > > > I am working on it: > > > > > > https://gcc.gnu.org/pipermail/gcc-patches/2020-May/546522.html > > > > > > But it is very unlikely to support HAS_CPU_FEATURE and > > > works with all GCCs. > > > > On the other hand, it's easier for our users to upgrade GCC than to > > update glibc. > > Not everyone needs/wants to upgrade GCC. > Here is the updated patch with -- Macro: int HAS_CPU_FEATURE (NAME) This macro returns a nonzero value (true) if the processor has the feature NAME. -- Macro: int CPU_FEATURE_USABLE (NAME) This macro returns a nonzero value (true) if the processor has the feature NAME and the feature is supported by the operating system. -- H.J. --000000000000ecfebd05a8b46a3d Content-Type: text/x-patch; charset="US-ASCII"; name="0001-x86-Install-sys-platform-x86.h-BZ-26124.patch" Content-Disposition: attachment; filename="0001-x86-Install-sys-platform-x86.h-BZ-26124.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kbr47q9h0 RnJvbSBiZjNiNzQ4N2I4ODNjMzI2YTg4ODc0ODc2YTA5NzE3NWNhMzhlMGU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMTcgSnVuIDIwMjAgMDk6MTI6MTggLTA3MDAKU3ViamVjdDogW1BBVENIXSB4ODY6IElu c3RhbGwgPHN5cy9wbGF0Zm9ybS94ODYuaD4gW0JaICMyNjEyNF0KCkluc3RhbGwgPHN5cy9wbGF0 Zm9ybS94ODYuaD4gc28gdGhhdCBwcm9ncmFtbWVycyBjYW4gZG8KCiAjaWYgX19oYXNfaW5jbHVk ZSg8c3lzL3BsYXRmb3JtL3g4Ni5oPikKICNpbmNsdWRlIDxzeXMvcGxhdGZvcm0veDg2Lmg+CiAj ZW5kaWYKIC4uLgoKICAgaWYgKEhBU19DUFVfRkVBVFVSRSAoU1NFMikpCiAuLi4KICAgaWYgKENQ VV9GRUFUVVJFX1VTQUJMRSAoQVZYMikpCiAuLi4KCjxzeXMvcGxhdGZvcm0veDg2Lmg+IGV4cG9y dHMgb25seToKCnN0cnVjdCBjcHVfZmVhdHVyZXMKewogIHN0cnVjdCBjcHVfZmVhdHVyZXNfYmFz aWMgYmFzaWM7CiAgdW5zaWduZWQgaW50ICp1c2FibGVfcDsKICBzdHJ1Y3QgY3B1aWRfcmVnaXN0 ZXJzIGNwdWlkW0NPTU1PTl9DUFVJRF9JTkRFWF9NQVhdOwp9OwoKLyogR2V0IGEgcG9pbnRlciB0 byB0aGUgQ1BVIGZlYXR1cmVzIHN0cnVjdHVyZS4gICovCmV4dGVybiBjb25zdCBzdHJ1Y3QgY3B1 X2ZlYXR1cmVzICpfX3g4Nl9nZXRfY3B1X2ZlYXR1cmVzICh2b2lkKQogICAgIF9fYXR0cmlidXRl X18gKChjb25zdCkpOwoKU2luY2UgYWxsIGZlYXR1cmUgY2hlY2tzIGFyZSBkb25lIHRocm91Z2gg bWFjcm9zLCBwcm9ncmFtcyBjb21waWxlZCB3aXRoCmEgbmV3ZXIgPHN5cy9wbGF0Zm9ybS94ODYu aD4gaGVhZGVyIGFyZSBjb21wYXRpYmxlIHdpdGggdGhlIG9sZGVyIG9uZXMgYXMKbG9uZyBhcyB0 aGUgbGF5b3V0IG9mIHN0cnVjdCBjcHVfZmVhdHVyZXMgaXMgaWRlbnRpY2FsLiAgVGhlIGNwdWlk IGFycmF5CmNhbiBiZSBleHBhbmRlZCB3aXRoIGJhY2t3YXJkIGJpbmFyeSBjb21wYXRpYmlsaXR5 IGZvciBib3RoIC5vIGFuZCAuc28KZmlsZXMuCgpOb3RlOiBBbHRob3VnaCBHQ0MgaGFzIF9fYnVp bHRpbl9jcHVfc3VwcG9ydHMsIGl0IG9ubHkgc3VwcG9ydHMgYSBzdWJzZXQKb2YgPHN5cy9wbGF0 Zm9ybS94ODYuaD4gYW5kIGl0IGlzIGVxdWl2YWxlbnQgdG8gQ1BVX0ZFQVRVUkVfVVNBQkxFLiAg SXQKZG9lc24ndCBzdXBwb3J0IEhBU19DUFVfRkVBVFVSRS4KLS0tCiBORVdTICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogbWFudWFsL3BsYXRmb3JtLnRl eGkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIzICsrCiBzeXNkZXBzL3VuaXgvc3lzdi9s aW51eC9pMzg2L2xkLmFiaWxpc3QgICAgICAgfCAgIDEgKwogc3lzZGVwcy91bml4L3N5c3YvbGlu dXgveDg2XzY0LzY0L2xkLmFiaWxpc3QgIHwgICAxICsKIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4 L3g4Nl82NC94MzIvbGQuYWJpbGlzdCB8ICAgMSArCiBzeXNkZXBzL3g4Ni9NYWtlZmlsZSAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3lzZGVwcy94ODYvVmVyc2lvbnMgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBzeXNkZXBzL3g4Ni9kbC1nZXQtY3B1LWZlYXR1 cmVzLmMgICAgICAgICAgICAgfCAgIDQgKy0KIHN5c2RlcHMveDg2L2luY2x1ZGUvY3B1LWZlYXR1 cmVzLmggICAgICAgICAgICB8IDIwNyArKysrKysrKysrKysrKysrKysKIC4uLi97Y3B1LWZlYXR1 cmVzLmggPT4gc3lzL3BsYXRmb3JtL3g4Ni5ofSAgICB8IDE3MiArLS0tLS0tLS0tLS0tLS0KIHN5 c2RlcHMveDg2L3RzdC1nZXQtY3B1LWZlYXR1cmVzLmMgICAgICAgICAgICB8ICAgNiArLQogc3lz ZGVwcy94ODZfNjQvZnB1L21hdGgtdGVzdHMtYXJjaC5oICAgICAgICAgIHwgICA4ICstCiBzeXNk ZXBzL3g4Nl82NC9tdWx0aWFyY2gvdGVzdC1tdWx0aWFyY2guYyAgICAgfCAgMTAgKy0KIDEzIGZp bGVzIGNoYW5nZWQsIDI2NCBpbnNlcnRpb25zKCspLCAxNzYgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3lzZGVwcy94ODYvaW5jbHVkZS9jcHUtZmVhdHVyZXMuaAogcmVuYW1lIHN5 c2RlcHMveDg2L3tjcHUtZmVhdHVyZXMuaCA9PiBzeXMvcGxhdGZvcm0veDg2Lmh9ICg3NyUpCgpk aWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKaW5kZXggYTY2MGZjNTlhOC4uYWU3ZDFlY2UzNSAxMDA2 NDQKLS0tIGEvTkVXUworKysgYi9ORVdTCkBAIC05LDYgKzksOCBAQCBWZXJzaW9uIDIuMzIKIAog TWFqb3IgbmV3IGZlYXR1cmVzOgogCisqIEFkZCA8c3lzL3BsYXRmb3JtL3g4Ni5oPiB0byBwcm92 aWRlIHF1ZXJ5IG1hY3JvcyBmb3IgeDg2IENQVSBmZWF0dXJlcy4KKwogKiBVbmljb2RlIDEyLjEu MCBTdXBwb3J0OiBDaGFyYWN0ZXIgZW5jb2RpbmcsIGNoYXJhY3RlciB0eXBlIGluZm8sIGFuZAog ICB0cmFuc2xpdGVyYXRpb24gdGFibGVzIGFyZSBhbGwgdXBkYXRlZCB0byBVbmljb2RlIDEyLjEu MCwgdXNpbmcKICAgZ2VuZXJhdG9yIHNjcmlwdHMgY29udHJpYnV0ZWQgYnkgTWlrZSBGQUJJQU4g KFJlZCBIYXQpLgpkaWZmIC0tZ2l0IGEvbWFudWFsL3BsYXRmb3JtLnRleGkgYi9tYW51YWwvcGxh dGZvcm0udGV4aQppbmRleCA1MDRhZGRjOTU2Li5iNWYwMGU1YjhmIDEwMDY0NAotLS0gYS9tYW51 YWwvcGxhdGZvcm0udGV4aQorKysgYi9tYW51YWwvcGxhdGZvcm0udGV4aQpAQCAtNyw2ICs3LDcg QEAKIEBtZW51CiAqIFBvd2VyUEM6OiAgICAgICAgICAgRmFjaWxpdGllcyBTcGVjaWZpYyB0byB0 aGUgUG93ZXJQQyBBcmNoaXRlY3R1cmUKICogUklTQy1WOjogICAgICAgICAgICBGYWNpbGl0aWVz IFNwZWNpZmljIHRvIHRoZSBSSVNDLVYgQXJjaGl0ZWN0dXJlCisqIFg4Njo6ICAgICAgICAgICAg ICAgRmFjaWxpdGllcyBTcGVjaWZpYyB0byB0aGUgWDg2IEFyY2hpdGVjdHVyZQogQGVuZCBtZW51 CiAKIEBub2RlIFBvd2VyUEMKQEAgLTEzNCwzICsxMzUsMjUgQEAgYWxsIHRocmVhZHMgaW4gdGhl IGN1cnJlbnQgcHJvY2Vzcy4gIFNldHRpbmcgdGhlCiBvcmRlcmluZyBvbiBvbmx5IHRoZSBjdXJy ZW50IHRocmVhZCBpcyBuZWNlc3NhcnkuICBBbGwgb3RoZXIgZmxhZyBiaXRzIGFyZQogcmVzZXJ2 ZWQuCiBAZW5kIGRlZnR5cGVmdW4KKworQG5vZGUgWDg2CitAYXBwZW5kaXhzZWMgWDg2LXNwZWNp ZmljIEZhY2lsaXRpZXMKKworRmFjaWxpdGllcyBzcGVjaWZpYyB0byBYODYgdGhhdCBhcmUgbm90 IHNwZWNpZmljIHRvIGEgcGFydGljdWxhcgorb3BlcmF0aW5nIHN5c3RlbSBhcmUgZGVjbGFyZWQg aW4gQGZpbGV7c3lzL3BsYXRmb3JtL3g4Ni5ofS4KKworQGRlZnR5cGVmdW4ge2NvbnN0IHN0cnVj dCBjcHVfZmVhdHVyZXMgKn0gX194ODZfZ2V0X2NwdV9mZWF0dXJlcyAodm9pZCkKK0BzYWZldHl7 QHByZWxpbXt9QG10c2FmZXt9QGFzc2FmZXt9QGFjc2FmZXt9fQorUmV0dXJuIGEgcG9pbnRlciB0 byB4ODYgQ1BVIGZlYXR1cmUgc3RydWN0dXJlIHVzZWQgYnkgcXVlcnkgbWFjcm9zIGZvciB4ODYK K0NQVSBmZWF0dXJlcy4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZuIE1hY3JvIGludCBI QVNfQ1BVX0ZFQVRVUkUgKEB2YXJ7bmFtZX0pCitUaGlzIG1hY3JvIHJldHVybnMgYSBub256ZXJv IHZhbHVlICh0cnVlKSBpZiB0aGUgcHJvY2Vzc29yIGhhcyB0aGUgZmVhdHVyZQorQHZhcntuYW1l fS4KK0BlbmQgZGVmdHlwZWZuCisKK0BkZWZ0eXBlZm4gTWFjcm8gaW50IENQVV9GRUFUVVJFX1VT QUJMRSAoQHZhcntuYW1lfSkKK1RoaXMgbWFjcm8gcmV0dXJucyBhIG5vbnplcm8gdmFsdWUgKHRy dWUpIGlmIHRoZSBwcm9jZXNzb3IgaGFzIHRoZSBmZWF0dXJlCitAdmFye25hbWV9IGFuZCB0aGUg ZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uCitAZW5kIGRlZnR5 cGVmbgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9sZC5hYmlsaXN0 IGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9sZC5hYmlsaXN0CmluZGV4IDA0NzhlMjIw NzEuLjEyMjY4NzY2ODkgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYv bGQuYWJpbGlzdAorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2xkLmFiaWxpc3QK QEAgLTMsMyArMyw0IEBAIEdMSUJDXzIuMSBfX2xpYmNfc3RhY2tfZW5kIEQgMHg0CiBHTElCQ18y LjEgX2RsX21jb3VudCBGCiBHTElCQ18yLjMgX19fdGxzX2dldF9hZGRyIEYKIEdMSUJDXzIuMyBf X3Rsc19nZXRfYWRkciBGCitHTElCQ18yLjMyIF9feDg2X2dldF9jcHVfZmVhdHVyZXMgRgpkaWZm IC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0LzY0L2xkLmFiaWxpc3QgYi9z eXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvNjQvbGQuYWJpbGlzdAppbmRleCBkM2NkZjc2 MTFlLi44ODZlNTdhYmQ1IDEwMDY0NAotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZf NjQvNjQvbGQuYWJpbGlzdAorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvNjQv bGQuYWJpbGlzdApAQCAtMiwzICsyLDQgQEAgR0xJQkNfMi4yLjUgX19saWJjX3N0YWNrX2VuZCBE IDB4OAogR0xJQkNfMi4yLjUgX2RsX21jb3VudCBGCiBHTElCQ18yLjIuNSBfcl9kZWJ1ZyBEIDB4 MjgKIEdMSUJDXzIuMyBfX3Rsc19nZXRfYWRkciBGCitHTElCQ18yLjMyIF9feDg2X2dldF9jcHVf ZmVhdHVyZXMgRgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0L3gz Mi9sZC5hYmlsaXN0IGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0L3gzMi9sZC5hYmls aXN0CmluZGV4IGM3MGJjY2Y3ODIuLjBkMmY4YTJjYzUgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMvdW5p eC9zeXN2L2xpbnV4L3g4Nl82NC94MzIvbGQuYWJpbGlzdAorKysgYi9zeXNkZXBzL3VuaXgvc3lz di9saW51eC94ODZfNjQveDMyL2xkLmFiaWxpc3QKQEAgLTIsMyArMiw0IEBAIEdMSUJDXzIuMTYg X19saWJjX3N0YWNrX2VuZCBEIDB4NAogR0xJQkNfMi4xNiBfX3Rsc19nZXRfYWRkciBGCiBHTElC Q18yLjE2IF9kbF9tY291bnQgRgogR0xJQkNfMi4xNiBfcl9kZWJ1ZyBEIDB4MTQKK0dMSUJDXzIu MzIgX194ODZfZ2V0X2NwdV9mZWF0dXJlcyBGCmRpZmYgLS1naXQgYS9zeXNkZXBzL3g4Ni9NYWtl ZmlsZSBiL3N5c2RlcHMveDg2L01ha2VmaWxlCmluZGV4IGJlYWI0MjZmNjcuLjBlNGQxMzI4MDMg MTAwNjQ0Ci0tLSBhL3N5c2RlcHMveDg2L01ha2VmaWxlCisrKyBiL3N5c2RlcHMveDg2L01ha2Vm aWxlCkBAIC00LDYgKzQsNyBAQCBlbmRpZgogCiBpZmVxICgkKHN1YmRpciksZWxmKQogc3lzZGVw LWRsLXJvdXRpbmVzICs9IGRsLWdldC1jcHUtZmVhdHVyZXMKK3N5c2RlcF9oZWFkZXJzICs9IHN5 cy9wbGF0Zm9ybS94ODYuaAogCiB0ZXN0cyArPSB0c3QtZ2V0LWNwdS1mZWF0dXJlcyB0c3QtZ2V0 LWNwdS1mZWF0dXJlcy1zdGF0aWMKIHRlc3RzLXN0YXRpYyArPSB0c3QtZ2V0LWNwdS1mZWF0dXJl cy1zdGF0aWMKZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2L1ZlcnNpb25zIGIvc3lzZGVwcy94ODYv VmVyc2lvbnMKaW5kZXggZTAyOTIzNzA4ZS4uN2UzMTM5ZGJiMSAxMDA2NDQKLS0tIGEvc3lzZGVw cy94ODYvVmVyc2lvbnMKKysrIGIvc3lzZGVwcy94ODYvVmVyc2lvbnMKQEAgLTEsNSArMSw1IEBA CiBsZCB7Ci0gIEdMSUJDX1BSSVZBVEUgewotICAgIF9fZ2V0X2NwdV9mZWF0dXJlczsKKyAgR0xJ QkNfMi4zMiB7CisgICAgX194ODZfZ2V0X2NwdV9mZWF0dXJlczsKICAgfQogfQpkaWZmIC0tZ2l0 IGEvc3lzZGVwcy94ODYvZGwtZ2V0LWNwdS1mZWF0dXJlcy5jIGIvc3lzZGVwcy94ODYvZGwtZ2V0 LWNwdS1mZWF0dXJlcy5jCmluZGV4IDlkNjFjZDU2YmUuLmZhMWExY2FhODcgMTAwNjQ0Ci0tLSBh L3N5c2RlcHMveDg2L2RsLWdldC1jcHUtZmVhdHVyZXMuYworKysgYi9zeXNkZXBzL3g4Ni9kbC1n ZXQtY3B1LWZlYXR1cmVzLmMKQEAgLTE4LDEwICsxOCwxMCBAQAogCiAjaW5jbHVkZSA8bGRzb2Rl ZnMuaD4KIAotI3VuZGVmIF9fZ2V0X2NwdV9mZWF0dXJlcworI3VuZGVmIF9feDg2X2dldF9jcHVf ZmVhdHVyZXMKIAogY29uc3Qgc3RydWN0IGNwdV9mZWF0dXJlcyAqCi1fX2dldF9jcHVfZmVhdHVy ZXMgKHZvaWQpCitfX3g4Nl9nZXRfY3B1X2ZlYXR1cmVzICh2b2lkKQogewogICByZXR1cm4gJkdM Uk8oZGxfeDg2X2NwdV9mZWF0dXJlcyk7CiB9CmRpZmYgLS1naXQgYS9zeXNkZXBzL3g4Ni9pbmNs dWRlL2NwdS1mZWF0dXJlcy5oIGIvc3lzZGVwcy94ODYvaW5jbHVkZS9jcHUtZmVhdHVyZXMuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jNmVmYTNmMDY2Ci0tLSAvZGV2 L251bGwKKysrIGIvc3lzZGVwcy94ODYvaW5jbHVkZS9jcHUtZmVhdHVyZXMuaApAQCAtMCwwICsx LDIwNyBAQAorLyogRGF0YSBzdHJ1Y3R1cmUgZm9yIHg4NiBDUFUgZmVhdHVyZXMuCisgICBDb3B5 cmlnaHQgKEMpIDIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKworICAgVGhlIEdOVSBDIExpYnJhcnkg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIKKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VCisgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor CisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlm IG5vdCwgc2VlCisgICA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2lm bmRlZglfUFJJVkFURV9DUFVfRkVBVFVSRVNfSAorI2RlZmluZQlfUFJJVkFURV9DUFVfRkVBVFVS RVNfSAkxCisKKyNpZmRlZiBfQ1BVX0ZFQVRVUkVTX0gKKyMgZXJyb3IgdGhpcyBzaG91bGQgYmUg aW1wb3NzaWJsZQorI2VuZGlmCisKKyNpZm5kZWYgX0lTT01BQworLyogR2V0IG1vc3Qgb2YgdGhl IGNvbnRlbnRzIGZyb20gdGhlIHB1YmxpYyBoZWFkZXIsIGJ1dCB3ZSBkZWZpbmUgYQorICAgZGlm ZmVyZW50IGBzdHJ1Y3QgY3B1X2ZlYXR1cmVzJyB0eXBlIGZvciBwcml2YXRlIHVzZS4gICovCisj IGRlZmluZSBjcHVfZmVhdHVyZXMJCWNwdV9mZWF0dXJlc19wdWJsaWMKKyMgZGVmaW5lIF9feDg2 X2dldF9jcHVfZmVhdHVyZXMJX194ODZfZ2V0X2NwdV9mZWF0dXJlc19wdWJsaWMKKyNlbmRpZgor CisjaW5jbHVkZSA8c3lzZGVwcy94ODYvc3lzL3BsYXRmb3JtL3g4Ni5oPgorCisjaWZuZGVmIF9J U09NQUMKKworIyB1bmRlZgljcHVfZmVhdHVyZXMKKyMgdW5kZWYgX194ODZfZ2V0X2NwdV9mZWF0 dXJlcworIyBkZWZpbmUgX19nZXRfY3B1X2ZlYXR1cmVzCV9feDg2X2dldF9jcHVfZmVhdHVyZXMK KworZW51bQoreworICAvKiBUaGUgaW50ZWdlciBiaXQgYXJyYXkgaW5kZXggZm9yIHRoZSBmaXJz dCBzZXQgb2YgcHJlZmVycmVkIGZlYXR1cmUKKyAgICAgYml0cy4gICovCisgIFBSRUZFUlJFRF9G RUFUVVJFX0lOREVYXzEgPSAwLAorICAvKiBUaGUgY3VycmVudCBtYXhpbXVtIHNpemUgb2YgdGhl IGZlYXR1cmUgaW50ZWdlciBiaXQgYXJyYXkuICAqLworICBQUkVGRVJSRURfRkVBVFVSRV9JTkRF WF9NQVgKK307CisKKyMgdW5kZWYgQ1BVX0ZFQVRVUkVTX0FSQ0hfUAorIyBkZWZpbmUgQ1BVX0ZF QVRVUkVTX0FSQ0hfUChwdHIsIG5hbWUpIFwKKyAgKChwdHItPmZlYXR1cmVfIyNuYW1lW2luZGV4 X2FyY2hfIyNuYW1lXSAmIChiaXRfYXJjaF8jI25hbWUpKSAhPSAwKQorCisvKiBIQVNfQVJDSF9G RUFUVVJFIGV2YWx1YXRlcyB0byB0cnVlIGlmIHdlIG1heSB1c2UgdGhlIGZlYXR1cmUgYXQKKyAg IHJ1bnRpbWUuICAqLworIyBkZWZpbmUgSEFTX0FSQ0hfRkVBVFVSRShuYW1lKSBcCisgIENQVV9G RUFUVVJFU19BUkNIX1AgKF9feDg2X2dldF9jcHVfZmVhdHVyZXMgKCksIG5hbWUpCisvKiBDUFVf RkVBVFVSRV9VU0FCTEUgZXZhbHVhdGVzIHRvIHRydWUgaWYgdGhlIGZlYXR1cmUgaXMgdXNhYmxl LiAgKi8KKyMgdW5kZWYgQ1BVX0ZFQVRVUkVfVVNBQkxFCisjIGRlZmluZSBDUFVfRkVBVFVSRV9V U0FCTEUobmFtZSkgXAorICBDUFVfRkVBVFVSRVNfQVJDSF9QIChfX3g4Nl9nZXRfY3B1X2ZlYXR1 cmVzICgpLCBuYW1lIyNfVXNhYmxlKQorCisvKiBVU0FCTEVfRkVBVFVSRV9JTkRFWF8xLiAgKi8K KyMgZGVmaW5lIGZlYXR1cmVfQVZYX1VzYWJsZQkJCXVzYWJsZQorIyBkZWZpbmUgZmVhdHVyZV9B VlgyX1VzYWJsZQkJCXVzYWJsZQorIyBkZWZpbmUgZmVhdHVyZV9BVlg1MTJGX1VzYWJsZQkJCXVz YWJsZQorIyBkZWZpbmUgZmVhdHVyZV9BVlg1MTJDRF9Vc2FibGUJCXVzYWJsZQorIyBkZWZpbmUg ZmVhdHVyZV9BVlg1MTJFUl9Vc2FibGUJCXVzYWJsZQorIyBkZWZpbmUgZmVhdHVyZV9BVlg1MTJQ Rl9Vc2FibGUJCXVzYWJsZQorIyBkZWZpbmUgZmVhdHVyZV9BVlg1MTJWTF9Vc2FibGUJCXVzYWJs ZQorIyBkZWZpbmUgZmVhdHVyZV9BVlg1MTJCV19Vc2FibGUJCXVzYWJsZQorIyBkZWZpbmUgZmVh dHVyZV9BVlg1MTJEUV9Vc2FibGUJCXVzYWJsZQorIyBkZWZpbmUgZmVhdHVyZV9BVlg1MTJfNEZN QVBTX1VzYWJsZQkJdXNhYmxlCisjIGRlZmluZSBmZWF0dXJlX0FWWDUxMl80Vk5OSVdfVXNhYmxl CQl1c2FibGUKKyMgZGVmaW5lIGZlYXR1cmVfQVZYNTEyX0JJVEFMR19Vc2FibGUJCXVzYWJsZQor IyBkZWZpbmUgZmVhdHVyZV9BVlg1MTJfSUZNQV9Vc2FibGUJCXVzYWJsZQorIyBkZWZpbmUgZmVh dHVyZV9BVlg1MTJfVkJNSV9Vc2FibGUJCXVzYWJsZQorIyBkZWZpbmUgZmVhdHVyZV9BVlg1MTJf VkJNSTJfVXNhYmxlCQl1c2FibGUKKyMgZGVmaW5lIGZlYXR1cmVfQVZYNTEyX1ZOTklfVXNhYmxl CQl1c2FibGUKKyMgZGVmaW5lIGZlYXR1cmVfQVZYNTEyX1ZQT1BDTlREUV9Vc2FibGUJdXNhYmxl CisjIGRlZmluZSBmZWF0dXJlX0ZNQV9Vc2FibGUJCQl1c2FibGUKKyMgZGVmaW5lIGZlYXR1cmVf Rk1BNF9Vc2FibGUJCQl1c2FibGUKKyMgZGVmaW5lIGZlYXR1cmVfVkFFU19Vc2FibGUJCQl1c2Fi bGUKKyMgZGVmaW5lIGZlYXR1cmVfVlBDTE1VTFFEUV9Vc2FibGUJCXVzYWJsZQorIyBkZWZpbmUg ZmVhdHVyZV9YT1BfVXNhYmxlCQkJdXNhYmxlCisjIGRlZmluZSBmZWF0dXJlX1hTQVZFQ19Vc2Fi bGUJCQl1c2FibGUKKyMgZGVmaW5lIGZlYXR1cmVfRjE2Q19Vc2FibGUJCQl1c2FibGUKKyMgZGVm aW5lIGZlYXR1cmVfQVZYNTEyX1ZQMklOVEVSU0VDVF9Vc2FibGUJdXNhYmxlCisjIGRlZmluZSBm ZWF0dXJlX0FWWDUxMl9CRjE2X1VzYWJsZQkJdXNhYmxlCisjIGRlZmluZSBmZWF0dXJlX1BLVV9V c2FibGUJCQl1c2FibGUKKworLyogUFJFRkVSUkVEX0ZFQVRVUkVfSU5ERVhfMS4gICovCisjIGRl ZmluZSBiaXRfYXJjaF9JNTg2CQkJCSgxdSA8PCAwKQorIyBkZWZpbmUgYml0X2FyY2hfSTY4NgkJ CQkoMXUgPDwgMSkKKyMgZGVmaW5lIGJpdF9hcmNoX0Zhc3RfUmVwX1N0cmluZwkJKDF1IDw8IDIp CisjIGRlZmluZSBiaXRfYXJjaF9GYXN0X0NvcHlfQmFja3dhcmQJCSgxdSA8PCAzKQorIyBkZWZp bmUgYml0X2FyY2hfRmFzdF9VbmFsaWduZWRfTG9hZAkJKDF1IDw8IDQpCisjIGRlZmluZSBiaXRf YXJjaF9GYXN0X1VuYWxpZ25lZF9Db3B5CQkoMXUgPDwgNSkKKyMgZGVmaW5lIGJpdF9hcmNoX1Ns b3dfQlNGCQkJKDF1IDw8IDYpCisjIGRlZmluZSBiaXRfYXJjaF9TbG93X1NTRTRfMgkJCSgxdSA8 PCA3KQorIyBkZWZpbmUgYml0X2FyY2hfQVZYX0Zhc3RfVW5hbGlnbmVkX0xvYWQJKDF1IDw8IDgp CisjIGRlZmluZSBiaXRfYXJjaF9QcmVmZXJfTUFQXzMyQklUX0VYRUMJCSgxdSA8PCA5KQorIyBk ZWZpbmUgYml0X2FyY2hfUHJlZmVyX1BNSU5VQl9mb3Jfc3RyaW5nb3AJKDF1IDw8IDEwKQorIyBk ZWZpbmUgYml0X2FyY2hfUHJlZmVyX05vX1ZaRVJPVVBQRVIJCSgxdSA8PCAxMSkKKyMgZGVmaW5l IGJpdF9hcmNoX1ByZWZlcl9FUk1TCQkJKDF1IDw8IDEyKQorIyBkZWZpbmUgYml0X2FyY2hfUHJl ZmVyX0ZTUk0JCQkoMXUgPDwgMTMpCisjIGRlZmluZSBiaXRfYXJjaF9QcmVmZXJfTm9fQVZYNTEy CQkoMXUgPDwgMTQpCisjIGRlZmluZSBiaXRfYXJjaF9NYXRoVmVjX1ByZWZlcl9Ob19BVlg1MTIJ KDF1IDw8IDE1KQorCisjIGRlZmluZSBpbmRleF9hcmNoX0Zhc3RfUmVwX1N0cmluZwkJUFJFRkVS UkVEX0ZFQVRVUkVfSU5ERVhfMQorIyBkZWZpbmUgaW5kZXhfYXJjaF9GYXN0X0NvcHlfQmFja3dh cmQJCVBSRUZFUlJFRF9GRUFUVVJFX0lOREVYXzEKKyMgZGVmaW5lIGluZGV4X2FyY2hfU2xvd19C U0YJCQlQUkVGRVJSRURfRkVBVFVSRV9JTkRFWF8xCisjIGRlZmluZSBpbmRleF9hcmNoX0Zhc3Rf VW5hbGlnbmVkX0xvYWQJCVBSRUZFUlJFRF9GRUFUVVJFX0lOREVYXzEKKyMgZGVmaW5lIGluZGV4 X2FyY2hfUHJlZmVyX1BNSU5VQl9mb3Jfc3RyaW5nb3AgCVBSRUZFUlJFRF9GRUFUVVJFX0lOREVY XzEKKyMgZGVmaW5lIGluZGV4X2FyY2hfRmFzdF9VbmFsaWduZWRfQ29weQkJUFJFRkVSUkVEX0ZF QVRVUkVfSU5ERVhfMQorIyBkZWZpbmUgaW5kZXhfYXJjaF9JNTg2CQkJUFJFRkVSUkVEX0ZFQVRV UkVfSU5ERVhfMQorIyBkZWZpbmUgaW5kZXhfYXJjaF9JNjg2CQkJUFJFRkVSUkVEX0ZFQVRVUkVf SU5ERVhfMQorIyBkZWZpbmUgaW5kZXhfYXJjaF9TbG93X1NTRTRfMgkJCVBSRUZFUlJFRF9GRUFU VVJFX0lOREVYXzEKKyMgZGVmaW5lIGluZGV4X2FyY2hfQVZYX0Zhc3RfVW5hbGlnbmVkX0xvYWQJ UFJFRkVSUkVEX0ZFQVRVUkVfSU5ERVhfMQorIyBkZWZpbmUgaW5kZXhfYXJjaF9QcmVmZXJfTUFQ XzMyQklUX0VYRUMJUFJFRkVSUkVEX0ZFQVRVUkVfSU5ERVhfMQorIyBkZWZpbmUgaW5kZXhfYXJj aF9QcmVmZXJfTm9fVlpFUk9VUFBFUglQUkVGRVJSRURfRkVBVFVSRV9JTkRFWF8xCisjIGRlZmlu ZSBpbmRleF9hcmNoX1ByZWZlcl9FUk1TCQkJUFJFRkVSUkVEX0ZFQVRVUkVfSU5ERVhfMQorIyBk ZWZpbmUgaW5kZXhfYXJjaF9QcmVmZXJfTm9fQVZYNTEyCQlQUkVGRVJSRURfRkVBVFVSRV9JTkRF WF8xCisjIGRlZmluZSBpbmRleF9hcmNoX01hdGhWZWNfUHJlZmVyX05vX0FWWDUxMglQUkVGRVJS RURfRkVBVFVSRV9JTkRFWF8xCisjIGRlZmluZSBpbmRleF9hcmNoX1ByZWZlcl9GU1JNCQkJUFJF RkVSUkVEX0ZFQVRVUkVfSU5ERVhfMQorCisjIGRlZmluZSBmZWF0dXJlX0Zhc3RfUmVwX1N0cmlu ZwkJcHJlZmVycmVkCisjIGRlZmluZSBmZWF0dXJlX0Zhc3RfQ29weV9CYWNrd2FyZAkJcHJlZmVy cmVkCisjIGRlZmluZSBmZWF0dXJlX1Nsb3dfQlNGCQkJcHJlZmVycmVkCisjIGRlZmluZSBmZWF0 dXJlX0Zhc3RfVW5hbGlnbmVkX0xvYWQJCXByZWZlcnJlZAorIyBkZWZpbmUgZmVhdHVyZV9QcmVm ZXJfUE1JTlVCX2Zvcl9zdHJpbmdvcCAJcHJlZmVycmVkCisjIGRlZmluZSBmZWF0dXJlX0Zhc3Rf VW5hbGlnbmVkX0NvcHkJCXByZWZlcnJlZAorIyBkZWZpbmUgZmVhdHVyZV9JNTg2CQkJCXByZWZl cnJlZAorIyBkZWZpbmUgZmVhdHVyZV9JNjg2CQkJCXByZWZlcnJlZAorIyBkZWZpbmUgZmVhdHVy ZV9TbG93X1NTRTRfMgkJCXByZWZlcnJlZAorIyBkZWZpbmUgZmVhdHVyZV9BVlhfRmFzdF9VbmFs aWduZWRfTG9hZAlwcmVmZXJyZWQKKyMgZGVmaW5lIGZlYXR1cmVfUHJlZmVyX01BUF8zMkJJVF9F WEVDCQlwcmVmZXJyZWQKKyMgZGVmaW5lIGZlYXR1cmVfUHJlZmVyX05vX1ZaRVJPVVBQRVIJCXBy ZWZlcnJlZAorIyBkZWZpbmUgZmVhdHVyZV9QcmVmZXJfRVJNUwkJCXByZWZlcnJlZAorIyBkZWZp bmUgZmVhdHVyZV9QcmVmZXJfTm9fQVZYNTEyCQlwcmVmZXJyZWQKKyMgZGVmaW5lIGZlYXR1cmVf TWF0aFZlY19QcmVmZXJfTm9fQVZYNTEyCXByZWZlcnJlZAorIyBkZWZpbmUgZmVhdHVyZV9QcmVm ZXJfRlNSTQkJCXByZWZlcnJlZAorCisvKiBYQ1IwIEZlYXR1cmUgZmxhZ3MuICAqLworIyBkZWZp bmUgYml0X1hNTV9zdGF0ZQkJKDF1IDw8IDEpCisjIGRlZmluZSBiaXRfWU1NX3N0YXRlCQkoMXUg PDwgMikKKyMgZGVmaW5lIGJpdF9PcG1hc2tfc3RhdGUJKDF1IDw8IDUpCisjIGRlZmluZSBiaXRf Wk1NMF8xNV9zdGF0ZQkoMXUgPDwgNikKKyMgZGVmaW5lIGJpdF9aTU0xNl8zMV9zdGF0ZQkoMXUg PDwgNykKKworc3RydWN0IGNwdV9mZWF0dXJlcworeworICBzdHJ1Y3QgY3B1X2ZlYXR1cmVzX2Jh c2ljIGJhc2ljOworICB1bnNpZ25lZCBpbnQgKnVzYWJsZV9wOworICBzdHJ1Y3QgY3B1aWRfcmVn aXN0ZXJzIGNwdWlkW0NPTU1PTl9DUFVJRF9JTkRFWF9NQVhdOworICB1bnNpZ25lZCBpbnQgdXNh YmxlW1VTQUJMRV9GRUFUVVJFX0lOREVYX01BWF07CisgIHVuc2lnbmVkIGludCBwcmVmZXJyZWRb UFJFRkVSUkVEX0ZFQVRVUkVfSU5ERVhfTUFYXTsKKyAgLyogVGhlIHN0YXRlIHNpemUgZm9yIFhT QVZFQyBvciBYU0FWRS4gIFRoZSB0eXBlIG11c3QgYmUgdW5zaWduZWQgbG9uZworICAgICBpbnQg c28gdGhhdCB3ZSB1c2UKKworCXN1YiB4c2F2ZV9zdGF0ZV9zaXplX29mZnNldCglcmlwKSAlUlNQ X0xQCisKKyAgICAgaW4gX2RsX3J1bnRpbWVfcmVzb2x2ZS4gICovCisgIHVuc2lnbmVkIGxvbmcg aW50IHhzYXZlX3N0YXRlX3NpemU7CisgIC8qIFRoZSBmdWxsIHN0YXRlIHNpemUgZm9yIFhTQVZF IHdoZW4gWFNBVkVDIGlzIGRpc2FibGVkIGJ5CisKKyAgICAgR0xJQkNfVFVOQUJMRVM9Z2xpYmMu Y3B1Lmh3Y2Fwcz0tWFNBVkVDX1VzYWJsZQorICAgKi8KKyAgdW5zaWduZWQgaW50IHhzYXZlX3N0 YXRlX2Z1bGxfc2l6ZTsKKyAgLyogRGF0YSBjYWNoZSBzaXplIGZvciB1c2UgaW4gbWVtb3J5IGFu ZCBzdHJpbmcgcm91dGluZXMsIHR5cGljYWxseQorICAgICBMMSBzaXplLiAgKi8KKyAgdW5zaWdu ZWQgbG9uZyBpbnQgZGF0YV9jYWNoZV9zaXplOworICAvKiBTaGFyZWQgY2FjaGUgc2l6ZSBmb3Ig dXNlIGluIG1lbW9yeSBhbmQgc3RyaW5nIHJvdXRpbmVzLCB0eXBpY2FsbHkKKyAgICAgTDIgb3Ig TDMgc2l6ZS4gICovCisgIHVuc2lnbmVkIGxvbmcgaW50IHNoYXJlZF9jYWNoZV9zaXplOworICAv KiBUaHJlc2hvbGQgdG8gdXNlIG5vbiB0ZW1wb3JhbCBzdG9yZS4gICovCisgIHVuc2lnbmVkIGxv bmcgaW50IG5vbl90ZW1wb3JhbF90aHJlc2hvbGQ7Cit9OworCisjIGlmIGRlZmluZWQgKF9MSUJD KSAmJiAhSVNfSU4gKG5vbmxpYikKKy8qIFVudXNlZCBmb3IgeDg2LiAgKi8KKyMgIGRlZmluZSBJ TklUX0FSQ0goKQorIyAgZGVmaW5lIF9feDg2X2dldF9jcHVfZmVhdHVyZXMoKQkoJkdMUk8oZGxf eDg2X2NwdV9mZWF0dXJlcykpCisjICBkZWZpbmUgeDg2X2dldF9jcHVpZF9yZWdpc3RlcnMoaSkg XAorICAgICAgICgmKEdMUk8oZGxfeDg2X2NwdV9mZWF0dXJlcykuY3B1aWRbaV0pKQorIyBlbmRp ZgorCisjIGlmZGVmIF9feDg2XzY0X18KKyMgIGRlZmluZSBIQVNfQ1BVSUQgMQorIyBlbGlmIChk ZWZpbmVkIF9faTU4Nl9fIHx8IGRlZmluZWQgX19wZW50aXVtX18JXAorCXx8IGRlZmluZWQgX19n ZW9kZV9fIHx8IGRlZmluZWQgX19rNl9fKQorIyAgZGVmaW5lIEhBU19DUFVJRCAxCisjICBkZWZp bmUgSEFTX0k1ODYgMQorIyAgZGVmaW5lIEhBU19JNjg2IEhBU19BUkNIX0ZFQVRVUkUgKEk2ODYp CisjIGVsaWYgZGVmaW5lZCBfX2k0ODZfXworIyAgZGVmaW5lIEhBU19DUFVJRCAwCisjICBkZWZp bmUgSEFTX0k1ODYgSEFTX0FSQ0hfRkVBVFVSRSAoSTU4NikKKyMgIGRlZmluZSBIQVNfSTY4NiBI QVNfQVJDSF9GRUFUVVJFIChJNjg2KQorIyBlbHNlCisjICBkZWZpbmUgSEFTX0NQVUlEIDEKKyMg IGRlZmluZSBIQVNfSTU4NiAxCisjICBkZWZpbmUgSEFTX0k2ODYgMQorIyBlbmRpZgorCisjZW5k aWYgLyogIV9JU09NQUMgKi8KKworI2VuZGlmIC8qIGluY2x1ZGUvY3B1LWZlYXR1cmVzLmggKi8K ZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2L2NwdS1mZWF0dXJlcy5oIGIvc3lzZGVwcy94ODYvc3lz L3BsYXRmb3JtL3g4Ni5oCnNpbWlsYXJpdHkgaW5kZXggNzclCnJlbmFtZSBmcm9tIHN5c2RlcHMv eDg2L2NwdS1mZWF0dXJlcy5oCnJlbmFtZSB0byBzeXNkZXBzL3g4Ni9zeXMvcGxhdGZvcm0veDg2 LmgKaW5kZXggNTc0ZjA1NWUwYy4uNDNlMjg2Y2RlMyAxMDA2NDQKLS0tIGEvc3lzZGVwcy94ODYv Y3B1LWZlYXR1cmVzLmgKKysrIGIvc3lzZGVwcy94ODYvc3lzL3BsYXRmb3JtL3g4Ni5oCkBAIC0x LDQgKzEsNSBAQAotLyogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisv KiBEYXRhIHN0cnVjdHVyZSBmb3IgeDg2IENQVSBmZWF0dXJlcy4KKyAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgogICAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTUsOCArMTYs OCBAQAogICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHNl ZQogICAgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAKLSNpZm5kZWYgY3B1 X2ZlYXR1cmVzX2gKLSNkZWZpbmUgY3B1X2ZlYXR1cmVzX2gKKyNpZm5kZWYgX1NZU19QTEFURk9S TV9YODZfSAorI2RlZmluZSBfU1lTX1BMQVRGT1JNX1g4Nl9ICiAKIGVudW0KIHsKQEAgLTI3LDE1 ICsyOCw2IEBAIGVudW0KICAgVVNBQkxFX0ZFQVRVUkVfSU5ERVhfTUFYCiB9OwogCi1lbnVtCi17 Ci0gIC8qIFRoZSBpbnRlZ2VyIGJpdCBhcnJheSBpbmRleCBmb3IgdGhlIGZpcnN0IHNldCBvZiBw cmVmZXJyZWQgZmVhdHVyZQotICAgICBiaXRzLiAgKi8KLSAgUFJFRkVSUkVEX0ZFQVRVUkVfSU5E RVhfMSA9IDAsCi0gIC8qIFRoZSBjdXJyZW50IG1heGltdW0gc2l6ZSBvZiB0aGUgZmVhdHVyZSBp bnRlZ2VyIGJpdCBhcnJheS4gICovCi0gIFBSRUZFUlJFRF9GRUFUVVJFX0lOREVYX01BWAotfTsK LQogZW51bQogewogICBDT01NT05fQ1BVSURfSU5ERVhfMSA9IDAsCkBAIC04MCw1MSArNzIsMjMg QEAgc3RydWN0IGNwdV9mZWF0dXJlcwogICBzdHJ1Y3QgY3B1X2ZlYXR1cmVzX2Jhc2ljIGJhc2lj OwogICB1bnNpZ25lZCBpbnQgKnVzYWJsZV9wOwogICBzdHJ1Y3QgY3B1aWRfcmVnaXN0ZXJzIGNw dWlkW0NPTU1PTl9DUFVJRF9JTkRFWF9NQVhdOwotICB1bnNpZ25lZCBpbnQgdXNhYmxlW1VTQUJM RV9GRUFUVVJFX0lOREVYX01BWF07Ci0gIHVuc2lnbmVkIGludCBwcmVmZXJyZWRbUFJFRkVSUkVE X0ZFQVRVUkVfSU5ERVhfTUFYXTsKLSAgLyogVGhlIHN0YXRlIHNpemUgZm9yIFhTQVZFQyBvciBY U0FWRS4gIFRoZSB0eXBlIG11c3QgYmUgdW5zaWduZWQgbG9uZwotICAgICBpbnQgc28gdGhhdCB3 ZSB1c2UKLQotCXN1YiB4c2F2ZV9zdGF0ZV9zaXplX29mZnNldCglcmlwKSAlUlNQX0xQCi0KLSAg ICAgaW4gX2RsX3J1bnRpbWVfcmVzb2x2ZS4gICovCi0gIHVuc2lnbmVkIGxvbmcgaW50IHhzYXZl X3N0YXRlX3NpemU7Ci0gIC8qIFRoZSBmdWxsIHN0YXRlIHNpemUgZm9yIFhTQVZFIHdoZW4gWFNB VkVDIGlzIGRpc2FibGVkIGJ5Ci0KLSAgICAgR0xJQkNfVFVOQUJMRVM9Z2xpYmMuY3B1Lmh3Y2Fw cz0tWFNBVkVDX1VzYWJsZQotICAgKi8KLSAgdW5zaWduZWQgaW50IHhzYXZlX3N0YXRlX2Z1bGxf c2l6ZTsKLSAgLyogRGF0YSBjYWNoZSBzaXplIGZvciB1c2UgaW4gbWVtb3J5IGFuZCBzdHJpbmcg cm91dGluZXMsIHR5cGljYWxseQotICAgICBMMSBzaXplLiAgKi8KLSAgdW5zaWduZWQgbG9uZyBp bnQgZGF0YV9jYWNoZV9zaXplOwotICAvKiBTaGFyZWQgY2FjaGUgc2l6ZSBmb3IgdXNlIGluIG1l bW9yeSBhbmQgc3RyaW5nIHJvdXRpbmVzLCB0eXBpY2FsbHkKLSAgICAgTDIgb3IgTDMgc2l6ZS4g ICovCi0gIHVuc2lnbmVkIGxvbmcgaW50IHNoYXJlZF9jYWNoZV9zaXplOwotICAvKiBUaHJlc2hv bGQgdG8gdXNlIG5vbiB0ZW1wb3JhbCBzdG9yZS4gICovCi0gIHVuc2lnbmVkIGxvbmcgaW50IG5v bl90ZW1wb3JhbF90aHJlc2hvbGQ7CiB9OwogCi0vKiBVc2VkIGZyb20gb3V0c2lkZSBvZiBnbGli YyB0byBnZXQgYWNjZXNzIHRvIHRoZSBDUFUgZmVhdHVyZXMKLSAgIHN0cnVjdHVyZS4gICovCi1l eHRlcm4gY29uc3Qgc3RydWN0IGNwdV9mZWF0dXJlcyAqX19nZXRfY3B1X2ZlYXR1cmVzICh2b2lk KQorLyogR2V0IGEgcG9pbnRlciB0byB0aGUgQ1BVIGZlYXR1cmVzIHN0cnVjdHVyZS4gICovCitl eHRlcm4gY29uc3Qgc3RydWN0IGNwdV9mZWF0dXJlcyAqX194ODZfZ2V0X2NwdV9mZWF0dXJlcyAo dm9pZCkKICAgICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CiAKLS8qIE9ubHkgdXNlZCBkaXJl Y3RseSBpbiBjcHUtZmVhdHVyZXMuYy4gICovCi0jIGRlZmluZSBDUFVfRkVBVFVSRVNfQ1BVX1Ao cHRyLCBuYW1lKSBcCisjZGVmaW5lIENQVV9GRUFUVVJFU19DUFVfUChwdHIsIG5hbWUpIFwKICAg KChwdHItPmNwdWlkW2luZGV4X2NwdV8jI25hbWVdLnJlZ18jI25hbWUgJiAoYml0X2NwdV8jI25h bWUpKSAhPSAwKQotIyBkZWZpbmUgQ1BVX0ZFQVRVUkVTX0FSQ0hfUChwdHIsIG5hbWUpIFwKLSAg KChwdHItPmZlYXR1cmVfIyNuYW1lW2luZGV4X2FyY2hfIyNuYW1lXSAmIChiaXRfYXJjaF8jI25h bWUpKSAhPSAwKQorI2RlZmluZSBDUFVfRkVBVFVSRVNfQVJDSF9QKHB0ciwgbmFtZSkgXAorICAo KHB0ci0+dXNhYmxlX3BbaW5kZXhfYXJjaF8jI25hbWVdICYgKGJpdF9hcmNoXyMjbmFtZSkpICE9 IDApCiAKIC8qIEhBU19DUFVfRkVBVFVSRSBldmFsdWF0ZXMgdG8gdHJ1ZSBpZiBDUFUgc3VwcG9y dHMgdGhlIGZlYXR1cmUuICAqLwogI2RlZmluZSBIQVNfQ1BVX0ZFQVRVUkUobmFtZSkgXAotICBD UFVfRkVBVFVSRVNfQ1BVX1AgKF9fZ2V0X2NwdV9mZWF0dXJlcyAoKSwgbmFtZSkKLS8qIEhBU19B UkNIX0ZFQVRVUkUgZXZhbHVhdGVzIHRvIHRydWUgaWYgd2UgbWF5IHVzZSB0aGUgZmVhdHVyZSBh dAotICAgcnVudGltZS4gICovCi0jIGRlZmluZSBIQVNfQVJDSF9GRUFUVVJFKG5hbWUpIFwKLSAg Q1BVX0ZFQVRVUkVTX0FSQ0hfUCAoX19nZXRfY3B1X2ZlYXR1cmVzICgpLCBuYW1lKQorICBDUFVf RkVBVFVSRVNfQ1BVX1AgKF9feDg2X2dldF9jcHVfZmVhdHVyZXMgKCksIG5hbWUpCiAvKiBDUFVf RkVBVFVSRV9VU0FCTEUgZXZhbHVhdGVzIHRvIHRydWUgaWYgdGhlIGZlYXR1cmUgaXMgdXNhYmxl LiAgKi8KICNkZWZpbmUgQ1BVX0ZFQVRVUkVfVVNBQkxFKG5hbWUpIFwKLSAgSEFTX0FSQ0hfRkVB VFVSRSAobmFtZSMjX1VzYWJsZSkKKyAgQ1BVX0ZFQVRVUkVTX0FSQ0hfUCAoX194ODZfZ2V0X2Nw dV9mZWF0dXJlcyAoKSwgbmFtZSMjX1VzYWJsZSkKIAogLyogQXJjaGl0ZWN0dXJlIGZlYXR1cmVz LiAgKi8KIApAQCAtMTg1LDM0ICsxNDksNiBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGNwdV9mZWF0 dXJlcyAqX19nZXRfY3B1X2ZlYXR1cmVzICh2b2lkKQogI2RlZmluZSBpbmRleF9hcmNoX0FWWDUx Ml9CRjE2X1VzYWJsZQkJVVNBQkxFX0ZFQVRVUkVfSU5ERVhfMQogI2RlZmluZSBpbmRleF9hcmNo X1BLVV9Vc2FibGUJCQlVU0FCTEVfRkVBVFVSRV9JTkRFWF8xCiAKLSNkZWZpbmUgZmVhdHVyZV9B VlhfVXNhYmxlCQkJdXNhYmxlCi0jZGVmaW5lIGZlYXR1cmVfQVZYMl9Vc2FibGUJCQl1c2FibGUK LSNkZWZpbmUgZmVhdHVyZV9BVlg1MTJGX1VzYWJsZQkJCXVzYWJsZQotI2RlZmluZSBmZWF0dXJl X0FWWDUxMkNEX1VzYWJsZQkJCXVzYWJsZQotI2RlZmluZSBmZWF0dXJlX0FWWDUxMkVSX1VzYWJs ZQkJCXVzYWJsZQotI2RlZmluZSBmZWF0dXJlX0FWWDUxMlBGX1VzYWJsZQkJCXVzYWJsZQotI2Rl ZmluZSBmZWF0dXJlX0FWWDUxMlZMX1VzYWJsZQkJCXVzYWJsZQotI2RlZmluZSBmZWF0dXJlX0FW WDUxMkJXX1VzYWJsZQkJCXVzYWJsZQotI2RlZmluZSBmZWF0dXJlX0FWWDUxMkRRX1VzYWJsZQkJ CXVzYWJsZQotI2RlZmluZSBmZWF0dXJlX0FWWDUxMl80Rk1BUFNfVXNhYmxlCQl1c2FibGUKLSNk ZWZpbmUgZmVhdHVyZV9BVlg1MTJfNFZOTklXX1VzYWJsZQkJdXNhYmxlCi0jZGVmaW5lIGZlYXR1 cmVfQVZYNTEyX0JJVEFMR19Vc2FibGUJCXVzYWJsZQotI2RlZmluZSBmZWF0dXJlX0FWWDUxMl9J Rk1BX1VzYWJsZQkJdXNhYmxlCi0jZGVmaW5lIGZlYXR1cmVfQVZYNTEyX1ZCTUlfVXNhYmxlCQl1 c2FibGUKLSNkZWZpbmUgZmVhdHVyZV9BVlg1MTJfVkJNSTJfVXNhYmxlCQl1c2FibGUKLSNkZWZp bmUgZmVhdHVyZV9BVlg1MTJfVk5OSV9Vc2FibGUJCXVzYWJsZQotI2RlZmluZSBmZWF0dXJlX0FW WDUxMl9WUE9QQ05URFFfVXNhYmxlCQl1c2FibGUKLSNkZWZpbmUgZmVhdHVyZV9GTUFfVXNhYmxl CQkJdXNhYmxlCi0jZGVmaW5lIGZlYXR1cmVfRk1BNF9Vc2FibGUJCQl1c2FibGUKLSNkZWZpbmUg ZmVhdHVyZV9WQUVTX1VzYWJsZQkJCXVzYWJsZQotI2RlZmluZSBmZWF0dXJlX1ZQQ0xNVUxRRFFf VXNhYmxlCQl1c2FibGUKLSNkZWZpbmUgZmVhdHVyZV9YT1BfVXNhYmxlCQkJdXNhYmxlCi0jZGVm aW5lIGZlYXR1cmVfWFNBVkVDX1VzYWJsZQkJCXVzYWJsZQotI2RlZmluZSBmZWF0dXJlX0YxNkNf VXNhYmxlCQkJdXNhYmxlCi0jZGVmaW5lIGZlYXR1cmVfQVZYNTEyX1ZQMklOVEVSU0VDVF9Vc2Fi bGUJdXNhYmxlCi0jZGVmaW5lIGZlYXR1cmVfQVZYNTEyX0JGMTZfVXNhYmxlCQl1c2FibGUKLSNk ZWZpbmUgZmVhdHVyZV9QS1VfVXNhYmxlCQkJdXNhYmxlCi0KIC8qIENQVSBmZWF0dXJlcy4gICov CiAKIC8qIENPTU1PTl9DUFVJRF9JTkRFWF8xLiAgKi8KQEAgLTc2MSw4OCArNjk3LDQgQEAgZXh0 ZXJuIGNvbnN0IHN0cnVjdCBjcHVfZmVhdHVyZXMgKl9fZ2V0X2NwdV9mZWF0dXJlcyAodm9pZCkK IC8qIEVBWC4gICovCiAjZGVmaW5lIHJlZ19BVlg1MTJfQkYxNgkJZWF4CiAKLS8qIEZFQVRVUkVf SU5ERVhfMi4gICovCi0jZGVmaW5lIGJpdF9hcmNoX0k1ODYJCQkJKDF1IDw8IDApCi0jZGVmaW5l IGJpdF9hcmNoX0k2ODYJCQkJKDF1IDw8IDEpCi0jZGVmaW5lIGJpdF9hcmNoX0Zhc3RfUmVwX1N0 cmluZwkJKDF1IDw8IDIpCi0jZGVmaW5lIGJpdF9hcmNoX0Zhc3RfQ29weV9CYWNrd2FyZAkJKDF1 IDw8IDMpCi0jZGVmaW5lIGJpdF9hcmNoX0Zhc3RfVW5hbGlnbmVkX0xvYWQJCSgxdSA8PCA0KQot I2RlZmluZSBiaXRfYXJjaF9GYXN0X1VuYWxpZ25lZF9Db3B5CQkoMXUgPDwgNSkKLSNkZWZpbmUg Yml0X2FyY2hfU2xvd19CU0YJCQkoMXUgPDwgNikKLSNkZWZpbmUgYml0X2FyY2hfU2xvd19TU0U0 XzIJCQkoMXUgPDwgNykKLSNkZWZpbmUgYml0X2FyY2hfQVZYX0Zhc3RfVW5hbGlnbmVkX0xvYWQJ KDF1IDw8IDgpCi0jZGVmaW5lIGJpdF9hcmNoX1ByZWZlcl9NQVBfMzJCSVRfRVhFQwkJKDF1IDw8 IDkpCi0jZGVmaW5lIGJpdF9hcmNoX1ByZWZlcl9QTUlOVUJfZm9yX3N0cmluZ29wCSgxdSA8PCAx MCkKLSNkZWZpbmUgYml0X2FyY2hfUHJlZmVyX05vX1ZaRVJPVVBQRVIJCSgxdSA8PCAxMSkKLSNk ZWZpbmUgYml0X2FyY2hfUHJlZmVyX0VSTVMJCQkoMXUgPDwgMTIpCi0jZGVmaW5lIGJpdF9hcmNo X1ByZWZlcl9GU1JNCQkJKDF1IDw8IDEzKQotI2RlZmluZSBiaXRfYXJjaF9QcmVmZXJfTm9fQVZY NTEyCQkoMXUgPDwgMTQpCi0jZGVmaW5lIGJpdF9hcmNoX01hdGhWZWNfUHJlZmVyX05vX0FWWDUx MgkoMXUgPDwgMTUpCi0KLSNkZWZpbmUgaW5kZXhfYXJjaF9GYXN0X1JlcF9TdHJpbmcJCVBSRUZF UlJFRF9GRUFUVVJFX0lOREVYXzEKLSNkZWZpbmUgaW5kZXhfYXJjaF9GYXN0X0NvcHlfQmFja3dh cmQJCVBSRUZFUlJFRF9GRUFUVVJFX0lOREVYXzEKLSNkZWZpbmUgaW5kZXhfYXJjaF9TbG93X0JT RgkJCVBSRUZFUlJFRF9GRUFUVVJFX0lOREVYXzEKLSNkZWZpbmUgaW5kZXhfYXJjaF9GYXN0X1Vu YWxpZ25lZF9Mb2FkCQlQUkVGRVJSRURfRkVBVFVSRV9JTkRFWF8xCi0jZGVmaW5lIGluZGV4X2Fy Y2hfUHJlZmVyX1BNSU5VQl9mb3Jfc3RyaW5nb3AgCVBSRUZFUlJFRF9GRUFUVVJFX0lOREVYXzEK LSNkZWZpbmUgaW5kZXhfYXJjaF9GYXN0X1VuYWxpZ25lZF9Db3B5CQlQUkVGRVJSRURfRkVBVFVS RV9JTkRFWF8xCi0jZGVmaW5lIGluZGV4X2FyY2hfSTU4NgkJCQlQUkVGRVJSRURfRkVBVFVSRV9J TkRFWF8xCi0jZGVmaW5lIGluZGV4X2FyY2hfSTY4NgkJCQlQUkVGRVJSRURfRkVBVFVSRV9JTkRF WF8xCi0jZGVmaW5lIGluZGV4X2FyY2hfU2xvd19TU0U0XzIJCQlQUkVGRVJSRURfRkVBVFVSRV9J TkRFWF8xCi0jZGVmaW5lIGluZGV4X2FyY2hfQVZYX0Zhc3RfVW5hbGlnbmVkX0xvYWQJUFJFRkVS UkVEX0ZFQVRVUkVfSU5ERVhfMQotI2RlZmluZSBpbmRleF9hcmNoX1ByZWZlcl9NQVBfMzJCSVRf RVhFQwlQUkVGRVJSRURfRkVBVFVSRV9JTkRFWF8xCi0jZGVmaW5lIGluZGV4X2FyY2hfUHJlZmVy X05vX1ZaRVJPVVBQRVIJCVBSRUZFUlJFRF9GRUFUVVJFX0lOREVYXzEKLSNkZWZpbmUgaW5kZXhf YXJjaF9QcmVmZXJfRVJNUwkJCVBSRUZFUlJFRF9GRUFUVVJFX0lOREVYXzEKLSNkZWZpbmUgaW5k ZXhfYXJjaF9QcmVmZXJfTm9fQVZYNTEyCQlQUkVGRVJSRURfRkVBVFVSRV9JTkRFWF8xCi0jZGVm aW5lIGluZGV4X2FyY2hfTWF0aFZlY19QcmVmZXJfTm9fQVZYNTEyCVBSRUZFUlJFRF9GRUFUVVJF X0lOREVYXzEKLSNkZWZpbmUgaW5kZXhfYXJjaF9QcmVmZXJfRlNSTQkJCVBSRUZFUlJFRF9GRUFU VVJFX0lOREVYXzEKLQotI2RlZmluZSBmZWF0dXJlX0Zhc3RfUmVwX1N0cmluZwkJCXByZWZlcnJl ZAotI2RlZmluZSBmZWF0dXJlX0Zhc3RfQ29weV9CYWNrd2FyZAkJcHJlZmVycmVkCi0jZGVmaW5l IGZlYXR1cmVfU2xvd19CU0YJCQlwcmVmZXJyZWQKLSNkZWZpbmUgZmVhdHVyZV9GYXN0X1VuYWxp Z25lZF9Mb2FkCQlwcmVmZXJyZWQKLSNkZWZpbmUgZmVhdHVyZV9QcmVmZXJfUE1JTlVCX2Zvcl9z dHJpbmdvcCAJcHJlZmVycmVkCi0jZGVmaW5lIGZlYXR1cmVfRmFzdF9VbmFsaWduZWRfQ29weQkJ cHJlZmVycmVkCi0jZGVmaW5lIGZlYXR1cmVfSTU4NgkJCQlwcmVmZXJyZWQKLSNkZWZpbmUgZmVh dHVyZV9JNjg2CQkJCXByZWZlcnJlZAotI2RlZmluZSBmZWF0dXJlX1Nsb3dfU1NFNF8yCQkJcHJl ZmVycmVkCi0jZGVmaW5lIGZlYXR1cmVfQVZYX0Zhc3RfVW5hbGlnbmVkX0xvYWQJCXByZWZlcnJl ZAotI2RlZmluZSBmZWF0dXJlX1ByZWZlcl9NQVBfMzJCSVRfRVhFQwkJcHJlZmVycmVkCi0jZGVm aW5lIGZlYXR1cmVfUHJlZmVyX05vX1ZaRVJPVVBQRVIJCXByZWZlcnJlZAotI2RlZmluZSBmZWF0 dXJlX1ByZWZlcl9FUk1TCQkJcHJlZmVycmVkCi0jZGVmaW5lIGZlYXR1cmVfUHJlZmVyX05vX0FW WDUxMgkJcHJlZmVycmVkCi0jZGVmaW5lIGZlYXR1cmVfTWF0aFZlY19QcmVmZXJfTm9fQVZYNTEy CXByZWZlcnJlZAotI2RlZmluZSBmZWF0dXJlX1ByZWZlcl9GU1JNCQkJcHJlZmVycmVkCi0KLS8q IFhDUjAgRmVhdHVyZSBmbGFncy4gICovCi0jZGVmaW5lIGJpdF9YTU1fc3RhdGUJCSgxdSA8PCAx KQotI2RlZmluZSBiaXRfWU1NX3N0YXRlCQkoMXUgPDwgMikKLSNkZWZpbmUgYml0X09wbWFza19z dGF0ZQkoMXUgPDwgNSkKLSNkZWZpbmUgYml0X1pNTTBfMTVfc3RhdGUJKDF1IDw8IDYpCi0jZGVm aW5lIGJpdF9aTU0xNl8zMV9zdGF0ZQkoMXUgPDwgNykKLQotIyBpZiBkZWZpbmVkIChfTElCQykg JiYgIUlTX0lOIChub25saWIpCi0vKiBVbnVzZWQgZm9yIHg4Ni4gICovCi0jICBkZWZpbmUgSU5J VF9BUkNIKCkKLSMgIGRlZmluZSBfX2dldF9jcHVfZmVhdHVyZXMoKQkoJkdMUk8oZGxfeDg2X2Nw dV9mZWF0dXJlcykpCi0jICBkZWZpbmUgeDg2X2dldF9jcHVpZF9yZWdpc3RlcnMoaSkgXAotICAg ICAgICgmKEdMUk8oZGxfeDg2X2NwdV9mZWF0dXJlcykuY3B1aWRbaV0pKQotIyBlbmRpZgotCi0j aWZkZWYgX194ODZfNjRfXwotIyBkZWZpbmUgSEFTX0NQVUlEIDEKLSNlbGlmIChkZWZpbmVkIF9f aTU4Nl9fIHx8IGRlZmluZWQgX19wZW50aXVtX18JXAotICAgICAgIHx8IGRlZmluZWQgX19nZW9k ZV9fIHx8IGRlZmluZWQgX19rNl9fKQotIyBkZWZpbmUgSEFTX0NQVUlEIDEKLSMgZGVmaW5lIEhB U19JNTg2IDEKLSMgZGVmaW5lIEhBU19JNjg2IEhBU19BUkNIX0ZFQVRVUkUgKEk2ODYpCi0jZWxp ZiBkZWZpbmVkIF9faTQ4Nl9fCi0jIGRlZmluZSBIQVNfQ1BVSUQgMAotIyBkZWZpbmUgSEFTX0k1 ODYgSEFTX0FSQ0hfRkVBVFVSRSAoSTU4NikKLSMgZGVmaW5lIEhBU19JNjg2IEhBU19BUkNIX0ZF QVRVUkUgKEk2ODYpCi0jZWxzZQotIyBkZWZpbmUgSEFTX0NQVUlEIDEKLSMgZGVmaW5lIEhBU19J NTg2IDEKLSMgZGVmaW5lIEhBU19JNjg2IDEKLSNlbmRpZgotCi0jZW5kaWYgIC8qIGNwdV9mZWF0 dXJlc19oICovCisjZW5kaWYgIC8qIF9TWVNfUExBVEZPUk1fWDg2X0ggKi8KZGlmZiAtLWdpdCBh L3N5c2RlcHMveDg2L3RzdC1nZXQtY3B1LWZlYXR1cmVzLmMgYi9zeXNkZXBzL3g4Ni90c3QtZ2V0 LWNwdS1mZWF0dXJlcy5jCmluZGV4IGM2MDkxOGNmMDAuLmM0NzBiZmIzNDUgMTAwNjQ0Ci0tLSBh L3N5c2RlcHMveDg2L3RzdC1nZXQtY3B1LWZlYXR1cmVzLmMKKysrIGIvc3lzZGVwcy94ODYvdHN0 LWdldC1jcHUtZmVhdHVyZXMuYwpAQCAtMSw0ICsxLDQgQEAKLS8qIFRlc3QgY2FzZSBmb3IgeDg2 IF9fZ2V0X2NwdV9mZWF0dXJlcyBpbnRlcmZhY2UKKy8qIFRlc3QgY2FzZSBmb3IgX194ODZfZ2V0 X2NwdV9mZWF0dXJlcyBpbnRlcmZhY2UKICAgIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBDIExpYnJhcnkuCiAKQEAgLTE4LDcgKzE4LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgog I2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8Y3B1LWZlYXR1cmVzLmg+CisjaW5jbHVkZSA8 c3lzL3BsYXRmb3JtL3g4Ni5oPgogI2luY2x1ZGUgPHN1cHBvcnQvY2hlY2suaD4KIAogI2RlZmlu ZSBDSEVDS19DUFVfRkVBVFVSRShuYW1lKQkJXApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgY29u c3QgY2hhciAqIGNvbnN0IGNwdV9raW5kc1tdID0KIHN0YXRpYyBpbnQKIGRvX3Rlc3QgKHZvaWQp CiB7Ci0gIGNvbnN0IHN0cnVjdCBjcHVfZmVhdHVyZXMgKmNwdV9mZWF0dXJlcyA9IF9fZ2V0X2Nw dV9mZWF0dXJlcyAoKTsKKyAgY29uc3Qgc3RydWN0IGNwdV9mZWF0dXJlcyAqY3B1X2ZlYXR1cmVz ID0gX194ODZfZ2V0X2NwdV9mZWF0dXJlcyAoKTsKIAogICBzd2l0Y2ggKGNwdV9mZWF0dXJlcy0+ YmFzaWMua2luZCkKICAgICB7CmRpZmYgLS1naXQgYS9zeXNkZXBzL3g4Nl82NC9mcHUvbWF0aC10 ZXN0cy1hcmNoLmggYi9zeXNkZXBzL3g4Nl82NC9mcHUvbWF0aC10ZXN0cy1hcmNoLmgKaW5kZXgg NDM1ZGRhZDk5MS4uY2MzYzJiMGMxMSAxMDA2NDQKLS0tIGEvc3lzZGVwcy94ODZfNjQvZnB1L21h dGgtdGVzdHMtYXJjaC5oCisrKyBiL3N5c2RlcHMveDg2XzY0L2ZwdS9tYXRoLXRlc3RzLWFyY2gu aApAQCAtMTYsNyArMTYsNyBAQAogICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJy YXJ5OyBpZiBub3QsIHNlZQogICAgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov CiAKLSNpbmNsdWRlIDxjcHUtZmVhdHVyZXMuaD4KKyNpbmNsdWRlIDxzeXMvcGxhdGZvcm0veDg2 Lmg+CiAKICNpZiBkZWZpbmVkIFJFUVVJUkVfQVZYCiAKQEAgLTI0LDcgKzI0LDcgQEAKICMgZGVm aW5lIENIRUNLX0FSQ0hfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKICAgZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIGlmICghSEFTX0FSQ0hfRkVBVFVSRSAoQVZYX1Vz YWJsZSkpIHJldHVybjsgICAgICAgICAgICAgIFwKKyAgICAgIGlmICghQ1BVX0ZFQVRVUkVfVVNB QkxFIChBVlgpKSByZXR1cm47ICAgICAgICAgICAgICAgICAgIFwKICAgICB9ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgd2hpbGUg KDApCiAKQEAgLTM0LDcgKzM0LDcgQEAKICMgZGVmaW5lIENIRUNLX0FSQ0hfRVhUICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgZG8gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg IGlmICghSEFTX0FSQ0hfRkVBVFVSRSAoQVZYMl9Vc2FibGUpKSByZXR1cm47ICAgICAgICAgICAg IFwKKyAgICAgIGlmICghQ1BVX0ZFQVRVUkVfVVNBQkxFIChBVlgyKSkgcmV0dXJuOyAgICAgICAg ICAgICAgICAgIFwKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKICAgd2hpbGUgKDApCiAKQEAgLTQ0LDcgKzQ0LDcgQEAKICMg ZGVmaW5lIENIRUNLX0FSQ0hfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKICAgZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIGlmICghSEFTX0FSQ0hfRkVBVFVSRSAoQVZY NTEyRl9Vc2FibGUpKSByZXR1cm47ICAgICAgICAgIFwKKyAgICAgIGlmICghQ1BVX0ZFQVRVUkVf VVNBQkxFIChBVlg1MTJGKSkgcmV0dXJuOyAgICAgICAgICAgICAgIFwKICAgICB9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgd2hp bGUgKDApCiAKZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2XzY0L211bHRpYXJjaC90ZXN0LW11bHRp YXJjaC5jIGIvc3lzZGVwcy94ODZfNjQvbXVsdGlhcmNoL3Rlc3QtbXVsdGlhcmNoLmMKaW5kZXgg MzE3MzczY2VkYS4uOWZlYWYwNTdlNSAxMDA2NDQKLS0tIGEvc3lzZGVwcy94ODZfNjQvbXVsdGlh cmNoL3Rlc3QtbXVsdGlhcmNoLmMKKysrIGIvc3lzZGVwcy94ODZfNjQvbXVsdGlhcmNoL3Rlc3Qt bXVsdGlhcmNoLmMKQEAgLTE2LDcgKzE2LDcgQEAKICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUg R05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUKICAgIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLwogCi0jaW5jbHVkZSA8Y3B1LWZlYXR1cmVzLmg+CisjaW5jbHVkZSA8c3lzL3Bs YXRmb3JtL3g4Ni5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAj aW5jbHVkZSA8c3RyaW5nLmg+CkBAIC03NSwxMCArNzUsMTAgQEAgZG9fdGVzdCAoaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogICBpbnQgZmFpbHM7CiAKICAgZ2V0X2NwdWluZm8gKCk7Ci0gIGZhaWxz ID0gY2hlY2tfcHJvYyAoImF2eCIsIEhBU19BUkNIX0ZFQVRVUkUgKEFWWF9Vc2FibGUpLAotCQkg ICAgICAiSEFTX0FSQ0hfRkVBVFVSRSAoQVZYX1VzYWJsZSkiKTsKLSAgZmFpbHMgKz0gY2hlY2tf cHJvYyAoImZtYTQiLCBIQVNfQVJDSF9GRUFUVVJFIChGTUE0X1VzYWJsZSksCi0JCSAgICAgICAi SEFTX0FSQ0hfRkVBVFVSRSAoRk1BNF9Vc2FibGUpIik7CisgIGZhaWxzID0gY2hlY2tfcHJvYyAo ImF2eCIsIENQVV9GRUFUVVJFX1VTQUJMRSAoQVZYKSwKKwkJICAgICAgIkNQVV9GRUFUVVJFX1VT QUJMRSAoQVZYKSIpOworICBmYWlscyArPSBjaGVja19wcm9jICgiZm1hNCIsIENQVV9GRUFUVVJF X1VTQUJMRSAoRk1BNCksCisJCSAgICAgICAiQ1BVX0ZFQVRVUkVfVVNBQkxFIChGTUE0KSIpOwog ICBmYWlscyArPSBjaGVja19wcm9jICgic3NlNF8yIiwgSEFTX0NQVV9GRUFUVVJFIChTU0U0XzIp LAogCQkgICAgICAgIkhBU19DUFVfRkVBVFVSRSAoU1NFNF8yKSIpOwogICBmYWlscyArPSBjaGVj a19wcm9jICgic3NlNF8xIiwgSEFTX0NQVV9GRUFUVVJFIChTU0U0XzEpCi0tIAoyLjI2LjIKCg== --000000000000ecfebd05a8b46a3d--