<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.freebsd.org/bugzilla/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.freebsd.org/bugzilla/"
          
          maintainer="bugmeister@FreeBSD.org"
>

    <bug>
          <bug_id>292570</bug_id>
          
          <creation_ts>2026-01-18 16:58:56 +0000</creation_ts>
          <short_desc>[virtio] virtio-balloon does not balloon correctly</short_desc>
          <delta_ts>2026-04-14 17:04:23 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Base System</product>
          <component>kern</component>
          <version>14.3-RELEASE</version>
          <rep_platform>amd64</rep_platform>
          <op_sys>Any</op_sys>
          <bug_status>Closed</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>---</priority>
          <bug_severity>Affects Only Me</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>lysfjord.daniel</reporter>
          <assigned_to name="freebsd-virtualization (Nobody)">virtualization</assigned_to>
          <cc>bms</cc>
    
    <cc>emaste</cc>
    
    <cc>rootnode+freebsd</cc>
    
    <cc>xiangzhedev</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1402599</commentid>
    <comment_count>0</comment_count>
    <who name="">lysfjord.daniel</who>
    <bug_when>2026-01-18 16:58:56 +0000</bug_when>
    <thetext>See also #198344 and #277473

I am running FreeBSD 14.3-RELEASE in a kvm on Linux 6.18 with libvirt 12.0.0

&gt; virsh -V
Virsh command line tool of libvirt 12.0.0
See web site at https://libvirt.org/

Compiled with support for:
 Hypervisors: QEMU/KVM LXC OpenVZ Cloud-Hypervisor VMware VirtualBox ESX Test
 Networking: Remote Network Bridging Interface udev Nwfilter
 Storage: Dir Disk Filesystem SCSI Multipath iSCSI iSCSI-direct LVM Gluster ZFS
 Miscellaneous: Daemon Nodedev Secrets Debug Readline

VM is configured with a memory size of 25165824k, Q35 chipset, BIOS firmware, VirtIO disk of 20GB, a VirtIO nic of type bridge.

info from ps aux on a freshly started VM:
VSZ:27259904
RSS: 5005584

Seems to be consistent with what you see inside on the inside
# sysctl vm.kmem_size
vm.kmem_size: 25013338112

virtio_balloon seems to be loaded:
# kldstat -v | grep virtio_balloon
                301 virtio_pci/virtio_balloon
                300 virtio_mmio/virtio_balloon

Also seems to be working:
# sysctl -a | grep balloon
vtballoon0: &lt;VirtIO Balloon Adapter&gt; on virtio_pci2
vtballoon0: &lt;VirtIO Balloon Adapter&gt; on virtio_pci2
device  virtio_balloon
dev.vtballoon.0.current: 512
dev.vtballoon.0.desired: 1048576
dev.vtballoon.0.%iommu: 
dev.vtballoon.0.%parent: virtio_pci2
dev.vtballoon.0.%pnpinfo: vendor=0x00001af4 device=0x1045 subvendor=0x1af4 device_type=0x00000005
dev.vtballoon.0.%location: 
dev.vtballoon.0.%driver: vtballoon
dev.vtballoon.0.%desc: VirtIO Balloon Adapter
dev.vtballoon.%parent: 
dev.xen.balloon.high_mem: 0
dev.xen.balloon.low_mem: 0
dev.xen.balloon.hard_limit: 0
dev.xen.balloon.driver_pages: 0
dev.xen.balloon.target: 0
dev.xen.balloon.current: 0


However, if I want to adjust the amount of memory used by the VM:
VM: # sysctl dev.vtballoon.0 | grep &quot;current\|desired&quot;
dev.vtballoon.0.current: 512
dev.vtballoon.0.desired: 1048576
Host: ❯ virsh setmem &quot;FreeBSD buildd&quot; 20480m
VM: # sysctl dev.vtballoon.0 | grep &quot;current\|desired&quot;
dev.vtballoon.0.current: 768
dev.vtballoon.0.desired: 1048576

Rerunning the virsh command;
Host: ❯ virsh setmem &quot;FreeBSD buildd&quot; 20480m
VM: # sysctl dev.vtballoon.0 | grep &quot;current\|desired&quot;
dev.vtballoon.0.current: 1024
dev.vtballoon.0.desired: 1048576
Host: 
VSZ: 27259904
RSS: 5010588


No matter how long (exaggeration; I just waited a few minutes), on an idle system, that &quot;current&quot; number does not change. Every time one uses virsh setmem, the value does indeed change (today the value seems to increase by 256 each time), but I can&apos;t recall seeing it change more than 2048 in one go. VSZ and RSS seems to be stuck on the same values.

After running a quick poudriere bulk (no packages built, but it still seems to write to all the memory in the VM)
VSZ: 27312164
RSS: 16032432
❯ virsh setmem &quot;FreeBSD buildd&quot; 20480m
# sysctl dev.vtballoon.0 | grep &quot;current\|desired&quot;
dev.vtballoon.0.current: 1536
dev.vtballoon.0.desired: 1048576
❯ virsh setmem &quot;FreeBSD buildd&quot; 20480m
# sysctl dev.vtballoon.0 | grep &quot;current\|desired&quot;
dev.vtballoon.0.current: 1792
dev.vtballoon.0.desired: 1048576
❯ virsh setmem &quot;FreeBSD buildd&quot; 20480m
# sysctl dev.vtballoon.0 | grep &quot;current\|desired&quot;
dev.vtballoon.0.current: 2048
dev.vtballoon.0.desired: 1048576
VSZ: 27262988
RSS: 16036424

To my untrained eye, it seems like the balloon-code runs one loop of trying of adjusting memory, then stops, hence adjusting only with a small amount. It doesn&apos;t seem to affect the memory usage on the host. Not in this limited testing at least.

Using virt-manager (https://virt-manager.org/), adjusting the memory allocation there, changes the number by 1MB each time. If I do the same thing on a Linux VM, the value changes by a very small amount first, then rapidly to the correct number. Working in both directions. Indicating that the libvirt on the host is not horribly broken, at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409948</commentid>
    <comment_count>1</comment_count>
    <who name="Graham Perrin">grahamperrin</who>
    <bug_when>2026-03-04 21:38:10 +0000</bug_when>
    <thetext>&gt; See also #198344 and #277473

Clickable links to the two closed reports: bug 198344, bug 277473.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416316</commentid>
    <comment_count>2</comment_count>
    <who name="Xiangzhe">xiangzhedev</who>
    <bug_when>2026-04-09 05:14:02 +0000</bug_when>
    <thetext>Hi,

I had create a PR to improve virtio-balloon, can you test it to check if is it fix the error what you see?

https://github.com/freebsd/freebsd-src/pull/2116

Thanks a lot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417004</commentid>
    <comment_count>3</comment_count>
    <who name="">lysfjord.daniel</who>
    <bug_when>2026-04-12 18:40:47 +0000</bug_when>
    <thetext>(In reply to Xiangzhe from comment #2)

It *seems* to be a step in the right direction.. The allocation shrinks by 1MiB every apx. 5 seconds now, and it seems to be going until the target set.

I guess dev.vtballoon.0.current and dev.vtballoon.0.desired are in some other unit than KiB.. it&apos;s moving in steps of 256 per time virt-manager say it has adjusted the current allocation with 1MiB, pointing me to it being in 4k pages?

Since your code has
#define VTBALLOON_PAGES_PER_REQUEST	256
I guess the reasoning is sound..

No idea why it only request changes once every 5 seconds, or thereabouts, but at least it tries to work now:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417071</commentid>
    <comment_count>4</comment_count>
    <who name="Xiangzhe">xiangzhedev</who>
    <bug_when>2026-04-13 04:55:58 +0000</bug_when>
    <thetext>Thank you for test.


256 is reference the Linux kernel source code.

And I had push new chance to PR, can you test it if is it fix the slow shrinks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417229</commentid>
    <comment_count>5</comment_count>
    <who name="">lysfjord.daniel</who>
    <bug_when>2026-04-13 19:40:42 +0000</bug_when>
    <thetext>This looks very good:)

Can I now have it backported to 14.4, so I can use it on my poudriere-machine?:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417283</commentid>
    <comment_count>6</comment_count>
      <attachid>269744</attachid>
    <who name="Xiangzhe">xiangzhedev</who>
    <bug_when>2026-04-14 02:01:23 +0000</bug_when>
    <thetext>Created attachment 269744
14.4-backport-virtio-balloon-oom</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417405</commentid>
    <comment_count>7</comment_count>
    <who name="">lysfjord.daniel</who>
    <bug_when>2026-04-14 17:04:23 +0000</bug_when>
    <thetext>(In reply to Xiangzhe from comment #6)

Perfect:)

Now, if only the code on the hypervisor-side could care to ask the VM to release memory when under pressure.. But that&apos;s not your fault.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269744</attachid>
            <date>2026-04-14 02:01:23 +0000</date>
            <delta_ts>2026-04-14 02:01:23 +0000</delta_ts>
            <desc>14.4-backport-virtio-balloon-oom</desc>
            <filename>virtio-balloon-enhancements-14.4.patch</filename>
            <type>text/plain</type>
            <size>32276</size>
            <attacher name="Xiangzhe">xiangzhedev</attacher>
            
              <data encoding="base64">RnJvbSBiNjI4NjhmZTEyYzcxMDg5NzM4MGVlNGEzNWZlZmY3YmU2Zjc2OGM5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFuZ3poZSA8eGlhbmd6aGVkZXZAZ21haWwuY29tPgpEYXRl
OiBGcmksIDMgQXByIDIwMjYgMTA6NTE6NTIgKzA4MDAKU3ViamVjdDogW1BBVENIIDEvNl0gdmly
dGlvX2JhbGxvb246IGltcGxlbWVudCBWSVJUSU9fQkFMTE9PTl9GX1NUQVRTX1ZRCiBzdXBwb3J0
CgpBZGQgbWVtb3J5IHN0YXRpc3RpY3MgcmVwb3J0aW5nIHRvIHRoZSB2aXJ0aW8gYmFsbG9vbiBk
cml2ZXIgYnkKbmVnb3RpYXRpbmcgdGhlIFZJUlRJT19CQUxMT09OX0ZfU1RBVFNfVlEgZmVhdHVy
ZSBhbmQgaW1wbGVtZW50aW5nCnRoZSBzdGF0cyB2aXJ0cXVldWUgKFZRIGluZGV4IDIpLgoKVGhl
IHN0YXRzIFZRIHVzZXMgYSByZXZlcnNlIHByb3RvY29sOiB0aGUgZHJpdmVyIHByaW1lcyB0aGUg
dmlydHF1ZXVlCndpdGggYSBzaW5nbGUgYnVmZmVyIGF0IGF0dGFjaCB0aW1lLCBhbmQgdGhlIGh5
cGVydmlzb3IgaW5pdGlhdGVzCnN0YXRzIHJlcXVlc3RzIGJ5IHJldHVybmluZyB0aGF0IGJ1ZmZl
ci4gT24gZWFjaCByZXF1ZXN0LCB0aGUgZHJpdmVyCmNvbGxlY3RzIGZyZXNoIGd1ZXN0IG1lbW9y
eSBzdGF0aXN0aWNzIGFuZCByZS1lbnF1ZXVlcyB0aGUgdXBkYXRlZApidWZmZXIuCgpTdGF0aXN0
aWNzIHJlcG9ydGVkIHRvIHRoZSBob3N0OgogIC0gTUVNVE9UOiAgIHRvdGFsIHBoeXNpY2FsIG1l
bW9yeQogIC0gTUVNRlJFRTogIGZyZWUgcGFnZSBjb3VudAogIC0gQVZBSUw6ICAgIGZyZWUgKyBp
bmFjdGl2ZSBwYWdlcwogIC0gU1dBUF9JTjogIHBhZ2VzIHN3YXBwZWQgaW4KICAtIFNXQVBfT1VU
OiBwYWdlcyBzd2FwcGVkIG91dAogIC0gTUlORkxUOiAgIG1pbm9yIHBhZ2UgZmF1bHRzCiAgLSBN
QUpGTFQ6ICAgbWFqb3IgKEkvTykgcGFnZSBmYXVsdHMKICAtIENBQ0hFUzogICBpbmFjdGl2ZSBw
YWdlIGNvdW50IChhcHByb3hpbWF0aW9uIG9mIGRpc2sgY2FjaGVzKQoKQnl0ZSBvcmRlciBoYW5k
bGluZyBmb3IgdmlydGlvIG1vZGVybiAodjEuMCspIGRldmljZXMgaXMgaW5jbHVkZWQKdmlhIGh0
b2xlMTYvaHRvbGU2NCBjb252ZXJzaW9uIG9mIHN0YXQgdGFncyBhbmQgdmFsdWVzLgoKVGhpcyBl
bmFibGVzIGh5cGVydmlzb3JzIChRRU1VL1Byb3htb3gvbGlidmlydCkgdG8gbW9uaXRvciBndWVz
dAptZW1vcnkgdXNhZ2UgYW5kIG1ha2UgaW5mb3JtZWQgYmFsbG9vbmluZyBkZWNpc2lvbnMuCgpT
aWduZWQtb2ZmLWJ5OiBYaWFuZ3poZSA8eGlhbmd6aGVkZXZAZ21haWwuY29tPgotLS0KIHN5cy9k
ZXYvdmlydGlvL2JhbGxvb24vdmlydGlvX2JhbGxvb24uYyB8IDEyOCArKysrKysrKysrKysrKysr
KysrKysrKy0KIHN5cy9kZXYvdmlydGlvL2JhbGxvb24vdmlydGlvX2JhbGxvb24uaCB8ICAyMCAr
Ky0tCiAyIGZpbGVzIGNoYW5nZWQsIDEzNyBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9zeXMvZGV2L3ZpcnRpby9iYWxsb29uL3ZpcnRpb19iYWxsb29uLmMgYi9z
eXMvZGV2L3ZpcnRpby9iYWxsb29uL3ZpcnRpb19iYWxsb29uLmMKaW5kZXggYzVkMGU1NGRiLi4z
OGU0OGU2MjkgMTAwNjQ0Ci0tLSBhL3N5cy9kZXYvdmlydGlvL2JhbGxvb24vdmlydGlvX2JhbGxv
b24uYworKysgYi9zeXMvZGV2L3ZpcnRpby9iYWxsb29uL3ZpcnRpb19iYWxsb29uLmMKQEAgLTQy
LDggKzQyLDExIEBACiAjaW5jbHVkZSA8c3lzL211dGV4Lmg+CiAjaW5jbHVkZSA8c3lzL3F1ZXVl
Lmg+CiAKKyNpbmNsdWRlIDxzeXMvdm1tZXRlci5oPgorCiAjaW5jbHVkZSA8dm0vdm0uaD4KICNp
bmNsdWRlIDx2bS92bV9wYWdlLmg+CisjaW5jbHVkZSA8dm0vdm1fZXh0ZXJuLmg+CiAKICNpbmNs
dWRlIDxtYWNoaW5lL2J1cy5oPgogI2luY2x1ZGUgPG1hY2hpbmUvcmVzb3VyY2UuaD4KQEAgLTY1
LDYgKzY4LDkgQEAgc3RydWN0IHZ0YmFsbG9vbl9zb2Z0YyB7CiAKIAlzdHJ1Y3QgdmlydHF1ZXVl
CSp2dGJhbGxvb25faW5mbGF0ZV92cTsKIAlzdHJ1Y3QgdmlydHF1ZXVlCSp2dGJhbGxvb25fZGVm
bGF0ZV92cTsKKwlzdHJ1Y3QgdmlydHF1ZXVlCSp2dGJhbGxvb25fc3RhdHNfdnE7CisKKwlzdHJ1
Y3QgdmlydGlvX2JhbGxvb25fc3RhdCB2dGJhbGxvb25fc3RhdHNbVklSVElPX0JBTExPT05fU19O
Ul07CiAKIAl1aW50MzJfdAkJIHZ0YmFsbG9vbl9kZXNpcmVkX25wYWdlczsKIAl1aW50MzJfdAkJ
IHZ0YmFsbG9vbl9jdXJyZW50X25wYWdlczsKQEAgLTkzLDYgKzk5LDggQEAgc3RhdGljIGludAl2
dGJhbGxvb25fc2V0dXBfZmVhdHVyZXMoc3RydWN0IHZ0YmFsbG9vbl9zb2Z0YyAqKTsKIHN0YXRp
YyBpbnQJdnRiYWxsb29uX2FsbG9jX3ZpcnRxdWV1ZXMoc3RydWN0IHZ0YmFsbG9vbl9zb2Z0YyAq
KTsKIAogc3RhdGljIHZvaWQJdnRiYWxsb29uX3ZxX2ludHIodm9pZCAqKTsKK3N0YXRpYyB2b2lk
CXZ0YmFsbG9vbl9zdGF0c192cV9pbnRyKHZvaWQgKik7CitzdGF0aWMgaW50CXZ0YmFsbG9vbl91
cGRhdGVfc3RhdHMoc3RydWN0IHZ0YmFsbG9vbl9zb2Z0YyAqKTsKIAogc3RhdGljIHZvaWQJdnRi
YWxsb29uX2luZmxhdGUoc3RydWN0IHZ0YmFsbG9vbl9zb2Z0YyAqLCBpbnQpOwogc3RhdGljIHZv
aWQJdnRiYWxsb29uX2RlZmxhdGUoc3RydWN0IHZ0YmFsbG9vbl9zb2Z0YyAqLCBpbnQpOwpAQCAt
MTE1LDcgKzEyMyw4IEBAIHN0YXRpYyB2b2lkCXZ0YmFsbG9vbl9zZXR1cF9zeXNjdGwoc3RydWN0
IHZ0YmFsbG9vbl9zb2Z0YyAqKTsKICAgICAoKChfc2MpLT52dGJhbGxvb25fZmVhdHVyZXMgJiBW
SVJUSU9fRl9WRVJTSU9OXzEpICE9IDApCiAKIC8qIEZlYXR1cmVzIGRlc2lyZWQvaW1wbGVtZW50
ZWQgYnkgdGhpcyBkcml2ZXIuICovCi0jZGVmaW5lIFZUQkFMTE9PTl9GRUFUVVJFUwkJVklSVElP
X0JBTExPT05fRl9NVVNUX1RFTExfSE9TVAorI2RlZmluZSBWVEJBTExPT05fRkVBVFVSRVMJCVwK
KyAgICAoVklSVElPX0JBTExPT05fRl9NVVNUX1RFTExfSE9TVCB8IFZJUlRJT19CQUxMT09OX0Zf
U1RBVFNfVlEpCiAKIC8qIFRpbWVvdXQgYmV0d2VlbiByZXRyaWVzIHdoZW4gdGhlIGJhbGxvb24g
bmVlZHMgaW5mbGF0aW5nLiAqLwogI2RlZmluZSBWVEJBTExPT05fTE9XTUVNX1RJTUVPVVQJaHoK
QEAgLTIyMCw2ICsyMjksMzAgQEAgdnRiYWxsb29uX2F0dGFjaChkZXZpY2VfdCBkZXYpCiAJdmly
dHF1ZXVlX2VuYWJsZV9pbnRyKHNjLT52dGJhbGxvb25faW5mbGF0ZV92cSk7CiAJdmlydHF1ZXVl
X2VuYWJsZV9pbnRyKHNjLT52dGJhbGxvb25fZGVmbGF0ZV92cSk7CiAKKwkvKgorCSAqIFByaW1l
IHRoZSBzdGF0cyB2aXJ0cXVldWUgd2l0aCBvbmUgYnVmZmVyIHNvIHRoZSBoeXBlcnZpc29yCisJ
ICogY2FuIHVzZSBpdCB0byByZXF1ZXN0IGd1ZXN0IG1lbW9yeSBzdGF0aXN0aWNzLgorCSAqLwor
CWlmIChzYy0+dnRiYWxsb29uX3N0YXRzX3ZxICE9IE5VTEwpIHsKKwkJc3RydWN0IHNnbGlzdCBz
ZzsKKwkJc3RydWN0IHNnbGlzdF9zZWcgc2Vnc1sxXTsKKwkJaW50IG5zdGF0cywgZXJyb3IgX19k
aWFndXNlZDsKKworCQluc3RhdHMgPSB2dGJhbGxvb25fdXBkYXRlX3N0YXRzKHNjKTsKKworCQlz
Z2xpc3RfaW5pdCgmc2csIDEsIHNlZ3MpOworCQllcnJvciA9IHNnbGlzdF9hcHBlbmQoJnNnLCBz
Yy0+dnRiYWxsb29uX3N0YXRzLAorCQkgICAgc2l6ZW9mKHN0cnVjdCB2aXJ0aW9fYmFsbG9vbl9z
dGF0KSAqIG5zdGF0cyk7CisJCUtBU1NFUlQoZXJyb3IgPT0gMCwgKCJlcnJvciBhZGRpbmcgc3Rh
dHMgdG8gc2dsaXN0IikpOworCisJCWVycm9yID0gdmlydHF1ZXVlX2VucXVldWUoc2MtPnZ0YmFs
bG9vbl9zdGF0c192cSwKKwkJICAgIHNjLCAmc2csIDEsIDApOworCQlLQVNTRVJUKGVycm9yID09
IDAsCisJCSAgICAoImVycm9yIGVucXVldWluZyBzdGF0cyB0byB2aXJ0cXVldWUiKSk7CisJCXZp
cnRxdWV1ZV9ub3RpZnkoc2MtPnZ0YmFsbG9vbl9zdGF0c192cSk7CisJCXZpcnRxdWV1ZV9lbmFi
bGVfaW50cihzYy0+dnRiYWxsb29uX3N0YXRzX3ZxKTsKKwl9CisKIGZhaWw6CiAJaWYgKGVycm9y
KQogCQl2dGJhbGxvb25fZGV0YWNoKGRldik7CkBAIC0zMDIsNyArMzM1LDcgQEAgc3RhdGljIGlu
dAogdnRiYWxsb29uX2FsbG9jX3ZpcnRxdWV1ZXMoc3RydWN0IHZ0YmFsbG9vbl9zb2Z0YyAqc2Mp
CiB7CiAJZGV2aWNlX3QgZGV2OwotCXN0cnVjdCB2cV9hbGxvY19pbmZvIHZxX2luZm9bMl07CisJ
c3RydWN0IHZxX2FsbG9jX2luZm8gdnFfaW5mb1szXTsKIAlpbnQgbnZxczsKIAogCWRldiA9IHNj
LT52dGJhbGxvb25fZGV2OwpAQCAtMzE0LDYgKzM0NywxNCBAQCB2dGJhbGxvb25fYWxsb2Nfdmly
dHF1ZXVlcyhzdHJ1Y3QgdnRiYWxsb29uX3NvZnRjICpzYykKIAlWUV9BTExPQ19JTkZPX0lOSVQo
JnZxX2luZm9bMV0sIDAsIHZ0YmFsbG9vbl92cV9pbnRyLCBzYywKIAkgICAgJnNjLT52dGJhbGxv
b25fZGVmbGF0ZV92cSwgIiVzIGRlZmxhdGUiLCBkZXZpY2VfZ2V0X25hbWV1bml0KGRldikpOwog
CisJaWYgKHZpcnRpb193aXRoX2ZlYXR1cmUoZGV2LCBWSVJUSU9fQkFMTE9PTl9GX1NUQVRTX1ZR
KSkgeworCQlWUV9BTExPQ19JTkZPX0lOSVQoJnZxX2luZm9bMl0sIDAsCisJCSAgICB2dGJhbGxv
b25fc3RhdHNfdnFfaW50ciwgc2MsCisJCSAgICAmc2MtPnZ0YmFsbG9vbl9zdGF0c192cSwgIiVz
IHN0YXRzIiwKKwkJICAgIGRldmljZV9nZXRfbmFtZXVuaXQoZGV2KSk7CisJCW52cXMgPSAzOwor
CX0KKwogCXJldHVybiAodmlydGlvX2FsbG9jX3ZpcnRxdWV1ZXMoZGV2LCAwLCBudnFzLCB2cV9p
bmZvKSk7CiB9CiAKQEAgLTQ0Nyw2ICs0ODgsOCBAQCB2dGJhbGxvb25fc3RvcChzdHJ1Y3QgdnRi
YWxsb29uX3NvZnRjICpzYykKIAogCXZpcnRxdWV1ZV9kaXNhYmxlX2ludHIoc2MtPnZ0YmFsbG9v
bl9pbmZsYXRlX3ZxKTsKIAl2aXJ0cXVldWVfZGlzYWJsZV9pbnRyKHNjLT52dGJhbGxvb25fZGVm
bGF0ZV92cSk7CisJaWYgKHNjLT52dGJhbGxvb25fc3RhdHNfdnEgIT0gTlVMTCkKKwkJdmlydHF1
ZXVlX2Rpc2FibGVfaW50cihzYy0+dnRiYWxsb29uX3N0YXRzX3ZxKTsKIAogCXZpcnRpb19zdG9w
KHNjLT52dGJhbGxvb25fZGV2KTsKIH0KQEAgLTU2Niw2ICs2MDksODcgQEAgdnRiYWxsb29uX3Ro
cmVhZCh2b2lkICp4c2MpCiAJa3RocmVhZF9leGl0KCk7CiB9CiAKK3N0YXRpYyBpbnQKK3Z0YmFs
bG9vbl91cGRhdGVfc3RhdHMoc3RydWN0IHZ0YmFsbG9vbl9zb2Z0YyAqc2MpCit7CisJc3RydWN0
IHZpcnRpb19iYWxsb29uX3N0YXQgKnN0YXQ7CisJaW50IGlkeDsKKwlib29sIG1vZGVybjsKKwor
CWlkeCA9IDA7CisJbW9kZXJuID0gdnRiYWxsb29uX21vZGVybihzYyk7CisJc3RhdCA9IHNjLT52
dGJhbGxvb25fc3RhdHM7CisKKyNkZWZpbmUgVlRCQUxMT09OX1NFVF9TVEFUKHRhZ18sIHZhbF8p
IGRvIHsJCQlcCisJc3RhdFtpZHhdLnRhZyA9IG1vZGVybiA/IGh0b2xlMTYodGFnXykgOiAodGFn
Xyk7CVwKKwlzdGF0W2lkeF0udmFsID0gbW9kZXJuID8gaHRvbGU2NCh2YWxfKSA6ICh2YWxfKTsJ
XAorCWlkeCsrOwkJCQkJCQlcCit9IHdoaWxlICgwKQorCisJVlRCQUxMT09OX1NFVF9TVEFUKFZJ
UlRJT19CQUxMT09OX1NfTUVNVE9ULAorCSAgICAodWludDY0X3Qpdm1fY250LnZfcGFnZV9jb3Vu
dCAqIFBBR0VfU0laRSk7CisJVlRCQUxMT09OX1NFVF9TVEFUKFZJUlRJT19CQUxMT09OX1NfTUVN
RlJFRSwKKwkgICAgKHVpbnQ2NF90KXZtX2ZyZWVfY291bnQoKSAqIFBBR0VfU0laRSk7CisJVlRC
QUxMT09OX1NFVF9TVEFUKFZJUlRJT19CQUxMT09OX1NfQVZBSUwsCisJICAgICgodWludDY0X3Qp
dm1fZnJlZV9jb3VudCgpICsgdm1faW5hY3RpdmVfY291bnQoKSkgKiBQQUdFX1NJWkUpOworCVZU
QkFMTE9PTl9TRVRfU1RBVChWSVJUSU9fQkFMTE9PTl9TX1NXQVBfSU4sCisJICAgIFZNX0NOVF9G
RVRDSCh2X3N3YXBwZ3NpbikgKiBQQUdFX1NJWkUpOworCVZUQkFMTE9PTl9TRVRfU1RBVChWSVJU
SU9fQkFMTE9PTl9TX1NXQVBfT1VULAorCSAgICBWTV9DTlRfRkVUQ0godl9zd2FwcGdzb3V0KSAq
IFBBR0VfU0laRSk7CisJVlRCQUxMT09OX1NFVF9TVEFUKFZJUlRJT19CQUxMT09OX1NfTUlORkxU
LAorCSAgICBWTV9DTlRfRkVUQ0godl92bV9mYXVsdHMpKTsKKwlWVEJBTExPT05fU0VUX1NUQVQo
VklSVElPX0JBTExPT05fU19NQUpGTFQsCisJICAgIFZNX0NOVF9GRVRDSCh2X2lvX2ZhdWx0cykp
OworCS8qCisJICogTWFwIENBQ0hFUyB0byB0aGUgaW5hY3RpdmUgcGFnZSBxdWV1ZS4gIFRoZSB2
aXJ0aW8gc3BlYyBkZWZpbmVzCisJICogdGhpcyBhcyAiZGlzayBjYWNoZXMiIChMaW51eDogcGFn
ZSBjYWNoZSArIHJlY2xhaW1hYmxlIHNsYWIpLgorCSAqIEZyZWVCU0QncyBpbmFjdGl2ZSBxdWV1
ZSBpcyB0aGUgY2xvc2VzdCBhcHByb3hpbWF0aW9uIC0tIGl0CisJICogY29udGFpbnMgcGFnZXMg
ZWxpZ2libGUgZm9yIHJlY2xhaW0sIGJvdGggZmlsZS1iYWNrZWQgYW5kCisJICogYW5vbnltb3Vz
LCBzaW1pbGFyIGluIHNwaXJpdCB0byBMaW51eCdzIHJlY2xhaW1hYmxlIG1lbW9yeS4KKwkgKi8K
KwlWVEJBTExPT05fU0VUX1NUQVQoVklSVElPX0JBTExPT05fU19DQUNIRVMsCisJICAgICh1aW50
NjRfdCl2bV9pbmFjdGl2ZV9jb3VudCgpICogUEFHRV9TSVpFKTsKKworI3VuZGVmIFZUQkFMTE9P
Tl9TRVRfU1RBVAorCisJcmV0dXJuIChpZHgpOworfQorCisvKgorICogVGhlIHN0YXRzIHZpcnRx
dWV1ZSB3b3JrcyBpbiByZXZlcnNlOiB0aGUgaG9zdCBpbml0aWF0ZXMgYSByZXF1ZXN0IGJ5Cisg
KiByZXR1cm5pbmcgYSBidWZmZXIgd2UgcHJldmlvdXNseSBwbGFjZWQgaW4gdGhlIHZpcnRxdWV1
ZS4gV2UgdGhlbgorICogcmVmaWxsIHRoZSB2aXJ0cXVldWUgd2l0aCBmcmVzaCBzdGF0aXN0aWNz
LgorICovCitzdGF0aWMgdm9pZAordnRiYWxsb29uX3N0YXRzX3ZxX2ludHIodm9pZCAqeHNjKQor
eworCXN0cnVjdCB2dGJhbGxvb25fc29mdGMgKnNjOworCXN0cnVjdCB2aXJ0cXVldWUgKnZxOwor
CXN0cnVjdCBzZ2xpc3Qgc2c7CisJc3RydWN0IHNnbGlzdF9zZWcgc2Vnc1sxXTsKKwlpbnQgbnN0
YXRzLCBlcnJvciBfX2RpYWd1c2VkOworCisJc2MgPSB4c2M7CisJdnEgPSBzYy0+dnRiYWxsb29u
X3N0YXRzX3ZxOworCisJLyogUmV0cmlldmUgdGhlIGJ1ZmZlciB0aGF0IHRoZSBob3N0IHJldHVy
bmVkIHRvIHVzLiAqLworCWlmICh2aXJ0cXVldWVfZGVxdWV1ZSh2cSwgTlVMTCkgPT0gTlVMTCkK
KwkJcmV0dXJuOworCisJLyogQ29sbGVjdCBmcmVzaCBzdGF0aXN0aWNzIGFuZCByZS1lbnF1ZXVl
LiAqLworCW5zdGF0cyA9IHZ0YmFsbG9vbl91cGRhdGVfc3RhdHMoc2MpOworCisJc2dsaXN0X2lu
aXQoJnNnLCAxLCBzZWdzKTsKKwllcnJvciA9IHNnbGlzdF9hcHBlbmQoJnNnLCBzYy0+dnRiYWxs
b29uX3N0YXRzLAorCSAgICBzaXplb2Yoc3RydWN0IHZpcnRpb19iYWxsb29uX3N0YXQpICogbnN0
YXRzKTsKKwlLQVNTRVJUKGVycm9yID09IDAsICgiZXJyb3IgYWRkaW5nIHN0YXRzIHRvIHNnbGlz
dCIpKTsKKworCWVycm9yID0gdmlydHF1ZXVlX2VucXVldWUodnEsIHNjLCAmc2csIDEsIDApOwor
CUtBU1NFUlQoZXJyb3IgPT0gMCwgKCJlcnJvciBlbnF1ZXVpbmcgc3RhdHMgdG8gdmlydHF1ZXVl
IikpOworCXZpcnRxdWV1ZV9ub3RpZnkodnEpOworCXZpcnRxdWV1ZV9lbmFibGVfaW50cih2cSk7
Cit9CisKIHN0YXRpYyB2b2lkCiB2dGJhbGxvb25fc2V0dXBfc3lzY3RsKHN0cnVjdCB2dGJhbGxv
b25fc29mdGMgKnNjKQogewpkaWZmIC0tZ2l0IGEvc3lzL2Rldi92aXJ0aW8vYmFsbG9vbi92aXJ0
aW9fYmFsbG9vbi5oIGIvc3lzL2Rldi92aXJ0aW8vYmFsbG9vbi92aXJ0aW9fYmFsbG9vbi5oCmlu
ZGV4IGFiZmIzM2NmNy4uNTcyNmI4MmE1IDEwMDY0NAotLS0gYS9zeXMvZGV2L3ZpcnRpby9iYWxs
b29uL3ZpcnRpb19iYWxsb29uLmgKKysrIGIvc3lzL2Rldi92aXJ0aW8vYmFsbG9vbi92aXJ0aW9f
YmFsbG9vbi5oCkBAIC00NywxNSArNDcsMTcgQEAgc3RydWN0IHZpcnRpb19iYWxsb29uX2NvbmZp
ZyB7CiAJdWludDMyX3QgYWN0dWFsOwogfTsKIAotI2RlZmluZSBWSVJUSU9fQkFMTE9PTl9TX1NX
QVBfSU4gIDAgICAvKiBBbW91bnQgb2YgbWVtb3J5IHN3YXBwZWQgaW4gKi8KLSNkZWZpbmUgVklS
VElPX0JBTExPT05fU19TV0FQX09VVCAxICAgLyogQW1vdW50IG9mIG1lbW9yeSBzd2FwcGVkIG91
dCAqLwotI2RlZmluZSBWSVJUSU9fQkFMTE9PTl9TX01BSkZMVCAgIDIgICAvKiBOdW1iZXIgb2Yg
bWFqb3IgZmF1bHRzICovCi0jZGVmaW5lIFZJUlRJT19CQUxMT09OX1NfTUlORkxUICAgMyAgIC8q
IE51bWJlciBvZiBtaW5vciBmYXVsdHMgKi8KLSNkZWZpbmUgVklSVElPX0JBTExPT05fU19NRU1G
UkVFICA0ICAgLyogVG90YWwgYW1vdW50IG9mIGZyZWUgbWVtb3J5ICovCi0jZGVmaW5lIFZJUlRJ
T19CQUxMT09OX1NfTUVNVE9UICAgNSAgIC8qIFRvdGFsIGFtb3VudCBvZiBtZW1vcnkgKi8KLSNk
ZWZpbmUgVklSVElPX0JBTExPT05fU19BVkFJTCAgICA2ICAgLyogQXZhaWxhYmxlIG1lbW9yeSBh
cyBpbiAvcHJvYyAqLwotI2RlZmluZSBWSVJUSU9fQkFMTE9PTl9TX0NBQ0hFUyAgIDcgICAvKiBE
aXNrIGNhY2hlcyAqLwotI2RlZmluZSBWSVJUSU9fQkFMTE9PTl9TX05SICAgICAgIDgKKyNkZWZp
bmUgVklSVElPX0JBTExPT05fU19TV0FQX0lOCTAgICAvKiBBbW91bnQgb2YgbWVtb3J5IHN3YXBw
ZWQgaW4gKi8KKyNkZWZpbmUgVklSVElPX0JBTExPT05fU19TV0FQX09VVAkxICAgLyogQW1vdW50
IG9mIG1lbW9yeSBzd2FwcGVkIG91dCAqLworI2RlZmluZSBWSVJUSU9fQkFMTE9PTl9TX01BSkZM
VAkJMiAgIC8qIE51bWJlciBvZiBtYWpvciBmYXVsdHMgKi8KKyNkZWZpbmUgVklSVElPX0JBTExP
T05fU19NSU5GTFQJCTMgICAvKiBOdW1iZXIgb2YgbWlub3IgZmF1bHRzICovCisjZGVmaW5lIFZJ
UlRJT19CQUxMT09OX1NfTUVNRlJFRQk0ICAgLyogVG90YWwgYW1vdW50IG9mIGZyZWUgbWVtb3J5
ICovCisjZGVmaW5lIFZJUlRJT19CQUxMT09OX1NfTUVNVE9UCQk1ICAgLyogVG90YWwgYW1vdW50
IG9mIG1lbW9yeSAqLworI2RlZmluZSBWSVJUSU9fQkFMTE9PTl9TX0FWQUlMCQk2ICAgLyogQXZh
aWxhYmxlIG1lbW9yeSBhcyBpbiAvcHJvYyAqLworI2RlZmluZSBWSVJUSU9fQkFMTE9PTl9TX0NB
Q0hFUwkJNyAgIC8qIERpc2sgY2FjaGVzICovCisjZGVmaW5lIFZJUlRJT19CQUxMT09OX1NfSFRM
Ql9QR0FMTE9DCTggICAvKiBIdWdldGxiIHBhZ2UgYWxsb2NhdGlvbnMgKi8KKyNkZWZpbmUgVklS
VElPX0JBTExPT05fU19IVExCX1BHRkFJTAk5ICAgLyogSHVnZXRsYiBhbGxvYyBmYWlsdXJlcyAq
LworI2RlZmluZSBWSVJUSU9fQkFMTE9PTl9TX05SCQkxMAogCiAvKgogICogTWVtb3J5IHN0YXRp
c3RpY3Mgc3RydWN0dXJlLgotLSAKMi41My4wCgoKRnJvbSA0NWRmY2JiNjgyMDY4OTBhNGFkYTZl
NTFiZmRjYzk0OWM3ZjYwZDM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFuZ3po
ZSA8eGlhbmd6aGVkZXZAZ21haWwuY29tPgpEYXRlOiBGcmksIDMgQXByIDIwMjYgMTE6MTQ6MTQg
KzA4MDAKU3ViamVjdDogW1BBVENIIDIvNl0gdmlydGlvX2JhbGxvb246IGltcGxlbWVudCBWSVJU
SU9fQkFMTE9PTl9GX0RFRkxBVEVfT05fT09NCiBzdXBwb3J0CgpXaGVuIHRoZSBob3N0IG5lZ290
aWF0ZXMgdGhlIERFRkxBVEVfT05fT09NIGZlYXR1cmUsIHJlZ2lzdGVyIGEKdm1fbG93bWVtIGV2
ZW50IGhhbmRsZXIgc28gdGhlIGJhbGxvb24gYXV0b21hdGljYWxseSBkZWZsYXRlcyB1bmRlcgpt
ZW1vcnkgcHJlc3N1cmUsIHJldHVybmluZyBwYWdlcyB0byB0aGUgZ3Vlc3QgYmVmb3JlIHRoZSBP
T00ga2lsbGVyCmlzIGludm9rZWQuCgpUaGUgaW1wbGVtZW50YXRpb24gZm9sbG93cyB0aGUgc3Rh
bmRhcmQgRnJlZUJTRCBhc3luYy13YWtldXAta3RocmVhZApwYXR0ZXJuIChpZGVudGljYWwgdG8g
dnRiYWxsb29uX3ZxX2ludHIgYW5kIHZ0YmFsbG9vbl9jb25maWdfY2hhbmdlKToKdGhlIHZtX2xv
d21lbSBjYWxsYmFjayBzZXRzIFZUQkFMTE9PTl9GTEFHX0xPV01FTSBhbmQgY2FsbHMKd2FrZXVw
X29uZSgpIHdpdGhvdXQgYmxvY2tpbmcuICBUaGUgYmFsbG9vbiBrdGhyZWFkIHRoZW4gZGVmbGF0
ZXMKdXAgdG8gVlRCQUxMT09OX09PTV9ERUZMQVRFX1BBR0VTICgyNTYpIHBhZ2VzOyBhIGZpeGVk
IHBhZ2UgY291bnQKaXMgdXNlZCBzbyB0aGF0IHRoZSByZWxpZWYgc2NhbGVzIG5hdHVyYWxseSB3
aXRoIHBhZ2Ugc2l6ZS4KCkFsc28gdXBkYXRlIHZpcnRpb19iYWxsb29uLmggdG8gYWxpZ24gd2l0
aCB0aGUgdmlydGlvIHNwZWM6CiAtIEFkZCBmZWF0dXJlIGJpdCBkZWZpbml0aW9ucyBmb3IgRlJF
RV9QQUdFX0hJTlQsIFBBR0VfUE9JU09OLAogICBhbmQgUEFHRV9SRVBPUlRJTkcgKGRlZmluZWQg
b25seSwgbm90IGltcGxlbWVudGVkKQogLSBFeHRlbmQgdmlydGlvX2JhbGxvb25fY29uZmlnIHdp
dGggZnJlZV9wYWdlX2hpbnRfY21kX2lkIGFuZAogICBwb2lzb25fdmFsIGZpZWxkcwogLSBBZGQg
ZnJlZSBwYWdlIGhpbnQgY29tbWFuZCBJRCBkZWZpbml0aW9ucwogLSBBZGQgSFRMQl9QR0FMTE9D
IGFuZCBIVExCX1BHRkFJTCBzdGF0IHRhZ3MsIGJ1bXAgU19OUiB0byAxMAogLSBSZS1hbGlnbiBz
dGF0IGRlZmluaXRpb25zIHdpdGggdGFicyBmb3IgY29uc2lzdGVuY3kKIC0gQWRkIGFsbCBmZWF0
dXJlIGJpdHMgdG8gdGhlIGZlYXR1cmUgZGVzY3JpcHRpb24gdGFibGUgZm9yCiAgIGRpYWdub3N0
aWMgZGlzcGxheQoKSG9zdC1zaWRlIHJlcXVpcmVtZW50OiBRRU1VL2xpYnZpcnQgbXVzdCBlbmFi
bGUgZGVmbGF0ZS1vbi1vb20KKGxpYnZpcnQ6IDxtZW1iYWxsb29uIG1vZGVsPSd2aXJ0aW8nIGF1
dG9kZWZsYXRlPSdvbic+KS4KClNpZ25lZC1vZmYtYnk6IFhpYW5nemhlIDx4aWFuZ3poZWRldkBn
bWFpbC5jb20+Ci0tLQogc3lzL2Rldi92aXJ0aW8vYmFsbG9vbi92aXJ0aW9fYmFsbG9vbi5jIHwg
MTAxICsrKysrKysrKysrKysrKysrKysrKysrLQogc3lzL2Rldi92aXJ0aW8vYmFsbG9vbi92aXJ0
aW9fYmFsbG9vbi5oIHwgIDEzICsrKwogMiBmaWxlcyBjaGFuZ2VkLCAxMTMgaW5zZXJ0aW9ucygr
KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3N5cy9kZXYvdmlydGlvL2JhbGxvb24vdmly
dGlvX2JhbGxvb24uYyBiL3N5cy9kZXYvdmlydGlvL2JhbGxvb24vdmlydGlvX2JhbGxvb24uYwpp
bmRleCAzOGU0OGU2MjkuLjgyYjUyNTJlNyAxMDA2NDQKLS0tIGEvc3lzL2Rldi92aXJ0aW8vYmFs
bG9vbi92aXJ0aW9fYmFsbG9vbi5jCisrKyBiL3N5cy9kZXYvdmlydGlvL2JhbGxvb24vdmlydGlv
X2JhbGxvb24uYwpAQCAtNDEsMTIgKzQxLDE0IEBACiAjaW5jbHVkZSA8c3lzL2xvY2suaD4KICNp
bmNsdWRlIDxzeXMvbXV0ZXguaD4KICNpbmNsdWRlIDxzeXMvcXVldWUuaD4KKyNpbmNsdWRlIDxz
eXMvZXZlbnRoYW5kbGVyLmg+CiAKICNpbmNsdWRlIDxzeXMvdm1tZXRlci5oPgogCiAjaW5jbHVk
ZSA8dm0vdm0uaD4KICNpbmNsdWRlIDx2bS92bV9wYWdlLmg+CiAjaW5jbHVkZSA8dm0vdm1fZXh0
ZXJuLmg+CisjaW5jbHVkZSA8dm0vdm1fcGFnZW91dC5oPgogCiAjaW5jbHVkZSA8bWFjaGluZS9i
dXMuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3Jlc291cmNlLmg+CkBAIC02NSw2ICs2Nyw3IEBAIHN0
cnVjdCB2dGJhbGxvb25fc29mdGMgewogCXVpbnQ2NF90CQkgdnRiYWxsb29uX2ZlYXR1cmVzOwog
CXVpbnQzMl90CQkgdnRiYWxsb29uX2ZsYWdzOwogI2RlZmluZSBWVEJBTExPT05fRkxBR19ERVRB
Q0gJIDB4MDEKKyNkZWZpbmUgVlRCQUxMT09OX0ZMQUdfTE9XTUVNCSAweDAyCiAKIAlzdHJ1Y3Qg
dmlydHF1ZXVlCSp2dGJhbGxvb25faW5mbGF0ZV92cTsKIAlzdHJ1Y3QgdmlydHF1ZXVlCSp2dGJh
bGxvb25fZGVmbGF0ZV92cTsKQEAgLTc5LDEyICs4MiwxNyBAQCBzdHJ1Y3QgdnRiYWxsb29uX3Nv
ZnRjIHsKIAlzdHJ1Y3QgdGhyZWFkCQkqdnRiYWxsb29uX3RkOwogCXVpbnQzMl90CQkqdnRiYWxs
b29uX3BhZ2VfZnJhbWVzOwogCWludAkJCSB2dGJhbGxvb25fdGltZW91dDsKKworCWV2ZW50aGFu
ZGxlcl90YWcJIHZ0YmFsbG9vbl9sb3dtZW1fdGFnOwogfTsKIAogc3RhdGljIHN0cnVjdCB2aXJ0
aW9fZmVhdHVyZV9kZXNjIHZ0YmFsbG9vbl9mZWF0dXJlX2Rlc2NbXSA9IHsKIAl7IFZJUlRJT19C
QUxMT09OX0ZfTVVTVF9URUxMX0hPU1QsCSJNdXN0VGVsbEhvc3QiCX0sCiAJeyBWSVJUSU9fQkFM
TE9PTl9GX1NUQVRTX1ZRLAkJIlN0YXRzVnEiCX0sCiAJeyBWSVJUSU9fQkFMTE9PTl9GX0RFRkxB
VEVfT05fT09NLAkiRGVmbGF0ZU9uT09NIgl9LAorCXsgVklSVElPX0JBTExPT05fRl9GUkVFX1BB
R0VfSElOVCwJIkZyZWVQYWdlSGludCIJfSwKKwl7IFZJUlRJT19CQUxMT09OX0ZfUEFHRV9QT0lT
T04sCQkiUGFnZVBvaXNvbiIJfSwKKwl7IFZJUlRJT19CQUxMT09OX0ZfUEFHRV9SRVBPUlRJTkcs
CSJQYWdlUmVwb3J0aW5nIgl9LAogCiAJeyAwLCBOVUxMIH0KIH07CkBAIC0xMTcsNiArMTI1LDcg
QEAgc3RhdGljIHZvaWQJdnRiYWxsb29uX2ZyZWVfcGFnZShzdHJ1Y3QgdnRiYWxsb29uX3NvZnRj
ICosIHZtX3BhZ2VfdCk7CiAKIHN0YXRpYyBpbnQJdnRiYWxsb29uX3NsZWVwKHN0cnVjdCB2dGJh
bGxvb25fc29mdGMgKik7CiBzdGF0aWMgdm9pZAl2dGJhbGxvb25fdGhyZWFkKHZvaWQgKik7Citz
dGF0aWMgdm9pZAl2dGJhbGxvb25fbG93bWVtKHZvaWQgKiwgaW50KTsKIHN0YXRpYyB2b2lkCXZ0
YmFsbG9vbl9zZXR1cF9zeXNjdGwoc3RydWN0IHZ0YmFsbG9vbl9zb2Z0YyAqKTsKIAogI2RlZmlu
ZSB2dGJhbGxvb25fbW9kZXJuKF9zYykgXApAQCAtMTI0LDcgKzEzMyw5IEBAIHN0YXRpYyB2b2lk
CXZ0YmFsbG9vbl9zZXR1cF9zeXNjdGwoc3RydWN0IHZ0YmFsbG9vbl9zb2Z0YyAqKTsKIAogLyog
RmVhdHVyZXMgZGVzaXJlZC9pbXBsZW1lbnRlZCBieSB0aGlzIGRyaXZlci4gKi8KICNkZWZpbmUg
VlRCQUxMT09OX0ZFQVRVUkVTCQlcCi0gICAgKFZJUlRJT19CQUxMT09OX0ZfTVVTVF9URUxMX0hP
U1QgfCBWSVJUSU9fQkFMTE9PTl9GX1NUQVRTX1ZRKQorICAgIChWSVJUSU9fQkFMTE9PTl9GX01V
U1RfVEVMTF9IT1NUIHwJXAorICAgICBWSVJUSU9fQkFMTE9PTl9GX1NUQVRTX1ZRIHwJXAorICAg
ICBWSVJUSU9fQkFMTE9PTl9GX0RFRkxBVEVfT05fT09NKQogCiAvKiBUaW1lb3V0IGJldHdlZW4g
cmV0cmllcyB3aGVuIHRoZSBiYWxsb29uIG5lZWRzIGluZmxhdGluZy4gKi8KICNkZWZpbmUgVlRC
QUxMT09OX0xPV01FTV9USU1FT1VUCWh6CkBAIC0yMjksNiArMjQwLDE1IEBAIHZ0YmFsbG9vbl9h
dHRhY2goZGV2aWNlX3QgZGV2KQogCXZpcnRxdWV1ZV9lbmFibGVfaW50cihzYy0+dnRiYWxsb29u
X2luZmxhdGVfdnEpOwogCXZpcnRxdWV1ZV9lbmFibGVfaW50cihzYy0+dnRiYWxsb29uX2RlZmxh
dGVfdnEpOwogCisJLyoKKwkgKiBSZWdpc3RlciBhIGxvdyBtZW1vcnkgZXZlbnQgaGFuZGxlciB0
byBkZWZsYXRlIHRoZSBiYWxsb29uCisJICogd2hlbiB0aGUgc3lzdGVtIGlzIHVuZGVyIG1lbW9y
eSBwcmVzc3VyZSwgYXZvaWRpbmcgT09NIGtpbGxzLgorCSAqLworCWlmICh2aXJ0aW9fd2l0aF9m
ZWF0dXJlKGRldiwgVklSVElPX0JBTExPT05fRl9ERUZMQVRFX09OX09PTSkpIHsKKwkJc2MtPnZ0
YmFsbG9vbl9sb3dtZW1fdGFnID0gRVZFTlRIQU5ETEVSX1JFR0lTVEVSKHZtX2xvd21lbSwKKwkJ
ICAgIHZ0YmFsbG9vbl9sb3dtZW0sIHNjLCBFVkVOVEhBTkRMRVJfUFJJX0ZJUlNUKTsKKwl9CisK
IAkvKgogCSAqIFByaW1lIHRoZSBzdGF0cyB2aXJ0cXVldWUgd2l0aCBvbmUgYnVmZmVyIHNvIHRo
ZSBoeXBlcnZpc29yCiAJICogY2FuIHVzZSBpdCB0byByZXF1ZXN0IGd1ZXN0IG1lbW9yeSBzdGF0
aXN0aWNzLgpAQCAtMjY3LDYgKzI4NywxMSBAQCB2dGJhbGxvb25fZGV0YWNoKGRldmljZV90IGRl
dikKIAogCXNjID0gZGV2aWNlX2dldF9zb2Z0YyhkZXYpOwogCisJaWYgKHNjLT52dGJhbGxvb25f
bG93bWVtX3RhZyAhPSBOVUxMKSB7CisJCUVWRU5USEFORExFUl9ERVJFR0lTVEVSKHZtX2xvd21l
bSwgc2MtPnZ0YmFsbG9vbl9sb3dtZW1fdGFnKTsKKwkJc2MtPnZ0YmFsbG9vbl9sb3dtZW1fdGFn
ID0gTlVMTDsKKwl9CisKIAlpZiAoc2MtPnZ0YmFsbG9vbl90ZCAhPSBOVUxMKSB7CiAJCVZUQkFM
TE9PTl9MT0NLKHNjKTsKIAkJc2MtPnZ0YmFsbG9vbl9mbGFncyB8PSBWVEJBTExPT05fRkxBR19E
RVRBQ0g7CkBAIC01NTcsNiArNTgyLDEwIEBAIHZ0YmFsbG9vbl9zbGVlcChzdHJ1Y3QgdnRiYWxs
b29uX3NvZnRjICpzYykKIAkJCWJyZWFrOwogCQl9CiAKKwkJLyogTG93IG1lbW9yeSBldmVudDog
YnJlYWsgb3V0IGltbWVkaWF0ZWx5IHRvIGRlZmxhdGUuICovCisJCWlmIChzYy0+dnRiYWxsb29u
X2ZsYWdzICYgVlRCQUxMT09OX0ZMQUdfTE9XTUVNKQorCQkJYnJlYWs7CisKIAkJZGVzaXJlZCA9
IHZ0YmFsbG9vbl9kZXNpcmVkX3NpemUoc2MpOwogCQlzYy0+dnRiYWxsb29uX2Rlc2lyZWRfbnBh
Z2VzID0gZGVzaXJlZDsKIApAQCAtNTgxLDExICs2MTAsMTkgQEAgdnRiYWxsb29uX3NsZWVwKHN0
cnVjdCB2dGJhbGxvb25fc29mdGMgKnNjKQogCXJldHVybiAocmMpOwogfQogCisvKgorICogTWF4
aW11bSBudW1iZXIgb2YgcGFnZXMgdG8gZGVmbGF0ZSBpbiByZXNwb25zZSB0byBhIGxvdyBtZW1v
cnkgZXZlbnQuCisgKiBUaGUgdmlydGlvIHNwZWMgZG9lcyBub3QgcHJlc2NyaWJlIGEgc3BlY2lm
aWMgYW1vdW50OyB3ZSB1c2UgYSBmaXhlZAorICogcGFnZSBjb3VudCBzbyB0aGF0IHRoZSByZWxp
ZWYgc2NhbGVzIG5hdHVyYWxseSB3aXRoIHBhZ2Ugc2l6ZS4KKyAqLworI2RlZmluZSBWVEJBTExP
T05fT09NX0RFRkxBVEVfUEFHRVMJMjU2CisKIHN0YXRpYyB2b2lkCiB2dGJhbGxvb25fdGhyZWFk
KHZvaWQgKnhzYykKIHsKIAlzdHJ1Y3QgdnRiYWxsb29uX3NvZnRjICpzYzsKIAl1aW50MzJfdCBj
dXJyZW50LCBkZXNpcmVkOworCWludCBsb3dtZW07CiAKIAlzYyA9IHhzYzsKIApAQCAtNTkzLDYg
KzYzMCwzNyBAQCB2dGJhbGxvb25fdGhyZWFkKHZvaWQgKnhzYykKIAkJaWYgKHZ0YmFsbG9vbl9z
bGVlcChzYykgIT0gMCkKIAkJCWJyZWFrOwogCisJCS8qIENoZWNrIGFuZCBjbGVhciB0aGUgbG93
IG1lbW9yeSBmbGFnLiAqLworCQlWVEJBTExPT05fTE9DSyhzYyk7CisJCWxvd21lbSA9IHNjLT52
dGJhbGxvb25fZmxhZ3MgJiBWVEJBTExPT05fRkxBR19MT1dNRU07CisJCXNjLT52dGJhbGxvb25f
ZmxhZ3MgJj0gflZUQkFMTE9PTl9GTEFHX0xPV01FTTsKKwkJVlRCQUxMT09OX1VOTE9DSyhzYyk7
CisKKwkJaWYgKGxvd21lbSAmJiBzYy0+dnRiYWxsb29uX2N1cnJlbnRfbnBhZ2VzID4gMCkgewor
CQkJLyoKKwkJCSAqIExvdyBtZW1vcnk6IGRlZmxhdGUgdXAgdG8gVlRCQUxMT09OX09PTV9ERUZM
QVRFX1BBR0VTCisJCQkgKiByZWdhcmRsZXNzIG9mIHRoZSBob3N0J3MgZGVzaXJlZCBiYWxsb29u
IHNpemUuICBUaGlzCisJCQkgKiByZXR1cm5zIHBhZ2VzIHRvIHRoZSBndWVzdCBWTSBzdWJzeXN0
ZW0gYmVmb3JlIHRoZQorCQkJICogT09NIGtpbGxlciBpcyBpbnZva2VkLgorCQkJICovCisJCQlk
ZXNpcmVkID0gc2MtPnZ0YmFsbG9vbl9jdXJyZW50X25wYWdlcyAtCisJCQkgICAgTUlOKHNjLT52
dGJhbGxvb25fY3VycmVudF9ucGFnZXMsCisJCQkgICAgVlRCQUxMT09OX09PTV9ERUZMQVRFX1BB
R0VTKTsKKworCQkJZGV2aWNlX3ByaW50ZihzYy0+dnRiYWxsb29uX2RldiwKKwkJCSAgICAibG93
IG1lbW9yeSwgZGVmbGF0aW5nIGJhbGxvb24gYnkgJWQgcGFnZXMgIgorCQkJICAgICIoY3VycmVu
dDogJWQpXG4iLAorCQkJICAgIHNjLT52dGJhbGxvb25fY3VycmVudF9ucGFnZXMgLSBkZXNpcmVk
LAorCQkJICAgIHNjLT52dGJhbGxvb25fY3VycmVudF9ucGFnZXMpOworCisJCQl3aGlsZSAoc2Mt
PnZ0YmFsbG9vbl9jdXJyZW50X25wYWdlcyA+IGRlc2lyZWQpCisJCQkJdnRiYWxsb29uX2RlZmxh
dGUoc2MsCisJCQkJICAgIHNjLT52dGJhbGxvb25fY3VycmVudF9ucGFnZXMgLSBkZXNpcmVkKTsK
KworCQkJdnRiYWxsb29uX3VwZGF0ZV9zaXplKHNjKTsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJ
Y3VycmVudCA9IHNjLT52dGJhbGxvb25fY3VycmVudF9ucGFnZXM7CiAJCWRlc2lyZWQgPSBzYy0+
dnRiYWxsb29uX2Rlc2lyZWRfbnBhZ2VzOwogCkBAIC02OTAsNiArNzU4LDM3IEBAIHZ0YmFsbG9v
bl9zdGF0c192cV9pbnRyKHZvaWQgKnhzYykKIAl2aXJ0cXVldWVfZW5hYmxlX2ludHIodnEpOwog
fQogCisvKgorICogSGFuZGxlciBmb3IgdGhlIHZtX2xvd21lbSBldmVudC4gIFdoZW4gdGhlIHN5
c3RlbSBpcyB1bmRlciBtZW1vcnkgcHJlc3N1cmUsCisgKiB0aGUgcGFnZWRhZW1vbiBmaXJlcyB0
aGlzIGV2ZW50LiAgV2UgcmVzcG9uZCBieSB3YWtpbmcgdGhlIGJhbGxvb24ga3RocmVhZAorICog
dG8gZGVmbGF0ZSBwYWdlcyBiYWNrIHRvIHRoZSBndWVzdCwgZ2l2aW5nIHRoZSBWTSBzdWJzeXN0
ZW0gbW9yZSBmcmVlIHBhZ2VzCisgKiBiZWZvcmUgaXQgcmVzb3J0cyB0byB0aGUgT09NIGtpbGxl
ci4KKyAqCisgKiBUaGlzIGNhbGxiYWNrIHJ1bnMgaW4gdGhlIHBhZ2VkYWVtb24gY29udGV4dCwg
c28gd2UgbXVzdCBub3QgYmxvY2suCisgKiBXZSBzaW1wbHkgc2V0IGEgZmxhZyBhbmQgd2FrZSB0
aGUga3RocmVhZCwgZm9sbG93aW5nIHRoZSBzYW1lIHBhdHRlcm4gYXMKKyAqIHZ0YmFsbG9vbl92
cV9pbnRyKCkgYW5kIHZ0YmFsbG9vbl9jb25maWdfY2hhbmdlKCkuCisgKi8KK3N0YXRpYyB2b2lk
Cit2dGJhbGxvb25fbG93bWVtKHZvaWQgKmFyZywgaW50IGZsYWdzKQoreworCXN0cnVjdCB2dGJh
bGxvb25fc29mdGMgKnNjOworCisJc2MgPSBhcmc7CisKKwkvKiBPbmx5IHJlc3BvbmQgdG8gcGh5
c2ljYWwgcGFnZSBzaG9ydGFnZS4gKi8KKwlpZiAoKGZsYWdzICYgVk1fTE9XX1BBR0VTKSA9PSAw
KQorCQlyZXR1cm47CisKKwkvKiBOb3RoaW5nIHRvIGRlZmxhdGUuICovCisJaWYgKHNjLT52dGJh
bGxvb25fY3VycmVudF9ucGFnZXMgPT0gMCkKKwkJcmV0dXJuOworCisJVlRCQUxMT09OX0xPQ0so
c2MpOworCXNjLT52dGJhbGxvb25fZmxhZ3MgfD0gVlRCQUxMT09OX0ZMQUdfTE9XTUVNOworCXdh
a2V1cF9vbmUoc2MpOworCVZUQkFMTE9PTl9VTkxPQ0soc2MpOworfQorCiBzdGF0aWMgdm9pZAog
dnRiYWxsb29uX3NldHVwX3N5c2N0bChzdHJ1Y3QgdnRiYWxsb29uX3NvZnRjICpzYykKIHsKZGlm
ZiAtLWdpdCBhL3N5cy9kZXYvdmlydGlvL2JhbGxvb24vdmlydGlvX2JhbGxvb24uaCBiL3N5cy9k
ZXYvdmlydGlvL2JhbGxvb24vdmlydGlvX2JhbGxvb24uaAppbmRleCA1NzI2YjgyYTUuLjEzOGRj
MTJjYiAxMDA2NDQKLS0tIGEvc3lzL2Rldi92aXJ0aW8vYmFsbG9vbi92aXJ0aW9fYmFsbG9vbi5o
CisrKyBiL3N5cy9kZXYvdmlydGlvL2JhbGxvb24vdmlydGlvX2JhbGxvb24uaApAQCAtMzUsNiAr
MzUsMTMgQEAKICNkZWZpbmUgVklSVElPX0JBTExPT05fRl9NVVNUX1RFTExfSE9TVAkweDEgLyog
VGVsbCBiZWZvcmUgcmVjbGFpbWluZyBwYWdlcyAqLwogI2RlZmluZSBWSVJUSU9fQkFMTE9PTl9G
X1NUQVRTX1ZRCTB4MiAvKiBNZW1vcnkgc3RhdHMgdmlydHF1ZXVlICovCiAjZGVmaW5lIFZJUlRJ
T19CQUxMT09OX0ZfREVGTEFURV9PTl9PT00JMHg0IC8qIERlZmxhdGUgYmFsbG9vbiBvbiBPT00g
Ki8KKyNkZWZpbmUgVklSVElPX0JBTExPT05fRl9GUkVFX1BBR0VfSElOVAkweDggLyogVlEgdG8g
cmVwb3J0IGZyZWUgcGFnZXMgKi8KKyNkZWZpbmUgVklSVElPX0JBTExPT05fRl9QQUdFX1BPSVNP
TgkweDEwIC8qIEd1ZXN0IGlzIHVzaW5nIHBhZ2UgcG9pc29uaW5nICovCisjZGVmaW5lIFZJUlRJ
T19CQUxMT09OX0ZfUEFHRV9SRVBPUlRJTkcJMHgyMCAvKiBQYWdlIHJlcG9ydGluZyB2aXJ0cXVl
dWUgKi8KKworLyogRnJlZSBwYWdlIGhpbnQgY29tbWFuZCBJRHMgKGlmIEZSRUVfUEFHRV9ISU5U
KS4gKi8KKyNkZWZpbmUgVklSVElPX0JBTExPT05fQ01EX0lEX1NUT1AJMAorI2RlZmluZSBWSVJU
SU9fQkFMTE9PTl9DTURfSURfRE9ORQkxCiAKIC8qIFNpemUgb2YgYSBQRk4gaW4gdGhlIGJhbGxv
b24gaW50ZXJmYWNlLiAqLwogI2RlZmluZSBWSVJUSU9fQkFMTE9PTl9QRk5fU0hJRlQgMTIKQEAg
LTQ1LDYgKzUyLDEyIEBAIHN0cnVjdCB2aXJ0aW9fYmFsbG9vbl9jb25maWcgewogCiAJLyogTnVt
YmVyIG9mIHBhZ2VzIHdlJ3ZlIGFjdHVhbGx5IGdvdCBpbiBiYWxsb29uLiAqLwogCXVpbnQzMl90
IGFjdHVhbDsKKworCS8qIEZyZWUgcGFnZSBoaW50IGNvbW1hbmQgaWQsIHJlcG9ydGVkIGJ5IGhv
c3QgKGlmIEZSRUVfUEFHRV9ISU5UKS4gKi8KKwl1aW50MzJfdCBmcmVlX3BhZ2VfaGludF9jbWRf
aWQ7CisKKwkvKiBQYWdlIHBvaXNvbiB2YWx1ZSwgcmVwb3J0ZWQgYnkgZ3Vlc3QgKGlmIFBBR0Vf
UE9JU09OKS4gKi8KKwl1aW50MzJfdCBwb2lzb25fdmFsOwogfTsKIAogI2RlZmluZSBWSVJUSU9f
QkFMTE9PTl9TX1NXQVBfSU4JMCAgIC8qIEFtb3VudCBvZiBtZW1vcnkgc3dhcHBlZCBpbiAqLwot
LSAKMi41My4wCgoKRnJvbSAzZWExNTZjMWI0Njk4ODE5MTFiNWZlZTRhMDk5ZDk5NzU5NjQxZTVh
IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFuZ3poZSA8eGlhbmd6aGVkZXZAZ21h
aWwuY29tPgpEYXRlOiBTYXQsIDQgQXByIDIwMjYgMTI6MDA6NTQgKzA4MDAKU3ViamVjdDogW1BB
VENIIDMvNl0gdmlydGlvX2JhbGxvb246IGZpeCBPT00gZGVmbGF0aW9uIGltbWVkaWF0ZWx5IHJl
LWluZmxhdGVkCiBieSBiYWxsb29uIHRocmVhZAoKV2hlbiB0aGUgdm1fbG93bWVtIGV2ZW50IGZp
cmVzLCB0aGUgYmFsbG9vbiB0aHJlYWQgZGVmbGF0ZXMgcGFnZXMgdG8KcmVsaWV2ZSBtZW1vcnkg
cHJlc3N1cmUuICBIb3dldmVyLCB0aGUgdGhyZWFkIGltbWVkaWF0ZWx5IHJlLXJlYWRzIHRoZQpo
b3N0J3MgZGVzaXJlZCBiYWxsb29uIHNpemUgKHdoaWNoIGhhcyBub3QgY2hhbmdlZCkgYW5kIHJl
LWluZmxhdGVzCnRoZSBwYWdlcyBpdCBqdXN0IGZyZWVkLCBjb21wbGV0ZWx5IGRlZmVhdGluZyB0
aGUgT09NIHJlbGllZi4KCkZpeCB0aGlzIGJ5IGFkZGluZyBhIFZUQkFMTE9PTl9GTEFHX1dBTlRT
SVpFIGZsYWcgdGhhdCBnYXRlcyB0aGUKbm9ybWFsIGluZmxhdGUvZGVmbGF0ZSBwYXRoIG9uIGFu
IGV4cGxpY2l0IGhvc3QgY29uZmlnIGNoYW5nZQppbnRlcnJ1cHQuICBUaGUgdGhyZWFkIG5vdyBv
bmx5IGV2YWx1YXRlcyB0aGUgaG9zdCdzIGRlc2lyZWQgc2l6ZQp3aGVuIHRoaXMgZmxhZyBpcyBz
ZXQ6CgogLSB2dGJhbGxvb25fY29uZmlnX2NoYW5nZSgpIHNldHMgVlRCQUxMT09OX0ZMQUdfV0FO
VFNJWkUgYmVmb3JlCiAgIHdha2luZyB0aGUgdGhyZWFkLCBmb2xsb3dpbmcgdGhlIGVzdGFibGlz
aGVkIEZyZWVCU0Qga3RocmVhZAogICBmbGFnK3dha2V1cCBwYXR0ZXJuIChjZi4gYWNwaV90eiwg
YWFjKS4KCiAtIHZ0YmFsbG9vbl9zbGVlcCgpIG9ubHkgYnJlYWtzIG91dCBmb3IgaW5mbGF0ZS9k
ZWZsYXRlIHdoZW4KICAgV0FOVFNJWkUgaXMgc2V0OyB0aGUgZmxhZyBpcyBjbGVhcmVkIG9uY2Ug
Y3VycmVudCA9PSBkZXNpcmVkLgoKIC0gVGhlIGxvdyBtZW1vcnkgcGF0aCBpbiB2dGJhbGxvb25f
dGhyZWFkKCkgY2xlYXJzIGJvdGggTE9XTUVNCiAgIGFuZCBXQU5UU0laRSwgcHJldmVudGluZyBy
ZS1pbmZsYXRpb24gYWZ0ZXIgT09NIGRlZmxhdGlvbi4KICAgVGhlIGhvc3Qgd2lsbCBzZW5kIGEg
bmV3IGNvbmZpZyBjaGFuZ2UgaWYgaXQgc3RpbGwgcmVxdWlyZXMKICAgYSBsYXJnZXIgYmFsbG9v
bi4KCiAtIHZ0YmFsbG9vbl9hdHRhY2goKSBwcmltZXMgdGhlIGZsYWcgc28gdGhlIHRocmVhZCBo
YW5kbGVzIHRoZQogICBjYXNlIHdoZXJlIHRoZSBob3N0IHNldCBudW1fcGFnZXMgYmVmb3JlIHRo
ZSBndWVzdCBib290ZWQuCgpUaGlzIG1hdGNoZXMgdGhlIExpbnV4IHZpcnRpb19iYWxsb29uIGRl
c2lnbiB3aGVyZSB0aGUgT09NIG5vdGlmaWVyCmRlZmxhdGVzIGRpcmVjdGx5IGFuZCB0aGUgbm9y
bWFsIHJlc2l6ZSB3b3JrcXVldWUgaXMgb25seSB0cmlnZ2VyZWQKYnkgaG9zdCBjb25maWcgY2hh
bmdlIGludGVycnVwdHMuCgpTaWduZWQtb2ZmLWJ5OiBYaWFuZ3poZSA8eGlhbmd6aGVkZXZAZ21h
aWwuY29tPgotLS0KIHN5cy9kZXYvdmlydGlvL2JhbGxvb24vdmlydGlvX2JhbGxvb24uYyB8IDY4
ICsrKysrKysrKysrKysrKysrKystLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1MiBpbnNlcnRpb25z
KCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zeXMvZGV2L3ZpcnRpby9iYWxsb29u
L3ZpcnRpb19iYWxsb29uLmMgYi9zeXMvZGV2L3ZpcnRpby9iYWxsb29uL3ZpcnRpb19iYWxsb29u
LmMKaW5kZXggODJiNTI1MmU3Li43MTkzYTJlZDkgMTAwNjQ0Ci0tLSBhL3N5cy9kZXYvdmlydGlv
L2JhbGxvb24vdmlydGlvX2JhbGxvb24uYworKysgYi9zeXMvZGV2L3ZpcnRpby9iYWxsb29uL3Zp
cnRpb19iYWxsb29uLmMKQEAgLTY4LDYgKzY4LDcgQEAgc3RydWN0IHZ0YmFsbG9vbl9zb2Z0YyB7
CiAJdWludDMyX3QJCSB2dGJhbGxvb25fZmxhZ3M7CiAjZGVmaW5lIFZUQkFMTE9PTl9GTEFHX0RF
VEFDSAkgMHgwMQogI2RlZmluZSBWVEJBTExPT05fRkxBR19MT1dNRU0JIDB4MDIKKyNkZWZpbmUg
VlRCQUxMT09OX0ZMQUdfV0FOVFNJWkUJIDB4MDQKIAogCXN0cnVjdCB2aXJ0cXVldWUJKnZ0YmFs
bG9vbl9pbmZsYXRlX3ZxOwogCXN0cnVjdCB2aXJ0cXVldWUJKnZ0YmFsbG9vbl9kZWZsYXRlX3Zx
OwpAQCAtMjM3LDYgKzIzOCwxMyBAQCB2dGJhbGxvb25fYXR0YWNoKGRldmljZV90IGRldikKIAkJ
Z290byBmYWlsOwogCX0KIAorCS8qCisJICogUHJpbWUgdGhlIHJlc2l6ZSBmbGFnIHNvIHRoZSB0
aHJlYWQgZXZhbHVhdGVzIHRoZSBob3N0J3MKKwkgKiBkZXNpcmVkIGJhbGxvb24gc2l6ZSBvbiBm
aXJzdCB3YWtldXAuICBUaGlzIGhhbmRsZXMgdGhlCisJICogY2FzZSB3aGVyZSB0aGUgaG9zdCBz
ZXQgbnVtX3BhZ2VzIGJlZm9yZSB0aGUgZ3Vlc3QgYm9vdGVkLgorCSAqLworCXNjLT52dGJhbGxv
b25fZmxhZ3MgfD0gVlRCQUxMT09OX0ZMQUdfV0FOVFNJWkU7CisKIAl2aXJ0cXVldWVfZW5hYmxl
X2ludHIoc2MtPnZ0YmFsbG9vbl9pbmZsYXRlX3ZxKTsKIAl2aXJ0cXVldWVfZW5hYmxlX2ludHIo
c2MtPnZ0YmFsbG9vbl9kZWZsYXRlX3ZxKTsKIApAQCAtMzI1LDYgKzMzMyw3IEBAIHZ0YmFsbG9v
bl9jb25maWdfY2hhbmdlKGRldmljZV90IGRldikKIAlzYyA9IGRldmljZV9nZXRfc29mdGMoZGV2
KTsKIAogCVZUQkFMTE9PTl9MT0NLKHNjKTsKKwlzYy0+dnRiYWxsb29uX2ZsYWdzIHw9IFZUQkFM
TE9PTl9GTEFHX1dBTlRTSVpFOwogCXdha2V1cF9vbmUoc2MpOwogCVZUQkFMTE9PTl9VTkxPQ0so
c2MpOwogCkBAIC01ODYsMjQgKzU5NSw0MiBAQCB2dGJhbGxvb25fc2xlZXAoc3RydWN0IHZ0YmFs
bG9vbl9zb2Z0YyAqc2MpCiAJCWlmIChzYy0+dnRiYWxsb29uX2ZsYWdzICYgVlRCQUxMT09OX0ZM
QUdfTE9XTUVNKQogCQkJYnJlYWs7CiAKLQkJZGVzaXJlZCA9IHZ0YmFsbG9vbl9kZXNpcmVkX3Np
emUoc2MpOwotCQlzYy0+dnRiYWxsb29uX2Rlc2lyZWRfbnBhZ2VzID0gZGVzaXJlZDsKLQogCQkv
KgotCQkgKiBJZiBnaXZlbiwgdXNlIG5vbi16ZXJvIHRpbWVvdXQgb24gdGhlIGZpcnN0IHRpbWUg
dGhyb3VnaAotCQkgKiB0aGUgbG9vcC4gT24gc3Vic2VxdWVudCB0aW1lcywgdGltZW91dCB3aWxs
IGJlIHplcm8gc28KLQkJICogd2Ugd2lsbCByZWV2YWx1YXRlIHRoZSBkZXNpcmVkIHNpemUgb2Yg
dGhlIGJhbGxvb24gYW5kCi0JCSAqIGJyZWFrIG91dCB0byByZXRyeSBpZiBuZWVkZWQuCisJCSAq
IE9ubHkgZXZhbHVhdGUgdGhlIGhvc3QncyBkZXNpcmVkIGJhbGxvb24gc2l6ZSB3aGVuIGEKKwkJ
ICogY29uZmlnIGNoYW5nZSBpbnRlcnJ1cHQgaGFzIGJlZW4gcmVjZWl2ZWQuICBUaGlzCisJCSAq
IHByZXZlbnRzIHRoZSB0aHJlYWQgZnJvbSByZS1pbmZsYXRpbmcgcGFnZXMgdGhhdCB3ZXJlCisJ
CSAqIGp1c3QgZnJlZWQgaW4gcmVzcG9uc2UgdG8gYSBsb3cgbWVtb3J5IGV2ZW50LgogCQkgKi8K
LQkJdGltZW91dCA9IHNjLT52dGJhbGxvb25fdGltZW91dDsKLQkJc2MtPnZ0YmFsbG9vbl90aW1l
b3V0ID0gMDsKKwkJaWYgKHNjLT52dGJhbGxvb25fZmxhZ3MgJiBWVEJBTExPT05fRkxBR19XQU5U
U0laRSkgeworCQkJZGVzaXJlZCA9IHZ0YmFsbG9vbl9kZXNpcmVkX3NpemUoc2MpOworCQkJc2Mt
PnZ0YmFsbG9vbl9kZXNpcmVkX25wYWdlcyA9IGRlc2lyZWQ7CiAKLQkJaWYgKGN1cnJlbnQgPiBk
ZXNpcmVkKQotCQkJYnJlYWs7Ci0JCWlmIChjdXJyZW50IDwgZGVzaXJlZCAmJiB0aW1lb3V0ID09
IDApCi0JCQlicmVhazsKKwkJCS8qCisJCQkgKiBJZiBnaXZlbiwgdXNlIG5vbi16ZXJvIHRpbWVv
dXQgb24gdGhlIGZpcnN0CisJCQkgKiB0aW1lIHRocm91Z2ggdGhlIGxvb3AuICBPbiBzdWJzZXF1
ZW50IHRpbWVzLAorCQkJICogdGltZW91dCB3aWxsIGJlIHplcm8gc28gd2Ugd2lsbCByZWV2YWx1
YXRlCisJCQkgKiB0aGUgZGVzaXJlZCBzaXplIG9mIHRoZSBiYWxsb29uIGFuZCBicmVhaworCQkJ
ICogb3V0IHRvIHJldHJ5IGlmIG5lZWRlZC4KKwkJCSAqLworCQkJdGltZW91dCA9IHNjLT52dGJh
bGxvb25fdGltZW91dDsKKwkJCXNjLT52dGJhbGxvb25fdGltZW91dCA9IDA7CisKKwkJCWlmIChj
dXJyZW50ID4gZGVzaXJlZCkKKwkJCQlicmVhazsKKwkJCWlmIChjdXJyZW50IDwgZGVzaXJlZCAm
JiB0aW1lb3V0ID09IDApCisJCQkJYnJlYWs7CisJCQlpZiAoY3VycmVudCA8IGRlc2lyZWQpIHsK
KwkJCQkvKiBSZXRyeSBhZnRlciB0aW1lb3V0LiAqLworCQkJCW1zbGVlcChzYywgVlRCQUxMT09O
X01UWChzYyksIDAsCisJCQkJICAgICJ2dGJzbHAiLCB0aW1lb3V0KTsKKwkJCQljb250aW51ZTsK
KwkJCX0KKworCQkJLyogVGFyZ2V0IHJlYWNoZWQ7IGNsZWFyIHRoZSBmbGFnLiAqLworCQkJc2Mt
PnZ0YmFsbG9vbl9mbGFncyAmPSB+VlRCQUxMT09OX0ZMQUdfV0FOVFNJWkU7CisJCX0KIAotCQlt
c2xlZXAoc2MsIFZUQkFMTE9PTl9NVFgoc2MpLCAwLCAidnRic2xwIiwgdGltZW91dCk7CisJCW1z
bGVlcChzYywgVlRCQUxMT09OX01UWChzYyksIDAsICJ2dGJzbHAiLCAwKTsKIAl9CiAJVlRCQUxM
T09OX1VOTE9DSyhzYyk7CiAKQEAgLTYzMCwxMCArNjU3LDE5IEBAIHZ0YmFsbG9vbl90aHJlYWQo
dm9pZCAqeHNjKQogCQlpZiAodnRiYWxsb29uX3NsZWVwKHNjKSAhPSAwKQogCQkJYnJlYWs7CiAK
LQkJLyogQ2hlY2sgYW5kIGNsZWFyIHRoZSBsb3cgbWVtb3J5IGZsYWcuICovCisJCS8qCisJCSAq
IENoZWNrIGFuZCBjbGVhciB0aGUgbG93IG1lbW9yeSBmbGFnLiAgQWxzbyBjbGVhciBhbnkKKwkJ
ICogcGVuZGluZyBob3N0IHJlc2l6ZSByZXF1ZXN0IHNvIHRoYXQgd2UgZG8gbm90CisJCSAqIGlt
bWVkaWF0ZWx5IHJlLWluZmxhdGUgdGhlIHBhZ2VzIGp1c3QgcmVsZWFzZWQgdG8KKwkJICogdGhl
IFZNIHN1YnN5c3RlbS4gIFRoZSBob3N0IHdpbGwgc2VuZCBhIG5ldyBjb25maWcKKwkJICogY2hh
bmdlIGludGVycnVwdCBpZiBpdCBzdGlsbCByZXF1aXJlcyBhIGxhcmdlcgorCQkgKiBiYWxsb29u
LgorCQkgKi8KIAkJVlRCQUxMT09OX0xPQ0soc2MpOwogCQlsb3dtZW0gPSBzYy0+dnRiYWxsb29u
X2ZsYWdzICYgVlRCQUxMT09OX0ZMQUdfTE9XTUVNOwotCQlzYy0+dnRiYWxsb29uX2ZsYWdzICY9
IH5WVEJBTExPT05fRkxBR19MT1dNRU07CisJCWlmIChsb3dtZW0pCisJCQlzYy0+dnRiYWxsb29u
X2ZsYWdzICY9CisJCQkgICAgfihWVEJBTExPT05fRkxBR19MT1dNRU0gfCBWVEJBTExPT05fRkxB
R19XQU5UU0laRSk7CiAJCVZUQkFMTE9PTl9VTkxPQ0soc2MpOwogCiAJCWlmIChsb3dtZW0gJiYg
c2MtPnZ0YmFsbG9vbl9jdXJyZW50X25wYWdlcyA+IDApIHsKLS0gCjIuNTMuMAoKCkZyb20gODA0
Y2YyY2UxNjU5ZmJkODI5ZTU5ZDZjZjI5NzI0OTAxYTYxNmU2ZiBNb24gU2VwIDE3IDAwOjAwOjAw
IDIwMDEKRnJvbTogWGlhbmd6aGUgPHhpYW5nemhlZGV2QGdtYWlsLmNvbT4KRGF0ZTogU2F0LCA0
IEFwciAyMDI2IDIwOjU4OjI5ICswODAwClN1YmplY3Q6IFtQQVRDSCA0LzZdIHZpcnRpb19iYWxs
b29uOiByZXBsYWNlIHVuY29uZGl0aW9uYWwgT09NIGxvZyB3aXRoIHByb3Blcgogb2JzZXJ2YWJp
bGl0eQoKVGhlIGxvdyBtZW1vcnkgZGVmbGF0aW9uIG1lc3NhZ2UgZmlyZXMgb24gZXZlcnkgdm1f
bG93bWVtIGV2ZW50LAp3aGljaCBjYW4gb2NjdXIgYXMgb2Z0ZW4gYXMgZXZlcnkgMTAgc2Vjb25k
cyB1bmRlciBzdXN0YWluZWQgbWVtb3J5CnByZXNzdXJlLiAgVGhpcyBpcyBhIG5vcm1hbCBvcGVy
YXRpb25hbCBwYXRoIC0tIG5vbmUgb2YgdGhlIG90aGVyCnZtX2xvd21lbSBoYW5kbGVycyBpbiB0
aGUga2VybmVsIHByaW50IG9uIGV2ZXJ5IGludm9jYXRpb24sIGFuZApMaW51eCdzIHZpcnRpb19i
YWxsb29uX29vbV9ub3RpZnkgaXMgYWxzbyBzaWxlbnQuCgpSZXBsYWNlIHRoZSB1bmNvbmRpdGlv
bmFsIGRldmljZV9wcmludGYgd2l0aCB0d28gbGF5ZXJzIG9mCnJ1bnRpbWUgb2JzZXJ2YWJpbGl0
eToKCiAtIHN5c2N0bCBjb3VudGVycyAoYWx3YXlzIGF2YWlsYWJsZSwgemVybyBvdmVyaGVhZCk6
CiAgIGRldi52dGJhbGxvb24uMC5sb3dtZW1fZGVmbGF0aW9ucyBhbmQgbG93bWVtX3BhZ2VzX2Zy
ZWVkIHRyYWNrCiAgIGN1bXVsYXRpdmUgT09NIGRlZmxhdGlvbiBhY3Rpdml0eS4gIEFkbWluaXN0
cmF0b3JzIGNhbiB2ZXJpZnkKICAgdGhlIGZlYXR1cmUgaXMgd29ya2luZyB3aXRob3V0IGFueSBs
b2cgb3V0cHV0LgoKIC0gUGVyLWluc3RhbmNlIGRlYnVnIHN5c2N0bCAocnVudGltZSB0b2dnbGVh
YmxlKToKICAgZGV2LnZ0YmFsbG9vbi4wLmRlYnVnPTEgcmUtZW5hYmxlcyB0aGUgZGV0YWlsZWQg
bG9nIG1lc3NhZ2UuCiAgIFVubGlrZSBib290dmVyYm9zZSB0aGlzIGNhbiBiZSB0b2dnbGVkIGF0
IHJ1bnRpbWUgd2l0aG91dCBhCiAgIHJlYm9vdCwgYW5kIG9ubHkgYWZmZWN0cyB0aGlzIGRldmlj
ZSBpbnN0YW5jZS4KClNpZ25lZC1vZmYtYnk6IFhpYW5nemhlIDx4aWFuZ3poZWRldkBnbWFpbC5j
b20+Ci0tLQogc3lzL2Rldi92aXJ0aW8vYmFsbG9vbi92aXJ0aW9fYmFsbG9vbi5jIHwgMzAgKysr
KysrKysrKysrKysrKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyks
IDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3lzL2Rldi92aXJ0aW8vYmFsbG9vbi92aXJ0
aW9fYmFsbG9vbi5jIGIvc3lzL2Rldi92aXJ0aW8vYmFsbG9vbi92aXJ0aW9fYmFsbG9vbi5jCmlu
ZGV4IDcxOTNhMmVkOS4uNTAxYzQ4MzczIDEwMDY0NAotLS0gYS9zeXMvZGV2L3ZpcnRpby9iYWxs
b29uL3ZpcnRpb19iYWxsb29uLmMKKysrIGIvc3lzL2Rldi92aXJ0aW8vYmFsbG9vbi92aXJ0aW9f
YmFsbG9vbi5jCkBAIC04Myw2ICs4Myw5IEBAIHN0cnVjdCB2dGJhbGxvb25fc29mdGMgewogCXN0
cnVjdCB0aHJlYWQJCSp2dGJhbGxvb25fdGQ7CiAJdWludDMyX3QJCSp2dGJhbGxvb25fcGFnZV9m
cmFtZXM7CiAJaW50CQkJIHZ0YmFsbG9vbl90aW1lb3V0OworCWludAkJCSB2dGJhbGxvb25fZGVi
dWc7CisJdWludDY0X3QJCSB2dGJhbGxvb25fbG93bWVtX2NvdW50OworCXVpbnQ2NF90CQkgdnRi
YWxsb29uX2xvd21lbV9wYWdlczsKIAogCWV2ZW50aGFuZGxlcl90YWcJIHZ0YmFsbG9vbl9sb3dt
ZW1fdGFnOwogfTsKQEAgLTY4MywxMSArNjg2LDE2IEBAIHZ0YmFsbG9vbl90aHJlYWQodm9pZCAq
eHNjKQogCQkJICAgIE1JTihzYy0+dnRiYWxsb29uX2N1cnJlbnRfbnBhZ2VzLAogCQkJICAgIFZU
QkFMTE9PTl9PT01fREVGTEFURV9QQUdFUyk7CiAKLQkJCWRldmljZV9wcmludGYoc2MtPnZ0YmFs
bG9vbl9kZXYsCi0JCQkgICAgImxvdyBtZW1vcnksIGRlZmxhdGluZyBiYWxsb29uIGJ5ICVkIHBh
Z2VzICIKLQkJCSAgICAiKGN1cnJlbnQ6ICVkKVxuIiwKLQkJCSAgICBzYy0+dnRiYWxsb29uX2N1
cnJlbnRfbnBhZ2VzIC0gZGVzaXJlZCwKLQkJCSAgICBzYy0+dnRiYWxsb29uX2N1cnJlbnRfbnBh
Z2VzKTsKKwkJCXNjLT52dGJhbGxvb25fbG93bWVtX2NvdW50Kys7CisJCQlzYy0+dnRiYWxsb29u
X2xvd21lbV9wYWdlcyArPQorCQkJICAgIHNjLT52dGJhbGxvb25fY3VycmVudF9ucGFnZXMgLSBk
ZXNpcmVkOworCisJCQlpZiAoX19wcmVkaWN0X2ZhbHNlKHNjLT52dGJhbGxvb25fZGVidWcgPiAw
KSkKKwkJCQlkZXZpY2VfcHJpbnRmKHNjLT52dGJhbGxvb25fZGV2LAorCQkJCSAgICAibG93IG1l
bW9yeSwgZGVmbGF0aW5nIGJhbGxvb24gYnkgIgorCQkJCSAgICAiJWQgcGFnZXMgKGN1cnJlbnQ6
ICVkKVxuIiwKKwkJCQkgICAgc2MtPnZ0YmFsbG9vbl9jdXJyZW50X25wYWdlcyAtIGRlc2lyZWQs
CisJCQkJICAgIHNjLT52dGJhbGxvb25fY3VycmVudF9ucGFnZXMpOwogCiAJCQl3aGlsZSAoc2Mt
PnZ0YmFsbG9vbl9jdXJyZW50X25wYWdlcyA+IGRlc2lyZWQpCiAJCQkJdnRiYWxsb29uX2RlZmxh
dGUoc2MsCkBAIC04NDUsNCArODUzLDE2IEBAIHZ0YmFsbG9vbl9zZXR1cF9zeXNjdGwoc3RydWN0
IHZ0YmFsbG9vbl9zb2Z0YyAqc2MpCiAJU1lTQ1RMX0FERF9VSU5UKGN0eCwgY2hpbGQsIE9JRF9B
VVRPLCAiY3VycmVudCIsCiAJICAgIENUTEZMQUdfUkQsICZzYy0+dnRiYWxsb29uX2N1cnJlbnRf
bnBhZ2VzLCBzaXplb2YodWludDMyX3QpLAogCSAgICAiQ3VycmVudCBiYWxsb29uIHNpemUgaW4g
cGFnZXMiKTsKKworCVNZU0NUTF9BRERfSU5UKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAiZGVidWci
LAorCSAgICBDVExGTEFHX1JXVFVOLCAmc2MtPnZ0YmFsbG9vbl9kZWJ1ZywgMCwKKwkgICAgIkRl
YnVnIGxldmVsIik7CisKKwlTWVNDVExfQUREX1VRVUFEKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAi
bG93bWVtX2RlZmxhdGlvbnMiLAorCSAgICBDVExGTEFHX1JELCAmc2MtPnZ0YmFsbG9vbl9sb3dt
ZW1fY291bnQsCisJICAgICJOdW1iZXIgb2YgbG93bWVtIGRlZmxhdGlvbiBldmVudHMiKTsKKwor
CVNZU0NUTF9BRERfVVFVQUQoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJsb3dtZW1fcGFnZXNfZnJl
ZWQiLAorCSAgICBDVExGTEFHX1JELCAmc2MtPnZ0YmFsbG9vbl9sb3dtZW1fcGFnZXMsCisJICAg
ICJUb3RhbCBwYWdlcyBmcmVlZCBieSBsb3dtZW0gZGVmbGF0aW9uIik7CiB9Ci0tIAoyLjUzLjAK
CgpGcm9tIDBmNjc0M2M3MTIzOWNjNjJhZjk2ZDAyYWZjZWRmOTllZTIwNmE5Y2MgTW9uIFNlcCAx
NyAwMDowMDowMCAyMDAxCkZyb206IFhpYW5nemhlIDx4aWFuZ3poZWRldkBnbWFpbC5jb20+CkRh
dGU6IFN1biwgNSBBcHIgMjAyNiAyMzozOTo1NiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggNS82XSB2
aXJ0aW9fYmFsbG9vbjogaW1wcm92ZSBTX0FWQUlMIHRvIG1hdGNoIHZpcnRpbyBzcGVjCiBhdmFp
bGFibGUgbWVtb3J5IHNlbWFudGljcwoKVGhlIHZpcnRpbyBzcGVjIGRlZmluZXMgVklSVElPX0JB
TExPT05fU19BVkFJTCBhcyAiYW4gZXN0aW1hdGUgb2YgaG93Cm11Y2ggbWVtb3J5IGlzIGF2YWls
YWJsZSBmb3Igc3RhcnRpbmcgbmV3IGFwcGxpY2F0aW9ucywgd2l0aG91dCBwdXNoaW5nCnRoZSBz
eXN0ZW0gdG8gc3dhcC4iCgpUaGUgcHJldmlvdXMgY2FsY3VsYXRpb24gKGZyZWUgKyBpbmFjdGl2
ZSkgb3ZlcnN0YXRlZCBhdmFpbGFiaWxpdHkgYnkKaWdub3Jpbmcga2VybmVsIHJlc2VydmVzIGFu
ZCBhc3N1bWluZyBhbGwgaW5hY3RpdmUgcGFnZXMgYXJlIGluc3RhbnRseQpyZWNsYWltYWJsZS4g
IFRoaXMgY2F1c2VkIGh5cGVydmlzb3JzIGxpa2UgUHJveG1veCB0byBtYWtlIHN1Ym9wdGltYWwK
YmFsbG9vbmluZyBkZWNpc2lvbnMuCgpSZXBsYWNlIGl0IHdpdGggdnRiYWxsb29uX21lbV9hdmFp
bGFibGUoKSwgYSBGcmVlQlNEIGFuYWxvZ3VlIG9mCkxpbnV4J3Mgc2lfbWVtX2F2YWlsYWJsZSgp
OgoKIC0gU3RhcnQgd2l0aCBmcmVlIHBhZ2VzLCBzdWJ0cmFjdCB2X2ZyZWVfcmVzZXJ2ZWQgKGRl
YWRsb2NrIHJlc2VydmUpLgogLSBBZGQgaW5hY3RpdmUgcGFnZXMgd2l0aCBhIGNvbnNlcnZhdGl2
ZSBoYWx2aW5nIGRpc2NvdW50IChjYXBwZWQgYnkKICAgdl9mcmVlX21pbikgdG8gYWNjb3VudCBm
b3IgdGhyYXNoaW5nIGF2b2lkYW5jZS4KIC0gQWRkIGxhdW5kcnkgcGFnZXMgKGRpcnR5IGNhY2hl
IGF3YWl0aW5nIHdyaXRlYmFjaykgd2l0aCB0aGUgc2FtZQogICBkaXNjb3VudC4gIHZtX2xhdW5k
cnlfY291bnQoKSBpbmNsdWRlcyBQUV9VTlNXQVBQQUJMRSBwYWdlcyBidXQKICAgdGhpcyBpcyB6
ZXJvIG9uIHN5c3RlbXMgd2l0aCBzd2FwIGNvbmZpZ3VyZWQuCgpNRU1GUkVFIGFuZCBDQUNIRVMg
YXJlIHVuY2hhbmdlZDsgdGhlaXIgY3VycmVudCBpbXBsZW1lbnRhdGlvbnMKYWxyZWFkeSBtYXRj
aCB0aGUgc3BlYyBkZWZpbml0aW9ucy4KClNpZ25lZC1vZmYtYnk6IFhpYW5nemhlIDx4aWFuZ3po
ZWRldkBnbWFpbC5jb20+Ci0tLQogc3lzL2Rldi92aXJ0aW8vYmFsbG9vbi92aXJ0aW9fYmFsbG9v
bi5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDQ4IGlu
c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zeXMvZGV2L3ZpcnRpby9i
YWxsb29uL3ZpcnRpb19iYWxsb29uLmMgYi9zeXMvZGV2L3ZpcnRpby9iYWxsb29uL3ZpcnRpb19i
YWxsb29uLmMKaW5kZXggNTAxYzQ4MzczLi4xOWRjZDM1YWYgMTAwNjQ0Ci0tLSBhL3N5cy9kZXYv
dmlydGlvL2JhbGxvb24vdmlydGlvX2JhbGxvb24uYworKysgYi9zeXMvZGV2L3ZpcnRpby9iYWxs
b29uL3ZpcnRpb19iYWxsb29uLmMKQEAgLTcyMSw2ICs3MjEsNTMgQEAgdnRiYWxsb29uX3RocmVh
ZCh2b2lkICp4c2MpCiAJa3RocmVhZF9leGl0KCk7CiB9CiAKKy8qCisgKiBFc3RpbWF0ZSB0aGUg
YW1vdW50IG9mIG1lbW9yeSBhdmFpbGFibGUgZm9yIHN0YXJ0aW5nIG5ldworICogYXBwbGljYXRp
b25zIHdpdGhvdXQgcHVzaGluZyB0aGUgc3lzdGVtIHRvIHN3YXAuICBUaGlzIGlzCisgKiB0aGUg
RnJlZUJTRCBlcXVpdmFsZW50IG9mIExpbnV4J3Mgc2lfbWVtX2F2YWlsYWJsZSgpLgorICoKKyAq
IFRoZSB2aXJ0aW8gc3BlYyBkZWZpbmVzIFZJUlRJT19CQUxMT09OX1NfQVZBSUwgYXM6CisgKiAg
ICJBbiBlc3RpbWF0ZSBvZiBob3cgbXVjaCBtZW1vcnkgaXMgYXZhaWxhYmxlIChpbiBieXRlcykK
KyAqICAgIGZvciBzdGFydGluZyBuZXcgYXBwbGljYXRpb25zLCB3aXRob3V0IHB1c2hpbmcgdGhl
IHN5c3RlbQorICogICAgdG8gc3dhcC4iCisgKgorICogQSBzaW1wbGUgZnJlZStpbmFjdGl2ZSBz
dW0gb3ZlcnN0YXRlcyBhdmFpbGFiaWxpdHkgYmVjYXVzZSBpdAorICogaWdub3JlcyBrZXJuZWwg
cmVzZXJ2ZXMgYW5kIGFzc3VtZXMgYWxsIGluYWN0aXZlIHBhZ2VzIGFyZQorICogcmVjbGFpbWFi
bGUuICBJbnN0ZWFkLCB3ZToKKyAqICAgMS4gU3RhcnQgd2l0aCBmcmVlIHBhZ2VzLCBzdWJ0cmFj
dGluZyB0aGUgZGVhZGxvY2sgcmVzZXJ2ZS4KKyAqICAgMi4gQWRkIHJlY2xhaW1hYmxlIGluYWN0
aXZlIHBhZ2VzIChjb25zZXJ2YXRpdmVseSBoYWx2ZWQgdG8KKyAqICAgICAgYXZvaWQgdGhyYXNo
aW5nLCBjYXBwZWQgYnkgdGhlIGZyZWUtcGFnZXMgbG93IHdhdGVybWFyaykuCisgKiAgIDMuIEFk
ZCBsYXVuZHJ5IHBhZ2VzIChkaXJ0eSBjYWNoZSBhd2FpdGluZyB3cml0ZWJhY2spIHdpdGgKKyAq
ICAgICAgdGhlIHNhbWUgY29uc2VydmF0aXZlIGRpc2NvdW50LgorICovCitzdGF0aWMgdWludDY0
X3QKK3Z0YmFsbG9vbl9tZW1fYXZhaWxhYmxlKHZvaWQpCit7CisJbG9uZyBhdmFpbGFibGU7CisJ
dW5zaWduZWQgbG9uZyByZWNsYWltYWJsZTsKKworCWF2YWlsYWJsZSA9IChsb25nKXZtX2ZyZWVf
Y291bnQoKSAtIHZtX2NudC52X2ZyZWVfcmVzZXJ2ZWQ7CisKKwlyZWNsYWltYWJsZSA9IHZtX2lu
YWN0aXZlX2NvdW50KCk7CisJcmVjbGFpbWFibGUgLT0gbWluKHJlY2xhaW1hYmxlIC8gMiwgKHVu
c2lnbmVkIGxvbmcpdm1fY250LnZfZnJlZV9taW4pOworCWF2YWlsYWJsZSArPSByZWNsYWltYWJs
ZTsKKworCS8qCisJICogdm1fbGF1bmRyeV9jb3VudCgpIGluY2x1ZGVzIFBRX1VOU1dBUFBBQkxF
IHBhZ2VzIChkaXJ0eQorCSAqIGFub255bW91cyBwYWdlcyB3aXRoIG5vIHN3YXAgZGV2aWNlKS4g
IE9uIHN5c3RlbXMgd2l0aAorCSAqIHN3YXAgY29uZmlndXJlZCB0aGlzIGNvdW50IGlzIHplcm87
IG9uIHN5c3RlbXMgd2l0aG91dAorCSAqIHN3YXAgaXQgY2F1c2VzIGEgbWlub3Igb3ZlcmVzdGlt
YXRlIHRoYXQgaXMgYWNjZXB0YWJsZQorCSAqIGZvciBhIGJlc3QtZWZmb3J0IGF2YWlsYWJpbGl0
eSBtZXRyaWMuCisJICovCisJcmVjbGFpbWFibGUgPSB2bV9sYXVuZHJ5X2NvdW50KCk7CisJcmVj
bGFpbWFibGUgLT0gbWluKHJlY2xhaW1hYmxlIC8gMiwgKHVuc2lnbmVkIGxvbmcpdm1fY250LnZf
ZnJlZV9taW4pOworCWF2YWlsYWJsZSArPSByZWNsYWltYWJsZTsKKworCWlmIChhdmFpbGFibGUg
PCAwKQorCQlhdmFpbGFibGUgPSAwOworCXJldHVybiAoKHVpbnQ2NF90KWF2YWlsYWJsZSAqIFBB
R0VfU0laRSk7Cit9CisKIHN0YXRpYyBpbnQKIHZ0YmFsbG9vbl91cGRhdGVfc3RhdHMoc3RydWN0
IHZ0YmFsbG9vbl9zb2Z0YyAqc2MpCiB7CkBAIC03NDMsNyArNzkwLDcgQEAgdnRiYWxsb29uX3Vw
ZGF0ZV9zdGF0cyhzdHJ1Y3QgdnRiYWxsb29uX3NvZnRjICpzYykKIAlWVEJBTExPT05fU0VUX1NU
QVQoVklSVElPX0JBTExPT05fU19NRU1GUkVFLAogCSAgICAodWludDY0X3Qpdm1fZnJlZV9jb3Vu
dCgpICogUEFHRV9TSVpFKTsKIAlWVEJBTExPT05fU0VUX1NUQVQoVklSVElPX0JBTExPT05fU19B
VkFJTCwKLQkgICAgKCh1aW50NjRfdCl2bV9mcmVlX2NvdW50KCkgKyB2bV9pbmFjdGl2ZV9jb3Vu
dCgpKSAqIFBBR0VfU0laRSk7CisJICAgIHZ0YmFsbG9vbl9tZW1fYXZhaWxhYmxlKCkpOwogCVZU
QkFMTE9PTl9TRVRfU1RBVChWSVJUSU9fQkFMTE9PTl9TX1NXQVBfSU4sCiAJICAgIFZNX0NOVF9G
RVRDSCh2X3N3YXBwZ3NpbikgKiBQQUdFX1NJWkUpOwogCVZUQkFMTE9PTl9TRVRfU1RBVChWSVJU
SU9fQkFMTE9PTl9TX1NXQVBfT1VULAotLSAKMi41My4wCgoKRnJvbSA4MzkwNjYyZGI3MmM1MDFm
YmNhYjllM2NkNjcyOGY5ZWZiZTI0OTg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBY
aWFuZ3poZSA8eGlhbmd6aGVkZXZAZ21haWwuY29tPgpEYXRlOiBNb24sIDEzIEFwciAyMDI2IDEz
OjExOjU5ICswODAwClN1YmplY3Q6IFtQQVRDSCA2LzZdIHZpcnRpb19iYWxsb29uOiByZS1lbmFi
bGUgcXVldWUgaW50ZXJydXB0cyBhZnRlciBzeW5jIG9wcwoKUmUtYXJtIHRoZSBpbmZsYXRlIGFu
ZCBkZWZsYXRlIHZpcnRxdWV1ZSBpbnRlcnJ1cHRzIGFmdGVyIHN5bmNocm9ub3VzbHkKZGVxdWV1
aW5nIHRoZSByZXNwb25zZSBzbyBsYXRlciBiYXRjaGVzIGFyZSBkcml2ZW4gYnkgdGhlaXIgb3du
IGNvbXBsZXRpb25zCmluc3RlYWQgb2YgdW5yZWxhdGVkIHN0YXRzIGFjdGl2aXR5LgoKU2lnbmVk
LW9mZi1ieTogWGlhbmd6aGUgPHhpYW5nemhlZGV2QGdtYWlsLmNvbT4KLS0tCiBzeXMvZGV2L3Zp
cnRpby9iYWxsb29uL3ZpcnRpb19iYWxsb29uLmMgfCAxICsKIDEgZmlsZSBjaGFuZ2VkLCAxIGlu
c2VydGlvbigrKQoKZGlmZiAtLWdpdCBhL3N5cy9kZXYvdmlydGlvL2JhbGxvb24vdmlydGlvX2Jh
bGxvb24uYyBiL3N5cy9kZXYvdmlydGlvL2JhbGxvb24vdmlydGlvX2JhbGxvb24uYwppbmRleCAx
OWRjZDM1YWYuLmU1ZTdhMzY2ZCAxMDA2NDQKLS0tIGEvc3lzL2Rldi92aXJ0aW8vYmFsbG9vbi92
aXJ0aW9fYmFsbG9vbi5jCisrKyBiL3N5cy9kZXYvdmlydGlvL2JhbGxvb24vdmlydGlvX2JhbGxv
b24uYwpAQCAtNTA2LDYgKzUwNiw3IEBAIHZ0YmFsbG9vbl9zZW5kX3BhZ2VfZnJhbWVzKHN0cnVj
dCB2dGJhbGxvb25fc29mdGMgKnNjLCBzdHJ1Y3QgdmlydHF1ZXVlICp2cSwKIAlWVEJBTExPT05f
TE9DSyhzYyk7CiAJd2hpbGUgKChjID0gdmlydHF1ZXVlX2RlcXVldWUodnEsIE5VTEwpKSA9PSBO
VUxMKQogCQltc2xlZXAoc2MsIFZUQkFMTE9PTl9NVFgoc2MpLCAwLCAidnRic3BmIiwgMCk7CisJ
dmlydHF1ZXVlX2VuYWJsZV9pbnRyKHZxKTsKIAlWVEJBTExPT05fVU5MT0NLKHNjKTsKIAogCUtB
U1NFUlQoYyA9PSB2cSwgKCJ1bmV4cGVjdGVkIGJhbGxvb24gb3BlcmF0aW9uIHJlc3BvbnNlIikp
OwotLSAKMi41My4wCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>