Re: [RFC/CFT] cmd640 irqlocking fixes

Andre Hedrick (andre@linux-ide.org)
Thu, 25 Jul 2002 05:05:38 -0700 (PDT)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--1430322656-1932894290-1027598738=:4719
Content-Type: text/plain; charset=us-ascii

Alan,

You are partially correct; however, I can show earlier evolutions an
fragments about the locking changes but that should not be needed.

original AC cmd640.c.patch

quickest I could find that pre-dates your changes to cmd640.c
ide.2.4.19-p4.spin.03302002.patch

This will fix about 80% of the mess in 2.5 too but the rest is a goat
screw because it violates the NDA erratiums about the hardware.

Cheers,

Andre Hedrick
LAD Storage Consulting Group

On 25 Jul 2002, Alan Cox wrote:

> On Thu, 2002-07-25 at 11:51, Andre Hedrick wrote:
> > I am sorry Alan, but I fixed all of the locking code in 2.4 a long time
> > ago, and you adopted it somewhere around this patch.
>
> Andre - the PCI probe fixes which this is about is something I wrote.
> The other locking stuff which is unrelated to this discussion is your
> code but thats not Im talking about - OK.
>
> > Again I have to call this patch and fix and take credit and full ownership
> > of removing all the save/cli/sti/restore which littered the driver and
> > were spread like cow patties through a chopper gun.
>
> That patch is wrong by the way because I made a mistake in 2.4. Your PCI
> config locking should be using pci_config lock not io_request. I'll fix
> the 2.4 tree in a bit now I've tidied up the 2.5 version.
>
> > @@ -748,10 +737,8 @@
> > bus_type = "VLB";
> > } else {
> > cmd640_vlb = 0;
> > - /*
> > - * Don't leak I/O cycles on the PCI bus by blindly attempting
> > - * a configuration cycle type that is not supported by the hardware.
> > - */
> > + /* Find out what kind of PCI probing is supported otherwise
> > + Justin Gibbs will sulk.. */
>
>
> Just ask Justin Gibbs. He didn't like my comment 8) Im sure he remembers
> who wrote it 8)
>
>
>

--1430322656-1932894290-1027598738=:4719
Content-Type: text/plain; charset=us-ascii; name="cmd640.c.patch"
Content-Transfer-Encoding: base64
Content-ID: <Pine.LNX.4.10.10207250505380.4719@master.linux-ide.org>
Content-Description:
Content-Disposition: attachment; filename="cmd640.c.patch"

LS0tIGxpbnV4LTIuNC4xOS1wNS9kcml2ZXJzL2lkZS9jbWQ2NDAuYwlGcmkg
RmViIDE2IDE2OjAyOjM2IDIwMDENCisrKyBsaW51eC0yLjQuMTktcDUtYWMy
L2RyaXZlcnMvaWRlL2NtZDY0MC5jCVRodSBBcHIgIDQgMjM6MTU6NTIgMjAw
Mg0KQEAgLTY5Miw2ICs2OTIsNDQgQEANCiANCiAjZW5kaWYgLyogQ09ORklH
X0JMS19ERVZfQ01ENjQwX0VOSEFOQ0VEICovDQogDQorc3RhdGljIGludCBw
Y2lfY29uZjEodm9pZCkNCit7DQorCXUzMiB0bXA7DQorCXVuc2lnbmVkIGxv
bmcgZmxhZ3M7DQorDQorCXNhdmVfZmxhZ3MoZmxhZ3MpOw0KKwlfX2NsaSgp
Ow0KKwlvdXRiKDB4MDEsIDB4Q0ZCKTsNCisJdG1wID0gaW5sKDB4Q0Y4KTsN
CisJb3V0bCgweDgwMDAwMDAwLCAweENGOCk7DQorCWlmKGlubCgweENGOCkg
PT0gMHg4MDAwMDAwMCkNCisJew0KKwkJb3V0bCh0bXAsIDB4Q0Y4KTsNCisJ
CV9fcmVzdG9yZV9mbGFncyhmbGFncyk7DQorCQlyZXR1cm4gMTsNCisJfQ0K
KwlvdXRsKHRtcCwgMHhDRjgpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3Rh
dGljIGludCBwY2lfY29uZjIodm9pZCkNCit7DQorCXVuc2lnbmVkIGxvbmcg
ZmxhZ3M7DQorDQorCXNhdmVfZmxhZ3MoZmxhZ3MpOw0KKwlfX2NsaSgpOw0K
KwlvdXRiKDB4MDAsIDB4Q0ZCKTsNCisJb3V0YigweDAwLCAweENGOCk7DQor
CW91dGIoMHgwMCwgMHhDRkEpOw0KKwlpZihpbmIoMHhDRjgpID09IDB4MDAg
JiYgaW5iKDB4Q0Y4KSA9PSAweDAwKQ0KKwl7DQorCQlyZXN0b3JlX2ZsYWdz
KGZsYWdzKTsNCisJCXJldHVybiAxOw0KKwl9DQorCXJlc3RvcmVfZmxhZ3Mo
ZmxhZ3MpOw0KKwlyZXR1cm4gMDsNCit9DQorDQogLyoNCiAgKiBQcm9iZSBm
b3IgYSBjbWQ2NDAgY2hpcHNldCwgYW5kIGluaXRpYWxpemUgaXQgaWYgZm91
bmQuICBDYWxsZWQgZnJvbSBpZGUuYw0KICAqLw0KQEAgLTcwOSw5ICs3NDcs
MTEgQEANCiAJCWJ1c190eXBlID0gIlZMQiI7DQogCX0gZWxzZSB7DQogCQlj
bWQ2NDBfdmxiID0gMDsNCi0JCWlmIChwcm9iZV9mb3JfY21kNjQwX3BjaTEo
KSkNCisJCS8qIEZpbmQgb3V0IHdoYXQga2luZCBvZiBQQ0kgcHJvYmluZyBp
cyBzdXBwb3J0ZWQgb3RoZXJ3aXNlDQorCQkgICBKdXN0aW4gR2liYnMgd2ls
bCBzdWxrLi4gKi8NCisJCWlmIChwY2lfY29uZjEoKSAmJiBwcm9iZV9mb3Jf
Y21kNjQwX3BjaTEoKSkNCiAJCQlidXNfdHlwZSA9ICJQQ0kgKHR5cGUxKSI7
DQotCQllbHNlIGlmIChwcm9iZV9mb3JfY21kNjQwX3BjaTIoKSkNCisJCWVs
c2UgaWYgKHBjaV9jb25mMigpICYmIHByb2JlX2Zvcl9jbWQ2NDBfcGNpMigp
KQ0KIAkJCWJ1c190eXBlID0gIlBDSSAodHlwZTIpIjsNCiAJCWVsc2UNCiAJ
CQlyZXR1cm4gMDsNCg==
--1430322656-1932894290-1027598738=:4719
Content-Type: text/plain; charset=us-ascii; name="ide.2.4.19-p4.spin.03302002.patch"
Content-Transfer-Encoding: base64
Content-ID: <Pine.LNX.4.10.10207250505381.4719@master.linux-ide.org>
Content-Description:
Content-Disposition: attachment; filename="ide.2.4.19-p4.spin.03302002.patch"

ZGlmZiAtdXJOIGxpbnV4LTIuNC4xOS1wNC9kcml2ZXJzL2lkZS9hbGkxNHh4
LmMgbGludXgtMi40LjE5LXA0LnNwaW4vZHJpdmVycy9pZGUvYWxpMTR4eC5j
DQotLS0gbGludXgtMi40LjE5LXA0L2RyaXZlcnMvaWRlL2FsaTE0eHguYwlT
dW4gSnVsIDE1IDE2OjIyOjIzIDIwMDENCisrKyBsaW51eC0yLjQuMTktcDQu
c3Bpbi9kcml2ZXJzL2lkZS9hbGkxNHh4LmMJV2VkIE1hciAyNyAyMjowODo1
MyAyMDAyDQpAQCAtMTM3LDE1ICsxMzcsMTQgQEANCiANCiAJLyogc3R1ZmYg
dGltaW5nIHBhcmFtZXRlcnMgaW50byBjb250cm9sbGVyIHJlZ2lzdGVycyAq
Lw0KIAlkcml2ZU51bSA9IChIV0lGKGRyaXZlKS0+aW5kZXggPDwgMSkgKyBk
cml2ZS0+c2VsZWN0LmIudW5pdDsNCi0Jc2F2ZV9mbGFncyhmbGFncyk7CS8q
IGFsbCBDUFVzICovDQotCWNsaSgpOwkJCS8qIGFsbCBDUFVzICovDQorCXNw
aW5fbG9ja19pcnFzYXZlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsNCiAJ
b3V0Yl9wKHJlZ09uLCBiYXNlUG9ydCk7DQogCW91dFJlZyhwYXJhbTEsIHJl
Z1RhYltkcml2ZU51bV0ucmVnMSk7DQogCW91dFJlZyhwYXJhbTIsIHJlZ1Rh
Yltkcml2ZU51bV0ucmVnMik7DQogCW91dFJlZyhwYXJhbTMsIHJlZ1RhYltk
cml2ZU51bV0ucmVnMyk7DQogCW91dFJlZyhwYXJhbTQsIHJlZ1RhYltkcml2
ZU51bV0ucmVnNCk7DQogCW91dGJfcChyZWdPZmYsIGJhc2VQb3J0KTsNCi0J
cmVzdG9yZV9mbGFncyhmbGFncyk7CS8qIGFsbCBDUFVzICovDQorCXNwaW5f
dW5sb2NrX2lycXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0K
IH0NCiANCiAvKg0KQEAgLTE1Nyw4ICsxNTYsOCBAQA0KIAlieXRlIHQ7DQog
CXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQogDQotCV9fc2F2ZV9mbGFncyhmbGFn
cyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQotCV9fY2xpKCk7CQkvKiBsb2Nh
bCBDUFUgb25seSAqLw0KKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CS8qIGxv
Y2FsIENQVSBvbmx5ICovDQorCWxvY2FsX2lycV9kaXNhYmxlKCk7CS8qIGxv
Y2FsIENQVSBvbmx5ICovDQogCWZvciAoaSA9IDA7IGkgPCBBTElfTlVNX1BP
UlRTOyArK2kpIHsNCiAJCWJhc2VQb3J0ID0gcG9ydHNbaV07DQogCQlyZWdP
ZmYgPSBpbmIoYmFzZVBvcnQpOw0KQEAgLTE2OSw3ICsxNjgsNyBAQA0KIAkJ
CQlkYXRhUG9ydCA9IGJhc2VQb3J0ICsgODsNCiAJCQkJdCA9IGluUmVnKDAp
ICYgMHhmMDsNCiAJCQkJb3V0Yl9wKHJlZ09mZiwgYmFzZVBvcnQpOw0KLQkJ
CQlfX3Jlc3RvcmVfZmxhZ3MoZmxhZ3MpOwkvKiBsb2NhbCBDUFUgb25seSAq
Lw0KKwkJCQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CS8qIGxvY2FsIENQ
VSBvbmx5ICovDQogCQkJCWlmICh0ICE9IDB4NTApDQogCQkJCQlyZXR1cm4g
MDsNCiAJCQkJcmV0dXJuIDE7ICAvKiBzdWNjZXNzICovDQpAQCAtMTc3LDcg
KzE3Niw3IEBADQogCQl9DQogCQlvdXRiX3AocmVnT2ZmLCBiYXNlUG9ydCk7
DQogCX0NCi0JX19yZXN0b3JlX2ZsYWdzKGZsYWdzKTsJLyogbG9jYWwgQ1BV
IG9ubHkgKi8NCisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwkvKiBsb2Nh
bCBDUFUgb25seSAqLw0KIAlyZXR1cm4gMDsNCiB9DQogDQpAQCAtMTg5LDE1
ICsxODgsMTUgQEANCiAJYnl0ZSB0Ow0KIAl1bnNpZ25lZCBsb25nIGZsYWdz
Ow0KIA0KLQlfX3NhdmVfZmxhZ3MoZmxhZ3MpOwkvKiBsb2NhbCBDUFUgb25s
eSAqLw0KLQlfX2NsaSgpOwkJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCisJbG9j
YWxfaXJxX3NhdmUoZmxhZ3MpOwkJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCisJ
bG9jYWxfaXJxX2Rpc2FibGUoKTsJCS8qIGxvY2FsIENQVSBvbmx5ICovDQog
CW91dGJfcChyZWdPbiwgYmFzZVBvcnQpOw0KIAlmb3IgKHAgPSBpbml0RGF0
YTsgcC0+cmVnICE9IDA7ICsrcCkNCiAJCW91dFJlZyhwLT5kYXRhLCBwLT5y
ZWcpOw0KIAlvdXRiX3AoMHgwMSwgcmVnUG9ydCk7DQogCXQgPSBpbmIocmVn
UG9ydCkgJiAweDAxOw0KIAlvdXRiX3AocmVnT2ZmLCBiYXNlUG9ydCk7DQot
CV9fcmVzdG9yZV9mbGFncyhmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICov
DQorCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsJLyogbG9jYWwgQ1BVIG9u
bHkgKi8NCiAJcmV0dXJuIHQ7DQogfQ0KIA0KZGlmZiAtdXJOIGxpbnV4LTIu
NC4xOS1wNC9kcml2ZXJzL2lkZS9hbGltMTV4My5jIGxpbnV4LTIuNC4xOS1w
NC5zcGluL2RyaXZlcnMvaWRlL2FsaW0xNXgzLmMNCi0tLSBsaW51eC0yLjQu
MTktcDQvZHJpdmVycy9pZGUvYWxpbTE1eDMuYwlGcmkgTWFyIDI5IDE0OjQ3
OjA5IDIwMDINCisrKyBsaW51eC0yLjQuMTktcDQuc3Bpbi9kcml2ZXJzL2lk
ZS9hbGltMTV4My5jCUZyaSBNYXIgMjkgMTQ6NDg6MzYgMjAwMg0KQEAgLTI3
Miw5ICsyNzIsOSBAQA0KIAkJaWYgKHJfY2xjID49IDE2KQ0KIAkJCXJfY2xj
ID0gMDsNCiAJfQ0KLQlfX3NhdmVfZmxhZ3MoZmxhZ3MpOw0KLQlfX2NsaSgp
Ow0KLQkNCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwkvKiBsb2NhbCBDUFUg
b25seSAqLw0KKwlsb2NhbF9pcnFfZGlzYWJsZSgpOwkvKiBsb2NhbCBDUFUg
b25seSAqLw0KKw0KIAkvKiANCiAJICogUElPIG1vZGUgPT4gQVRBIEZJRk8g
b24sIEFUQVBJIEZJRk8gb2ZmDQogCSAqLw0KQEAgLTI5NSw3ICsyOTUsNyBA
QA0KIAkNCiAJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgcG9ydCwgc19j
bGMpOw0KIAlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCBwb3J0K2RyaXZl
LT5zZWxlY3QuYi51bml0KzIsIChhX2NsYyA8PCA0KSB8IHJfY2xjKTsNCi0J
X19yZXN0b3JlX2ZsYWdzKGZsYWdzKTsNCisJbG9jYWxfaXJxX3Jlc3RvcmUo
ZmxhZ3MpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0KIA0KIAkvKg0KIAkgKiBz
ZXR1cCAgIGFjdGl2ZSAgcmVjDQpAQCAtNDQxLDcgKzQ0MSw3IEBADQogCWlk
ZV9od2lmX3QgKmh3aWYJCT0gSFdJRihkcml2ZSk7DQogCWlkZV9kbWFfYWN0
aW9uX3QgZG1hX2Z1bmMJPSBpZGVfZG1hX29uOw0KIAlieXRlIGNhbl91bHRy
YV9kbWEJCT0gYWxpMTV4M19jYW5fdWx0cmEoZHJpdmUpOw0KLQkNCisNCiAJ
aWYgKChtNTIyOV9yZXZpc2lvbjw9MHgyMCkgJiYgKGRyaXZlLT5tZWRpYSE9
aWRlX2Rpc2spKQ0KIAkJcmV0dXJuIGh3aWYtPmRtYXByb2MoaWRlX2RtYV9v
ZmZfcXVpZXRseSwgZHJpdmUpOw0KIA0KQEAgLTUwNywxNyArNTA3LDEwIEBA
DQogfQ0KICNlbmRpZiAvKiBDT05GSUdfQkxLX0RFVl9JREVETUEgKi8NCiAN
Ci0jZGVmaW5lIEFMSV9JTklUX0NPREVfVEVTVA0KLQ0KIHVuc2lnbmVkIGlu
dCBfX2luaXQgcGNpX2luaXRfYWxpMTV4MyAoc3RydWN0IHBjaV9kZXYgKmRl
diwgY29uc3QgY2hhciAqbmFtZSkNCiB7DQogCXVuc2lnbmVkIGxvbmcgZml4
ZG1hX2Jhc2UgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LCA0KTsNCiANCi0j
aWZkZWYgQUxJX0lOSVRfQ09ERV9URVNUDQotCXVuc2lnbmVkIGxvbmcgZmxh
Z3M7DQotCWJ5dGUgdG1wYnl0ZTsNCi0jZW5kaWYgLyogQUxJX0lOSVRfQ09E
RV9URVNUICovDQotDQogCXBjaV9yZWFkX2NvbmZpZ19ieXRlKGRldiwgUENJ
X1JFVklTSU9OX0lELCAmbTUyMjlfcmV2aXNpb24pOw0KIA0KIAlpc2FfZGV2
ID0gcGNpX2ZpbmRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQUwsIFBDSV9ERVZJ
Q0VfSURfQUxfTTE1MzMsIE5VTEwpOw0KQEAgLTU0NCw1NiArNTM3LDYgQEAN
CiAJfQ0KICNlbmRpZiAgLyogZGVmaW5lZChESVNQTEFZX0FMSV9USU1JTkdT
KSAmJiBkZWZpbmVkKENPTkZJR19QUk9DX0ZTKSAqLw0KIA0KLSNpZmRlZiBB
TElfSU5JVF9DT0RFX1RFU1QNCi0JX19zYXZlX2ZsYWdzKGZsYWdzKTsNCi0J
X19jbGkoKTsNCi0NCi0JaWYgKG01MjI5X3JldmlzaW9uID49IDB4QzIpIHsN
Ci0JCS8qDQotCQkgKiAxNTQzQy1CPywgMTUzNSwgMTUzNUQsIDE1NTMNCi0J
CSAqIE5vdGUgMTogbm90IGFsbCAibW90aGVyYm9hcmQiIHN1cHBvcnQgdGhp
cyBkZXRlY3Rpb24NCi0JCSAqIE5vdGUgMjogaWYgbm8gdWRtYSA2NiBkZXZp
Y2UsIHRoZSBkZXRlY3Rpb24gbWF5ICJlcnJvciIuDQotCQkgKiAgICAgICAg
IGJ1dCBpbiB0aGlzIGNhc2UsIHdlIHdpbGwgbm90IHNldCB0aGUgZGV2aWNl
IHRvDQotCQkgKiAgICAgICAgIHVsdHJhIDY2LCB0aGUgZGV0ZWN0aW9uIHJl
c3VsdCBpcyBub3QgaW1wb3J0YW50DQotCQkgKi8NCi0NCi0JCS8qDQotCQkg
KiBlbmFibGUgIkNhYmxlIERldGVjdGlvbiIsIG01MjI5LCAweDRiLCBiaXQz
DQotCQkgKi8NCi0JCXBjaV9yZWFkX2NvbmZpZ19ieXRlKGRldiwgMHg0Yiwg
JnRtcGJ5dGUpOw0KLQkJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgMHg0
YiwgdG1wYnl0ZSB8IDB4MDgpOw0KLQ0KLQkJLyoNCi0JCSAqIHNldCBzb3V0
aC1icmlkZ2UncyBlbmFibGUgYml0LCBtMTUzMywgMHg3OQ0KLQkJICovDQot
CQlwY2lfcmVhZF9jb25maWdfYnl0ZShpc2FfZGV2LCAweDc5LCAmdG1wYnl0
ZSk7DQotCQlpZiAobTUyMjlfcmV2aXNpb24gPT0gMHhDMikgew0KLQkJCS8q
DQotCQkJICogMTU0M0MtQjAgKG0xNTMzLCAweDc5LCBiaXQgMikNCi0JCQkg
Ki8NCi0JCQlwY2lfd3JpdGVfY29uZmlnX2J5dGUoaXNhX2RldiwgMHg3OSwg
dG1wYnl0ZSB8IDB4MDQpOw0KLQkJfSBlbHNlIGlmIChtNTIyOV9yZXZpc2lv
biA+PSAweEMzKSB7DQotCQkJLyoNCi0JCQkgKiAxNTUzLzE1MzUgKG0xNTMz
LCAweDc5LCBiaXQgMSkNCi0JCQkgKi8NCi0JCQlwY2lfd3JpdGVfY29uZmln
X2J5dGUoaXNhX2RldiwgMHg3OSwgdG1wYnl0ZSB8IDB4MDIpOw0KLQkJfQ0K
LQl9IGVsc2Ugew0KLQkJLyoNCi0JCSAqIHJldmlzaW9uIDB4MjAgKDE1NDMt
RSwgMTU0My1GKQ0KLQkJICogcmV2aXNpb24gMHhDMCwgMHhDMSAoMTU0M0Mt
QywgMTU0M0MtRCwgMTU0M0MtRSkNCi0JCSAqIGNsZWFyIENELVJPTSBETUEg
d3JpdGUgYml0LCBtNTIyOSwgMHg0YiwgYml0IDcNCi0JCSAqLw0KLQkJcGNp
X3JlYWRfY29uZmlnX2J5dGUoZGV2LCAweDRiLCAmdG1wYnl0ZSk7DQotCQkv
Kg0KLQkJICogY2xlYXIgYml0IDcNCi0JCSAqLw0KLQkJcGNpX3dyaXRlX2Nv
bmZpZ19ieXRlKGRldiwgMHg0YiwgdG1wYnl0ZSAmIDB4N0YpOw0KLQl9DQot
DQotCV9fcmVzdG9yZV9mbGFncyhmbGFncyk7DQotI2VuZGlmIC8qIEFMSV9J
TklUX0NPREVfVEVTVCAqLw0KLQ0KIAlyZXR1cm4gMDsNCiB9DQogDQpAQCAt
NjExLDExICs1NTQsMTAgQEANCiAJdW5zaWduZWQgbG9uZyBmbGFnczsNCiAJ
Ynl0ZSB0bXBieXRlOw0KIA0KLQlfX3NhdmVfZmxhZ3MoZmxhZ3MpOw0KLQlf
X2NsaSgpOw0KKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CS8qIGxvY2FsIENQ
VSBvbmx5ICovDQorCWxvY2FsX2lycV9kaXNhYmxlKCk7CS8qIGxvY2FsIENQ
VSBvbmx5ICovDQogDQogCWlmIChtNTIyOV9yZXZpc2lvbiA+PSAweEMyKSB7
DQotI2lmbmRlZiBBTElfSU5JVF9DT0RFX1RFU1QNCiAJCS8qDQogCQkgKiAx
NTQzQy1CPywgMTUzNSwgMTUzNUQsIDE1NTMNCiAJCSAqIE5vdGUgMTogbm90
IGFsbCAibW90aGVyYm9hcmQiIHN1cHBvcnQgdGhpcyBkZXRlY3Rpb24NCkBA
IC02NDUsNyArNTg3LDYgQEANCiAJCQkgKi8NCiAJCQlwY2lfd3JpdGVfY29u
ZmlnX2J5dGUoaXNhX2RldiwgMHg3OSwgdG1wYnl0ZSB8IDB4MDIpOw0KIAkJ
fQ0KLSNlbmRpZiAvKiBBTElfSU5JVF9DT0RFX1RFU1QgKi8NCiAJCS8qDQog
CQkgKiBVbHRyYTY2IGNhYmxlIGRldGVjdGlvbiAoZnJvbSBIb3N0IFZpZXcp
DQogCQkgKiBtNTIyOSwgMHg0YSwgYml0MDogcHJpbWFyeSwgYml0MTogc2Vj
b25kYXJ5IDgwIHBpbg0KQEAgLTY2Niw3ICs2MDcsNiBAQA0KIAkJICovDQog
CQlhdGE2NiA9IChod2lmLT5jaGFubmVsKT9jYWJsZV84MF9waW5bMV06Y2Fi
bGVfODBfcGluWzBdOw0KIAl9IGVsc2Ugew0KLSNpZm5kZWYgQUxJX0lOSVRf
Q09ERV9URVNUDQogCQkvKg0KIAkJICogcmV2aXNpb24gMHgyMCAoMTU0My1F
LCAxNTQzLUYpDQogCQkgKiByZXZpc2lvbiAweEMwLCAweEMxICgxNTQzQy1D
LCAxNTQzQy1ELCAxNTQzQy1FKQ0KQEAgLTY3Nyw3ICs2MTcsNiBAQA0KIAkJ
ICogY2xlYXIgYml0IDcNCiAJCSAqLw0KIAkJcGNpX3dyaXRlX2NvbmZpZ19i
eXRlKGRldiwgMHg0YiwgdG1wYnl0ZSAmIDB4N0YpOw0KLSNlbmRpZiAvKiBB
TElfSU5JVF9DT0RFX1RFU1QgKi8NCiAJCS8qDQogCQkgKiBjaGVjayBtMTUz
MywgMHg1ZSwgYml0IDF+NCA9PSAxMDAxID0+ICYgMDAwMTExMTAgPSAwMDAx
MDAxMA0KIAkJICovDQpAQCAtNjk2LDcgKzYzNSw3IEBADQogDQogCXBjaV93
cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4NTMsIHRtcGJ5dGUpOw0KIA0KLQlf
X3Jlc3RvcmVfZmxhZ3MoZmxhZ3MpOw0KKwlsb2NhbF9pcnFfcmVzdG9yZShm
bGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQogDQogCXJldHVybihhdGE2
Nik7DQogfQ0KZGlmZiAtdXJOIGxpbnV4LTIuNC4xOS1wNC9kcml2ZXJzL2lk
ZS9jbWQ2NDAuYyBsaW51eC0yLjQuMTktcDQuc3Bpbi9kcml2ZXJzL2lkZS9j
bWQ2NDAuYw0KLS0tIGxpbnV4LTIuNC4xOS1wNC9kcml2ZXJzL2lkZS9jbWQ2
NDAuYwlGcmkgRmViIDE2IDE2OjAyOjM2IDIwMDENCisrKyBsaW51eC0yLjQu
MTktcDQuc3Bpbi9kcml2ZXJzL2lkZS9jbWQ2NDAuYwlXZWQgTWFyIDI3IDIy
OjA2OjE0IDIwMDINCkBAIC0yMTcsMTEgKzIxNywxMCBAQA0KIHsNCiAJdW5z
aWduZWQgbG9uZyBmbGFnczsNCiANCi0Jc2F2ZV9mbGFncyhmbGFncyk7DQot
CWNsaSgpOw0KKwlzcGluX2xvY2tfaXJxc2F2ZSgmaW9fcmVxdWVzdF9sb2Nr
LCBmbGFncyk7DQogCW91dGxfcCgocmVnICYgMHhmYykgfCBjbWQ2NDBfa2V5
LCAweGNmOCk7DQogCW91dGJfcCh2YWwsIChyZWcgJiAzKSB8IDB4Y2ZjKTsN
Ci0JcmVzdG9yZV9mbGFncyhmbGFncyk7DQorCXNwaW5fdW5sb2NrX2lycXJl
c3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0KIH0NCiANCiBzdGF0
aWMgYnl0ZSBnZXRfY21kNjQwX3JlZ19wY2kxICh1bnNpZ25lZCBzaG9ydCBy
ZWcpDQpAQCAtMjI5LDExICsyMjgsMTAgQEANCiAJYnl0ZSBiOw0KIAl1bnNp
Z25lZCBsb25nIGZsYWdzOw0KIA0KLQlzYXZlX2ZsYWdzKGZsYWdzKTsNCi0J
Y2xpKCk7DQorCXNwaW5fbG9ja19pcnFzYXZlKCZpb19yZXF1ZXN0X2xvY2ss
IGZsYWdzKTsNCiAJb3V0bF9wKChyZWcgJiAweGZjKSB8IGNtZDY0MF9rZXks
IDB4Y2Y4KTsNCiAJYiA9IGluYl9wKChyZWcgJiAzKSB8IDB4Y2ZjKTsNCi0J
cmVzdG9yZV9mbGFncyhmbGFncyk7DQorCXNwaW5fdW5sb2NrX2lycXJlc3Rv
cmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0KIAlyZXR1cm4gYjsNCiB9
DQogDQpAQCAtMjQzLDEyICsyNDEsMTEgQEANCiB7DQogCXVuc2lnbmVkIGxv
bmcgZmxhZ3M7DQogDQotCXNhdmVfZmxhZ3MoZmxhZ3MpOw0KLQljbGkoKTsN
CisJc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3Mp
Ow0KIAlvdXRiX3AoMHgxMCwgMHhjZjgpOw0KIAlvdXRiX3AodmFsLCBjbWQ2
NDBfa2V5ICsgcmVnKTsNCiAJb3V0Yl9wKDAsIDB4Y2Y4KTsNCi0JcmVzdG9y
ZV9mbGFncyhmbGFncyk7DQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlv
X3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0KIH0NCiANCiBzdGF0aWMgYnl0ZSBn
ZXRfY21kNjQwX3JlZ19wY2kyICh1bnNpZ25lZCBzaG9ydCByZWcpDQpAQCAt
MjU2LDEyICsyNTMsMTEgQEANCiAJYnl0ZSBiOw0KIAl1bnNpZ25lZCBsb25n
IGZsYWdzOw0KIA0KLQlzYXZlX2ZsYWdzKGZsYWdzKTsNCi0JY2xpKCk7DQor
CXNwaW5fbG9ja19pcnFzYXZlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsN
CiAJb3V0Yl9wKDB4MTAsIDB4Y2Y4KTsNCiAJYiA9IGluYl9wKGNtZDY0MF9r
ZXkgKyByZWcpOw0KIAlvdXRiX3AoMCwgMHhjZjgpOw0KLQlyZXN0b3JlX2Zs
YWdzKGZsYWdzKTsNCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVx
dWVzdF9sb2NrLCBmbGFncyk7DQogCXJldHVybiBiOw0KIH0NCiANCkBAIC0y
NzEsMTEgKzI2NywxMCBAQA0KIHsNCiAJdW5zaWduZWQgbG9uZyBmbGFnczsN
CiANCi0Jc2F2ZV9mbGFncyhmbGFncyk7DQotCWNsaSgpOw0KKwlzcGluX2xv
Y2tfaXJxc2F2ZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7DQogCW91dGJf
cChyZWcsIGNtZDY0MF9rZXkpOw0KIAlvdXRiX3AodmFsLCBjbWQ2NDBfa2V5
ICsgNCk7DQotCXJlc3RvcmVfZmxhZ3MoZmxhZ3MpOw0KKwlzcGluX3VubG9j
a19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsNCiB9DQog
DQogc3RhdGljIGJ5dGUgZ2V0X2NtZDY0MF9yZWdfdmxiICh1bnNpZ25lZCBz
aG9ydCByZWcpDQpAQCAtMjgzLDExICsyNzgsMTAgQEANCiAJYnl0ZSBiOw0K
IAl1bnNpZ25lZCBsb25nIGZsYWdzOw0KIA0KLQlzYXZlX2ZsYWdzKGZsYWdz
KTsNCi0JY2xpKCk7DQorCXNwaW5fbG9ja19pcnFzYXZlKCZpb19yZXF1ZXN0
X2xvY2ssIGZsYWdzKTsNCiAJb3V0Yl9wKHJlZywgY21kNjQwX2tleSk7DQog
CWIgPSBpbmJfcChjbWQ2NDBfa2V5ICsgNCk7DQotCXJlc3RvcmVfZmxhZ3Mo
ZmxhZ3MpOw0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0
X2xvY2ssIGZsYWdzKTsNCiAJcmV0dXJuIGI7DQogfQ0KIA0KQEAgLTM2NCwy
MCArMzU4LDE4IEBADQogew0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0KIA0K
LQlzYXZlX2ZsYWdzKGZsYWdzKTsNCi0JY2xpKCk7DQotDQorCXNwaW5fbG9j
a19pcnFzYXZlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsNCiAJb3V0Yl9w
KDB4MGEsIDB4MTcwICsgSURFX1NFTEVDVF9PRkZTRVQpOwkvKiBzZWxlY3Qg
ZHJpdmUwICovDQogCXVkZWxheSgxMDApOw0KIAlpZiAoKGluYl9wKDB4MTcw
ICsgSURFX1NFTEVDVF9PRkZTRVQpICYgMHgxZikgIT0gMHgwYSkgew0KIAkJ
b3V0Yl9wKDB4MWEsIDB4MTcwICsgSURFX1NFTEVDVF9PRkZTRVQpOyAvKiBz
ZWxlY3QgZHJpdmUxICovDQogCQl1ZGVsYXkoMTAwKTsNCiAJCWlmICgoaW5i
X3AoMHgxNzAgKyBJREVfU0VMRUNUX09GRlNFVCkgJiAweDFmKSAhPSAweDFh
KSB7DQotCQkJcmVzdG9yZV9mbGFncyhmbGFncyk7DQorCQkJc3Bpbl91bmxv
Y2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7DQogCQkJ
cmV0dXJuIDA7IC8qIG5vdGhpbmcgcmVzcG9uZGVkICovDQogCQl9DQogCX0N
Ci0JcmVzdG9yZV9mbGFncyhmbGFncyk7DQorCXNwaW5fdW5sb2NrX2lycXJl
c3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0KIAlyZXR1cm4gMTsg
Lyogc3VjY2VzcyAqLw0KIH0NCiANCkBAIC00NTgsOCArNDUwLDcgQEANCiAJ
Ynl0ZSBiOw0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0KIA0KLQlzYXZlX2Zs
YWdzKGZsYWdzKTsNCi0JY2xpKCk7DQorCXNwaW5fbG9ja19pcnFzYXZlKCZp
b19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsNCiAJYiA9IGdldF9jbWQ2NDBfcmVn
KHJlZyk7DQogCWlmIChtb2RlKSB7CS8qIHdhbnQgcHJlZmV0Y2ggb24/ICov
DQogI2lmIENNRDY0MF9QUkVGRVRDSF9NQVNLUw0KQEAgLTQ3NSw3ICs0NjYs
NyBAQA0KIAkJYiB8PSBwcmVmZXRjaF9tYXNrc1tpbmRleF07CS8qIGRpc2Fi
bGUgcHJlZmV0Y2ggKi8NCiAJfQ0KIAlwdXRfY21kNjQwX3JlZyhyZWcsIGIp
Ow0KLQlyZXN0b3JlX2ZsYWdzKGZsYWdzKTsNCisJc3Bpbl91bmxvY2tfaXJx
cmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7DQogfQ0KIA0KIC8q
DQpAQCAtNTc2LDggKzU2Nyw3IEBADQogCS8qDQogCSAqIE5vdyB0aGF0IGV2
ZXJ5dGhpbmcgaXMgcmVhZHksIHByb2dyYW0gdGhlIG5ldyB0aW1pbmdzDQog
CSAqLw0KLQlzYXZlX2ZsYWdzIChmbGFncyk7DQotCWNsaSgpOw0KKwlzcGlu
X2xvY2tfaXJxc2F2ZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7DQogCS8q
DQogCSAqIFByb2dyYW0gdGhlIGFkZHJlc3Nfc2V0dXAgY2xvY2tzIGludG8g
QVJUVElNIHJlZywNCiAJICogYW5kIHRoZW4gdGhlIGFjdGl2ZS9yZWNvdmVy
eSBjb3VudHMgaW50byB0aGUgRFJXVElNIHJlZw0KQEAgLTU4Niw3ICs1NzYs
NyBAQA0KIAlzZXR1cF9jb3VudCB8PSBnZXRfY21kNjQwX3JlZyhhcnR0aW1f
cmVnc1tpbmRleF0pICYgMHgzZjsNCiAJcHV0X2NtZDY0MF9yZWcoYXJ0dGlt
X3JlZ3NbaW5kZXhdLCBzZXR1cF9jb3VudCk7DQogCXB1dF9jbWQ2NDBfcmVn
KGRyd3RpbV9yZWdzW2luZGV4XSwgcGFja19uaWJibGVzKGFjdGl2ZV9jb3Vu
dCwgcmVjb3ZlcnlfY291bnQpKTsNCi0JcmVzdG9yZV9mbGFncyhmbGFncyk7
DQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywg
ZmxhZ3MpOw0KIH0NCiANCiAvKg0KZGlmZiAtdXJOIGxpbnV4LTIuNC4xOS1w
NC9kcml2ZXJzL2lkZS9jbWQ2NHguYyBsaW51eC0yLjQuMTktcDQuc3Bpbi9k
cml2ZXJzL2lkZS9jbWQ2NHguYw0KLS0tIGxpbnV4LTIuNC4xOS1wNC9kcml2
ZXJzL2lkZS9jbWQ2NHguYwlTYXQgTWFyIDMwIDIzOjQ2OjAwIDIwMDINCisr
KyBsaW51eC0yLjQuMTktcDQuc3Bpbi9kcml2ZXJzL2lkZS9jbWQ2NHguYwlT
YXQgTWFyIDMwIDIzOjQ0OjA3IDIwMDINCkBAIC0yOTgsOCArMjk4LDkgQEAN
CiAJLyoNCiAJICogTm93IHRoYXQgZXZlcnl0aGluZyBpcyByZWFkeSwgcHJv
Z3JhbSB0aGUgbmV3IHRpbWluZ3MNCiAJICovDQotCV9fc2F2ZV9mbGFncyAo
ZmxhZ3MpOw0KLQlfX2NsaSgpOw0KKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7
CQkvKiBsb2NhbCBDUFUgb25seSAqLw0KKwlsb2NhbF9pcnFfZGlzYWJsZSgp
OwkJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCisNCiAJLyoNCiAJICogUHJvZ3Jh
bSB0aGUgYWRkcmVzc19zZXR1cCBjbG9ja3MgaW50byBBUlRUSU0gcmVnLA0K
IAkgKiBhbmQgdGhlbiB0aGUgYWN0aXZlL3JlY292ZXJ5IGNvdW50cyBpbnRv
IHRoZSBEUldUSU0gcmVnDQpAQCAtMzExLDcgKzMxMiw3IEBADQogCQkoYnl0
ZSkgKChhY3RpdmVfY291bnQgPDwgNCkgfCByZWNvdmVyeV9jb3VudCkpOw0K
IAljbWRwcmludGsgKCJXcml0ZSAleCB0byAleFxuIiwgKChieXRlKSBzZXR1
cF9jb3VudCkgfCAodGVtcF9iICYgMHgzZiksIGFydHRpbV9yZWdzW2NoYW5u
ZWxdW3NsYXZlXSk7DQogCWNtZHByaW50ayAoIldyaXRlICV4IHRvICV4XG4i
LCAoYnl0ZSkgKChhY3RpdmVfY291bnQgPDwgNCkgfCByZWNvdmVyeV9jb3Vu
dCksIGRyd3RpbV9yZWdzW2NoYW5uZWxdW3NsYXZlXSk7DQotCV9fcmVzdG9y
ZV9mbGFncyhmbGFncyk7DQorCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsJ
LyogbG9jYWwgQ1BVIG9ubHkgKi8NCiB9DQogDQogLyoNCmRpZmYgLXVyTiBs
aW51eC0yLjQuMTktcDQvZHJpdmVycy9pZGUvY3M1NTMwLmMgbGludXgtMi40
LjE5LXA0LnNwaW4vZHJpdmVycy9pZGUvY3M1NTMwLmMNCi0tLSBsaW51eC0y
LjQuMTktcDQvZHJpdmVycy9pZGUvY3M1NTMwLmMJVHVlIEphbiAgMiAxNjo1
ODo0NSAyMDAxDQorKysgbGludXgtMi40LjE5LXA0LnNwaW4vZHJpdmVycy9p
ZGUvY3M1NTMwLmMJV2VkIE1hciAyNyAyMjoxMDoxMiAyMDAyDQpAQCAtMjg2
LDkgKzI4Niw4IEBADQogCQlyZXR1cm4gMDsNCiAJfQ0KIA0KLQlzYXZlX2Zs
YWdzKGZsYWdzKTsNCi0JY2xpKCk7CS8qIGFsbCBDUFVzICh0aGVyZSBzaG91
bGQgb25seSBiZSBvbmUgQ1BVIHdpdGggdGhpcyBjaGlwc2V0KSAqLw0KLQ0K
KwkvKiBhbGwgQ1BVcyAodGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIENQVSB3
aXRoIHRoaXMgY2hpcHNldCkgKi8NCisJc3Bpbl9sb2NrX2lycXNhdmUoJmlv
X3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0KIAkvKg0KIAkgKiBFbmFibGUgQnVz
TWFzdGVyIGFuZCBNZW1vcnlXcml0ZUFuZEludmFsaWRhdGUgZm9yIHRoZSBj
czU1MzA6DQogCSAqIC0tPiAgT1IgMHgxNCBpbnRvIDE2LWJpdCBQQ0kgQ09N
TUFORCByZWcgb2YgZnVuY3Rpb24gMCBvZiB0aGUgY3M1NTMwDQpAQCAtMzMz
LDcgKzMzMiw3IEBADQogCXBjaV93cml0ZV9jb25maWdfYnl0ZShtYXN0ZXJf
MCwgMHg0MiwgMHgwMCk7DQogCXBjaV93cml0ZV9jb25maWdfYnl0ZShtYXN0
ZXJfMCwgMHg0MywgMHhjMSk7DQogDQotCXJlc3RvcmVfZmxhZ3MoZmxhZ3Mp
Ow0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ss
IGZsYWdzKTsNCiANCiAJcmV0dXJuIDA7DQogfQ0KZGlmZiAtdXJOIGxpbnV4
LTIuNC4xOS1wNC9kcml2ZXJzL2lkZS9kdGMyMjc4LmMgbGludXgtMi40LjE5
LXA0LnNwaW4vZHJpdmVycy9pZGUvZHRjMjI3OC5jDQotLS0gbGludXgtMi40
LjE5LXA0L2RyaXZlcnMvaWRlL2R0YzIyNzguYwlUaHUgQXByIDEzIDIyOjU0
OjI2IDIwMDANCisrKyBsaW51eC0yLjQuMTktcDQuc3Bpbi9kcml2ZXJzL2lk
ZS9kdGMyMjc4LmMJV2VkIE1hciAyNyAyMTo0Nzo1OSAyMDAyDQpAQCAtNzcs
MTQgKzc3LDEzIEBADQogCXBpbyA9IGlkZV9nZXRfYmVzdF9waW9fbW9kZShk
cml2ZSwgcGlvLCA0LCBOVUxMKTsNCiANCiAJaWYgKHBpbyA+PSAzKSB7DQot
CQlzYXZlX2ZsYWdzKGZsYWdzKTsJLyogYWxsIENQVXMgKi8NCi0JCWNsaSgp
OwkJCS8qIGFsbCBDUFVzICovDQorCQlzcGluX2xvY2tfaXJxc2F2ZSgmaW9f
cmVxdWVzdF9sb2NrLCBmbGFncyk7DQogCQkvKg0KIAkJICogVGhpcyBlbmFi
bGVzIFBJTyBtb2RlNCAoMz8pIG9uIHRoZSBmaXJzdCBpbnRlcmZhY2UNCiAJ
CSAqLw0KIAkJc3ViMjIoMSwweGMzKTsNCiAJCXN1YjIyKDAsMHhhMCk7DQot
CQlyZXN0b3JlX2ZsYWdzKGZsYWdzKTsJLyogYWxsIENQVXMgKi8NCisJCXNw
aW5fdW5sb2NrX2lycXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3Mp
Ow0KIAl9IGVsc2Ugew0KIAkJLyogd2UgZG9uJ3Qga25vdyBob3cgdG8gc2V0
IGl0IGJhY2sgYWdhaW4uLiAqLw0KIAl9DQpAQCAtMTAwLDggKzk5LDggQEAN
CiB7DQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQogDQotCV9fc2F2ZV9mbGFn
cyhmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQotCV9fY2xpKCk7CQkv
KiBsb2NhbCBDUFUgb25seSAqLw0KKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7
CQkvKiBsb2NhbCBDUFUgb25seSAqLw0KKwlsb2NhbF9pcnFfZGlzYWJsZSgp
OwkJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCiAJLyoNCiAJICogVGhpcyBlbmFi
bGVzIHRoZSBzZWNvbmQgaW50ZXJmYWNlDQogCSAqLw0KQEAgLTExNyw3ICsx
MTYsNyBAQA0KIAlzdWIyMigxLDB4YzMpOw0KIAlzdWIyMigwLDB4YTApOw0K
ICNlbmRpZg0KLQlfX3Jlc3RvcmVfZmxhZ3MoZmxhZ3MpOwkvKiBsb2NhbCBD
UFUgb25seSAqLw0KKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CS8qIGxv
Y2FsIENQVSBvbmx5ICovDQogDQogCWlkZV9od2lmc1swXS5zZXJpYWxpemVk
ID0gMTsNCiAJaWRlX2h3aWZzWzFdLnNlcmlhbGl6ZWQgPSAxOw0KZGlmZiAt
dXJOIGxpbnV4LTIuNC4xOS1wNC9kcml2ZXJzL2lkZS9ocHQzNHguYyBsaW51
eC0yLjQuMTktcDQuc3Bpbi9kcml2ZXJzL2lkZS9ocHQzNHguYw0KLS0tIGxp
bnV4LTIuNC4xOS1wNC9kcml2ZXJzL2lkZS9ocHQzNHguYwlUaHUgTWFyIDIx
IDA3OjA1OjA1IDIwMDINCisrKyBsaW51eC0yLjQuMTktcDQuc3Bpbi9kcml2
ZXJzL2lkZS9ocHQzNHguYwlXZWQgTWFyIDI3IDE5OjUyOjI3IDIwMDINCkBA
IC0zODUsOCArMzg1LDggQEANCiAJdW5zaWduZWQgc2hvcnQgY21kOw0KIAl1
bnNpZ25lZCBsb25nIGZsYWdzOw0KIA0KLQlfX3NhdmVfZmxhZ3MoZmxhZ3Mp
OwkvKiBsb2NhbCBDUFUgb25seSAqLw0KLQlfX2NsaSgpOwkJLyogbG9jYWwg
Q1BVIG9ubHkgKi8NCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwkJLyogbG9j
YWwgQ1BVIG9ubHkgKi8NCisJbG9jYWxfaXJxX2Rpc2FibGUoKTsJCS8qIGxv
Y2FsIENQVSBvbmx5ICovDQogDQogCXBjaV93cml0ZV9jb25maWdfYnl0ZShk
ZXYsIEhQVDM0WF9QQ0lfSU5JVF9SRUcsIDB4MDApOw0KIAlwY2lfcmVhZF9j
b25maWdfd29yZChkZXYsIFBDSV9DT01NQU5ELCAmY21kKTsNCkBAIC00MTcs
NyArNDE3LDcgQEANCiAJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChkZXYsIFBD
SV9CQVNFX0FERFJFU1NfMywgZGV2LT5yZXNvdXJjZVszXS5zdGFydCk7DQog
CXBjaV93cml0ZV9jb25maWdfd29yZChkZXYsIFBDSV9DT01NQU5ELCBjbWQp
Ow0KIA0KLQlfX3Jlc3RvcmVfZmxhZ3MoZmxhZ3MpOwkvKiBsb2NhbCBDUFUg
b25seSAqLw0KKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CS8qIGxvY2Fs
IENQVSBvbmx5ICovDQogDQogI2lmIGRlZmluZWQoRElTUExBWV9IUFQzNFhf
VElNSU5HUykgJiYgZGVmaW5lZChDT05GSUdfUFJPQ19GUykNCiAJaWYgKCFo
cHQzNHhfcHJvYykgew0KZGlmZiAtdXJOIGxpbnV4LTIuNC4xOS1wNC9kcml2
ZXJzL2lkZS9ocHQzNjYuYyBsaW51eC0yLjQuMTktcDQuc3Bpbi9kcml2ZXJz
L2lkZS9ocHQzNjYuYw0KLS0tIGxpbnV4LTIuNC4xOS1wNC9kcml2ZXJzL2lk
ZS9ocHQzNjYuYwlTYXQgTWFyIDMwIDIxOjAyOjE0IDIwMDINCisrKyBsaW51
eC0yLjQuMTktcDQuc3Bpbi9kcml2ZXJzL2lkZS9ocHQzNjYuYwlTYXQgTWFy
IDMwIDIxOjM5OjA0IDIwMDINCkBAIC0xNTI0LDggKzE1MjQsOCBAQA0KIAli
eXRlIHNlY29uZGFyeQk9IGh3aWYtPmNoYW5uZWwgPyAweDRmIDogMHg0NzsN
CiAJdW5zaWduZWQgbG9uZyBmbGFnczsNCiANCi0JX19zYXZlX2ZsYWdzKGZs
YWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCi0JX19jbGkoKTsJCS8qIGxv
Y2FsIENQVSBvbmx5ICovDQorCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsJCS8q
IGxvY2FsIENQVSBvbmx5ICovDQorCWxvY2FsX2lycV9kaXNhYmxlKCk7CQkv
KiBsb2NhbCBDUFUgb25seSAqLw0KIA0KIAlkbWFfbmV3ID0gZG1hX29sZDsN
CiAJcGNpX3JlYWRfY29uZmlnX2J5dGUoaHdpZi0+cGNpX2RldiwgcHJpbWFy
eSwgJm1hc3RlcmRtYSk7DQpAQCAtMTUzNSw3ICsxNTM1LDcgQEANCiAJaWYg
KHNsYXZlZG1hICYgMHgzMCkJZG1hX25ldyB8PSAweDQwOw0KIAlpZiAoZG1h
X25ldyAhPSBkbWFfb2xkKSBvdXRiKGRtYV9uZXcsIGRtYWJhc2UrMik7DQog
DQotCV9fcmVzdG9yZV9mbGFncyhmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5
ICovDQorCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsJLyogbG9jYWwgQ1BV
IG9ubHkgKi8NCiANCiAJaWRlX3NldHVwX2RtYShod2lmLCBkbWFiYXNlLCA4
KTsNCiB9DQpkaWZmIC11ck4gbGludXgtMi40LjE5LXA0L2RyaXZlcnMvaWRl
L2h0NjU2MGIuYyBsaW51eC0yLjQuMTktcDQuc3Bpbi9kcml2ZXJzL2lkZS9o
dDY1NjBiLmMNCi0tLSBsaW51eC0yLjQuMTktcDQvZHJpdmVycy9pZGUvaHQ2
NTYwYi5jCVRodSBBcHIgMTMgMjI6NTQ6MjYgMjAwMA0KKysrIGxpbnV4LTIu
NC4xOS1wNC5zcGluL2RyaXZlcnMvaWRlL2h0NjU2MGIuYwlXZWQgTWFyIDI3
IDIxOjUyOjIxIDIwMDINCkBAIC0xMzQsOSArMTM0LDkgQEANCiAJc3RhdGlj
IGJ5dGUgY3VycmVudF90aW1pbmcgPSAwOw0KIAlieXRlIHNlbGVjdCwgdGlt
aW5nOw0KIAkNCi0JX19zYXZlX2ZsYWdzIChmbGFncyk7CS8qIGxvY2FsIENQ
VSBvbmx5ICovDQotCV9fY2xpKCk7CQkvKiBsb2NhbCBDUFUgb25seSAqLw0K
LQkNCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwkJLyogbG9jYWwgQ1BVIG9u
bHkgKi8NCisJbG9jYWxfaXJxX2Rpc2FibGUoKTsJCS8qIGxvY2FsIENQVSBv
bmx5ICovCQ0KKw0KIAlzZWxlY3QgPSBIVF9DT05GSUcoZHJpdmUpOw0KIAl0
aW1pbmcgPSBIVF9USU1JTkcoZHJpdmUpOw0KIAkNCkBAIC0xNTksNyArMTU5
LDcgQEANCiAJCXByaW50aygiaHQ2NTYwYjogJXM6IHNlbGVjdD0lI3ggdGlt
aW5nPSUjeFxuIiwgZHJpdmUtPm5hbWUsIHNlbGVjdCwgdGltaW5nKTsNCiAj
ZW5kaWYNCiAJfQ0KLQlfX3Jlc3RvcmVfZmxhZ3MgKGZsYWdzKTsJLyogbG9j
YWwgQ1BVIG9ubHkgKi8NCisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwkv
KiBsb2NhbCBDUFUgb25seSAqLw0KIH0NCiANCiAvKg0KQEAgLTI1Nyw5ICsy
NTcsOCBAQA0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0KIAlpbnQgdCA9IEhU
X1BSRUZFVENIX01PREUgPDwgODsNCiAJDQotCXNhdmVfZmxhZ3MgKGZsYWdz
KTsJLyogYWxsIENQVXMgKi8NCi0JY2xpKCk7CQkgICAgICAgIC8qIGFsbCBD
UFVzICovDQotCQ0KKwlzcGluX2xvY2tfaXJxc2F2ZSgmaW9fcmVxdWVzdF9s
b2NrLCBmbGFncyk7DQorDQogCS8qDQogCSAqICBQcmVmZXRjaCBtb2RlIGFu
ZCB1bm1hc2sgaXJxIHNlZW1zIHRvIGNvbmZsaWN0DQogCSAqLw0KQEAgLTI3
Miw3ICsyNzEsNyBAQA0KIAkJZHJpdmUtPm5vX3VubWFzayA9IDA7DQogCX0N
CiAJDQotCXJlc3RvcmVfZmxhZ3MgKGZsYWdzKTsJLyogYWxsIENQVXMgKi8N
CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBm
bGFncyk7DQogCQ0KICNpZmRlZiBERUJVRw0KIAlwcmludGsoImh0NjU2MGI6
IGRyaXZlICVzIHByZWZldGNoIG1vZGUgJXNhYmxlZFxuIiwgZHJpdmUtPm5h
bWUsIChzdGF0ZSA/ICJlbiIgOiAiZGlzIikpOw0KQEAgLTI5MywxMyArMjky
LDEwIEBADQogCQ0KIAl0aW1pbmcgPSBodF9waW8ydGltaW5ncyhkcml2ZSwg
cGlvKTsNCiAJDQotCXNhdmVfZmxhZ3MgKGZsYWdzKTsJLyogYWxsIENQVXMg
Ki8NCi0JY2xpKCk7CQkgICAgICAgIC8qIGFsbCBDUFVzICovDQotCQ0KKwlz
cGluX2xvY2tfaXJxc2F2ZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CQ0K
IAlkcml2ZS0+ZHJpdmVfZGF0YSAmPSAweGZmMDA7DQogCWRyaXZlLT5kcml2
ZV9kYXRhIHw9IHRpbWluZzsNCi0JDQotCXJlc3RvcmVfZmxhZ3MgKGZsYWdz
KTsJLyogYWxsIENQVXMgKi8NCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm
aW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7DQogCQ0KICNpZmRlZiBERUJVRw0K
IAlwcmludGsoImh0NjU2MGI6IGRyaXZlICVzIHR1bmVkIHRvIHBpbyBtb2Rl
ICUjeCB0aW1pbmc9JSN4XG4iLCBkcml2ZS0+bmFtZSwgcGlvLCB0aW1pbmcp
Ow0KZGlmZiAtdXJOIGxpbnV4LTIuNC4xOS1wNC9kcml2ZXJzL2lkZS9pZGUt
ZGlzay5jIGxpbnV4LTIuNC4xOS1wNC5zcGluL2RyaXZlcnMvaWRlL2lkZS1k
aXNrLmMNCi0tLSBsaW51eC0yLjQuMTktcDQvZHJpdmVycy9pZGUvaWRlLWRp
c2suYwlUaHUgTWFyIDIxIDA3OjA1OjA1IDIwMDINCisrKyBsaW51eC0yLjQu
MTktcDQuc3Bpbi9kcml2ZXJzL2lkZS9pZGUtZGlzay5jCVdlZCBNYXIgMjcg
MTk6NTc6NDMgMjAwMg0KQEAgLTY0Niw3ICs2NDYsNyBAQA0KIAkJCXJldHVy
biBzdGFydHN0b3A7DQogCQl9DQogCQlpZiAoIWRyaXZlLT51bm1hc2spDQot
CQkJX19jbGkoKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCisJCQlsb2NhbF9p
cnFfZGlzYWJsZSgpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0KIAkJaWYgKGRy
aXZlLT5tdWx0X2NvdW50KSB7DQogCQkJaWRlX2h3Z3JvdXBfdCAqaHdncm91
cCA9IEhXR1JPVVAoZHJpdmUpOw0KIAkvKg0KZGlmZiAtdXJOIGxpbnV4LTIu
NC4xOS1wNC9kcml2ZXJzL2lkZS9pZGUtZmVhdHVyZXMuYyBsaW51eC0yLjQu
MTktcDQuc3Bpbi9kcml2ZXJzL2lkZS9pZGUtZmVhdHVyZXMuYw0KLS0tIGxp
bnV4LTIuNC4xOS1wNC9kcml2ZXJzL2lkZS9pZGUtZmVhdHVyZXMuYwlUaHUg
TWFyIDIxIDA3OjA1OjA1IDIwMDINCisrKyBsaW51eC0yLjQuMTktcDQuc3Bp
bi9kcml2ZXJzL2lkZS9pZGUtZmVhdHVyZXMuYwlXZWQgTWFyIDI3IDIxOjM3
OjI0IDIwMDINCkBAIC0xNjksMTggKzE2OSwxOCBAQA0KIAkJcHJpbnRrKCIl
czogQ0hFQ0sgZm9yIGdvb2QgU1RBVFVTXG4iLCBkcml2ZS0+bmFtZSk7DQog
CQlyZXR1cm4gMDsNCiAJfQ0KLQlfX3NhdmVfZmxhZ3MoZmxhZ3MpOwkvKiBs
b2NhbCBDUFUgb25seSAqLw0KLQlfX2NsaSgpOwkJLyogbG9jYWwgQ1BVIG9u
bHk7IHNvbWUgc3lzdGVtcyBuZWVkIHRoaXMgKi8NCisJbG9jYWxfaXJxX3Nh
dmUoZmxhZ3MpOwkJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCisJbG9jYWxfaXJx
X2Rpc2FibGUoKTsJCS8qIGxvY2FsIENQVSBvbmx5ICovDQogCVNFTEVDVF9N
QVNLKEhXSUYoZHJpdmUpLCBkcml2ZSwgMCk7DQogCWlkID0ga21hbGxvYyhT
RUNUT1JfV09SRFMqNCwgR0ZQX0FUT01JQyk7DQogCWlmICghaWQpIHsNCi0J
CV9fcmVzdG9yZV9mbGFncyhmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICov
DQorCQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CS8qIGxvY2FsIENQVSBv
bmx5ICovDQogCQlyZXR1cm4gMDsNCiAJfQ0KIAlhdGFfaW5wdXRfZGF0YShk
cml2ZSwgaWQsIFNFQ1RPUl9XT1JEUyk7DQotCSh2b2lkKSBHRVRfU1RBVCgp
OwkvKiBjbGVhciBkcml2ZSBJUlEgKi8NCi0JaWRlX19zdGkoKTsJCS8qIGxv
Y2FsIENQVSBvbmx5ICovDQotCV9fcmVzdG9yZV9mbGFncyhmbGFncyk7CS8q
IGxvY2FsIENQVSBvbmx5ICovDQorCSh2b2lkKSBHRVRfU1RBVCgpOwkJLyog
Y2xlYXIgZHJpdmUgSVJRICovDQorCWxvY2FsX2lycV9lbmFibGUoKTsJCS8q
IGxvY2FsIENQVSBvbmx5ICovDQorCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdz
KTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCiAJaWRlX2ZpeF9kcml2ZWlkKGlk
KTsNCiAJaWYgKGlkKSB7DQogCQlkcml2ZS0+aWQtPmRtYV91bHRyYSA9IGlk
LT5kbWFfdWx0cmE7DQpAQCAtMzAxLDE0ICszMDEsMTQgQEANCiAJICovDQog
CWlmICgoc3RhdCA9IEdFVF9TVEFUKCkpICYgQlVTWV9TVEFUKSB7DQogCQl1
bnNpZ25lZCBsb25nIGZsYWdzLCB0aW1lb3V0Ow0KLQkJX19zYXZlX2ZsYWdz
KGZsYWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCi0JCWlkZV9fc3RpKCk7
CQkvKiBsb2NhbCBDUFUgb25seSAtLSBmb3IgamlmZmllcyAqLw0KKwkJbG9j
YWxfaXJxX3NhdmUoZmxhZ3MpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0KKwkJ
bG9jYWxfaXJxX2VuYWJsZSgpOwkvKiBsb2NhbCBDUFUgb25seSAtLSBmb3Ig
amlmZmllcyAqLw0KIAkJdGltZW91dCA9IGppZmZpZXMgKyBXQUlUX0NNRDsN
CiAJCXdoaWxlICgoc3RhdCA9IEdFVF9TVEFUKCkpICYgQlVTWV9TVEFUKSB7
DQogCQkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpDQogCQkJ
CWJyZWFrOw0KIAkJfQ0KLQkJX19yZXN0b3JlX2ZsYWdzKGZsYWdzKTsgLyog
bG9jYWwgQ1BVIG9ubHkgKi8NCisJCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdz
KTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCiAJfQ0KIA0KIAkvKg0KZGlmZiAt
dXJOIGxpbnV4LTIuNC4xOS1wNC9kcml2ZXJzL2lkZS9pZGUtZmxvcHB5LmMg
bGludXgtMi40LjE5LXA0LnNwaW4vZHJpdmVycy9pZGUvaWRlLWZsb3BweS5j
DQotLS0gbGludXgtMi40LjE5LXA0L2RyaXZlcnMvaWRlL2lkZS1mbG9wcHku
YwlUaHUgTWFyIDIxIDA3OjA1OjA1IDIwMDINCisrKyBsaW51eC0yLjQuMTkt
cDQuc3Bpbi9kcml2ZXJzL2lkZS9pZGUtZmxvcHB5LmMJV2VkIE1hciAyNyAy
MTozNzo0OSAyMDAyDQpAQCAtOTM5LDcgKzkzOSw3IEBADQogI2VuZGlmIC8q
IElERUZMT1BQWV9ERUJVR19MT0cgKi8NCiAJCWNsZWFyX2JpdCAoUENfRE1B
X0lOX1BST0dSRVNTLCAmcGMtPmZsYWdzKTsNCiANCi0JCWlkZV9fc3RpKCk7
CS8qIGxvY2FsIENQVSBvbmx5ICovDQorCQlsb2NhbF9pcnFfZW5hYmxlKCk7
CS8qIGxvY2FsIENQVSBvbmx5ICovDQogDQogCQlpZiAoc3RhdHVzLmIuY2hl
Y2sgfHwgdGVzdF9iaXQgKFBDX0RNQV9FUlJPUiwgJnBjLT5mbGFncykpIHsJ
LyogRXJyb3IgZGV0ZWN0ZWQgKi8NCiAjaWYgSURFRkxPUFBZX0RFQlVHX0xP
Rw0KQEAgLTE2NjksMTAgKzE2NjksMTAgQEANCiAJCWlkZWZsb3BweV9zdGF0
dXNfcmVnX3Qgc3RhdHVzOw0KIAkJdW5zaWduZWQgbG9uZyBmbGFnczsNCiAN
Ci0JCV9fc2F2ZV9mbGFncyhmbGFncyk7DQotCQlfX2NsaSgpOw0KKwkJbG9j
YWxfaXJxX3NhdmUoZmxhZ3MpOwkJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCisJ
CWxvY2FsX2lycV9kaXNhYmxlKCk7CQkvKiBsb2NhbCBDUFUgb25seSAqLw0K
IAkJc3RhdHVzLmFsbD1HRVRfU1RBVCgpOw0KLQkJX19yZXN0b3JlX2ZsYWdz
KGZsYWdzKTsNCisJCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsJLyogbG9j
YWwgQ1BVIG9ubHkgKi8NCiANCiAJCXByb2dyZXNzX2luZGljYXRpb249ICFz
dGF0dXMuYi5kc2MgPyAwOjB4MTAwMDA7DQogCX0NCmRpZmYgLXVyTiBsaW51
eC0yLjQuMTktcDQvZHJpdmVycy9pZGUvaWRlLXBtYWMuYyBsaW51eC0yLjQu
MTktcDQuc3Bpbi9kcml2ZXJzL2lkZS9pZGUtcG1hYy5jDQotLS0gbGludXgt
Mi40LjE5LXA0L2RyaXZlcnMvaWRlL2lkZS1wbWFjLmMJRnJpIE1hciAyMiAw
MDoxNjozNiAyMDAyDQorKysgbGludXgtMi40LjE5LXA0LnNwaW4vZHJpdmVy
cy9pZGUvaWRlLXBtYWMuYwlXZWQgTWFyIDI3IDIxOjMyOjQ4IDIwMDINCkBA
IC0zODUsMTAgKzM4NSwxMCBAQA0KIAlPVVRfQllURShTRVRGRUFUVVJFU19Y
RkVSLCBJREVfRkVBVFVSRV9SRUcpOw0KIAlPVVRfQllURShXSU5fU0VURkVB
VFVSRVMsIElERV9DT01NQU5EX1JFRyk7DQogCXVkZWxheSgxKTsNCi0JX19z
YXZlX2ZsYWdzKGZsYWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCi0JaWRl
X19zdGkoKTsJCS8qIGxvY2FsIENQVSBvbmx5IC0tIGZvciBqaWZmaWVzICov
DQorCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkg
Ki8NCisJbG9jYWxfaXJxX2VuYWJsZSgpOwkvKiBsb2NhbCBDUFUgb25seSAt
LSBmb3IgamlmZmllcyAqLw0KIAlyZXN1bHQgPSB3YWl0X2Zvcl9yZWFkeShk
cml2ZSwgMjAwMCk7CS8qIFRpbWVvdXQgYnVtcGVkIGZvciBzb21lIHBvd2Vy
Ym9va3MgKi8NCi0JX19yZXN0b3JlX2ZsYWdzKGZsYWdzKTsgLyogbG9jYWwg
Q1BVIG9ubHkgKi8NCisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwkvKiBs
b2NhbCBDUFUgb25seSAqLw0KIAlPVVRfQllURShkcml2ZS0+Y3RsLCBJREVf
Q09OVFJPTF9SRUcpOw0KIAlpZiAocmVzdWx0KQ0KIAkJcHJpbnRrKEtFUk5f
RVJSICJwbWFjX2lkZV9kb19zZXRmZWF0dXJlIGRpc2sgbm90IHJlYWR5IGFm
dGVyIFNFVF9GRUFUVVJFICFcbiIpOw0KZGlmZiAtdXJOIGxpbnV4LTIuNC4x
OS1wNC9kcml2ZXJzL2lkZS9pZGUtcHJvYmUuYyBsaW51eC0yLjQuMTktcDQu
c3Bpbi9kcml2ZXJzL2lkZS9pZGUtcHJvYmUuYw0KLS0tIGxpbnV4LTIuNC4x
OS1wNC9kcml2ZXJzL2lkZS9pZGUtcHJvYmUuYwlUaHUgTWFyIDIxIDA3OjA1
OjA1IDIwMDINCisrKyBsaW51eC0yLjQuMTktcDQuc3Bpbi9kcml2ZXJzL2lk
ZS9pZGUtcHJvYmUuYwlXZWQgTWFyIDI3IDIxOjQwOjUzIDIwMDINCkBAIC03
NCw3ICs3NCw3IEBADQogICAgICAgICAgICAgICAgICAgICAgICAgKnB0cisr
ID0gaW5sKElERV9EQVRBX1JFRyk7DQogICAgICAgICB9DQogI2VuZGlmDQot
CWlkZV9fc3RpKCk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQorCWxvY2FsX2ly
cV9lbmFibGUoKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCiAJaWRlX2ZpeF9k
cml2ZWlkKGlkKTsNCiANCiAJaWYgKGlkLT53b3JkMTU2ID09IDB4NGQ0Mikg
ew0KQEAgLTI1NCwxMiArMjU0LDEzIEBADQogCWlkZV9kZWxheV81MG1zKCk7
CQkvKiB3YWl0IGZvciBJUlEgYW5kIERSUV9TVEFUICovDQogCWlmIChPS19T
VEFUKEdFVF9TVEFUKCksRFJRX1NUQVQsQkFEX1JfU1RBVCkpIHsNCiAJCXVu
c2lnbmVkIGxvbmcgZmxhZ3M7DQotCQlfX3NhdmVfZmxhZ3MoZmxhZ3MpOwkv
KiBsb2NhbCBDUFUgb25seSAqLw0KLQkJX19jbGkoKTsJCS8qIGxvY2FsIENQ
VSBvbmx5OyBzb21lIHN5c3RlbXMgbmVlZCB0aGlzICovDQorCQlsb2NhbF9p
cnFfc2F2ZShmbGFncyk7CQkvKiBsb2NhbCBDUFUgb25seSAqLw0KKwkJbG9j
YWxfaXJxX2Rpc2FibGUoKTsJCS8qIGxvY2FsIENQVSBvbmx5ICovDQorCQkJ
LyogbG9jYWwgQ1BVIG9ubHk7IHNvbWUgc3lzdGVtcyBuZWVkIHRoaXMgKi8N
CiAJCWRvX2lkZW50aWZ5KGRyaXZlLCBjbWQpOyAvKiBkcml2ZSByZXR1cm5l
ZCBJRCAqLw0KIAkJcmMgPSAwOwkJCS8qIGRyaXZlIHJlc3BvbmRlZCB3aXRo
IElEICovDQogCQkodm9pZCkgR0VUX1NUQVQoKTsJLyogY2xlYXIgZHJpdmUg
SVJRICovDQotCQlfX3Jlc3RvcmVfZmxhZ3MoZmxhZ3MpOwkvKiBsb2NhbCBD
UFUgb25seSAqLw0KKwkJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwkvKiBs
b2NhbCBDUFUgb25seSAqLw0KIAl9IGVsc2UNCiAJCXJjID0gMjsJCQkvKiBk
cml2ZSByZWZ1c2VkIElEICovDQogCXJldHVybiByYzsNCkBAIC01NDAsOCAr
NTQxLDEwIEBADQogCQlyZXR1cm47CQ0KIAl9DQogDQotCV9fc2F2ZV9mbGFn
cyhmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQotCV9fc3RpKCk7CQkv
KiBsb2NhbCBDUFUgb25seTsgbmVlZGVkIGZvciBqaWZmaWVzIGFuZCBpcnEg
cHJvYmluZyAqLw0KKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CS8qIGxvY2Fs
IENQVSBvbmx5ICovDQorCWxvY2FsX2lycV9lbmFibGUoKTsJLyogbG9jYWwg
Q1BVIG9ubHkgKi8NCisJCS8qIG5lZWRlZCBmb3IgamlmZmllcyBhbmQgaXJx
IHByb2JpbmcgKi8NCisNCiAJLyoNCiAJICogU2Vjb25kIGRyaXZlIHNob3Vs
ZCBvbmx5IGV4aXN0IGlmIGZpcnN0IGRyaXZlIHdhcyBmb3VuZCwNCiAJICog
YnV0IGEgbG90IG9mIGNkcm9tIGRyaXZlcyBhcmUgY29uZmlndXJlZCBhcyBz
aW5nbGUgc2xhdmVzLg0KQEAgLTU3MCw3ICs1NzMsNyBAQA0KIAkJfSB3aGls
ZSAoKHN0YXQgJiBCVVNZX1NUQVQpICYmIHRpbWVfYWZ0ZXIodGltZW91dCwg
amlmZmllcykpOw0KIA0KIAl9DQotCV9fcmVzdG9yZV9mbGFncyhmbGFncyk7
CS8qIGxvY2FsIENQVSBvbmx5ICovDQorCWxvY2FsX2lycV9yZXN0b3JlKGZs
YWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCiAJZm9yICh1bml0ID0gMDsg
dW5pdCA8IE1BWF9EUklWRVM7ICsrdW5pdCkgew0KIAkJaWRlX2RyaXZlX3Qg
KmRyaXZlID0gJmh3aWYtPmRyaXZlc1t1bml0XTsNCiAJCWlmIChkcml2ZS0+
cHJlc2VudCkgew0KQEAgLTY0OCwxMCArNjUxLDggQEANCiAJLyogQWxsb2Nh
dGUgdGhlIGJ1ZmZlciBhbmQgcG90ZW50aWFsbHkgc2xlZXAgZmlyc3QgKi8N
CiAJDQogCW5ld19od2dyb3VwID0ga21hbGxvYyhzaXplb2YoaWRlX2h3Z3Jv
dXBfdCksR0ZQX0tFUk5FTCk7DQotCQ0KLQlzYXZlX2ZsYWdzKGZsYWdzKTsJ
LyogYWxsIENQVXMgKi8NCi0JY2xpKCk7CQkJLyogYWxsIENQVXMgKi8NCiAN
CisJc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3Mp
Ow0KIAlod2lmLT5od2dyb3VwID0gTlVMTDsNCiAjaWYgTUFYX0hXSUZTID4g
MQ0KIAkvKg0KQEAgLTY4Nyw3ICs2ODgsNyBAQA0KIAl9IGVsc2Ugew0KIAkJ
aHdncm91cCA9IG5ld19od2dyb3VwOw0KIAkJaWYgKCFod2dyb3VwKSB7DQot
CQkJcmVzdG9yZV9mbGFncyhmbGFncyk7CS8qIGFsbCBDUFVzICovDQorCQkJ
c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFn
cyk7DQogCQkJcmV0dXJuIDE7DQogCQl9DQogCQltZW1zZXQoaHdncm91cCwg
MCwgc2l6ZW9mKGlkZV9od2dyb3VwX3QpKTsNCkBAIC03MTcsNyArNzE4LDcg
QEANCiAJCWlmIChpZGVfcmVxdWVzdF9pcnEoaHdpZi0+aXJxLCAmaWRlX2lu
dHIsIHNhLCBod2lmLT5uYW1lLCBod2dyb3VwKSkgew0KIAkJCWlmICghbWF0
Y2gpDQogCQkJCWtmcmVlKGh3Z3JvdXApOw0KLQkJCXJlc3RvcmVfZmxhZ3Mo
ZmxhZ3MpOwkvKiBhbGwgQ1BVcyAqLw0KKwkJCXNwaW5fdW5sb2NrX2lycXJl
c3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0KIAkJCXJldHVybiAx
Ow0KIAkJfQ0KIAl9DQpAQCAtNzQ1LDcgKzc0Niw4IEBADQogCQlwcmludGso
IiVzIDogQWRkaW5nIG1pc3NlZCBod2lmIHRvIGh3Z3JvdXAhIVxuIiwgaHdp
Zi0+bmFtZSk7DQogI2VuZGlmDQogCX0NCi0JcmVzdG9yZV9mbGFncyhmbGFn
cyk7CS8qIGFsbCBDUFVzOyBzYWZlIG5vdyB0aGF0IGh3aWYtPmh3Z3JvdXAg
aXMgc2V0IHVwICovDQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlvX3Jl
cXVlc3RfbG9jaywgZmxhZ3MpOw0KKwkJLyogYWxsIENQVXM7IHNhZmUgbm93
IHRoYXQgaHdpZi0+aHdncm91cCBpcyBzZXQgdXAgKi8NCiANCiAjaWYgIWRl
ZmluZWQoX19tYzY4MDAwX18pICYmICFkZWZpbmVkKENPTkZJR19BUFVTKSAm
JiAhZGVmaW5lZChfX3NwYXJjX18pDQogCXByaW50aygiJXMgYXQgMHglMDN4
LTB4JTAzeCwweCUwM3ggb24gaXJxICVkIiwgaHdpZi0+bmFtZSwNCmRpZmYg
LXVyTiBsaW51eC0yLjQuMTktcDQvZHJpdmVycy9pZGUvaWRlLXByb2MuYyBs
aW51eC0yLjQuMTktcDQuc3Bpbi9kcml2ZXJzL2lkZS9pZGUtcHJvYy5jDQot
LS0gbGludXgtMi40LjE5LXA0L2RyaXZlcnMvaWRlL2lkZS1wcm9jLmMJVGh1
IE1hciAyMSAwNzowNTowNSAyMDAyDQorKysgbGludXgtMi40LjE5LXA0LnNw
aW4vZHJpdmVycy9pZGUvaWRlLXByb2MuYwlXZWQgTWFyIDI3IDIxOjU4OjI2
IDIwMDINCkBAIC01OTcsNyArNTk3LDcgQEANCiAJaWYgKCFkcml2ZXIpDQog
CQlsZW4gPSBzcHJpbnRmKHBhZ2UsICIobm9uZSlcbiIpOw0KICAgICAgICAg
ZWxzZQ0KLQkJbGVuID0gc3ByaW50ZihwYWdlLCIlbGx1XG4iLCAoX191NjQp
ICgoaWRlX2RyaXZlcl90ICopZHJpdmUtPmRyaXZlciktPmNhcGFjaXR5KGRy
aXZlKSk7DQorCQlsZW4gPSBzcHJpbnRmKHBhZ2UsIiVsdVxuIiwgKHU2NCkg
KChpZGVfZHJpdmVyX3QgKilkcml2ZS0+ZHJpdmVyKS0+Y2FwYWNpdHkoZHJp
dmUpKTsNCiAJUFJPQ19JREVfUkVBRF9SRVRVUk4ocGFnZSxzdGFydCxvZmYs
Y291bnQsZW9mLGxlbik7DQogfQ0KIA0KZGlmZiAtdXJOIGxpbnV4LTIuNC4x
OS1wNC9kcml2ZXJzL2lkZS9pZGUtdGFwZS5jIGxpbnV4LTIuNC4xOS1wNC5z
cGluL2RyaXZlcnMvaWRlL2lkZS10YXBlLmMNCi0tLSBsaW51eC0yLjQuMTkt
cDQvZHJpdmVycy9pZGUvaWRlLXRhcGUuYwlUaHUgTWFyIDIxIDA3OjA1OjA1
IDIwMDINCisrKyBsaW51eC0yLjQuMTktcDQuc3Bpbi9kcml2ZXJzL2lkZS9p
ZGUtdGFwZS5jCVdlZCBNYXIgMjcgMjI6MDE6MDkgMjAwMg0KQEAgLTIwOTAs
NyArMjA5MCw3IEBADQogI2VuZGlmIC8qIElERVRBUEVfREVCVUdfTE9HICov
DQogCQljbGVhcl9iaXQgKFBDX0RNQV9JTl9QUk9HUkVTUywgJnBjLT5mbGFn
cyk7DQogDQotCQlpZGVfX3N0aSgpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0K
KwkJbG9jYWxfaXJxX2VuYWJsZSgpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0K
IA0KICNpZiBTSU1VTEFURV9FUlJPUlMNCiAJCWlmICgocGMtPmNbMF0gPT0g
SURFVEFQRV9XUklURV9DTUQgfHwgcGMtPmNbMF0gPT0gSURFVEFQRV9SRUFE
X0NNRCkgJiYgKCsrZXJyb3Jfc2ltX2NvdW50ICUgMTAwKSA9PSAwKSB7DQpA
QCAtNjA4NSwxNCArNjA4NSwxNSBAQA0KIAlpbnQgbWlub3IgPSB0YXBlLT5t
aW5vcjsNCiAJdW5zaWduZWQgbG9uZyBmbGFnczsNCiANCi0Jc2F2ZV9mbGFn
cyAoZmxhZ3MpOwkvKiBhbGwgQ1BVcyAob3ZlcmtpbGw/KSAqLw0KLQljbGko
KTsJCQkvKiBhbGwgQ1BVcyAob3ZlcmtpbGw/KSAqLw0KLQlpZiAodGVzdF9i
aXQgKElERVRBUEVfQlVTWSwgJnRhcGUtPmZsYWdzKSB8fCB0YXBlLT5maXJz
dF9zdGFnZSAhPSBOVUxMIHx8IHRhcGUtPm1lcmdlX3N0YWdlX3NpemUgfHwg
ZHJpdmUtPnVzYWdlKSB7DQotCQlyZXN0b3JlX2ZsYWdzKGZsYWdzKTsJLyog
YWxsIENQVXMgKG92ZXJraWxsPykgKi8NCisJc3Bpbl9sb2NrX2lycXNhdmUo
JmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0KKwlpZiAodGVzdF9iaXQgKElE
RVRBUEVfQlVTWSwgJnRhcGUtPmZsYWdzKSB8fA0KKwkgICAgdGFwZS0+Zmly
c3Rfc3RhZ2UgIT0gTlVMTCB8fA0KKwkgICAgdGFwZS0+bWVyZ2Vfc3RhZ2Vf
c2l6ZSB8fCBkcml2ZS0+dXNhZ2UpIHsNCisJCXNwaW5fdW5sb2NrX2lycXJl
c3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0KIAkJcmV0dXJuIDE7
DQogCX0NCiAJaWRldGFwZV9jaHJkZXZzW21pbm9yXS5kcml2ZSA9IE5VTEw7
DQotCXJlc3RvcmVfZmxhZ3MgKGZsYWdzKTsJLyogYWxsIENQVXMgKG92ZXJr
aWxsPykgKi8NCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVz
dF9sb2NrLCBmbGFncyk7DQogCURSSVZFUihkcml2ZSktPmJ1c3kgPSAwOw0K
IAkodm9pZCkgaWRlX3VucmVnaXN0ZXJfc3ViZHJpdmVyIChkcml2ZSk7DQog
CWRyaXZlLT5kcml2ZXJfZGF0YSA9IE5VTEw7DQpkaWZmIC11ck4gbGludXgt
Mi40LjE5LXA0L2RyaXZlcnMvaWRlL2lkZS10YXNrZmlsZS5jIGxpbnV4LTIu
NC4xOS1wNC5zcGluL2RyaXZlcnMvaWRlL2lkZS10YXNrZmlsZS5jDQotLS0g
bGludXgtMi40LjE5LXA0L2RyaXZlcnMvaWRlL2lkZS10YXNrZmlsZS5jCVRo
dSBNYXIgMjEgMDc6MDU6MDUgMjAwMg0KKysrIGxpbnV4LTIuNC4xOS1wNC5z
cGluL2RyaXZlcnMvaWRlL2lkZS10YXNrZmlsZS5jCVdlZCBNYXIgMjcgMjE6
Mzk6NTQgMjAwMg0KQEAgLTEyNywxMSArMTI3LDExIEBADQogI2lmIFNVUFBP
UlRfVkxCX1NZTkMNCiAJCWlmIChpb18zMmJpdCAmIDIpIHsNCiAJCQl1bnNp
Z25lZCBsb25nIGZsYWdzOw0KLQkJCV9fc2F2ZV9mbGFncyhmbGFncyk7CS8q
IGxvY2FsIENQVSBvbmx5ICovDQotCQkJX19jbGkoKTsJCS8qIGxvY2FsIENQ
VSBvbmx5ICovDQorCQkJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwkJLyogbG9j
YWwgQ1BVIG9ubHkgKi8NCisJCQlsb2NhbF9pcnFfZGlzYWJsZSgpOwkJLyog
bG9jYWwgQ1BVIG9ubHkgKi8NCiAJCQl0YXNrX3ZsYl9zeW5jKElERV9OU0VD
VE9SX1JFRyk7DQogCQkJaW5zbChJREVfREFUQV9SRUcsIGJ1ZmZlciwgd2Nv
dW50KTsNCi0JCQlfX3Jlc3RvcmVfZmxhZ3MoZmxhZ3MpOwkvKiBsb2NhbCBD
UFUgb25seSAqLw0KKwkJCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsJLyog
bG9jYWwgQ1BVIG9ubHkgKi8NCiAJCX0gZWxzZQ0KICNlbmRpZiAvKiBTVVBQ
T1JUX1ZMQl9TWU5DICovDQogCQkJaW5zbChJREVfREFUQV9SRUcsIGJ1ZmZl
ciwgd2NvdW50KTsNCkBAIC0xNjcsMTEgKzE2NywxMSBAQA0KICNpZiBTVVBQ
T1JUX1ZMQl9TWU5DDQogCQlpZiAoaW9fMzJiaXQgJiAyKSB7DQogCQkJdW5z
aWduZWQgbG9uZyBmbGFnczsNCi0JCQlfX3NhdmVfZmxhZ3MoZmxhZ3MpOwkv
KiBsb2NhbCBDUFUgb25seSAqLw0KLQkJCV9fY2xpKCk7CQkvKiBsb2NhbCBD
UFUgb25seSAqLw0KKwkJCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsJCS8qIGxv
Y2FsIENQVSBvbmx5ICovDQorCQkJbG9jYWxfaXJxX2Rpc2FibGUoKTsJCS8q
IGxvY2FsIENQVSBvbmx5ICovDQogCQkJdGFza192bGJfc3luYyhJREVfTlNF
Q1RPUl9SRUcpOw0KIAkJCW91dHNsKElERV9EQVRBX1JFRywgYnVmZmVyLCB3
Y291bnQpOw0KLQkJCV9fcmVzdG9yZV9mbGFncyhmbGFncyk7CS8qIGxvY2Fs
IENQVSBvbmx5ICovDQorCQkJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwkv
KiBsb2NhbCBDUFUgb25seSAqLw0KIAkJfSBlbHNlDQogI2VuZGlmIC8qIFNV
UFBPUlRfVkxCX1NZTkMgKi8NCiAJCQlvdXRzbChJREVfREFUQV9SRUcsIGJ1
ZmZlciwgd2NvdW50KTsNCkBAIC00OTEsOCArNDkxLDggQEANCiAJdW5zaWdu
ZWQgbG9uZyBmbGFnczsNCiAJYnl0ZSBlcnIgPSAwOw0KIA0KLQlfX3NhdmVf
ZmxhZ3MgKGZsYWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCi0JaWRlX19z
dGkoKTsJCS8qIGxvY2FsIENQVSBvbmx5ICovDQorCWxvY2FsX2lycV9zYXZl
KGZsYWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCisJbG9jYWxfaXJxX2Vu
YWJsZSgpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0KIAlwcmludGsoIiVzOiAl
czogc3RhdHVzPTB4JTAyeCIsIGRyaXZlLT5uYW1lLCBtc2csIHN0YXQpOw0K
ICNpZiBGQU5DWV9TVEFUVVNfRFVNUFMNCiAJcHJpbnRrKCIgeyAiKTsNCkBA
IC01NTcsNyArNTU3LDcgQEANCiAjZW5kaWYgIC8qIEZBTkNZX1NUQVRVU19E
VU1QUyAqLw0KIAkJcHJpbnRrKCJcbiIpOw0KIAl9DQotCV9fcmVzdG9yZV9m
bGFncyAoZmxhZ3MpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0KKwlsb2NhbF9p
cnFfcmVzdG9yZShmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQogCXJl
dHVybiBlcnI7DQogfQ0KIA0KQEAgLTc0Miw4ICs3NDIsNyBAQA0KIAlpZGVf
dGFza190ICphcmdzCT0gSFdHUk9VUChkcml2ZSktPnJxLT5zcGVjaWFsOw0K
IAlieXRlIHN0YXQJCT0gR0VUX1NUQVQoKTsNCiANCi0JaWRlX19zdGkoKTsJ
LyogbG9jYWwgQ1BVIG9ubHkgKi8NCi0NCisJbG9jYWxfaXJxX2VuYWJsZSgp
OwkvKiBsb2NhbCBDUFUgb25seSAqLw0KIAlpZiAoIU9LX1NUQVQoc3RhdCwg
UkVBRFlfU1RBVCwgQkFEX1NUQVQpKQ0KIAkJcmV0dXJuIGlkZV9lcnJvcihk
cml2ZSwgInRhc2tfbm9fZGF0YV9pbnRyIiwgc3RhdCk7DQogCQkvKiBjYWxs
cyBpZGVfZW5kX2RyaXZlX2NtZCAqLw0KZGlmZiAtdXJOIGxpbnV4LTIuNC4x
OS1wNC9kcml2ZXJzL2lkZS9pZGUuYyBsaW51eC0yLjQuMTktcDQuc3Bpbi9k
cml2ZXJzL2lkZS9pZGUuYw0KLS0tIGxpbnV4LTIuNC4xOS1wNC9kcml2ZXJz
L2lkZS9pZGUuYwlUaHUgTWFyIDIxIDA3OjA1OjA2IDIwMDINCisrKyBsaW51
eC0yLjQuMTktcDQuc3Bpbi9kcml2ZXJzL2lkZS9pZGUuYwlXZWQgTWFyIDI3
IDIxOjIzOjA2IDIwMDINCkBAIC0yMTcsMTMgKzIxNywxMyBAQA0KIAl1bnNp
Z25lZCBsb25nIHQsIGZsYWdzOw0KIAlpbnQgaTsNCiANCi0JX19zYXZlX2Zs
YWdzKGZsYWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCi0JX19jbGkoKTsJ
CS8qIGxvY2FsIENQVSBvbmx5ICovDQorCWxvY2FsX2lycV9zYXZlKGZsYWdz
KTsJCS8qIGxvY2FsIENQVSBvbmx5ICovDQorCWxvY2FsX2lycV9kaXNhYmxl
KCk7CQkvKiBsb2NhbCBDUFUgb25seSAqLw0KIAl0ID0gamlmZmllcyAqIDEx
OTMyOw0KICAgICAJb3V0Yl9wKDAsIDB4NDMpOw0KIAlpID0gaW5iX3AoMHg0
MCk7DQogCWkgfD0gaW5iKDB4NDApIDw8IDg7DQotCV9fcmVzdG9yZV9mbGFn
cyhmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQorCWxvY2FsX2lycV9y
ZXN0b3JlKGZsYWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCiAJcmV0dXJu
ICh0IC0gaSk7DQogfQ0KICNlbmRpZiAvKiBESVNLX1JFQ09WRVJZX1RJTUUg
Ki8NCkBAIC02MDUsOCArNjA1LDggQEANCiAJaWRlX2h3aWZfdCAqaHdpZiA9
IEhXSUYoZHJpdmUpOw0KIAlpZGVfaHdncm91cF90ICpod2dyb3VwID0gSFdH
Uk9VUChkcml2ZSk7DQogDQotCV9fc2F2ZV9mbGFncyhmbGFncyk7CS8qIGxv
Y2FsIENQVSBvbmx5ICovDQotCV9fY2xpKCk7CQkvKiBsb2NhbCBDUFUgb25s
eSAqLw0KKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CQkvKiBsb2NhbCBDUFUg
b25seSAqLw0KKwlsb2NhbF9pcnFfZGlzYWJsZSgpOwkJLyogbG9jYWwgQ1BV
IG9ubHkgKi8NCiANCiAJLyogRm9yIGFuIEFUQVBJIGRldmljZSwgZmlyc3Qg
dHJ5IGFuIEFUQVBJIFNSU1QuICovDQogCWlmIChkcml2ZS0+bWVkaWEgIT0g
aWRlX2Rpc2sgJiYgIWRvX25vdF90cnlfYXRhcGkpIHsNCkBAIC02MTYsNyAr
NjE2LDcgQEANCiAJCU9VVF9CWVRFIChXSU5fU1JTVCwgSURFX0NPTU1BTkRf
UkVHKTsNCiAJCWh3Z3JvdXAtPnBvbGxfdGltZW91dCA9IGppZmZpZXMgKyBX
QUlUX1dPUlNUQ0FTRTsNCiAJCWlkZV9zZXRfaGFuZGxlciAoZHJpdmUsICZh
dGFwaV9yZXNldF9wb2xsZnVuYywgSFovMjAsIE5VTEwpOw0KLQkJX19yZXN0
b3JlX2ZsYWdzIChmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQorCQls
b2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICov
DQogCQlyZXR1cm4gaWRlX3N0YXJ0ZWQ7DQogCX0NCiANCkBAIC02MjksNyAr
NjI5LDcgQEANCiANCiAjaWYgT0tfVE9fUkVTRVRfQ09OVFJPTExFUg0KIAlp
ZiAoIUlERV9DT05UUk9MX1JFRykgew0KLQkJX19yZXN0b3JlX2ZsYWdzKGZs
YWdzKTsNCisJCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsJLyogbG9jYWwg
Q1BVIG9ubHkgKi8NCiAJCXJldHVybiBpZGVfc3RvcHBlZDsNCiAJfQ0KIAkv
Kg0KQEAgLTY2MSw3ICs2NjEsNyBAQA0KIA0KICNlbmRpZgkvKiBPS19UT19S
RVNFVF9DT05UUk9MTEVSICovDQogDQotCV9fcmVzdG9yZV9mbGFncyAoZmxh
Z3MpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0KKwlsb2NhbF9pcnFfcmVzdG9y
ZShmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQogCXJldHVybiBpZGVf
c3RhcnRlZDsNCiB9DQogDQpAQCAtNzY4LDggKzc2OCw4IEBADQogCXVuc2ln
bmVkIGxvbmcgZmxhZ3M7DQogCWJ5dGUgZXJyID0gMDsNCiANCi0JX19zYXZl
X2ZsYWdzIChmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQotCWlkZV9f
c3RpKCk7CQkvKiBsb2NhbCBDUFUgb25seSAqLw0KKwlsb2NhbF9pcnFfc2F2
ZShmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQorCWxvY2FsX2lycV9l
bmFibGUoKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCiAJcHJpbnRrKCIlczog
JXM6IHN0YXR1cz0weCUwMngiLCBkcml2ZS0+bmFtZSwgbXNnLCBzdGF0KTsN
CiAjaWYgRkFOQ1lfU1RBVFVTX0RVTVBTDQogCXByaW50aygiIHsgIik7DQpA
QCAtODM1LDcgKzgzNSw3IEBADQogI2VuZGlmCS8qIEZBTkNZX1NUQVRVU19E
VU1QUyAqLw0KIAkJcHJpbnRrKCJcbiIpOw0KIAl9DQotCV9fcmVzdG9yZV9m
bGFncyAoZmxhZ3MpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0KKwlsb2NhbF9p
cnFfcmVzdG9yZShmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQogCXJl
dHVybiBlcnI7DQogfQ0KIA0KQEAgLTk0Niw3ICs5NDYsNyBAQA0KIAlieXRl
IHN0YXQgPSBHRVRfU1RBVCgpOw0KIAlpbnQgcmV0cmllcyA9IDEwOw0KIA0K
LQlpZGVfX3N0aSgpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0KKwlsb2NhbF9p
cnFfZW5hYmxlKCk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQogCWlmICgoc3Rh
dCAmIERSUV9TVEFUKSAmJiBhcmdzICYmIGFyZ3NbM10pIHsNCiAJCWJ5dGUg
aW9fMzJiaXQgPSBkcml2ZS0+aW9fMzJiaXQ7DQogCQlkcml2ZS0+aW9fMzJi
aXQgPSAwOw0KQEAgLTEwMTEsMTcgKzEwMTEsMTcgQEANCiANCiAJdWRlbGF5
KDEpOwkvKiBzcGVjIGFsbG93cyBkcml2ZSA0MDBucyB0byBhc3NlcnQgIkJV
U1kiICovDQogCWlmICgoc3RhdCA9IEdFVF9TVEFUKCkpICYgQlVTWV9TVEFU
KSB7DQotCQlfX3NhdmVfZmxhZ3MoZmxhZ3MpOwkvKiBsb2NhbCBDUFUgb25s
eSAqLw0KLQkJaWRlX19zdGkoKTsJCS8qIGxvY2FsIENQVSBvbmx5ICovDQor
CQlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICov
DQorCQlsb2NhbF9pcnFfZW5hYmxlKCk7CS8qIGxvY2FsIENQVSBvbmx5ICov
DQogCQl0aW1lb3V0ICs9IGppZmZpZXM7DQogCQl3aGlsZSAoKHN0YXQgPSBH
RVRfU1RBVCgpKSAmIEJVU1lfU1RBVCkgew0KIAkJCWlmICh0aW1lX2FmdGVy
KGppZmZpZXMsIHRpbWVvdXQpKSB7DQotCQkJCV9fcmVzdG9yZV9mbGFncyhm
bGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQorCQkJCWxvY2FsX2lycV9y
ZXN0b3JlKGZsYWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCiAJCQkJKnN0
YXJ0c3RvcCA9IGlkZV9lcnJvcihkcml2ZSwgInN0YXR1cyB0aW1lb3V0Iiwg
c3RhdCk7DQogCQkJCXJldHVybiAxOw0KIAkJCX0NCiAJCX0NCi0JCV9fcmVz
dG9yZV9mbGFncyhmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQorCQls
b2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICov
DQogCX0NCiAJLyoNCiAJICogQWxsb3cgc3RhdHVzIHRvIHNldHRsZSwgdGhl
biByZWFkIGl0IGFnYWluLg0KQEAgLTEzNDQsNyArMTM0NCw4IEBADQogDQog
CWlkZV9nZXRfbG9jaygmaWRlX2xvY2ssIGlkZV9pbnRyLCBod2dyb3VwKTsJ
LyogZm9yIGF0YXJpIG9ubHk6IFBPU1NJQkxZIEJST0tFTiBIRVJFKD8pICov
DQogDQotCV9fY2xpKCk7CS8qIG5lY2Vzc2FyeSBwYXJhbm9pYTogZW5zdXJl
IElSUXMgYXJlIG1hc2tlZCBvbiBsb2NhbCBDUFUgKi8NCisJbG9jYWxfaXJx
X2Rpc2FibGUoKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCisJCS8qIG5lY2Vz
c2FyeSBwYXJhbm9pYTogZW5zdXJlIElSUXMgYXJlIG1hc2tlZCBvbiBsb2Nh
bCBDUFUgKi8NCiANCiAJd2hpbGUgKCFod2dyb3VwLT5idXN5KSB7DQogCQlo
d2dyb3VwLT5idXN5ID0gMTsNCkBAIC0xNDA1LDcgKzE0MDYsOCBAQA0KIAkJ
aWYgKG1hc2tlZF9pcnEgJiYgaHdpZi0+aXJxICE9IG1hc2tlZF9pcnEpDQog
CQkJZGlzYWJsZV9pcnFfbm9zeW5jKGh3aWYtPmlycSk7DQogCQlzcGluX3Vu
bG9jaygmaW9fcmVxdWVzdF9sb2NrKTsNCi0JCWlkZV9fc3RpKCk7CS8qIGFs
bG93IG90aGVyIElSUXMgd2hpbGUgd2Ugc3RhcnQgdGhpcyByZXF1ZXN0ICov
DQorCQlsb2NhbF9pcnFfZW5hYmxlKCk7CS8qIGxvY2FsIENQVSBvbmx5ICov
DQorCQkJLyogYWxsb3cgb3RoZXIgSVJRcyB3aGlsZSB3ZSBzdGFydCB0aGlz
IHJlcXVlc3QgKi8NCiAJCXN0YXJ0c3RvcCA9IHN0YXJ0X3JlcXVlc3QoZHJp
dmUsIHJxKTsNCiAJCXNwaW5fbG9ja19pcnEoJmlvX3JlcXVlc3RfbG9jayk7
DQogCQlpZiAobWFza2VkX2lycSAmJiBod2lmLT5pcnEgIT0gbWFza2VkX2ly
cSkNCkBAIC0xNTQwLDcgKzE1NDIsOCBAQA0KICNlbHNlDQogCQkJZGlzYWJs
ZV9pcnEoaHdpZi0+aXJxKTsJLyogZGlzYWJsZV9pcnFfbm9zeW5jID8/ICov
DQogI2VuZGlmIC8qIERJU0FCTEVfSVJRX05PU1lOQyAqLw0KLQkJCV9fY2xp
KCk7CS8qIGxvY2FsIENQVSBvbmx5LCBhcyBpZiB3ZSB3ZXJlIGhhbmRsaW5n
IGFuIGludGVycnVwdCAqLw0KKwkJCWxvY2FsX2lycV9kaXNhYmxlKCk7CS8q
IGxvY2FsIENQVSBvbmx5ICovDQorCQkJCS8qIGFzIGlmIHdlIHdlcmUgaGFu
ZGxpbmcgYW4gaW50ZXJydXB0ICovDQogCQkJaWYgKGh3Z3JvdXAtPnBvbGxf
dGltZW91dCAhPSAwKSB7DQogCQkJCXN0YXJ0c3RvcCA9IGhhbmRsZXIoZHJp
dmUpOw0KIAkJCX0gZWxzZSBpZiAoZHJpdmVfaXNfcmVhZHkoZHJpdmUpKSB7
DQpAQCAtMTY0Miw3ICsxNjQ1LDggQEANCiAJCXJldHVybjsNCiAJfQ0KIA0K
LQlpZiAoKGhhbmRsZXIgPSBod2dyb3VwLT5oYW5kbGVyKSA9PSBOVUxMIHx8
IGh3Z3JvdXAtPnBvbGxfdGltZW91dCAhPSAwKSB7DQorCWlmICgoaGFuZGxl
ciA9IGh3Z3JvdXAtPmhhbmRsZXIpID09IE5VTEwgfHwNCisJICAgICBod2dy
b3VwLT5wb2xsX3RpbWVvdXQgIT0gMCkgew0KIAkJLyoNCiAJCSAqIE5vdCBl
eHBlY3RpbmcgYW4gaW50ZXJydXB0IGZyb20gdGhpcyBkcml2ZS4NCiAJCSAq
IFRoYXQgbWVhbnMgdGhpcyBjb3VsZCBiZToNCkBAIC0xNjY3LDcgKzE2NzEs
OCBAQA0KICNpZmRlZiBDT05GSUdfQkxLX0RFVl9JREVQQ0kNCiAJCX0gZWxz
ZSB7DQogCQkJLyoNCi0JCQkgKiBXaGFjayB0aGUgc3RhdHVzIHJlZ2lzdGVy
LCBqdXN0IGluIGNhc2Ugd2UgaGF2ZSBhIGxlZnRvdmVyIHBlbmRpbmcgSVJR
Lg0KKwkJCSAqIFdoYWNrIHRoZSBzdGF0dXMgcmVnaXN0ZXIsDQorCQkJICog
anVzdCBpbiBjYXNlIHdlIGhhdmUgYSBsZWZ0b3ZlciBwZW5kaW5nIElSUS4N
CiAJCQkgKi8NCiAJCQkodm9pZCkgSU5fQllURShod2lmLT5pb19wb3J0c1tJ
REVfU1RBVFVTX09GRlNFVF0pOw0KICNlbmRpZiAvKiBDT05GSUdfQkxLX0RF
Vl9JREVQQ0kgKi8NCkBAIC0xNjc4LDE2ICsxNjgzLDE4IEBADQogCWRyaXZl
ID0gaHdncm91cC0+ZHJpdmU7DQogCWlmICghZHJpdmUpIHsNCiAJCS8qDQot
CQkgKiBUaGlzIHNob3VsZCBORVZFUiBoYXBwZW4sIGFuZCB0aGVyZSBpc24n
dCBtdWNoIHdlIGNvdWxkIGRvIGFib3V0IGl0IGhlcmUuDQorCQkgKiBUaGlz
IHNob3VsZCBORVZFUiBoYXBwZW4sDQorCQkgKiBhbmQgdGhlcmUgaXNuJ3Qg
bXVjaCB3ZSBjb3VsZCBkbyBhYm91dCBpdCBoZXJlLg0KIAkJICovDQogCQlz
cGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdz
KTsNCiAJCXJldHVybjsNCiAJfQ0KIAlpZiAoIWRyaXZlX2lzX3JlYWR5KGRy
aXZlKSkgew0KIAkJLyoNCi0JCSAqIFRoaXMgaGFwcGVucyByZWd1bGFybHkg
d2hlbiB3ZSBzaGFyZSBhIFBDSSBJUlEgd2l0aCBhbm90aGVyIGRldmljZS4N
Ci0JCSAqIFVuZm9ydHVuYXRlbHksIGl0IGNhbiBhbHNvIGhhcHBlbiB3aXRo
IHNvbWUgYnVnZ3kgZHJpdmVzIHRoYXQgdHJpZ2dlcg0KLQkJICogdGhlIElS
USBiZWZvcmUgdGhlaXIgc3RhdHVzIHJlZ2lzdGVyIGlzIHVwIHRvIGRhdGUu
ICBIb3BlZnVsbHkgd2UgaGF2ZQ0KKwkJICogVGhpcyBoYXBwZW5zIHJlZ3Vs
YXJseSB3aGVuIHdlIHNoYXJlIGEgUENJIElSUSB3aXRoDQorCQkgKiBhbm90
aGVyIGRldmljZS4gIFVuZm9ydHVuYXRlbHksIGl0IGNhbiBhbHNvIGhhcHBl
bg0KKwkJICogd2l0aCBzb21lIGJ1Z2d5IGRyaXZlcyB0aGF0IHRyaWdnZXIg
dGhlIElSUSBiZWZvcmUNCisJCSAqIHRoZWlyIHN0YXR1cyByZWdpc3RlciBp
cyB1cCB0byBkYXRlLiAgSG9wZWZ1bGx5IHdlIGhhdmUNCiAJCSAqIGVub3Vn
aCBhZHZhbmNlIG92ZXJoZWFkIHRoYXQgdGhlIGxhdHRlciBpc24ndCBhIHBy
b2JsZW0uDQogCQkgKi8NCiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlv
X3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0KQEAgLTE3MDIsOCArMTcwOSw4IEBA
DQogCXNwaW5fdW5sb2NrKCZpb19yZXF1ZXN0X2xvY2spOw0KIA0KIAlpZiAo
ZHJpdmUtPnVubWFzaykNCi0JCWlkZV9fc3RpKCk7CS8qIGxvY2FsIENQVSBv
bmx5ICovDQotCXN0YXJ0c3RvcCA9IGhhbmRsZXIoZHJpdmUpOwkJLyogc2Vy
dmljZSB0aGlzIGludGVycnVwdCwgbWF5IHNldCBoYW5kbGVyIGZvciBuZXh0
IGludGVycnVwdCAqLw0KKwkJbG9jYWxfaXJxX2VuYWJsZSgpOwkvKiBsb2Nh
bCBDUFUgb25seSAqLw0KKwlzdGFydHN0b3AgPSBoYW5kbGVyKGRyaXZlKTsJ
Lyogc2VydmljZSB0aGlzIGludGVycnVwdCwgbWF5IHNldCBoYW5kbGVyIGZv
ciBuZXh0IGludGVycnVwdCAqLw0KIAlzcGluX2xvY2tfaXJxKCZpb19yZXF1
ZXN0X2xvY2spOw0KIA0KIAkvKg0KQEAgLTIwNDYsOCArMjA1Myw3IEBADQog
DQogCWlmIChpbmRleCA+PSBNQVhfSFdJRlMpDQogCQlyZXR1cm47DQotCXNh
dmVfZmxhZ3MoZmxhZ3MpOwkvKiBhbGwgQ1BVcyAqLw0KLQljbGkoKTsJCQkv
KiBhbGwgQ1BVcyAqLw0KKwlzcGluX2xvY2tfaXJxc2F2ZSgmaW9fcmVxdWVz
dF9sb2NrLCBmbGFncyk7DQogCWh3aWYgPSAmaWRlX2h3aWZzW2luZGV4XTsN
CiAJaWYgKCFod2lmLT5wcmVzZW50KQ0KIAkJZ290byBhYm9ydDsNCkBAIC0y
MDY1LDcgKzIwNzEsNyBAQA0KIAkvKg0KIAkgKiBBbGwgY2xlYXI/ICBUaGVu
IGJsb3cgYXdheSB0aGUgYnVmZmVyIGNhY2hlDQogCSAqLw0KLQlzdGkoKTsN
CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBm
bGFncyk7DQogCWZvciAodW5pdCA9IDA7IHVuaXQgPCBNQVhfRFJJVkVTOyAr
K3VuaXQpIHsNCiAJCWRyaXZlID0gJmh3aWYtPmRyaXZlc1t1bml0XTsNCiAJ
CWlmICghZHJpdmUtPnByZXNlbnQpDQpAQCAtMjA4MSw3ICsyMDg3LDcgQEAN
CiAJCWRlc3Ryb3lfcHJvY19pZGVfZHJpdmVzKGh3aWYpOw0KICNlbmRpZg0K
IAl9DQotCWNsaSgpOw0KKwlzcGluX2xvY2tfaXJxc2F2ZSgmaW9fcmVxdWVz
dF9sb2NrLCBmbGFncyk7DQogCWh3Z3JvdXAgPSBod2lmLT5od2dyb3VwOw0K
IA0KIAkvKg0KQEAgLTIyMDEsNyArMjIwNyw3IEBADQogCWh3aWYtPnN0cmFp
Z2h0OAkJPSBvbGRfaHdpZi5zdHJhaWdodDg7DQogCWh3aWYtPmh3aWZfZGF0
YQkJPSBvbGRfaHdpZi5od2lmX2RhdGE7DQogYWJvcnQ6DQotCXJlc3RvcmVf
ZmxhZ3MoZmxhZ3MpOwkvKiBhbGwgQ1BVcyAqLw0KKwlzcGluX3VubG9ja19p
cnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsNCiB9DQogDQog
LyoNCkBAIC0yNDEzLDE0ICsyNDE5LDE0IEBADQogCXdoaWxlIChod2dyb3Vw
LT5idXN5KSB7DQogCQl1bnNpZ25lZCBsb25nIGxmbGFnczsNCiAJCXNwaW5f
dW5sb2NrX2lycSgmaW9fcmVxdWVzdF9sb2NrKTsNCi0JCV9fc2F2ZV9mbGFn
cyhsZmxhZ3MpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0KLQkJX19zdGkoKTsJ
CS8qIGxvY2FsIENQVSBvbmx5OyBuZWVkZWQgZm9yIGppZmZpZXMgKi8NCisJ
CWxvY2FsX2lycV9zYXZlKGxmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICov
DQorCQlsb2NhbF9pcnFfZW5hYmxlKCk7CS8qIGxvY2FsIENQVSBvbmx5OyBu
ZWVkZWQgZm9yIGppZmZpZXMgKi8NCiAJCWlmICh0aW1lX2FmdGVyKGppZmZp
ZXMsIHRpbWVvdXQpKSB7DQotCQkJX19yZXN0b3JlX2ZsYWdzKGxmbGFncyk7
CS8qIGxvY2FsIENQVSBvbmx5ICovDQorCQkJbG9jYWxfaXJxX3Jlc3RvcmUo
bGZsYWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCiAJCQlwcmludGsoIiVz
OiBjaGFubmVsIGJ1c3lcbiIsIGRyaXZlLT5uYW1lKTsNCiAJCQlyZXR1cm4g
LUVCVVNZOw0KIAkJfQ0KLQkJX19yZXN0b3JlX2ZsYWdzKGxmbGFncyk7CS8q
IGxvY2FsIENQVSBvbmx5ICovDQorCQlsb2NhbF9pcnFfcmVzdG9yZShsZmxh
Z3MpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0KIAkJc3Bpbl9sb2NrX2lycSgm
aW9fcmVxdWVzdF9sb2NrKTsNCiAJfQ0KIAlyZXR1cm4gMDsNCkBAIC0zNTkz
LDE2ICszNTk5LDE3IEBADQogaW50IGlkZV9yZWdpc3Rlcl9zdWJkcml2ZXIg
KGlkZV9kcml2ZV90ICpkcml2ZSwgaWRlX2RyaXZlcl90ICpkcml2ZXIsIGlu
dCB2ZXJzaW9uKQ0KIHsNCiAJdW5zaWduZWQgbG9uZyBmbGFnczsNCi0JDQot
CXNhdmVfZmxhZ3MoZmxhZ3MpOwkJLyogYWxsIENQVXMgKi8NCi0JY2xpKCk7
CQkJCS8qIGFsbCBDUFVzICovDQotCWlmICh2ZXJzaW9uICE9IElERV9TVUJE
UklWRVJfVkVSU0lPTiB8fCAhZHJpdmUtPnByZXNlbnQgfHwgZHJpdmUtPmRy
aXZlciAhPSBOVUxMIHx8IGRyaXZlLT5idXN5IHx8IGRyaXZlLT51c2FnZSkg
ew0KLQkJcmVzdG9yZV9mbGFncyhmbGFncyk7CS8qIGFsbCBDUFVzICovDQor
DQorCXNwaW5fbG9ja19pcnFzYXZlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdz
KTsNCisJaWYgKHZlcnNpb24gIT0gSURFX1NVQkRSSVZFUl9WRVJTSU9OIHx8
DQorCQkJIWRyaXZlLT5wcmVzZW50IHx8IGRyaXZlLT5kcml2ZXIgIT0gTlVM
TCB8fA0KKwkJCWRyaXZlLT5idXN5IHx8IGRyaXZlLT51c2FnZSkgew0KKwkJ
c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFn
cyk7DQogCQlyZXR1cm4gMTsNCiAJfQ0KIAlkcml2ZS0+ZHJpdmVyID0gZHJp
dmVyOw0KIAlzZXR1cF9kcml2ZXJfZGVmYXVsdHMoZHJpdmUpOw0KLQlyZXN0
b3JlX2ZsYWdzKGZsYWdzKTsJCS8qIGFsbCBDUFVzICovDQorCXNwaW5fdW5s
b2NrX2lycXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0KIAlp
ZiAoZHJpdmUtPmF1dG90dW5lICE9IDIpIHsNCiAJCWlmIChkcml2ZXItPnN1
cHBvcnRzX2RtYSAmJiBIV0lGKGRyaXZlKS0+ZG1hcHJvYyAhPSBOVUxMKSB7
DQogCQkJLyoNCkBAIC0zNjI5LDExICszNjM2LDEwIEBADQogaW50IGlkZV91
bnJlZ2lzdGVyX3N1YmRyaXZlciAoaWRlX2RyaXZlX3QgKmRyaXZlKQ0KIHsN
CiAJdW5zaWduZWQgbG9uZyBmbGFnczsNCi0JDQotCXNhdmVfZmxhZ3MoZmxh
Z3MpOwkJLyogYWxsIENQVXMgKi8NCi0JY2xpKCk7CQkJCS8qIGFsbCBDUFVz
ICovDQorDQorCXNwaW5fbG9ja19pcnFzYXZlKCZpb19yZXF1ZXN0X2xvY2ss
IGZsYWdzKTsNCiAJaWYgKGRyaXZlLT51c2FnZSB8fCBkcml2ZS0+YnVzeSB8
fCBkcml2ZS0+ZHJpdmVyID09IE5VTEwgfHwgRFJJVkVSKGRyaXZlKS0+YnVz
eSkgew0KLQkJcmVzdG9yZV9mbGFncyhmbGFncyk7CS8qIGFsbCBDUFVzICov
DQorCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ss
IGZsYWdzKTsNCiAJCXJldHVybiAxOw0KIAl9DQogI2lmIGRlZmluZWQoQ09O
RklHX0JMS19ERVZfSVNBUE5QKSAmJiBkZWZpbmVkKENPTkZJR19JU0FQTlAp
ICYmIGRlZmluZWQoTU9EVUxFKQ0KQEAgLTM2NDUsNyArMzY1MSw3IEBADQog
I2VuZGlmDQogCWF1dG9fcmVtb3ZlX3NldHRpbmdzKGRyaXZlKTsNCiAJZHJp
dmUtPmRyaXZlciA9IE5VTEw7DQotCXJlc3RvcmVfZmxhZ3MoZmxhZ3MpOwkJ
LyogYWxsIENQVXMgKi8NCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9f
cmVxdWVzdF9sb2NrLCBmbGFncyk7DQogCXJldHVybiAwOw0KIH0NCiANCmRp
ZmYgLXVyTiBsaW51eC0yLjQuMTktcDQvZHJpdmVycy9pZGUvaXQ4MTcyLmMg
bGludXgtMi40LjE5LXA0LnNwaW4vZHJpdmVycy9pZGUvaXQ4MTcyLmMNCi0t
LSBsaW51eC0yLjQuMTktcDQvZHJpdmVycy9pZGUvaXQ4MTcyLmMJV2VkIE1h
ciAyMCAxODoyNjozNiAyMDAyDQorKysgbGludXgtMi40LjE5LXA0LnNwaW4v
ZHJpdmVycy9pZGUvaXQ4MTcyLmMJV2VkIE1hciAyNyAyMjowMjowMSAyMDAy
DQpAQCAtOTUsMTAgKzk1LDkgQEANCiAJICAgIGRyaXZlX2VuYWJsZXMgfD0g
MHgwMDA2Ow0KICAgICB9DQogDQotICAgIHNhdmVfZmxhZ3MoZmxhZ3MpOw0K
LSAgICBjbGkoKTsNCisgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVl
c3RfbG9jaywgZmxhZ3MpOw0KICAgICBwY2lfd3JpdGVfY29uZmlnX3dvcmQo
SFdJRihkcml2ZSktPnBjaV9kZXYsIDB4NDAsIGRyaXZlX2VuYWJsZXMpOw0K
LSAgICByZXN0b3JlX2ZsYWdzKGZsYWdzKTsNCisgICAgc3Bpbl91bmxvY2tf
aXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7DQogfQ0KIA0K
ICNpZiBkZWZpbmVkKENPTkZJR19CTEtfREVWX0lERURNQSkgJiYgZGVmaW5l
ZChDT05GSUdfSVQ4MTcyX1RVTklORykNCmRpZmYgLXVyTiBsaW51eC0yLjQu
MTktcDQvZHJpdmVycy9pZGUvbnM4NzQxNS5jIGxpbnV4LTIuNC4xOS1wNC5z
cGluL2RyaXZlcnMvaWRlL25zODc0MTUuYw0KLS0tIGxpbnV4LTIuNC4xOS1w
NC9kcml2ZXJzL2lkZS9uczg3NDE1LmMJVHVlIEp1biAyMCAwNzo1MjozNiAy
MDAwDQorKysgbGludXgtMi40LjE5LXA0LnNwaW4vZHJpdmVycy9pZGUvbnM4
NzQxNS5jCVdlZCBNYXIgMjcgMjE6MjQ6MDMgMjAwMg0KQEAgLTM4LDggKzM4
LDkgQEANCiAJc3RydWN0IHBjaV9kZXYgKmRldiA9IGh3aWYtPnBjaV9kZXY7
DQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQogDQotCV9fc2F2ZV9mbGFncyhm
bGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQotCV9fY2xpKCk7CQkvKiBs
b2NhbCBDUFUgb25seSAqLw0KKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CS8q
IGxvY2FsIENQVSBvbmx5ICovDQorCWxvY2FsX2lycV9kaXNhYmxlKCk7CS8q
IGxvY2FsIENQVSBvbmx5ICovDQorDQogCW5ldyA9ICpvbGQ7DQogDQogCS8q
IEFkanVzdCBJUlEgZW5hYmxlIGJpdCAqLw0KQEAgLTcyLDggKzczLDcgQEAN
CiAJCSAqLw0KIAkJdWRlbGF5KDEwKTsNCiAJfQ0KLQ0KLQlfX3Jlc3RvcmVf
ZmxhZ3MoZmxhZ3MpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0KKwlsb2NhbF9p
cnFfcmVzdG9yZShmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQogfQ0K
IA0KIHN0YXRpYyB2b2lkIG5zODc0MTVfc2VsZWN0cHJvYyAoaWRlX2RyaXZl
X3QgKmRyaXZlKQ0KZGlmZiAtdXJOIGxpbnV4LTIuNC4xOS1wNC9kcml2ZXJz
L2lkZS9vcHRpNjIxLmMgbGludXgtMi40LjE5LXA0LnNwaW4vZHJpdmVycy9p
ZGUvb3B0aTYyMS5jDQotLS0gbGludXgtMi40LjE5LXA0L2RyaXZlcnMvaWRl
L29wdGk2MjEuYwlUdWUgTWF5ICAxIDE2OjA1OjAwIDIwMDENCisrKyBsaW51
eC0yLjQuMTktcDQuc3Bpbi9kcml2ZXJzL2lkZS9vcHRpNjIxLmMJV2VkIE1h
ciAyNyAyMjowNzozNCAyMDAyDQpAQCAtMjc2LDkgKzI3Niw3IEBADQogCQlo
d2lmLT5uYW1lLCBheCwgc2Vjb25kLmRhdGFfdGltZSwgc2Vjb25kLnJlY292
ZXJ5X3RpbWUsIGRyZHkpOw0KICNlbmRpZg0KIA0KLQlzYXZlX2ZsYWdzKGZs
YWdzKTsJLyogYWxsIENQVXMgKi8NCi0JY2xpKCk7CQkJLyogYWxsIENQVXMg
Ki8NCi0NCisJc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywg
ZmxhZ3MpOw0KICAgICAgCXJlZ19iYXNlID0gaHdpZi0+aW9fcG9ydHNbSURF
X0RBVEFfT0ZGU0VUXTsNCiAJb3V0YigweGMwLCByZWdfYmFzZStDTlRSTF9S
RUcpOwkvKiBhbGxvdyBSZWdpc3Rlci1CICovDQogCW91dGIoMHhmZiwgcmVn
X2Jhc2UrNSk7CQkvKiBobW0sIHNldHVwdmljLmV4ZSBkb2VzIHRoaXMgOy0p
ICovDQpAQCAtMzAyLDcgKzMwMCw3IEBADQogIAl3cml0ZV9yZWcobWlzYywg
TUlTQ19SRUcpOwkvKiBzZXQgYWRkcmVzcyBzZXR1cCwgRFJEWSB0aW1pbmdz
LCAgICovDQogIAkJCQkJLyogIGFuZCByZWFkIHByZWZldGNoIGZvciBib3Ro
IGRyaXZlcyAqLw0KIA0KLQlyZXN0b3JlX2ZsYWdzKGZsYWdzKTsJLyogYWxs
IENQVXMgKi8NCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVz
dF9sb2NrLCBmbGFncyk7DQogfQ0KIA0KIC8qDQpkaWZmIC11ck4gbGludXgt
Mi40LjE5LXA0L2RyaXZlcnMvaWRlL3BkYzQwMzAuYyBsaW51eC0yLjQuMTkt
cDQuc3Bpbi9kcml2ZXJzL2lkZS9wZGM0MDMwLmMNCi0tLSBsaW51eC0yLjQu
MTktcDQvZHJpdmVycy9pZGUvcGRjNDAzMC5jCVRodSBNYXIgMjEgMDc6MDU6
MDYgMjAwMg0KKysrIGxpbnV4LTIuNC4xOS1wNC5zcGluL2RyaXZlcnMvaWRl
L3BkYzQwMzAuYwlXZWQgTWFyIDI3IDIxOjI1OjAwIDIwMDINCkBAIC02NTUs
NyArNjU1LDcgQEANCiAJCQlyZXR1cm4gc3RhcnRzdG9wOw0KIAkgICAgCX0N
CiAJCWlmICghZHJpdmUtPnVubWFzaykNCi0JCQlfX2NsaSgpOwkvKiBsb2Nh
bCBDUFUgb25seSAqLw0KKwkJCWxvY2FsX2lycV9kaXNhYmxlKCk7CS8qIGxv
Y2FsIENQVSBvbmx5ICovDQogCQlIV0dST1VQKGRyaXZlKS0+d3JxID0gKnJx
OyAvKiBzY3JhdGNocGFkICovDQogCQlyZXR1cm4gcHJvbWlzZV93cml0ZShk
cml2ZSk7DQogCWRlZmF1bHQ6DQpkaWZmIC11ck4gbGludXgtMi40LjE5LXA0
L2RyaXZlcnMvaWRlL3BpaXguYyBsaW51eC0yLjQuMTktcDQuc3Bpbi9kcml2
ZXJzL2lkZS9waWl4LmMNCi0tLSBsaW51eC0yLjQuMTktcDQvZHJpdmVycy9p
ZGUvcGlpeC5jCVRodSBNYXIgMjEgMDc6MDU6MDYgMjAwMg0KKysrIGxpbnV4
LTIuNC4xOS1wNC5zcGluL2RyaXZlcnMvaWRlL3BpaXguYwlXZWQgTWFyIDI3
IDIyOjAyOjU2IDIwMDINCkBAIC0yNjgsMTIgKzI2OCwxMSBAQA0KIAkJbWFz
dGVyX2RhdGEgPSBtYXN0ZXJfZGF0YSB8ICh0aW1pbmdzW3Bpb11bMF0gPDwg
MTIpIHwNCiAJCQkgICAgICAodGltaW5nc1twaW9dWzFdIDw8IDgpOw0KIAl9
DQotCXNhdmVfZmxhZ3MoZmxhZ3MpOw0KLQljbGkoKTsNCisJc3Bpbl9sb2Nr
X2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0KIAlwY2lfd3Jp
dGVfY29uZmlnX3dvcmQoSFdJRihkcml2ZSktPnBjaV9kZXYsIG1hc3Rlcl9w
b3J0LCBtYXN0ZXJfZGF0YSk7DQogCWlmIChpc19zbGF2ZSkNCiAJCXBjaV93
cml0ZV9jb25maWdfYnl0ZShIV0lGKGRyaXZlKS0+cGNpX2Rldiwgc2xhdmVf
cG9ydCwgc2xhdmVfZGF0YSk7DQotCXJlc3RvcmVfZmxhZ3MoZmxhZ3MpOw0K
KwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZs
YWdzKTsNCiB9DQogDQogI2lmIGRlZmluZWQoQ09ORklHX0JMS19ERVZfSURF
RE1BKSAmJiBkZWZpbmVkKENPTkZJR19QSUlYX1RVTklORykNCmRpZmYgLXVy
TiBsaW51eC0yLjQuMTktcDQvZHJpdmVycy9pZGUvcWQ2NXh4LmMgbGludXgt
Mi40LjE5LXA0LnNwaW4vZHJpdmVycy9pZGUvcWQ2NXh4LmMNCi0tLSBsaW51
eC0yLjQuMTktcDQvZHJpdmVycy9pZGUvcWQ2NXh4LmMJV2VkIE1hciAyMCAx
ODoyNjozNiAyMDAyDQorKysgbGludXgtMi40LjE5LXA0LnNwaW4vZHJpdmVy
cy9pZGUvcWQ2NXh4LmMJV2VkIE1hciAyNyAyMjowNTowMiAyMDAyDQpAQCAt
OTQsMTAgKzk0LDkgQEANCiB7DQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQog
DQotCXNhdmVfZmxhZ3MoZmxhZ3MpOwkvKiBhbGwgQ1BVcyAqLw0KLQljbGko
KTsJCQkvKiBhbGwgQ1BVcyAqLw0KKwlzcGluX2xvY2tfaXJxc2F2ZSgmaW9f
cmVxdWVzdF9sb2NrLCBmbGFncyk7DQogCW91dGIoY29udGVudCxyZWcpOw0K
LQlyZXN0b3JlX2ZsYWdzKGZsYWdzKTsJLyogYWxsIENQVXMgKi8NCisJc3Bp
bl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7
DQogfQ0KIA0KIGJ5dGUgX19pbml0IHFkX3JlYWRfcmVnIChieXRlIHJlZykN
CkBAIC0xMDUsMTAgKzEwNCw5IEBADQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7
DQogCWJ5dGUgcmVhZDsNCiANCi0Jc2F2ZV9mbGFncyhmbGFncyk7CS8qIGFs
bCBDUFVzICovDQotCWNsaSgpOwkJCS8qIGFsbCBDUFVzICovDQorCXNwaW5f
bG9ja19pcnFzYXZlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsNCiAJcmVh
ZCA9IGluYihyZWcpOw0KLQlyZXN0b3JlX2ZsYWdzKGZsYWdzKTsJLyogYWxs
IENQVXMgKi8NCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVz
dF9sb2NrLCBmbGFncyk7DQogCXJldHVybiByZWFkOw0KIH0NCiANCkBAIC0z
MTMsMTMgKzMxMSwxMiBAQA0KIAlieXRlIHJlYWRyZWc7DQogCXVuc2lnbmVk
IGxvbmcgZmxhZ3M7DQogDQotCXNhdmVfZmxhZ3MoZmxhZ3MpOwkvKiBhbGwg
Q1BVcyAqLw0KLQljbGkoKTsJCQkvKiBhbGwgQ1BVcyAqLw0KKwlzcGluX2xv
Y2tfaXJxc2F2ZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7DQogCXNhdmVy
ZWcgPSBpbmJfcChwb3J0KTsNCiAJb3V0Yl9wKFFEX1RFU1RWQUwscG9ydCk7
CS8qIHNhZmUgdmFsdWUgKi8NCiAJcmVhZHJlZyA9IGluYl9wKHBvcnQpOw0K
IAlvdXRiKHNhdmVyZWcscG9ydCk7DQotCXJlc3RvcmVfZmxhZ3MoZmxhZ3Mp
OwkvKiBhbGwgQ1BVcyAqLw0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZp
b19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsNCiANCiAJaWYgKHNhdmVyZWcgPT0g
UURfVEVTVFZBTCkgew0KIAkJcHJpbnRrKEtFUk5fRVJSICJPdXRjaCAhIHRo
ZSBwcm9iZSBmb3IgcWQ2NXh4IGlzbid0IHJlbGlhYmxlICFcbiIpOw0KZGlm
ZiAtdXJOIGxpbnV4LTIuNC4xOS1wNC9kcml2ZXJzL2lkZS9zbGM5MGU2Ni5j
IGxpbnV4LTIuNC4xOS1wNC5zcGluL2RyaXZlcnMvaWRlL3NsYzkwZTY2LmMN
Ci0tLSBsaW51eC0yLjQuMTktcDQvZHJpdmVycy9pZGUvc2xjOTBlNjYuYwlX
ZWQgTWFyIDIwIDE4OjI2OjM2IDIwMDINCisrKyBsaW51eC0yLjQuMTktcDQu
c3Bpbi9kcml2ZXJzL2lkZS9zbGM5MGU2Ni5jCVdlZCBNYXIgMjcgMjI6MDU6
NDYgMjAwMg0KQEAgLTIyMiwxMiArMjIyLDExIEBADQogCQltYXN0ZXJfZGF0
YSA9IG1hc3Rlcl9kYXRhIHwgKHRpbWluZ3NbcGlvXVswXSA8PCAxMikgfA0K
IAkJCSAgICAgICh0aW1pbmdzW3Bpb11bMV0gPDwgOCk7DQogCX0NCi0Jc2F2
ZV9mbGFncyhmbGFncyk7DQotCWNsaSgpOw0KKwlzcGluX2xvY2tfaXJxc2F2
ZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7DQogCXBjaV93cml0ZV9jb25m
aWdfd29yZChIV0lGKGRyaXZlKS0+cGNpX2RldiwgbWFzdGVyX3BvcnQsIG1h
c3Rlcl9kYXRhKTsNCiAJaWYgKGlzX3NsYXZlKQ0KIAkJcGNpX3dyaXRlX2Nv
bmZpZ19ieXRlKEhXSUYoZHJpdmUpLT5wY2lfZGV2LCBzbGF2ZV9wb3J0LCBz
bGF2ZV9kYXRhKTsNCi0JcmVzdG9yZV9mbGFncyhmbGFncyk7DQorCXNwaW5f
dW5sb2NrX2lycXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0K
IH0NCiANCiAjaWZkZWYgQ09ORklHX0JMS19ERVZfSURFRE1BDQpkaWZmIC11
ck4gbGludXgtMi40LjE5LXA0L2RyaXZlcnMvaWRlL3RybTI5MC5jIGxpbnV4
LTIuNC4xOS1wNC5zcGluL2RyaXZlcnMvaWRlL3RybTI5MC5jDQotLS0gbGlu
dXgtMi40LjE5LXA0L2RyaXZlcnMvaWRlL3RybTI5MC5jCVRodSBNYXIgMjEg
MDc6MDU6MDYgMjAwMg0KKysrIGxpbnV4LTIuNC4xOS1wNC5zcGluL2RyaXZl
cnMvaWRlL3RybTI5MC5jCVdlZCBNYXIgMjcgMjI6MTQ6MDcgMjAwMg0KQEAg
LTE0OCwxMiArMTQ4LDEzIEBADQogCS8qIHNlbGVjdCBQSU8gb3IgRE1BICov
DQogCXJlZyA9IHVzZV9kbWEgPyAoMHgyMSB8IDB4ODIpIDogKDB4MjEgJiB+
MHg4Mik7DQogDQotCV9fc2F2ZV9mbGFncyhmbGFncyk7CS8qIGxvY2FsIENQ
VSBvbmx5ICovDQotCV9fY2xpKCk7CQkvKiBsb2NhbCBDUFUgb25seSAqLw0K
Kwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICov
DQorCWxvY2FsX2lycV9kaXNhYmxlKCk7CS8qIGxvY2FsIENQVSBvbmx5ICov
DQogDQogCWlmIChyZWcgIT0gaHdpZi0+c2VsZWN0X2RhdGEpIHsNCiAJCWh3
aWYtPnNlbGVjdF9kYXRhID0gcmVnOw0KLQkJb3V0YigweDUxfChod2lmLT5j
aGFubmVsPDwzKSwgaHdpZi0+Y29uZmlnX2RhdGErMSk7CS8qIHNldCBQSU8v
RE1BICovDQorCQlvdXRiKDB4NTF8KGh3aWYtPmNoYW5uZWw8PDMpLCBod2lm
LT5jb25maWdfZGF0YSsxKTsNCisJCQkvKiBzZXQgUElPL0RNQSAqLw0KIAkJ
b3V0dyhyZWcgJiAweGZmLCBod2lmLT5jb25maWdfZGF0YSk7DQogCX0NCiAN
CkBAIC0xNjMsOCArMTY0LDcgQEANCiAJCXJlZyAmPSB+KDEgPDwgaHdpZi0+
Y2hhbm5lbCk7DQogCQlvdXR3KHJlZywgaHdpZi0+Y29uZmlnX2RhdGErMyk7
DQogCX0NCi0NCi0JX19yZXN0b3JlX2ZsYWdzKGZsYWdzKTsJLyogbG9jYWwg
Q1BVIG9ubHkgKi8NCisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwkvKiBs
b2NhbCBDUFUgb25seSAqLw0KIH0NCiANCiBzdGF0aWMgdm9pZCB0cm0yOTBf
c2VsZWN0cHJvYyAoaWRlX2RyaXZlX3QgKmRyaXZlKQ0KQEAgLTI1MiwyMSAr
MjUyLDIxIEBADQogCQlwcmludGsoIlRSTTI5MDogdXNpbmcgZGVmYXVsdCBj
b25maWcgYmFzZSBhdCAweCUwNGx4XG4iLCBod2lmLT5jb25maWdfZGF0YSk7
DQogCX0NCiANCi0JX19zYXZlX2ZsYWdzKGZsYWdzKTsJLyogbG9jYWwgQ1BV
IG9ubHkgKi8NCi0JX19jbGkoKTsJCS8qIGxvY2FsIENQVSBvbmx5ICovDQor
CWxvY2FsX2lycV9zYXZlKGZsYWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8N
CisJbG9jYWxfaXJxX2Rpc2FibGUoKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8N
CiAJLyogcHV0IGNvbmZpZyByZWcgaW50byBmaXJzdCBieXRlIG9mIGh3aWYt
PnNlbGVjdF9kYXRhICovDQogCW91dGIoMHg1MXwoaHdpZi0+Y2hhbm5lbDw8
MyksIGh3aWYtPmNvbmZpZ19kYXRhKzEpOw0KLQlod2lmLT5zZWxlY3RfZGF0
YSA9IDB4MjE7CQkJLyogc2VsZWN0IFBJTyBhcyBkZWZhdWx0ICovDQorCWh3
aWYtPnNlbGVjdF9kYXRhID0gMHgyMTsJCS8qIHNlbGVjdCBQSU8gYXMgZGVm
YXVsdCAqLw0KIAlvdXRiKGh3aWYtPnNlbGVjdF9kYXRhLCBod2lmLT5jb25m
aWdfZGF0YSk7DQotCXJlZyA9IGluYihod2lmLT5jb25maWdfZGF0YSszKTsJ
CQkvKiBnZXQgSVJRIGluZm8gKi8NCi0JcmVnID0gKHJlZyAmIDB4MTApIHwg
MHgwMzsJCQkvKiBtYXNrIElSUXMgZm9yIGJvdGggcG9ydHMgKi8NCisJcmVn
ID0gaW5iKGh3aWYtPmNvbmZpZ19kYXRhKzMpOwkJLyogZ2V0IElSUSBpbmZv
ICovDQorCXJlZyA9IChyZWcgJiAweDEwKSB8IDB4MDM7CQkvKiBtYXNrIElS
UXMgZm9yIGJvdGggcG9ydHMgKi8NCiAJb3V0YihyZWcsIGh3aWYtPmNvbmZp
Z19kYXRhKzMpOw0KLQlfX3Jlc3RvcmVfZmxhZ3MoZmxhZ3MpOwkvKiBsb2Nh
bCBDUFUgb25seSAqLw0KKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CS8q
IGxvY2FsIENQVSBvbmx5ICovDQogDQogCWlmICgocmVnICYgMHgxMCkpDQog
CQlod2lmLT5pcnEgPSBod2lmLT5jaGFubmVsID8gMTUgOiAxNDsJLyogbGVn
YWN5IG1vZGUgKi8NCiAJZWxzZSBpZiAoIWh3aWYtPmlycSAmJiBod2lmLT5t
YXRlICYmIGh3aWYtPm1hdGUtPmlycSkNCi0JCWh3aWYtPmlycSA9IGh3aWYt
Pm1hdGUtPmlycTsJCS8qIHNoYXJpbmcgSVJRIHdpdGggbWF0ZSAqLw0KKwkJ
aHdpZi0+aXJxID0gaHdpZi0+bWF0ZS0+aXJxOwkvKiBzaGFyaW5nIElSUSB3
aXRoIG1hdGUgKi8NCiAJaWRlX3NldHVwX2RtYShod2lmLCAoaHdpZi0+Y29u
ZmlnX2RhdGEgKyA0KSBeIChod2lmLT5jaGFubmVsID8gMHgwMDgwIDogMHgw
MDAwKSwgMyk7DQogDQogI2lmZGVmIENPTkZJR19CTEtfREVWX0lERURNQQ0K
ZGlmZiAtdXJOIGxpbnV4LTIuNC4xOS1wNC9kcml2ZXJzL2lkZS91bWM4Njcy
LmMgbGludXgtMi40LjE5LXA0LnNwaW4vZHJpdmVycy9pZGUvdW1jODY3Mi5j
DQotLS0gbGludXgtMi40LjE5LXA0L2RyaXZlcnMvaWRlL3VtYzg2NzIuYwlU
aHUgQXByIDEzIDIyOjU0OjI2IDIwMDANCisrKyBsaW51eC0yLjQuMTktcDQu
c3Bpbi9kcml2ZXJzL2lkZS91bWM4NjcyLmMJV2VkIE1hciAyNyAyMToyOToz
NiAyMDAyDQpAQCAtOTIsMTMgKzkyLDExIEBADQogCW91dF91bWMgKDB4ZDcs
KHNwZWVkdGFiWzBdW3NwZWVkc1syXV0gfCAoc3BlZWR0YWJbMF1bc3BlZWRz
WzNdXTw8NCkpKTsNCiAJb3V0X3VtYyAoMHhkNiwoc3BlZWR0YWJbMF1bc3Bl
ZWRzWzBdXSB8IChzcGVlZHRhYlswXVtzcGVlZHNbMV1dPDw0KSkpOw0KIAl0
bXAgPSAwOw0KLQlmb3IgKGkgPSAzOyBpID49IDA7IGktLSkNCi0Jew0KKwlm
b3IgKGkgPSAzOyBpID49IDA7IGktLSkgew0KIAkJdG1wID0gKHRtcCA8PCAy
KSB8IHNwZWVkdGFiWzFdW3NwZWVkc1tpXV07DQogCX0NCiAJb3V0X3VtYyAo
MHhkYyx0bXApOw0KLQlmb3IgKGkgPSAwO2kgPCA0OyBpKyspDQotCXsNCisJ
Zm9yIChpID0gMDtpIDwgNDsgaSsrKSB7DQogCQlvdXRfdW1jICgweGQwK2ks
c3BlZWR0YWJbMl1bc3BlZWRzW2ldXSk7DQogCQlvdXRfdW1jICgweGQ4K2ks
c3BlZWR0YWJbMl1bc3BlZWRzW2ldXSk7DQogCX0NCkBAIC0xMTUsMzkgKzEx
MywzNyBAQA0KIA0KIAlwaW8gPSBpZGVfZ2V0X2Jlc3RfcGlvX21vZGUoZHJp
dmUsIHBpbywgNCwgTlVMTCk7DQogCXByaW50aygiJXM6IHNldHRpbmcgdW1j
ODY3MiB0byBQSU8gbW9kZSVkIChzcGVlZCAlZClcbiIsIGRyaXZlLT5uYW1l
LCBwaW8sIHBpb190b191bWNbcGlvXSk7DQotCXNhdmVfZmxhZ3MoZmxhZ3Mp
OwkvKiBhbGwgQ1BVcyAqLw0KLQljbGkoKTsJCQkvKiBhbGwgQ1BVcyAqLw0K
KwlzcGluX2xvY2tfaXJxc2F2ZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7
DQogCWlmIChod2dyb3VwICYmIGh3Z3JvdXAtPmhhbmRsZXIgIT0gTlVMTCkg
ew0KIAkJcHJpbnRrKCJ1bWM4NjcyOiBvdGhlciBpbnRlcmZhY2UgaXMgYnVz
eTogZXhpdGluZyB0dW5lX3VtYygpXG4iKTsNCiAJfSBlbHNlIHsNCiAJCWN1
cnJlbnRfc3BlZWRzW2RyaXZlLT5uYW1lWzJdIC0gJ2EnXSA9IHBpb190b191
bWNbcGlvXTsNCiAJCXVtY19zZXRfc3BlZWRzIChjdXJyZW50X3NwZWVkcyk7
DQogCX0NCi0JcmVzdG9yZV9mbGFncyhmbGFncyk7CS8qIGFsbCBDUFVzICov
DQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywg
ZmxhZ3MpOw0KIH0NCiANCiB2b2lkIF9faW5pdCBpbml0X3VtYzg2NzIgKHZv
aWQpCS8qIGNhbGxlZCBmcm9tIGlkZS5jICovDQogew0KIAl1bnNpZ25lZCBs
b25nIGZsYWdzOw0KIA0KLQlfX3NhdmVfZmxhZ3MoZmxhZ3MpOwkvKiBsb2Nh
bCBDUFUgb25seSAqLw0KLQlfX2NsaSgpOwkJLyogbG9jYWwgQ1BVIG9ubHkg
Ki8NCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwkvKiBsb2NhbCBDUFUgb25s
eSAqLw0KKwlsb2NhbF9pcnFfZGlzYWJsZSgpOwkvKiBsb2NhbCBDUFUgb25s
eSAqLw0KIAlpZiAoY2hlY2tfcmVnaW9uKDB4MTA4LCAyKSkgew0KLQkJX19y
ZXN0b3JlX2ZsYWdzKGZsYWdzKTsNCisJCWxvY2FsX2lycV9yZXN0b3JlKGZs
YWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCiAJCXByaW50aygiXG51bWM4
NjcyOiBQT1JUUyAweDEwOC0weDEwOSBBTFJFQURZIElOIFVTRVxuIik7DQog
CQlyZXR1cm47DQogCX0NCiAJb3V0Yl9wICgweDVBLDB4MTA4KTsgLyogZW5h
YmxlIHVtYyAqLw0KLQlpZiAoaW5fdW1jICgweGQ1KSAhPSAweGEwKQ0KLQl7
DQotCQlfX3Jlc3RvcmVfZmxhZ3MoZmxhZ3MpOwkvKiBsb2NhbCBDUFUgb25s
eSAqLw0KKwlpZiAoaW5fdW1jICgweGQ1KSAhPSAweGEwKSB7DQorCQlsb2Nh
bF9pcnFfcmVzdG9yZShmbGFncyk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQog
CQlwcmludGsgKCJ1bWM4NjcyOiBub3QgZm91bmRcbiIpOw0KIAkJcmV0dXJu
OyAgDQogCX0NCiAJb3V0Yl9wICgweGE1LDB4MTA4KTsgLyogZGlzYWJsZSB1
bWMgKi8NCiANCiAJdW1jX3NldF9zcGVlZHMgKGN1cnJlbnRfc3BlZWRzKTsN
Ci0JX19yZXN0b3JlX2ZsYWdzKGZsYWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkg
Ki8NCisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwkJLyogbG9jYWwgQ1BV
IG9ubHkgKi8NCiANCiAJcmVxdWVzdF9yZWdpb24oMHgxMDgsIDIsICJ1bWM4
NjcyIik7DQogCWlkZV9od2lmc1swXS5jaGlwc2V0ID0gaWRlX3VtYzg2NzI7
DQpkaWZmIC11ck4gbGludXgtMi40LjE5LXA0L2RyaXZlcnMvc2NzaS9pZGUt
c2NzaS5jIGxpbnV4LTIuNC4xOS1wNC5zcGluL2RyaXZlcnMvc2NzaS9pZGUt
c2NzaS5jDQotLS0gbGludXgtMi40LjE5LXA0L2RyaXZlcnMvc2NzaS9pZGUt
c2NzaS5jCUZyaSBNYXIgMjkgMTU6MzE6MzggMjAwMg0KKysrIGxpbnV4LTIu
NC4xOS1wNC5zcGluL2RyaXZlcnMvc2NzaS9pZGUtc2NzaS5jCUZyaSBNYXIg
MjkgMTU6MzI6MTIgMjAwMg0KQEAgLTMzNCw3ICszMzQsNyBAQA0KIAlpZiAo
KHN0YXR1cyAmIERSUV9TVEFUKSA9PSAwKSB7CQkJCQkvKiBObyBtb3JlIGlu
dGVycnVwdHMgKi8NCiAJCWlmICh0ZXN0X2JpdChJREVTQ1NJX0xPR19DTUQs
ICZzY3NpLT5sb2cpKQ0KIAkJCXByaW50ayAoS0VSTl9JTkZPICJQYWNrZXQg
Y29tbWFuZCBjb21wbGV0ZWQsICVkIGJ5dGVzIHRyYW5zZmVycmVkXG4iLCBw
Yy0+YWN0dWFsbHlfdHJhbnNmZXJyZWQpOw0KLQkJaWRlX19zdGkoKTsNCisJ
CWxvY2FsX2lycV9lbmFibGUoKTsNCiAJCWlmIChzdGF0dXMgJiBFUlJfU1RB
VCkNCiAJCQlycS0+ZXJyb3JzKys7DQogCQlpZGVzY3NpX2VuZF9yZXF1ZXN0
KGRyaXZlLCAxKTsNCg==
--1430322656-1932894290-1027598738=:4719--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/