<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugs.gentoo.org/bugzilla.dtd">

<bugzilla version="2.22.7"
          urlbase="http://bugs.gentoo.org/"
          maintainer="bugzilla@gentoo.org"
>

    <bug>
          <bug_id>174373</bug_id>
          
          <creation_ts>2007-04-13 07:07 0000</creation_ts>
          <short_desc>SCSI/libata disk shutdown issues</short_desc>
          <delta_ts>2007-08-20 20:03:28 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Linux</product>
          <component>Core system</component>
          <version>unspecified</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          <bug_file_loc>http://bugzilla.kernel.org/show_bug.cgi?id=7838</bug_file_loc>
          
          
          <priority>P2</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>gentoo4u@vplace.de</reporter>
          <assigned_to>dsd@gentoo.org</assigned_to>
          <cc>arekm@pld-linux.org</cc>
    
    <cc>ceztko@gmail.com</cc>
    
    <cc>genlinux@xs4all.nl</cc>
    
    <cc>ismail@namtrac.org</cc>
    
    <cc>kernel@gentoo.org</cc>
    
    <cc>ricardo.salveti@openbossa.org</cc>

      

      
          <long_desc isprivate="0">
            <who>gentoo4u@vplace.de</who>
            <bug_when>2007-04-13 07:07:03 0000</bug_when>
            <thetext>I searched for this bug on bugzilla.kernel.org and found a patch. Unfortunately Tejun Heo told me that this patch will be applied earliest to linux-2.6.21.1. For that reason I want to request that the patch is added to all current and future gentoo-sources (and other kernel sources) until 2.6.21.1.

Patch: http://bugzilla.kernel.org/attachment.cgi?id=10122&amp;action=view

Reproducible: Always

Steps to Reproduce:
1. Use AHCI on a Thinkpad T60 for example
2. Run shutdown -h now or echo disk &gt; /sys/power/state

Actual Results:  
Harddisk is switched off uncleanly. SMART values disk_shift and power-off_retract_count are increased.

Expected Results:  
Harddisk is switched of using right ATA commands.

I thinks this bug is critical because this is not a intended behavior for harddisks.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo4u@vplace.de</who>
            <bug_when>2007-04-17 06:17:53 0000</bug_when>
            <thetext>Hi, unfortunately noone seems to be willing to react here. I want to point out two important things:

1. Every modern notebook with SATA (and PATA) kernels is affected.
2. Because of the Emergency Head Resets (or however it was called) it it likely that the harddrive breaks far earlier than designed!!! And at least in my opinion a broken harddrive is the worst thing that can happen.

Hope someone integrates at soon ... (Is there a public holiday?)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>phreak@gentoo.org</who>
            <bug_when>2007-04-26 07:31:48 0000</bug_when>
            <thetext>(In reply to comment #1)
&gt; Hi, unfortunately noone seems to be willing to react here. I want to point out
&gt; two important things:
&gt; 
&gt; 1. Every modern notebook with SATA (and PATA) kernels is affected.
&gt; 2. Because of the Emergency Head Resets (or however it was called) it it likely
&gt; that the harddrive breaks far earlier than designed!!! And at least in my
&gt; opinion a broken harddrive is the worst thing that can happen.
&gt; 
&gt; Hope someone integrates at soon ... (Is there a public holiday?)

1. You might know, Gentoo is a voluntary project; means we *dedicate* _our_ free time to this project.
2. Our free time might be short (or we might not be able to dedicate much of our time), I know at least dsd hasn&apos;t much at the moment.
3. I&apos;m going to look into this before we release the genpatch set for 2.6.21</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo4u@vplace.de</who>
            <bug_when>2007-04-26 07:43:29 0000</bug_when>
            <thetext>(In reply to comment #2)
&gt; 1. You might know, Gentoo is a voluntary project; means we *dedicate* _our_
&gt; free time to this project.

I know and really appreciate that.

&gt; 2. Our free time might be short (or we might not be able to dedicate much of
&gt; our time), I know at least dsd hasn&apos;t much at the moment.

Thats absolutely fine with me. Only a small respond would be great so that I and other users know that it has been recognized at least.

&gt; 3. I&apos;m going to look into this before we release the genpatch set for 2.6.21

Thanks :)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dsd@gentoo.org</who>
            <bug_when>2007-04-26 23:54:39 0000</bug_when>
            <thetext>We&apos;ll certainly be sure to have this fixed properly long before 2.6.21 goes stable. It doesn&apos;t affect all configurations, only some. We also need to fix the userspace part.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dsd@gentoo.org</who>
            <bug_when>2007-05-03 02:07:43 0000</bug_when>
            <thetext>This isn&apos;t a 2.6.21 regression, I mismarked it earlier.

There&apos;s a lot of stuff to digest here, I need to revisit it later.

Relevant LKML threads:

   Loud &quot;pop&quot; coming from hard drive on reboot
   Weird hard disk noise on shutdown (bug #7674)

Upstream bugs:

http://bugzilla.kernel.org/show_bug.cgi?id=7674
http://bugzilla.kernel.org/show_bug.cgi?id=7838

More links:
http://git.kernel.org/?p=linux/kernel/git/jejb/scsi-misc-2.6.git;a=commit;h=c3c94c5a2fb43a654e777f509d5032b0db8ed09f
http://article.gmane.org/gmane.linux.scsi/30489
http://article.gmane.org/gmane.linux.ide/17392
http://thread.gmane.org/gmane.linux.scsi/30487/focus=17392
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ricardo.salveti@openbossa.org</who>
            <bug_when>2007-05-08 08:53:27 0000</bug_when>
            <thetext>Here&apos;s what I did now for now (a workaround):

I tested patching kernel 2.6.20 and 2.6.21 (also the ones installed with gentoo-sources) with the implementation of START/STOP management. To do this just patch your kernel with the following patches:
1 - http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff_plain;h=684b7fe976554d12e6266d7280c87a0f3feff02e
2 - http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff_plain;h=62d42a62770dd66da2d3df693e70f4e5fae1716a
3 - http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff_plain;h=e73aec8247032ee730b5f38edf48922c4f72522e;hp=a4d04a4cd9881e89fdc62107b6b57053438f2b30
4 - http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=3721050afc6cb6ddf6de0f782e2054ebcc225e9b;hp=ad8c31bb69d60c0c6bc6431bccdf67e5a96c0d31
5 - http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=c3c94c5a2fb43a654e777f509d5032b0db8ed09f;hp=3721050afc6cb6ddf6de0f782e2054ebcc225e9b

Then sdev-&gt;mange_start_stop will be present in your kernel. With this you can (works as a workaround, the final patches are not applied yet) just give &quot;# echo 1 &gt; /sys/class/scsi_disk/0\:0\:0\:0/manage_start_stop&quot; to see you hard disk switch off normally.

The final solution depends on these patches:
1 - http://article.gmane.org/gmane.linux.scsi/30489
2 - http://article.gmane.org/gmane.linux.ide/17392

Both patches are not upstream yet, and will need some modifications on &apos;shutdown(8)&apos; to work with every cases.

I&apos;ll try to backport both patches so we can use them as soon they&apos;re upstream (patch 3 change lots of things and patch doesn&apos;t work ok with 2.6.20 and 2.6.21).</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dsd@gentoo.org</who>
            <bug_when>2007-05-10 22:48:17 0000</bug_when>
            <thetext>The situation is now simpler: all that needs doing is shutdown modified as described in the URL below, plus the 2 patches in that patchset.

http://thread.gmane.org/gmane.linux.ide/18485

I&apos;ll look into making the shutdown changes when those patches go into Linus&apos; tree.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ricardo.salveti@openbossa.org</who>
            <bug_when>2007-05-11 05:39:28 0000</bug_when>
            <thetext>Created an attachment (id=118829)
All patches that make start/stop management work

Almost all patches are applied successfully at 2.6.21, the only patch that has problem is  http://thread.gmane.org/gmane.linux.ide/18485 , because it tries to apply the patch at file drivers/ata/pata_cmd640.c and this file doesn&apos;t exist in 2.6.21 yet. Removing this part of the patch let everything ok.

If it helps, I put one patch that has every patch needed to make this work as attachment.

This patch is composed of patches 1, 3, 4 and 5 from comment #6 and also patches http://article.gmane.org/gmane.linux.ide/18486 and http://article.gmane.org/gmane.linux.ide/18487 .

Now it just need the shutdown modification.


</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ricardo.salveti@openbossa.org</who>
            <bug_when>2007-05-14 14:16:52 0000</bug_when>
            <thetext>Patches already upstream in 2.6.22-rc1

1- http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9666f4009c22f6520ac3fb8a19c9e32ab973e828
2-
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=920a4b1038e442700a1cfac77ea7e20bd615a2c3

Now, it&apos;s time to make the shutdown(8) fix.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2007-05-14 20:39:33 0000</bug_when>
            <thetext>*** Bug 178559 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dsd@gentoo.org</who>
            <bug_when>2007-05-15 03:43:44 0000</bug_when>
            <thetext>Looks like our shutdown utilities don&apos;t halt scsi disks anyway.
http://marc.info/?l=linux-ide&amp;m=117920048530447&amp;w=2</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ceztko@gmail.com</who>
            <bug_when>2007-05-15 16:12:12 0000</bug_when>
            <thetext>(In reply to comment #11)
&gt; Looks like our shutdown utilities don&apos;t halt scsi disks anyway.
&gt; http://marc.info/?l=linux-ide&amp;m=117920048530447&amp;w=2
&gt; 

Yeah. For everybody else interested, seems  after all that no userland modifications will be needed:
http://thread.gmane.org/gmane.linux.ide/18846</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ricardo.salveti@openbossa.org</who>
            <bug_when>2007-05-17 23:21:07 0000</bug_when>
            <thetext>I guess that now we have the final solution, no userland modification needed:

http://thread.gmane.org/gmane.linux.ide/18934</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dsd@gentoo.org</who>
            <bug_when>2007-05-18 23:12:37 0000</bug_when>
            <thetext>OK. All patches are ready but I&apos;m going to give this some more time being tested in the 2.6.22 tree before backporting it.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dsd@gentoo.org</who>
            <bug_when>2007-05-25 02:41:29 0000</bug_when>
            <thetext>Fixed in gentoo-sources-2.6.21-r2 (genpatches-2.6.21-3)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2007-08-20 20:03:28 0000</bug_when>
            <thetext>*** Bug 189636 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118829</attachid>
            <date>2007-05-11 05:39 0000</date>
            <desc>All patches that make start/stop management work</desc>
            <filename>libata_start_stop_management.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">RnJvbTogTWFydGluIEsuIFBldGVyc2VuIDxtYXJ0aW4ucGV0ZXJzZW5Ab3JhY2xlLmNvbT4KRGF0
ZTogV2VkLCAyOCBGZWIgMjAwNyAwMzozOTo0NCArMDAwMCAoLTA1MDApClN1YmplY3Q6IFtTQ1NJ
XSBjb25zdGFudHMuYzogY2xlYW51cCwgdmVyYm9zZSByZXN1bHQgcHJpbnRpbmcKWC1HaXQtVXJs
OiBodHRwOi8vZ2l0Lmtlcm5lbC5vcmcvP3A9bGludXglMkZrZXJuZWwlMkZnaXQlMkZ0b3J2YWxk
cyUyRmxpbnV4LTIuNi5naXQ7YT1jb21taXRkaWZmX3BsYWluO2g9Njg0YjdmZTk3NjU1NGQxMmU2
MjY2ZDcyODBjODdhMGYzZmVmZjAyZQoKW1NDU0ldIGNvbnN0YW50cy5jOiBjbGVhbnVwLCB2ZXJi
b3NlIHJlc3VsdCBwcmludGluZwoKQ2xlYW4gdXAgY29uc3RhbnRzLmMgYW5kIG1ha2UgcmVzdWx0
IHByaW50aW5nIG1vcmUgdXNlciBmcmllbmRseToKCiAtIFJlZmFjdG9yIHRoZSBjb21tYW5kIGFu
ZCBzZW5zZSBmdW5jdGlvbnMgc28gdGhhdCB0aGUgYWN0dWFsCiAgIGZvcm1hdHRpbmcgY2FuIGJl
IGNhbGxlZCBmcm9tIHRoZSB2YXJpb3VzIGhlbHBlciBmdW5jdGlvbnMgd2l0aCB0aGUKICAgY29y
cmVjdCBwcmVmaXguCgogLSBSZXBsYWNlIHNjc2lfcHJpbnRfaG9zdGJ5dGUoKSBhbmQgc2NzaV9w
cmludF9kcml2ZXJieXRlKCkgd2l0aAogICBzY3NpX3ByaW50X3Jlc3VsdCgpIHdoaWNoIGlzIHZl
cmJvc2Ugd2hlbiBDT05GSUdfU0NTSV9DT05TVEFOVFMgaXMKICAgb24uCgpTaWduZWQtb2ZmLWJ5
OiBNYXJ0aW4gSy4gUGV0ZXJzZW4gPG1hcnRpbi5wZXRlcnNlbkBvcmFjbGUuY29tPgpTaWduZWQt
b2ZmLWJ5OiBKYW1lcyBCb3R0b21sZXkgPEphbWVzLkJvdHRvbWxleUBTdGVlbEV5ZS5jb20+Ci0t
LQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9jb25zdGFudHMuYyBiL2RyaXZlcnMvc2NzaS9j
b25zdGFudHMuYwppbmRleCA2MWY2MDI0Li42MTE0ODc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Nj
c2kvY29uc3RhbnRzLmMKKysrIGIvZHJpdmVycy9zY3NpL2NvbnN0YW50cy5jCkBAIC0yMDIsMzEg
KzIwMiwyOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGdldF9zYV9uYW1lKGNvbnN0IHN0cnVjdCB2
YWx1ZV9uYW1lX3BhaXIgKiBhcnIsCiB9CiAKIC8qIGF0dGVtcHQgdG8gZ3Vlc3MgY2RiIGxlbmd0
aCBpZiBjZGJfbGVuPT0wIC4gTm8gdHJhaWxpbmcgbGluZWZlZWQuICovCi1zdGF0aWMgdm9pZCBw
cmludF9vcGNvZGVfbmFtZSh1bnNpZ25lZCBjaGFyICogY2RicCwgaW50IGNkYl9sZW4sCi0JCQkg
ICAgICBpbnQgc3RhcnRfb2ZfbGluZSkKK3N0YXRpYyB2b2lkIHByaW50X29wY29kZV9uYW1lKHVu
c2lnbmVkIGNoYXIgKiBjZGJwLCBpbnQgY2RiX2xlbikKIHsKIAlpbnQgc2EsIGxlbiwgY2RiMDsK
IAljb25zdCBjaGFyICogbmFtZTsKLQljb25zdCBjaGFyICogbGVhZGluID0gc3RhcnRfb2ZfbGlu
ZSA/IEtFUk5fSU5GTyA6ICIiOwogCiAJY2RiMCA9IGNkYnBbMF07CiAJc3dpdGNoKGNkYjApIHsK
IAljYXNlIFZBUklBQkxFX0xFTkdUSF9DTUQ6CiAJCWxlbiA9IGNkYnBbN10gKyA4OwogCQlpZiAo
bGVuIDwgMTApIHsKLQkJCXByaW50aygiJXNzaG9ydCB2YXJpYWJsZSBsZW5ndGggY29tbWFuZCwg
IgotCQkJICAgICAgICJsZW49JWQgZXh0X2xlbj0lZCIsIGxlYWRpbiwgbGVuLCBjZGJfbGVuKTsK
KwkJCXByaW50aygic2hvcnQgdmFyaWFibGUgbGVuZ3RoIGNvbW1hbmQsICIKKwkJCSAgICAgICAi
bGVuPSVkIGV4dF9sZW49JWQiLCBsZW4sIGNkYl9sZW4pOwogCQkJYnJlYWs7CiAJCX0KIAkJc2Eg
PSAoY2RicFs4XSA8PCA4KSArIGNkYnBbOV07CiAJCW5hbWUgPSBnZXRfc2FfbmFtZShtYWludF9p
bl9hcnIsIE1BSU5UX0lOX1NaLCBzYSk7CiAJCWlmIChuYW1lKSB7Ci0JCQlwcmludGsoIiVzJXMi
LCBsZWFkaW4sIG5hbWUpOworCQkJcHJpbnRrKCIlcyIsIG5hbWUpOwogCQkJaWYgKChjZGJfbGVu
ID4gMCkgJiYgKGxlbiAhPSBjZGJfbGVuKSkKIAkJCQlwcmludGsoIiwgaW5fY2RiX2xlbj0lZCwg
ZXh0X2xlbj0lZCIsCiAJCQkJICAgICAgIGxlbiwgY2RiX2xlbik7CiAJCX0gZWxzZSB7Ci0JCQlw
cmludGsoIiVzY2RiWzBdPTB4JXgsIHNhPTB4JXgiLCBsZWFkaW4sIGNkYjAsIHNhKTsKKwkJCXBy
aW50aygiY2RiWzBdPTB4JXgsIHNhPTB4JXgiLCBjZGIwLCBzYSk7CiAJCQlpZiAoKGNkYl9sZW4g
PiAwKSAmJiAobGVuICE9IGNkYl9sZW4pKQogCQkJCXByaW50aygiLCBpbl9jZGJfbGVuPSVkLCBl
eHRfbGVuPSVkIiwKIAkJCQkgICAgICAgbGVuLCBjZGJfbGVuKTsKQEAgLTIzNiw4MyArMjM0LDgw
IEBAIHN0YXRpYyB2b2lkIHByaW50X29wY29kZV9uYW1lKHVuc2lnbmVkIGNoYXIgKiBjZGJwLCBp
bnQgY2RiX2xlbiwKIAkJc2EgPSBjZGJwWzFdICYgMHgxZjsKIAkJbmFtZSA9IGdldF9zYV9uYW1l
KG1haW50X2luX2FyciwgTUFJTlRfSU5fU1osIHNhKTsKIAkJaWYgKG5hbWUpCi0JCQlwcmludGso
IiVzJXMiLCBsZWFkaW4sIG5hbWUpOworCQkJcHJpbnRrKCIlcyIsIG5hbWUpOwogCQllbHNlCi0J
CQlwcmludGsoIiVzY2RiWzBdPTB4JXgsIHNhPTB4JXgiLCBsZWFkaW4sIGNkYjAsIHNhKTsKKwkJ
CXByaW50aygiY2RiWzBdPTB4JXgsIHNhPTB4JXgiLCBjZGIwLCBzYSk7CiAJCWJyZWFrOwogCWNh
c2UgTUFJTlRFTkFOQ0VfT1VUOgogCQlzYSA9IGNkYnBbMV0gJiAweDFmOwogCQluYW1lID0gZ2V0
X3NhX25hbWUobWFpbnRfb3V0X2FyciwgTUFJTlRfT1VUX1NaLCBzYSk7CiAJCWlmIChuYW1lKQot
CQkJcHJpbnRrKCIlcyVzIiwgbGVhZGluLCBuYW1lKTsKKwkJCXByaW50aygiJXMiLCBuYW1lKTsK
IAkJZWxzZQotCQkJcHJpbnRrKCIlc2NkYlswXT0weCV4LCBzYT0weCV4IiwgbGVhZGluLCBjZGIw
LCBzYSk7CisJCQlwcmludGsoImNkYlswXT0weCV4LCBzYT0weCV4IiwgY2RiMCwgc2EpOwogCQli
cmVhazsKIAljYXNlIFNFUlZJQ0VfQUNUSU9OX0lOXzEyOgogCQlzYSA9IGNkYnBbMV0gJiAweDFm
OwogCQluYW1lID0gZ2V0X3NhX25hbWUoc2Vydl9pbjEyX2FyciwgU0VSVl9JTjEyX1NaLCBzYSk7
CiAJCWlmIChuYW1lKQotCQkJcHJpbnRrKCIlcyVzIiwgbGVhZGluLCBuYW1lKTsKKwkJCXByaW50
aygiJXMiLCBuYW1lKTsKIAkJZWxzZQotCQkJcHJpbnRrKCIlc2NkYlswXT0weCV4LCBzYT0weCV4
IiwgbGVhZGluLCBjZGIwLCBzYSk7CisJCQlwcmludGsoImNkYlswXT0weCV4LCBzYT0weCV4Iiwg
Y2RiMCwgc2EpOwogCQlicmVhazsKIAljYXNlIFNFUlZJQ0VfQUNUSU9OX09VVF8xMjoKIAkJc2Eg
PSBjZGJwWzFdICYgMHgxZjsKIAkJbmFtZSA9IGdldF9zYV9uYW1lKHNlcnZfb3V0MTJfYXJyLCBT
RVJWX09VVDEyX1NaLCBzYSk7CiAJCWlmIChuYW1lKQotCQkJcHJpbnRrKCIlcyVzIiwgbGVhZGlu
LCBuYW1lKTsKKwkJCXByaW50aygiJXMiLCBuYW1lKTsKIAkJZWxzZQotCQkJcHJpbnRrKCIlc2Nk
YlswXT0weCV4LCBzYT0weCV4IiwgbGVhZGluLCBjZGIwLCBzYSk7CisJCQlwcmludGsoImNkYlsw
XT0weCV4LCBzYT0weCV4IiwgY2RiMCwgc2EpOwogCQlicmVhazsKIAljYXNlIFNFUlZJQ0VfQUNU
SU9OX0lOXzE2OgogCQlzYSA9IGNkYnBbMV0gJiAweDFmOwogCQluYW1lID0gZ2V0X3NhX25hbWUo
c2Vydl9pbjE2X2FyciwgU0VSVl9JTjE2X1NaLCBzYSk7CiAJCWlmIChuYW1lKQotCQkJcHJpbnRr
KCIlcyVzIiwgbGVhZGluLCBuYW1lKTsKKwkJCXByaW50aygiJXMiLCBuYW1lKTsKIAkJZWxzZQot
CQkJcHJpbnRrKCIlc2NkYlswXT0weCV4LCBzYT0weCV4IiwgbGVhZGluLCBjZGIwLCBzYSk7CisJ
CQlwcmludGsoImNkYlswXT0weCV4LCBzYT0weCV4IiwgY2RiMCwgc2EpOwogCQlicmVhazsKIAlj
YXNlIFNFUlZJQ0VfQUNUSU9OX09VVF8xNjoKIAkJc2EgPSBjZGJwWzFdICYgMHgxZjsKIAkJbmFt
ZSA9IGdldF9zYV9uYW1lKHNlcnZfb3V0MTZfYXJyLCBTRVJWX09VVDE2X1NaLCBzYSk7CiAJCWlm
IChuYW1lKQotCQkJcHJpbnRrKCIlcyVzIiwgbGVhZGluLCBuYW1lKTsKKwkJCXByaW50aygiJXMi
LCBuYW1lKTsKIAkJZWxzZQotCQkJcHJpbnRrKCIlc2NkYlswXT0weCV4LCBzYT0weCV4IiwgbGVh
ZGluLCBjZGIwLCBzYSk7CisJCQlwcmludGsoImNkYlswXT0weCV4LCBzYT0weCV4IiwgY2RiMCwg
c2EpOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlpZiAoY2RiMCA8IDB4YzApIHsKIAkJCW5hbWUg
PSBjZGJfYnl0ZTBfbmFtZXNbY2RiMF07CiAJCQlpZiAobmFtZSkKLQkJCQlwcmludGsoIiVzJXMi
LCBsZWFkaW4sIG5hbWUpOworCQkJCXByaW50aygiJXMiLCBuYW1lKTsKIAkJCWVsc2UKLQkJCQlw
cmludGsoIiVzY2RiWzBdPTB4JXggKHJlc2VydmVkKSIsCi0JCQkJICAgICAgIGxlYWRpbiwgY2Ri
MCk7CisJCQkJcHJpbnRrKCJjZGJbMF09MHgleCAocmVzZXJ2ZWQpIiwgY2RiMCk7CiAJCX0gZWxz
ZQotCQkJcHJpbnRrKCIlc2NkYlswXT0weCV4ICh2ZW5kb3IpIiwgbGVhZGluLCBjZGIwKTsKKwkJ
CXByaW50aygiY2RiWzBdPTB4JXggKHZlbmRvcikiLCBjZGIwKTsKIAkJYnJlYWs7CiAJfQogfQog
CiAjZWxzZSAvKiBpZm5kZWYgQ09ORklHX1NDU0lfQ09OU1RBTlRTICovCiAKLXN0YXRpYyB2b2lk
IHByaW50X29wY29kZV9uYW1lKHVuc2lnbmVkIGNoYXIgKiBjZGJwLCBpbnQgY2RiX2xlbiwKLQkJ
CSAgICAgIGludCBzdGFydF9vZl9saW5lKQorc3RhdGljIHZvaWQgcHJpbnRfb3Bjb2RlX25hbWUo
dW5zaWduZWQgY2hhciAqIGNkYnAsIGludCBjZGJfbGVuKQogewogCWludCBzYSwgbGVuLCBjZGIw
OwotCWNvbnN0IGNoYXIgKiBsZWFkaW4gPSBzdGFydF9vZl9saW5lID8gS0VSTl9JTkZPIDogIiI7
CiAKIAljZGIwID0gY2RicFswXTsKIAlzd2l0Y2goY2RiMCkgewogCWNhc2UgVkFSSUFCTEVfTEVO
R1RIX0NNRDoKIAkJbGVuID0gY2RicFs3XSArIDg7CiAJCWlmIChsZW4gPCAxMCkgewotCQkJcHJp
bnRrKCIlc3Nob3J0IG9wY29kZT0weCV4IGNvbW1hbmQsIGxlbj0lZCAiCi0JCQkgICAgICAgImV4
dF9sZW49JWQiLCBsZWFkaW4sIGNkYjAsIGxlbiwgY2RiX2xlbik7CisJCQlwcmludGsoInNob3J0
IG9wY29kZT0weCV4IGNvbW1hbmQsIGxlbj0lZCAiCisJCQkgICAgICAgImV4dF9sZW49JWQiLCBj
ZGIwLCBsZW4sIGNkYl9sZW4pOwogCQkJYnJlYWs7CiAJCX0KIAkJc2EgPSAoY2RicFs4XSA8PCA4
KSArIGNkYnBbOV07Ci0JCXByaW50aygiJXNjZGJbMF09MHgleCwgc2E9MHgleCIsIGxlYWRpbiwg
Y2RiMCwgc2EpOworCQlwcmludGsoImNkYlswXT0weCV4LCBzYT0weCV4IiwgY2RiMCwgc2EpOwog
CQlpZiAobGVuICE9IGNkYl9sZW4pCiAJCQlwcmludGsoIiwgaW5fY2RiX2xlbj0lZCwgZXh0X2xl
bj0lZCIsIGxlbiwgY2RiX2xlbik7CiAJCWJyZWFrOwpAQCAtMzIzLDQ5ICszMTgsNDggQEAgc3Rh
dGljIHZvaWQgcHJpbnRfb3Bjb2RlX25hbWUodW5zaWduZWQgY2hhciAqIGNkYnAsIGludCBjZGJf
bGVuLAogCWNhc2UgU0VSVklDRV9BQ1RJT05fSU5fMTY6CiAJY2FzZSBTRVJWSUNFX0FDVElPTl9P
VVRfMTY6CiAJCXNhID0gY2RicFsxXSAmIDB4MWY7Ci0JCXByaW50aygiJXNjZGJbMF09MHgleCwg
c2E9MHgleCIsIGxlYWRpbiwgY2RiMCwgc2EpOworCQlwcmludGsoImNkYlswXT0weCV4LCBzYT0w
eCV4IiwgY2RiMCwgc2EpOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlpZiAoY2RiMCA8IDB4YzAp
Ci0JCQlwcmludGsoIiVzY2RiWzBdPTB4JXgiLCBsZWFkaW4sIGNkYjApOworCQkJcHJpbnRrKCJj
ZGJbMF09MHgleCIsIGNkYjApOwogCQllbHNlCi0JCQlwcmludGsoIiVzY2RiWzBdPTB4JXggKHZl
bmRvcikiLCBsZWFkaW4sIGNkYjApOworCQkJcHJpbnRrKCJjZGJbMF09MHgleCAodmVuZG9yKSIs
IGNkYjApOwogCQlicmVhazsKIAl9CiB9CiAjZW5kaWYgIAogCi12b2lkIF9fc2NzaV9wcmludF9j
b21tYW5kKHVuc2lnbmVkIGNoYXIgKmNvbW1hbmQpCit2b2lkIF9fc2NzaV9wcmludF9jb21tYW5k
KHVuc2lnbmVkIGNoYXIgKmNkYikKIHsKIAlpbnQgaywgbGVuOwogCi0JcHJpbnRfb3Bjb2RlX25h
bWUoY29tbWFuZCwgMCwgMSk7Ci0JaWYgKFZBUklBQkxFX0xFTkdUSF9DTUQgPT0gY29tbWFuZFsw
XSkKLQkJbGVuID0gY29tbWFuZFs3XSArIDg7CisJcHJpbnRfb3Bjb2RlX25hbWUoY2RiLCAwKTsK
KwlpZiAoVkFSSUFCTEVfTEVOR1RIX0NNRCA9PSBjZGJbMF0pCisJCWxlbiA9IGNkYls3XSArIDg7
CiAJZWxzZQotCQlsZW4gPSBDT01NQU5EX1NJWkUoY29tbWFuZFswXSk7CisJCWxlbiA9IENPTU1B
TkRfU0laRShjZGJbMF0pOwogCS8qIHByaW50IG91dCBhbGwgYnl0ZXMgaW4gY2RiICovCiAJZm9y
IChrID0gMDsgayA8IGxlbjsgKytrKSAKLQkJcHJpbnRrKCIgJTAyeCIsIGNvbW1hbmRba10pOwor
CQlwcmludGsoIiAlMDJ4IiwgY2RiW2tdKTsKIAlwcmludGsoIlxuIik7CiB9CiBFWFBPUlRfU1lN
Qk9MKF9fc2NzaV9wcmludF9jb21tYW5kKTsKIAotLyogVGhpcyBmdW5jdGlvbiAocGVyaGFwcyB3
aXRoIHRoZSBhZGRpdGlvbiBvZiBwZXJpcGhlcmFsIGRldmljZSB0eXBlKQotICogaXMgbW9yZSBh
cHByb3JpYXRlIHRoYW4gX19zY3NpX3ByaW50X2NvbW1hbmQoKS4gUGVyaGFwcyB0aGF0IHN0YXRp
YwotICogY2FuIGJlIGRyb3BwZWQgbGF0ZXIgaWYgaXQgcmVwbGFjZXMgdGhlIF9fc2NzaV9wcmlu
dF9jb21tYW5kIHZlcnNpb24uCi0gKi8KLXN0YXRpYyB2b2lkIHNjc2lfcHJpbnRfY2RiKHVuc2ln
bmVkIGNoYXIgKmNkYiwgaW50IGNkYl9sZW4sIGludCBzdGFydF9vZl9saW5lKQordm9pZCBzY3Np
X3ByaW50X2NvbW1hbmQoc3RydWN0IHNjc2lfY21uZCAqY21kKQogewogCWludCBrOwogCi0JcHJp
bnRfb3Bjb2RlX25hbWUoY2RiLCBjZGJfbGVuLCBzdGFydF9vZl9saW5lKTsKKwlzY21kX3ByaW50
ayhLRVJOX0lORk8sIGNtZCwgIkNEQjogIik7CisJcHJpbnRfb3Bjb2RlX25hbWUoY21kLT5jbW5k
LCBjbWQtPmNtZF9sZW4pOworCiAJLyogcHJpbnQgb3V0IGFsbCBieXRlcyBpbiBjZGIgKi8KIAlw
cmludGsoIjoiKTsKLQlmb3IgKGsgPSAwOyBrIDwgY2RiX2xlbjsgKytrKSAKLQkJcHJpbnRrKCIg
JTAyeCIsIGNkYltrXSk7CisJZm9yIChrID0gMDsgayA8IGNtZC0+Y21kX2xlbjsgKytrKQorCQlw
cmludGsoIiAlMDJ4IiwgY21kLT5jbW5kW2tdKTsKIAlwcmludGsoIlxuIik7CiB9CitFWFBPUlRf
U1lNQk9MKHNjc2lfcHJpbnRfY29tbWFuZCk7CiAKIC8qKgogICoKQEAgLTExNzYsNjcgKzExNzAs
NzcgQEAgc2NzaV9leHRkX3NlbnNlX2Zvcm1hdCh1bnNpZ25lZCBjaGFyIGFzYywgdW5zaWduZWQg
Y2hhciBhc2NxKSB7CiB9CiBFWFBPUlRfU1lNQk9MKHNjc2lfZXh0ZF9zZW5zZV9mb3JtYXQpOwog
Ci0vKiBQcmludCBleHRlbmRlZCBzZW5zZSBpbmZvcm1hdGlvbjsgbm8gbGVhZGluLCBubyBsaW5l
ZmVlZCAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIHNjc2lfc2hvd19leHRkX3NlbnNlKHVuc2lnbmVk
IGNoYXIgYXNjLCB1bnNpZ25lZCBjaGFyIGFzY3EpCiB7Ci0JY29uc3QgY2hhciAqZXh0ZF9zZW5z
ZV9mbXQgPSBzY3NpX2V4dGRfc2Vuc2VfZm9ybWF0KGFzYywgYXNjcSk7CisgICAgICAgIGNvbnN0
IGNoYXIgKmV4dGRfc2Vuc2VfZm10ID0gc2NzaV9leHRkX3NlbnNlX2Zvcm1hdChhc2MsIGFzY3Ep
OwogCiAJaWYgKGV4dGRfc2Vuc2VfZm10KSB7CiAJCWlmIChzdHJzdHIoZXh0ZF9zZW5zZV9mbXQs
ICIleCIpKSB7Ci0JCQlwcmludGsoIkFkZGl0aW9uYWwgc2Vuc2U6ICIpOworCQkJcHJpbnRrKCJB
ZGQuIFNlbnNlOiAiKTsKIAkJCXByaW50ayhleHRkX3NlbnNlX2ZtdCwgYXNjcSk7CiAJCX0gZWxz
ZQotCQkJcHJpbnRrKCJBZGRpdGlvbmFsIHNlbnNlOiAlcyIsIGV4dGRfc2Vuc2VfZm10KTsKKwkJ
CXByaW50aygiQWRkLiBTZW5zZTogJXMiLCBleHRkX3NlbnNlX2ZtdCk7CiAJfSBlbHNlIHsKIAkJ
aWYgKGFzYyA+PSAweDgwKQotCQkJcHJpbnRrKCI8PHZlbmRvcj4+IEFTQz0weCV4IEFTQ1E9MHgl
eCIsIGFzYywgYXNjcSk7CisJCQlwcmludGsoIjw8dmVuZG9yPj4gQVNDPTB4JXggQVNDUT0weCV4
IiwgYXNjLAorCQkJICAgICAgIGFzY3EpOwogCQlpZiAoYXNjcSA+PSAweDgwKQotCQkJcHJpbnRr
KCJBU0M9MHgleCA8PHZlbmRvcj4+IEFTQ1E9MHgleCIsIGFzYywgYXNjcSk7CisJCQlwcmludGso
IkFTQz0weCV4IDw8dmVuZG9yPj4gQVNDUT0weCV4IiwgYXNjLAorCQkJICAgICAgIGFzY3EpOwog
CQllbHNlCiAJCQlwcmludGsoIkFTQz0weCV4IEFTQ1E9MHgleCIsIGFzYywgYXNjcSk7CiAJfQor
CisJcHJpbnRrKCJcbiIpOwogfQorRVhQT1JUX1NZTUJPTChzY3NpX3Nob3dfZXh0ZF9zZW5zZSk7
CiAKIHZvaWQKLXNjc2lfcHJpbnRfc2Vuc2VfaGRyKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBz
Y3NpX3NlbnNlX2hkciAqc3NoZHIpCitzY3NpX3Nob3dfc2Vuc2VfaGRyKHN0cnVjdCBzY3NpX3Nl
bnNlX2hkciAqc3NoZHIpCiB7CiAJY29uc3QgY2hhciAqc2Vuc2VfdHh0OwotCS8qIEFuIGV4YW1w
bGUgb2YgZGVmZXJyZWQgaXMgd2hlbiBhbiBlYXJsaWVyIHdyaXRlIHRvIGRpc2sgY2FjaGUKLQkg
KiBzdWNjZWVkZWQsIGJ1dCBub3cgdGhlIGRpc2sgZGlzY292ZXJzIHRoYXQgaXQgY2Fubm90IHdy
aXRlIHRoZQotCSAqIGRhdGEgdG8gdGhlIG1hZ25ldGljIG1lZGlhLgotCSAqLwotCWNvbnN0IGNo
YXIgKmVycm9yID0gc2NzaV9zZW5zZV9pc19kZWZlcnJlZChzc2hkcikgPyAKLQkJIjw8REVGRVJS
RUQ+PiIgOiAiQ3VycmVudCI7Ci0JcHJpbnRrKEtFUk5fSU5GTyAiJXM6ICVzIiwgbmFtZSwgZXJy
b3IpOwotCWlmIChzc2hkci0+cmVzcG9uc2VfY29kZSA+PSAweDcyKQotCQlwcmludGsoIiBbZGVz
Y3JpcHRvcl0iKTsKIAogCXNlbnNlX3R4dCA9IHNjc2lfc2Vuc2Vfa2V5X3N0cmluZyhzc2hkci0+
c2Vuc2Vfa2V5KTsKIAlpZiAoc2Vuc2VfdHh0KQotCQlwcmludGsoIjogc2Vuc2Uga2V5OiAlc1xu
Iiwgc2Vuc2VfdHh0KTsKKwkJcHJpbnRrKCJTZW5zZSBLZXkgOiAlcyAiLCBzZW5zZV90eHQpOwog
CWVsc2UKLQkJcHJpbnRrKCI6IHNlbnNlIGtleT0weCV4XG4iLCBzc2hkci0+c2Vuc2Vfa2V5KTsK
LQlwcmludGsoS0VSTl9JTkZPICIgICAgIik7Ci0Jc2NzaV9zaG93X2V4dGRfc2Vuc2Uoc3NoZHIt
PmFzYywgc3NoZHItPmFzY3EpOworCQlwcmludGsoIlNlbnNlIEtleSA6IDB4JXggIiwgc3NoZHIt
PnNlbnNlX2tleSk7CisKKwlwcmludGsoIiVzIiwgc2NzaV9zZW5zZV9pc19kZWZlcnJlZChzc2hk
cikgPyAiW2RlZmVycmVkXSAiIDoKKwkgICAgICAgIltjdXJyZW50XSAiKTsKKworCWlmIChzc2hk
ci0+cmVzcG9uc2VfY29kZSA+PSAweDcyKQorCQlwcmludGsoIltkZXNjcmlwdG9yXSIpOworCiAJ
cHJpbnRrKCJcbiIpOwogfQorRVhQT1JUX1NZTUJPTChzY3NpX3Nob3dfc2Vuc2VfaGRyKTsKKwor
LyoKKyAqIFByaW50IG5vcm1hbGl6ZWQgU0NTSSBzZW5zZSBoZWFkZXIgd2l0aCBhIHByZWZpeC4K
KyAqLwordm9pZAorc2NzaV9wcmludF9zZW5zZV9oZHIoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0
IHNjc2lfc2Vuc2VfaGRyICpzc2hkcikKK3sKKwlwcmludGsoS0VSTl9JTkZPICIlczogIiwgbmFt
ZSk7CisJc2NzaV9zaG93X3NlbnNlX2hkcihzc2hkcik7CisJcHJpbnRrKEtFUk5fSU5GTyAiJXM6
ICIsIG5hbWUpOworCXNjc2lfc2hvd19leHRkX3NlbnNlKHNzaGRyLT5hc2MsIHNzaGRyLT5hc2Nx
KTsKK30KIEVYUE9SVF9TWU1CT0woc2NzaV9wcmludF9zZW5zZV9oZHIpOwogCi0vKiBQcmludCBz
ZW5zZSBpbmZvcm1hdGlvbiAqLwogdm9pZAotX19zY3NpX3ByaW50X3NlbnNlKGNvbnN0IGNoYXIg
Km5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlbnNlX2J1ZmZlciwKLQkJICAgaW50IHNlbnNl
X2xlbikKK3Njc2lfZGVjb2RlX3NlbnNlX2J1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyICpzZW5z
ZV9idWZmZXIsIGludCBzZW5zZV9sZW4sCisJCSAgICAgICBzdHJ1Y3Qgc2NzaV9zZW5zZV9oZHIg
KnNzaGRyKQogewogCWludCBrLCBudW0sIHJlczsKLQl1bnNpZ25lZCBpbnQgaW5mbzsKLQlzdHJ1
Y3Qgc2NzaV9zZW5zZV9oZHIgc3NoOwogICAgIAotCXJlcyA9IHNjc2lfbm9ybWFsaXplX3NlbnNl
KHNlbnNlX2J1ZmZlciwgc2Vuc2VfbGVuLCAmc3NoKTsKKwlyZXMgPSBzY3NpX25vcm1hbGl6ZV9z
ZW5zZShzZW5zZV9idWZmZXIsIHNlbnNlX2xlbiwgc3NoZHIpOwogCWlmICgwID09IHJlcykgewog
CQkvKiB0aGlzIG1heSBiZSBTQ1NJLTEgc2Vuc2UgZGF0YSAqLwogCQludW0gPSAoc2Vuc2VfbGVu
IDwgMzIpID8gc2Vuc2VfbGVuIDogMzI7Ci0JCXByaW50ayhLRVJOX0lORk8gIlVucmVjb2duaXpl
ZCBzZW5zZSBkYXRhIChpbiBoZXgpOiIpOworCQlwcmludGsoIlVucmVjb2duaXplZCBzZW5zZSBk
YXRhIChpbiBoZXgpOiIpOwogCQlmb3IgKGsgPSAwOyBrIDwgbnVtOyArK2spIHsKIAkJCWlmICgw
ID09IChrICUgMTYpKSB7CiAJCQkJcHJpbnRrKCJcbiIpOwpAQCAtMTI0NywxMSArMTI1MSwyMCBA
QCBfX3Njc2lfcHJpbnRfc2Vuc2UoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgdW5zaWduZWQgY2hh
ciAqc2Vuc2VfYnVmZmVyLAogCQlwcmludGsoIlxuIik7CiAJCXJldHVybjsKIAl9Ci0Jc2NzaV9w
cmludF9zZW5zZV9oZHIobmFtZSwgJnNzaCk7Ci0JaWYgKHNzaC5yZXNwb25zZV9jb2RlIDwgMHg3
MikgeworfQorCit2b2lkCitzY3NpX2RlY29kZV9zZW5zZV9leHRyYXMoY29uc3QgdW5zaWduZWQg
Y2hhciAqc2Vuc2VfYnVmZmVyLCBpbnQgc2Vuc2VfbGVuLAorCQkJIHN0cnVjdCBzY3NpX3NlbnNl
X2hkciAqc3NoZHIpCit7CisJaW50IGssIG51bSwgcmVzOworCisJaWYgKHNzaGRyLT5yZXNwb25z
ZV9jb2RlIDwgMHg3MikKKwl7CiAJCS8qIG9ubHkgZGVjb2RlIGV4dHJhcyBmb3IgImZpeGVkIiBm
b3JtYXQgbm93ICovCiAJCWNoYXIgYnVmZls4MF07CiAJCWludCBibGVuLCBmaXhlZF92YWxpZDsK
KwkJdW5zaWduZWQgaW50IGluZm87CiAKIAkJZml4ZWRfdmFsaWQgPSBzZW5zZV9idWZmZXJbMF0g
JiAweDgwOwogCQlpbmZvID0gKChzZW5zZV9idWZmZXJbM10gPDwgMjQpIHwgKHNlbnNlX2J1ZmZl
cls0XSA8PCAxNikgfApAQCAtMTI4MSwxMyArMTI5NCwxMyBAQCBfX3Njc2lfcHJpbnRfc2Vuc2Uo
Y29uc3QgY2hhciAqbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2Vuc2VfYnVmZmVyLAogCQkJ
cmVzICs9IHNucHJpbnRmKGJ1ZmYgKyByZXMsIGJsZW4gLSByZXMsICJJTEkiKTsKIAkJfQogCQlp
ZiAocmVzID4gMCkKLQkJCXByaW50ayhLRVJOX0lORk8gIiVzXG4iLCBidWZmKTsKLQl9IGVsc2Ug
aWYgKHNzaC5hZGRpdGlvbmFsX2xlbmd0aCA+IDApIHsKKwkJCXByaW50aygiJXNcbiIsIGJ1ZmYp
OworCX0gZWxzZSBpZiAoc3NoZHItPmFkZGl0aW9uYWxfbGVuZ3RoID4gMCkgewogCQkvKiBkZXNj
cmlwdG9yIGZvcm1hdCB3aXRoIHNlbnNlIGRlc2NyaXB0b3JzICovCi0JCW51bSA9IDggKyBzc2gu
YWRkaXRpb25hbF9sZW5ndGg7CisJCW51bSA9IDggKyBzc2hkci0+YWRkaXRpb25hbF9sZW5ndGg7
CiAJCW51bSA9IChzZW5zZV9sZW4gPCBudW0pID8gc2Vuc2VfbGVuIDogbnVtOwotCQlwcmludGso
S0VSTl9JTkZPICJEZXNjcmlwdG9yIHNlbnNlIGRhdGEgd2l0aCBzZW5zZSAiCi0JCSAgICAgICAi
ZGVzY3JpcHRvcnMgKGluIGhleCk6Iik7CisJCXByaW50aygiRGVzY3JpcHRvciBzZW5zZSBkYXRh
IHdpdGggc2Vuc2UgZGVzY3JpcHRvcnMgIgorCQkgICAgICAgIihpbiBoZXgpOiIpOwogCQlmb3Ig
KGsgPSAwOyBrIDwgbnVtOyArK2spIHsKIAkJCWlmICgwID09IChrICUgMTYpKSB7CiAJCQkJcHJp
bnRrKCJcbiIpOwpAQCAtMTI5NSwyOSArMTMwOCw0MiBAQCBfX3Njc2lfcHJpbnRfc2Vuc2UoY29u
c3QgY2hhciAqbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2Vuc2VfYnVmZmVyLAogCQkJfQog
CQkJcHJpbnRrKCIlMDJ4ICIsIHNlbnNlX2J1ZmZlcltrXSk7CiAJCX0KKwogCQlwcmludGsoIlxu
Iik7CiAJfQorCiB9Ci1FWFBPUlRfU1lNQk9MKF9fc2NzaV9wcmludF9zZW5zZSk7CiAKLXZvaWQg
c2NzaV9wcmludF9zZW5zZShjb25zdCBjaGFyICpkZXZjbGFzcywgc3RydWN0IHNjc2lfY21uZCAq
Y21kKQorLyogTm9ybWFsaXplIGFuZCBwcmludCBzZW5zZSBidWZmZXIgd2l0aCBuYW1lIHByZWZp
eCAqLwordm9pZCBfX3Njc2lfcHJpbnRfc2Vuc2UoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgdW5z
aWduZWQgY2hhciAqc2Vuc2VfYnVmZmVyLAorCQkJaW50IHNlbnNlX2xlbikKIHsKLQljb25zdCBj
aGFyICpuYW1lID0gZGV2Y2xhc3M7Ci0KLQlpZiAoY21kLT5yZXF1ZXN0LT5ycV9kaXNrKQotCQlu
YW1lID0gY21kLT5yZXF1ZXN0LT5ycV9kaXNrLT5kaXNrX25hbWU7Ci0JX19zY3NpX3ByaW50X3Nl
bnNlKG5hbWUsIGNtZC0+c2Vuc2VfYnVmZmVyLCBTQ1NJX1NFTlNFX0JVRkZFUlNJWkUpOworCXN0
cnVjdCBzY3NpX3NlbnNlX2hkciBzc2hkcjsKKworCXByaW50ayhLRVJOX0lORk8gIiVzOiAiLCBu
YW1lKTsKKwlzY3NpX2RlY29kZV9zZW5zZV9idWZmZXIoc2Vuc2VfYnVmZmVyLCBzZW5zZV9sZW4s
ICZzc2hkcik7CisJc2NzaV9zaG93X3NlbnNlX2hkcigmc3NoZHIpOworCXNjc2lfZGVjb2RlX3Nl
bnNlX2V4dHJhcyhzZW5zZV9idWZmZXIsIHNlbnNlX2xlbiwgJnNzaGRyKTsKKwlwcmludGsoS0VS
Tl9JTkZPICIlczogIiwgbmFtZSk7CisJc2NzaV9zaG93X2V4dGRfc2Vuc2Uoc3NoZHIuYXNjLCBz
c2hkci5hc2NxKTsKIH0KLUVYUE9SVF9TWU1CT0woc2NzaV9wcmludF9zZW5zZSk7CitFWFBPUlRf
U1lNQk9MKF9fc2NzaV9wcmludF9zZW5zZSk7CiAKLXZvaWQgc2NzaV9wcmludF9jb21tYW5kKHN0
cnVjdCBzY3NpX2NtbmQgKmNtZCkKKy8qIE5vcm1hbGl6ZSBhbmQgcHJpbnQgc2Vuc2UgYnVmZmVy
IGluIFNDU0kgY29tbWFuZCAqLwordm9pZCBzY3NpX3ByaW50X3NlbnNlKGNoYXIgKm5hbWUsIHN0
cnVjdCBzY3NpX2NtbmQgKmNtZCkKIHsKLQkvKiBBc3N1bWUgYXBwZW5kZWQgb3V0cHV0IChpLmUu
IG5vdCBhdCBzdGFydCBvZiBsaW5lKSAqLwotCXNkZXZfcHJpbnRrKCIiLCBjbWQtPmRldmljZSwg
IlxuIik7Ci0JcHJpbnRrKEtFUk5fSU5GTyAiICAgICAgICBjb21tYW5kOiAiKTsKLQlzY3NpX3By
aW50X2NkYihjbWQtPmNtbmQsIGNtZC0+Y21kX2xlbiwgMCk7CisJc3RydWN0IHNjc2lfc2Vuc2Vf
aGRyIHNzaGRyOworCisJc2NtZF9wcmludGsoS0VSTl9JTkZPLCBjbWQsICIiKTsKKwlzY3NpX2Rl
Y29kZV9zZW5zZV9idWZmZXIoY21kLT5zZW5zZV9idWZmZXIsIFNDU0lfU0VOU0VfQlVGRkVSU0la
RSwKKwkJCQkgJnNzaGRyKTsKKwlzY3NpX3Nob3dfc2Vuc2VfaGRyKCZzc2hkcik7CisJc2NzaV9k
ZWNvZGVfc2Vuc2VfZXh0cmFzKGNtZC0+c2Vuc2VfYnVmZmVyLCBTQ1NJX1NFTlNFX0JVRkZFUlNJ
WkUsCisJCQkJICZzc2hkcik7CisJc2NtZF9wcmludGsoS0VSTl9JTkZPLCBjbWQsICIiKTsKKwlz
Y3NpX3Nob3dfZXh0ZF9zZW5zZShzc2hkci5hc2MsIHNzaGRyLmFzY3EpOwogfQotRVhQT1JUX1NZ
TUJPTChzY3NpX3ByaW50X2NvbW1hbmQpOworRVhQT1JUX1NZTUJPTChzY3NpX3ByaW50X3NlbnNl
KTsKIAogI2lmZGVmIENPTkZJR19TQ1NJX0NPTlNUQU5UUwogCkBAIC0xMzI3LDI1ICsxMzUzLDYg
QEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBob3N0Ynl0ZV90YWJsZVtdPXsKICJESURfUEFT
U1RIUk9VR0giLCAiRElEX1NPRlRfRVJST1IiLCAiRElEX0lNTV9SRVRSWSJ9OwogI2RlZmluZSBO
VU1fSE9TVEJZVEVfU1RSUyBBUlJBWV9TSVpFKGhvc3RieXRlX3RhYmxlKQogCi12b2lkIHNjc2lf
cHJpbnRfaG9zdGJ5dGUoaW50IHNjc2lyZXN1bHQpCi17Ci0JaW50IGhiID0gaG9zdF9ieXRlKHNj
c2lyZXN1bHQpOwotCi0JcHJpbnRrKCJIb3N0Ynl0ZT0weCUwMngiLCBoYik7Ci0JaWYgKGhiIDwg
TlVNX0hPU1RCWVRFX1NUUlMpCi0JCXByaW50aygiKCVzKSAiLCBob3N0Ynl0ZV90YWJsZVtoYl0p
OwotCWVsc2UKLQkJcHJpbnRrKCJpcyBpbnZhbGlkICIpOwotfQotI2Vsc2UKLXZvaWQgc2NzaV9w
cmludF9ob3N0Ynl0ZShpbnQgc2NzaXJlc3VsdCkKLXsKLQlwcmludGsoIkhvc3RieXRlPTB4JTAy
eCAiLCBob3N0X2J5dGUoc2NzaXJlc3VsdCkpOwotfQotI2VuZGlmCi0KLSNpZmRlZiBDT05GSUdf
U0NTSV9DT05TVEFOVFMKLQogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBkcml2ZXJieXRlX3Rh
YmxlW109ewogIkRSSVZFUl9PSyIsICJEUklWRVJfQlVTWSIsICJEUklWRVJfU09GVCIsICAiRFJJ
VkVSX01FRElBIiwgIkRSSVZFUl9FUlJPUiIsCiAiRFJJVkVSX0lOVkFMSUQiLCAiRFJJVkVSX1RJ
TUVPVVQiLCAiRFJJVkVSX0hBUkQiLCAiRFJJVkVSX1NFTlNFIn07CkBAIC0xMzU2LDE5ICsxMzYz
LDM1IEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZHJpdmVyc3VnZ2VzdF90YWJsZVtdPXsi
U1VHR0VTVF9PSyIsCiAiU1VHR0VTVF81IiwgIlNVR0dFU1RfNiIsICJTVUdHRVNUXzciLCAiU1VH
R0VTVF9TRU5TRSJ9OwogI2RlZmluZSBOVU1fU1VHR0VTVF9TVFJTIEFSUkFZX1NJWkUoZHJpdmVy
c3VnZ2VzdF90YWJsZSkKIAotdm9pZCBzY3NpX3ByaW50X2RyaXZlcmJ5dGUoaW50IHNjc2lyZXN1
bHQpCit2b2lkIHNjc2lfc2hvd19yZXN1bHQoaW50IHJlc3VsdCkKIHsKLQlpbnQgZHIgPSAoZHJp
dmVyX2J5dGUoc2NzaXJlc3VsdCkgJiBEUklWRVJfTUFTSyk7Ci0JaW50IHN1ID0gKChkcml2ZXJf
Ynl0ZShzY3NpcmVzdWx0KSAmIFNVR0dFU1RfTUFTSykgPj4gNCk7CisJaW50IGhiID0gaG9zdF9i
eXRlKHJlc3VsdCk7CisJaW50IGRiID0gKGRyaXZlcl9ieXRlKHJlc3VsdCkgJiBEUklWRVJfTUFT
Syk7CisJaW50IHN1ID0gKChkcml2ZXJfYnl0ZShyZXN1bHQpICYgU1VHR0VTVF9NQVNLKSA+PiA0
KTsKIAotCXByaW50aygiRHJpdmVyYnl0ZT0weCUwMnggIiwgZHJpdmVyX2J5dGUoc2NzaXJlc3Vs
dCkpOwotCXByaW50aygiKCVzLCVzKSAiLAotCSAgICAgICAoZHIgPCBOVU1fRFJJVkVSQllURV9T
VFJTID8gZHJpdmVyYnl0ZV90YWJsZVtkcl0gOiAiaW52YWxpZCIpLAorCXByaW50aygiUmVzdWx0
OiBob3N0Ynl0ZT0lcyBkcml2ZXJieXRlPSVzLCVzXG4iLAorCSAgICAgICAoaGIgPCBOVU1fSE9T
VEJZVEVfU1RSUyA/IGhvc3RieXRlX3RhYmxlW2hiXSAgICAgOiAiaW52YWxpZCIpLAorCSAgICAg
ICAoZGIgPCBOVU1fRFJJVkVSQllURV9TVFJTID8gZHJpdmVyYnl0ZV90YWJsZVtkYl0gOiAiaW52
YWxpZCIpLAogCSAgICAgICAoc3UgPCBOVU1fU1VHR0VTVF9TVFJTID8gZHJpdmVyc3VnZ2VzdF90
YWJsZVtzdV0gOiAiaW52YWxpZCIpKTsKIH0KKwogI2Vsc2UKLXZvaWQgc2NzaV9wcmludF9kcml2
ZXJieXRlKGludCBzY3NpcmVzdWx0KQorCit2b2lkIHNjc2lfc2hvd19yZXN1bHQoaW50IHJlc3Vs
dCkKIHsKLQlwcmludGsoIkRyaXZlcmJ5dGU9MHglMDJ4ICIsIGRyaXZlcl9ieXRlKHNjc2lyZXN1
bHQpKTsKKwlwcmludGsoIlJlc3VsdDogaG9zdGJ5dGU9MHglMDJ4IGRyaXZlcmJ5dGU9MHglMDJ4
XG4iLAorCSAgICAgICBob3N0X2J5dGUocmVzdWx0KSwgZHJpdmVyX2J5dGUocmVzdWx0KSk7CiB9
CisKICNlbmRpZgorRVhQT1JUX1NZTUJPTChzY3NpX3Nob3dfcmVzdWx0KTsKKworCit2b2lkIHNj
c2lfcHJpbnRfcmVzdWx0KHN0cnVjdCBzY3NpX2NtbmQgKmNtZCkKK3sKKwlzY21kX3ByaW50ayhL
RVJOX0lORk8sIGNtZCwgIiIpOworCXNjc2lfc2hvd19yZXN1bHQoY21kLT5yZXN1bHQpOworfQor
RVhQT1JUX1NZTUJPTChzY3NpX3ByaW50X3Jlc3VsdCk7CisKKwpkaWZmIC0tZ2l0IGEvaW5jbHVk
ZS9zY3NpL3Njc2lfZGJnLmggYi9pbmNsdWRlL3Njc2kvc2NzaV9kYmcuaAppbmRleCAzYmJiZmJl
Li41YTQzYTRjIDEwMDY0NAotLS0gYS9pbmNsdWRlL3Njc2kvc2NzaV9kYmcuaAorKysgYi9pbmNs
dWRlL3Njc2kvc2NzaV9kYmcuaApAQCAtNSwxNCArNSwxNiBAQCBzdHJ1Y3Qgc2NzaV9jbW5kOwog
c3RydWN0IHNjc2lfc2Vuc2VfaGRyOwogCiBleHRlcm4gdm9pZCBzY3NpX3ByaW50X2NvbW1hbmQo
c3RydWN0IHNjc2lfY21uZCAqKTsKLWV4dGVybiB2b2lkIHNjc2lfcHJpbnRfc2Vuc2VfaGRyKGNv
bnN0IGNoYXIgKiwgc3RydWN0IHNjc2lfc2Vuc2VfaGRyICopOwogZXh0ZXJuIHZvaWQgX19zY3Np
X3ByaW50X2NvbW1hbmQodW5zaWduZWQgY2hhciAqKTsKLWV4dGVybiB2b2lkIHNjc2lfcHJpbnRf
c2Vuc2UoY29uc3QgY2hhciAqLCBzdHJ1Y3Qgc2NzaV9jbW5kICopOworZXh0ZXJuIHZvaWQgc2Nz
aV9zaG93X2V4dGRfc2Vuc2UodW5zaWduZWQgY2hhciwgdW5zaWduZWQgY2hhcik7CitleHRlcm4g
dm9pZCBzY3NpX3Nob3dfc2Vuc2VfaGRyKHN0cnVjdCBzY3NpX3NlbnNlX2hkciAqKTsKK2V4dGVy
biB2b2lkIHNjc2lfcHJpbnRfc2Vuc2VfaGRyKGNvbnN0IGNoYXIgKiwgc3RydWN0IHNjc2lfc2Vu
c2VfaGRyICopOworZXh0ZXJuIHZvaWQgc2NzaV9wcmludF9zZW5zZShjaGFyICosIHN0cnVjdCBz
Y3NpX2NtbmQgKik7CiBleHRlcm4gdm9pZCBfX3Njc2lfcHJpbnRfc2Vuc2UoY29uc3QgY2hhciAq
bmFtZSwKIAkJCSAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzZW5zZV9idWZmZXIsCiAJCQkg
ICAgICAgaW50IHNlbnNlX2xlbik7Ci1leHRlcm4gdm9pZCBzY3NpX3ByaW50X2RyaXZlcmJ5dGUo
aW50KTsKLWV4dGVybiB2b2lkIHNjc2lfcHJpbnRfaG9zdGJ5dGUoaW50KTsKK2V4dGVybiB2b2lk
IHNjc2lfc2hvd19yZXN1bHQoaW50KTsKK2V4dGVybiB2b2lkIHNjc2lfcHJpbnRfcmVzdWx0KHN0
cnVjdCBzY3NpX2NtbmQgKik7CiBleHRlcm4gdm9pZCBzY3NpX3ByaW50X3N0YXR1cyh1bnNpZ25l
ZCBjaGFyKTsKIGV4dGVybiBjb25zdCBjaGFyICpzY3NpX3NlbnNlX2tleV9zdHJpbmcodW5zaWdu
ZWQgY2hhcik7CiBleHRlcm4gY29uc3QgY2hhciAqc2NzaV9leHRkX3NlbnNlX2Zvcm1hdCh1bnNp
Z25lZCBjaGFyLCB1bnNpZ25lZCBjaGFyKTsKRnJvbTogTWFydGluIEsuIFBldGVyc2VuIDxtYXJ0
aW4ucGV0ZXJzZW5Ab3JhY2xlLmNvbT4KRGF0ZTogV2VkLCAyOCBGZWIgMjAwNyAwMzo0MDo1NSAr
MDAwMCAoLTA1MDApClN1YmplY3Q6IFtTQ1NJXSBzZDogbWFrZSBwcmludGluZyB1c2UgYSBjb21t
b24gcHJlZml4ClgtR2l0LVVybDogaHR0cDovL2dpdC5rZXJuZWwub3JnLz9wPWxpbnV4JTJGa2Vy
bmVsJTJGZ2l0JTJGdG9ydmFsZHMlMkZsaW51eC0yLjYuZ2l0O2E9Y29tbWl0ZGlmZl9wbGFpbjto
PWU3M2FlYzgyNDcwMzJlZTczMGI1ZjM4ZWRmNDg5MjJjNGY3MjUyMmU7aHA9YTRkMDRhNGNkOTg4
MWU4OWZkYzYyMTA3YjZiNTcwNTM0MzhmMmIzMAoKW1NDU0ldIHNkOiBtYWtlIHByaW50aW5nIHVz
ZSBhIGNvbW1vbiBwcmVmaXgKCk1ha2UgU0NTSSBkaXNrIHByaW50aW5nIG1vcmUgY29uc2lzdGVu
dDoKCiAtIERlZmluZSBzZF9wcmludGsoKSwgc2RfcHJpbnRfc2Vuc2VfaGRyKCkgYW5kIHNkX3By
aW50X3Jlc3VsdCgpCgogLSBNb3ZlIHJlbGV2YW50IGhlYWRlciBiaXRzIGludG8gc2QuaAoKIC0g
UmVtb3ZlIGFsbCB0aGUgbGVnYWN5IGRpc2tfbmFtZSBwYXNzaW5nIGFuZCB1c2Ugc2NzaV9kaXNr
IHBvaW50ZXJzCiAgIHdoZXJlIHBvc3NpYmxlCgogLSBTd2l0Y2ggcHJpbnRrKCkgbGluZXMgdG8g
dGhlIG5ldyBzZF8gZnVuY3Rpb25zIHNvIHRoYXQgb3V0cHV0IGlzCiAgIGNvbnNpc3RlbnQKClNp
Z25lZC1vZmYtYnk6IE1hcnRpbiBLLiBQZXRlcnNlbiA8bWFydGluLnBldGVyc2VuQG9yYWNsZS5j
b20+ClNpZ25lZC1vZmYtYnk6IEphbWVzIEJvdHRvbWxleSA8SmFtZXMuQm90dG9tbGV5QFN0ZWVs
RXllLmNvbT4KLS0tCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NkLmMgYi9kcml2ZXJzL3Nj
c2kvc2QuYwppbmRleCA1YThmNTVmLi5iNTU2MmI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kv
c2QuYworKysgYi9kcml2ZXJzL3Njc2kvc2QuYwpAQCAtNTgsMTYgKzU4LDEwIEBACiAjaW5jbHVk
ZSA8c2NzaS9zY3NpX2hvc3QuaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfaW9jdGwuaD4KICNpbmNs
dWRlIDxzY3NpL3Njc2ljYW0uaD4KKyNpbmNsdWRlIDxzY3NpL3NkLmg+CiAKICNpbmNsdWRlICJz
Y3NpX2xvZ2dpbmcuaCIKIAotLyoKLSAqIE1vcmUgdGhhbiBlbm91Z2ggZm9yIGV2ZXJ5Ym9keSA7
KSAgVGhlIGh1Z2UgbnVtYmVyIG9mIG1ham9ycwotICogaXMgYSBsZWZ0b3ZlciBmcm9tIDE2Yml0
IGRldl90IGRheXMsIHdlIGRvbid0IHJlYWxseSBuZWVkIHRoYXQKLSAqIG11Y2ggbnVtYmVyc3Bh
Y2UuCi0gKi8KLSNkZWZpbmUgU0RfTUFKT1JTCTE2Ci0KIE1PRFVMRV9BVVRIT1IoIkVyaWMgWW91
bmdkYWxlIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlNDU0kgZGlzayAoc2QpIGRyaXZlciIpOwog
TU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpAQCAtODksNDUgKzgzLDYgQEAgTU9EVUxFX0FMSUFTX0JM
T0NLREVWX01BSk9SKFNDU0lfRElTSzEzX01BSk9SKTsKIE1PRFVMRV9BTElBU19CTE9DS0RFVl9N
QUpPUihTQ1NJX0RJU0sxNF9NQUpPUik7CiBNT0RVTEVfQUxJQVNfQkxPQ0tERVZfTUFKT1IoU0NT
SV9ESVNLMTVfTUFKT1IpOwogCi0vKgotICogVGhpcyBpcyBsaW1pdGVkIGJ5IHRoZSBuYW1pbmcg
c2NoZW1lIGVuZm9yY2VkIGluIHNkX3Byb2JlLAotICogYWRkIGFub3RoZXIgY2hhcmFjdGVyIHRv
IGl0IGlmIHlvdSByZWFsbHkgbmVlZCBtb3JlIGRpc2tzLgotICovCi0jZGVmaW5lIFNEX01BWF9E
SVNLUwkoKCgyNiAqIDI2KSArIDI2ICsgMSkgKiAyNikKLQotLyoKLSAqIFRpbWUgb3V0IGluIHNl
Y29uZHMgZm9yIGRpc2tzIGFuZCBNYWduZXRvLW9wdGljYWxzICh3aGljaCBhcmUgc2xvd2VyKS4K
LSAqLwotI2RlZmluZSBTRF9USU1FT1VUCQkoMzAgKiBIWikKLSNkZWZpbmUgU0RfTU9EX1RJTUVP
VVQJCSg3NSAqIEhaKQotCi0vKgotICogTnVtYmVyIG9mIGFsbG93ZWQgcmV0cmllcwotICovCi0j
ZGVmaW5lIFNEX01BWF9SRVRSSUVTCQk1Ci0jZGVmaW5lIFNEX1BBU1NUSFJPVUdIX1JFVFJJRVMJ
MQotCi0vKgotICogU2l6ZSBvZiB0aGUgaW5pdGlhbCBkYXRhIGJ1ZmZlciBmb3IgbW9kZSBhbmQg
cmVhZCBjYXBhY2l0eSBkYXRhCi0gKi8KLSNkZWZpbmUgU0RfQlVGX1NJWkUJCTUxMgotCi1zdHJ1
Y3Qgc2NzaV9kaXNrIHsKLQlzdHJ1Y3Qgc2NzaV9kcml2ZXIgKmRyaXZlcjsJLyogYWx3YXlzICZz
ZF90ZW1wbGF0ZSAqLwotCXN0cnVjdCBzY3NpX2RldmljZSAqZGV2aWNlOwotCXN0cnVjdCBjbGFz
c19kZXZpY2UgY2RldjsKLQlzdHJ1Y3QgZ2VuZGlzawkqZGlzazsKLQl1bnNpZ25lZCBpbnQJb3Bl
bmVyczsJLyogcHJvdGVjdGVkIGJ5IEJLTCBmb3Igbm93LCB5dWNrICovCi0Jc2VjdG9yX3QJY2Fw
YWNpdHk7CS8qIHNpemUgaW4gNTEyLWJ5dGUgc2VjdG9ycyAqLwotCXUzMgkJaW5kZXg7Ci0JdTgJ
CW1lZGlhX3ByZXNlbnQ7Ci0JdTgJCXdyaXRlX3Byb3Q7Ci0JdW5zaWduZWQJV0NFIDogMTsJLyog
c3RhdGUgb2YgZGlzayBXQ0UgYml0ICovCi0JdW5zaWduZWQJUkNEIDogMTsJLyogc3RhdGUgb2Yg
ZGlzayBSQ0QgYml0LCB1bnVzZWQgKi8KLQl1bnNpZ25lZAlEUE9GVUEgOiAxOwkvKiBzdGF0ZSBv
ZiBkaXNrIERQT0ZVQSBiaXQgKi8KLX07Ci0jZGVmaW5lIHRvX3Njc2lfZGlzayhvYmopIGNvbnRh
aW5lcl9vZihvYmosc3RydWN0IHNjc2lfZGlzayxjZGV2KQotCiBzdGF0aWMgREVGSU5FX0lEUihz
ZF9pbmRleF9pZHIpOwogc3RhdGljIERFRklORV9TUElOTE9DSyhzZF9pbmRleF9sb2NrKTsKIApA
QCAtMTM2LDIwICs5MSw2IEBAIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0soc2RfaW5kZXhfbG9jayk7
CiAgKiBvYmplY3QgYWZ0ZXIgbGFzdCBwdXQpICovCiBzdGF0aWMgREVGSU5FX01VVEVYKHNkX3Jl
Zl9tdXRleCk7CiAKLXN0YXRpYyBpbnQgc2RfcmV2YWxpZGF0ZV9kaXNrKHN0cnVjdCBnZW5kaXNr
ICpkaXNrKTsKLXN0YXRpYyB2b2lkIHNkX3J3X2ludHIoc3RydWN0IHNjc2lfY21uZCAqIFNDcG50
KTsKLQotc3RhdGljIGludCBzZF9wcm9iZShzdHJ1Y3QgZGV2aWNlICopOwotc3RhdGljIGludCBz
ZF9yZW1vdmUoc3RydWN0IGRldmljZSAqKTsKLXN0YXRpYyB2b2lkIHNkX3NodXRkb3duKHN0cnVj
dCBkZXZpY2UgKmRldik7Ci1zdGF0aWMgdm9pZCBzZF9yZXNjYW4oc3RydWN0IGRldmljZSAqKTsK
LXN0YXRpYyBpbnQgc2RfaW5pdF9jb21tYW5kKHN0cnVjdCBzY3NpX2NtbmQgKik7Ci1zdGF0aWMg
aW50IHNkX2lzc3VlX2ZsdXNoKHN0cnVjdCBkZXZpY2UgKiwgc2VjdG9yX3QgKik7Ci1zdGF0aWMg
dm9pZCBzZF9wcmVwYXJlX2ZsdXNoKHJlcXVlc3RfcXVldWVfdCAqLCBzdHJ1Y3QgcmVxdWVzdCAq
KTsKLXN0YXRpYyB2b2lkIHNkX3JlYWRfY2FwYWNpdHkoc3RydWN0IHNjc2lfZGlzayAqc2RrcCwg
Y2hhciAqZGlza25hbWUsCi0JCQkgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcik7Ci1zdGF0aWMg
dm9pZCBzY3NpX2Rpc2tfcmVsZWFzZShzdHJ1Y3QgY2xhc3NfZGV2aWNlICpjZGV2KTsKLQogc3Rh
dGljIGNvbnN0IGNoYXIgKnNkX2NhY2hlX3R5cGVzW10gPSB7CiAJIndyaXRlIHRocm91Z2giLCAi
bm9uZSIsICJ3cml0ZSBiYWNrIiwKIAkid3JpdGUgYmFjaywgbm8gcmVhZCAoZGFmdCkiCkBAIC0x
OTksNyArMTQwLDcgQEAgc3RhdGljIHNzaXplX3Qgc2Rfc3RvcmVfY2FjaGVfdHlwZShzdHJ1Y3Qg
Y2xhc3NfZGV2aWNlICpjZGV2LCBjb25zdCBjaGFyICpidWYsCiAJaWYgKHNjc2lfbW9kZV9zZWxl
Y3Qoc2RwLCAxLCBzcCwgOCwgYnVmZmVyX2RhdGEsIGxlbiwgU0RfVElNRU9VVCwKIAkJCSAgICAg
U0RfTUFYX1JFVFJJRVMsICZkYXRhLCAmc3NoZHIpKSB7CiAJCWlmIChzY3NpX3NlbnNlX3ZhbGlk
KCZzc2hkcikpCi0JCQlzY3NpX3ByaW50X3NlbnNlX2hkcihzZGtwLT5kaXNrLT5kaXNrX25hbWUs
ICZzc2hkcik7CisJCQlzZF9wcmludF9zZW5zZV9oZHIoc2RrcCwgJnNzaGRyKTsKIAkJcmV0dXJu
IC1FSU5WQUw7CiAJfQogCXNkX3JldmFsaWRhdGVfZGlzayhzZGtwLT5kaXNrKTsKQEAgLTQwNyw3
ICszNDgsOCBAQCBzdGF0aWMgaW50IHNkX2luaXRfY29tbWFuZChzdHJ1Y3Qgc2NzaV9jbW5kICog
U0NwbnQpCiAJICovCiAJaWYgKHNkcC0+c2VjdG9yX3NpemUgPT0gMTAyNCkgewogCQlpZiAoKGJs
b2NrICYgMSkgfHwgKHJxLT5ucl9zZWN0b3JzICYgMSkpIHsKLQkJCXByaW50ayhLRVJOX0VSUiAi
c2Q6IEJhZCBibG9jayBudW1iZXIgcmVxdWVzdGVkIik7CisJCQlzY21kX3ByaW50ayhLRVJOX0VS
UiwgU0NwbnQsCisJCQkJICAgICJCYWQgYmxvY2sgbnVtYmVyIHJlcXVlc3RlZFxuIik7CiAJCQly
ZXR1cm4gMDsKIAkJfSBlbHNlIHsKIAkJCWJsb2NrID0gYmxvY2sgPj4gMTsKQEAgLTQxNiw3ICsz
NTgsOCBAQCBzdGF0aWMgaW50IHNkX2luaXRfY29tbWFuZChzdHJ1Y3Qgc2NzaV9jbW5kICogU0Nw
bnQpCiAJfQogCWlmIChzZHAtPnNlY3Rvcl9zaXplID09IDIwNDgpIHsKIAkJaWYgKChibG9jayAm
IDMpIHx8IChycS0+bnJfc2VjdG9ycyAmIDMpKSB7Ci0JCQlwcmludGsoS0VSTl9FUlIgInNkOiBC
YWQgYmxvY2sgbnVtYmVyIHJlcXVlc3RlZCIpOworCQkJc2NtZF9wcmludGsoS0VSTl9FUlIsIFND
cG50LAorCQkJCSAgICAiQmFkIGJsb2NrIG51bWJlciByZXF1ZXN0ZWRcbiIpOwogCQkJcmV0dXJu
IDA7CiAJCX0gZWxzZSB7CiAJCQlibG9jayA9IGJsb2NrID4+IDI7CkBAIC00MjUsNyArMzY4LDgg
QEAgc3RhdGljIGludCBzZF9pbml0X2NvbW1hbmQoc3RydWN0IHNjc2lfY21uZCAqIFNDcG50KQog
CX0KIAlpZiAoc2RwLT5zZWN0b3Jfc2l6ZSA9PSA0MDk2KSB7CiAJCWlmICgoYmxvY2sgJiA3KSB8
fCAocnEtPm5yX3NlY3RvcnMgJiA3KSkgewotCQkJcHJpbnRrKEtFUk5fRVJSICJzZDogQmFkIGJs
b2NrIG51bWJlciByZXF1ZXN0ZWQiKTsKKwkJCXNjbWRfcHJpbnRrKEtFUk5fRVJSLCBTQ3BudCwK
KwkJCQkgICAgIkJhZCBibG9jayBudW1iZXIgcmVxdWVzdGVkXG4iKTsKIAkJCXJldHVybiAwOwog
CQl9IGVsc2UgewogCQkJYmxvY2sgPSBibG9jayA+PiAzOwpAQCAtNDQyLDcgKzM4Niw3IEBAIHN0
YXRpYyBpbnQgc2RfaW5pdF9jb21tYW5kKHN0cnVjdCBzY3NpX2NtbmQgKiBTQ3BudCkKIAkJU0Nw
bnQtPmNtbmRbMF0gPSBSRUFEXzY7CiAJCVNDcG50LT5zY19kYXRhX2RpcmVjdGlvbiA9IERNQV9G
Uk9NX0RFVklDRTsKIAl9IGVsc2UgewotCQlwcmludGsoS0VSTl9FUlIgInNkOiBVbmtub3duIGNv
bW1hbmQgJXhcbiIsIHJxLT5jbWRfZmxhZ3MpOworCQlzY21kX3ByaW50ayhLRVJOX0VSUiwgU0Nw
bnQsICJVbmtub3duIGNvbW1hbmQgJXhcbiIsIHJxLT5jbWRfZmxhZ3MpOwogCQlyZXR1cm4gMDsK
IAl9CiAKQEAgLTQ5MCw3ICs0MzQsOCBAQCBzdGF0aWMgaW50IHNkX2luaXRfY29tbWFuZChzdHJ1
Y3Qgc2NzaV9jbW5kICogU0NwbnQpCiAJCQkgKiBkdXJpbmcgb3BlcmF0aW9uIGFuZCB0aHVzIHR1
cm5lZCBvZmYKIAkJCSAqIHVzZV8xMF9mb3JfcncuCiAJCQkgKi8KLQkJCXByaW50ayhLRVJOX0VS
UiAic2Q6IEZVQSB3cml0ZSBvbiBSRUFEL1dSSVRFKDYpIGRyaXZlXG4iKTsKKwkJCXNjbWRfcHJp
bnRrKEtFUk5fRVJSLCBTQ3BudCwKKwkJCQkgICAgIkZVQSB3cml0ZSBvbiBSRUFEL1dSSVRFKDYp
IGRyaXZlXG4iKTsKIAkJCXJldHVybiAwOwogCQl9CiAKQEAgLTc4Niw5ICs3MzEsMTAgQEAgbm90
X3ByZXNlbnQ6CiAJcmV0dXJuIDE7CiB9CiAKLXN0YXRpYyBpbnQgc2Rfc3luY19jYWNoZShzdHJ1
Y3Qgc2NzaV9kZXZpY2UgKnNkcCkKK3N0YXRpYyBpbnQgc2Rfc3luY19jYWNoZShzdHJ1Y3Qgc2Nz
aV9kaXNrICpzZGtwKQogewogCWludCByZXRyaWVzLCByZXM7CisJc3RydWN0IHNjc2lfZGV2aWNl
ICpzZHAgPSBzZGtwLT5kZXZpY2U7CiAJc3RydWN0IHNjc2lfc2Vuc2VfaGRyIHNzaGRyOwogCiAJ
aWYgKCFzY3NpX2RldmljZV9vbmxpbmUoc2RwKSkKQEAgLTgwOSwxMiArNzU1LDEwIEBAIHN0YXRp
YyBpbnQgc2Rfc3luY19jYWNoZShzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkcCkKIAkJCWJyZWFrOwog
CX0KIAotCWlmIChyZXMpIHsJCXByaW50ayhLRVJOX1dBUk5JTkcgIkZBSUxFRFxuICBzdGF0dXMg
PSAleCwgbWVzc2FnZSA9ICUwMngsICIKLQkJCQkgICAgImhvc3QgPSAlZCwgZHJpdmVyID0gJTAy
eFxuICAiLAotCQkJCSAgICBzdGF0dXNfYnl0ZShyZXMpLCBtc2dfYnl0ZShyZXMpLAotCQkJCSAg
ICBob3N0X2J5dGUocmVzKSwgZHJpdmVyX2J5dGUocmVzKSk7Ci0JCQlpZiAoZHJpdmVyX2J5dGUo
cmVzKSAmIERSSVZFUl9TRU5TRSkKLQkJCQlzY3NpX3ByaW50X3NlbnNlX2hkcigic2QiLCAmc3No
ZHIpOworCWlmIChyZXMpIHsKKwkJc2RfcHJpbnRfcmVzdWx0KHNka3AsIHJlcyk7CisJCWlmIChk
cml2ZXJfYnl0ZShyZXMpICYgRFJJVkVSX1NFTlNFKQorCQkJc2RfcHJpbnRfc2Vuc2VfaGRyKHNk
a3AsICZzc2hkcik7CiAJfQogCiAJcmV0dXJuIHJlczsKQEAgLTgyMywxNCArNzY3LDEzIEBAIHN0
YXRpYyBpbnQgc2Rfc3luY19jYWNoZShzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkcCkKIHN0YXRpYyBp
bnQgc2RfaXNzdWVfZmx1c2goc3RydWN0IGRldmljZSAqZGV2LCBzZWN0b3JfdCAqZXJyb3Jfc2Vj
dG9yKQogewogCWludCByZXQgPSAwOwotCXN0cnVjdCBzY3NpX2RldmljZSAqc2RwID0gdG9fc2Nz
aV9kZXZpY2UoZGV2KTsKIAlzdHJ1Y3Qgc2NzaV9kaXNrICpzZGtwID0gc2NzaV9kaXNrX2dldF9m
cm9tX2RldihkZXYpOwogCiAJaWYgKCFzZGtwKQogICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9E
RVY7CiAKIAlpZiAoc2RrcC0+V0NFKQotCQlyZXQgPSBzZF9zeW5jX2NhY2hlKHNkcCk7CisJCXJl
dCA9IHNkX3N5bmNfY2FjaGUoc2RrcCk7CiAJc2NzaV9kaXNrX3B1dChzZGtwKTsKIAlyZXR1cm4g
cmV0OwogfQpAQCAtMTAyNSw3ICs5NjgsNyBAQCBzdGF0aWMgaW50IG1lZGlhX25vdF9wcmVzZW50
KHN0cnVjdCBzY3NpX2Rpc2sgKnNka3AsCiAgKiBzcGludXAgZGlzayAtIGNhbGxlZCBvbmx5IGlu
IHNkX3JldmFsaWRhdGVfZGlzaygpCiAgKi8KIHN0YXRpYyB2b2lkCi1zZF9zcGludXBfZGlzayhz
dHJ1Y3Qgc2NzaV9kaXNrICpzZGtwLCBjaGFyICpkaXNrbmFtZSkKK3NkX3NwaW51cF9kaXNrKHN0
cnVjdCBzY3NpX2Rpc2sgKnNka3ApCiB7CiAJdW5zaWduZWQgY2hhciBjbWRbMTBdOwogCXVuc2ln
bmVkIGxvbmcgc3BpbnRpbWVfZXhwaXJlID0gMDsKQEAgLTEwNjksOSArMTAxMiwxMCBAQCBzZF9z
cGludXBfZGlzayhzdHJ1Y3Qgc2NzaV9kaXNrICpzZGtwLCBjaGFyICpkaXNrbmFtZSkKIAkJaWYg
KChkcml2ZXJfYnl0ZSh0aGVfcmVzdWx0KSAmIERSSVZFUl9TRU5TRSkgPT0gMCkgewogCQkJLyog
bm8gc2Vuc2UsIFRVUiBlaXRoZXIgc3VjY2VlZGVkIG9yIGZhaWxlZAogCQkJICogd2l0aCBhIHN0
YXR1cyBlcnJvciAqLwotCQkJaWYoIXNwaW50aW1lICYmICFzY3NpX3N0YXR1c19pc19nb29kKHRo
ZV9yZXN1bHQpKQotCQkJCXByaW50ayhLRVJOX05PVElDRSAiJXM6IFVuaXQgTm90IFJlYWR5LCAi
Ci0JCQkJICAgICAgICJlcnJvciA9IDB4JXhcbiIsIGRpc2tuYW1lLCB0aGVfcmVzdWx0KTsKKwkJ
CWlmKCFzcGludGltZSAmJiAhc2NzaV9zdGF0dXNfaXNfZ29vZCh0aGVfcmVzdWx0KSkgeworCQkJ
CXNkX3ByaW50ayhLRVJOX05PVElDRSwgc2RrcCwgIlVuaXQgTm90IFJlYWR5XG4iKTsKKwkJCQlz
ZF9wcmludF9yZXN1bHQoc2RrcCwgdGhlX3Jlc3VsdCk7CisJCQl9CiAJCQlicmVhazsKIAkJfQog
CQkJCQkKQEAgLTEwOTYsOCArMTA0MCw3IEBAIHNkX3NwaW51cF9kaXNrKHN0cnVjdCBzY3NpX2Rp
c2sgKnNka3AsIGNoYXIgKmRpc2tuYW1lKQogCQkgKi8KIAkJfSBlbHNlIGlmIChzZW5zZV92YWxp
ZCAmJiBzc2hkci5zZW5zZV9rZXkgPT0gTk9UX1JFQURZKSB7CiAJCQlpZiAoIXNwaW50aW1lKSB7
Ci0JCQkJcHJpbnRrKEtFUk5fTk9USUNFICIlczogU3Bpbm5pbmcgdXAgZGlzay4uLiIsCi0JCQkJ
ICAgICAgIGRpc2tuYW1lKTsKKwkJCQlzZF9wcmludGsoS0VSTl9OT1RJQ0UsIHNka3AsICJTcGlu
bmluZyB1cCBkaXNrLi4uIik7CiAJCQkJY21kWzBdID0gU1RBUlRfU1RPUDsKIAkJCQljbWRbMV0g
PSAxOwkvKiBSZXR1cm4gaW1tZWRpYXRlbHkgKi8KIAkJCQltZW1zZXQoKHZvaWQgKikgJmNtZFsy
XSwgMCwgOCk7CkBAIC0xMTMwLDkgKzEwNzMsOCBAQCBzZF9zcGludXBfZGlzayhzdHJ1Y3Qgc2Nz
aV9kaXNrICpzZGtwLCBjaGFyICpkaXNrbmFtZSkKIAkJCS8qIHdlIGRvbid0IHVuZGVyc3RhbmQg
dGhlIHNlbnNlIGNvZGUsIHNvIGl0J3MKIAkJCSAqIHByb2JhYmx5IHBvaW50bGVzcyB0byBsb29w
ICovCiAJCQlpZighc3BpbnRpbWUpIHsKLQkJCQlwcmludGsoS0VSTl9OT1RJQ0UgIiVzOiBVbml0
IE5vdCBSZWFkeSwgIgotCQkJCQkic2Vuc2U6XG4iLCBkaXNrbmFtZSk7Ci0JCQkJc2NzaV9wcmlu
dF9zZW5zZV9oZHIoIiIsICZzc2hkcik7CisJCQkJc2RfcHJpbnRrKEtFUk5fTk9USUNFLCBzZGtw
LCAiVW5pdCBOb3QgUmVhZHlcbiIpOworCQkJCXNkX3ByaW50X3NlbnNlX2hkcihzZGtwLCAmc3No
ZHIpOwogCQkJfQogCQkJYnJlYWs7CiAJCX0KQEAgLTExNTEsOCArMTA5Myw3IEBAIHNkX3NwaW51
cF9kaXNrKHN0cnVjdCBzY3NpX2Rpc2sgKnNka3AsIGNoYXIgKmRpc2tuYW1lKQogICogcmVhZCBk
aXNrIGNhcGFjaXR5CiAgKi8KIHN0YXRpYyB2b2lkCi1zZF9yZWFkX2NhcGFjaXR5KHN0cnVjdCBz
Y3NpX2Rpc2sgKnNka3AsIGNoYXIgKmRpc2tuYW1lLAotCQkgdW5zaWduZWQgY2hhciAqYnVmZmVy
KQorc2RfcmVhZF9jYXBhY2l0eShzdHJ1Y3Qgc2NzaV9kaXNrICpzZGtwLCB1bnNpZ25lZCBjaGFy
ICpidWZmZXIpCiB7CiAJdW5zaWduZWQgY2hhciBjbWRbMTZdOwogCWludCB0aGVfcmVzdWx0LCBy
ZXRyaWVzOwpAQCAtMTE5MSwxOCArMTEzMiwxMiBAQCByZXBlYXQ6CiAJfSB3aGlsZSAodGhlX3Jl
c3VsdCAmJiByZXRyaWVzKTsKIAogCWlmICh0aGVfcmVzdWx0ICYmICFsb25ncmMpIHsKLQkJcHJp
bnRrKEtFUk5fTk9USUNFICIlcyA6IFJFQUQgQ0FQQUNJVFkgZmFpbGVkLlxuIgotCQkgICAgICAg
IiVzIDogc3RhdHVzPSV4LCBtZXNzYWdlPSUwMngsIGhvc3Q9JWQsIGRyaXZlcj0lMDJ4IFxuIiwK
LQkJICAgICAgIGRpc2tuYW1lLCBkaXNrbmFtZSwKLQkJICAgICAgIHN0YXR1c19ieXRlKHRoZV9y
ZXN1bHQpLAotCQkgICAgICAgbXNnX2J5dGUodGhlX3Jlc3VsdCksCi0JCSAgICAgICBob3N0X2J5
dGUodGhlX3Jlc3VsdCksCi0JCSAgICAgICBkcml2ZXJfYnl0ZSh0aGVfcmVzdWx0KSk7Ci0KKwkJ
c2RfcHJpbnRrKEtFUk5fTk9USUNFLCBzZGtwLCAiUkVBRCBDQVBBQ0lUWSBmYWlsZWRcbiIpOwor
CQlzZF9wcmludF9yZXN1bHQoc2RrcCwgdGhlX3Jlc3VsdCk7CiAJCWlmIChkcml2ZXJfYnl0ZSh0
aGVfcmVzdWx0KSAmIERSSVZFUl9TRU5TRSkKLQkJCXNjc2lfcHJpbnRfc2Vuc2VfaGRyKCJzZCIs
ICZzc2hkcik7CisJCQlzZF9wcmludF9zZW5zZV9oZHIoc2RrcCwgJnNzaGRyKTsKIAkJZWxzZQot
CQkJcHJpbnRrKCIlcyA6IHNlbnNlIG5vdCBhdmFpbGFibGUuIFxuIiwgZGlza25hbWUpOworCQkJ
c2RfcHJpbnRrKEtFUk5fTk9USUNFLCBzZGtwLCAiU2Vuc2Ugbm90IGF2YWlsYWJsZS5cbiIpOwog
CiAJCS8qIFNldCBkaXJ0eSBiaXQgZm9yIHJlbW92YWJsZSBkZXZpY2VzIGlmIG5vdCByZWFkeSAt
CiAJCSAqIHNvbWV0aW1lcyBkcml2ZXMgd2lsbCBub3QgcmVwb3J0IHRoaXMgcHJvcGVybHkuICov
CkBAIC0xMjE4LDE2ICsxMTUzLDEwIEBAIHJlcGVhdDoKIAkJcmV0dXJuOwogCX0gZWxzZSBpZiAo
dGhlX3Jlc3VsdCAmJiBsb25ncmMpIHsKIAkJLyogUkVBRCBDQVBBQ0lUWSgxNikgaGFzIGJlZW4g
ZmFpbGVkICovCi0JCXByaW50ayhLRVJOX05PVElDRSAiJXMgOiBSRUFEIENBUEFDSVRZKDE2KSBm
YWlsZWQuXG4iCi0JCSAgICAgICAiJXMgOiBzdGF0dXM9JXgsIG1lc3NhZ2U9JTAyeCwgaG9zdD0l
ZCwgZHJpdmVyPSUwMnggXG4iLAotCQkgICAgICAgZGlza25hbWUsIGRpc2tuYW1lLAotCQkgICAg
ICAgc3RhdHVzX2J5dGUodGhlX3Jlc3VsdCksCi0JCSAgICAgICBtc2dfYnl0ZSh0aGVfcmVzdWx0
KSwKLQkJICAgICAgIGhvc3RfYnl0ZSh0aGVfcmVzdWx0KSwKLQkJICAgICAgIGRyaXZlcl9ieXRl
KHRoZV9yZXN1bHQpKTsKLQkJcHJpbnRrKEtFUk5fTk9USUNFICIlcyA6IHVzZSAweGZmZmZmZmZm
IGFzIGRldmljZSBzaXplXG4iLAotCQkgICAgICAgZGlza25hbWUpOwotCQkKKwkJc2RfcHJpbnRr
KEtFUk5fTk9USUNFLCBzZGtwLCAiUkVBRCBDQVBBQ0lUWSgxNikgZmFpbGVkXG4iKTsKKwkJc2Rf
cHJpbnRfcmVzdWx0KHNka3AsIHRoZV9yZXN1bHQpOworCQlzZF9wcmludGsoS0VSTl9OT1RJQ0Us
IHNka3AsICJVc2UgMHhmZmZmZmZmZiBhcyBkZXZpY2Ugc2l6ZVxuIik7CisKIAkJc2RrcC0+Y2Fw
YWNpdHkgPSAxICsgKHNlY3Rvcl90KSAweGZmZmZmZmZmOwkJCiAJCWdvdG8gZ290X2RhdGE7CiAJ
fQkKQEAgLTEyMzgsMTQgKzExNjcsMTQgQEAgcmVwZWF0OgogCQlpZiAoYnVmZmVyWzBdID09IDB4
ZmYgJiYgYnVmZmVyWzFdID09IDB4ZmYgJiYKIAkJICAgIGJ1ZmZlclsyXSA9PSAweGZmICYmIGJ1
ZmZlclszXSA9PSAweGZmKSB7CiAJCQlpZihzaXplb2Yoc2RrcC0+Y2FwYWNpdHkpID4gNCkgewot
CQkJCXByaW50ayhLRVJOX05PVElDRSAiJXMgOiB2ZXJ5IGJpZyBkZXZpY2UuIHRyeSB0byB1c2Ui
Ci0JCQkJICAgICAgICIgUkVBRCBDQVBBQ0lUWSgxNikuXG4iLCBkaXNrbmFtZSk7CisJCQkJc2Rf
cHJpbnRrKEtFUk5fTk9USUNFLCBzZGtwLCAiVmVyeSBiaWcgZGV2aWNlLiAiCisJCQkJCSAgIlRy
eWluZyB0byB1c2UgUkVBRCBDQVBBQ0lUWSgxNikuXG4iKTsKIAkJCQlsb25ncmMgPSAxOwogCQkJ
CWdvdG8gcmVwZWF0OwogCQkJfQotCQkJcHJpbnRrKEtFUk5fRVJSICIlczogdG9vIGJpZyBmb3Ig
dGhpcyBrZXJuZWwuICBVc2UgYSAiCi0JCQkgICAgICAgImtlcm5lbCBjb21waWxlZCB3aXRoIHN1
cHBvcnQgZm9yIGxhcmdlIGJsb2NrICIKLQkJCSAgICAgICAiZGV2aWNlcy5cbiIsIGRpc2tuYW1l
KTsKKwkJCXNkX3ByaW50ayhLRVJOX0VSUiwgc2RrcCwgIlRvbyBiaWcgZm9yIHRoaXMga2VybmVs
LiBVc2UgIgorCQkJCSAgImEga2VybmVsIGNvbXBpbGVkIHdpdGggc3VwcG9ydCBmb3IgbGFyZ2Ug
IgorCQkJCSAgImJsb2NrIGRldmljZXMuXG4iKTsKIAkJCXNka3AtPmNhcGFjaXR5ID0gMDsKIAkJ
CWdvdG8gZ290X2RhdGE7CiAJCX0KQEAgLTEyODQsOCArMTIxMyw4IEBAIHJlcGVhdDoKIGdvdF9k
YXRhOgogCWlmIChzZWN0b3Jfc2l6ZSA9PSAwKSB7CiAJCXNlY3Rvcl9zaXplID0gNTEyOwotCQlw
cmludGsoS0VSTl9OT1RJQ0UgIiVzIDogc2VjdG9yIHNpemUgMCByZXBvcnRlZCwgIgotCQkgICAg
ICAgImFzc3VtaW5nIDUxMi5cbiIsIGRpc2tuYW1lKTsKKwkJc2RfcHJpbnRrKEtFUk5fTk9USUNF
LCBzZGtwLCAiU2VjdG9yIHNpemUgMCByZXBvcnRlZCwgIgorCQkJICAiYXNzdW1pbmcgNTEyLlxu
Iik7CiAJfQogCiAJaWYgKHNlY3Rvcl9zaXplICE9IDUxMiAmJgpAQCAtMTI5Myw4ICsxMjIyLDgg
QEAgZ290X2RhdGE6CiAJICAgIHNlY3Rvcl9zaXplICE9IDIwNDggJiYKIAkgICAgc2VjdG9yX3Np
emUgIT0gNDA5NiAmJgogCSAgICBzZWN0b3Jfc2l6ZSAhPSAyNTYpIHsKLQkJcHJpbnRrKEtFUk5f
Tk9USUNFICIlcyA6IHVuc3VwcG9ydGVkIHNlY3RvciBzaXplICIKLQkJICAgICAgICIlZC5cbiIs
IGRpc2tuYW1lLCBzZWN0b3Jfc2l6ZSk7CisJCXNkX3ByaW50ayhLRVJOX05PVElDRSwgc2RrcCwg
IlVuc3VwcG9ydGVkIHNlY3RvciBzaXplICVkLlxuIiwKKwkJCSAgc2VjdG9yX3NpemUpOwogCQkv
KgogCQkgKiBUaGUgdXNlciBtaWdodCB3YW50IHRvIHJlLWZvcm1hdCB0aGUgZHJpdmUgd2l0aAog
CQkgKiBhIHN1cHBvcnRlZCBzZWN0b3JzaXplLiAgT25jZSB0aGlzIGhhcHBlbnMsIGl0CkBAIC0x
MzI3LDEwICsxMjU2LDEwIEBAIGdvdF9kYXRhOgogCQltYiAtPSBzeiAtIDk3NDsKIAkJc2VjdG9y
X2RpdihtYiwgMTk1MCk7CiAKLQkJcHJpbnRrKEtFUk5fTk9USUNFICJTQ1NJIGRldmljZSAlczog
IgotCQkgICAgICAgIiVsbHUgJWQtYnl0ZSBoZHdyIHNlY3RvcnMgKCVsbHUgTUIpXG4iLAotCQkg
ICAgICAgZGlza25hbWUsICh1bnNpZ25lZCBsb25nIGxvbmcpc2RrcC0+Y2FwYWNpdHksCi0JCSAg
ICAgICBoYXJkX3NlY3RvciwgKHVuc2lnbmVkIGxvbmcgbG9uZyltYik7CisJCXNkX3ByaW50ayhL
RVJOX05PVElDRSwgc2RrcCwKKwkJCSAgIiVsbHUgJWQtYnl0ZSBoYXJkd2FyZSBzZWN0b3JzICgl
bGx1IE1CKVxuIiwKKwkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZylzZGtwLT5jYXBhY2l0eSwKKwkJ
CSAgaGFyZF9zZWN0b3IsICh1bnNpZ25lZCBsb25nIGxvbmcpbWIpOwogCX0KIAogCS8qIFJlc2Nh
bGUgY2FwYWNpdHkgdG8gNTEyLWJ5dGUgdW5pdHMgKi8KQEAgLTEzNjIsOCArMTI5MSw3IEBAIHNk
X2RvX21vZGVfc2Vuc2Uoc3RydWN0IHNjc2lfZGV2aWNlICpzZHAsIGludCBkYmQsIGludCBtb2Rl
cGFnZSwKICAqIGNhbGxlZCB3aXRoIGJ1ZmZlciBvZiBsZW5ndGggU0RfQlVGX1NJWkUKICAqLwog
c3RhdGljIHZvaWQKLXNkX3JlYWRfd3JpdGVfcHJvdGVjdF9mbGFnKHN0cnVjdCBzY3NpX2Rpc2sg
KnNka3AsIGNoYXIgKmRpc2tuYW1lLAotCQkJICAgdW5zaWduZWQgY2hhciAqYnVmZmVyKQorc2Rf
cmVhZF93cml0ZV9wcm90ZWN0X2ZsYWcoc3RydWN0IHNjc2lfZGlzayAqc2RrcCwgdW5zaWduZWQg
Y2hhciAqYnVmZmVyKQogewogCWludCByZXM7CiAJc3RydWN0IHNjc2lfZGV2aWNlICpzZHAgPSBz
ZGtwLT5kZXZpY2U7CkBAIC0xMzcxLDcgKzEyOTksNyBAQCBzZF9yZWFkX3dyaXRlX3Byb3RlY3Rf
ZmxhZyhzdHJ1Y3Qgc2NzaV9kaXNrICpzZGtwLCBjaGFyICpkaXNrbmFtZSwKIAogCXNldF9kaXNr
X3JvKHNka3AtPmRpc2ssIDApOwogCWlmIChzZHAtPnNraXBfbXNfcGFnZV8zZikgewotCQlwcmlu
dGsoS0VSTl9OT1RJQ0UgIiVzOiBhc3N1bWluZyBXcml0ZSBFbmFibGVkXG4iLCBkaXNrbmFtZSk7
CisJCXNkX3ByaW50ayhLRVJOX05PVElDRSwgc2RrcCwgIkFzc3VtaW5nIFdyaXRlIEVuYWJsZWRc
biIpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xNDAzLDE1ICsxMzMxLDE2IEBAIHNkX3JlYWRfd3Jp
dGVfcHJvdGVjdF9mbGFnKHN0cnVjdCBzY3NpX2Rpc2sgKnNka3AsIGNoYXIgKmRpc2tuYW1lLAog
CX0KIAogCWlmICghc2NzaV9zdGF0dXNfaXNfZ29vZChyZXMpKSB7Ci0JCXByaW50ayhLRVJOX1dB
Uk5JTkcKLQkJICAgICAgICIlczogdGVzdCBXUCBmYWlsZWQsIGFzc3VtZSBXcml0ZSBFbmFibGVk
XG4iLCBkaXNrbmFtZSk7CisJCXNkX3ByaW50ayhLRVJOX1dBUk5JTkcsIHNka3AsCisJCQkgICJU
ZXN0IFdQIGZhaWxlZCwgYXNzdW1lIFdyaXRlIEVuYWJsZWRcbiIpOwogCX0gZWxzZSB7CiAJCXNk
a3AtPndyaXRlX3Byb3QgPSAoKGRhdGEuZGV2aWNlX3NwZWNpZmljICYgMHg4MCkgIT0gMCk7CiAJ
CXNldF9kaXNrX3JvKHNka3AtPmRpc2ssIHNka3AtPndyaXRlX3Byb3QpOwotCQlwcmludGsoS0VS
Tl9OT1RJQ0UgIiVzOiBXcml0ZSBQcm90ZWN0IGlzICVzXG4iLCBkaXNrbmFtZSwKLQkJICAgICAg
IHNka3AtPndyaXRlX3Byb3QgPyAib24iIDogIm9mZiIpOwotCQlwcmludGsoS0VSTl9ERUJVRyAi
JXM6IE1vZGUgU2Vuc2U6ICUwMnggJTAyeCAlMDJ4ICUwMnhcbiIsCi0JCSAgICAgICBkaXNrbmFt
ZSwgYnVmZmVyWzBdLCBidWZmZXJbMV0sIGJ1ZmZlclsyXSwgYnVmZmVyWzNdKTsKKwkJc2RfcHJp
bnRrKEtFUk5fTk9USUNFLCBzZGtwLCAiV3JpdGUgUHJvdGVjdCBpcyAlc1xuIiwKKwkJCSAgc2Rr
cC0+d3JpdGVfcHJvdCA/ICJvbiIgOiAib2ZmIik7CisJCXNkX3ByaW50ayhLRVJOX0RFQlVHLCBz
ZGtwLAorCQkJICAiTW9kZSBTZW5zZTogJTAyeCAlMDJ4ICUwMnggJTAyeFxuIiwKKwkJCSAgYnVm
ZmVyWzBdLCBidWZmZXJbMV0sIGJ1ZmZlclsyXSwgYnVmZmVyWzNdKTsKIAl9CiB9CiAKQEAgLTE0
MjAsOCArMTM0OSw3IEBAIHNkX3JlYWRfd3JpdGVfcHJvdGVjdF9mbGFnKHN0cnVjdCBzY3NpX2Rp
c2sgKnNka3AsIGNoYXIgKmRpc2tuYW1lLAogICogY2FsbGVkIHdpdGggYnVmZmVyIG9mIGxlbmd0
aCBTRF9CVUZfU0laRQogICovCiBzdGF0aWMgdm9pZAotc2RfcmVhZF9jYWNoZV90eXBlKHN0cnVj
dCBzY3NpX2Rpc2sgKnNka3AsIGNoYXIgKmRpc2tuYW1lLAotCQkgICB1bnNpZ25lZCBjaGFyICpi
dWZmZXIpCitzZF9yZWFkX2NhY2hlX3R5cGUoc3RydWN0IHNjc2lfZGlzayAqc2RrcCwgdW5zaWdu
ZWQgY2hhciAqYnVmZmVyKQogewogCWludCBsZW4gPSAwLCByZXM7CiAJc3RydWN0IHNjc2lfZGV2
aWNlICpzZHAgPSBzZGtwLT5kZXZpY2U7CkBAIC0xNDUwLDggKzEzNzgsNyBAQCBzZF9yZWFkX2Nh
Y2hlX3R5cGUoc3RydWN0IHNjc2lfZGlzayAqc2RrcCwgY2hhciAqZGlza25hbWUsCiAKIAlpZiAo
IWRhdGEuaGVhZGVyX2xlbmd0aCkgewogCQltb2RlcGFnZSA9IDY7Ci0JCXByaW50ayhLRVJOX0VS
UiAiJXM6IG1pc3NpbmcgaGVhZGVyIGluIE1PREVfU0VOU0UgcmVzcG9uc2VcbiIsCi0JCSAgICAg
ICBkaXNrbmFtZSk7CisJCXNkX3ByaW50ayhLRVJOX0VSUiwgc2RrcCwgIk1pc3NpbmcgaGVhZGVy
IGluIE1PREVfU0VOU0UgcmVzcG9uc2VcbiIpOwogCX0KIAogCS8qIHRoYXQgd2VudCBPSywgbm93
IGFzayBmb3IgdGhlIHByb3BlciBsZW5ndGggKi8KQEAgLTE0NzgsMTMgKzE0MDUsMTIgQEAgc2Rf
cmVhZF9jYWNoZV90eXBlKHN0cnVjdCBzY3NpX2Rpc2sgKnNka3AsIGNoYXIgKmRpc2tuYW1lLAog
CQlpbnQgb2Zmc2V0ID0gZGF0YS5oZWFkZXJfbGVuZ3RoICsgZGF0YS5ibG9ja19kZXNjcmlwdG9y
X2xlbmd0aDsKIAogCQlpZiAob2Zmc2V0ID49IFNEX0JVRl9TSVpFIC0gMikgewotCQkJcHJpbnRr
KEtFUk5fRVJSICIlczogbWFsZm9ybWVkIE1PREUgU0VOU0UgcmVzcG9uc2UiLAotCQkJCWRpc2tu
YW1lKTsKKwkJCXNkX3ByaW50ayhLRVJOX0VSUiwgc2RrcCwgIk1hbGZvcm1lZCBNT0RFIFNFTlNF
IHJlc3BvbnNlXG4iKTsKIAkJCWdvdG8gZGVmYXVsdHM7CiAJCX0KIAogCQlpZiAoKGJ1ZmZlcltv
ZmZzZXRdICYgMHgzZikgIT0gbW9kZXBhZ2UpIHsKLQkJCXByaW50ayhLRVJOX0VSUiAiJXM6IGdv
dCB3cm9uZyBwYWdlXG4iLCBkaXNrbmFtZSk7CisJCQlzZF9wcmludGsoS0VSTl9FUlIsIHNka3As
ICJHb3Qgd3JvbmcgcGFnZVxuIik7CiAJCQlnb3RvIGRlZmF1bHRzOwogCQl9CiAKQEAgLTE0OTgs
MTQgKzE0MjQsMTMgQEAgc2RfcmVhZF9jYWNoZV90eXBlKHN0cnVjdCBzY3NpX2Rpc2sgKnNka3As
IGNoYXIgKmRpc2tuYW1lLAogCiAJCXNka3AtPkRQT0ZVQSA9IChkYXRhLmRldmljZV9zcGVjaWZp
YyAmIDB4MTApICE9IDA7CiAJCWlmIChzZGtwLT5EUE9GVUEgJiYgIXNka3AtPmRldmljZS0+dXNl
XzEwX2Zvcl9ydykgewotCQkJcHJpbnRrKEtFUk5fTk9USUNFICJTQ1NJIGRldmljZSAlczogdXNl
cyAiCi0JCQkgICAgICAgIlJFQUQvV1JJVEUoNiksIGRpc2FibGluZyBGVUFcbiIsIGRpc2tuYW1l
KTsKKwkJCXNkX3ByaW50ayhLRVJOX05PVElDRSwgc2RrcCwKKwkJCQkgICJVc2VzIFJFQUQvV1JJ
VEUoNiksIGRpc2FibGluZyBGVUFcbiIpOwogCQkJc2RrcC0+RFBPRlVBID0gMDsKIAkJfQogCi0J
CXByaW50ayhLRVJOX05PVElDRSAiU0NTSSBkZXZpY2UgJXM6ICIKLQkJICAgICAgICJ3cml0ZSBj
YWNoZTogJXMsIHJlYWQgY2FjaGU6ICVzLCAlc1xuIiwKLQkJICAgICAgIGRpc2tuYW1lLAorCQlz
ZF9wcmludGsoS0VSTl9OT1RJQ0UsIHNka3AsCisJCSAgICAgICAiV3JpdGUgY2FjaGU6ICVzLCBy
ZWFkIGNhY2hlOiAlcywgJXNcbiIsCiAJCSAgICAgICBzZGtwLT5XQ0UgPyAiZW5hYmxlZCIgOiAi
ZGlzYWJsZWQiLAogCQkgICAgICAgc2RrcC0+UkNEID8gImRpc2FibGVkIiA6ICJlbmFibGVkIiwK
IAkJICAgICAgIHNka3AtPkRQT0ZVQSA/ICJzdXBwb3J0cyBEUE8gYW5kIEZVQSIKQEAgLTE1MTgs
MTUgKzE0NDMsMTMgQEAgYmFkX3NlbnNlOgogCWlmIChzY3NpX3NlbnNlX3ZhbGlkKCZzc2hkcikg
JiYKIAkgICAgc3NoZHIuc2Vuc2Vfa2V5ID09IElMTEVHQUxfUkVRVUVTVCAmJgogCSAgICBzc2hk
ci5hc2MgPT0gMHgyNCAmJiBzc2hkci5hc2NxID09IDB4MCkKLQkJcHJpbnRrKEtFUk5fTk9USUNF
ICIlczogY2FjaGUgZGF0YSB1bmF2YWlsYWJsZVxuIiwKLQkJICAgICAgIGRpc2tuYW1lKTsJLyog
SW52YWxpZCBmaWVsZCBpbiBDREIgKi8KKwkJLyogSW52YWxpZCBmaWVsZCBpbiBDREIgKi8KKwkJ
c2RfcHJpbnRrKEtFUk5fTk9USUNFLCBzZGtwLCAiQ2FjaGUgZGF0YSB1bmF2YWlsYWJsZVxuIik7
CiAJZWxzZQotCQlwcmludGsoS0VSTl9FUlIgIiVzOiBhc2tpbmcgZm9yIGNhY2hlIGRhdGEgZmFp
bGVkXG4iLAotCQkgICAgICAgZGlza25hbWUpOworCQlzZF9wcmludGsoS0VSTl9FUlIsIHNka3As
ICJBc2tpbmcgZm9yIGNhY2hlIGRhdGEgZmFpbGVkXG4iKTsKIAogZGVmYXVsdHM6Ci0JcHJpbnRr
KEtFUk5fRVJSICIlczogYXNzdW1pbmcgZHJpdmUgY2FjaGU6IHdyaXRlIHRocm91Z2hcbiIsCi0J
ICAgICAgIGRpc2tuYW1lKTsKKwlzZF9wcmludGsoS0VSTl9FUlIsIHNka3AsICJBc3N1bWluZyBk
cml2ZSBjYWNoZTogd3JpdGUgdGhyb3VnaFxuIik7CiAJc2RrcC0+V0NFID0gMDsKIAlzZGtwLT5S
Q0QgPSAwOwogCXNka3AtPkRQT0ZVQSA9IDA7CkBAIC0xNTU1LDggKzE0NzgsOCBAQCBzdGF0aWMg
aW50IHNkX3JldmFsaWRhdGVfZGlzayhzdHJ1Y3QgZ2VuZGlzayAqZGlzaykKIAogCWJ1ZmZlciA9
IGttYWxsb2MoU0RfQlVGX1NJWkUsIEdGUF9LRVJORUwgfCBfX0dGUF9ETUEpOwogCWlmICghYnVm
ZmVyKSB7Ci0JCXByaW50ayhLRVJOX1dBUk5JTkcgIihzZF9yZXZhbGlkYXRlX2Rpc2s6KSBNZW1v
cnkgYWxsb2NhdGlvbiAiCi0JCSAgICAgICAiZmFpbHVyZS5cbiIpOworCQlzZF9wcmludGsoS0VS
Tl9XQVJOSU5HLCBzZGtwLCAic2RfcmV2YWxpZGF0ZV9kaXNrOiBNZW1vcnkgIgorCQkJICAiYWxs
b2NhdGlvbiBmYWlsdXJlLlxuIik7CiAJCWdvdG8gb3V0OwogCX0KIApAQCAtMTU2OCwxNiArMTQ5
MSwxNiBAQCBzdGF0aWMgaW50IHNkX3JldmFsaWRhdGVfZGlzayhzdHJ1Y3QgZ2VuZGlzayAqZGlz
aykKIAlzZGtwLT5XQ0UgPSAwOwogCXNka3AtPlJDRCA9IDA7CiAKLQlzZF9zcGludXBfZGlzayhz
ZGtwLCBkaXNrLT5kaXNrX25hbWUpOworCXNkX3NwaW51cF9kaXNrKHNka3ApOwogCiAJLyoKIAkg
KiBXaXRob3V0IG1lZGlhIHRoZXJlIGlzIG5vIHJlYXNvbiB0byBhc2s7IG1vcmVvdmVyLCBzb21l
IGRldmljZXMKIAkgKiByZWFjdCBiYWRseSBpZiB3ZSBkby4KIAkgKi8KIAlpZiAoc2RrcC0+bWVk
aWFfcHJlc2VudCkgewotCQlzZF9yZWFkX2NhcGFjaXR5KHNka3AsIGRpc2stPmRpc2tfbmFtZSwg
YnVmZmVyKTsKLQkJc2RfcmVhZF93cml0ZV9wcm90ZWN0X2ZsYWcoc2RrcCwgZGlzay0+ZGlza19u
YW1lLCBidWZmZXIpOwotCQlzZF9yZWFkX2NhY2hlX3R5cGUoc2RrcCwgZGlzay0+ZGlza19uYW1l
LCBidWZmZXIpOworCQlzZF9yZWFkX2NhcGFjaXR5KHNka3AsIGJ1ZmZlcik7CisJCXNkX3JlYWRf
d3JpdGVfcHJvdGVjdF9mbGFnKHNka3AsIGJ1ZmZlcik7CisJCXNkX3JlYWRfY2FjaGVfdHlwZShz
ZGtwLCBidWZmZXIpOwogCX0KIAogCS8qCkBAIC0xNzA5LDggKzE2MzIsOCBAQCBzdGF0aWMgaW50
IHNkX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlkZXZfc2V0X2RydmRhdGEoZGV2LCBzZGtw
KTsKIAlhZGRfZGlzayhnZCk7CiAKLQlzZGV2X3ByaW50ayhLRVJOX05PVElDRSwgc2RwLCAiQXR0
YWNoZWQgc2NzaSAlc2Rpc2sgJXNcbiIsCi0JCSAgICBzZHAtPnJlbW92YWJsZSA/ICJyZW1vdmFi
bGUgIiA6ICIiLCBnZC0+ZGlza19uYW1lKTsKKwlzZF9wcmludGsoS0VSTl9OT1RJQ0UsIHNka3As
ICJBdHRhY2hlZCBTQ1NJICVzZGlza1xuIiwKKwkJICBzZHAtPnJlbW92YWJsZSA/ICJyZW1vdmFi
bGUgIiA6ICIiKTsKIAogCXJldHVybiAwOwogCkBAIC0xNzgxLDE2ICsxNzA0LDE0IEBAIHN0YXRp
YyB2b2lkIHNjc2lfZGlza19yZWxlYXNlKHN0cnVjdCBjbGFzc19kZXZpY2UgKmNkZXYpCiAgKi8K
IHN0YXRpYyB2b2lkIHNkX3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldikKIHsKLQlzdHJ1Y3Qg
c2NzaV9kZXZpY2UgKnNkcCA9IHRvX3Njc2lfZGV2aWNlKGRldik7CiAJc3RydWN0IHNjc2lfZGlz
ayAqc2RrcCA9IHNjc2lfZGlza19nZXRfZnJvbV9kZXYoZGV2KTsKIAogCWlmICghc2RrcCkKIAkJ
cmV0dXJuOyAgICAgICAgIC8qIHRoaXMgY2FuIGhhcHBlbiAqLwogCiAJaWYgKHNka3AtPldDRSkg
ewotCQlwcmludGsoS0VSTl9OT1RJQ0UgIlN5bmNocm9uaXppbmcgU0NTSSBjYWNoZSBmb3IgZGlz
ayAlczogXG4iLAotCQkJCXNka3AtPmRpc2stPmRpc2tfbmFtZSk7Ci0JCXNkX3N5bmNfY2FjaGUo
c2RwKTsKKwkJc2RfcHJpbnRrKEtFUk5fTk9USUNFLCBzZGtwLCAiU3luY2hyb25pemluZyBTQ1NJ
IGNhY2hlXG4iKTsKKwkJc2Rfc3luY19jYWNoZShzZGtwKTsKIAl9CiAJc2NzaV9kaXNrX3B1dChz
ZGtwKTsKIH0KQEAgLTE4NTIsMyArMTc3MywxOSBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgZXhpdF9z
ZCh2b2lkKQogCiBtb2R1bGVfaW5pdChpbml0X3NkKTsKIG1vZHVsZV9leGl0KGV4aXRfc2QpOwor
CitzdGF0aWMgdm9pZCBzZF9wcmludF9zZW5zZV9oZHIoc3RydWN0IHNjc2lfZGlzayAqc2RrcCwK
KwkJCSAgICAgICBzdHJ1Y3Qgc2NzaV9zZW5zZV9oZHIgKnNzaGRyKQoreworCXNkX3ByaW50ayhL
RVJOX0lORk8sIHNka3AsICIiKTsKKwlzY3NpX3Nob3dfc2Vuc2VfaGRyKHNzaGRyKTsKKwlzZF9w
cmludGsoS0VSTl9JTkZPLCBzZGtwLCAiIik7CisJc2NzaV9zaG93X2V4dGRfc2Vuc2Uoc3NoZHIt
PmFzYywgc3NoZHItPmFzY3EpOworfQorCitzdGF0aWMgdm9pZCBzZF9wcmludF9yZXN1bHQoc3Ry
dWN0IHNjc2lfZGlzayAqc2RrcCwgaW50IHJlc3VsdCkKK3sKKwlzZF9wcmludGsoS0VSTl9JTkZP
LCBzZGtwLCAiIik7CisJc2NzaV9zaG93X3Jlc3VsdChyZXN1bHQpOworfQorCmRpZmYgLS1naXQg
YS9pbmNsdWRlL3Njc2kvc2QuaCBiL2luY2x1ZGUvc2NzaS9zZC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjgyZTZhODQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3Nj
c2kvc2QuaApAQCAtMCwwICsxLDcwIEBACisjaWZuZGVmIF9TQ1NJX0RJU0tfSAorI2RlZmluZSBf
U0NTSV9ESVNLX0gKKworLyoKKyAqIE1vcmUgdGhhbiBlbm91Z2ggZm9yIGV2ZXJ5Ym9keSA7KSAg
VGhlIGh1Z2UgbnVtYmVyIG9mIG1ham9ycworICogaXMgYSBsZWZ0b3ZlciBmcm9tIDE2Yml0IGRl
dl90IGRheXMsIHdlIGRvbid0IHJlYWxseSBuZWVkIHRoYXQKKyAqIG11Y2ggbnVtYmVyc3BhY2Uu
CisgKi8KKyNkZWZpbmUgU0RfTUFKT1JTCTE2CisKKy8qCisgKiBUaGlzIGlzIGxpbWl0ZWQgYnkg
dGhlIG5hbWluZyBzY2hlbWUgZW5mb3JjZWQgaW4gc2RfcHJvYmUsCisgKiBhZGQgYW5vdGhlciBj
aGFyYWN0ZXIgdG8gaXQgaWYgeW91IHJlYWxseSBuZWVkIG1vcmUgZGlza3MuCisgKi8KKyNkZWZp
bmUgU0RfTUFYX0RJU0tTCSgoKDI2ICogMjYpICsgMjYgKyAxKSAqIDI2KQorCisvKgorICogVGlt
ZSBvdXQgaW4gc2Vjb25kcyBmb3IgZGlza3MgYW5kIE1hZ25ldG8tb3B0aWNhbHMgKHdoaWNoIGFy
ZSBzbG93ZXIpLgorICovCisjZGVmaW5lIFNEX1RJTUVPVVQJCSgzMCAqIEhaKQorI2RlZmluZSBT
RF9NT0RfVElNRU9VVAkJKDc1ICogSFopCisKKy8qCisgKiBOdW1iZXIgb2YgYWxsb3dlZCByZXRy
aWVzCisgKi8KKyNkZWZpbmUgU0RfTUFYX1JFVFJJRVMJCTUKKyNkZWZpbmUgU0RfUEFTU1RIUk9V
R0hfUkVUUklFUwkxCisKKy8qCisgKiBTaXplIG9mIHRoZSBpbml0aWFsIGRhdGEgYnVmZmVyIGZv
ciBtb2RlIGFuZCByZWFkIGNhcGFjaXR5IGRhdGEKKyAqLworI2RlZmluZSBTRF9CVUZfU0laRQkJ
NTEyCisKK3N0cnVjdCBzY3NpX2Rpc2sgeworCXN0cnVjdCBzY3NpX2RyaXZlciAqZHJpdmVyOwkv
KiBhbHdheXMgJnNkX3RlbXBsYXRlICovCisJc3RydWN0IHNjc2lfZGV2aWNlICpkZXZpY2U7CisJ
c3RydWN0IGNsYXNzX2RldmljZSBjZGV2OworCXN0cnVjdCBnZW5kaXNrCSpkaXNrOworCXVuc2ln
bmVkIGludAlvcGVuZXJzOwkvKiBwcm90ZWN0ZWQgYnkgQktMIGZvciBub3csIHl1Y2sgKi8KKwlz
ZWN0b3JfdAljYXBhY2l0eTsJLyogc2l6ZSBpbiA1MTItYnl0ZSBzZWN0b3JzICovCisJdTMyCQlp
bmRleDsKKwl1OAkJbWVkaWFfcHJlc2VudDsKKwl1OAkJd3JpdGVfcHJvdDsKKwl1bnNpZ25lZAlX
Q0UgOiAxOwkvKiBzdGF0ZSBvZiBkaXNrIFdDRSBiaXQgKi8KKwl1bnNpZ25lZAlSQ0QgOiAxOwkv
KiBzdGF0ZSBvZiBkaXNrIFJDRCBiaXQsIHVudXNlZCAqLworCXVuc2lnbmVkCURQT0ZVQSA6IDE7
CS8qIHN0YXRlIG9mIGRpc2sgRFBPRlVBIGJpdCAqLworfTsKKyNkZWZpbmUgdG9fc2NzaV9kaXNr
KG9iaikgY29udGFpbmVyX29mKG9iaixzdHJ1Y3Qgc2NzaV9kaXNrLGNkZXYpCisKK3N0YXRpYyBp
bnQgIHNkX3JldmFsaWRhdGVfZGlzayhzdHJ1Y3QgZ2VuZGlzayAqZGlzayk7CitzdGF0aWMgdm9p
ZCBzZF9yd19pbnRyKHN0cnVjdCBzY3NpX2NtbmQgKiBTQ3BudCk7CitzdGF0aWMgaW50ICBzZF9w
cm9iZShzdHJ1Y3QgZGV2aWNlICopOworc3RhdGljIGludCAgc2RfcmVtb3ZlKHN0cnVjdCBkZXZp
Y2UgKik7CitzdGF0aWMgdm9pZCBzZF9zaHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYpOworc3Rh
dGljIHZvaWQgc2RfcmVzY2FuKHN0cnVjdCBkZXZpY2UgKik7CitzdGF0aWMgaW50ICBzZF9pbml0
X2NvbW1hbmQoc3RydWN0IHNjc2lfY21uZCAqKTsKK3N0YXRpYyBpbnQgIHNkX2lzc3VlX2ZsdXNo
KHN0cnVjdCBkZXZpY2UgKiwgc2VjdG9yX3QgKik7CitzdGF0aWMgdm9pZCBzZF9wcmVwYXJlX2Zs
dXNoKHJlcXVlc3RfcXVldWVfdCAqLCBzdHJ1Y3QgcmVxdWVzdCAqKTsKK3N0YXRpYyB2b2lkIHNk
X3JlYWRfY2FwYWNpdHkoc3RydWN0IHNjc2lfZGlzayAqc2RrcCwgdW5zaWduZWQgY2hhciAqYnVm
ZmVyKTsKK3N0YXRpYyB2b2lkIHNjc2lfZGlza19yZWxlYXNlKHN0cnVjdCBjbGFzc19kZXZpY2Ug
KmNkZXYpOworc3RhdGljIHZvaWQgc2RfcHJpbnRfc2Vuc2VfaGRyKHN0cnVjdCBzY3NpX2Rpc2sg
Kiwgc3RydWN0IHNjc2lfc2Vuc2VfaGRyICopOworc3RhdGljIHZvaWQgc2RfcHJpbnRfcmVzdWx0
KHN0cnVjdCBzY3NpX2Rpc2sgKiwgaW50KTsKKworI2RlZmluZSBzZF9wcmludGsocHJlZml4LCBz
ZHNrLCBmbXQsIGEuLi4pCQkJCVwKKyAgICAgICAgKHNkc2spLT5kaXNrID8JCQkJCQkJXAorCXNk
ZXZfcHJpbnRrKHByZWZpeCwgKHNkc2spLT5kZXZpY2UsICJbJXNdICIgZm10LAkJXAorCQkgICAg
KHNkc2spLT5kaXNrLT5kaXNrX25hbWUsICMjYSkgOgkJCVwKKwlzZGV2X3ByaW50ayhwcmVmaXgs
IChzZHNrKS0+ZGV2aWNlLCBmbXQsICMjYSkKKworI2VuZGlmIC8qIF9TQ1NJX0RJU0tfSCAqLwpG
cm9tOiBUZWp1biBIZW8gPGh0ZWp1bkBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjAgTWFyIDIwMDcg
MTU6MDc6MTggKzAwMDAgKCswOTAwKQpTdWJqZWN0OiBbU0NTSV0gc2Q6IGZpeCByZXR1cm4gdmFs
dWUgb2Ygc2Rfc3luY19jYWNoZSgpClgtR2l0LVVybDogaHR0cDovL2dpdC5rZXJuZWwub3JnLz9w
PWxpbnV4JTJGa2VybmVsJTJGZ2l0JTJGdG9ydmFsZHMlMkZsaW51eC0yLjYuZ2l0O2E9Y29tbWl0
ZGlmZl9wbGFpbjtoPTM3MjEwNTBhZmM2Y2I2ZGRmNmRlMGY3ODJlMjA1NGViY2MyMjVlOWI7aHA9
YWQ4YzMxYmI2OWQ2MGMwYzZiYzY0MzFiY2NkZjY3ZTVhOTZjMGQzMQoKW1NDU0ldIHNkOiBmaXgg
cmV0dXJuIHZhbHVlIG9mIHNkX3N5bmNfY2FjaGUoKQoKc2Rfc3luY19jYWNoZSgpIHNob3VsZCBy
ZXR1cm4gLWVycm5vIG9uIGVycm9yLCBmaXggaXQuCgpTaWduZWQtb2ZmLWJ5OiBUZWp1biBIZW8g
PGh0ZWp1bkBnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IEphbWVzIEJvdHRvbWxleSA8SmFtZXMu
Qm90dG9tbGV5QFN0ZWVsRXllLmNvbT4KLS0tCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Nk
LmMgYi9kcml2ZXJzL3Njc2kvc2QuYwppbmRleCAxMmUxOGJiLi4zZGRhNzdjIDEwMDY0NAotLS0g
YS9kcml2ZXJzL3Njc2kvc2QuYworKysgYi9kcml2ZXJzL3Njc2kvc2QuYwpAQCAtNzY2LDcgKzc2
Niw5IEBAIHN0YXRpYyBpbnQgc2Rfc3luY19jYWNoZShzdHJ1Y3Qgc2NzaV9kaXNrICpzZGtwKQog
CQkJc2RfcHJpbnRfc2Vuc2VfaGRyKHNka3AsICZzc2hkcik7CiAJfQogCi0JcmV0dXJuIHJlczsK
KwlpZiAocmVzKQorCQlyZXR1cm4gLUVJTzsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBz
ZF9pc3N1ZV9mbHVzaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHNlY3Rvcl90ICplcnJvcl9zZWN0b3Ip
CkZyb206IFRlanVuIEhlbyA8aHRlanVuQGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAyMCBNYXIgMjAw
NyAxNToxMzo1OSArMDAwMCAoKzA5MDApClN1YmplY3Q6IFtTQ1NJXSBzZDogaW1wbGVtZW50IFNU
QVJUL1NUT1AgbWFuYWdlbWVudApYLUdpdC1Vcmw6IGh0dHA6Ly9naXQua2VybmVsLm9yZy8/cD1s
aW51eCUyRmtlcm5lbCUyRmdpdCUyRnRvcnZhbGRzJTJGbGludXgtMi42LmdpdDthPWNvbW1pdGRp
ZmZfcGxhaW47aD1jM2M5NGM1YTJmYjQzYTY1NGU3NzdmNTA5ZDUwMzJiMGRiOGVkMDlmO2hwPTM3
MjEwNTBhZmM2Y2I2ZGRmNmRlMGY3ODJlMjA1NGViY2MyMjVlOWIKCltTQ1NJXSBzZDogaW1wbGVt
ZW50IFNUQVJUL1NUT1AgbWFuYWdlbWVudAoKSW1wbGVtZW50IFNCQyBTVEFSVC9TVE9QIG1hbmFn
ZW1lbnQuICBzZGV2LT5tYW5nZV9zdGFydF9zdG9wIGlzIGFkZGVkLgpXaGVuIGl0J3Mgc2V0IHRv
IG9uZSwgc2QgU1RPUHMgdGhlIGRldmljZSBvbiBzdXNwZW5kIGFuZCBzaHV0ZG93biBhbmQKU1RB
UlRzIGl0IG9uIHJlc3VtZS4gIHNkZXYtPm1hbmFnZV9zdGFydF9zdG9wIGRlZmF1bHRzIGlzIGlu
IHNkZXYKaW5zdGVhZCBvZiBzY3NpX2Rpc2sgY2RldiB0byBhbGxvdyAtPnNsYXZlX2NvbmZpZygp
IG92ZXJyaWRlIHRoZQpkZWZhdWx0IGNvbmZpZ3VyYXRpb24gYnV0IGlzIGV4cG9ydGVkIHVuZGVy
IHNjc2lfZGlzayBzeXNmcyBub2RlIGFzCnNkZXYtPmFsbG93X3Jlc3RhcnQgaXMuCgpXaGVuIG1h
bmFnZV9zdGFydF9zdG9wIGlzIHplcm8gKHRoZSBkZWZhdWx0IHZhbHVlKSwgdGhpcyBwYXRjaCBk
b2Vzbid0CmludHJvZHVjZSBhbnkgYmVoYXZpb3IgY2hhbmdlLgoKU2lnbmVkLW9mZi1ieTogVGVq
dW4gSGVvIDxodGVqdW5AZ21haWwuY29tPgoKUmVqZWN0aW9ucyBmaXhlZCBhbmQKU2lnbmVkLW9m
Zi1ieTogSmFtZXMgQm90dG9tbGV5IDxKYW1lcy5Cb3R0b21sZXlAU3RlZWxFeWUuY29tPgotLS0K
CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9zeXNmcy5jIGIvZHJpdmVycy9zY3NpL3Nj
c2lfc3lzZnMuYwppbmRleCBjMjc1ZGNhLi45NmRiNTFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Nj
c2kvc2NzaV9zeXNmcy5jCisrKyBiL2RyaXZlcnMvc2NzaS9zY3NpX3N5c2ZzLmMKQEAgLTI3OCw2
ICsyNzgsNyBAQCBzdGF0aWMgaW50IHNjc2lfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwg
c3RydWN0IGRldmljZV9kcml2ZXIgKmdlbmRydikKIAogc3RhdGljIGludCBzY3NpX2J1c19zdXNw
ZW5kKHN0cnVjdCBkZXZpY2UgKiBkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkKIHsKKwlzdHJ1Y3Qg
ZGV2aWNlX2RyaXZlciAqZHJ2ID0gZGV2LT5kcml2ZXI7CiAJc3RydWN0IHNjc2lfZGV2aWNlICpz
ZGV2ID0gdG9fc2NzaV9kZXZpY2UoZGV2KTsKIAlzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlICpz
aHQgPSBzZGV2LT5ob3N0LT5ob3N0dDsKIAlpbnQgZXJyOwpAQCAtMjg2LDIzICsyODcsNDUgQEAg
c3RhdGljIGludCBzY3NpX2J1c19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKiBkZXYsIHBtX21lc3Nh
Z2VfdCBzdGF0ZSkKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0JaWYgKHNodC0+c3VzcGVu
ZCkKKwkvKiBjYWxsIEhMRCBzdXNwZW5kIGZpcnN0ICovCisJaWYgKGRydiAmJiBkcnYtPnN1c3Bl
bmQpIHsKKwkJZXJyID0gZHJ2LT5zdXNwZW5kKGRldiwgc3RhdGUpOworCQlpZiAoZXJyKQorCQkJ
cmV0dXJuIGVycjsKKwl9CisKKwkvKiB0aGVuLCBjYWxsIGhvc3Qgc3VzcGVuZCAqLworCWlmIChz
aHQtPnN1c3BlbmQpIHsKIAkJZXJyID0gc2h0LT5zdXNwZW5kKHNkZXYsIHN0YXRlKTsKKwkJaWYg
KGVycikgeworCQkJaWYgKGRydiAmJiBkcnYtPnJlc3VtZSkKKwkJCQlkcnYtPnJlc3VtZShkZXYp
OworCQkJcmV0dXJuIGVycjsKKwkJfQorCX0KIAotCXJldHVybiBlcnI7CisJcmV0dXJuIDA7CiB9
CiAKIHN0YXRpYyBpbnQgc2NzaV9idXNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKiBkZXYpCiB7CisJ
c3RydWN0IGRldmljZV9kcml2ZXIgKmRydiA9IGRldi0+ZHJpdmVyOwogCXN0cnVjdCBzY3NpX2Rl
dmljZSAqc2RldiA9IHRvX3Njc2lfZGV2aWNlKGRldik7CiAJc3RydWN0IHNjc2lfaG9zdF90ZW1w
bGF0ZSAqc2h0ID0gc2Rldi0+aG9zdC0+aG9zdHQ7Ci0JaW50IGVyciA9IDA7CisJaW50IGVyciA9
IDAsIGVycjIgPSAwOwogCisJLyogY2FsbCBob3N0IHJlc3VtZSBmaXJzdCAqLwogCWlmIChzaHQt
PnJlc3VtZSkKIAkJZXJyID0gc2h0LT5yZXN1bWUoc2Rldik7CiAKKwkvKiB0aGVuLCBjYWxsIEhM
RCByZXN1bWUgKi8KKwlpZiAoZHJ2ICYmIGRydi0+cmVzdW1lKQorCQllcnIyID0gZHJ2LT5yZXN1
bWUoZGV2KTsKKwogCXNjc2lfZGV2aWNlX3Jlc3VtZShzZGV2KTsKLQlyZXR1cm4gZXJyOworCisJ
LyogZmF2b3IgTExEIGZhaWx1cmUgKi8KKwlyZXR1cm4gZXJyID8gZXJyIDogZXJyMjs7CiB9CiAK
IHN0cnVjdCBidXNfdHlwZSBzY3NpX2J1c190eXBlID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9z
Y3NpL3NkLmMgYi9kcml2ZXJzL3Njc2kvc2QuYwppbmRleCAzZGRhNzdjLi40OWE5NGFlIDEwMDY0
NAotLS0gYS9kcml2ZXJzL3Njc2kvc2QuYworKysgYi9kcml2ZXJzL3Njc2kvc2QuYwpAQCAtMTQ3
LDYgKzE0NywyMCBAQCBzdGF0aWMgc3NpemVfdCBzZF9zdG9yZV9jYWNoZV90eXBlKHN0cnVjdCBj
bGFzc19kZXZpY2UgKmNkZXYsIGNvbnN0IGNoYXIgKmJ1ZiwKIAlyZXR1cm4gY291bnQ7CiB9CiAK
K3N0YXRpYyBzc2l6ZV90IHNkX3N0b3JlX21hbmFnZV9zdGFydF9zdG9wKHN0cnVjdCBjbGFzc19k
ZXZpY2UgKmNkZXYsCisJCQkJCSAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJ
c3RydWN0IHNjc2lfZGlzayAqc2RrcCA9IHRvX3Njc2lfZGlzayhjZGV2KTsKKwlzdHJ1Y3Qgc2Nz
aV9kZXZpY2UgKnNkcCA9IHNka3AtPmRldmljZTsKKworCWlmICghY2FwYWJsZShDQVBfU1lTX0FE
TUlOKSkKKwkJcmV0dXJuIC1FQUNDRVM7CisKKwlzZHAtPm1hbmFnZV9zdGFydF9zdG9wID0gc2lt
cGxlX3N0cnRvdWwoYnVmLCBOVUxMLCAxMCk7CisKKwlyZXR1cm4gY291bnQ7Cit9CisKIHN0YXRp
YyBzc2l6ZV90IHNkX3N0b3JlX2FsbG93X3Jlc3RhcnQoc3RydWN0IGNsYXNzX2RldmljZSAqY2Rl
diwgY29uc3QgY2hhciAqYnVmLAogCQkJCSAgICAgIHNpemVfdCBjb3VudCkKIHsKQEAgLTE3OSw2
ICsxOTMsMTQgQEAgc3RhdGljIHNzaXplX3Qgc2Rfc2hvd19mdWEoc3RydWN0IGNsYXNzX2Rldmlj
ZSAqY2RldiwgY2hhciAqYnVmKQogCXJldHVybiBzbnByaW50ZihidWYsIDIwLCAiJXVcbiIsIHNk
a3AtPkRQT0ZVQSk7CiB9CiAKK3N0YXRpYyBzc2l6ZV90IHNkX3Nob3dfbWFuYWdlX3N0YXJ0X3N0
b3Aoc3RydWN0IGNsYXNzX2RldmljZSAqY2RldiwgY2hhciAqYnVmKQoreworCXN0cnVjdCBzY3Np
X2Rpc2sgKnNka3AgPSB0b19zY3NpX2Rpc2soY2Rldik7CisJc3RydWN0IHNjc2lfZGV2aWNlICpz
ZHAgPSBzZGtwLT5kZXZpY2U7CisKKwlyZXR1cm4gc25wcmludGYoYnVmLCAyMCwgIiV1XG4iLCBz
ZHAtPm1hbmFnZV9zdGFydF9zdG9wKTsKK30KKwogc3RhdGljIHNzaXplX3Qgc2Rfc2hvd19hbGxv
d19yZXN0YXJ0KHN0cnVjdCBjbGFzc19kZXZpY2UgKmNkZXYsIGNoYXIgKmJ1ZikKIHsKIAlzdHJ1
Y3Qgc2NzaV9kaXNrICpzZGtwID0gdG9fc2NzaV9kaXNrKGNkZXYpOwpAQCAtMTkyLDYgKzIxNCw4
IEBAIHN0YXRpYyBzdHJ1Y3QgY2xhc3NfZGV2aWNlX2F0dHJpYnV0ZSBzZF9kaXNrX2F0dHJzW10g
PSB7CiAJX19BVFRSKEZVQSwgU19JUlVHTywgc2Rfc2hvd19mdWEsIE5VTEwpLAogCV9fQVRUUihh
bGxvd19yZXN0YXJ0LCBTX0lSVUdPfFNfSVdVU1IsIHNkX3Nob3dfYWxsb3dfcmVzdGFydCwKIAkg
ICAgICAgc2Rfc3RvcmVfYWxsb3dfcmVzdGFydCksCisJX19BVFRSKG1hbmFnZV9zdGFydF9zdG9w
LCBTX0lSVUdPfFNfSVdVU1IsIHNkX3Nob3dfbWFuYWdlX3N0YXJ0X3N0b3AsCisJICAgICAgIHNk
X3N0b3JlX21hbmFnZV9zdGFydF9zdG9wKSwKIAlfX0FUVFJfTlVMTCwKIH07CiAKQEAgLTIwOCw2
ICsyMzIsOCBAQCBzdGF0aWMgc3RydWN0IHNjc2lfZHJpdmVyIHNkX3RlbXBsYXRlID0gewogCQku
bmFtZQkJPSAic2QiLAogCQkucHJvYmUJCT0gc2RfcHJvYmUsCiAJCS5yZW1vdmUJCT0gc2RfcmVt
b3ZlLAorCQkuc3VzcGVuZAk9IHNkX3N1c3BlbmQsCisJCS5yZXN1bWUJCT0gc2RfcmVzdW1lLAog
CQkuc2h1dGRvd24JPSBzZF9zaHV0ZG93biwKIAl9LAogCS5yZXNjYW4JCQk9IHNkX3Jlc2NhbiwK
QEAgLTE3MDcsNiArMTczMywzMiBAQCBzdGF0aWMgdm9pZCBzY3NpX2Rpc2tfcmVsZWFzZShzdHJ1
Y3QgY2xhc3NfZGV2aWNlICpjZGV2KQogCWtmcmVlKHNka3ApOwogfQogCitzdGF0aWMgaW50IHNk
X3N0YXJ0X3N0b3BfZGV2aWNlKHN0cnVjdCBzY3NpX2RldmljZSAqc2RwLCBpbnQgc3RhcnQpCit7
CisJdW5zaWduZWQgY2hhciBjbWRbNl0gPSB7IFNUQVJUX1NUT1AgfTsJLyogU1RBUlRfVkFMSUQg
Ki8KKwlzdHJ1Y3Qgc2NzaV9zZW5zZV9oZHIgc3NoZHI7CisJaW50IHJlczsKKworCWlmIChzdGFy
dCkKKwkJY21kWzRdIHw9IDE7CS8qIFNUQVJUICovCisKKwlpZiAoIXNjc2lfZGV2aWNlX29ubGlu
ZShzZHApKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJlcyA9IHNjc2lfZXhlY3V0ZV9yZXEoc2Rw
LCBjbWQsIERNQV9OT05FLCBOVUxMLCAwLCAmc3NoZHIsCisJCQkgICAgICAgU0RfVElNRU9VVCwg
U0RfTUFYX1JFVFJJRVMpOworCWlmIChyZXMpIHsKKwkJcHJpbnRrKEtFUk5fV0FSTklORyAiRkFJ
TEVEXG4gIHN0YXR1cyA9ICV4LCBtZXNzYWdlID0gJTAyeCwgIgorCQkgICAgICAgImhvc3QgPSAl
ZCwgZHJpdmVyID0gJTAyeFxuICAiLAorCQkgICAgICAgc3RhdHVzX2J5dGUocmVzKSwgbXNnX2J5
dGUocmVzKSwKKwkJICAgICAgIGhvc3RfYnl0ZShyZXMpLCBkcml2ZXJfYnl0ZShyZXMpKTsKKwkJ
aWYgKGRyaXZlcl9ieXRlKHJlcykgJiBEUklWRVJfU0VOU0UpCisJCQlzY3NpX3ByaW50X3NlbnNl
X2hkcigic2QiLCAmc3NoZHIpOworCX0KKworCXJldHVybiByZXM7Cit9CisKIC8qCiAgKiBTZW5k
IGEgU1lOQ0hST05JWkUgQ0FDSEUgaW5zdHJ1Y3Rpb24gZG93biB0byB0aGUgZGV2aWNlIHRocm91
Z2gKICAqIHRoZSBub3JtYWwgU0NTSSBjb21tYW5kIHN0cnVjdHVyZS4gIFdhaXQgZm9yIHRoZSBj
b21tYW5kIHRvCkBAIC0xNzE0LDYgKzE3NjYsNyBAQCBzdGF0aWMgdm9pZCBzY3NpX2Rpc2tfcmVs
ZWFzZShzdHJ1Y3QgY2xhc3NfZGV2aWNlICpjZGV2KQogICovCiBzdGF0aWMgdm9pZCBzZF9zaHV0
ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CisJc3RydWN0IHNjc2lfZGV2aWNlICpzZHAgPSB0
b19zY3NpX2RldmljZShkZXYpOwogCXN0cnVjdCBzY3NpX2Rpc2sgKnNka3AgPSBzY3NpX2Rpc2tf
Z2V0X2Zyb21fZGV2KGRldik7CiAKIAlpZiAoIXNka3ApCkBAIC0xNzIzLDkgKzE3NzYsNTcgQEAg
c3RhdGljIHZvaWQgc2Rfc2h1dGRvd24oc3RydWN0IGRldmljZSAqZGV2KQogCQlzZF9wcmludGso
S0VSTl9OT1RJQ0UsIHNka3AsICJTeW5jaHJvbml6aW5nIFNDU0kgY2FjaGVcbiIpOwogCQlzZF9z
eW5jX2NhY2hlKHNka3ApOwogCX0KKworCWlmIChzeXN0ZW1fc3RhdGUgIT0gU1lTVEVNX1JFU1RB
UlQgJiYgc2RwLT5tYW5hZ2Vfc3RhcnRfc3RvcCkgeworCQlwcmludGsoS0VSTl9OT1RJQ0UgIlN0
b3BwaW5nIGRpc2sgJXM6IFxuIiwKKwkJICAgICAgIHNka3AtPmRpc2stPmRpc2tfbmFtZSk7CisJ
CXNkX3N0YXJ0X3N0b3BfZGV2aWNlKHNkcCwgMCk7CisJfQorCiAJc2NzaV9kaXNrX3B1dChzZGtw
KTsKIH0KIAorc3RhdGljIGludCBzZF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgcG1fbWVz
c2FnZV90IG1lc2cpCit7CisJc3RydWN0IHNjc2lfZGV2aWNlICpzZHAgPSB0b19zY3NpX2Rldmlj
ZShkZXYpOworCXN0cnVjdCBzY3NpX2Rpc2sgKnNka3AgPSBzY3NpX2Rpc2tfZ2V0X2Zyb21fZGV2
KGRldik7CisJaW50IHJldDsKKworCWlmICghc2RrcCkKKwkJcmV0dXJuIDA7CS8qIHRoaXMgY2Fu
IGhhcHBlbiAqLworCisJaWYgKHNka3AtPldDRSkgeworCQlwcmludGsoS0VSTl9OT1RJQ0UgIlN5
bmNocm9uaXppbmcgU0NTSSBjYWNoZSBmb3IgZGlzayAlczogXG4iLAorCQkJCXNka3AtPmRpc2st
PmRpc2tfbmFtZSk7CisJCXJldCA9IHNkX3N5bmNfY2FjaGUoc2RrcCk7CisJCWlmIChyZXQpCisJ
CQlyZXR1cm4gcmV0OworCX0KKworCWlmIChtZXNnLmV2ZW50ID09IFBNX0VWRU5UX1NVU1BFTkQg
JiYgc2RwLT5tYW5hZ2Vfc3RhcnRfc3RvcCkgeworCQlwcmludGsoS0VSTl9OT1RJQ0UgIlN0b3Bw
aW5nIGRpc2sgJXM6IFxuIiwKKwkJICAgICAgIHNka3AtPmRpc2stPmRpc2tfbmFtZSk7CisJCXJl
dCA9IHNkX3N0YXJ0X3N0b3BfZGV2aWNlKHNkcCwgMCk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4g
cmV0OworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNkX3Jlc3VtZShzdHJ1Y3Qg
ZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHNjc2lfZGV2aWNlICpzZHAgPSB0b19zY3NpX2Rldmlj
ZShkZXYpOworCXN0cnVjdCBzY3NpX2Rpc2sgKnNka3AgPSBzY3NpX2Rpc2tfZ2V0X2Zyb21fZGV2
KGRldik7CisKKwlpZiAoIXNkcC0+bWFuYWdlX3N0YXJ0X3N0b3ApCisJCXJldHVybiAwOworCisJ
cHJpbnRrKEtFUk5fTk9USUNFICJTdGFydGluZyBkaXNrICVzOiBcbiIsIHNka3AtPmRpc2stPmRp
c2tfbmFtZSk7CisKKwlyZXR1cm4gc2Rfc3RhcnRfc3RvcF9kZXZpY2Uoc2RwLCAxKTsKK30KKwog
LyoqCiAgKglpbml0X3NkIC0gZW50cnkgcG9pbnQgZm9yIHRoaXMgZHJpdmVyIChib3RoIHdoZW4g
YnVpbHQgaW4gb3Igd2hlbgogICoJYSBtb2R1bGUpLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zY3Np
L3Njc2lfZGV2aWNlLmggYi9pbmNsdWRlL3Njc2kvc2NzaV9kZXZpY2UuaAppbmRleCBjODZlNmNl
Li5iMDVjZDNiIDEwMDY0NAotLS0gYS9pbmNsdWRlL3Njc2kvc2NzaV9kZXZpY2UuaAorKysgYi9p
bmNsdWRlL3Njc2kvc2NzaV9kZXZpY2UuaApAQCAtMTIwLDYgKzEyMCw3IEBAIHN0cnVjdCBzY3Np
X2RldmljZSB7CiAJdW5zaWduZWQgdXNlXzE5Ml9ieXRlc19mb3JfM2Y6MTsgLyogYXNrIGZvciAx
OTIgYnl0ZXMgZnJvbSBwYWdlIDB4M2YgKi8KIAl1bnNpZ25lZCBub19zdGFydF9vbl9hZGQ6MTsJ
LyogZG8gbm90IGlzc3VlIHN0YXJ0IG9uIGFkZCAqLwogCXVuc2lnbmVkIGFsbG93X3Jlc3RhcnQ6
MTsgLyogaXNzdWUgU1RBUlRfVU5JVCBpbiBlcnJvciBoYW5kbGVyICovCisJdW5zaWduZWQgbWFu
YWdlX3N0YXJ0X3N0b3A6MTsJLyogTGV0IEhMRCAoc2QpIG1hbmFnZSBzdGFydC9zdG9wICovCiAJ
dW5zaWduZWQgbm9fdWxkX2F0dGFjaDoxOyAvKiBkaXNhYmxlIGNvbm5lY3RpbmcgdG8gdXBwZXIg
bGV2ZWwgZHJpdmVycyAqLwogCXVuc2lnbmVkIHNlbGVjdF9ub19hdG46MTsKIAl1bnNpZ25lZCBm
aXhfY2FwYWNpdHk6MTsJLyogUkVBRF9DQVBBQ0lUWSBpcyB0b28gaGlnaCBieSAxICovCmRpZmYg
LS1naXQgYS9pbmNsdWRlL3Njc2kvc2QuaCBiL2luY2x1ZGUvc2NzaS9zZC5oCmluZGV4IDgyZTZh
ODQuLjUyNjE0ODggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc2NzaS9zZC5oCisrKyBiL2luY2x1ZGUv
c2NzaS9zZC5oCkBAIC01Miw2ICs1Miw4IEBAIHN0YXRpYyB2b2lkIHNkX3J3X2ludHIoc3RydWN0
IHNjc2lfY21uZCAqIFNDcG50KTsKIHN0YXRpYyBpbnQgIHNkX3Byb2JlKHN0cnVjdCBkZXZpY2Ug
Kik7CiBzdGF0aWMgaW50ICBzZF9yZW1vdmUoc3RydWN0IGRldmljZSAqKTsKIHN0YXRpYyB2b2lk
IHNkX3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldik7CitzdGF0aWMgaW50IHNkX3N1c3BlbmQo
c3RydWN0IGRldmljZSAqZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpOworc3RhdGljIGludCBzZF9y
ZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KTsKIHN0YXRpYyB2b2lkIHNkX3Jlc2NhbihzdHJ1Y3Qg
ZGV2aWNlICopOwogc3RhdGljIGludCAgc2RfaW5pdF9jb21tYW5kKHN0cnVjdCBzY3NpX2NtbmQg
Kik7CiBzdGF0aWMgaW50ICBzZF9pc3N1ZV9mbHVzaChzdHJ1Y3QgZGV2aWNlICosIHNlY3Rvcl90
ICopOwpSZWltcGxlbWVudCBzdXNwZW5kL3Jlc3VtZSBzdXBwb3J0IHVzaW5nIHNkZXYtPm1hbmFn
ZV9zdGFydF9zdG9wLgoKKiBEZXZpY2Ugc3VzcGVuZC9yZXN1bWUgaXMgbm93IFNDU0kgbGF5ZXIn
cyByZXNwb25zaWJpbGl0eSBhbmQgdGhlCiAgY29kZSBpcyBzaW1wbGlmaWVkIGEgbG90LgoKKiBE
UE0gaXMgZHJvcHBlZC4gIFRoaXMgYWxzbyBzaW1wbGlmaWVzIGNvZGUgYSBsb3QuICBTdXNwZW5k
L3Jlc3VtZQogIHN0YXR1cyBpcyBwb3J0LXdpZGUgbm93LgoKKiBhdGFfc2NzaV9kZXZpY2Vfc3Vz
cGVuZC9yZXN1bWUoKSBhbmQgYXRhX2Rldl9yZWFkeSgpIHJlbW92ZWQuCgoqIFJlc3VtZSBub3cg
aGFzIHRvIHdhaXQgZm9yIGRpc2sgdG8gc3BpbiB1cCBiZWZvcmUgcHJvY2VlZGluZy4gIEkKICBj
b3VsZG4ndCBmaW5kIGVhc3kgd2F5IG91dCBhcyBsaWJhdGEgaXMgaW4gRUggd2FpdGluZyBmb3Ig
dGhlCiAgZGlzayB0byBiZSByZWFkeSBhbmQgc2QgaXMgd2FpdGluZyBmb3IgRUggdG8gY29tcGxl
dGUgdG8gaXNzdWUKICBTVEFSVF9TVE9QLgoKKiBzZGV2LT5tYW5hZ2Vfc3RhcnRfc3RvcCBpcyBz
ZXQgdG8gMSBpbiBhdGFfc2NzaV9zbGF2ZV9jb25maWcoKS4KICBUaGlzIGZpeGVzIHNwaW5kb3du
IG9uIHNodXRkb3duIGFuZCBzdXNwZW5kLXRvLWRpc2suCgpTaWduZWQtb2ZmLWJ5OiBUZWp1biBI
ZW8gPGh0ZWp1bkBnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9hdGEvYWhjaS5jICAgICAgICAgICAg
ICB8ICAgIDQgLQogZHJpdmVycy9hdGEvYXRhX2dlbmVyaWMuYyAgICAgICB8ICAgIDYgKy0KIGRy
aXZlcnMvYXRhL2F0YV9waWl4LmMgICAgICAgICAgfCAgICA0IC0KIGRyaXZlcnMvYXRhL2xpYmF0
YS1jb3JlLmMgICAgICAgfCAgIDM5ICstLS0tLS0KIGRyaXZlcnMvYXRhL2xpYmF0YS1laC5jICAg
ICAgICAgfCAgMjM3ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJp
dmVycy9hdGEvbGliYXRhLXNjc2kuYyAgICAgICB8ICAxMjkgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogZHJpdmVycy9hdGEvcGF0YV9hbGkuYyAgICAgICAgICB8ICAgIDQgLQogZHJpdmVycy9hdGEv
cGF0YV9hbWQuYyAgICAgICAgICB8ICAgIDQgLQogZHJpdmVycy9hdGEvcGF0YV9hdGlpeHAuYyAg
ICAgICB8ICAgIDQgLQogZHJpdmVycy9hdGEvcGF0YV9jbWQ2NHguYyAgICAgICB8ICAgIDQgLQog
ZHJpdmVycy9hdGEvcGF0YV9jczU1MjAuYyAgICAgICB8ICAgIDQgLQogZHJpdmVycy9hdGEvcGF0
YV9jczU1MzAuYyAgICAgICB8ICAgIDQgLQogZHJpdmVycy9hdGEvcGF0YV9jczU1MzUuYyAgICAg
ICB8ICAgIDQgLQogZHJpdmVycy9hdGEvcGF0YV9jeXByZXNzLmMgICAgICB8ICAgIDQgLQogZHJp
dmVycy9hdGEvcGF0YV9lZmFyLmMgICAgICAgICB8ICAgIDQgLQogZHJpdmVycy9hdGEvcGF0YV9o
cHQzNjYuYyAgICAgICB8ICAgIDQgLQogZHJpdmVycy9hdGEvcGF0YV9ocHQzeDMuYyAgICAgICB8
ICAgIDQgLQogZHJpdmVycy9hdGEvcGF0YV9pdDgyMTMuYyAgICAgICB8ICAgIDQgLQogZHJpdmVy
cy9hdGEvcGF0YV9pdDgyMXguYyAgICAgICB8ICAgIDQgLQogZHJpdmVycy9hdGEvcGF0YV9peHA0
eHhfY2YuYyAgICB8ICAgIDIgKy0KIGRyaXZlcnMvYXRhL3BhdGFfam1pY3Jvbi5jICAgICAgfCAg
ICA0IC0KIGRyaXZlcnMvYXRhL3BhdGFfbWFydmVsbC5jICAgICAgfCAgICA0IC0KIGRyaXZlcnMv
YXRhL3BhdGFfbXBjNTJ4eC5jICAgICAgfCAgICA0IC0KIGRyaXZlcnMvYXRhL3BhdGFfbXBpaXgu
YyAgICAgICAgfCAgICA0IC0KIGRyaXZlcnMvYXRhL3BhdGFfbmV0Y2VsbC5jICAgICAgfCAgICA0
IC0KIGRyaXZlcnMvYXRhL3BhdGFfbnM4NzQxMC5jICAgICAgfCAgICA0IC0KIGRyaXZlcnMvYXRh
L3BhdGFfb2xkcGlpeC5jICAgICAgfCAgICA0IC0KIGRyaXZlcnMvYXRhL3BhdGFfb3B0aS5jICAg
ICAgICAgfCAgICA0IC0KIGRyaXZlcnMvYXRhL3BhdGFfb3B0aWRtYS5jICAgICAgfCAgICA0IC0K
IGRyaXZlcnMvYXRhL3BhdGFfcGRjMjAyeHhfb2xkLmMgfCAgICA0IC0KIGRyaXZlcnMvYXRhL3Bh
dGFfcmFkaXN5cy5jICAgICAgfCAgICA0IC0KIGRyaXZlcnMvYXRhL3BhdGFfcnoxMDAwLmMgICAg
ICAgfCAgICA2ICstCiBkcml2ZXJzL2F0YS9wYXRhX3NjMTIwMC5jICAgICAgIHwgICAgNCAtCiBk
cml2ZXJzL2F0YS9wYXRhX3NjYy5jICAgICAgICAgIHwgICAgNCAtCiBkcml2ZXJzL2F0YS9wYXRh
X3NlcnZlcndvcmtzLmMgIHwgICAgNCAtCiBkcml2ZXJzL2F0YS9wYXRhX3NpbDY4MC5jICAgICAg
IHwgICAgNCAtCiBkcml2ZXJzL2F0YS9wYXRhX3Npcy5jICAgICAgICAgIHwgICAgNCAtCiBkcml2
ZXJzL2F0YS9wYXRhX3RyaWZsZXguYyAgICAgIHwgICAgNCAtCiBkcml2ZXJzL2F0YS9wYXRhX3Zp
YS5jICAgICAgICAgIHwgICAgNCAtCiBkcml2ZXJzL2F0YS9zYXRhX2luaWMxNjJ4LmMgICAgIHwg
ICAgNCAtCiBkcml2ZXJzL2F0YS9zYXRhX252LmMgICAgICAgICAgIHwgICAgOCAtLQogZHJpdmVy
cy9hdGEvc2F0YV9zaWwuYyAgICAgICAgICB8ICAgIDQgLQogZHJpdmVycy9hdGEvc2F0YV9zaWwy
NC5jICAgICAgICB8ICAgIDQgLQogaW5jbHVkZS9saW51eC9saWJhdGEuaCAgICAgICAgICB8ICAg
MTQgKy0tCiA0NCBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA1NzEgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvYWhjaS5jIGIvZHJpdmVycy9hdGEvYWhjaS5j
CmluZGV4IDM0YzU1MzQuLmQ3MzAyOTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL2FoY2kuYwor
KysgYi9kcml2ZXJzL2F0YS9haGNpLmMKQEAgLTI1MCwxMCArMjUwLDYgQEAgc3RhdGljIHN0cnVj
dCBzY3NpX2hvc3RfdGVtcGxhdGUgYWhjaV9zaAogCS5zbGF2ZV9jb25maWd1cmUJPSBhdGFfc2Nz
aV9zbGF2ZV9jb25maWcsCiAJLnNsYXZlX2Rlc3Ryb3kJCT0gYXRhX3Njc2lfc2xhdmVfZGVzdHJv
eSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFyYW0sCi0jaWZkZWYgQ09ORklHX1BN
Ci0JLnN1c3BlbmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0JLnJlc3VtZQkJCT0gYXRh
X3Njc2lfZGV2aWNlX3Jlc3VtZSwKLSNlbmRpZgogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBh
dGFfcG9ydF9vcGVyYXRpb25zIGFoY2lfb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEv
YXRhX2dlbmVyaWMuYyBiL2RyaXZlcnMvYXRhL2F0YV9nZW5lcmljLmMKaW5kZXggOTJhNDkxZC4u
MGYxOWUzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvYXRhX2dlbmVyaWMuYworKysgYi9kcml2
ZXJzL2F0YS9hdGFfZ2VuZXJpYy5jCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBpbnQgZ2VuZXJp
Y19zZXRfbW9kZShzdHJ1Y3QgYXRhX3AKIAogCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklD
RVM7IGkrKykgewogCQlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2ID0gJmFwLT5kZXZpY2VbaV07Ci0J
CWlmIChhdGFfZGV2X3JlYWR5KGRldikpIHsKKwkJaWYgKGF0YV9kZXZfZW5hYmxlZChkZXYpKSB7
CiAJCQkvKiBXZSBkb24ndCByZWFsbHkgY2FyZSAqLwogCQkJZGV2LT5waW9fbW9kZSA9IFhGRVJf
UElPXzA7CiAJCQlkZXYtPmRtYV9tb2RlID0gWEZFUl9NV19ETUFfMDsKQEAgLTkwLDEwICs5MCw2
IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIGdlbmVyaWMKIAkuc2xhdmVfY29u
ZmlndXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAogCS5zbGF2ZV9kZXN0cm95CQk9IGF0YV9z
Y3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAot
I2lmZGVmIENPTkZJR19QTQotCS5yZXN1bWUJCQk9IGF0YV9zY3NpX2RldmljZV9yZXN1bWUsCi0J
LnN1c3BlbmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0jZW5kaWYKIH07CiAKIHN0YXRp
YyBzdHJ1Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyBnZW5lcmljX3BvcnRfb3BzID0gewpkaWZmIC0t
Z2l0IGEvZHJpdmVycy9hdGEvYXRhX3BpaXguYyBiL2RyaXZlcnMvYXRhL2F0YV9waWl4LmMKaW5k
ZXggNTVkMzA2YS4uODQyMTc0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvYXRhX3BpaXguYwor
KysgYi9kcml2ZXJzL2F0YS9hdGFfcGlpeC5jCkBAIC0yNzUsMTAgKzI3NSw2IEBAIHN0YXRpYyBz
dHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIHBpaXhfc2gKIAkuc2xhdmVfY29uZmlndXJlCT0gYXRh
X3Njc2lfc2xhdmVfY29uZmlnLAogCS5zbGF2ZV9kZXN0cm95CQk9IGF0YV9zY3NpX3NsYXZlX2Rl
c3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAotI2lmZGVmIENPTkZJ
R19QTQotCS5yZXN1bWUJCQk9IGF0YV9zY3NpX2RldmljZV9yZXN1bWUsCi0JLnN1c3BlbmQJCT0g
YXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0jZW5kaWYKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1
Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyBwaWl4X3BhdGFfb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJp
dmVycy9hdGEvbGliYXRhLWNvcmUuYyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1jb3JlLmMKaW5kZXgg
Y2E2NzQ4NC4uY2U1ZTA4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvbGliYXRhLWNvcmUuYwor
KysgYi9kcml2ZXJzL2F0YS9saWJhdGEtY29yZS5jCkBAIC0yODU4LDcgKzI4NTgsNyBAQCBpbnQg
YXRhX2RvX3NldF9tb2RlKHN0cnVjdCBhdGFfcG9ydCAqYXAsCiAJCWRldiA9ICZhcC0+ZGV2aWNl
W2ldOwogCiAJCS8qIGRvbid0IHVwZGF0ZSBzdXNwZW5kZWQgZGV2aWNlcycgeGZlciBtb2RlICov
Ci0JCWlmICghYXRhX2Rldl9yZWFkeShkZXYpKQorCQlpZiAoIWF0YV9kZXZfZW5hYmxlZChkZXYp
KQogCQkJY29udGludWU7CiAKIAkJcmMgPSBhdGFfZGV2X3NldF9tb2RlKGRldik7CkBAIC01Nzkz
LDM3ICs1NzkzLDExIEBAIHN0YXRpYyBpbnQgYXRhX2hvc3RfcmVxdWVzdF9wbShzdHJ1Y3QgYXQK
ICAqLwogaW50IGF0YV9ob3N0X3N1c3BlbmQoc3RydWN0IGF0YV9ob3N0ICpob3N0LCBwbV9tZXNz
YWdlX3QgbWVzZykKIHsKLQlpbnQgaSwgaiwgcmM7CisJaW50IHJjOwogCiAJcmMgPSBhdGFfaG9z
dF9yZXF1ZXN0X3BtKGhvc3QsIG1lc2csIDAsIEFUQV9FSElfUVVJRVQsIDEpOwotCWlmIChyYykK
LQkJZ290byBmYWlsOwotCi0JLyogRUggaXMgcXVpZXNjZW50IG5vdy4gIEZhaWwgaWYgd2UgaGF2
ZSBhbnkgcmVhZHkgZGV2aWNlLgotCSAqIFRoaXMgaGFwcGVucyBpZiBob3RwbHVnIG9jY3VycyBi
ZXR3ZWVuIGNvbXBsZXRpb24gb2YgZGV2aWNlCi0JICogc3VzcGVuc2lvbiBhbmQgaGVyZS4KLQkg
Ki8KLQlmb3IgKGkgPSAwOyBpIDwgaG9zdC0+bl9wb3J0czsgaSsrKSB7Ci0JCXN0cnVjdCBhdGFf
cG9ydCAqYXAgPSBob3N0LT5wb3J0c1tpXTsKLQotCQlmb3IgKGogPSAwOyBqIDwgQVRBX01BWF9E
RVZJQ0VTOyBqKyspIHsKLQkJCXN0cnVjdCBhdGFfZGV2aWNlICpkZXYgPSAmYXAtPmRldmljZVtq
XTsKLQotCQkJaWYgKGF0YV9kZXZfcmVhZHkoZGV2KSkgewotCQkJCWF0YV9wb3J0X3ByaW50ayhh
cCwgS0VSTl9XQVJOSU5HLAotCQkJCQkJInN1c3BlbmQgZmFpbGVkLCBkZXZpY2UgJWQgIgotCQkJ
CQkJInN0aWxsIGFjdGl2ZVxuIiwgZGV2LT5kZXZubyk7Ci0JCQkJcmMgPSAtRUJVU1k7Ci0JCQkJ
Z290byBmYWlsOwotCQkJfQotCQl9Ci0JfQotCi0JaG9zdC0+ZGV2LT5wb3dlci5wb3dlcl9zdGF0
ZSA9IG1lc2c7Ci0JcmV0dXJuIDA7Ci0KLSBmYWlsOgotCWF0YV9ob3N0X3Jlc3VtZShob3N0KTsK
KwlpZiAocmMgPT0gMCkKKwkJaG9zdC0+ZGV2LT5wb3dlci5wb3dlcl9zdGF0ZSA9IG1lc2c7CiAJ
cmV0dXJuIHJjOwogfQogCkBAIC02ODM2LDExICs2ODEwLDYgQEAgRVhQT1JUX1NZTUJPTF9HUEwo
YXRhX3BjaV9kZWZhdWx0X2ZpbHRlcgogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3BjaV9jbGVhcl9z
aW1wbGV4KTsKICNlbmRpZiAvKiBDT05GSUdfUENJICovCiAKLSNpZmRlZiBDT05GSUdfUE0KLUVY
UE9SVF9TWU1CT0xfR1BMKGF0YV9zY3NpX2RldmljZV9zdXNwZW5kKTsKLUVYUE9SVF9TWU1CT0xf
R1BMKGF0YV9zY3NpX2RldmljZV9yZXN1bWUpOwotI2VuZGlmIC8qIENPTkZJR19QTSAqLwotCiBF
WFBPUlRfU1lNQk9MX0dQTChhdGFfZW5nX3RpbWVvdXQpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRh
X3BvcnRfc2NoZWR1bGVfZWgpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3BvcnRfYWJvcnQpOwpk
aWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvbGliYXRhLWVoLmMgYi9kcml2ZXJzL2F0YS9saWJhdGEt
ZWguYwppbmRleCAyYmZmOWFkLi4yYWFkNWZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9saWJh
dGEtZWguYworKysgYi9kcml2ZXJzL2F0YS9saWJhdGEtZWguYwpAQCAtNTUsMjkgKzU1LDEyIEBA
IHN0YXRpYyB2b2lkIGF0YV9laF9maW5pc2goc3RydWN0IGF0YV9wb3IKICNpZmRlZiBDT05GSUdf
UE0KIHN0YXRpYyB2b2lkIGF0YV9laF9oYW5kbGVfcG9ydF9zdXNwZW5kKHN0cnVjdCBhdGFfcG9y
dCAqYXApOwogc3RhdGljIHZvaWQgYXRhX2VoX2hhbmRsZV9wb3J0X3Jlc3VtZShzdHJ1Y3QgYXRh
X3BvcnQgKmFwKTsKLXN0YXRpYyBpbnQgYXRhX2VoX3N1c3BlbmQoc3RydWN0IGF0YV9wb3J0ICph
cCwKLQkJCSAgc3RydWN0IGF0YV9kZXZpY2UgKipyX2ZhaWxlZF9kZXYpOwotc3RhdGljIHZvaWQg
YXRhX2VoX3ByZXBfcmVzdW1lKHN0cnVjdCBhdGFfcG9ydCAqYXApOwotc3RhdGljIGludCBhdGFf
ZWhfcmVzdW1lKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNlICoqcl9mYWls
ZWRfZGV2KTsKICNlbHNlIC8qIENPTkZJR19QTSAqLwogc3RhdGljIHZvaWQgYXRhX2VoX2hhbmRs
ZV9wb3J0X3N1c3BlbmQoc3RydWN0IGF0YV9wb3J0ICphcCkKIHsgfQogCiBzdGF0aWMgdm9pZCBh
dGFfZWhfaGFuZGxlX3BvcnRfcmVzdW1lKHN0cnVjdCBhdGFfcG9ydCAqYXApCiB7IH0KLQotc3Rh
dGljIGludCBhdGFfZWhfc3VzcGVuZChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX2Rl
dmljZSAqKnJfZmFpbGVkX2RldikKLXsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgYXRh
X2VoX3ByZXBfcmVzdW1lKHN0cnVjdCBhdGFfcG9ydCAqYXApCi17IH0KLQotc3RhdGljIGludCBh
dGFfZWhfcmVzdW1lKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNlICoqcl9m
YWlsZWRfZGV2KQotewotCXJldHVybiAwOwotfQogI2VuZGlmIC8qIENPTkZJR19QTSAqLwogCiBz
dGF0aWMgdm9pZCBhdGFfZXJpbmdfcmVjb3JkKHN0cnVjdCBhdGFfZXJpbmcgKmVyaW5nLCBpbnQg
aXNfaW8sCkBAIC0xNzY3LDcgKzE3NTAsNyBAQCBzdGF0aWMgaW50IGF0YV9laF9yZXZhbGlkYXRl
X2FuZF9hdHRhY2goCiAJCWlmIChlaGMtPmkuZmxhZ3MgJiBBVEFfRUhJX0RJRF9SRVNFVCkKIAkJ
CXJlYWRpZF9mbGFncyB8PSBBVEFfUkVBRElEX1BPU1RSRVNFVDsKIAotCQlpZiAoYWN0aW9uICYg
QVRBX0VIX1JFVkFMSURBVEUgJiYgYXRhX2Rldl9yZWFkeShkZXYpKSB7CisJCWlmICgoYWN0aW9u
ICYgQVRBX0VIX1JFVkFMSURBVEUpICYmIGF0YV9kZXZfZW5hYmxlZChkZXYpKSB7CiAJCQlpZiAo
YXRhX3BvcnRfb2ZmbGluZShhcCkpIHsKIAkJCQlyYyA9IC1FSU87CiAJCQkJZ290byBlcnI7CkBA
IC0xODQ4LDE2NiArMTgzMSw2IEBAIHN0YXRpYyBpbnQgYXRhX2VoX3JldmFsaWRhdGVfYW5kX2F0
dGFjaCgKIAlyZXR1cm4gcmM7CiB9CiAKLSNpZmRlZiBDT05GSUdfUE0KLS8qKgotICoJYXRhX2Vo
X3N1c3BlbmQgLSBoYW5kbGUgc3VzcGVuZCBFSCBhY3Rpb24KLSAqCUBhcDogdGFyZ2V0IGhvc3Qg
cG9ydAotICoJQHJfZmFpbGVkX2RldjogcmVzdWx0IHBhcmFtZXRlciB0byBpbmRpY2F0ZSBmYWls
aW5nIGRldmljZQotICoKLSAqCUhhbmRsZSBzdXNwZW5kIEVIIGFjdGlvbi4gIERpc2sgZGV2aWNl
cyBhcmUgc3Bpbm5lZCBkb3duIGFuZAotICoJb3RoZXIgdHlwZXMgb2YgZGV2aWNlcyBhcmUganVz
dCBtYXJrZWQgc3VzcGVuZGVkLiAgT25jZQotICoJc3VzcGVuZGVkLCBubyBFSCBhY3Rpb24gdG8g
dGhlIGRldmljZSBpcyBhbGxvd2VkIHVudGlsIGl0IGlzCi0gKglyZXN1bWVkLgotICoKLSAqCUxP
Q0tJTkc6Ci0gKglLZXJuZWwgdGhyZWFkIGNvbnRleHQgKG1heSBzbGVlcCkuCi0gKgotICoJUkVU
VVJOUzoKLSAqCTAgb24gc3VjY2VzcywgLWVycm5vIG90aGVyd2lzZQotICovCi1zdGF0aWMgaW50
IGF0YV9laF9zdXNwZW5kKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNlICoq
cl9mYWlsZWRfZGV2KQotewotCXN0cnVjdCBhdGFfZGV2aWNlICpkZXY7Ci0JaW50IGksIHJjID0g
MDsKLQotCURQUklOVEsoIkVOVEVSXG4iKTsKLQotCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RF
VklDRVM7IGkrKykgewotCQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCQl1bnNpZ25lZCBpbnQgYWN0
aW9uLCBlcnJfbWFzazsKLQotCQlkZXYgPSAmYXAtPmRldmljZVtpXTsKLQkJYWN0aW9uID0gYXRh
X2VoX2Rldl9hY3Rpb24oZGV2KTsKLQotCQlpZiAoIWF0YV9kZXZfZW5hYmxlZChkZXYpIHx8ICEo
YWN0aW9uICYgQVRBX0VIX1NVU1BFTkQpKQotCQkJY29udGludWU7Ci0KLQkJV0FSTl9PTihkZXYt
PmZsYWdzICYgQVRBX0RGTEFHX1NVU1BFTkRFRCk7Ci0KLQkJYXRhX2VoX2Fib3V0X3RvX2RvKGFw
LCBkZXYsIEFUQV9FSF9TVVNQRU5EKTsKLQotCQlpZiAoZGV2LT5jbGFzcyA9PSBBVEFfREVWX0FU
QSAmJiAhKGFjdGlvbiAmIEFUQV9FSF9QTV9GUkVFWkUpKSB7Ci0JCQkvKiBmbHVzaCBjYWNoZSAq
LwotCQkJcmMgPSBhdGFfZmx1c2hfY2FjaGUoZGV2KTsKLQkJCWlmIChyYykKLQkJCQlicmVhazsK
LQotCQkJLyogc3BpbiBkb3duICovCi0JCQllcnJfbWFzayA9IGF0YV9kb19zaW1wbGVfY21kKGRl
diwgQVRBX0NNRF9TVEFOREJZTk9XMSk7Ci0JCQlpZiAoZXJyX21hc2spIHsKLQkJCQlhdGFfZGV2
X3ByaW50ayhkZXYsIEtFUk5fRVJSLCAiZmFpbGVkIHRvICIKLQkJCQkJICAgICAgICJzcGluIGRv
d24gKGVycl9tYXNrPTB4JXgpXG4iLAotCQkJCQkgICAgICAgZXJyX21hc2spOwotCQkJCXJjID0g
LUVJTzsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQotCi0JCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5s
b2NrLCBmbGFncyk7Ci0JCWRldi0+ZmxhZ3MgfD0gQVRBX0RGTEFHX1NVU1BFTkRFRDsKLQkJc3Bp
bl91bmxvY2tfaXJxcmVzdG9yZShhcC0+bG9jaywgZmxhZ3MpOwotCi0JCWF0YV9laF9kb25lKGFw
LCBkZXYsIEFUQV9FSF9TVVNQRU5EKTsKLQl9Ci0KLQlpZiAocmMpCi0JCSpyX2ZhaWxlZF9kZXYg
PSBkZXY7Ci0KLQlEUFJJTlRLKCJFWElUXG4iKTsKLQlyZXR1cm4gcmM7Ci19Ci0KLS8qKgotICoJ
YXRhX2VoX3ByZXBfcmVzdW1lIC0gcHJlcCBmb3IgcmVzdW1lIEVIIGFjdGlvbgotICoJQGFwOiB0
YXJnZXQgaG9zdCBwb3J0Ci0gKgotICoJQ2xlYXIgU1VTUEVOREVEIGluIHByZXBhcmF0aW9uIGZv
ciBzY2hlZHVsZWQgcmVzdW1lIGFjdGlvbnMuCi0gKglUaGlzIGFsbG93cyBvdGhlciBwYXJ0cyBv
ZiBFSCB0byBhY2Nlc3MgdGhlIGRldmljZXMgYmVpbmcKLSAqCXJlc3VtZWQuCi0gKgotICoJTE9D
S0lORzoKLSAqCUtlcm5lbCB0aHJlYWQgY29udGV4dCAobWF5IHNsZWVwKS4KLSAqLwotc3RhdGlj
IHZvaWQgYXRhX2VoX3ByZXBfcmVzdW1lKHN0cnVjdCBhdGFfcG9ydCAqYXApCi17Ci0Jc3RydWN0
IGF0YV9kZXZpY2UgKmRldjsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCWludCBpOwotCi0JRFBS
SU5USygiRU5URVJcbiIpOwotCi0JZm9yIChpID0gMDsgaSA8IEFUQV9NQVhfREVWSUNFUzsgaSsr
KSB7Ci0JCXVuc2lnbmVkIGludCBhY3Rpb247Ci0KLQkJZGV2ID0gJmFwLT5kZXZpY2VbaV07Ci0J
CWFjdGlvbiA9IGF0YV9laF9kZXZfYWN0aW9uKGRldik7Ci0KLQkJaWYgKCFhdGFfZGV2X2VuYWJs
ZWQoZGV2KSB8fCAhKGFjdGlvbiAmIEFUQV9FSF9SRVNVTUUpKQotCQkJY29udGludWU7Ci0KLQkJ
c3Bpbl9sb2NrX2lycXNhdmUoYXAtPmxvY2ssIGZsYWdzKTsKLQkJZGV2LT5mbGFncyAmPSB+QVRB
X0RGTEFHX1NVU1BFTkRFRDsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShhcC0+bG9jaywgZmxh
Z3MpOwotCX0KLQotCURQUklOVEsoIkVYSVRcbiIpOwotfQotCi0vKioKLSAqCWF0YV9laF9yZXN1
bWUgLSBoYW5kbGUgcmVzdW1lIEVIIGFjdGlvbgotICoJQGFwOiB0YXJnZXQgaG9zdCBwb3J0Ci0g
KglAcl9mYWlsZWRfZGV2OiByZXN1bHQgcGFyYW1ldGVyIHRvIGluZGljYXRlIGZhaWxpbmcgZGV2
aWNlCi0gKgotICoJSGFuZGxlIHJlc3VtZSBFSCBhY3Rpb24uICBUYXJnZXQgZGV2aWNlcyBhcmUg
YWxyZWFkeSByZXNldCBhbmQKLSAqCXJldmFsaWRhdGVkLiAgU3Bpbm5pbmcgdXAgaXMgdGhlIG9u
bHkgb3BlcmF0aW9uIGxlZnQuCi0gKgotICoJTE9DS0lORzoKLSAqCUtlcm5lbCB0aHJlYWQgY29u
dGV4dCAobWF5IHNsZWVwKS4KLSAqCi0gKglSRVRVUk5TOgotICoJMCBvbiBzdWNjZXNzLCAtZXJy
bm8gb3RoZXJ3aXNlCi0gKi8KLXN0YXRpYyBpbnQgYXRhX2VoX3Jlc3VtZShzdHJ1Y3QgYXRhX3Bv
cnQgKmFwLCBzdHJ1Y3QgYXRhX2RldmljZSAqKnJfZmFpbGVkX2RldikKLXsKLQlzdHJ1Y3QgYXRh
X2RldmljZSAqZGV2OwotCWludCBpLCByYyA9IDA7Ci0KLQlEUFJJTlRLKCJFTlRFUlxuIik7Ci0K
LQlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspIHsKLQkJdW5zaWduZWQgaW50
IGFjdGlvbiwgZXJyX21hc2s7Ci0KLQkJZGV2ID0gJmFwLT5kZXZpY2VbaV07Ci0JCWFjdGlvbiA9
IGF0YV9laF9kZXZfYWN0aW9uKGRldik7Ci0KLQkJaWYgKCFhdGFfZGV2X2VuYWJsZWQoZGV2KSB8
fCAhKGFjdGlvbiAmIEFUQV9FSF9SRVNVTUUpKQotCQkJY29udGludWU7Ci0KLQkJYXRhX2VoX2Fi
b3V0X3RvX2RvKGFwLCBkZXYsIEFUQV9FSF9SRVNVTUUpOwotCi0JCWlmIChkZXYtPmNsYXNzID09
IEFUQV9ERVZfQVRBICYmICEoYWN0aW9uICYgQVRBX0VIX1BNX0ZSRUVaRSkpIHsKLQkJCWVycl9t
YXNrID0gYXRhX2RvX3NpbXBsZV9jbWQoZGV2LAotCQkJCQkJICAgICBBVEFfQ01EX0lETEVJTU1F
RElBVEUpOwotCQkJaWYgKGVycl9tYXNrKSB7Ci0JCQkJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJO
X0VSUiwgImZhaWxlZCB0byAiCi0JCQkJCSAgICAgICAic3BpbiB1cCAoZXJyX21hc2s9MHgleClc
biIsCi0JCQkJCSAgICAgICBlcnJfbWFzayk7Ci0JCQkJcmMgPSAtRUlPOwotCQkJCWJyZWFrOwot
CQkJfQotCQl9Ci0KLQkJYXRhX2VoX2RvbmUoYXAsIGRldiwgQVRBX0VIX1JFU1VNRSk7Ci0JfQot
Ci0JaWYgKHJjKQotCQkqcl9mYWlsZWRfZGV2ID0gZGV2OwotCi0JRFBSSU5USygiRVhJVFxuIik7
Ci0JcmV0dXJuIDA7Ci19Ci0jZW5kaWYgLyogQ09ORklHX1BNICovCi0KIHN0YXRpYyBpbnQgYXRh
X3BvcnRfbnJfZW5hYmxlZChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQogewogCWludCBpLCBjbnQgPSAw
OwpAQCAtMjAzMywxNyArMTg1Niw2IEBAIHN0YXRpYyBpbnQgYXRhX2VoX3NraXBfcmVjb3Zlcnko
c3RydWN0IGEKIAlzdHJ1Y3QgYXRhX2VoX2NvbnRleHQgKmVoYyA9ICZhcC0+ZWhfY29udGV4dDsK
IAlpbnQgaTsKIAotCS8qIHNraXAgaWYgYWxsIHBvc3NpYmxlIGRldmljZXMgYXJlIHN1c3BlbmRl
ZCAqLwotCWZvciAoaSA9IDA7IGkgPCBhdGFfcG9ydF9tYXhfZGV2aWNlcyhhcCk7IGkrKykgewot
CQlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2ID0gJmFwLT5kZXZpY2VbaV07Ci0KLQkJaWYgKCEoZGV2
LT5mbGFncyAmIEFUQV9ERkxBR19TVVNQRU5ERUQpKQotCQkJYnJlYWs7Ci0JfQotCi0JaWYgKGkg
PT0gYXRhX3BvcnRfbWF4X2RldmljZXMoYXApKQotCQlyZXR1cm4gMTsKLQogCS8qIHRoYXcgZnJv
emVuIHBvcnQsIHJlc3VtZSBsaW5rIGFuZCByZWNvdmVyIGZhaWxlZCBkZXZpY2VzICovCiAJaWYg
KChhcC0+cGZsYWdzICYgQVRBX1BGTEFHX0ZST1pFTikgfHwKIAkgICAgKGVoYy0+aS5mbGFncyAm
IEFUQV9FSElfUkVTVU1FX0xJTkspIHx8IGF0YV9wb3J0X25yX2VuYWJsZWQoYXApKQpAQCAtMjEy
Myw5ICsxOTM1LDYgQEAgc3RhdGljIGludCBhdGFfZWhfcmVjb3ZlcihzdHJ1Y3QgYXRhX3Bvcgog
CWlmIChhcC0+cGZsYWdzICYgQVRBX1BGTEFHX1VOTE9BRElORykKIAkJZ290byBvdXQ7CiAKLQkv
KiBwcmVwIGZvciByZXN1bWUgKi8KLQlhdGFfZWhfcHJlcF9yZXN1bWUoYXApOwotCiAJLyogc2tp
cCBFSCBpZiBwb3NzaWJsZS4gKi8KIAlpZiAoYXRhX2VoX3NraXBfcmVjb3ZlcnkoYXApKQogCQll
aGMtPmkuYWN0aW9uID0gMDsKQEAgLTIxNTMsMTEgKzE5NjIsNiBAQCBzdGF0aWMgaW50IGF0YV9l
aF9yZWNvdmVyKHN0cnVjdCBhdGFfcG9yCiAJaWYgKHJjKQogCQlnb3RvIGRldl9mYWlsOwogCi0J
LyogcmVzdW1lIGRldmljZXMgKi8KLQlyYyA9IGF0YV9laF9yZXN1bWUoYXAsICZkZXYpOwotCWlm
IChyYykKLQkJZ290byBkZXZfZmFpbDsKLQogCS8qIGNvbmZpZ3VyZSB0cmFuc2ZlciBtb2RlIGlm
IG5lY2Vzc2FyeSAqLwogCWlmIChlaGMtPmkuZmxhZ3MgJiBBVEFfRUhJX1NFVE1PREUpIHsKIAkJ
cmMgPSBhdGFfc2V0X21vZGUoYXAsICZkZXYpOwpAQCAtMjE2NiwxMSArMTk3MCw2IEBAIHN0YXRp
YyBpbnQgYXRhX2VoX3JlY292ZXIoc3RydWN0IGF0YV9wb3IKIAkJZWhjLT5pLmZsYWdzICY9IH5B
VEFfRUhJX1NFVE1PREU7CiAJfQogCi0JLyogc3VzcGVuZCBkZXZpY2VzICovCi0JcmMgPSBhdGFf
ZWhfc3VzcGVuZChhcCwgJmRldik7Ci0JaWYgKHJjKQotCQlnb3RvIGRldl9mYWlsOwotCiAJZ290
byBvdXQ7CiAKICBkZXZfZmFpbDoKQEAgLTIzNjYsMjIgKzIxNjUsMTMgQEAgc3RhdGljIHZvaWQg
YXRhX2VoX2hhbmRsZV9wb3J0X3N1c3BlbmQocwogICoKICAqCVJlc3VtZSBAYXAuCiAgKgotICoJ
VGhpcyBmdW5jdGlvbiBhbHNvIHdhaXRzIHVwdG8gb25lIHNlY29uZCB1bnRpbCBhbGwgZGV2aWNl
cwotICoJaGFuZ2luZyBvZmYgdGhpcyBwb3J0IHJlcXVlc3RzIHJlc3VtZSBFSCBhY3Rpb24uICBU
aGlzIGlzIHRvCi0gKglwcmV2ZW50IGludm9raW5nIEVIIGFuZCB0aHVzIHJlc2V0IG11bHRpcGxl
IHRpbWVzIG9uIHJlc3VtZS4KLSAqCi0gKglPbiBEUE0gcmVzdW1lLCB3aGVyZSBzb21lIG9mIGRl
dmljZXMgbWlnaHQgbm90IGJlIHJlc3VtZWQKLSAqCXRvZ2V0aGVyLCB0aGlzIG1heSBkZWxheSBw
b3J0IHJlc3VtZSB1cHRvIG9uZSBzZWNvbmQsIGJ1dCBzdWNoCi0gKglEUE0gcmVzdW1lcyBhcmUg
cmFyZSBhbmQgMSBzZWMgZGVsYXkgaXNuJ3QgdG9vIGJhZC4KLSAqCiAgKglMT0NLSU5HOgogICoJ
S2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApLgogICovCiBzdGF0aWMgdm9pZCBhdGFf
ZWhfaGFuZGxlX3BvcnRfcmVzdW1lKHN0cnVjdCBhdGFfcG9ydCAqYXApCiB7Ci0JdW5zaWduZWQg
bG9uZyB0aW1lb3V0OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JaW50IGksIHJjID0gMDsKKwlp
bnQgcmMgPSAwOwogCiAJLyogYXJlIHdlIHJlc3VtaW5nPyAqLwogCXNwaW5fbG9ja19pcnFzYXZl
KGFwLT5sb2NrLCBmbGFncyk7CkBAIC0yMzkyLDMxICsyMTgyLDEyIEBAIHN0YXRpYyB2b2lkIGF0
YV9laF9oYW5kbGVfcG9ydF9yZXN1bWUoc3QKIAl9CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShh
cC0+bG9jaywgZmxhZ3MpOwogCi0JLyogc3B1cmlvdXM/ICovCi0JaWYgKCEoYXAtPnBmbGFncyAm
IEFUQV9QRkxBR19TVVNQRU5ERUQpKQotCQlnb3RvIGRvbmU7CisJV0FSTl9PTighKGFwLT5wZmxh
Z3MgJiBBVEFfUEZMQUdfU1VTUEVOREVEKSk7CiAKIAlpZiAoYXAtPm9wcy0+cG9ydF9yZXN1bWUp
CiAJCXJjID0gYXAtPm9wcy0+cG9ydF9yZXN1bWUoYXApOwogCi0JLyogZ2l2ZSBkZXZpY2VzIHRp
bWUgdG8gcmVxdWVzdCBFSCAqLwotCXRpbWVvdXQgPSBqaWZmaWVzICsgSFo7IC8qIDFzIG1heCAq
LwotCXdoaWxlICgxKSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklDRVM7IGkrKykg
ewotCQkJc3RydWN0IGF0YV9kZXZpY2UgKmRldiA9ICZhcC0+ZGV2aWNlW2ldOwotCQkJdW5zaWdu
ZWQgaW50IGFjdGlvbiA9IGF0YV9laF9kZXZfYWN0aW9uKGRldik7Ci0KLQkJCWlmICgoZGV2LT5m
bGFncyAmIEFUQV9ERkxBR19TVVNQRU5ERUQpICYmCi0JCQkgICAgIShhY3Rpb24gJiBBVEFfRUhf
UkVTVU1FKSkKLQkJCQlicmVhazsKLQkJfQotCi0JCWlmIChpID09IEFUQV9NQVhfREVWSUNFUyB8
fCB0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKQotCQkJYnJlYWs7Ci0JCW1zbGVlcCgxMCk7
Ci0JfQotCi0gZG9uZToKKwkvKiByZXBvcnQgcmVzdWx0ICovCiAJc3Bpbl9sb2NrX2lycXNhdmUo
YXAtPmxvY2ssIGZsYWdzKTsKIAlhcC0+cGZsYWdzICY9IH4oQVRBX1BGTEFHX1BNX1BFTkRJTkcg
fCBBVEFfUEZMQUdfU1VTUEVOREVEKTsKIAlpZiAoYXAtPnBtX3Jlc3VsdCkgewpkaWZmIC0tZ2l0
IGEvZHJpdmVycy9hdGEvbGliYXRhLXNjc2kuYyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmMK
aW5kZXggOWFmYmEyYi4uOGY4MDAxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvbGliYXRhLXNj
c2kuYworKysgYi9kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jCkBAIC01MTAsMTMzICs1MTAsNiBA
QCBzdGF0aWMgdm9pZCBhdGFfZHVtcF9zdGF0dXModW5zaWduZWQgaWQsCiAJfQogfQogCi0jaWZk
ZWYgQ09ORklHX1BNCi0vKioKLSAqCWF0YV9zY3NpX2RldmljZV9zdXNwZW5kIC0gc3VzcGVuZCBB
VEEgZGV2aWNlIGFzc29jaWF0ZWQgd2l0aCBzZGV2Ci0gKglAc2RldjogdGhlIFNDU0kgZGV2aWNl
IHRvIHN1c3BlbmQKLSAqCUBtZXNnOiB0YXJnZXQgcG93ZXIgbWFuYWdlbWVudCBtZXNzYWdlCi0g
KgotICoJUmVxdWVzdCBzdXNwZW5kIEVIIGFjdGlvbiBvbiB0aGUgQVRBIGRldmljZSBhc3NvY2lh
dGVkIHdpdGgKLSAqCUBzZGV2IGFuZCB3YWl0IGZvciB0aGUgb3BlcmF0aW9uIHRvIGNvbXBsZXRl
LgotICoKLSAqCUxPQ0tJTkc6Ci0gKglLZXJuZWwgdGhyZWFkIGNvbnRleHQgKG1heSBzbGVlcCku
Ci0gKgotICoJUkVUVVJOUzoKLSAqCTAgb24gc3VjY2VzcywgLWVycm5vIG90aGVyd2lzZS4KLSAq
LwotaW50IGF0YV9zY3NpX2RldmljZV9zdXNwZW5kKHN0cnVjdCBzY3NpX2RldmljZSAqc2Rldiwg
cG1fbWVzc2FnZV90IG1lc2cpCi17Ci0Jc3RydWN0IGF0YV9wb3J0ICphcCA9IGF0YV9zaG9zdF90
b19wb3J0KHNkZXYtPmhvc3QpOwotCXN0cnVjdCBhdGFfZGV2aWNlICpkZXYgPSBhdGFfc2NzaV9m
aW5kX2RldihhcCwgc2Rldik7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQl1bnNpZ25lZCBpbnQg
YWN0aW9uOwotCWludCByYyA9IDA7Ci0KLQlpZiAoIWRldikKLQkJZ290byBvdXQ7Ci0KLQlzcGlu
X2xvY2tfaXJxc2F2ZShhcC0+bG9jaywgZmxhZ3MpOwotCi0JLyogd2FpdCBmb3IgdGhlIHByZXZp
b3VzIHJlc3VtZSB0byBjb21wbGV0ZSAqLwotCXdoaWxlIChkZXYtPmZsYWdzICYgQVRBX0RGTEFH
X1NVU1BFTkRFRCkgewotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGFwLT5sb2NrLCBmbGFncyk7
Ci0JCWF0YV9wb3J0X3dhaXRfZWgoYXApOwotCQlzcGluX2xvY2tfaXJxc2F2ZShhcC0+bG9jaywg
ZmxhZ3MpOwotCX0KLQotCS8qIGlmIEBzZGV2IGlzIGFscmVhZHkgZGV0YWNoZWQsIG5vdGhpbmcg
dG8gZG8gKi8KLQlpZiAoc2Rldi0+c2Rldl9zdGF0ZSA9PSBTREVWX09GRkxJTkUgfHwKLQkgICAg
c2Rldi0+c2Rldl9zdGF0ZSA9PSBTREVWX0NBTkNFTCB8fCBzZGV2LT5zZGV2X3N0YXRlID09IFNE
RVZfREVMKQotCQlnb3RvIG91dF91bmxvY2s7Ci0KLQkvKiByZXF1ZXN0IHN1c3BlbmQgKi8KLQlh
Y3Rpb24gPSBBVEFfRUhfU1VTUEVORDsKLQlpZiAobWVzZy5ldmVudCAhPSBQTV9FVkVOVF9TVVNQ
RU5EKQotCQlhY3Rpb24gfD0gQVRBX0VIX1BNX0ZSRUVaRTsKLQlhcC0+ZWhfaW5mby5kZXZfYWN0
aW9uW2Rldi0+ZGV2bm9dIHw9IGFjdGlvbjsKLQlhcC0+ZWhfaW5mby5mbGFncyB8PSBBVEFfRUhJ
X1FVSUVUOwotCWF0YV9wb3J0X3NjaGVkdWxlX2VoKGFwKTsKLQotCXNwaW5fdW5sb2NrX2lycXJl
c3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKLQotCS8qIHdhaXQgZm9yIEVIIHRvIGRvIHRoZSBqb2Ig
Ki8KLQlhdGFfcG9ydF93YWl0X2VoKGFwKTsKLQotCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5sb2Nr
LCBmbGFncyk7Ci0KLQkvKiBJZiBAc2RldiBpcyBzdGlsbCBhdHRhY2hlZCBidXQgdGhlIGFzc29j
aWF0ZWQgQVRBIGRldmljZQotCSAqIGlzbid0IHN1c3BlbmRlZCwgdGhlIG9wZXJhdGlvbiBmYWls
ZWQuCi0JICovCi0JaWYgKHNkZXYtPnNkZXZfc3RhdGUgIT0gU0RFVl9PRkZMSU5FICYmCi0JICAg
IHNkZXYtPnNkZXZfc3RhdGUgIT0gU0RFVl9DQU5DRUwgJiYgc2Rldi0+c2Rldl9zdGF0ZSAhPSBT
REVWX0RFTCAmJgotCSAgICAhKGRldi0+ZmxhZ3MgJiBBVEFfREZMQUdfU1VTUEVOREVEKSkKLQkJ
cmMgPSAtRUlPOwotCi0gb3V0X3VubG9jazoKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGFwLT5s
b2NrLCBmbGFncyk7Ci0gb3V0OgotCWlmIChyYyA9PSAwKQotCQlzZGV2LT5zZGV2X2dlbmRldi5w
b3dlci5wb3dlcl9zdGF0ZSA9IG1lc2c7Ci0JcmV0dXJuIHJjOwotfQotCi0vKioKLSAqCWF0YV9z
Y3NpX2RldmljZV9yZXN1bWUgLSByZXN1bWUgQVRBIGRldmljZSBhc3NvY2lhdGVkIHdpdGggc2Rl
dgotICoJQHNkZXY6IHRoZSBTQ1NJIGRldmljZSB0byByZXN1bWUKLSAqCi0gKglSZXF1ZXN0IHJl
c3VtZSBFSCBhY3Rpb24gb24gdGhlIEFUQSBkZXZpY2UgYXNzb2NpYXRlZCB3aXRoCi0gKglAc2Rl
diBhbmQgcmV0dXJuIGltbWVkaWF0ZWx5LiAgVGhpcyBlbmFibGVzIHBhcmFsbGVsCi0gKgl3YWtl
dXAvc3BpbnVwIG9mIGRldmljZXMuCi0gKgotICoJTE9DS0lORzoKLSAqCUtlcm5lbCB0aHJlYWQg
Y29udGV4dCAobWF5IHNsZWVwKS4KLSAqCi0gKglSRVRVUk5TOgotICoJMC4KLSAqLwotaW50IGF0
YV9zY3NpX2RldmljZV9yZXN1bWUoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2KQotewotCXN0cnVj
dCBhdGFfcG9ydCAqYXAgPSBhdGFfc2hvc3RfdG9fcG9ydChzZGV2LT5ob3N0KTsKLQlzdHJ1Y3Qg
YXRhX2RldmljZSAqZGV2ID0gYXRhX3Njc2lfZmluZF9kZXYoYXAsIHNkZXYpOwotCXN0cnVjdCBh
dGFfZWhfaW5mbyAqZWhpID0gJmFwLT5laF9pbmZvOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0J
dW5zaWduZWQgaW50IGFjdGlvbjsKLQotCWlmICghZGV2KQotCQlnb3RvIG91dDsKLQotCXNwaW5f
bG9ja19pcnFzYXZlKGFwLT5sb2NrLCBmbGFncyk7Ci0KLQkvKiBpZiBAc2RldiBpcyBhbHJlYWR5
IGRldGFjaGVkLCBub3RoaW5nIHRvIGRvICovCi0JaWYgKHNkZXYtPnNkZXZfc3RhdGUgPT0gU0RF
Vl9PRkZMSU5FIHx8Ci0JICAgIHNkZXYtPnNkZXZfc3RhdGUgPT0gU0RFVl9DQU5DRUwgfHwgc2Rl
di0+c2Rldl9zdGF0ZSA9PSBTREVWX0RFTCkKLQkJZ290byBvdXRfdW5sb2NrOwotCi0JLyogcmVx
dWVzdCByZXN1bWUgKi8KLQlhY3Rpb24gPSBBVEFfRUhfUkVTVU1FOwotCWlmIChzZGV2LT5zZGV2
X2dlbmRldi5wb3dlci5wb3dlcl9zdGF0ZS5ldmVudCA9PSBQTV9FVkVOVF9TVVNQRU5EKQotCQlf
X2F0YV9laGlfaG90cGx1Z2dlZChlaGkpOwotCWVsc2UKLQkJYWN0aW9uIHw9IEFUQV9FSF9QTV9G
UkVFWkUgfCBBVEFfRUhfU09GVFJFU0VUOwotCWVoaS0+ZGV2X2FjdGlvbltkZXYtPmRldm5vXSB8
PSBhY3Rpb247Ci0KLQkvKiBXZSBkb24ndCB3YW50IGF1dG9wc3kgYW5kIHZlcmJvc2UgRUggbWVz
c2FnZXMuICBEaXNhYmxlCi0JICogdGhvc2UgaWYgd2UncmUgdGhlIG9ubHkgZGV2aWNlIG9uIHRo
aXMgbGluay4KLQkgKi8KLQlpZiAoYXRhX3BvcnRfbWF4X2RldmljZXMoYXApID09IDEpCi0JCWVo
aS0+ZmxhZ3MgfD0gQVRBX0VISV9OT19BVVRPUFNZIHwgQVRBX0VISV9RVUlFVDsKLQotCWF0YV9w
b3J0X3NjaGVkdWxlX2VoKGFwKTsKLQotIG91dF91bmxvY2s6Ci0Jc3Bpbl91bmxvY2tfaXJxcmVz
dG9yZShhcC0+bG9jaywgZmxhZ3MpOwotIG91dDoKLQlzZGV2LT5zZGV2X2dlbmRldi5wb3dlci5w
b3dlcl9zdGF0ZSA9IFBNU0dfT047Ci0JcmV0dXJuIDA7Ci19Ci0jZW5kaWYgLyogQ09ORklHX1BN
ICovCi0KIC8qKgogICoJYXRhX3RvX3NlbnNlX2Vycm9yIC0gY29udmVydCBBVEEgZXJyb3IgdG8g
U0NTSSBlcnJvcgogICoJQGlkOiBBVEEgZGV2aWNlIG51bWJlcgpAQCAtOTI5LDYgKzgwMiw4IEBA
IGludCBhdGFfc2NzaV9zbGF2ZV9jb25maWcoc3RydWN0IHNjc2lfZGUKIAogCWJsa19xdWV1ZV9t
YXhfcGh5c19zZWdtZW50cyhzZGV2LT5yZXF1ZXN0X3F1ZXVlLCBMSUJBVEFfTUFYX1BSRCk7CiAK
KwlzZGV2LT5tYW5hZ2Vfc3RhcnRfc3RvcCA9IDE7CisKIAlpZiAoZGV2KQogCQlhdGFfc2NzaV9k
ZXZfY29uZmlnKHNkZXYsIGRldik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfYWxp
LmMgYi9kcml2ZXJzL2F0YS9wYXRhX2FsaS5jCmluZGV4IGQ0MGVkZWIuLjQ4Yzc1MzEgMTAwNjQ0
Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfYWxpLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9hbGku
YwpAQCAtMjkxLDEwICsyOTEsNiBAQCBzdGF0aWMgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBh
bGlfc2h0CiAJLnNsYXZlX2NvbmZpZ3VyZQk9IGF0YV9zY3NpX3NsYXZlX2NvbmZpZywKIAkuc2xh
dmVfZGVzdHJveQkJPSBhdGFfc2NzaV9zbGF2ZV9kZXN0cm95LAogCS5iaW9zX3BhcmFtCQk9IGF0
YV9zdGRfYmlvc19wYXJhbSwKLSNpZmRlZiBDT05GSUdfUE0KLQkucmVzdW1lCQkJPSBhdGFfc2Nz
aV9kZXZpY2VfcmVzdW1lLAotCS5zdXNwZW5kCQk9IGF0YV9zY3NpX2RldmljZV9zdXNwZW5kLAot
I2VuZGlmCiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9hbWQuYyBiL2Ry
aXZlcnMvYXRhL3BhdGFfYW1kLmMKaW5kZXggNTM2ZWU4OS4uMjM5MDNjOCAxMDA2NDQKLS0tIGEv
ZHJpdmVycy9hdGEvcGF0YV9hbWQuYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX2FtZC5jCkBAIC0z
MjMsMTAgKzMyMyw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIGFtZF9zaHQK
IAkuc2xhdmVfY29uZmlndXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAogCS5zbGF2ZV9kZXN0
cm95CQk9IGF0YV9zY3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9i
aW9zX3BhcmFtLAotI2lmZGVmIENPTkZJR19QTQotCS5yZXN1bWUJCQk9IGF0YV9zY3NpX2Rldmlj
ZV9yZXN1bWUsCi0JLnN1c3BlbmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0jZW5kaWYK
IH07CiAKIHN0YXRpYyBzdHJ1Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyBhbWQzM19wb3J0X29wcyA9
IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfYXRpaXhwLmMgYi9kcml2ZXJzL2F0YS9w
YXRhX2F0aWl4cC5jCmluZGV4IDM5Yzg3MWEuLmI0MDQ4ZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv
YXRhL3BhdGFfYXRpaXhwLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9hdGlpeHAuYwpAQCAtMjI5
LDEwICsyMjksNiBAQCBzdGF0aWMgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBhdGlpeHBfCiAJ
LnNsYXZlX2NvbmZpZ3VyZQk9IGF0YV9zY3NpX3NsYXZlX2NvbmZpZywKIAkuc2xhdmVfZGVzdHJv
eQkJPSBhdGFfc2NzaV9zbGF2ZV9kZXN0cm95LAogCS5iaW9zX3BhcmFtCQk9IGF0YV9zdGRfYmlv
c19wYXJhbSwKLSNpZmRlZiBDT05GSUdfUE0KLQkucmVzdW1lCQkJPSBhdGFfc2NzaV9kZXZpY2Vf
cmVzdW1lLAotCS5zdXNwZW5kCQk9IGF0YV9zY3NpX2RldmljZV9zdXNwZW5kLAotI2VuZGlmCiB9
OwogCiBzdGF0aWMgc3RydWN0IGF0YV9wb3J0X29wZXJhdGlvbnMgYXRpaXhwX3BvcnRfb3BzID0g
ewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9jbWQ2NHguYyBiL2RyaXZlcnMvYXRhL3Bh
dGFfY21kNjR4LmMKaW5kZXggMzk4OWNjNS4uM2UwMmM2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9h
dGEvcGF0YV9jbWQ2NHguYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX2NtZDY0eC5jCkBAIC0yNjYs
MTAgKzI2Niw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIGNtZDY0eF8KIAku
c2xhdmVfY29uZmlndXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAogCS5zbGF2ZV9kZXN0cm95
CQk9IGF0YV9zY3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9z
X3BhcmFtLAotI2lmZGVmIENPTkZJR19QTQotCS5yZXN1bWUJCQk9IGF0YV9zY3NpX2RldmljZV9y
ZXN1bWUsCi0JLnN1c3BlbmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0jZW5kaWYKIH07
CiAKIHN0YXRpYyBzdHJ1Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyBjbWQ2NHhfcG9ydF9vcHMgPSB7
CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX2NzNTUyMC5jIGIvZHJpdmVycy9hdGEvcGF0
YV9jczU1MjAuYwppbmRleCA3OWJlZjBkLi44M2JjYzViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0
YS9wYXRhX2NzNTUyMC5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfY3M1NTIwLmMKQEAgLTE1NSwx
MCArMTU1LDYgQEAgc3RhdGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgY3M1NTIwXwogCS5z
bGF2ZV9jb25maWd1cmUJPSBhdGFfc2NzaV9zbGF2ZV9jb25maWcsCiAJLnNsYXZlX2Rlc3Ryb3kJ
CT0gYXRhX3Njc2lfc2xhdmVfZGVzdHJveSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3Nf
cGFyYW0sCi0jaWZkZWYgQ09ORklHX1BNCi0JLnJlc3VtZQkJCT0gYXRhX3Njc2lfZGV2aWNlX3Jl
c3VtZSwKLQkuc3VzcGVuZAkJPSBhdGFfc2NzaV9kZXZpY2Vfc3VzcGVuZCwKLSNlbmRpZgogfTsK
IAogc3RhdGljIHN0cnVjdCBhdGFfcG9ydF9vcGVyYXRpb25zIGNzNTUyMF9wb3J0X29wcyA9IHsK
ZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfY3M1NTMwLmMgYi9kcml2ZXJzL2F0YS9wYXRh
X2NzNTUzMC5jCmluZGV4IDI5NjQyZDUuLjYzN2Q4YjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRh
L3BhdGFfY3M1NTMwLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9jczU1MzAuYwpAQCAtMTc2LDEw
ICsxNzYsNiBAQCBzdGF0aWMgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBjczU1MzBfCiAJLnNs
YXZlX2NvbmZpZ3VyZQk9IGF0YV9zY3NpX3NsYXZlX2NvbmZpZywKIAkuc2xhdmVfZGVzdHJveQkJ
PSBhdGFfc2NzaV9zbGF2ZV9kZXN0cm95LAogCS5iaW9zX3BhcmFtCQk9IGF0YV9zdGRfYmlvc19w
YXJhbSwKLSNpZmRlZiBDT05GSUdfUE0KLQkucmVzdW1lCQkJPSBhdGFfc2NzaV9kZXZpY2VfcmVz
dW1lLAotCS5zdXNwZW5kCQk9IGF0YV9zY3NpX2RldmljZV9zdXNwZW5kLAotI2VuZGlmCiB9Owog
CiBzdGF0aWMgc3RydWN0IGF0YV9wb3J0X29wZXJhdGlvbnMgY3M1NTMwX3BvcnRfb3BzID0gewpk
aWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9jczU1MzUuYyBiL2RyaXZlcnMvYXRhL3BhdGFf
Y3M1NTM1LmMKaW5kZXggMDhjY2NjOS4uNTQ1ODZhYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEv
cGF0YV9jczU1MzUuYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX2NzNTUzNS5jCkBAIC0xNzIsMTAg
KzE3Miw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIGNzNTUzNV8KIAkuc2xh
dmVfY29uZmlndXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAogCS5zbGF2ZV9kZXN0cm95CQk9
IGF0YV9zY3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3Bh
cmFtLAotI2lmZGVmIENPTkZJR19QTQotCS5yZXN1bWUJCQk9IGF0YV9zY3NpX2RldmljZV9yZXN1
bWUsCi0JLnN1c3BlbmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0jZW5kaWYKIH07CiAK
IHN0YXRpYyBzdHJ1Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyBjczU1MzVfcG9ydF9vcHMgPSB7CmRp
ZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX2N5cHJlc3MuYyBiL2RyaXZlcnMvYXRhL3BhdGFf
Y3lwcmVzcy5jCmluZGV4IDZlYzA0OWMuLjMwZTVjNTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRh
L3BhdGFfY3lwcmVzcy5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfY3lwcmVzcy5jCkBAIC0xMjUs
MTAgKzEyNSw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIGN5ODJjNjkKIAku
c2xhdmVfY29uZmlndXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAogCS5zbGF2ZV9kZXN0cm95
CQk9IGF0YV9zY3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9z
X3BhcmFtLAotI2lmZGVmIENPTkZJR19QTQotCS5yZXN1bWUJCQk9IGF0YV9zY3NpX2RldmljZV9y
ZXN1bWUsCi0JLnN1c3BlbmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0jZW5kaWYKIH07
CiAKIHN0YXRpYyBzdHJ1Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyBjeTgyYzY5M19wb3J0X29wcyA9
IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfZWZhci5jIGIvZHJpdmVycy9hdGEvcGF0
YV9lZmFyLmMKaW5kZXggYTMyMTY4NS4uMzg0MTFmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEv
cGF0YV9lZmFyLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9lZmFyLmMKQEAgLTI0NiwxMCArMjQ2
LDYgQEAgc3RhdGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgZWZhcl9zaAogCS5zbGF2ZV9j
b25maWd1cmUJPSBhdGFfc2NzaV9zbGF2ZV9jb25maWcsCiAJLnNsYXZlX2Rlc3Ryb3kJCT0gYXRh
X3Njc2lfc2xhdmVfZGVzdHJveSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFyYW0s
Ci0jaWZkZWYgQ09ORklHX1BNCi0JLnJlc3VtZQkJCT0gYXRhX3Njc2lfZGV2aWNlX3Jlc3VtZSwK
LQkuc3VzcGVuZAkJPSBhdGFfc2NzaV9kZXZpY2Vfc3VzcGVuZCwKLSNlbmRpZgogfTsKIAogc3Rh
dGljIGNvbnN0IHN0cnVjdCBhdGFfcG9ydF9vcGVyYXRpb25zIGVmYXJfb3BzID0gewpkaWZmIC0t
Z2l0IGEvZHJpdmVycy9hdGEvcGF0YV9ocHQzNjYuYyBiL2RyaXZlcnMvYXRhL3BhdGFfaHB0MzY2
LmMKaW5kZXggOTNjZmE2ZC4uYzQxMmE5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9o
cHQzNjYuYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX2hwdDM2Ni5jCkBAIC0zMzEsMTAgKzMzMSw2
IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIGhwdDM2eF8KIAkuc2xhdmVfY29u
ZmlndXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAogCS5zbGF2ZV9kZXN0cm95CQk9IGF0YV9z
Y3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAot
I2lmZGVmIENPTkZJR19QTQotCS5yZXN1bWUJCQk9IGF0YV9zY3NpX2RldmljZV9yZXN1bWUsCi0J
LnN1c3BlbmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0jZW5kaWYKIH07CiAKIC8qCmRp
ZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX2hwdDN4My5jIGIvZHJpdmVycy9hdGEvcGF0YV9o
cHQzeDMuYwppbmRleCBhYzI4ZWM4Li44NGM2MzZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9w
YXRhX2hwdDN4My5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfaHB0M3gzLmMKQEAgLTEwMCwxMCAr
MTAwLDYgQEAgc3RhdGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgaHB0M3gzXwogCS5zbGF2
ZV9jb25maWd1cmUJPSBhdGFfc2NzaV9zbGF2ZV9jb25maWcsCiAJLnNsYXZlX2Rlc3Ryb3kJCT0g
YXRhX3Njc2lfc2xhdmVfZGVzdHJveSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFy
YW0sCi0jaWZkZWYgQ09ORklHX1BNCi0JLnJlc3VtZQkJCT0gYXRhX3Njc2lfZGV2aWNlX3Jlc3Vt
ZSwKLQkuc3VzcGVuZAkJPSBhdGFfc2NzaV9kZXZpY2Vfc3VzcGVuZCwKLSNlbmRpZgogfTsKIAog
c3RhdGljIHN0cnVjdCBhdGFfcG9ydF9vcGVyYXRpb25zIGhwdDN4M19wb3J0X29wcyA9IHsKZGlm
ZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfaXQ4MjEzLmMgYi9kcml2ZXJzL2F0YS9wYXRhX2l0
ODIxMy5jCmluZGV4IDAxMTMwNmUuLmUxYmQyNjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3Bh
dGFfaXQ4MjEzLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9pdDgyMTMuYwpAQCAtMjU1LDEwICsy
NTUsNiBAQCBzdGF0aWMgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBpdDgyMTNfCiAJLmRtYV9i
b3VuZGFyeQkJPSBBVEFfRE1BX0JPVU5EQVJZLAogCS5zbGF2ZV9jb25maWd1cmUJPSBhdGFfc2Nz
aV9zbGF2ZV9jb25maWcsCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAotI2lm
ZGVmIENPTkZJR19QTQotCS5yZXN1bWUJCQk9IGF0YV9zY3NpX2RldmljZV9yZXN1bWUsCi0JLnN1
c3BlbmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0jZW5kaWYKIH07CiAKIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyBpdDgyMTNfb3BzID0gewpkaWZmIC0tZ2l0
IGEvZHJpdmVycy9hdGEvcGF0YV9pdDgyMXguYyBiL2RyaXZlcnMvYXRhL3BhdGFfaXQ4MjF4LmMK
aW5kZXggZjFmOGNlYy4uOGU1NjVhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9pdDgy
MXguYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX2l0ODIxeC5jCkBAIC02MjAsMTAgKzYyMCw2IEBA
IHN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIGl0ODIxeF8KIAkuc2xhdmVfY29uZmln
dXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAogCS5zbGF2ZV9kZXN0cm95CQk9IGF0YV9zY3Np
X3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAotI2lm
ZGVmIENPTkZJR19QTQotCS5yZXN1bWUJCQk9IGF0YV9zY3NpX2RldmljZV9yZXN1bWUsCi0JLnN1
c3BlbmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0jZW5kaWYKIH07CiAKIHN0YXRpYyBz
dHJ1Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyBpdDgyMXhfc21hcnRfcG9ydF9vcHMgPSB7CmRpZmYg
LS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX2l4cDR4eF9jZi5jIGIvZHJpdmVycy9hdGEvcGF0YV9p
eHA0eHhfY2YuYwppbmRleCA0MjBjMzQzLi5iOTk0MzUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0
YS9wYXRhX2l4cDR4eF9jZi5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfaXhwNHh4X2NmLmMKQEAg
LTMxLDcgKzMxLDcgQEAgc3RhdGljIGludCBpeHA0eHhfc2V0X21vZGUoc3RydWN0IGF0YV9wbwog
CiAJZm9yIChpID0gMDsgaSA8IEFUQV9NQVhfREVWSUNFUzsgaSsrKSB7CiAJCXN0cnVjdCBhdGFf
ZGV2aWNlICpkZXYgPSAmYXAtPmRldmljZVtpXTsKLQkJaWYgKGF0YV9kZXZfcmVhZHkoZGV2KSkg
eworCQlpZiAoYXRhX2Rldl9lbmFibGVkKGRldikpIHsKIAkJCWF0YV9kZXZfcHJpbnRrKGRldiwg
S0VSTl9JTkZPLCAiY29uZmlndXJlZCBmb3IgUElPMFxuIik7CiAJCQlkZXYtPnBpb19tb2RlID0g
WEZFUl9QSU9fMDsKIAkJCWRldi0+eGZlcl9tb2RlID0gWEZFUl9QSU9fMDsKZGlmZiAtLWdpdCBh
L2RyaXZlcnMvYXRhL3BhdGFfam1pY3Jvbi5jIGIvZHJpdmVycy9hdGEvcGF0YV9qbWljcm9uLmMK
aW5kZXggNDM3NjNjOS4uZTNmNmY1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9qbWlj
cm9uLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9qbWljcm9uLmMKQEAgLTEzNywxMCArMTM3LDYg
QEAgc3RhdGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgam1pY3JvbgogCS5zbGF2ZV9kZXN0
cm95CQk9IGF0YV9zY3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLyogVXNlIHN0YW5kYXJkIENIUyBtYXBw
aW5nIHJ1bGVzICovCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAotI2lmZGVm
IENPTkZJR19QTQotCS5zdXNwZW5kCQk9IGF0YV9zY3NpX2RldmljZV9zdXNwZW5kLAotCS5yZXN1
bWUJCQk9IGF0YV9zY3NpX2RldmljZV9yZXN1bWUsCi0jZW5kaWYKIH07CiAKIHN0YXRpYyBjb25z
dCBzdHJ1Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyBqbWljcm9uX29wcyA9IHsKZGlmZiAtLWdpdCBh
L2RyaXZlcnMvYXRhL3BhdGFfbWFydmVsbC5jIGIvZHJpdmVycy9hdGEvcGF0YV9tYXJ2ZWxsLmMK
aW5kZXggZDliOTRhMS4uNGMyODJhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9tYXJ2
ZWxsLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9tYXJ2ZWxsLmMKQEAgLTEwNCwxMCArMTA0LDYg
QEAgc3RhdGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgbWFydmVsbAogCS5zbGF2ZV9kZXN0
cm95CQk9IGF0YV9zY3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLyogVXNlIHN0YW5kYXJkIENIUyBtYXBw
aW5nIHJ1bGVzICovCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAotI2lmZGVm
IENPTkZJR19QTQotCS5yZXN1bWUJCQk9IGF0YV9zY3NpX2RldmljZV9yZXN1bWUsCi0JLnN1c3Bl
bmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0jZW5kaWYKIH07CiAKIHN0YXRpYyBjb25z
dCBzdHJ1Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyBtYXJ2ZWxsX29wcyA9IHsKZGlmZiAtLWdpdCBh
L2RyaXZlcnMvYXRhL3BhdGFfbXBjNTJ4eC5jIGIvZHJpdmVycy9hdGEvcGF0YV9tcGM1Mnh4LmMK
aW5kZXggOTU4N2E4OS4uMzY4ZmFjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9tcGM1
Mnh4LmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9tcGM1Mnh4LmMKQEAgLTI4MCwxMCArMjgwLDYg
QEAgc3RhdGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgbXBjNTJ4eAogCS5kbWFfYm91bmRh
cnkJCT0gQVRBX0RNQV9CT1VOREFSWSwKIAkuc2xhdmVfY29uZmlndXJlCT0gYXRhX3Njc2lfc2xh
dmVfY29uZmlnLAogCS5iaW9zX3BhcmFtCQk9IGF0YV9zdGRfYmlvc19wYXJhbSwKLSNpZmRlZiBD
T05GSUdfUE0KLQkuc3VzcGVuZAkJPSBhdGFfc2NzaV9kZXZpY2Vfc3VzcGVuZCwKLQkucmVzdW1l
CQkJPSBhdGFfc2NzaV9kZXZpY2VfcmVzdW1lLAotI2VuZGlmCiB9OwogCiBzdGF0aWMgc3RydWN0
IGF0YV9wb3J0X29wZXJhdGlvbnMgbXBjNTJ4eF9hdGFfcG9ydF9vcHMgPSB7CmRpZmYgLS1naXQg
YS9kcml2ZXJzL2F0YS9wYXRhX21waWl4LmMgYi9kcml2ZXJzL2F0YS9wYXRhX21waWl4LmMKaW5k
ZXggOTg3YzVmYS4uMjg1ODkyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9tcGlpeC5j
CisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfbXBpaXguYwpAQCAtMTY0LDEwICsxNjQsNiBAQCBzdGF0
aWMgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBtcGlpeF9zCiAJLnNsYXZlX2NvbmZpZ3VyZQk9
IGF0YV9zY3NpX3NsYXZlX2NvbmZpZywKIAkuc2xhdmVfZGVzdHJveQkJPSBhdGFfc2NzaV9zbGF2
ZV9kZXN0cm95LAogCS5iaW9zX3BhcmFtCQk9IGF0YV9zdGRfYmlvc19wYXJhbSwKLSNpZmRlZiBD
T05GSUdfUE0KLQkucmVzdW1lCQkJPSBhdGFfc2NzaV9kZXZpY2VfcmVzdW1lLAotCS5zdXNwZW5k
CQk9IGF0YV9zY3NpX2RldmljZV9zdXNwZW5kLAotI2VuZGlmCiB9OwogCiBzdGF0aWMgc3RydWN0
IGF0YV9wb3J0X29wZXJhdGlvbnMgbXBpaXhfcG9ydF9vcHMgPSB7CmRpZmYgLS1naXQgYS9kcml2
ZXJzL2F0YS9wYXRhX25ldGNlbGwuYyBiL2RyaXZlcnMvYXRhL3BhdGFfbmV0Y2VsbC5jCmluZGV4
IGRiYmE1YjcuLmYxNWViMzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfbmV0Y2VsbC5j
CisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfbmV0Y2VsbC5jCkBAIC0zNywxMCArMzcsNiBAQCBzdGF0
aWMgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBuZXRjZWxsCiAJLnNsYXZlX2Rlc3Ryb3kJCT0g
YXRhX3Njc2lfc2xhdmVfZGVzdHJveSwKIAkvKiBVc2Ugc3RhbmRhcmQgQ0hTIG1hcHBpbmcgcnVs
ZXMgKi8KIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFyYW0sCi0jaWZkZWYgQ09ORklH
X1BNCi0JLnJlc3VtZQkJCT0gYXRhX3Njc2lfZGV2aWNlX3Jlc3VtZSwKLQkuc3VzcGVuZAkJPSBh
dGFfc2NzaV9kZXZpY2Vfc3VzcGVuZCwKLSNlbmRpZgogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVj
dCBhdGFfcG9ydF9vcGVyYXRpb25zIG5ldGNlbGxfb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVy
cy9hdGEvcGF0YV9uczg3NDEwLmMgYi9kcml2ZXJzL2F0YS9wYXRhX25zODc0MTAuYwppbmRleCAw
NzhhZWRhLi4yMTQ3MTcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX25zODc0MTAuYwor
KysgYi9kcml2ZXJzL2F0YS9wYXRhX25zODc0MTAuYwpAQCAtMTU2LDEwICsxNTYsNiBAQCBzdGF0
aWMgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBuczg3NDEwCiAJLnNsYXZlX2NvbmZpZ3VyZQk9
IGF0YV9zY3NpX3NsYXZlX2NvbmZpZywKIAkuc2xhdmVfZGVzdHJveQkJPSBhdGFfc2NzaV9zbGF2
ZV9kZXN0cm95LAogCS5iaW9zX3BhcmFtCQk9IGF0YV9zdGRfYmlvc19wYXJhbSwKLSNpZmRlZiBD
T05GSUdfUE0KLQkucmVzdW1lCQkJPSBhdGFfc2NzaV9kZXZpY2VfcmVzdW1lLAotCS5zdXNwZW5k
CQk9IGF0YV9zY3NpX2RldmljZV9zdXNwZW5kLAotI2VuZGlmCiB9OwogCiBzdGF0aWMgc3RydWN0
IGF0YV9wb3J0X29wZXJhdGlvbnMgbnM4NzQxMF9wb3J0X29wcyA9IHsKZGlmZiAtLWdpdCBhL2Ry
aXZlcnMvYXRhL3BhdGFfb2xkcGlpeC5jIGIvZHJpdmVycy9hdGEvcGF0YV9vbGRwaWl4LmMKaW5k
ZXggZGVhNDY5MC4uOWNjMWQxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9vbGRwaWl4
LmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9vbGRwaWl4LmMKQEAgLTIzMiwxMCArMjMyLDYgQEAg
c3RhdGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgb2xkcGlpeAogCS5zbGF2ZV9jb25maWd1
cmUJPSBhdGFfc2NzaV9zbGF2ZV9jb25maWcsCiAJLnNsYXZlX2Rlc3Ryb3kJCT0gYXRhX3Njc2lf
c2xhdmVfZGVzdHJveSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFyYW0sCi0jaWZk
ZWYgQ09ORklHX1BNCi0JLnJlc3VtZQkJCT0gYXRhX3Njc2lfZGV2aWNlX3Jlc3VtZSwKLQkuc3Vz
cGVuZAkJPSBhdGFfc2NzaV9kZXZpY2Vfc3VzcGVuZCwKLSNlbmRpZgogfTsKIAogc3RhdGljIGNv
bnN0IHN0cnVjdCBhdGFfcG9ydF9vcGVyYXRpb25zIG9sZHBpaXhfcGF0YV9vcHMgPSB7CmRpZmYg
LS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX29wdGkuYyBiL2RyaXZlcnMvYXRhL3BhdGFfb3B0aS5j
CmluZGV4IDEzYjYzZTIuLmFmMDBjMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfb3B0
aS5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfb3B0aS5jCkBAIC0xNzcsMTAgKzE3Nyw2IEBAIHN0
YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIG9wdGlfc2gKIAkuc2xhdmVfY29uZmlndXJl
CT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAogCS5zbGF2ZV9kZXN0cm95CQk9IGF0YV9zY3NpX3Ns
YXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAotI2lmZGVm
IENPTkZJR19QTQotCS5yZXN1bWUJCQk9IGF0YV9zY3NpX2RldmljZV9yZXN1bWUsCi0JLnN1c3Bl
bmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0jZW5kaWYKIH07CiAKIHN0YXRpYyBzdHJ1
Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyBvcHRpX3BvcnRfb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJp
dmVycy9hdGEvcGF0YV9vcHRpZG1hLmMgYi9kcml2ZXJzL2F0YS9wYXRhX29wdGlkbWEuYwppbmRl
eCBiNzBlMDRjLi5kMTU2OWE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX29wdGlkbWEu
YworKysgYi9kcml2ZXJzL2F0YS9wYXRhX29wdGlkbWEuYwpAQCAtMzYyLDEwICszNjIsNiBAQCBz
dGF0aWMgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBvcHRpZG1hCiAJLnNsYXZlX2NvbmZpZ3Vy
ZQk9IGF0YV9zY3NpX3NsYXZlX2NvbmZpZywKIAkuc2xhdmVfZGVzdHJveQkJPSBhdGFfc2NzaV9z
bGF2ZV9kZXN0cm95LAogCS5iaW9zX3BhcmFtCQk9IGF0YV9zdGRfYmlvc19wYXJhbSwKLSNpZmRl
ZiBDT05GSUdfUE0KLQkucmVzdW1lCQkJPSBhdGFfc2NzaV9kZXZpY2VfcmVzdW1lLAotCS5zdXNw
ZW5kCQk9IGF0YV9zY3NpX2RldmljZV9zdXNwZW5kLAotI2VuZGlmCiB9OwogCiBzdGF0aWMgc3Ry
dWN0IGF0YV9wb3J0X29wZXJhdGlvbnMgb3B0aWRtYV9wb3J0X29wcyA9IHsKZGlmZiAtLWdpdCBh
L2RyaXZlcnMvYXRhL3BhdGFfcGRjMjAyeHhfb2xkLmMgYi9kcml2ZXJzL2F0YS9wYXRhX3BkYzIw
Mnh4X29sZC5jCmluZGV4IGVlNjM2YmUuLjNlMjA0YzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRh
L3BhdGFfcGRjMjAyeHhfb2xkLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9wZGMyMDJ4eF9vbGQu
YwpAQCAtMjQ0LDEwICsyNDQsNiBAQCBzdGF0aWMgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBw
ZGMyMDJ4CiAJLnNsYXZlX2NvbmZpZ3VyZQk9IGF0YV9zY3NpX3NsYXZlX2NvbmZpZywKIAkuc2xh
dmVfZGVzdHJveQkJPSBhdGFfc2NzaV9zbGF2ZV9kZXN0cm95LAogCS5iaW9zX3BhcmFtCQk9IGF0
YV9zdGRfYmlvc19wYXJhbSwKLSNpZmRlZiBDT05GSUdfUE0KLQkucmVzdW1lCQkJPSBhdGFfc2Nz
aV9kZXZpY2VfcmVzdW1lLAotCS5zdXNwZW5kCQk9IGF0YV9zY3NpX2RldmljZV9zdXNwZW5kLAot
I2VuZGlmCiB9OwogCiBzdGF0aWMgc3RydWN0IGF0YV9wb3J0X29wZXJhdGlvbnMgcGRjMjAyNHhf
cG9ydF9vcHMgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX3JhZGlzeXMuYyBiL2Ry
aXZlcnMvYXRhL3BhdGFfcmFkaXN5cy5jCmluZGV4IDFjNTQ2NzMuLmJjMDFiMTcgMTAwNjQ0Ci0t
LSBhL2RyaXZlcnMvYXRhL3BhdGFfcmFkaXN5cy5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfcmFk
aXN5cy5jCkBAIC0yMDAsMTAgKzIwMCw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBs
YXRlIHJhZGlzeXMKIAkuc2xhdmVfY29uZmlndXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAog
CS5zbGF2ZV9kZXN0cm95CQk9IGF0YV9zY3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0J
CT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAotI2lmZGVmIENPTkZJR19QTQotCS5yZXN1bWUJCQk9IGF0
YV9zY3NpX2RldmljZV9yZXN1bWUsCi0JLnN1c3BlbmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3Bl
bmQsCi0jZW5kaWYKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRhX3BvcnRfb3BlcmF0aW9u
cyByYWRpc3lzX3BhdGFfb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9yejEw
MDAuYyBiL2RyaXZlcnMvYXRhL3BhdGFfcnoxMDAwLmMKaW5kZXggODVjNDUyOS4uOTc3ODViNCAx
MDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9yejEwMDAuYworKysgYi9kcml2ZXJzL2F0YS9w
YXRhX3J6MTAwMC5jCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBpbnQgcnoxMDAwX3NldF9tb2Rl
KHN0cnVjdCBhdGFfcG8KIAogCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklDRVM7IGkrKykg
ewogCQlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2ID0gJmFwLT5kZXZpY2VbaV07Ci0JCWlmIChhdGFf
ZGV2X3JlYWR5KGRldikpIHsKKwkJaWYgKGF0YV9kZXZfZW5hYmxlZChkZXYpKSB7CiAJCQkvKiBX
ZSBkb24ndCByZWFsbHkgY2FyZSAqLwogCQkJZGV2LT5waW9fbW9kZSA9IFhGRVJfUElPXzA7CiAJ
CQlkZXYtPnhmZXJfbW9kZSA9IFhGRVJfUElPXzA7CkBAIC02OSwxMCArNjksNiBAQCBzdGF0aWMg
c3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSByejEwMDBfCiAJLnNsYXZlX2NvbmZpZ3VyZQk9IGF0
YV9zY3NpX3NsYXZlX2NvbmZpZywKIAkuc2xhdmVfZGVzdHJveQkJPSBhdGFfc2NzaV9zbGF2ZV9k
ZXN0cm95LAogCS5iaW9zX3BhcmFtCQk9IGF0YV9zdGRfYmlvc19wYXJhbSwKLSNpZmRlZiBDT05G
SUdfUE0KLQkucmVzdW1lCQkJPSBhdGFfc2NzaV9kZXZpY2VfcmVzdW1lLAotCS5zdXNwZW5kCQk9
IGF0YV9zY3NpX2RldmljZV9zdXNwZW5kLAotI2VuZGlmCiB9OwogCiBzdGF0aWMgc3RydWN0IGF0
YV9wb3J0X29wZXJhdGlvbnMgcnoxMDAwX3BvcnRfb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVy
cy9hdGEvcGF0YV9zYzEyMDAuYyBiL2RyaXZlcnMvYXRhL3BhdGFfc2MxMjAwLmMKaW5kZXggNjZl
OGZmNC4uMmFmOWY4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9zYzEyMDAuYworKysg
Yi9kcml2ZXJzL2F0YS9wYXRhX3NjMTIwMC5jCkBAIC0xOTQsMTAgKzE5NCw2IEBAIHN0YXRpYyBz
dHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIHNjMTIwMF8KIAkuc2xhdmVfY29uZmlndXJlCT0gYXRh
X3Njc2lfc2xhdmVfY29uZmlnLAogCS5zbGF2ZV9kZXN0cm95CQk9IGF0YV9zY3NpX3NsYXZlX2Rl
c3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAotI2lmZGVmIENPTkZJ
R19QTQotCS5yZXN1bWUJCQk9IGF0YV9zY3NpX2RldmljZV9yZXN1bWUsCi0JLnN1c3BlbmQJCT0g
YXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0jZW5kaWYKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgYXRh
X3BvcnRfb3BlcmF0aW9ucyBzYzEyMDBfcG9ydF9vcHMgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJz
L2F0YS9wYXRhX3NjYy5jIGIvZHJpdmVycy9hdGEvcGF0YV9zY2MuYwppbmRleCA1ZGYzNTRkLi4y
NDMxMzBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX3NjYy5jCisrKyBiL2RyaXZlcnMv
YXRhL3BhdGFfc2NjLmMKQEAgLTk4NCwxMCArOTg0LDYgQEAgc3RhdGljIHN0cnVjdCBzY3NpX2hv
c3RfdGVtcGxhdGUgc2NjX3NodAogCS5zbGF2ZV9jb25maWd1cmUJPSBhdGFfc2NzaV9zbGF2ZV9j
b25maWcsCiAJLnNsYXZlX2Rlc3Ryb3kJCT0gYXRhX3Njc2lfc2xhdmVfZGVzdHJveSwKIAkuYmlv
c19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFyYW0sCi0jaWZkZWYgQ09ORklHX1BNCi0JLnJlc3Vt
ZQkJCT0gYXRhX3Njc2lfZGV2aWNlX3Jlc3VtZSwKLQkuc3VzcGVuZAkJPSBhdGFfc2NzaV9kZXZp
Y2Vfc3VzcGVuZCwKLSNlbmRpZgogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBhdGFfcG9ydF9v
cGVyYXRpb25zIHNjY19wYXRhX29wcyA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFf
c2VydmVyd29ya3MuYyBiL2RyaXZlcnMvYXRhL3BhdGFfc2VydmVyd29ya3MuYwppbmRleCAzOTU2
ZWYyLi5mZGQ5YTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX3NlcnZlcndvcmtzLmMK
KysrIGIvZHJpdmVycy9hdGEvcGF0YV9zZXJ2ZXJ3b3Jrcy5jCkBAIC0zMTMsMTAgKzMxMyw2IEBA
IHN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIHNlcnZlcncKIAkuc2xhdmVfY29uZmln
dXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAogCS5zbGF2ZV9kZXN0cm95CQk9IGF0YV9zY3Np
X3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAotI2lm
ZGVmIENPTkZJR19QTQotCS5yZXN1bWUJCQk9IGF0YV9zY3NpX2RldmljZV9yZXN1bWUsCi0JLnN1
c3BlbmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0jZW5kaWYKIH07CiAKIHN0YXRpYyBz
dHJ1Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyBzZXJ2ZXJ3b3Jrc19vc2I0X3BvcnRfb3BzID0gewpk
aWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9zaWw2ODAuYyBiL2RyaXZlcnMvYXRhL3BhdGFf
c2lsNjgwLmMKaW5kZXggNjc3MDgyMC4uODk3ODE4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEv
cGF0YV9zaWw2ODAuYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX3NpbDY4MC5jCkBAIC0yMzAsMTAg
KzIzMCw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIHNpbDY4MF8KIAkuc2xh
dmVfY29uZmlndXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAogCS5zbGF2ZV9kZXN0cm95CQk9
IGF0YV9zY3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3Bh
cmFtLAotI2lmZGVmIENPTkZJR19QTQotCS5zdXNwZW5kCQk9IGF0YV9zY3NpX2RldmljZV9zdXNw
ZW5kLAotCS5yZXN1bWUJCQk9IGF0YV9zY3NpX2RldmljZV9yZXN1bWUsCi0jZW5kaWYKIH07CiAK
IHN0YXRpYyBzdHJ1Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyBzaWw2ODBfcG9ydF9vcHMgPSB7CmRp
ZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX3Npcy5jIGIvZHJpdmVycy9hdGEvcGF0YV9zaXMu
YwppbmRleCBhM2ZiY2VlLi4xZDdkYzBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX3Np
cy5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfc2lzLmMKQEAgLTUyMCwxMCArNTIwLDYgQEAgc3Rh
dGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgc2lzX3NodAogCS5zbGF2ZV9jb25maWd1cmUJ
PSBhdGFfc2NzaV9zbGF2ZV9jb25maWcsCiAJLnNsYXZlX2Rlc3Ryb3kJCT0gYXRhX3Njc2lfc2xh
dmVfZGVzdHJveSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFyYW0sCi0jaWZkZWYg
Q09ORklHX1BNCi0JLnJlc3VtZQkJCT0gYXRhX3Njc2lfZGV2aWNlX3Jlc3VtZSwKLQkuc3VzcGVu
ZAkJPSBhdGFfc2NzaV9kZXZpY2Vfc3VzcGVuZCwKLSNlbmRpZgogfTsKIAogc3RhdGljIGNvbnN0
IHN0cnVjdCBhdGFfcG9ydF9vcGVyYXRpb25zIHNpc18xMzNfb3BzID0gewpkaWZmIC0tZ2l0IGEv
ZHJpdmVycy9hdGEvcGF0YV90cmlmbGV4LmMgYi9kcml2ZXJzL2F0YS9wYXRhX3RyaWZsZXguYwpp
bmRleCBlNjE4ZmZkLi4zM2ExNjYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX3RyaWZs
ZXguYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX3RyaWZsZXguYwpAQCAtMTkyLDEwICsxOTIsNiBA
QCBzdGF0aWMgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSB0cmlmbGV4CiAJLnNsYXZlX2NvbmZp
Z3VyZQk9IGF0YV9zY3NpX3NsYXZlX2NvbmZpZywKIAkuc2xhdmVfZGVzdHJveQkJPSBhdGFfc2Nz
aV9zbGF2ZV9kZXN0cm95LAogCS5iaW9zX3BhcmFtCQk9IGF0YV9zdGRfYmlvc19wYXJhbSwKLSNp
ZmRlZiBDT05GSUdfUE0KLQkucmVzdW1lCQkJPSBhdGFfc2NzaV9kZXZpY2VfcmVzdW1lLAotCS5z
dXNwZW5kCQk9IGF0YV9zY3NpX2RldmljZV9zdXNwZW5kLAotI2VuZGlmCiB9OwogCiBzdGF0aWMg
c3RydWN0IGF0YV9wb3J0X29wZXJhdGlvbnMgdHJpZmxleF9wb3J0X29wcyA9IHsKZGlmZiAtLWdp
dCBhL2RyaXZlcnMvYXRhL3BhdGFfdmlhLmMgYi9kcml2ZXJzL2F0YS9wYXRhX3ZpYS5jCmluZGV4
IDk2YjcxNzkuLjk2OWI5OGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfdmlhLmMKKysr
IGIvZHJpdmVycy9hdGEvcGF0YV92aWEuYwpAQCAtMzAwLDEwICszMDAsNiBAQCBzdGF0aWMgc3Ry
dWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSB2aWFfc2h0CiAJLnNsYXZlX2NvbmZpZ3VyZQk9IGF0YV9z
Y3NpX3NsYXZlX2NvbmZpZywKIAkuc2xhdmVfZGVzdHJveQkJPSBhdGFfc2NzaV9zbGF2ZV9kZXN0
cm95LAogCS5iaW9zX3BhcmFtCQk9IGF0YV9zdGRfYmlvc19wYXJhbSwKLSNpZmRlZiBDT05GSUdf
UE0KLQkucmVzdW1lCQkJPSBhdGFfc2NzaV9kZXZpY2VfcmVzdW1lLAotCS5zdXNwZW5kCQk9IGF0
YV9zY3NpX2RldmljZV9zdXNwZW5kLAotI2VuZGlmCiB9OwogCiBzdGF0aWMgc3RydWN0IGF0YV9w
b3J0X29wZXJhdGlvbnMgdmlhX3BvcnRfb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEv
c2F0YV9pbmljMTYyeC5jIGIvZHJpdmVycy9hdGEvc2F0YV9pbmljMTYyeC5jCmluZGV4IGYwOTlh
MWQuLjRjMTJkOTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3NhdGFfaW5pYzE2MnguYworKysg
Yi9kcml2ZXJzL2F0YS9zYXRhX2luaWMxNjJ4LmMKQEAgLTEzNSwxMCArMTM1LDYgQEAgc3RhdGlj
IHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgaW5pY19zaAogCS5zbGF2ZV9jb25maWd1cmUJPSBp
bmljX3NsYXZlX2NvbmZpZywKIAkuc2xhdmVfZGVzdHJveQkJPSBhdGFfc2NzaV9zbGF2ZV9kZXN0
cm95LAogCS5iaW9zX3BhcmFtCQk9IGF0YV9zdGRfYmlvc19wYXJhbSwKLSNpZmRlZiBDT05GSUdf
UE0KLQkuc3VzcGVuZAkJPSBhdGFfc2NzaV9kZXZpY2Vfc3VzcGVuZCwKLQkucmVzdW1lCQkJPSBh
dGFfc2NzaV9kZXZpY2VfcmVzdW1lLAotI2VuZGlmCiB9OwogCiBzdGF0aWMgY29uc3QgaW50IHNj
cl9tYXBbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3NhdGFfbnYuYyBiL2RyaXZlcnMv
YXRhL3NhdGFfbnYuYwppbmRleCAwMjE2OTc0Li4wODdmODRiIDEwMDY0NAotLS0gYS9kcml2ZXJz
L2F0YS9zYXRhX252LmMKKysrIGIvZHJpdmVycy9hdGEvc2F0YV9udi5jCkBAIC0zMjMsMTAgKzMy
Myw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIG52X3NodAogCS5zbGF2ZV9j
b25maWd1cmUJPSBhdGFfc2NzaV9zbGF2ZV9jb25maWcsCiAJLnNsYXZlX2Rlc3Ryb3kJCT0gYXRh
X3Njc2lfc2xhdmVfZGVzdHJveSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFyYW0s
Ci0jaWZkZWYgQ09ORklHX1BNCi0JLnN1c3BlbmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQs
Ci0JLnJlc3VtZQkJCT0gYXRhX3Njc2lfZGV2aWNlX3Jlc3VtZSwKLSNlbmRpZgogfTsKIAogc3Rh
dGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgbnZfYWRtYV9zaHQgPSB7CkBAIC0zNDUsMTAg
KzM0MSw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIG52X2FkbWEKIAkuc2xh
dmVfY29uZmlndXJlCT0gbnZfYWRtYV9zbGF2ZV9jb25maWcsCiAJLnNsYXZlX2Rlc3Ryb3kJCT0g
YXRhX3Njc2lfc2xhdmVfZGVzdHJveSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFy
YW0sCi0jaWZkZWYgQ09ORklHX1BNCi0JLnN1c3BlbmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3Bl
bmQsCi0JLnJlc3VtZQkJCT0gYXRhX3Njc2lfZGV2aWNlX3Jlc3VtZSwKLSNlbmRpZgogfTsKIAog
c3RhdGljIGNvbnN0IHN0cnVjdCBhdGFfcG9ydF9vcGVyYXRpb25zIG52X2dlbmVyaWNfb3BzID0g
ewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvc2F0YV9zaWwuYyBiL2RyaXZlcnMvYXRhL3NhdGFf
c2lsLmMKaW5kZXggMGExZTQxNy4uZTg0ODNhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvc2F0
YV9zaWwuYworKysgYi9kcml2ZXJzL2F0YS9zYXRhX3NpbC5jCkBAIC0xODIsMTAgKzE4Miw2IEBA
IHN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIHNpbF9zaHQKIAkuc2xhdmVfY29uZmln
dXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAogCS5zbGF2ZV9kZXN0cm95CQk9IGF0YV9zY3Np
X3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAotI2lm
ZGVmIENPTkZJR19QTQotCS5zdXNwZW5kCQk9IGF0YV9zY3NpX2RldmljZV9zdXNwZW5kLAotCS5y
ZXN1bWUJCQk9IGF0YV9zY3NpX2RldmljZV9yZXN1bWUsCi0jZW5kaWYKIH07CiAKIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyBzaWxfb3BzID0gewpkaWZmIC0tZ2l0IGEv
ZHJpdmVycy9hdGEvc2F0YV9zaWwyNC5jIGIvZHJpdmVycy9hdGEvc2F0YV9zaWwyNC5jCmluZGV4
IGU2MjIzYmEuLmIxOTQ1ZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3NhdGFfc2lsMjQuYwor
KysgYi9kcml2ZXJzL2F0YS9zYXRhX3NpbDI0LmMKQEAgLTM4MCwxMCArMzgwLDYgQEAgc3RhdGlj
IHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgc2lsMjRfcwogCS5zbGF2ZV9jb25maWd1cmUJPSBh
dGFfc2NzaV9zbGF2ZV9jb25maWcsCiAJLnNsYXZlX2Rlc3Ryb3kJCT0gYXRhX3Njc2lfc2xhdmVf
ZGVzdHJveSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFyYW0sCi0jaWZkZWYgQ09O
RklHX1BNCi0JLnN1c3BlbmQJCT0gYXRhX3Njc2lfZGV2aWNlX3N1c3BlbmQsCi0JLnJlc3VtZQkJ
CT0gYXRhX3Njc2lfZGV2aWNlX3Jlc3VtZSwKLSNlbmRpZgogfTsKIAogc3RhdGljIGNvbnN0IHN0
cnVjdCBhdGFfcG9ydF9vcGVyYXRpb25zIHNpbDI0X29wcyA9IHsKZGlmZiAtLWdpdCBhL2luY2x1
ZGUvbGludXgvbGliYXRhLmggYi9pbmNsdWRlL2xpbnV4L2xpYmF0YS5oCmluZGV4IGQ4Y2ZjNzIu
LmM2NzQ1ZTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbGliYXRhLmgKKysrIGIvaW5jbHVk
ZS9saW51eC9saWJhdGEuaApAQCAtMTQwLDcgKzE0MCw2IEBAIGVudW0gewogCiAJQVRBX0RGTEFH
X1BJTwkJPSAoMSA8PCA4KSwgLyogZGV2aWNlIGxpbWl0ZWQgdG8gUElPIG1vZGUgKi8KIAlBVEFf
REZMQUdfTkNRX09GRgk9ICgxIDw8IDkpLCAvKiBkZXZpY2UgbGltaXRlZCB0byBub24tTkNRIG1v
ZGUgKi8KLQlBVEFfREZMQUdfU1VTUEVOREVECT0gKDEgPDwgMTApLCAvKiBkZXZpY2Ugc3VzcGVu
ZGVkICovCiAJQVRBX0RGTEFHX0lOSVRfTUFTSwk9ICgxIDw8IDE2KSAtIDEsCiAKIAlBVEFfREZM
QUdfREVUQUNICT0gKDEgPDwgMTYpLApAQCAtMjY4LDEzICsyNjcsOSBAQCBlbnVtIHsKIAlBVEFf
RUhfUkVWQUxJREFURQk9ICgxIDw8IDApLAogCUFUQV9FSF9TT0ZUUkVTRVQJPSAoMSA8PCAxKSwK
IAlBVEFfRUhfSEFSRFJFU0VUCT0gKDEgPDwgMiksCi0JQVRBX0VIX1NVU1BFTkQJCT0gKDEgPDwg
MyksCi0JQVRBX0VIX1JFU1VNRQkJPSAoMSA8PCA0KSwKLQlBVEFfRUhfUE1fRlJFRVpFCT0gKDEg
PDwgNSksCiAKIAlBVEFfRUhfUkVTRVRfTUFTSwk9IEFUQV9FSF9TT0ZUUkVTRVQgfCBBVEFfRUhf
SEFSRFJFU0VULAotCUFUQV9FSF9QRVJERVZfTUFTSwk9IEFUQV9FSF9SRVZBTElEQVRFIHwgQVRB
X0VIX1NVU1BFTkQgfAotCQkJCSAgQVRBX0VIX1JFU1VNRSB8IEFUQV9FSF9QTV9GUkVFWkUsCisJ
QVRBX0VIX1BFUkRFVl9NQVNLCT0gQVRBX0VIX1JFVkFMSURBVEUsCiAKIAkvKiBhdGFfZWhfaW5m
by0+ZmxhZ3MgKi8KIAlBVEFfRUhJX0hPVFBMVUdHRUQJPSAoMSA8PCAwKSwgIC8qIGNvdWxkIGhh
dmUgYmVlbiBob3RwbHVnZ2VkICovCkBAIC03NDIsOCArNzM3LDYgQEAgZXh0ZXJuIGludCBzYXRh
X3Njcl93cml0ZV9mbHVzaChzdHJ1Y3QgYQogZXh0ZXJuIGludCBhdGFfcG9ydF9vbmxpbmUoc3Ry
dWN0IGF0YV9wb3J0ICphcCk7CiBleHRlcm4gaW50IGF0YV9wb3J0X29mZmxpbmUoc3RydWN0IGF0
YV9wb3J0ICphcCk7CiAjaWZkZWYgQ09ORklHX1BNCi1leHRlcm4gaW50IGF0YV9zY3NpX2Rldmlj
ZV9yZXN1bWUoc3RydWN0IHNjc2lfZGV2aWNlICopOwotZXh0ZXJuIGludCBhdGFfc2NzaV9kZXZp
Y2Vfc3VzcGVuZChzdHJ1Y3Qgc2NzaV9kZXZpY2UgKiwgcG1fbWVzc2FnZV90IG1lc2cpOwogZXh0
ZXJuIGludCBhdGFfaG9zdF9zdXNwZW5kKHN0cnVjdCBhdGFfaG9zdCAqaG9zdCwgcG1fbWVzc2Fn
ZV90IG1lc2cpOwogZXh0ZXJuIHZvaWQgYXRhX2hvc3RfcmVzdW1lKHN0cnVjdCBhdGFfaG9zdCAq
aG9zdCk7CiAjZW5kaWYKQEAgLTEwMTgsMTEgKzEwMTEsNiBAQCBzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGludCBhdGFfZGV2X2Fic2VuCiAJcmV0dXJuIGF0YV9jbGFzc19hYnNlbnQoZGV2LT5jbGFz
cyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGF0YV9kZXZfcmVhZHkoY29uc3Qg
c3RydWN0IGF0YV9kZXZpY2UgKmRldikKLXsKLQlyZXR1cm4gYXRhX2Rldl9lbmFibGVkKGRldikg
JiYgIShkZXYtPmZsYWdzICYgQVRBX0RGTEFHX1NVU1BFTkRFRCk7Ci19Ci0KIC8qCiAgKiBwb3J0
IGhlbHBlcnMKICAqLwpOb3cgdGhhdCBsaWJhdGEgdXNlcyBzZC0+bWFuYWdlX3N0YXJ0X3N0b3As
IGxpYmF0YSBzcGlucyBkb3duIGRpc2sgb24Kc2h1dGRvd24uICBJbiBhbiBhdHRlbXB0IHRvIGNv
bXBlbnNhdGUgbGliYXRhJ3MgcHJldmlvdXMgc2hvcnRjb21pbmcsCnNvbWUgZGlzdHJvcyBzeW5j
IGFuZCBzcGluIGRvd24gZGlza3MgYXR0YWNoZWQgdmlhIGxpYmF0YSBpbiB0aGVpcgpzaHV0ZG93
big4KS4gIFNvbWUgZGlza3Mgc3BpbiBiYWNrIHVwIGp1c3QgdG8gc3BpbiBkb3duIGFnYWluIG9u
ClNUQU5EQllOT1cxIGlmIHRoZSBjb21tYW5kIGlzIGlzc3VlZCB3aGVuIHRoZSBkaXNrIGlzIHNw
dW4gZG93biwgc28KdGhpcyBkb3VibGUgc3Bpbm5pbmcgZG93biBjYXVzZXMgcHJvYmxlbS4KClRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBtb2R1bGUgcGFyYW1ldGVyIGxpYmF0YS5zcGluZG93bl9jb21w
YXQgd2hpY2gsCndoZW4gc2V0IHRvIG9uZSAoZGVmYXVsdCB2YWx1ZSksIHByZXZlbnRzIGxpYmF0
YSBmcm9tIHNwaW5uaW5nIGRvd24KZGlza3Mgb24gc2h1dGRvd24gdGh1cyBhdm9pZGluZyBkb3Vi
bGUgc3Bpbm5pbmcgZG93bi4gIE5vdGUgdGhhdApsaWJhdGEgc3BpbnMgZG93biBkaXNrcyBmb3Ig
c3VzcGVuZCB0byBtZW0gYW5kIGRpc2ssIHNvIHdpdGgKbGliYXRhLnNwaW5kb3duX2NvbXBhdCBz
ZXQgdG8gb25lLCBkaXNrcyBzaG91bGQgYmUgcHJvcGVybHkgc3B1biBkb3duCmluIGFsbCBjYXNl
cyB3aXRob3V0IG1vZGlmeWluZyBzaHV0ZG93big4KS4KCnNodXRkb3duKDgpIHNob3VsZCBiZSBm
aXhlZCBldmVudHVhbGx5LiAgU29tZSBkcml2ZSBkbyBzcGluIHVwIG9uClNZTkNIUk9OWkVfQ0FD
SEUgZXZlbiB3aGVuIHRoZWlyIGNhY2hlIGlzIGNsZWFuLiAgVGhvc2UgZGlza3MKY3VycmVudGx5
IHNwaW4gdXAgYnJpZWZseSB3aGVuIHNkIHRyaWVzIHRvIHNodXRkb3duIHRoZSBkZXZpY2UgYW5k
CnRoZW4gdGhlIG1hY2hpbmUgcG93ZXJzIG9mZiBpbW1lZGlhdGVseSwgd2hpY2ggY2FuJ3QgYmUg
Z29vZCBmb3IgdGhlCmhlYWQuICBXZSBjYW4ndCBza2lwIFNZTkNIUk9OSVpFX0NBQ0hFIGR1cmlu
ZyBzaHVkb3duIGFzIGl0IGNhbiBiZQpkYW5nZXJvdXMgZGF0YSBpbnRlZ3JpdHktd2lzZS4KClNv
LCB0aGlzIHNwaW5kb3duX2NvbXBhdCBwYXJhbWV0ZXIgaXMgYWxyZWFkeSBzY2hlZHVsZWQgZm9y
IHJlbW92YWwgYnkKdGhlIGVuZCBvZiB0aGUgbmV4dCB5ZWFyIGFuZCBoZXJlJ3Mgd2hhdCBzaHV0
ZG93big4KSBzaG91bGQgZG8uCgogICogQ2hlY2sgd2hldGhlciAvc3lzL21vZHVsZXMvbGliYXRh
L3BhcmFtZXRlcnMvc3BpbmRvd25fY29tcGF0CiAgICBleGlzdHMuICBJZiBpdCBkb2VzLCB3cml0
ZSAwIHRvIGl0LgoKICAqIEZvciBlYWNoIGxpYmF0YSBoYXJkZGlzayB7CgkqIENoZWNrIHdoZXRo
ZXIgL3N5cy9jbGFzcy9zY3NpX2Rpc2svaDpjOmk6bC9tYW5hZ2Vfc3RhcnRfc3RvcAoJICBleGlz
dHMuICBJZmYgaXQgZG9lc24ndCwgc3luY2hyb25pemUgY2FjaGUgYW5kIHNwaW4gdGhlIGRpc2sK
CSAgZG93biBhcyBiZWZvcmUuCiAgfQoKVGhlIGFib3ZlIHByb2NlZHVyZSB3aWxsIG1ha2Ugc2h1
dGRvd24oOCkgd29yayBwcm9wZXJseSB3aXRoIGtlcm5lbHMKYmVmb3JlIHRoaXMgY2hhbmdlLCBv
bmVzIHdpdGggdGhpcyB3b3JrYXJvdW5kIGFuZCBsYXRlciBvbmVzIHdpdGhvdXQKaXQuCgpUbyBh
Y2NlbGVyYXRlIHNodXRkb3duKDgpIHVwZGF0ZXMsIGlmIHRoZSBjb21wYXQgbW9kZSBpcyBpbiB1
c2UsIHRoaXMKcGF0Y2ggcHJpbnRzIEJJRyBGQVQgd2FybmluZyBmb3IgZml2ZSBzZWNvbmRzIGR1
cmluZyBzaHV0ZG93biAodGhlCm9wdGltYWwgaW50ZXJ2YWwgdG8gYW5ub3kgdGhlIHVzZXIganVz
dCB0aGUgcmlnaHQgYW1vdW50IGRpc2NvdmVyZWQgYnkKaG91cnMgb2YgdGlyZWxlc3MgdXNhYmls
aXR5IHRlc3RpbmcpLgoKU2lnbmVkLW9mZi1ieTogVGVqdW4gSGVvIDxodGVqdW5AZ21haWwuY29t
PgotLS0KIERvY3VtZW50YXRpb24vZmVhdHVyZS1yZW1vdmFsLXNjaGVkdWxlLnR4dCB8ICAgMTkg
KysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9hdGEvbGliYXRhLWNvcmUuYyAgICAgICAgICAg
ICAgICAgIHwgICAgNiArKysrKysKIGRyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmMgICAgICAgICAg
ICAgICAgICB8ICAgMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9hdGEv
bGliYXRhLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiA0IGZpbGVzIGNoYW5nZWQs
IDUzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRh
dGlvbi9mZWF0dXJlLXJlbW92YWwtc2NoZWR1bGUudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJl
LXJlbW92YWwtc2NoZWR1bGUudHh0CmluZGV4IDVjODhiYTEuLjc4YjNhYTYgMTAwNjQ0Ci0tLSBh
L0RvY3VtZW50YXRpb24vZmVhdHVyZS1yZW1vdmFsLXNjaGVkdWxlLnR4dAorKysgYi9Eb2N1bWVu
dGF0aW9uL2ZlYXR1cmUtcmVtb3ZhbC1zY2hlZHVsZS50eHQKQEAgLTMxNCwzICszMTQsMjIgQEAg
V2h5OglDb2RlIHdhcyBtZXJnZWQsIHRoZW4gc3VibWl0dGVyIGltbQogV2hvOglEYXZpZCBTLiBN
aWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitXaGF0OglsaWJhdGEuc3BpbmRvd25fY29tcGF0IG1vZHVsZSBwYXJhbWV0ZXIKK1doZW46
CURlYyAyMDA4CitXaHk6CWhhbHQoOCkgc3luY2hyb25pemVzIGNhY2hlcyBmb3IgYW5kIHNwaW5z
IGRvd24gbGliYXRhIGRpc2tzCisJYmVjYXVzZSBsaWJhdGEgZGlkbid0IHVzZSB0byBzcGluIGRv
d24gZGlzayBvbiBzeXN0ZW0gaGFsdAorCShvbmx5IHN5bmNocm9uaXplZCBjYWNoZXMpLgorCVNw
aW4gZG93biBvbiBzeXN0ZW0gaGFsdCBpcyBub3cgaW1wbGVtZW50ZWQgYW5kIGNhbiBiZSB0ZXN0
ZWQKKwl1c2luZyBzeXNmcyBub2RlIC9zeXMvY2xhc3Mvc2NzaV9kaXNrL2g6YzppOmwvbWFuYWdl
X3N0YXJ0X3N0b3AuCisJQmVjYXVzZSBpc3N1aW5nIHNwaW4gZG93biBjb21tYW5kIHRvIGFuIGFs
cmVhZHkgc3B1biBkb3duIGRpc2sKKwltYWtlcyBzb21lIGRpc2tzIHNwaW4gdXAganVzdCB0byBz
cGluIGRvd24gYWdhaW4sIHRoZSBvbGQKKwliZWhhdmlvciBuZWVkcyB0byBiZSBtYWludGFpbmVk
IHRpbGwgdXNlcnNwYWNlIHRvb2wgaXMgdXBkYXRlZAorCXRvIGNoZWNrIHRoZSBzeXNmcyBub2Rl
IGFuZCBub3QgdG8gc3BpbiBkb3duIGRpc2tzIHdpdGggdGhlCisJbm9kZSBzZXQgdG8gb25lLgor
CVRoaXMgbW9kdWxlIHBhcmFtZXRlciBpcyB0byBnaXZlIHVzZXJzcGFjZSB0b29sIHRoZSB0aW1l
IHRvCisJZ2V0IHVwZGF0ZWQgYW5kIHNob3VsZCBiZSByZW1vdmVkIGFmdGVyIHVzZXJzcGFjZSBp
cworCXJlYXNvbmFibHkgdXBkYXRlZC4KK1dobzoJVGVqdW4gSGVvIDxodGVqdW5AZ21haWwuY29t
PgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRh
L2xpYmF0YS1jb3JlLmMgYi9kcml2ZXJzL2F0YS9saWJhdGEtY29yZS5jCmluZGV4IGNlNWUwODAu
LjRhODE1NDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL2xpYmF0YS1jb3JlLmMKKysrIGIvZHJp
dmVycy9hdGEvbGliYXRhLWNvcmUuYwpAQCAtMTAxLDYgKzEwMSwxMiBAQCBpbnQgbGliYXRhX25v
YWNwaSA9IDE7CiBtb2R1bGVfcGFyYW1fbmFtZWQobm9hY3BpLCBsaWJhdGFfbm9hY3BpLCBpbnQs
IDA0NDQpOwogTU9EVUxFX1BBUk1fREVTQyhub2FjcGksICJEaXNhYmxlcyB0aGUgdXNlIG9mIEFD
UEkgaW4gc3VzcGVuZC9yZXN1bWUgd2hlbiBzZXQiKTsKIAoraW50IGF0YV9zcGluZG93bl9jb21w
YXQgPSAxOworbW9kdWxlX3BhcmFtX25hbWVkKHNwaW5kb3duX2NvbXBhdCwgYXRhX3NwaW5kb3du
X2NvbXBhdCwgaW50LCAwNjQ0KTsKK01PRFVMRV9QQVJNX0RFU0Moc3BpbmRvd25fY29tcGF0LCAi
RW5hYmxlIGJhY2t3YXJkIGNvbXBhdGlibGUgc3BpbmRvd24gIgorCQkgImJlaGF2aW9yLiAgV2ls
bCBiZSByZW1vdmVkLiAgTW9yZSBpbmZvIGNhbiBiZSBmb3VuZCBpbiAiCisJCSAiRG9jdW1lbnRh
dGlvbi9mZWF0dXJlLXJlbW92YWwtc2NoZWR1bGUudHh0XG4iKTsKKwogTU9EVUxFX0FVVEhPUigi
SmVmZiBHYXJ6aWsiKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTGlicmFyeSBtb2R1bGUgZm9yIEFU
QSBkZXZpY2VzIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJz
L2F0YS9saWJhdGEtc2NzaS5jIGIvZHJpdmVycy9hdGEvbGliYXRhLXNjc2kuYwppbmRleCA4Zjgw
MDE5Li5kZDgxZmE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jCisrKyBi
L2RyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmMKQEAgLTk0NCw5ICs5NDQsMzUgQEAgc3RhdGljIHVu
c2lnbmVkIGludCBhdGFfc2NzaV9zdGFydF9zdG9wXwogCQl9CiAKIAkJdGYtPmNvbW1hbmQgPSBB
VEFfQ01EX1ZFUklGWTsJLyogUkVBRCBWRVJJRlkgKi8KLQl9IGVsc2UKKwl9IGVsc2UgeworCQkv
KiBYWFg6IFRoaXMgaXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHdpbGwgYmUKKwkJICog
cmVtb3ZlZC4gIFJlYWQgRG9jdW1lbnRhdGlvbi9mZWF0dXJlLXJlbW92YWwtc2NoZWR1bGUudHh0
CisJCSAqIGZvciBtb3JlIGluZm8uCisJCSAqLworCQlpZiAoYXRhX3NwaW5kb3duX2NvbXBhdCAm
JgorCQkgICAgKHN5c3RlbV9zdGF0ZSA9PSBTWVNURU1fSEFMVCB8fAorCQkgICAgIHN5c3RlbV9z
dGF0ZSA9PSBTWVNURU1fUE9XRVJfT0ZGKSkgeworCQkJc3RhdGljIGludCB3YXJuZWQgPSAwOwor
CisJCQlpZiAoIXdhcm5lZCkgeworCQkJCXNwaW5fdW5sb2NrX2lycShxYy0+YXAtPmxvY2spOwor
CQkJCWF0YV9kZXZfcHJpbnRrKHFjLT5kZXYsIEtFUk5fV0FSTklORywKKwkJCQkJIkRJU0sgTUlH
SFQgTk9UIEJFIFNQVU4gRE9XTiBQUk9QRVJMWS4gIgorCQkJCQkiVVBEQVRFIFNIVVRET1dOIFVU
SUxJVFlcbiIpOworCQkJCWF0YV9kZXZfcHJpbnRrKHFjLT5kZXYsIEtFUk5fV0FSTklORywKKwkJ
CQkJIkZvciBtb3JlIGluZm8sIHZpc2l0ICIKKwkJCQkJImh0dHA6Ly9saW51eC1hdGEub3JnL3No
dXRkb3duLmh0bWxcbiIpOworCQkJCXdhcm5lZCA9IDE7CisJCQkJc3NsZWVwKDUpOworCQkJCXNw
aW5fbG9ja19pcnEocWMtPmFwLT5sb2NrKTsKKwkJCX0KKwkJCXNjbWQtPnJlc3VsdCA9IFNBTV9T
VEFUX0dPT0Q7CisJCQlyZXR1cm4gMTsKKwkJfQorCiAJCS8qIElzc3VlIEFUQSBTVEFOREJZIElN
TUVESUFURSBjb21tYW5kICovCiAJCXRmLT5jb21tYW5kID0gQVRBX0NNRF9TVEFOREJZTk9XMTsK
Kwl9CiAKIAkvKgogCSAqIFN0YW5kYnkgYW5kIElkbGUgY29uZGl0aW9uIHRpbWVycyBjb3VsZCBi
ZSBpbXBsZW1lbnRlZCBidXQgdGhhdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvbGliYXRhLmgg
Yi9kcml2ZXJzL2F0YS9saWJhdGEuaAppbmRleCA1ZjRkNDBjLi4zMTZiZjhhIDEwMDY0NAotLS0g
YS9kcml2ZXJzL2F0YS9saWJhdGEuaAorKysgYi9kcml2ZXJzL2F0YS9saWJhdGEuaApAQCAtNTgs
NiArNTgsNyBAQCBleHRlcm4gaW50IGF0YXBpX2VuYWJsZWQ7CiBleHRlcm4gaW50IGF0YXBpX2Rt
YWRpcjsKIGV4dGVybiBpbnQgbGliYXRhX2Z1YTsKIGV4dGVybiBpbnQgbGliYXRhX25vYWNwaTsK
K2V4dGVybiBpbnQgYXRhX3NwaW5kb3duX2NvbXBhdDsKIGV4dGVybiBzdHJ1Y3QgYXRhX3F1ZXVl
ZF9jbWQgKmF0YV9xY19uZXdfaW5pdChzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KTsKIGV4dGVybiBp
bnQgYXRhX2J1aWxkX3J3X3RmKHN0cnVjdCBhdGFfdGFza2ZpbGUgKnRmLCBzdHJ1Y3QgYXRhX2Rl
dmljZSAqZGV2LAogCQkJICAgdTY0IGJsb2NrLCB1MzIgbl9ibG9jaywgdW5zaWduZWQgaW50IHRm
X2ZsYWdzLAo=
</data>        

          </attachment>
    </bug>

</bugzilla>