[PATCH] 2.5.24 IDE 97

Bartlomiej Zolnierkiewicz (B.Zolnierkiewicz@elka.pw.edu.pl)
Wed, 3 Jul 2002 00:22:11 +0200 (MET DST)


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.

---559023410-851401618-1025648531=:27685
Content-Type: TEXT/PLAIN; charset=US-ASCII

This patch is a accumulation of ata-hosts-7/8/9/10/11, ata-autodma
and ata-ata66_check patches previously posted on LKML.

It is independent of IDE 94/95/96.

Wed Jul 3 00:13:31 CEST 2002 ide-clean-97

- add int 'modes_map' and flag 'no_atapi_autodma' to
struct ata_channel, initialise them in *_init_channel()
functions

- add int 'map' parameter to ch->udma_setup() functions

- add XFER_UDMA_ALL, XFER_UDMA_80W and rework misc defines
to ata-timing.h

- convert *_ratemask() functions to *_modes_map(),
mark them with __init
affected drivers: alim15x3.c, cmd64x.c, hpt366.c,
pdc202xx.c, serverworks.c, sis5513.c

- split aec62xx_udma_setup() to aec62xx_udma_setup()
and aec62xx_modes_map()

- split config_chipset_for_dma() in pdc202xx.c to
pdc202xx_udma_setup() and pdc202xx_tx_udma_setup()

- add udma_generic_setup() to pcidma.c, which
- equals functionality of driver specific udma_setup()
and config_chipset_for_dma()
- makes use of ch->modes_map, ch->no_atapi_autodma
and ch->speedproc()/tuneproc()
- auto-tunes PIO only if we failed to enable DMA
(PIO auto-tuning is already handled by ch->tuneproc()
call in probe.c, it is controlled separetly of autodma)

- convert aec62xx.c, alim15x3.c, amd74xx.c, cmd64x.c, hpt34x.c,
hpt366.c, it8172.c, pdc202xx.c, piix.c, serverworks.c,
sis5513.c and via82cxxx.c to new scheme

- this has nice side effect of teaching aec, amd, piix and via
drivers using DMA blacklist/whitelist

- clean usage of ch->autodma flag in PCI host chips drivers

- remove ATA_F_NOADMA flag from aec62xx.c, hpt34x.c,
sis5513.c and via82cxxx.c drivers, it's use was bogus
in these drivers

only two usages of ATA_F_NOADMA are left (in ide-pci.c),
probably they can alse be removed due to fact that drivers
should disable autodma not ide-pci (i.e. hpt34x)

- teach alim15x3.c, cs5530.c, cy82c693.c, hpt34x.c, hpt366.c,
it8172.c, pdc202xx.c, sis5513.c, sl82c105.c, and trm290.c
drivers about CONFIG_IDEDMA_AUTO (indirectly through ide-pci)

- make it possible to auto-tune DMA for trm290.c

- always check PIO timings in cs5530.c

- remove ata66_check entry from struct ata_pci_device,
initialise ch->udma_four directly in *_init_channel()

this abstraction wasn't needed and it was PCI specific

---559023410-851401618-1025648531=:27685
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="ide-clean-97.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.SOL.4.30.0207030022110.27685@mion.elka.pw.edu.pl>
Content-Description:
Content-Disposition: attachment; filename="ide-clean-97.diff"

ZGlmZiAtdXIgLVhkb250ZGlmZiBsaW51eC0yLjUuMjQvZHJpdmVycy9pZGUv
YWVjNjJ4eC5jIGxpbnV4L2RyaXZlcnMvaWRlL2FlYzYyeHguYw0KLS0tIGxp
bnV4LTIuNS4yNC9kcml2ZXJzL2lkZS9hZWM2Mnh4LmMJVHVlIEp1biAyNSAy
Mjo0Njo0MyAyMDAyDQorKysgbGludXgvZHJpdmVycy9pZGUvYWVjNjJ4eC5j
CVR1ZSBKdWwgIDIgMjM6NTQ6MTYgMjAwMg0KQEAgLTE2MCwxNiArMTYwLDE1
IEBADQogfQ0KIA0KICNpZmRlZiBDT05GSUdfQkxLX0RFVl9JREVETUENCi1z
dGF0aWMgaW50IGFlYzYyeHhfdWRtYV9zZXR1cChzdHJ1Y3QgYXRhX2Rldmlj
ZSAqZHJpdmUpDQorc3RhdGljIGludCBfX2luaXQgYWVjNjJ4eF9tb2Rlc19t
YXAoc3RydWN0IGF0YV9jaGFubmVsICpjaCkNCiB7DQotCXUzMiBibWlkZSA9
IHBjaV9yZXNvdXJjZV9zdGFydChkcml2ZS0+Y2hhbm5lbC0+cGNpX2Rldiwg
NCk7DQotCXNob3J0IHNwZWVkOw0KKwl1MzIgYm1pZGUgPSBwY2lfcmVzb3Vy
Y2Vfc3RhcnQoY2gtPnBjaV9kZXYsIDQpOw0KIAlpbnQgbWFwOw0KIA0KLQlt
YXAgPSBYRkVSX1BJTyB8IFhGRVJfRVBJTyB8IFhGRVJfTVdETUEgfCBYRkVS
X1VETUEgfCBYRkVSX1NXRE1BIHwgWEZFUl9VRE1BOw0KKwltYXAgPSBYRkVS
X0VQSU8gfCBYRkVSX1NXRE1BIHwgWEZFUl9NV0RNQSB8IFhGRVJfVURNQTsN
CiANCi0JaWYgKGRyaXZlLT5jaGFubmVsLT51ZG1hX2ZvdXIpDQotCQlzd2l0
Y2ggKGRyaXZlLT5jaGFubmVsLT5wY2lfZGV2LT5kZXZpY2UpIHsNCisJaWYg
KGNoLT51ZG1hX2ZvdXIpDQorCQlzd2l0Y2ggKGNoLT5wY2lfZGV2LT5kZXZp
Y2UpIHsNCiAJCQljYXNlIFBDSV9ERVZJQ0VfSURfQVJUT1BfQVRQODY1UjoN
CiAJCQljYXNlIFBDSV9ERVZJQ0VfSURfQVJUT1BfQVRQODY1Og0KIAkJCQkv
KiBDYW4ndCB1c2UgdGhlc2UgbW9kZXMgc2ltdWx0YW5lb3VzbHksDQpAQCAt
MTgwLDExICsxNzksNyBAQA0KIAkJCQltYXAgfD0gWEZFUl9VRE1BXzY2Ow0K
IAkJfQ0KIA0KLQlzcGVlZCA9IGF0YV90aW1pbmdfbW9kZShkcml2ZSwgbWFw
KTsNCi0JYWVjX3NldF9kcml2ZShkcml2ZSwgc3BlZWQpOw0KLQl1ZG1hX2Vu
YWJsZShkcml2ZSwgZHJpdmUtPmNoYW5uZWwtPmF1dG9kbWEgJiYgKHNwZWVk
ICYgWEZFUl9NT0RFKSAhPSBYRkVSX1BJTywgMCk7DQotDQotCXJldHVybiAw
Ow0KKwlyZXR1cm4gbWFwOw0KIH0NCiAjZW5kaWYNCiANCkBAIC0yNTYsMTEg
KzI1MSwxMiBAQA0KIA0KIAljaC0+dHVuZXByb2MgPSBhZWM2Mnh4X3R1bmVf
ZHJpdmU7DQogCWNoLT5zcGVlZHByb2MgPSBhZWNfc2V0X2RyaXZlOw0KLQlj
aC0+YXV0b2RtYSA9IDA7DQogDQogCWNoLT5pb18zMmJpdCA9IDE7DQogCWNo
LT51bm1hc2sgPSAxOw0KIA0KKwljaC0+dWRtYV9mb3VyID0gYWVjNjJ4eF9h
dGE2Nl9jaGVjayhjaCk7DQorDQogCWZvciAoaSA9IDA7IGkgPCAyOyBpKysp
IHsNCiAJCWNoLT5kcml2ZXNbaV0uYXV0b3R1bmUgPSAxOw0KIAkJY2gtPmRy
aXZlc1tpXS5kbiA9IGNoLT51bml0ICogMiArIGk7DQpAQCAtMjY5LDExICsy
NjUsOCBAQA0KICNpZmRlZiBDT05GSUdfQkxLX0RFVl9JREVETUENCiAJaWYg
KGNoLT5kbWFfYmFzZSkgew0KIAkJY2gtPmhpZ2htZW0gPSAxOw0KLQkJY2gt
PnVkbWFfc2V0dXAgPSBhZWM2Mnh4X3VkbWFfc2V0dXA7DQotI2lmZGVmIENP
TkZJR19JREVETUFfQVVUTw0KLQkJaWYgKCFub2F1dG9kbWEpDQotCQkJY2gt
PmF1dG9kbWEgPSAxOw0KLSNlbmRpZg0KKwkJY2gtPm1vZGVzX21hcCA9IGFl
YzYyeHhfbW9kZXNfbWFwKGNoKTsNCisJCWNoLT51ZG1hX3NldHVwID0gdWRt
YV9nZW5lcmljX3NldHVwOw0KIAl9DQogI2VuZGlmDQogfQ0KQEAgLTMwNiwx
NyArMjk5LDE1IEBADQogCQl2ZW5kb3I6IFBDSV9WRU5ET1JfSURfQVJUT1As
DQogCQlkZXZpY2U6IFBDSV9ERVZJQ0VfSURfQVJUT1BfQVRQODYwLA0KIAkJ
aW5pdF9jaGlwc2V0OiBhZWM2Mnh4X2luaXRfY2hpcHNldCwNCi0JCWF0YTY2
X2NoZWNrOiBhZWM2Mnh4X2F0YTY2X2NoZWNrLA0KIAkJaW5pdF9jaGFubmVs
OiBhZWM2Mnh4X2luaXRfY2hhbm5lbCwNCiAJCWVuYWJsZWJpdHM6IHsgezB4
NGEsMHgwMiwweDAyfSwJezB4NGEsMHgwNCwweDA0fSB9LA0KIAkJYm9vdGFi
bGU6IE5FVkVSX0JPQVJELA0KLQkJZmxhZ3M6IEFUQV9GX0lSUSB8IEFUQV9G
X05PQURNQSB8IEFUQV9GX0RNQQ0KKwkJZmxhZ3M6IEFUQV9GX0lSUSB8IEFU
QV9GX0RNQQ0KIAl9LA0KIAl7DQogCQl2ZW5kb3I6IFBDSV9WRU5ET1JfSURf
QVJUT1AsDQogCQlkZXZpY2U6IFBDSV9ERVZJQ0VfSURfQVJUT1BfQVRQODYw
UiwNCiAJCWluaXRfY2hpcHNldDogYWVjNjJ4eF9pbml0X2NoaXBzZXQsDQot
CQlhdGE2Nl9jaGVjazogYWVjNjJ4eF9hdGE2Nl9jaGVjaywNCiAJCWluaXRf
Y2hhbm5lbDogYWVjNjJ4eF9pbml0X2NoYW5uZWwsDQogCQllbmFibGViaXRz
OiB7IHsweDRhLDB4MDIsMHgwMn0sCXsweDRhLDB4MDQsMHgwNH0gfSwNCiAJ
CWJvb3RhYmxlOiBPRkZfQk9BUkQsDQpAQCAtMzI2LDcgKzMxNyw2IEBADQog
CQl2ZW5kb3I6IFBDSV9WRU5ET1JfSURfQVJUT1AsDQogCQlkZXZpY2U6IFBD
SV9ERVZJQ0VfSURfQVJUT1BfQVRQODY1LA0KIAkJaW5pdF9jaGlwc2V0OiBh
ZWM2Mnh4X2luaXRfY2hpcHNldCwNCi0JCWF0YTY2X2NoZWNrOiBhZWM2Mnh4
X2F0YTY2X2NoZWNrLA0KIAkJaW5pdF9jaGFubmVsOiBhZWM2Mnh4X2luaXRf
Y2hhbm5lbCwNCiAJCWVuYWJsZWJpdHM6IHsgezB4NGEsMHgwMiwweDAyfSwJ
ezB4NGEsMHgwNCwweDA0fSB9LA0KIAkJYm9vdGFibGU6IE5FVkVSX0JPQVJE
LA0KQEAgLTMzNiw3ICszMjYsNiBAQA0KIAkJdmVuZG9yOiBQQ0lfVkVORE9S
X0lEX0FSVE9QLA0KIAkJZGV2aWNlOiBQQ0lfREVWSUNFX0lEX0FSVE9QX0FU
UDg2NVIsDQogCQlpbml0X2NoaXBzZXQ6IGFlYzYyeHhfaW5pdF9jaGlwc2V0
LA0KLQkJYXRhNjZfY2hlY2s6IGFlYzYyeHhfYXRhNjZfY2hlY2ssDQogCQlp
bml0X2NoYW5uZWw6IGFlYzYyeHhfaW5pdF9jaGFubmVsLA0KIAkJZW5hYmxl
Yml0czogeyB7MHg0YSwweDAyLDB4MDJ9LAl7MHg0YSwweDA0LDB4MDR9IH0s
DQogCQlib290YWJsZTogT0ZGX0JPQVJELA0KZGlmZiAtdXIgLVhkb250ZGlm
ZiBsaW51eC0yLjUuMjQvZHJpdmVycy9pZGUvYWxpbTE1eDMuYyBsaW51eC9k
cml2ZXJzL2lkZS9hbGltMTV4My5jDQotLS0gbGludXgtMi41LjI0L2RyaXZl
cnMvaWRlL2FsaW0xNXgzLmMJVHVlIEp1biAyNSAyMjo0Njo0MyAyMDAyDQor
KysgbGludXgvZHJpdmVycy9pZGUvYWxpbTE1eDMuYwlUdWUgSnVsICAyIDIz
OjU0OjE2IDIwMDINCkBAIC05OSw0MyArOTksNiBAQA0KIAlfX3Jlc3RvcmVf
ZmxhZ3MoZmxhZ3MpOw0KIH0NCiANCi1zdGF0aWMgYnl0ZSBhbGkxNXgzX2Nh
bl91bHRyYShzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUpDQotew0KLQlpZiAo
bTUyMjlfcmV2aXNpb24gPD0gMHgyMCkgew0KLQkJcmV0dXJuIDA7DQotCX0g
ZWxzZSBpZiAoKG01MjI5X3JldmlzaW9uIDwgMHhDMikgJiYNCi0jaWZuZGVm
IENPTkZJR19XRENfQUxJMTVYMw0KLQkJKChjaGlwX2lzXzE1NDNjX2UgJiYg
c3Ryc3RyKGRyaXZlLT5pZC0+bW9kZWwsICJXREMgIikpIHx8DQotCQkgKGRy
aXZlLT50eXBlICE9IEFUQV9ESVNLKSkpIHsNCi0jZWxzZQ0KLQkJKGRyaXZl
LT50eXBlICE9IEFUQV9ESVNLKSkgew0KLSNlbmRpZg0KLQkJcmV0dXJuIDA7
DQotCX0gZWxzZSB7DQotCQlyZXR1cm4gMTsNCi0JfQ0KLX0NCi0NCi1zdGF0
aWMgaW50IGFsaTE1eDNfcmF0ZW1hc2soc3RydWN0IGF0YV9kZXZpY2UgKmRy
aXZlKQ0KLXsNCi0JaW50IG1hcCA9IDA7DQotDQotCWlmICghYWxpMTV4M19j
YW5fdWx0cmEoZHJpdmUpKQ0KLQkJcmV0dXJuIDA7DQotDQotCW1hcCB8PSBY
RkVSX1VETUE7DQotDQotCWlmICghZWlnaHR5X25pbnR5X3RocmVlKGRyaXZl
KSkNCi0JCXJldHVybiBtYXA7DQotDQotCWlmIChtNTIyOV9yZXZpc2lvbiA+
PSAweEM0KQ0KLQkJbWFwIHw9IFhGRVJfVURNQV8xMDA7DQotCWlmIChtNTIy
OV9yZXZpc2lvbiA+PSAweEMyKQ0KLQkJbWFwIHw9IFhGRVJfVURNQV82NjsN
Ci0NCi0JcmV0dXJuIG1hcDsNCi19DQotDQogc3RhdGljIGludCBhbGkxNXgz
X3R1bmVfY2hpcHNldChzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUsIGJ5dGUg
c3BlZWQpDQogew0KIAlzdHJ1Y3QgcGNpX2RldiAqZGV2ID0gZHJpdmUtPmNo
YW5uZWwtPnBjaV9kZXY7DQpAQCAtMTU2LDYgKzExOSw3IEBADQogCWlmIChz
cGVlZCA8IFhGRVJfU1dfRE1BXzApDQogCQlhbGkxNXgzX3R1bmVfZHJpdmUo
ZHJpdmUsIHNwZWVkKTsNCiAjaWZkZWYgQ09ORklHX0JMS19ERVZfSURFRE1B
DQorCS8qIEZJWE1FOiBubyBzdXBwb3J0IGZvciBNV0RNQSBhbmQgU1dETUEg
bW9kZXMgIC0tYmt6ICovDQogCWVsc2UgaWYgKHNwZWVkID49IFhGRVJfVURN
QV8wKSB7DQogCQlwY2lfcmVhZF9jb25maWdfYnl0ZShkZXYsIG01MjI5X3Vk
bWEsICZ0bXBieXRlKTsNCiAJCXRtcGJ5dGUgJj0gKDB4MGYgPDwgKCgxLXVu
aXQpIDw8IDIpKTsNCkBAIC0xNzYsOTEgKzE0MCw0MCBAQA0KIH0NCiANCiAj
aWZkZWYgQ09ORklHX0JMS19ERVZfSURFRE1BDQotc3RhdGljIGludCBjb25m
aWdfY2hpcHNldF9mb3JfZG1hKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSwg
dTggdWRtYSkNCitzdGF0aWMgaW50IGFsaTE1eDNfdWRtYV9zZXR1cChzdHJ1
Y3QgYXRhX2RldmljZSAqZHJpdmUsIGludCBtYXApDQogew0KLQlpbnQgbWFw
Ow0KLQl1OCBtb2RlOw0KKyNpZm5kZWYgQ09ORklHX1dEQ19BTEkxNVgzDQor
CWlmICgobTUyMjlfcmV2aXNpb24gPCAweEMyKSAmJiBjaGlwX2lzXzE1NDNj
X2UgJiYNCisJICAgIHN0cnN0cihkcml2ZS0+aWQtPm1vZGVsLCAiV0RDICIp
KQ0KKwkJbWFwICY9IH5YRkVSX1VETUFfQUxMOw0KKyNlbmRpZg0KKwlyZXR1
cm4gdWRtYV9nZW5lcmljX3NldHVwKGRyaXZlLCBtYXApOw0KK30NCiANCi0J
aWYgKHVkbWEpDQotCQltYXAgPSBhbGkxNXgzX3JhdGVtYXNrKGRyaXZlKTsN
Ci0JZWxzZQ0KLQkJbWFwID0gWEZFUl9TV0RNQSB8IFhGRVJfTVdETUE7DQot
DQotCW1vZGUgPSBhdGFfdGltaW5nX21vZGUoZHJpdmUsIG1hcCk7DQotCWlm
IChtb2RlIDwgWEZFUl9TV19ETUFfMCkNCi0JCXJldHVybiAwOw0KK3N0YXRp
YyBpbnQgYWxpMTV4M191ZG1hX2luaXQoc3RydWN0IGF0YV9kZXZpY2UgKmRy
aXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEpDQorew0KKwlpZiAoKG01MjI5X3Jl
dmlzaW9uIDwgMHhDMikgJiYgKGRyaXZlLT50eXBlICE9IEFUQV9ESVNLKSkN
CisJCXJldHVybiBpZGVfc3RvcHBlZDsJLyogdHJ5IFBJTyBpbnN0ZWFkIG9m
IERNQSAqLw0KIA0KLQlyZXR1cm4gIWFsaTE1eDNfdHVuZV9jaGlwc2V0KGRy
aXZlLCBtb2RlKTsNCisJcmV0dXJuIHVkbWFfcGNpX2luaXQoZHJpdmUsIHJx
KTsNCiB9DQogDQotc3RhdGljIGludCBhbGkxNXgzX3VkbWFfc2V0dXAoc3Ry
dWN0IGF0YV9kZXZpY2UgKmRyaXZlKQ0KK3N0YXRpYyBpbnQgX19pbml0IGFs
aTE1eDNfbW9kZXNfbWFwKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2gpDQogew0K
LQlzdHJ1Y3QgaGRfZHJpdmVpZCAqaWQgPSBkcml2ZS0+aWQ7DQotCXN0cnVj
dCBhdGFfY2hhbm5lbCAqaHdpZiA9IGRyaXZlLT5jaGFubmVsOw0KLQlpbnQg
b24gPSAxOw0KLQlpbnQgdmVyYm9zZSA9IDE7DQotCWJ5dGUgY2FuX3VsdHJh
X2RtYSA9IGFsaTE1eDNfY2FuX3VsdHJhKGRyaXZlKTsNCi0NCi0JaWYgKCht
NTIyOV9yZXZpc2lvbjw9MHgyMCkgJiYgKGRyaXZlLT50eXBlICE9IEFUQV9E
SVNLKSkgew0KLQkJdWRtYV9lbmFibGUoZHJpdmUsIDAsIDApOw0KLQkJcmV0
dXJuIDA7DQotCX0NCi0NCi0JaWYgKChpZCAhPSBOVUxMKSAmJiAoKGlkLT5j
YXBhYmlsaXR5ICYgMSkgIT0gMCkgJiYgaHdpZi0+YXV0b2RtYSkgew0KLQkJ
LyogQ29uc3VsdCB0aGUgbGlzdCBvZiBrbm93biAiYmFkIiBkcml2ZXMgKi8N
Ci0JCWlmICh1ZG1hX2JsYWNrX2xpc3QoZHJpdmUpKSB7DQotCQkJb24gPSAw
Ow0KLQkJCWdvdG8gZmFzdF9hdGFfcGlvOw0KLQkJfQ0KLQkJb24gPSAwOw0K
LQkJdmVyYm9zZSA9IDA7DQotCQlpZiAoKGlkLT5maWVsZF92YWxpZCAmIDQp
ICYmIChtNTIyOV9yZXZpc2lvbiA+PSAweEMyKSkgew0KLQkJCWlmIChpZC0+
ZG1hX3VsdHJhICYgMHgwMDNGKSB7DQotCQkJCS8qIEZvcmNlIGlmIENhcGFi
bGUgVWx0cmFETUEgKi8NCi0JCQkJb24gPSBjb25maWdfY2hpcHNldF9mb3Jf
ZG1hKGRyaXZlLCBjYW5fdWx0cmFfZG1hKTsNCi0JCQkJaWYgKChpZC0+Zmll
bGRfdmFsaWQgJiAyKSAmJg0KLQkJCQkgICAgKCFvbikpDQotCQkJCQlnb3Rv
IHRyeV9kbWFfbW9kZXM7DQotCQkJfQ0KLQkJfSBlbHNlIGlmIChpZC0+Zmll
bGRfdmFsaWQgJiAyKSB7DQotdHJ5X2RtYV9tb2RlczoNCi0JCQlpZiAoKGlk
LT5kbWFfbXdvcmQgJiAweDAwMDcpIHx8DQotCQkJICAgIChpZC0+ZG1hXzF3
b3JkICYgMHgwMDA3KSkgew0KLQkJCQkvKiBGb3JjZSBpZiBDYXBhYmxlIHJl
Z3VsYXIgRE1BIG1vZGVzICovDQotCQkJCW9uID0gY29uZmlnX2NoaXBzZXRf
Zm9yX2RtYShkcml2ZSwgY2FuX3VsdHJhX2RtYSk7DQotCQkJCWlmICghb24p
DQotCQkJCQlnb3RvIG5vX2RtYV9zZXQ7DQotCQkJfQ0KLQkJfSBlbHNlIGlm
ICh1ZG1hX3doaXRlX2xpc3QoZHJpdmUpKSB7DQotCQkJaWYgKGlkLT5laWRl
X2RtYV90aW1lID4gMTUwKSB7DQotCQkJCWdvdG8gbm9fZG1hX3NldDsNCi0J
CQl9DQotCQkJLyogQ29uc3VsdCB0aGUgbGlzdCBvZiBrbm93biAiZ29vZCIg
ZHJpdmVzICovDQotCQkJb24gPSBjb25maWdfY2hpcHNldF9mb3JfZG1hKGRy
aXZlLCBjYW5fdWx0cmFfZG1hKTsNCi0JCQlpZiAoIW9uKQ0KLQkJCQlnb3Rv
IG5vX2RtYV9zZXQ7DQotCQl9IGVsc2Ugew0KLQkJCWdvdG8gZmFzdF9hdGFf
cGlvOw0KLQkJfQ0KLQl9IGVsc2UgaWYgKChpZC0+Y2FwYWJpbGl0eSAmIDgp
IHx8IChpZC0+ZmllbGRfdmFsaWQgJiAyKSkgew0KLWZhc3RfYXRhX3BpbzoN
Ci0JCW9uID0gMDsNCi0JCXZlcmJvc2UgPSAwOw0KLW5vX2RtYV9zZXQ6DQot
CQlhbGkxNXgzX3R1bmVfZHJpdmUoZHJpdmUsIDI1NSk7DQotCX0NCisJaW50
IG1hcCA9IFhGRVJfRVBJTyB8IFhGRVJfU1dETUEgfCBYRkVSX01XRE1BOw0K
IA0KLQl1ZG1hX2VuYWJsZShkcml2ZSwgb24sIHZlcmJvc2UpOw0KKwlpZiAo
bTUyMjlfcmV2aXNpb24gPD0gMHgyMCkNCisJCXJldHVybiBtYXA7DQogDQot
CXJldHVybiAwOw0KLX0NCisJbWFwIHw9IFhGRVJfVURNQTsNCiANCi1zdGF0
aWMgaW50IGFsaTE1eDNfdWRtYV9pbml0KHN0cnVjdCBhdGFfZGV2aWNlICpk
cml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxKQ0KLXsNCi0JaWYgKChtNTIyOV9y
ZXZpc2lvbiA8IDB4QzIpICYmIChkcml2ZS0+dHlwZSAhPSBBVEFfRElTSykp
DQotCQlyZXR1cm4gaWRlX3N0b3BwZWQ7CS8qIHRyeSBQSU8gaW5zdGVhZCBv
ZiBETUEgKi8NCisJaWYgKG01MjI5X3JldmlzaW9uID49IDB4QzIpIHsNCisJ
CW1hcCB8PSBYRkVSX1VETUFfNjY7DQorCQlpZiAobTUyMjlfcmV2aXNpb24g
Pj0gMHhDNCkNCisJCQltYXAgfD0gWEZFUl9VRE1BXzEwMDsNCisJfQ0KIA0K
LQlyZXR1cm4gdWRtYV9wY2lfaW5pdChkcml2ZSwgcnEpOw0KKwlyZXR1cm4g
bWFwOw0KIH0NCiAjZW5kaWYNCiANCkBAIC00MjYsNiArMzM5LDggQEANCiAJ
fQ0KICNlbmRpZiAvKiBDT05GSUdfU1BBUkM2NCAqLw0KIA0KKwlod2lmLT51
ZG1hX2ZvdXIgPSBhbGkxNXgzX2F0YTY2X2NoZWNrKGh3aWYpOw0KKw0KIAlo
d2lmLT50dW5lcHJvYyA9ICZhbGkxNXgzX3R1bmVfZHJpdmU7DQogCWh3aWYt
PmRyaXZlc1swXS5hdXRvdHVuZSA9IDE7DQogCWh3aWYtPmRyaXZlc1sxXS5h
dXRvdHVuZSA9IDE7DQpAQCAtNDM2LDE1ICszNTEsMTIgQEANCiAJCS8qDQog
CQkgKiBNMTU0M0Mgb3IgbmV3ZXIgZm9yIERNQWluZw0KIAkJICovDQotCQlo
d2lmLT51ZG1hX2luaXQgPSBhbGkxNXgzX3VkbWFfaW5pdDsNCisJCWh3aWYt
Pm1vZGVzX21hcCA9IGFsaTE1eDNfbW9kZXNfbWFwKGh3aWYpOw0KKwkJaWYg
KG01MjI5X3JldmlzaW9uIDwgMHhDMikNCisJCQlod2lmLT5ub19hdGFwaV9h
dXRvZG1hID0gMTsNCiAJCWh3aWYtPnVkbWFfc2V0dXAgPSBhbGkxNXgzX3Vk
bWFfc2V0dXA7DQotCQlod2lmLT5hdXRvZG1hID0gMTsNCisJCWh3aWYtPnVk
bWFfaW5pdCA9IGFsaTE1eDNfdWRtYV9pbml0Ow0KIAl9DQotDQotCWlmIChu
b2F1dG9kbWEpDQotCQlod2lmLT5hdXRvZG1hID0gMDsNCi0jZWxzZQ0KLQlo
d2lmLT5hdXRvZG1hID0gMDsNCiAjZW5kaWYNCiB9DQogDQpAQCAtNDcyLDcg
KzM4NCw2IEBADQogCQl2ZW5kb3I6IFBDSV9WRU5ET1JfSURfQUwsDQogCSAg
ICAgICAgZGV2aWNlOiBQQ0lfREVWSUNFX0lEX0FMX001MjI5LA0KIAkJaW5p
dF9jaGlwc2V0OiBhbGkxNXgzX2luaXRfY2hpcHNldCwNCi0JCWF0YTY2X2No
ZWNrOiBhbGkxNXgzX2F0YTY2X2NoZWNrLA0KIAkJaW5pdF9jaGFubmVsOiBh
bGkxNXgzX2luaXRfY2hhbm5lbCwNCiAJCWluaXRfZG1hOiBhbGkxNXgzX2lu
aXRfZG1hLA0KIAkJZW5hYmxlYml0czogeyB7MHgwMCwweDAwLDB4MDB9LCB7
MHgwMCwweDAwLDB4MDB9IH0sDQpkaWZmIC11ciAtWGRvbnRkaWZmIGxpbnV4
LTIuNS4yNC9kcml2ZXJzL2lkZS9hbWQ3NHh4LmMgbGludXgvZHJpdmVycy9p
ZGUvYW1kNzR4eC5jDQotLS0gbGludXgtMi41LjI0L2RyaXZlcnMvaWRlL2Ft
ZDc0eHguYwlUdWUgSnVuIDI1IDIyOjQ2OjA1IDIwMDINCisrKyBsaW51eC9k
cml2ZXJzL2lkZS9hbWQ3NHh4LmMJVHVlIEp1bCAgMiAyMzo1NDoxNiAyMDAy
DQpAQCAtMTc1LDIxICsxNzUsMTUgQEANCiB9DQogDQogI2lmZGVmIENPTkZJ
R19CTEtfREVWX0lERURNQQ0KLXN0YXRpYyBpbnQgYW1kNzR4eF91ZG1hX3Nl
dHVwKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSkNCitzdGF0aWMgaW50IF9f
aW5pdCBhbWRfbW9kZXNfbWFwKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2gpDQog
ew0KLQlzaG9ydCB3ODAgPSBkcml2ZS0+Y2hhbm5lbC0+dWRtYV9mb3VyOw0K
KwlzaG9ydCB3ODAgPSBjaC0+dWRtYV9mb3VyOw0KKwlpbnQgbWFwID0gWEZF
Ul9FUElPIHwgWEZFUl9NV0RNQSB8IFhGRVJfVURNQSB8DQorCQkgICgoYW1k
X2NvbmZpZy0+ZmxhZ3MgJiBBTURfQkFEX1NXRE1BKSA/IDAgOiBYRkVSX1NX
RE1BKSB8DQorCQkgICh3ODAgJiYgKGFtZF9jb25maWctPmZsYWdzICYgQU1E
X1VETUEpID49IEFNRF9VRE1BXzY2ID8gWEZFUl9VRE1BXzY2IDogMCkgfA0K
KwkJICAodzgwICYmIChhbWRfY29uZmlnLT5mbGFncyAmIEFNRF9VRE1BKSA+
PSBBTURfVURNQV8xMDAgPyBYRkVSX1VETUFfMTAwIDogMCk7DQogDQotCXNo
b3J0IHNwZWVkID0gYXRhX3RpbWluZ19tb2RlKGRyaXZlLA0KLQkJCVhGRVJf
UElPIHwgWEZFUl9FUElPIHwgWEZFUl9NV0RNQSB8IFhGRVJfVURNQSB8DQot
CQkJKChhbWRfY29uZmlnLT5mbGFncyAmIEFNRF9CQURfU1dETUEpID8gMCA6
IFhGRVJfU1dETUEpIHwNCi0JCQkodzgwICYmIChhbWRfY29uZmlnLT5mbGFn
cyAmIEFNRF9VRE1BKSA+PSBBTURfVURNQV82NiA/IFhGRVJfVURNQV82NiA6
IDApIHwNCi0JCQkodzgwICYmIChhbWRfY29uZmlnLT5mbGFncyAmIEFNRF9V
RE1BKSA+PSBBTURfVURNQV8xMDAgPyBYRkVSX1VETUFfMTAwIDogMCkpOw0K
LQ0KLQlhbWRfc2V0X2RyaXZlKGRyaXZlLCBzcGVlZCk7DQotDQotCXVkbWFf
ZW5hYmxlKGRyaXZlLCBkcml2ZS0+Y2hhbm5lbC0+YXV0b2RtYSAmJiAoc3Bl
ZWQgJiBYRkVSX01PREUpICE9IFhGRVJfUElPLCAwKTsNCi0NCi0JcmV0dXJu
IDA7DQorCXJldHVybiBtYXA7DQogfQ0KICNlbmRpZg0KIA0KQEAgLTI3NCw5
ICsyNjgsMTAgQEANCiB7DQogCWludCBpOw0KIA0KKwlod2lmLT51ZG1hX2Zv
dXIgPSBhbWQ3NHh4X2F0YTY2X2NoZWNrKGh3aWYpOw0KKw0KIAlod2lmLT50
dW5lcHJvYyA9ICZhbWQ3NHh4X3R1bmVfZHJpdmU7DQogCWh3aWYtPnNwZWVk
cHJvYyA9ICZhbWRfc2V0X2RyaXZlOw0KLQlod2lmLT5hdXRvZG1hID0gMDsN
CiANCiAJaHdpZi0+aW9fMzJiaXQgPSAxOw0KIAlod2lmLT51bm1hc2sgPSAx
Ow0KQEAgLTI4OSwxMSArMjg0LDggQEANCiAjaWZkZWYgQ09ORklHX0JMS19E
RVZfSURFRE1BDQogCWlmIChod2lmLT5kbWFfYmFzZSkgew0KIAkJaHdpZi0+
aGlnaG1lbSA9IDE7DQotCQlod2lmLT51ZG1hX3NldHVwID0gYW1kNzR4eF91
ZG1hX3NldHVwOw0KLSMgaWZkZWYgQ09ORklHX0lERURNQV9BVVRPDQotCQlp
ZiAoIW5vYXV0b2RtYSkNCi0JCQlod2lmLT5hdXRvZG1hID0gMTsNCi0jIGVu
ZGlmDQorCQlod2lmLT5tb2Rlc19tYXAgPSBhbWRfbW9kZXNfbWFwKGh3aWYp
Ow0KKwkJaHdpZi0+dWRtYV9zZXR1cCA9IHVkbWFfZ2VuZXJpY19zZXR1cDsN
CiAJfQ0KICNlbmRpZg0KIH0NCkBAIC0zMTQsNyArMzA2LDYgQEANCiAJCXZl
bmRvcjogUENJX1ZFTkRPUl9JRF9BTUQsDQogCQlkZXZpY2U6IFBDSV9ERVZJ
Q0VfSURfQU1EX0NPQlJBXzc0MDEsDQogCQlpbml0X2NoaXBzZXQ6IGFtZDc0
eHhfaW5pdF9jaGlwc2V0LA0KLQkJYXRhNjZfY2hlY2s6IGFtZDc0eHhfYXRh
NjZfY2hlY2ssDQogCQlpbml0X2NoYW5uZWw6IGFtZDc0eHhfaW5pdF9jaGFu
bmVsLA0KIAkJaW5pdF9kbWE6IGFtZDc0eHhfaW5pdF9kbWEsDQogCQllbmFi
bGViaXRzOiB7ezB4NDAsMHgwMSwweDAxfSwgezB4NDAsMHgwMiwweDAyfX0s
DQpAQCAtMzI0LDcgKzMxNSw2IEBADQogCQl2ZW5kb3I6CVBDSV9WRU5ET1Jf
SURfQU1ELA0KIAkJZGV2aWNlOglQQ0lfREVWSUNFX0lEX0FNRF9WSVBFUl83
NDA5LA0KIAkJaW5pdF9jaGlwc2V0OiBhbWQ3NHh4X2luaXRfY2hpcHNldCwN
Ci0JCWF0YTY2X2NoZWNrOiBhbWQ3NHh4X2F0YTY2X2NoZWNrLA0KIAkJaW5p
dF9jaGFubmVsOiBhbWQ3NHh4X2luaXRfY2hhbm5lbCwNCiAJCWluaXRfZG1h
OiBhbWQ3NHh4X2luaXRfZG1hLA0KIAkJZW5hYmxlYml0czoge3sweDQwLDB4
MDEsMHgwMX0sIHsweDQwLDB4MDIsMHgwMn19LA0KQEAgLTMzNSw3ICszMjUs
NiBAQA0KIAkJdmVuZG9yOglQQ0lfVkVORE9SX0lEX0FNRCwNCiAJCWRldmlj
ZToJUENJX0RFVklDRV9JRF9BTURfVklQRVJfNzQxMSwNCiAJCWluaXRfY2hp
cHNldDogYW1kNzR4eF9pbml0X2NoaXBzZXQsDQotCQlhdGE2Nl9jaGVjazog
YW1kNzR4eF9hdGE2Nl9jaGVjaywNCiAJCWluaXRfY2hhbm5lbDogYW1kNzR4
eF9pbml0X2NoYW5uZWwsDQogCQlpbml0X2RtYTogYW1kNzR4eF9pbml0X2Rt
YSwNCiAJCWVuYWJsZWJpdHM6IHt7MHg0MCwweDAxLDB4MDF9LCB7MHg0MCww
eDAyLDB4MDJ9fSwNCkBAIC0zNDUsNyArMzM0LDYgQEANCiAJCXZlbmRvcjoJ
UENJX1ZFTkRPUl9JRF9BTUQsDQogCQlkZXZpY2U6CVBDSV9ERVZJQ0VfSURf
QU1EX09QVVNfNzQ0MSwNCiAJCWluaXRfY2hpcHNldDogYW1kNzR4eF9pbml0
X2NoaXBzZXQsDQotCQlhdGE2Nl9jaGVjazogYW1kNzR4eF9hdGE2Nl9jaGVj
aywNCiAJCWluaXRfY2hhbm5lbDogYW1kNzR4eF9pbml0X2NoYW5uZWwsDQog
CQlpbml0X2RtYTogYW1kNzR4eF9pbml0X2RtYSwNCiAJCWVuYWJsZWJpdHM6
IHt7MHg0MCwweDAxLDB4MDF9LCB7MHg0MCwweDAyLDB4MDJ9fSwNCkBAIC0z
NTUsNyArMzQzLDYgQEANCiAJCXZlbmRvcjoJUENJX1ZFTkRPUl9JRF9BTUQs
DQogCQlkZXZpY2U6CVBDSV9ERVZJQ0VfSURfQU1EXzgxMTFfSURFLA0KIAkJ
aW5pdF9jaGlwc2V0OiBhbWQ3NHh4X2luaXRfY2hpcHNldCwNCi0JCWF0YTY2
X2NoZWNrOiBhbWQ3NHh4X2F0YTY2X2NoZWNrLA0KIAkJaW5pdF9jaGFubmVs
OiBhbWQ3NHh4X2luaXRfY2hhbm5lbCwNCiAJCWluaXRfZG1hOiBhbWQ3NHh4
X2luaXRfZG1hLA0KIAkJZW5hYmxlYml0czoge3sweDQwLDB4MDEsMHgwMX0s
IHsweDQwLDB4MDIsMHgwMn19LA0KQEAgLTM2NSw3ICszNTIsNiBAQA0KIAkJ
dmVuZG9yOglQQ0lfVkVORE9SX0lEX05WSURJQSwNCiAJCWRldmljZToJUENJ
X0RFVklDRV9JRF9OVklESUFfTkZPUkNFX0lERSwNCiAJCWluaXRfY2hpcHNl
dDogYW1kNzR4eF9pbml0X2NoaXBzZXQsDQotCQlhdGE2Nl9jaGVjazogYW1k
NzR4eF9hdGE2Nl9jaGVjaywNCiAJCWluaXRfY2hhbm5lbDogYW1kNzR4eF9p
bml0X2NoYW5uZWwsDQogCQlpbml0X2RtYTogYW1kNzR4eF9pbml0X2RtYSwN
CiAJCWVuYWJsZWJpdHM6IHt7MHg1MCwweDAxLDB4MDF9LCB7MHg1MCwweDAy
LDB4MDJ9fSwNCmRpZmYgLXVyIC1YZG9udGRpZmYgbGludXgtMi41LjI0L2Ry
aXZlcnMvaWRlL2F0YS10aW1pbmcuYyBsaW51eC9kcml2ZXJzL2lkZS9hdGEt
dGltaW5nLmMNCi0tLSBsaW51eC0yLjUuMjQvZHJpdmVycy9pZGUvYXRhLXRp
bWluZy5jCVR1ZSBKdW4gMjUgMjI6NDY6MDAgMjAwMg0KKysrIGxpbnV4L2Ry
aXZlcnMvaWRlL2F0YS10aW1pbmcuYwlUdWUgSnVsICAyIDIzOjUzOjA0IDIw
MDINCkBAIC04Niw5ICs4NiwxMSBAQA0KIAkJaWYgKChtYXAgJiBYRkVSX1VE
TUFfMTAwKSA9PSBYRkVSX1VETUFfMTAwKQ0KIAkJCWlmICgoYmVzdCA9IChp
ZC0+ZG1hX3VsdHJhICYgMHgwMDIwKSA/IFhGRVJfVURNQV81IDogMCkpIHJl
dHVybiBiZXN0Ow0KIA0KLQkJaWYgKChtYXAgJiBYRkVSX1VETUFfNjYpID09
IFhGRVJfVURNQV82NikNCi0JCQlpZiAoKGJlc3QgPSAoaWQtPmRtYV91bHRy
YSAmIDB4MDAxMCkgPyBYRkVSX1VETUFfNCA6DQotCQkJCSAgICAoaWQtPmRt
YV91bHRyYSAmIDB4MDAwOCkgPyBYRkVSX1VETUFfMyA6IDApKSByZXR1cm4g
YmVzdDsNCisJCWlmICgobWFwICYgWEZFUl9VRE1BXzY2XzQpID09IFhGRVJf
VURNQV82Nl80KQ0KKwkJCWlmICgoYmVzdCA9IChpZC0+ZG1hX3VsdHJhICYg
MHgwMDEwKSA/IFhGRVJfVURNQV80IDogMCkpIHJldHVybiBiZXN0Ow0KKw0K
KwkJaWYgKChtYXAgJiBYRkVSX1VETUFfNjZfMykgPT0gWEZFUl9VRE1BXzY2
XzMpDQorCQkJaWYgKChiZXN0ID0gKGlkLT5kbWFfdWx0cmEgJiAweDAwMDgp
ID8gWEZFUl9VRE1BXzMgOiAwKSkgcmV0dXJuIGJlc3Q7DQogDQogICAgICAg
ICAgICAgICAgIGlmICgoYmVzdCA9IChpZC0+ZG1hX3VsdHJhICYgMHgwMDA0
KSA/IFhGRVJfVURNQV8yIDoNCiAJCQkgICAgKGlkLT5kbWFfdWx0cmEgJiAw
eDAwMDIpID8gWEZFUl9VRE1BXzEgOg0KZGlmZiAtdXIgLVhkb250ZGlmZiBs
aW51eC0yLjUuMjQvZHJpdmVycy9pZGUvYXRhLXRpbWluZy5oIGxpbnV4L2Ry
aXZlcnMvaWRlL2F0YS10aW1pbmcuaA0KLS0tIGxpbnV4LTIuNS4yNC9kcml2
ZXJzL2lkZS9hdGEtdGltaW5nLmgJVHVlIEp1biAyNSAyMjo0Njo0MyAyMDAy
DQorKysgbGludXgvZHJpdmVycy9pZGUvYXRhLXRpbWluZy5oCVR1ZSBKdWwg
IDIgMjM6NTM6MDQgMjAwMg0KQEAgLTU5LDE1ICs1OSwyMiBAQA0KICNkZWZp
bmUgRU5PVUdIKHYsdW5pdCkJKCgodiktMSkvKHVuaXQpKzEpDQogI2RlZmlu
ZSBFWih2LHVuaXQpCSgodik/RU5PVUdIKHYsdW5pdCk6MCkNCiANCi0jZGVm
aW5lIFhGRVJfTU9ERQkweGYwDQotI2RlZmluZSBYRkVSX1VETUFfMTMzCTB4
NDgNCi0jZGVmaW5lIFhGRVJfVURNQV8xMDAJMHg0NA0KLSNkZWZpbmUgWEZF
Ul9VRE1BXzY2CTB4NDINCi0jZGVmaW5lIFhGRVJfVURNQQkweDQwDQotI2Rl
ZmluZSBYRkVSX01XRE1BCTB4MjANCi0jZGVmaW5lIFhGRVJfU1dETUEJMHgx
MA0KLSNkZWZpbmUgWEZFUl9FUElPCTB4MDENCi0jZGVmaW5lIFhGRVJfUElP
CTB4MDANCisvKiBzZWUgaHB0MzY2LmMgZm9yIGRldGFpbHMgKi8NCisjZGVm
aW5lIFhGRVJfVURNQV82Nl8zCTB4MTAwDQorI2RlZmluZSBYRkVSX1VETUFf
NjZfNAkweDIwMA0KKw0KKyNkZWZpbmUgWEZFUl9NT0RFCTB4ZmYwDQorI2Rl
ZmluZSBYRkVSX1VETUFfMTMzCTB4ODAwDQorI2RlZmluZSBYRkVSX1VETUFf
MTAwCTB4NDAwDQorI2RlZmluZSBYRkVSX1VETUFfNjYJMHgzMDANCisjZGVm
aW5lIFhGRVJfVURNQQkweDA0MA0KKyNkZWZpbmUgWEZFUl9NV0RNQQkweDAy
MA0KKyNkZWZpbmUgWEZFUl9TV0RNQQkweDAxMA0KKyNkZWZpbmUgWEZFUl9F
UElPCTB4MDAxDQorI2RlZmluZSBYRkVSX1BJTwkweDAwMA0KKw0KKyNkZWZp
bmUgWEZFUl9VRE1BX0FMTAkweGY0MA0KKyNkZWZpbmUgWEZFUl9VRE1BXzgw
VwkweGYwMA0KIA0KIC8qIEV4dGVybmFsIGludGVyZmFjZSB0byBob3N0IGNo
aXBzIGNoYW5uZWwgdGltaW5nIHNldHVwLg0KICAqDQpkaWZmIC11ciAtWGRv
bnRkaWZmIGxpbnV4LTIuNS4yNC9kcml2ZXJzL2lkZS9jbWQ2NHguYyBsaW51
eC9kcml2ZXJzL2lkZS9jbWQ2NHguYw0KLS0tIGxpbnV4LTIuNS4yNC9kcml2
ZXJzL2lkZS9jbWQ2NHguYwlUdWUgSnVuIDI1IDIyOjQ2OjQzIDIwMDINCisr
KyBsaW51eC9kcml2ZXJzL2lkZS9jbWQ2NHguYwlUdWUgSnVsICAyIDIzOjU0
OjE2IDIwMDINCkBAIC0yMTcsMTAgKzIxNywxMCBAQA0KIAlpZGVfY29uZmln
X2RyaXZlX3NwZWVkKGRyaXZlLCBzcGVlZCk7DQogfQ0KIA0KLXN0YXRpYyBp
bnQgY21kNjR4X3JhdGVtYXNrKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSkN
CitzdGF0aWMgaW50IF9faW5pdCBjbWQ2eHhfbW9kZXNfbWFwKHN0cnVjdCBh
dGFfY2hhbm5lbCAqY2gpDQogew0KLQlzdHJ1Y3QgcGNpX2RldiAqZGV2ID0g
ZHJpdmUtPmNoYW5uZWwtPnBjaV9kZXY7DQotCWludCBtYXAgPSAwOw0KKwlz
dHJ1Y3QgcGNpX2RldiAqZGV2ID0gY2gtPnBjaV9kZXY7DQorCWludCBtYXAg
PSBYRkVSX0VQSU8gfCBYRkVSX1NXRE1BIHwgWEZFUl9NV0RNQTsNCiANCiAJ
c3dpdGNoKGRldi0+ZGV2aWNlKSB7DQogCQljYXNlIFBDSV9ERVZJQ0VfSURf
Q01EXzY4MDoNCkBAIC0yMzQsMTAgKzIzNCw5IEBADQogCQkJYnJlYWs7DQog
CQljYXNlIFBDSV9ERVZJQ0VfSURfQ01EXzY0NjoNCiAJCXsNCi0JCQl1MzIg
Y2xhc3NfcmV2Ow0KLQkJCXBjaV9yZWFkX2NvbmZpZ19kd29yZChkZXYsDQot
CQkJCVBDSV9DTEFTU19SRVZJU0lPTiwgJmNsYXNzX3Jldik7DQotCQkJY2xh
c3NfcmV2ICY9IDB4ZmY7DQorCQkJdTMyIHJldjsNCisJCQlwY2lfcmVhZF9j
b25maWdfZHdvcmQoZGV2LCBQQ0lfQ0xBU1NfUkVWSVNJT04sICZyZXYpOw0K
KwkJCXJldiAmPSAweGZmOw0KIAkJLyoNCiAJCSAqIFVsdHJhRE1BIG9ubHkg
c3VwcG9ydGVkIG9uIFBDSTY0NlUgYW5kIFBDSTY0NlUyLCB3aGljaA0KIAkJ
ICogY29ycmVzcG9uZCB0byByZXZpc2lvbnMgMHgwMywgMHgwNSBhbmQgMHgw
NyByZXNwZWN0aXZlbHkuDQpAQCAtMjUwLDcgKzI0OSw3IEBADQogCQkgKg0K
IAkJICogU28gd2Ugb25seSBkbyBVbHRyYURNQSBvbiByZXZpc2lvbiAweDA1
IGFuZCAweDA3IGNoaXBzZXRzLg0KIAkJICovDQotCQkJc3dpdGNoKGNsYXNz
X3Jldikgew0KKwkJCXN3aXRjaChyZXYpIHsNCiAJCQkJY2FzZSAweDA3Og0K
IAkJCQljYXNlIDB4MDU6DQogCQkJCQltYXAgfD0gWEZFUl9VRE1BOw0KQEAg
LTI2MCwxMSArMjU5LDYgQEANCiAJCX0NCiAJfQ0KIA0KLQlpZiAoIWVpZ2h0
eV9uaW50eV90aHJlZShkcml2ZSkpIHsNCi0JCWlmIChtYXAgJiBYRkVSX1VE
TUEpDQotCQkJcmV0dXJuIFhGRVJfVURNQTsNCi0JCXJldHVybiAwOw0KLQl9
DQogCXJldHVybiBtYXA7DQogfQ0KIA0KQEAgLTUxNSw4MCArNTA5LDYgQEAN
CiB9DQogDQogI2lmZGVmIENPTkZJR19CTEtfREVWX0lERURNQQ0KLXN0YXRp
YyBpbnQgY29uZmlnX2NoaXBzZXRfZm9yX2RtYShzdHJ1Y3QgYXRhX2Rldmlj
ZSAqZHJpdmUsIHU4IHVkbWEpDQotew0KLQlpbnQgbWFwOw0KLQl1OCBtb2Rl
Ow0KLQ0KLQlpZiAodWRtYSkNCi0JCW1hcCA9IGNtZDY0eF9yYXRlbWFzayhk
cml2ZSk7DQotCWVsc2UNCi0JCW1hcCA9IFhGRVJfU1dETUEgfCBYRkVSX01X
RE1BOw0KLQ0KLQltb2RlID0gYXRhX3RpbWluZ19tb2RlKGRyaXZlLCBtYXAp
Ow0KLQ0KLQlyZXR1cm4gIWRyaXZlLT5jaGFubmVsLT5zcGVlZHByb2MoZHJp
dmUsIG1vZGUpOw0KLX0NCi0NCi1zdGF0aWMgaW50IGNtZDZ4eF91ZG1hX3Nl
dHVwKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSkNCi17DQotCXN0cnVjdCBo
ZF9kcml2ZWlkICppZAk9IGRyaXZlLT5pZDsNCi0Jc3RydWN0IGF0YV9jaGFu
bmVsICpod2lmID0gZHJpdmUtPmNoYW5uZWw7DQotCWludCBvbiA9IDE7DQot
CWludCB2ZXJib3NlID0gMTsNCi0NCi0JaHdpZi0+dHVuZXByb2MoZHJpdmUs
IDI1NSk7DQotDQotCWlmICgoaWQgIT0gTlVMTCkgJiYgKChpZC0+Y2FwYWJp
bGl0eSAmIDEpICE9IDApICYmDQotCSAgICBod2lmLT5hdXRvZG1hICYmIChk
cml2ZS0+dHlwZSA9PSBBVEFfRElTSykpIHsNCi0JCS8qIENvbnN1bHQgdGhl
IGxpc3Qgb2Yga25vd24gImJhZCIgZHJpdmVzICovDQotCQlpZiAodWRtYV9i
bGFja19saXN0KGRyaXZlKSkgew0KLQkJCW9uID0gMDsNCi0JCQlnb3RvIGZh
c3RfYXRhX3BpbzsNCi0JCX0NCi0JCW9uID0gMDsNCi0JCXZlcmJvc2UgPSAw
Ow0KLQkJaWYgKChpZC0+ZmllbGRfdmFsaWQgJiA0KSkgew0KLQkJCWlmIChp
ZC0+ZG1hX3VsdHJhICYgMHgwMDdGKSB7DQotCQkJCS8qIEZvcmNlIGlmIENh
cGFibGUgVWx0cmFETUEgKi8NCi0JCQkJb24gPSBjb25maWdfY2hpcHNldF9m
b3JfZG1hKGRyaXZlLCAxKTsNCi0JCQkJaWYgKChpZC0+ZmllbGRfdmFsaWQg
JiAyKSAmJg0KLQkJCQkgICAgKCFvbikpDQotCQkJCQlnb3RvIHRyeV9kbWFf
bW9kZXM7DQotCQkJfQ0KLQkJfSBlbHNlIGlmIChpZC0+ZmllbGRfdmFsaWQg
JiAyKSB7DQotdHJ5X2RtYV9tb2RlczoNCi0JCQlpZiAoKGlkLT5kbWFfbXdv
cmQgJiAweDAwMDcpIHx8DQotCQkJICAgIChpZC0+ZG1hXzF3b3JkICYgMHgw
MDA3KSkgew0KLQkJCQkvKiBGb3JjZSBpZiBDYXBhYmxlIHJlZ3VsYXIgRE1B
IG1vZGVzICovDQotCQkJCW9uID0gY29uZmlnX2NoaXBzZXRfZm9yX2RtYShk
cml2ZSwgMCk7DQotCQkJCWlmICghb24pDQotCQkJCQlnb3RvIG5vX2RtYV9z
ZXQ7DQotCQkJfQ0KLQkJfSBlbHNlIGlmICh1ZG1hX3doaXRlX2xpc3QoZHJp
dmUpKSB7DQotCQkJaWYgKGlkLT5laWRlX2RtYV90aW1lID4gMTUwKSB7DQot
CQkJCWdvdG8gbm9fZG1hX3NldDsNCi0JCQl9DQotCQkJLyogQ29uc3VsdCB0
aGUgbGlzdCBvZiBrbm93biAiZ29vZCIgZHJpdmVzICovDQotCQkJb24gPSBj
b25maWdfY2hpcHNldF9mb3JfZG1hKGRyaXZlLCAwKTsNCi0JCQlpZiAoIW9u
KQ0KLQkJCQlnb3RvIG5vX2RtYV9zZXQ7DQotCQl9IGVsc2Ugew0KLQkJCWdv
dG8gZmFzdF9hdGFfcGlvOw0KLQkJfQ0KLQl9IGVsc2UgaWYgKChpZC0+Y2Fw
YWJpbGl0eSAmIDgpIHx8IChpZC0+ZmllbGRfdmFsaWQgJiAyKSkgew0KLWZh
c3RfYXRhX3BpbzoNCi0JCW9uID0gMDsNCi0JCXZlcmJvc2UgPSAwOw0KLW5v
X2RtYV9zZXQ6DQotCQlod2lmLT50dW5lcHJvYyhkcml2ZSwgMjU1KTsNCi0J
fQ0KLQ0KLQl1ZG1hX2VuYWJsZShkcml2ZSwgb24sIHZlcmJvc2UpOw0KLQ0K
LQlyZXR1cm4gMDsNCi19DQotDQogc3RhdGljIGludCBjbWQ2NHhfdWRtYV9z
dG9wKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSkNCiB7DQogCXN0cnVjdCBh
dGFfY2hhbm5lbCAqY2ggPSBkcml2ZS0+Y2hhbm5lbDsNCkBAIC04MjIsMTMg
Kzc0Miw2IEBADQogCXJldHVybiAoYXRhNjYgJiBtYXNrKSA/IDEgOiAwOw0K
IH0NCiANCi1zdGF0aWMgdW5zaWduZWQgaW50IF9faW5pdCBjbWQ2NHhfYXRh
NjZfY2hlY2soc3RydWN0IGF0YV9jaGFubmVsICpod2lmKQ0KLXsNCi0JaWYg
KGh3aWYtPnBjaV9kZXYtPmRldmljZSA9PSBQQ0lfREVWSUNFX0lEX0NNRF82
ODApDQotCQlyZXR1cm4gY21kNjgwX2F0YTY2KGh3aWYpOw0KLQlyZXR1cm4g
Y21kNjR4X2F0YTY2KGh3aWYpOw0KLX0NCi0NCiBzdGF0aWMgdm9pZCBfX2lu
aXQgY21kNjR4X2luaXRfY2hhbm5lbChzdHJ1Y3QgYXRhX2NoYW5uZWwgKmh3
aWYpDQogew0KIAlzdHJ1Y3QgcGNpX2RldiAqZGV2CT0gaHdpZi0+cGNpX2Rl
djsNCkBAIC04NDMsMzIgKzc1NiwyOCBAQA0KIAlzd2l0Y2goZGV2LT5kZXZp
Y2UpIHsNCiAJCWNhc2UgUENJX0RFVklDRV9JRF9DTURfNjgwOg0KIAkJCWh3
aWYtPmJ1c3Byb2MJPSBjbWQ2ODBfYnVzcHJvYzsNCi0jaWZkZWYgQ09ORklH
X0JMS19ERVZfSURFRE1BDQotCQkJaWYgKGh3aWYtPmRtYV9iYXNlKQ0KLQkJ
CQlod2lmLT51ZG1hX3NldHVwID0gY21kNnh4X3VkbWFfc2V0dXA7DQotI2Vu
ZGlmDQogCQkJaHdpZi0+cmVzZXRwcm9jID0gY21kNjgwX3Jlc2V0Ow0KIAkJ
CWh3aWYtPnNwZWVkcHJvYwk9IGNtZDY4MF90dW5lX2NoaXBzZXQ7DQogCQkJ
aHdpZi0+dHVuZXByb2MJPSBjbWQ2ODBfdHVuZXByb2M7DQorCQkJaHdpZi0+
dWRtYV9mb3VyID0gY21kNjgwX2F0YTY2KGh3aWYpOw0KIAkJCWJyZWFrOw0K
IAkJY2FzZSBQQ0lfREVWSUNFX0lEX0NNRF82NDk6DQogCQljYXNlIFBDSV9E
RVZJQ0VfSURfQ01EXzY0ODoNCiAJCWNhc2UgUENJX0RFVklDRV9JRF9DTURf
NjQzOg0KICNpZmRlZiBDT05GSUdfQkxLX0RFVl9JREVETUENCiAJCQlpZiAo
aHdpZi0+ZG1hX2Jhc2UpIHsNCi0JCQkJaHdpZi0+dWRtYV9zZXR1cCA9IGNt
ZDZ4eF91ZG1hX3NldHVwOw0KIAkJCQlod2lmLT51ZG1hX3N0b3AJPSBjbWQ2
NHhfdWRtYV9zdG9wOw0KIAkJCQlod2lmLT51ZG1hX2lycV9zdGF0dXMgPSBj
bWQ2NHhfdWRtYV9pcnFfc3RhdHVzOw0KIAkJCX0NCiAjZW5kaWYNCiAJCQlo
d2lmLT50dW5lcHJvYwk9IGNtZDY0eF90dW5lcHJvYzsNCiAJCQlod2lmLT5z
cGVlZHByb2MgPSBjbWQ2NHhfdHVuZV9jaGlwc2V0Ow0KKwkJCWh3aWYtPnVk
bWFfZm91ciA9IGNtZDY0eF9hdGE2Nihod2lmKTsNCiAJCQlicmVhazsNCiAJ
CWNhc2UgUENJX0RFVklDRV9JRF9DTURfNjQ2Og0KIAkJCWh3aWYtPmNoaXBz
ZXQgPSBpZGVfY21kNjQ2Ow0KICNpZmRlZiBDT05GSUdfQkxLX0RFVl9JREVE
TUENCiAJCQlpZiAoaHdpZi0+ZG1hX2Jhc2UpIHsNCi0JCQkJaHdpZi0+dWRt
YV9zZXR1cCA9IGNtZDZ4eF91ZG1hX3NldHVwOw0KIAkJCQlpZiAoY2xhc3Nf
cmV2ID09IDB4MDEpIHsNCiAJCQkJCWh3aWYtPnVkbWFfc3RvcCA9IGNtZDY0
Nl8xX3VkbWFfc3RvcDsNCiAJCQkJfSBlbHNlIHsNCkBAIC04NzksNiArNzg4
LDcgQEANCiAjZW5kaWYNCiAJCQlod2lmLT50dW5lcHJvYwk9IGNtZDY0eF90
dW5lcHJvYzsNCiAJCQlod2lmLT5zcGVlZHByb2MJPSBjbWQ2NHhfdHVuZV9j
aGlwc2V0Ow0KKwkJCWh3aWYtPnVkbWFfZm91ciA9IGNtZDY0eF9hdGE2Niho
d2lmKTsNCiAJCQlicmVhazsNCiAJCWRlZmF1bHQ6DQogCQkJYnJlYWs7DQpA
QCAtODg3LDEwICs3OTcsOSBAQA0KICNpZmRlZiBDT05GSUdfQkxLX0RFVl9J
REVETUENCiAJaWYgKGh3aWYtPmRtYV9iYXNlKSB7DQogCQlod2lmLT5oaWdo
bWVtID0gMTsNCi0jIGlmZGVmIENPTkZJR19JREVETUFfQVVUTw0KLQkJaWYg
KCFub2F1dG9kbWEpDQotCQkJaHdpZi0+YXV0b2RtYSA9IDE7DQotIyBlbmRp
Zg0KKwkJaHdpZi0+bW9kZXNfbWFwID0gY21kNnh4X21vZGVzX21hcChod2lm
KTsNCisJCWh3aWYtPm5vX2F0YXBpX2F1dG9kbWEgPSAxOw0KKwkJaHdpZi0+
dWRtYV9zZXR1cCA9IHVkbWFfZ2VuZXJpY19zZXR1cDsNCiAJfQ0KICNlbmRp
Zg0KIH0NCkBAIC05MTksNyArODI4LDYgQEANCiAJCXZlbmRvcjogUENJX1ZF
TkRPUl9JRF9DTUQsDQogCQlkZXZpY2U6IFBDSV9ERVZJQ0VfSURfQ01EXzY0
OCwNCiAJCWluaXRfY2hpcHNldDogY21kNjR4X2luaXRfY2hpcHNldCwNCi0J
CWF0YTY2X2NoZWNrOiBjbWQ2NHhfYXRhNjZfY2hlY2ssDQogCQlpbml0X2No
YW5uZWw6IGNtZDY0eF9pbml0X2NoYW5uZWwsDQogCQlib290YWJsZTogT05f
Qk9BUkQsDQogCQlmbGFnczogQVRBX0ZfRE1BDQpAQCAtOTI4LDcgKzgzNiw2
IEBADQogCQl2ZW5kb3I6IFBDSV9WRU5ET1JfSURfQ01ELA0KIAkJZGV2aWNl
OiBQQ0lfREVWSUNFX0lEX0NNRF82NDksDQogCQlpbml0X2NoaXBzZXQ6IGNt
ZDY0eF9pbml0X2NoaXBzZXQsDQotCQlhdGE2Nl9jaGVjazogY21kNjR4X2F0
YTY2X2NoZWNrLA0KIAkJaW5pdF9jaGFubmVsOiBjbWQ2NHhfaW5pdF9jaGFu
bmVsLA0KIAkJYm9vdGFibGU6IE9OX0JPQVJELA0KIAkJZmxhZ3M6IEFUQV9G
X0RNQQ0KQEAgLTkzNyw3ICs4NDQsNiBAQA0KIAkJdmVuZG9yOiBQQ0lfVkVO
RE9SX0lEX0NNRCwNCiAJCWRldmljZTogUENJX0RFVklDRV9JRF9DTURfNjgw
LA0KIAkJaW5pdF9jaGlwc2V0OiBjbWQ2NHhfaW5pdF9jaGlwc2V0LA0KLQkJ
YXRhNjZfY2hlY2s6IGNtZDY0eF9hdGE2Nl9jaGVjaywNCiAJCWluaXRfY2hh
bm5lbDogY21kNjR4X2luaXRfY2hhbm5lbCwNCiAJCWJvb3RhYmxlOiBPTl9C
T0FSRCwNCiAJCWZsYWdzOiBBVEFfRl9ETUENCmRpZmYgLXVyIC1YZG9udGRp
ZmYgbGludXgtMi41LjI0L2RyaXZlcnMvaWRlL2NzNTUzMC5jIGxpbnV4L2Ry
aXZlcnMvaWRlL2NzNTUzMC5jDQotLS0gbGludXgtMi41LjI0L2RyaXZlcnMv
aWRlL2NzNTUzMC5jCVR1ZSBKdW4gMjUgMjI6NDY6MDIgMjAwMg0KKysrIGxp
bnV4L2RyaXZlcnMvaWRlL2NzNTUzMC5jCVR1ZSBKdWwgIDIgMjM6NTQ6MDcg
MjAwMg0KQEAgLTE5MSw3ICsxOTEsNyBAQA0KIAlyZXR1cm4gMDsNCiB9DQog
DQotc3RhdGljIGludCBjczU1MzBfdWRtYV9zZXR1cChzdHJ1Y3QgYXRhX2Rl
dmljZSAqZHJpdmUpDQorc3RhdGljIGludCBjczU1MzBfdWRtYV9zZXR1cChz
dHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUsIGludCBtYXApDQogew0KIAlyZXR1
cm4gY3M1NTMwX2NvbmZpZ19kbWEoZHJpdmUpOw0KIH0NCkBAIC0yODUsMTcg
KzI4NSwxNSBAQA0KICAqLw0KIHN0YXRpYyB2b2lkIF9faW5pdCBpZGVfaW5p
dF9jczU1MzAoc3RydWN0IGF0YV9jaGFubmVsICpod2lmKQ0KIHsNCisJdTMy
IGJhc2VyZWcsIGQwX3RpbWluZ3M7DQorDQogCWh3aWYtPnNlcmlhbGl6ZWQg
PSAxOw0KLQlpZiAoIWh3aWYtPmRtYV9iYXNlKSB7DQotCQlod2lmLT5hdXRv
ZG1hID0gMDsNCi0JfSBlbHNlIHsNCi0JCXVuc2lnbmVkIGludCBiYXNlcmVn
LCBkMF90aW1pbmdzOw0KIA0KICNpZmRlZiBDT05GSUdfQkxLX0RFVl9JREVE
TUENCi0JaHdpZi0+dWRtYV9zZXR1cCA9IGNzNTUzMF91ZG1hX3NldHVwOw0K
LQlod2lmLT5oaWdobWVtID0gMTsNCi0jZWxzZQ0KLQlod2lmLT5hdXRvZG1h
ID0gMDsNCisJaWYgKGh3aWYtPmRtYV9iYXNlKSB7DQorCQlod2lmLT5oaWdo
bWVtID0gMTsNCisJCWh3aWYtPnVkbWFfc2V0dXAgPSBjczU1MzBfdWRtYV9z
ZXR1cDsNCisJfQ0KICNlbmRpZg0KIA0KIAkJaHdpZi0+dHVuZXByb2MgPSAm
Y3M1NTMwX3R1bmVwcm9jOw0KQEAgLTMxMSw3ICszMDksNiBAQA0KIAkJCWlm
ICghaHdpZi0+ZHJpdmVzWzFdLmF1dG90dW5lKQ0KIAkJCQlod2lmLT5kcml2
ZXNbMV0uYXV0b3R1bmUgPSAxOwkvKiBuZWVkcyBhdXRvdHVuaW5nIGxhdGVy
ICovDQogCQl9DQotCX0NCiB9DQogDQogDQpkaWZmIC11ciAtWGRvbnRkaWZm
IGxpbnV4LTIuNS4yNC9kcml2ZXJzL2lkZS9jeTgyYzY5My5jIGxpbnV4L2Ry
aXZlcnMvaWRlL2N5ODJjNjkzLmMNCi0tLSBsaW51eC0yLjUuMjQvZHJpdmVy
cy9pZGUvY3k4MmM2OTMuYwlUdWUgSnVuIDI1IDIyOjQ2OjAyIDIwMDINCisr
KyBsaW51eC9kcml2ZXJzL2lkZS9jeTgyYzY5My5jCVR1ZSBKdWwgIDIgMjM6
NTQ6MDcgMjAwMg0KQEAgLTIzNyw3ICsyMzcsNyBAQA0KIC8qDQogICogdXNl
ZCB0byBzZXQgRE1BIG1vZGUgZm9yIENZODJDNjkzIChzaW5nbGUgYW5kIG11
bHRpIG1vZGVzKQ0KICAqLw0KLXN0YXRpYyBpbnQgY3k4MmM2OTNfdWRtYV9z
ZXR1cChzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUpDQorc3RhdGljIGludCBj
eTgyYzY5M191ZG1hX3NldHVwKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSwg
aW50IG1hcCkNCiB7DQogCS8qDQogCSAqIFNldCBkbWEgbW9kZSBmb3IgZHJp
dmUgZXZlcnl0aGluZyBlbHNlIGlzIGRvbmUgYnkgdGhlIGRlZmF1bCBmdW5j
Lg0KQEAgLTQxNCwxNCArNDE0LDExIEBADQogCWh3aWYtPnR1bmVwcm9jID0g
Y3k4MmM2OTNfdHVuZV9kcml2ZTsNCiAJaHdpZi0+ZHJpdmVzWzBdLmF1dG90
dW5lID0gMTsNCiAJaHdpZi0+ZHJpdmVzWzFdLmF1dG90dW5lID0gMTsNCi0J
aHdpZi0+YXV0b2RtYSA9IDA7DQogDQogI2lmZGVmIENPTkZJR19CTEtfREVW
X0lERURNQQ0KIAlpZiAoaHdpZi0+ZG1hX2Jhc2UpIHsNCiAJCWh3aWYtPmhp
Z2htZW0gPSAxOw0KIAkJaHdpZi0+dWRtYV9zZXR1cCA9IGN5ODJjNjkzX3Vk
bWFfc2V0dXA7DQotCQlpZiAoIW5vYXV0b2RtYSkNCi0JCQlod2lmLT5hdXRv
ZG1hID0gMTsNCiAJfQ0KICNlbmRpZg0KIH0NCmRpZmYgLXVyIC1YZG9udGRp
ZmYgbGludXgtMi41LjI0L2RyaXZlcnMvaWRlL2hwdDM0eC5jIGxpbnV4L2Ry
aXZlcnMvaWRlL2hwdDM0eC5jDQotLS0gbGludXgtMi41LjI0L2RyaXZlcnMv
aWRlL2hwdDM0eC5jCVR1ZSBKdW4gMjUgMjI6NDY6MDUgMjAwMg0KKysrIGxp
bnV4L2RyaXZlcnMvaWRlL2hwdDM0eC5jCVR1ZSBKdWwgIDIgMjM6NTQ6MDcg
MjAwMg0KQEAgLTcyLDgzICs3MiwxMyBAQA0KIH0NCiANCiAjaWZkZWYgQ09O
RklHX0JMS19ERVZfSURFRE1BDQotc3RhdGljIGludCBjb25maWdfY2hpcHNl
dF9mb3JfZG1hKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSwgdTggdWRtYSkN
CitzdGF0aWMgaW50IGhwdDM0eF91ZG1hX3NldHVwKHN0cnVjdCBhdGFfZGV2
aWNlICpkcml2ZSwgaW50IG1hcCkNCiB7DQotCWludCBtYXA7DQotCXU4IG1v
ZGU7DQotDQotCWlmIChkcml2ZS0+dHlwZSAhPSBBVEFfRElTSykNCi0JCXJl
dHVybiAwOw0KLQ0KLQlpZiAodWRtYSkNCi0JCW1hcCA9IFhGRVJfVURNQTsN
Ci0JZWxzZQ0KLQkJbWFwID0gWEZFUl9TV0RNQSB8IFhGRVJfTVdETUE7DQot
DQotCW1vZGUgPSBhdGFfdGltaW5nX21vZGUoZHJpdmUsIG1hcCk7DQotCWlm
IChtb2RlIDwgWEZFUl9TV19ETUFfMCkNCi0JCXJldHVybiAwOw0KLQ0KLQly
ZXR1cm4gIWhwdDM0eF90dW5lX2NoaXBzZXQoZHJpdmUsIG1vZGUpOw0KLX0N
Ci0NCi1zdGF0aWMgaW50IGhwdDM0eF91ZG1hX3NldHVwKHN0cnVjdCBhdGFf
ZGV2aWNlICpkcml2ZSkNCi17DQotCXN0cnVjdCBoZF9kcml2ZWlkICppZCA9
IGRyaXZlLT5pZDsNCi0JaW50IG9uID0gMTsNCi0JaW50IHZlcmJvc2UgPSAx
Ow0KLQ0KLQlpZiAoaWQgJiYgKGlkLT5jYXBhYmlsaXR5ICYgMSkgJiYgZHJp
dmUtPmNoYW5uZWwtPmF1dG9kbWEpIHsNCi0JCS8qIENvbnN1bHQgdGhlIGxp
c3Qgb2Yga25vd24gImJhZCIgZHJpdmVzICovDQotCQlpZiAodWRtYV9ibGFj
a19saXN0KGRyaXZlKSkgew0KLQkJCW9uID0gMDsNCi0JCQlnb3RvIGZhc3Rf
YXRhX3BpbzsNCi0JCX0NCi0JCW9uID0gMDsNCi0JCXZlcmJvc2UgPSAwOw0K
LQkJaWYgKGlkLT5maWVsZF92YWxpZCAmIDQpIHsNCi0JCQlpZiAoaWQtPmRt
YV91bHRyYSAmIDB4MDAwNykgew0KLQkJCQkvKiBGb3JjZSBpZiBDYXBhYmxl
IFVsdHJhRE1BICovDQotCQkJCW9uID0gY29uZmlnX2NoaXBzZXRfZm9yX2Rt
YShkcml2ZSwgMSk7DQotCQkJCWlmICgoaWQtPmZpZWxkX3ZhbGlkICYgMikg
JiYNCi0JCQkJICAgICghb24pKQ0KLQkJCQkJZ290byB0cnlfZG1hX21vZGVz
Ow0KLQkJCX0NCi0JCX0gZWxzZSBpZiAoaWQtPmZpZWxkX3ZhbGlkICYgMikg
ew0KLXRyeV9kbWFfbW9kZXM6DQotCQkJaWYgKChpZC0+ZG1hX213b3JkICYg
MHgwMDA3KSB8fA0KLQkJCSAgICAoaWQtPmRtYV8xd29yZCAmIDB4MDAwNykp
IHsNCi0JCQkJLyogRm9yY2UgaWYgQ2FwYWJsZSByZWd1bGFyIERNQSBtb2Rl
cyAqLw0KLQkJCQlvbiA9IGNvbmZpZ19jaGlwc2V0X2Zvcl9kbWEoZHJpdmUs
IDApOw0KLQkJCQlpZiAoIW9uKQ0KLQkJCQkJZ290byBub19kbWFfc2V0Ow0K
LQkJCX0NCi0JCX0gZWxzZSBpZiAodWRtYV93aGl0ZV9saXN0KGRyaXZlKSkg
ew0KLQkJCWlmIChpZC0+ZWlkZV9kbWFfdGltZSA+IDE1MCkgew0KLQkJCQln
b3RvIG5vX2RtYV9zZXQ7DQotCQkJfQ0KLQkJCS8qIENvbnN1bHQgdGhlIGxp
c3Qgb2Yga25vd24gImdvb2QiIGRyaXZlcyAqLw0KLQkJCW9uID0gY29uZmln
X2NoaXBzZXRfZm9yX2RtYShkcml2ZSwgMCk7DQotCQkJaWYgKCFvbikNCi0J
CQkJZ290byBub19kbWFfc2V0Ow0KLQkJfSBlbHNlIHsNCi0JCQlnb3RvIGZh
c3RfYXRhX3BpbzsNCi0JCX0NCi0JfSBlbHNlIGlmICgoaWQtPmNhcGFiaWxp
dHkgJiA4KSB8fCAoaWQtPmZpZWxkX3ZhbGlkICYgMikpIHsNCi1mYXN0X2F0
YV9waW86DQotCQlvbiA9IDA7DQotCQl2ZXJib3NlID0gMDsNCi1ub19kbWFf
c2V0Og0KLQkJaHB0MzR4X3R1bmVfY2hpcHNldChkcml2ZSwgYXRhX2Jlc3Rf
cGlvX21vZGUoZHJpdmUpKTsNCi0JfQ0KLQ0KLSNpZm5kZWYgQ09ORklHX0hQ
VDM0WF9BVVRPRE1BDQotCWlmIChvbikNCi0JCW9uID0gMDsNCi0jZW5kaWYN
Ci0JdWRtYV9lbmFibGUoZHJpdmUsIG9uLCB2ZXJib3NlKTsNCi0NCisjaWZk
ZWYgQ09ORklHX0hQVDM0WF9BVVRPRE1BDQorCXJldHVybiB1ZG1hX2dlbmVy
aWNfc2V0dXAoZHJpdmUsIG1hcCk7DQorI2Vsc2UNCiAJcmV0dXJuIDA7DQor
I2VuZGlmDQogfQ0KIA0KIHN0YXRpYyBpbnQgaHB0MzR4X3VkbWFfc3RvcChz
dHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUpDQpAQCAtMjUyLDI0ICsxODIsMjEg
QEANCiAJCXVuc2lnbmVkIHNob3J0IHBjaWNtZCA9IDA7DQogDQogCQlwY2lf
cmVhZF9jb25maWdfd29yZChod2lmLT5wY2lfZGV2LCBQQ0lfQ09NTUFORCwg
JnBjaWNtZCk7DQotCQlpZiAoIW5vYXV0b2RtYSkNCi0JCQlod2lmLT5hdXRv
ZG1hID0gKHBjaWNtZCAmIFBDSV9DT01NQU5EX01FTU9SWSkgPyAxIDogMDsN
Ci0JCWVsc2UNCi0JCQlod2lmLT5hdXRvZG1hID0gMDsNCi0NCisjaWZkZWYg
Q09ORklHX0lERURNQV9BVVRPDQorCQlod2lmLT5hdXRvZG1hID0gKHBjaWNt
ZCAmIFBDSV9DT01NQU5EX01FTU9SWSkgPyAxIDogMDsNCisjZW5kaWYNCiAJ
CWh3aWYtPnVkbWFfc3RvcCA9IGhwdDM0eF91ZG1hX3N0b3A7DQogCQlod2lm
LT51ZG1hX2luaXQgPSBocHQzNHhfdWRtYV9pbml0Ow0KKwkJaHdpZi0+bW9k
ZXNfbWFwID0gWEZFUl9FUElPIHwgWEZFUl9TV0RNQSB8IFhGRVJfTVdETUEg
fCBYRkVSX1VETUE7DQorCQlod2lmLT5ub19hdGFwaV9hdXRvZG1hID0gMTsN
CiAJCWh3aWYtPnVkbWFfc2V0dXAgPSBocHQzNHhfdWRtYV9zZXR1cDsNCiAJ
CWh3aWYtPmhpZ2htZW0gPSAxOw0KLQl9IGVsc2Ugew0KKwl9IGVsc2UgDQor
I2VuZGlmDQorCXsNCiAJCWh3aWYtPmRyaXZlc1swXS5hdXRvdHVuZSA9IDE7
DQogCQlod2lmLT5kcml2ZXNbMV0uYXV0b3R1bmUgPSAxOw0KIAl9DQotI2Vs
c2UNCi0JaHdpZi0+ZHJpdmVzWzBdLmF1dG90dW5lID0gMTsNCi0JaHdpZi0+
ZHJpdmVzWzFdLmF1dG90dW5lID0gMTsNCi0JaHdpZi0+YXV0b2RtYSA9IDA7
DQotI2VuZGlmDQogfQ0KIA0KIA0KQEAgLTI4MSw3ICsyMDgsNyBAQA0KIAlp
bml0X2NoYW5uZWw6CWlkZV9pbml0X2hwdDM0eCwNCiAJYm9vdGFibGU6IE5F
VkVSX0JPQVJELA0KIAlleHRyYTogMTYsDQotCWZsYWdzOiBBVEFfRl9OT0FE
TUEgfCBBVEFfRl9ETUENCisJZmxhZ3M6IEFUQV9GX0RNQQ0KIH07DQogDQog
aW50IF9faW5pdCBpbml0X2hwdDM0eCh2b2lkKQ0KZGlmZiAtdXIgLVhkb250
ZGlmZiBsaW51eC0yLjUuMjQvZHJpdmVycy9pZGUvaHB0MzY2LmMgbGludXgv
ZHJpdmVycy9pZGUvaHB0MzY2LmMNCi0tLSBsaW51eC0yLjUuMjQvZHJpdmVy
cy9pZGUvaHB0MzY2LmMJVHVlIEp1biAyNSAyMjo0Njo0MyAyMDAyDQorKysg
bGludXgvZHJpdmVycy9pZGUvaHB0MzY2LmMJVHVlIEp1bCAgMiAyMzo1NDox
NiAyMDAyDQpAQCAtNDkzLDM3ICs0OTMsMjMgQEANCiAJcmV0dXJuIGNsYXNz
X3JldjsNCiB9DQogDQotc3RhdGljIGludCBocHQzeHhfcmF0ZW1hc2soc3Ry
dWN0IGF0YV9kZXZpY2UgKmRyaXZlKQ0KK3N0YXRpYyBpbnQgX19pbml0IGhw
dDN4eF9tb2Rlc19tYXAoc3RydWN0IGF0YV9jaGFubmVsICpjaCkNCiB7DQot
CXUzMiByZXYgPSBocHRfcmV2aXNpb24oZHJpdmUtPmNoYW5uZWwtPnBjaV9k
ZXYpOw0KLQlpbnQgbWFwID0gWEZFUl9VRE1BOw0KKwl1MzIgcmV2ID0gaHB0
X3JldmlzaW9uKGNoLT5wY2lfZGV2KTsNCisJaW50IG1hcCA9IFhGRVJfRVBJ
TyB8IFhGRVJfTVdETUEgfCBYRkVSX1VETUEgfCBYRkVSX1VETUFfNjY7DQog
DQogCWlmIChyZXYgPj0gOCkgewkJCQkJLyogSFBUMzc0ICovDQogCQlpZiAo
SFBUMzc0X0FMTE9XX0FUQTEzM182KQ0KIAkJCW1hcCB8PSBYRkVSX1VETUFf
MTMzOw0KLQkJbWFwIHw9IChYRkVSX1VETUFfMTAwIHwgWEZFUl9VRE1BXzY2
KTsNCisJCW1hcCB8PSBYRkVSX1VETUFfMTAwOw0KIAl9IGVsc2UgaWYgKHJl
diA+PSA1KSB7CQkJCS8qIEhQVDM3MiAqLw0KIAkJaWYgKEhQVDM3Ml9BTExP
V19BVEExMzNfNikNCiAJCQltYXAgfD0gWEZFUl9VRE1BXzEzMzsNCi0JCW1h
cCB8PSAoWEZFUl9VRE1BXzEwMCB8IFhGRVJfVURNQV82Nik7DQotCX0gZWxz
ZSBpZiAocmV2ID49IDQpIHsJCQkJLyogSFBUMzcwQSAqLw0KKwkJbWFwIHw9
IFhGRVJfVURNQV8xMDA7DQorCX0gZWxzZSBpZiAocmV2ID49IDMpIHsJCQkJ
LyogSFBUMzcwQSAvIEhQVDM3MCAqLw0KIAkJaWYgKEhQVDM3MF9BTExPV19B
VEExMDBfNSkNCiAJCQltYXAgfD0gWEZFUl9VRE1BXzEwMDsNCi0JCW1hcCB8
PSBYRkVSX1VETUFfNjY7DQotCX0gZWxzZSBpZiAocmV2ID49IDMpIHsJCQkJ
LyogSFBUMzcwICovDQotCQlpZiAoSFBUMzcwX0FMTE9XX0FUQTEwMF81KQ0K
LQkJCW1hcCB8PSBYRkVSX1VETUFfMTAwOw0KLQkJbWFwIHw9IFhGRVJfVURN
QV82NjsNCi0JCWlmIChjaGVja19pbl9kcml2ZV9saXN0cyhkcml2ZSwgYmFk
X2F0YTMzKSkNCi0JCQlyZXR1cm4gMDsNCi0JfSBlbHNlIHsJCQkJCS8qIEhQ
VDM2NiBhbmQgSFBUMzY4ICovDQotCQltYXAgfD0gWEZFUl9VRE1BXzY2Ow0K
LQkJaWYgKGNoZWNrX2luX2RyaXZlX2xpc3RzKGRyaXZlLCBiYWRfYXRhMzMp
KQ0KLQkJCXJldHVybiAwOw0KLQl9DQotDQotCWlmICghZWlnaHR5X25pbnR5
X3RocmVlKGRyaXZlKSkNCi0JCXJldHVybiBYRkVSX1VETUE7DQorCX0JCQkJ
CQkvKiBIUFQzNjYgLyBIUFQzNjggKi8NCiANCiAJcmV0dXJuIG1hcDsNCiB9
DQpAQCAtNjYyLDYyICs2NDgsNDIgQEANCiAJcmV0dXJuIGlkZV9jb25maWdf
ZHJpdmVfc3BlZWQoZHJpdmUsIHNwZWVkKTsNCiB9DQogDQorLyogRklYTUU6
IHBpbyA9PSAyNTUgLT4gYXRhX2Jlc3RfcGlvX21vZGUoZHJpdmUpICAtLWJr
eiAqLw0KIHN0YXRpYyB2b2lkIGhwdDN4eF90dW5lX2RyaXZlKHN0cnVjdCBh
dGFfZGV2aWNlICpkcml2ZSwgdTggcGlvKQ0KIHsNCiAJKHZvaWQpIGhwdDN4
eF90dW5lX2NoaXBzZXQoZHJpdmUsIFhGRVJfUElPXzAgKyBtaW5fdCh1OCwg
cGlvLCA0KSk7DQogfQ0KIA0KICNpZmRlZiBDT05GSUdfQkxLX0RFVl9JREVE
TUENCi1zdGF0aWMgaW50IGNvbmZpZ19jaGlwc2V0X2Zvcl9kbWEoc3RydWN0
IGF0YV9kZXZpY2UgKmRyaXZlKQ0KK3N0YXRpYyBpbnQgaHB0M3h4X3VkbWFf
c2V0dXAoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlLCBpbnQgbWFwKQ0KIHsN
Ci0JaW50IG1hcDsNCiAJdTMyIHJldjsNCi0JdTggbW9kZTsNCiANCiAJaWYg
KGRyaXZlLT50eXBlICE9IEFUQV9ESVNLKQ0KIAkJcmV0dXJuIDA7DQogDQog
CXJldiA9IGhwdF9yZXZpc2lvbihkcml2ZS0+Y2hhbm5lbC0+cGNpX2Rldik7
DQogDQotCS8qIEZJWE1FOiBjaGVjayBTV0RNQSBtb2RlcyAtLWJreiAqLw0K
LQltYXAgPSBocHQzeHhfcmF0ZW1hc2soZHJpdmUpIHwgWEZFUl9NV0RNQTsN
Ci0JbW9kZSA9IGF0YV90aW1pbmdfbW9kZShkcml2ZSwgbWFwKTsNCi0NCi0J
LyogRklYTUU6IGJhZGxpc3RzIG5lZWQgZnV0aGVyIGludmVzdGlnYXRpb24g
LS1ia3oNCi0JCSAgYmFkX2F0YTEwMF81IGlzIGZvciBIUFQzNzAvMzcwQSwN
Ci0JCSAgYmFkX2F0YTY2XzQsIGJhZF9hdGE2Nl8zIGFuZCBiYWRfYXRhMzMg
YXJlIGZvciBIUFQzNjYvMzY4DQotCSAqLw0KLQlpZiAobW9kZSA9PSBYRkVS
X1VETUFfNSAmJiByZXYgPCA1KSB7DQotCQlpZiAoY2hlY2tfaW5fZHJpdmVf
bGlzdHMoZHJpdmUsIGJhZF9hdGExMDBfNSkpIHsNCi0JCQkvKiBGSVhNRTog
bWFrZSBYRkVSX1VETUFfNjYvMTAwLzEzMw0KLQkJCQkgIGluZGVwZW5kZW50
IG9mIFhGRVJfVURNQSAtLWJreiAqLw0KLQkJCW1hcCAmPSB+WEZFUl9VRE1B
XzEwMDsNCi0JCQltYXAgfD0gWEZFUl9VRE1BOw0KLQkJCW1vZGUgPSBhdGFf
dGltaW5nX21vZGUoZHJpdmUsIG1hcCk7DQotCQl9DQotCX0NCi0JaWYgKG1v
ZGUgPT0gWEZFUl9VRE1BXzQgJiYgcmV2IDwgMykgew0KLQkJaWYgKGNoZWNr
X2luX2RyaXZlX2xpc3RzKGRyaXZlLCBiYWRfYXRhNjZfNCkpIHsNCi0JCQlp
ZiAoZHJpdmUtPmlkLT5kbWFfdWx0cmEgJiAweDAwMDgpIHsNCi0JCQkJbW9k
ZSA9IFhGRVJfVURNQV8zOw0KLQkJCX0gZWxzZSB7DQotCQkJCW1hcCAmPSB+
WEZFUl9VRE1BXzY2Ow0KLQkJCQltYXAgfD0gWEZFUl9VRE1BOw0KLQkJCQlt
b2RlID0gYXRhX3RpbWluZ19tb2RlKGRyaXZlLCBtYXApOw0KLQkJCX0NCi0J
CX0NCi0JfQ0KLQlpZiAobW9kZSA9PSBYRkVSX1VETUFfMyAmJiByZXYgPCAz
KSB7DQotCQlpZiAoY2hlY2tfaW5fZHJpdmVfbGlzdHMoZHJpdmUsIGJhZF9h
dGE2Nl8zKSkgew0KLQkJCW1hcCAmPSB+WEZFUl9VRE1BXzY2Ow0KLQkJCW1h
cCB8PSBYRkVSX1VETUE7DQotCQkJbW9kZSA9IGF0YV90aW1pbmdfbW9kZShk
cml2ZSwgbWFwKTsNCi0JCX0NCisJLyogRklYTUU6IGJhZGxpc3RzIG5lZWQg
ZnV0aGVyIGludmVzdGlnYXRpb24gIC0tYmt6ICovDQorDQorCS8qIGJhZF9h
dGExMDBfNSBpcyBmb3IgSFBUMzcwLzM3MEEsDQorCSAgIGJhZF9hdGE2Nl80
LCBiYWRfYXRhNjZfMyBhbmQgYmFkX2F0YTMzIGFyZSBmb3IgSFBUMzY2LzM2
OCAqLw0KKw0KKwlpZiAocmV2IDwgNSAmJiBjaGVja19pbl9kcml2ZV9saXN0
cyhkcml2ZSwgYmFkX2F0YTEwMF81KSkNCisJCW1hcCAmPSB+WEZFUl9VRE1B
XzEwMDsNCisNCisJaWYgKHJldiA8IDMpIHsNCisJCWlmIChjaGVja19pbl9k
cml2ZV9saXN0cyhkcml2ZSwgYmFkX2F0YTY2XzQpKQ0KKwkJCW1hcCAmPSB+
WEZFUl9VRE1BXzY2XzQ7DQorDQorCQlpZiAoY2hlY2tfaW5fZHJpdmVfbGlz
dHMoZHJpdmUsIGJhZF9hdGE2Nl8zKSkNCisJCQltYXAgJj0gflhGRVJfVURN
QV82Nl8zOw0KKw0KKwkJaWYgKGNoZWNrX2luX2RyaXZlX2xpc3RzKGRyaXZl
LCBiYWRfYXRhMzMpKQ0KKwkJCW1hcCAmPSB+WEZFUl9VRE1BX0FMTDsNCiAJ
fQ0KLQlpZiAoY2hlY2tfaW5fZHJpdmVfbGlzdHMoZHJpdmUsIGJhZF9hdGEz
MykgJiYgcmV2IDwgMykNCi0JCW1vZGUgPSBhdGFfdGltaW5nX21vZGUoZHJp
dmUsIFhGRVJfTVdETUEpOw0KIA0KLQlyZXR1cm4gIWhwdDN4eF90dW5lX2No
aXBzZXQoZHJpdmUsIG1vZGUpOw0KKwlyZXR1cm4gdWRtYV9nZW5lcmljX3Nl
dHVwKGRyaXZlLCBtYXApOw0KIH0NCiANCiBzdGF0aWMgaW50IGhwdDN4eF9x
dWlya3Byb2Moc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlKQ0KQEAgLTc1NCw1
OSArNzIwLDYgQEANCiAJfQ0KIH0NCiANCi1zdGF0aWMgaW50IGhwdDN4eF91
ZG1hX3NldHVwKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSkNCi17DQotCXN0
cnVjdCBoZF9kcml2ZWlkICppZCA9IGRyaXZlLT5pZDsNCi0JaW50IG9uID0g
MTsNCi0JaW50IHZlcmJvc2UgPSAxOw0KLQ0KLQlpZiAoaWQgJiYgKGlkLT5j
YXBhYmlsaXR5ICYgMSkgJiYgZHJpdmUtPmNoYW5uZWwtPmF1dG9kbWEpIHsN
Ci0JCS8qIENvbnN1bHQgdGhlIGxpc3Qgb2Yga25vd24gImJhZCIgZHJpdmVz
ICovDQotCQlpZiAodWRtYV9ibGFja19saXN0KGRyaXZlKSkgew0KLQkJCW9u
ID0gMDsNCi0JCQlnb3RvIGZhc3RfYXRhX3BpbzsNCi0JCX0NCi0JCW9uID0g
MDsNCi0JCXZlcmJvc2UgPSAwOw0KLQkJaWYgKGlkLT5maWVsZF92YWxpZCAm
IDQpIHsNCi0JCQlpZiAoaWQtPmRtYV91bHRyYSAmIDB4MDA3Rikgew0KLQkJ
CQkvKiBGb3JjZSBpZiBDYXBhYmxlIFVsdHJhRE1BICovDQotCQkJCW9uID0g
Y29uZmlnX2NoaXBzZXRfZm9yX2RtYShkcml2ZSk7DQotCQkJCWlmICgoaWQt
PmZpZWxkX3ZhbGlkICYgMikgJiYNCi0JCQkJICAgICghb24pKQ0KLQkJCQkJ
Z290byB0cnlfZG1hX21vZGVzOw0KLQkJCX0NCi0JCX0gZWxzZSBpZiAoaWQt
PmZpZWxkX3ZhbGlkICYgMikgew0KLXRyeV9kbWFfbW9kZXM6DQotCQkJaWYg
KGlkLT5kbWFfbXdvcmQgJiAweDAwMDcpIHsNCi0JCQkJLyogRm9yY2UgaWYg
Q2FwYWJsZSByZWd1bGFyIERNQSBtb2RlcyAqLw0KLQkJCQlvbiA9IGNvbmZp
Z19jaGlwc2V0X2Zvcl9kbWEoZHJpdmUpOw0KLQkJCQlpZiAoIW9uKQ0KLQkJ
CQkJZ290byBub19kbWFfc2V0Ow0KLQkJCX0NCi0JCX0gZWxzZSBpZiAodWRt
YV93aGl0ZV9saXN0KGRyaXZlKSkgew0KLQkJCWlmIChpZC0+ZWlkZV9kbWFf
dGltZSA+IDE1MCkgew0KLQkJCQlnb3RvIG5vX2RtYV9zZXQ7DQotCQkJfQ0K
LQkJCS8qIENvbnN1bHQgdGhlIGxpc3Qgb2Yga25vd24gImdvb2QiIGRyaXZl
cyAqLw0KLQkJCW9uID0gY29uZmlnX2NoaXBzZXRfZm9yX2RtYShkcml2ZSk7
DQotCQkJaWYgKCFvbikNCi0JCQkJZ290byBub19kbWFfc2V0Ow0KLQkJfSBl
bHNlIHsNCi0JCQlnb3RvIGZhc3RfYXRhX3BpbzsNCi0JCX0NCi0JfSBlbHNl
IGlmICgoaWQtPmNhcGFiaWxpdHkgJiA4KSB8fCAoaWQtPmZpZWxkX3ZhbGlk
ICYgMikpIHsNCi1mYXN0X2F0YV9waW86DQotCQlvbiA9IDA7DQotCQl2ZXJi
b3NlID0gMDsNCi1ub19kbWFfc2V0Og0KLQkJaHB0M3h4X3R1bmVfY2hpcHNl
dChkcml2ZSwgYXRhX2Jlc3RfcGlvX21vZGUoZHJpdmUpKTsNCi0JfQ0KLQl1
ZG1hX2VuYWJsZShkcml2ZSwgb24sIHZlcmJvc2UpOw0KLQ0KLQlyZXR1cm4g
MDsNCi19DQotDQogc3RhdGljIHZvaWQgaHB0MzY2X3VkbWFfaXJxX2xvc3Qo
c3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlKQ0KIHsNCiAJc3RydWN0IHBjaV9k
ZXYgKmRldiA9IGRyaXZlLT5jaGFubmVsLT5wY2lfZGV2Ow0KQEAgLTEyMzIs
NiArMTE0NSw4IEBADQogCXN0cnVjdCBwY2lfZGV2ICpkZXYgPSBjaC0+cGNp
X2RldjsNCiAJdTMyIHJldiA9IGhwdF9yZXZpc2lvbihkZXYpOw0KIA0KKwlj
aC0+dWRtYV9mb3VyID0gaHB0MzY2X2F0YTY2X2NoZWNrKGNoKTsNCisNCiAJ
Y2gtPnR1bmVwcm9jID0gaHB0M3h4X3R1bmVfZHJpdmU7DQogCWNoLT5zcGVl
ZHByb2MgPSBocHQzeHhfdHVuZV9jaGlwc2V0Ow0KIAljaC0+cXVpcmtwcm9j
ID0gaHB0M3h4X3F1aXJrcHJvYzsNCkBAIC0xMjcyLDE3ICsxMTg3LDEyIEBA
DQogLy8JCQljaC0+cmVzZXRwcm9jID0gaHB0M3h4X3Jlc2V0Ow0KIC8vCQkJ
Y2gtPmJ1c3Byb2MgPSBocHQzeHhfdHJpc3RhdGU7DQogCQl9DQorCQljaC0+
bW9kZXNfbWFwID0gaHB0M3h4X21vZGVzX21hcChjaCk7DQogCQljaC0+dWRt
YV9zZXR1cCA9IGhwdDN4eF91ZG1hX3NldHVwOw0KLQ0KLQkJaWYgKCFub2F1
dG9kbWEpDQotCQkJY2gtPmF1dG9kbWEgPSAxOw0KLQkJZWxzZQ0KLQkJCWNo
LT5hdXRvZG1hID0gMDsNCiAJCWNoLT5oaWdobWVtID0gMTsNCiAJfSBlbHNl
DQogI2VuZGlmDQogCXsNCi0JCWNoLT5hdXRvZG1hID0gMDsNCiAJCWNoLT5k
cml2ZXNbMF0uYXV0b3R1bmUgPSAxOw0KIAkJY2gtPmRyaXZlc1sxXS5hdXRv
dHVuZSA9IDE7DQogCX0NCkBAIC0xMzE1LDcgKzEyMjUsNiBAQA0KIAkJdmVu
ZG9yOiBQQ0lfVkVORE9SX0lEX1RUSSwNCiAJCWRldmljZTogUENJX0RFVklD
RV9JRF9UVElfSFBUMzY2LA0KIAkJaW5pdF9jaGlwc2V0OiBocHQzNjZfaW5p
dF9jaGlwc2V0LA0KLQkJYXRhNjZfY2hlY2s6IGhwdDM2Nl9hdGE2Nl9jaGVj
aywNCiAJCWluaXRfY2hhbm5lbDogaHB0MzY2X2luaXRfY2hhbm5lbCwNCiAJ
CWluaXRfZG1hOiBocHQzNjZfaW5pdF9kbWEsDQogCQlib290YWJsZTogT0ZG
X0JPQVJELA0KQEAgLTEzMjYsNyArMTIzNSw2IEBADQogCQl2ZW5kb3I6IFBD
SV9WRU5ET1JfSURfVFRJLA0KIAkJZGV2aWNlOiBQQ0lfREVWSUNFX0lEX1RU
SV9IUFQzNzIsDQogCQlpbml0X2NoaXBzZXQ6IGhwdDM2Nl9pbml0X2NoaXBz
ZXQsDQotCQlhdGE2Nl9jaGVjazogaHB0MzY2X2F0YTY2X2NoZWNrLA0KIAkJ
aW5pdF9jaGFubmVsOiBocHQzNjZfaW5pdF9jaGFubmVsLA0KIAkJaW5pdF9k
bWE6IGhwdDM2Nl9pbml0X2RtYSwNCiAJCWJvb3RhYmxlOiBPRkZfQk9BUkQs
DQpAQCAtMTMzNyw3ICsxMjQ1LDYgQEANCiAJCXZlbmRvcjogUENJX1ZFTkRP
Ul9JRF9UVEksDQogCQlkZXZpY2U6IFBDSV9ERVZJQ0VfSURfVFRJX0hQVDM3
NCwNCiAJCWluaXRfY2hpcHNldDogaHB0MzY2X2luaXRfY2hpcHNldCwNCi0J
CWF0YTY2X2NoZWNrOiBocHQzNjZfYXRhNjZfY2hlY2ssDQogCQlpbml0X2No
YW5uZWw6IGhwdDM2Nl9pbml0X2NoYW5uZWwsDQogCQlpbml0X2RtYTogaHB0
MzY2X2luaXRfZG1hLA0KIAkJYm9vdGFibGU6IE9GRl9CT0FSRCwNCmRpZmYg
LXVyIC1YZG9udGRpZmYgbGludXgtMi41LjI0L2RyaXZlcnMvaWRlL2ljc2lk
ZS5jIGxpbnV4L2RyaXZlcnMvaWRlL2ljc2lkZS5jDQotLS0gbGludXgtMi41
LjI0L2RyaXZlcnMvaWRlL2ljc2lkZS5jCVR1ZSBKdW4gMjUgMjI6NDY6MDIg
MjAwMg0KKysrIGxpbnV4L2RyaXZlcnMvaWRlL2ljc2lkZS5jCVR1ZSBKdWwg
IDIgMjM6NTI6NTggMjAwMg0KQEAgLTQwNSw3ICs0MDUsNyBAQA0KICNlbmRp
Zg0KIH0NCiANCi1zdGF0aWMgaW50IGljc2lkZV9kbWFfY2hlY2soc3RydWN0
IGF0YV9kZXZpY2UgKmRyaXZlKQ0KK3N0YXRpYyBpbnQgaWNzaWRlX2RtYV9j
aGVjayhzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUsIGludCBtYXApDQogew0K
IAlzdHJ1Y3QgaGRfZHJpdmVpZCAqaWQgPSBkcml2ZS0+aWQ7DQogCXN0cnVj
dCBhdGFfY2hhbm5lbCAqY2ggPSBkcml2ZS0+Y2hhbm5lbDsNCmRpZmYgLXVy
IC1YZG9udGRpZmYgbGludXgtMi41LjI0L2RyaXZlcnMvaWRlL2lkZS1wY2ku
YyBsaW51eC9kcml2ZXJzL2lkZS9pZGUtcGNpLmMNCi0tLSBsaW51eC0yLjUu
MjQvZHJpdmVycy9pZGUvaWRlLXBjaS5jCVR1ZSBKdW4gMjUgMjI6NDU6NTQg
MjAwMg0KKysrIGxpbnV4L2RyaXZlcnMvaWRlL2lkZS1wY2kuYwlUdWUgSnVs
ICAyIDIzOjU0OjE2IDIwMDINCkBAIC0yNTcsMjQgKzI1NywxMyBAQA0KIAlp
ZiAoZC0+ZmxhZ3MgJiBBVEFfRl9OT0RNQSkNCiAJCWdvdG8gbm9fZG1hOw0K
IA0KLQkvKiBDaGVjayB3aGF0ZXZlciB0aGlzIGludGVyZmFjZSBpcyBVRE1B
NCBtb2RlIGNhcGFibGUuICovDQotCWlmIChjaC0+dWRtYV9mb3VyKSB7DQor
CWlmIChjaC0+dWRtYV9mb3VyKQ0KIAkJcHJpbnRrKCIlczogd2FybmluZzog
QVRBLTY2LzEwMCBmb3JjZWQgYml0IHNldCFcbiIsIGRldi0+bmFtZSk7DQot
CX0gZWxzZSB7DQotCQlpZiAoZC0+YXRhNjZfY2hlY2spDQotCQkJY2gtPnVk
bWFfZm91ciA9IGQtPmF0YTY2X2NoZWNrKGNoKTsNCi0JfQ0KIA0KICNpZmRl
ZiBDT05GSUdfQkxLX0RFVl9JREVETUENCiAJLyoNCiAJICogU2V0dXAgRE1B
IHRyYW5zZmVycyBvbiB0aGUgY2hhbm5lbC4NCiAJICovDQotCWlmIChkLT5m
bGFncyAmIEFUQV9GX05PQURNQSkNCi0JCWF1dG9kbWEgPSAwOw0KLQ0KLQlp
ZiAoYXV0b2RtYSkNCi0JCWNoLT5hdXRvZG1hID0gMTsNCi0NCiAJaWYgKCEo
KGQtPmZsYWdzICYgQVRBX0ZfRE1BKSB8fCAoKGRldi0+Y2xhc3MgPj4gOCkg
PT0gUENJX0NMQVNTX1NUT1JBR0VfSURFICYmIChkZXYtPmNsYXNzICYgMHg4
MCkpKSkNCiAJCWdvdG8gbm9fZG1hOw0KIAkvKg0KQEAgLTMyOCw2ICszMTcs
OSBAQA0KIAkJZC0+aW5pdF9kbWEoY2gsIGRtYV9iYXNlKTsNCiAJZWxzZQ0K
IAkJYXRhX2luaXRfZG1hKGNoLCBkbWFfYmFzZSk7DQorDQorCWlmIChjaC0+
ZG1hX2Jhc2UgJiYgYXV0b2RtYSkNCisJCWNoLT5hdXRvZG1hID0gMTsNCiAj
ZW5kaWYNCiANCiBub19kbWE6DQpAQCAtMzM1LDYgKzMyNywxMSBAQA0KIAlp
ZiAoZC0+aW5pdF9jaGFubmVsKQ0KIAkJZC0+aW5pdF9jaGFubmVsKGNoKTsN
CiANCisjaWZkZWYgQ09ORklHX0JMS19ERVZfSURFRE1BDQorCWlmICgoZC0+
ZmxhZ3MgJiBBVEFfRl9OT0FETUEpIHx8IG5vYXV0b2RtYSkNCisJCWNoLT5h
dXRvZG1hID0gMDsNCisjZW5kaWYNCisNCiAJcmV0dXJuIDA7DQogfQ0KIA0K
ZGlmZiAtdXIgLVhkb250ZGlmZiBsaW51eC0yLjUuMjQvZHJpdmVycy9pZGUv
aWRlLXBtYWMuYyBsaW51eC9kcml2ZXJzL2lkZS9pZGUtcG1hYy5jDQotLS0g
bGludXgtMi41LjI0L2RyaXZlcnMvaWRlL2lkZS1wbWFjLmMJV2VkIEp1biAy
NiAwMDowMjo1MyAyMDAyDQorKysgbGludXgvZHJpdmVycy9pZGUvaWRlLXBt
YWMuYwlUdWUgSnVsICAyIDIzOjUyOjU4IDIwMDINCkBAIC0yNjAsNyArMjYw
LDcgQEANCiBzdGF0aWMgaW50IHBtYWNfdWRtYV9zdG9wKHN0cnVjdCBhdGFf
ZGV2aWNlICpkcml2ZSk7DQogc3RhdGljIGludCBwbWFjX3VkbWFfaW5pdChz
dHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUsIHN0cnVjdCByZXF1ZXN0ICpycSk7
DQogc3RhdGljIGludCBwbWFjX3VkbWFfaXJxX3N0YXR1cyhzdHJ1Y3QgYXRh
X2RldmljZSAqZHJpdmUpOw0KLXN0YXRpYyBpbnQgcG1hY191ZG1hX3NldHVw
KHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSk7DQorc3RhdGljIGludCBwbWFj
X3VkbWFfc2V0dXAoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlLCBpbnQgbWFw
KTsNCiBzdGF0aWMgaW50IHBtYWNfaWRlX2J1aWxkX2RtYXRhYmxlKHN0cnVj
dCBhdGFfZGV2aWNlICpkcml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxLCBpbnQg
aXgsIGludCB3cik7DQogc3RhdGljIGludCBwbWFjX2lkZV90dW5lX2NoaXBz
ZXQoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlLCBieXRlIHNwZWVkKTsNCiBz
dGF0aWMgdm9pZCBwbWFjX2lkZV90dW5lcHJvYyhzdHJ1Y3QgYXRhX2Rldmlj
ZSAqZHJpdmUsIGJ5dGUgcGlvKTsNCkBAIC0xNDk4LDcgKzE0OTgsNyBAQA0K
IAlyZXR1cm4gMDsNCiB9DQogDQotc3RhdGljIGludCBwbWFjX3VkbWFfc2V0
dXAoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlKQ0KK3N0YXRpYyBpbnQgcG1h
Y191ZG1hX3NldHVwKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSwgaW50IG1h
cCkNCiB7DQogCS8qIENoYW5nZSB0aGlzIHRvIGJldHRlciBtYXRjaCBpZGUt
ZG1hLmMgKi8NCiAJcG1hY19pZGVfY2hlY2tfZG1hKGRyaXZlKTsNCmRpZmYg
LXVyIC1YZG9udGRpZmYgbGludXgtMi41LjI0L2RyaXZlcnMvaWRlL2l0ODE3
Mi5jIGxpbnV4L2RyaXZlcnMvaWRlL2l0ODE3Mi5jDQotLS0gbGludXgtMi41
LjI0L2RyaXZlcnMvaWRlL2l0ODE3Mi5jCVR1ZSBKdW4gMjUgMjI6NDU6NTgg
MjAwMg0KKysrIGxpbnV4L2RyaXZlcnMvaWRlL2l0ODE3Mi5jCVR1ZSBKdWwg
IDIgMjM6NTQ6MDcgMjAwMg0KQEAgLTE3OSwxNCArMTc5LDYgQEANCiANCiAJ
cmV0dXJuIGlkZV9jb25maWdfZHJpdmVfc3BlZWQoZHJpdmUsIHNwZWVkKTsN
CiB9DQotDQotc3RhdGljIGludCBpdDgxNzJfdWRtYV9zZXR1cChzdHJ1Y3Qg
YXRhX2RldmljZSAqZHJpdmUpDQotew0KLQl1OCBzcGVlZCA9IGF0YV90aW1p
bmdfbW9kZShkcml2ZSwgWEZFUl9QSU8gfCBYRkVSX0VQSU8gfA0KLQkJCQkg
ICBYRkVSX1NXRE1BIHwgWEZFUl9NV0RNQSB8IFhGRVJfVURNQSk7DQotDQot
CXJldHVybiAhaXQ4MTcyX3R1bmVfY2hpcHNldChkcml2ZSwgc3BlZWQpOw0K
LX0NCiAjZW5kaWYgLyogZGVmaW5lZChDT05GSUdfQkxLX0RFVl9JREVETUEp
ICYmIChDT05GSUdfSVQ4MTcyX1RVTklORykgKi8NCiANCiANCkBAIC0yMTYs
MTUgKzIwOCwxMSBAQA0KICAgICBpZiAoIWh3aWYtPmRtYV9iYXNlKQ0KIAly
ZXR1cm47DQogDQotI2lmbmRlZiBDT05GSUdfQkxLX0RFVl9JREVETUENCi0g
ICAgaHdpZi0+YXV0b2RtYSA9IDA7DQotI2Vsc2UgLyogQ09ORklHX0JMS19E
RVZfSURFRE1BICovDQogIyBpZmRlZiBDT05GSUdfSVQ4MTcyX1RVTklORw0K
LSAgICBod2lmLT5hdXRvZG1hID0gMTsNCi0gICAgaHdpZi0+ZG1hcHJvYyA9
ICZpdDgxNzJfZG1hcHJvYzsNCisJaHdpZi0+bW9kZXNfbWFwID0gWEZFUl9F
UElPIHwgWEZFUl9TV0RNQSB8IFhGRVJfTVdETUEgfCBYRkVSX1VETUE7DQor
CWh3aWYtPnVkbWFfc2V0dXAgPSB1ZG1hX2dlbmVyaWNfc2V0dXA7DQogICAg
IGh3aWYtPnNwZWVkcHJvYyA9ICZpdDgxNzJfdHVuZV9jaGlwc2V0Ow0KICMg
ZW5kaWYNCi0jZW5kaWYNCiANCiAgICAgY21kQmFzZSA9IGRldi0+cmVzb3Vy
Y2VbMF0uc3RhcnQ7DQogICAgIGN0cmxCYXNlID0gZGV2LT5yZXNvdXJjZVsx
XS5zdGFydDsNCmRpZmYgLXVyIC1YZG9udGRpZmYgbGludXgtMi41LjI0L2Ry
aXZlcnMvaWRlL21haW4uYyBsaW51eC9kcml2ZXJzL2lkZS9tYWluLmMNCi0t
LSBsaW51eC0yLjUuMjQvZHJpdmVycy9pZGUvbWFpbi5jCVR1ZSBKdW4gMjUg
MjI6NDY6MDIgMjAwMg0KKysrIGxpbnV4L2RyaXZlcnMvaWRlL21haW4uYwlU
dWUgSnVsICAyIDIzOjUyOjU4IDIwMDINCkBAIC0xMDc0LDcgKzEwNzQsOCBA
QA0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpZGVfbG9jaywgZmxhZ3Mp
Ow0KIAkvKiBEZWZhdWx0IGF1dG90dW5lIG9yIHJlcXVlc3RlZCBhdXRvdHVu
ZSAqLw0KIAlpZiAoZHJpdmUtPmF1dG90dW5lICE9IDIpIHsNCi0JCWlmIChk
cml2ZS0+Y2hhbm5lbC0+dWRtYV9zZXR1cCkgew0KKwkJc3RydWN0IGF0YV9j
aGFubmVsICpjaCA9IGRyaXZlLT5jaGFubmVsOw0KKwkJaWYgKGNoLT51ZG1h
X3NldHVwKSB7DQogDQogCQkJLyoNCiAJCQkgKiBGb3JjZSBETUFpbmcgZm9y
IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNoZWNrLiAgU29tZQ0KQEAgLTEwODUs
NyArMTA4Niw3IEBADQogCQkJICovDQogDQogCQkJdWRtYV9lbmFibGUoZHJp
dmUsIDAsIDApOw0KLQkJCWRyaXZlLT5jaGFubmVsLT51ZG1hX3NldHVwKGRy
aXZlKTsNCisJCQljaC0+dWRtYV9zZXR1cChkcml2ZSwgY2gtPm1vZGVzX21h
cCk7DQogI2lmZGVmIENPTkZJR19CTEtfREVWX0lERV9UQ1FfREVGQVVMVA0K
IAkJCXVkbWFfdGNxX2VuYWJsZShkcml2ZSwgMSk7DQogI2VuZGlmDQpkaWZm
IC11ciAtWGRvbnRkaWZmIGxpbnV4LTIuNS4yNC9kcml2ZXJzL2lkZS9uczg3
NDE1LmMgbGludXgvZHJpdmVycy9pZGUvbnM4NzQxNS5jDQotLS0gbGludXgt
Mi41LjI0L2RyaXZlcnMvaWRlL25zODc0MTUuYwlUdWUgSnVuIDI1IDIyOjQ2
OjAyIDIwMDINCisrKyBsaW51eC9kcml2ZXJzL2lkZS9uczg3NDE1LmMJVHVl
IEp1bCAgMiAyMzo1Mjo1OCAyMDAyDQpAQCAtMTEyLDE0ICsxMTIsMTQgQEAN
CiAJcmV0dXJuIGlkZV9zdG9wcGVkOw0KIH0NCiANCi1zdGF0aWMgaW50IG5z
ODc0MTVfdWRtYV9zZXR1cChzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUpDQor
c3RhdGljIGludCBuczg3NDE1X3VkbWFfc2V0dXAoc3RydWN0IGF0YV9kZXZp
Y2UgKmRyaXZlLCBpbnQgbWFwKQ0KIHsNCiAJaWYgKGRyaXZlLT50eXBlICE9
IEFUQV9ESVNLKSB7DQogCQl1ZG1hX2VuYWJsZShkcml2ZSwgMCwgMCk7DQog
DQogCQlyZXR1cm4gMDsNCiAJfQ0KLQlyZXR1cm4gdWRtYV9wY2lfc2V0dXAo
ZHJpdmUpOw0KKwlyZXR1cm4gdWRtYV9wY2lfc2V0dXAoZHJpdmUsIG1hcCk7
DQogfQ0KICNlbmRpZg0KIA0KZGlmZiAtdXIgLVhkb250ZGlmZiBsaW51eC0y
LjUuMjQvZHJpdmVycy9pZGUvcGNpZG1hLmMgbGludXgvZHJpdmVycy9pZGUv
cGNpZG1hLmMNCi0tLSBsaW51eC0yLjUuMjQvZHJpdmVycy9pZGUvcGNpZG1h
LmMJVHVlIEp1bCAgMiAxNzoyODowMiAyMDAyDQorKysgbGludXgvZHJpdmVy
cy9pZGUvcGNpZG1hLmMJVHVlIEp1bCAgMiAyMzo1Mjo1OCAyMDAyDQpAQCAt
MjcsNiArMjcsOCBAQA0KICNpbmNsdWRlIDxsaW51eC9pZGUuaD4NCiAjaW5j
bHVkZSA8bGludXgvZGVsYXkuaD4NCiANCisjaW5jbHVkZSAiYXRhLXRpbWlu
Zy5oIg0KKw0KICNpbmNsdWRlIDxhc20vaW8uaD4NCiAjaW5jbHVkZSA8YXNt
L2lycS5oPg0KIA0KQEAgLTE2NCwxMCArMTY2LDczIEBADQogCXJldHVybiAw
Ow0KIH0NCiANCisvKiBnZW5lcmljIHVkbWFfc2V0dXAoKSBmdW5jdGlvbiBm
b3IgZHJpdmVycyBoYXZpbmcgLT5zcGVlZHByb2MvdHVuZXByb2MgKi8NCitp
bnQgdWRtYV9nZW5lcmljX3NldHVwKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2
ZSwgaW50IG1hcCkNCit7DQorCXN0cnVjdCBoZF9kcml2ZWlkICppZCA9IGRy
aXZlLT5pZDsNCisJc3RydWN0IGF0YV9jaGFubmVsICpjaCA9IGRyaXZlLT5j
aGFubmVsOw0KKwlpbnQgb24gPSAwOw0KKwl1OCBtb2RlOw0KKw0KKwlpZiAo
IWlkIHx8IChkcml2ZS0+dHlwZSAhPSBBVEFfRElTSyAmJiBjaC0+bm9fYXRh
cGlfYXV0b2RtYSkpDQorCQlyZXR1cm4gMDsNCisNCisJaWYgKChtYXAgJiBY
RkVSX1VETUFfODBXKSAmJiAhZWlnaHR5X25pbnR5X3RocmVlKGRyaXZlKSkN
CisJCW1hcCAmPSB+WEZFUl9VRE1BXzgwVzsNCisNCisJaWYgKChpZC0+Y2Fw
YWJpbGl0eSAmIDEpICYmIGNoLT5hdXRvZG1hICYmIGNoLT5zcGVlZHByb2Mp
IHsNCisNCisJCS8qIENvbnN1bHQgdGhlIGxpc3Qgb2Yga25vd24gImJhZCIg
ZGV2aWNlcy4gKi8NCisJCWlmICh1ZG1hX2JsYWNrX2xpc3QoZHJpdmUpKQ0K
KwkJCWdvdG8gc2V0X2RtYTsNCisNCisJCW1vZGUgPSBhdGFfdGltaW5nX21v
ZGUoZHJpdmUsIG1hcCk7DQorDQorCQkvKiBEZXZpY2UgaXMgVWx0cmFETUEg
Y2FwYWJsZS4gKi8NCisJCWlmIChtb2RlICYgWEZFUl9VRE1BKSB7DQorCQkJ
aWYoKG9uID0gIWNoLT5zcGVlZHByb2MoZHJpdmUsIG1vZGUpKSkNCisJCQkJ
Z290byBzZXRfZG1hOw0KKw0KKwkJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVz
OiBVRE1BIGF1dG8tdHVuZSBmYWlsZWQuXG4iLCBkcml2ZS0+bmFtZSk7DQor
DQorCQkJbWFwICY9IH5YRkVSX1VETUFfQUxMOw0KKwkJCW1vZGUgPSBhdGFf
dGltaW5nX21vZGUoZHJpdmUsIG1hcCk7DQorCQl9DQorDQorCQkvKiBEZXZp
Y2UgaXMgcmVndWxhciBETUEgY2FwYWJsZS4gKi8NCisJCWlmIChtb2RlICYg
KFhGRVJfU1dETUEgfCBYRkVSX01XRE1BKSkgew0KKwkJCWlmKChvbiA9ICFj
aC0+c3BlZWRwcm9jKGRyaXZlLCBtb2RlKSkpDQorCQkJCWdvdG8gc2V0X2Rt
YTsNCisNCisJCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogRE1BIGF1dG8t
dHVuZSBmYWlsZWQuXG4iLCBkcml2ZS0+bmFtZSk7DQorCQl9DQorDQorCQkv
KiBGSVhNRTogdGhpcyBzZWVtcyBub24tZnVuY3Rpb25hbCAgLS1ia3ogKi8N
CisJCS8qIENvbnN1bHQgdGhlIGxpc3Qgb2Yga25vd24gImdvb2QiIGRldmlj
ZXMuICovDQorCQlpZiAodWRtYV93aGl0ZV9saXN0KGRyaXZlKSkgew0KKw0K
KwkJCWlmIChpZC0+ZWlkZV9kbWFfdGltZSA+IDE1MCkNCisJCQkJZ290byBz
ZXRfZG1hOw0KKw0KKwkJCXByaW50ayhLRVJOX0lORk8gIiVzOiBkZXZpY2Ug
aXMgb24gRE1BIHdoaXRlbGlzdC5cbiIsIGRyaXZlLT5uYW1lKTsNCisvLwkJ
CW9uID0gMTsNCisJCX0NCisNCisJCS8qIFJldmVydCB0byBQSU8uICovDQor
CQlpZiAoIW9uICYmIGNoLT50dW5lcHJvYykNCisJCQljaC0+dHVuZXByb2Mo
ZHJpdmUsIDI1NSk7DQorCX0NCisNCitzZXRfZG1hOg0KKwl1ZG1hX2VuYWJs
ZShkcml2ZSwgb24sICFvbik7DQorDQorCXJldHVybiAwOw0KK30NCisNCiAv
Kg0KICAqIENvbmZpZ3VyZSBhIGRldmljZSBmb3IgRE1BIG9wZXJhdGlvbi4N
CiAgKi8NCi1pbnQgdWRtYV9wY2lfc2V0dXAoc3RydWN0IGF0YV9kZXZpY2Ug
KmRyaXZlKQ0KK2ludCB1ZG1hX3BjaV9zZXR1cChzdHJ1Y3QgYXRhX2Rldmlj
ZSAqZHJpdmUsIGludCBtYXApDQogew0KIAlpbnQgY29uZmlnX2FsbG93c19k
bWEgPSAxOw0KIAlzdHJ1Y3QgaGRfZHJpdmVpZCAqaWQgPSBkcml2ZS0+aWQ7
DQpkaWZmIC11ciAtWGRvbnRkaWZmIGxpbnV4LTIuNS4yNC9kcml2ZXJzL2lk
ZS9wY2lob3N0LmggbGludXgvZHJpdmVycy9pZGUvcGNpaG9zdC5oDQotLS0g
bGludXgtMi41LjI0L2RyaXZlcnMvaWRlL3BjaWhvc3QuaAlUdWUgSnVuIDI1
IDIyOjQ1OjQ3IDIwMDINCisrKyBsaW51eC9kcml2ZXJzL2lkZS9wY2lob3N0
LmgJVHVlIEp1bCAgMiAyMzo1NDoxNiAyMDAyDQpAQCAtMTE3LDcgKzExNyw2
IEBADQogCXVuc2lnbmVkIHNob3J0CQl2ZW5kb3I7DQogCXVuc2lnbmVkIHNo
b3J0CQlkZXZpY2U7DQogCXVuc2lnbmVkIGludAkJKCppbml0X2NoaXBzZXQp
KHN0cnVjdCBwY2lfZGV2ICopOw0KLQl1bnNpZ25lZCBpbnQJCSgqYXRhNjZf
Y2hlY2spKHN0cnVjdCBhdGFfY2hhbm5lbCAqKTsNCiAJdm9pZAkJCSgqaW5p
dF9jaGFubmVsKShzdHJ1Y3QgYXRhX2NoYW5uZWwgKik7DQogCXZvaWQJCQko
KmluaXRfZG1hKShzdHJ1Y3QgYXRhX2NoYW5uZWwgKiwgdW5zaWduZWQgbG9u
Zyk7DQogCWlkZV9wY2lfZW5hYmxlYml0X3QJZW5hYmxlYml0c1syXTsNCmRp
ZmYgLXVyIC1YZG9udGRpZmYgbGludXgtMi41LjI0L2RyaXZlcnMvaWRlL3Bk
YzIwMnh4LmMgbGludXgvZHJpdmVycy9pZGUvcGRjMjAyeHguYw0KLS0tIGxp
bnV4LTIuNS4yNC9kcml2ZXJzL2lkZS9wZGMyMDJ4eC5jCVR1ZSBKdW4gMjUg
MjI6NDY6NDMgMjAwMg0KKysrIGxpbnV4L2RyaXZlcnMvaWRlL3BkYzIwMnh4
LmMJVHVlIEp1bCAgMiAyMzo1NDoxNiAyMDAyDQpAQCAtMTI5LDI5ICsxMjks
MzAgQEANCiAJcmV0dXJuIDA7DQogfQ0KIA0KLXN0YXRpYyBpbnQgcGRjMjAy
eHhfcmF0ZW1hc2soc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlKQ0KK3N0YXRp
YyBpbnQgX19pbml0IHBkYzIwMnh4X21vZGVzX21hcChzdHJ1Y3QgYXRhX2No
YW5uZWwgKmNoKQ0KIHsNCi0Jc3RydWN0IHBjaV9kZXYgKmRldiA9IGRyaXZl
LT5jaGFubmVsLT5wY2lfZGV2Ow0KLQlpbnQgbWFwID0gMDsNCi0NCi0JaWYg
KCFlaWdodHlfbmludHlfdGhyZWUoZHJpdmUpKQ0KLQkJcmV0dXJuIFhGRVJf
VURNQTsNCisJaW50IG1hcCA9IFhGRVJfRVBJTyB8IFhGRVJfU1dETUEgfCBY
RkVSX01XRE1BIHwgWEZFUl9VRE1BOw0KIA0KLQlzd2l0Y2goZGV2LT5kZXZp
Y2UpIHsNCisJc3dpdGNoKGNoLT5wY2lfZGV2LT5kZXZpY2UpIHsNCiAJCWNh
c2UgUENJX0RFVklDRV9JRF9QUk9NSVNFXzIwMjc2Og0KIAkJY2FzZSBQQ0lf
REVWSUNFX0lEX1BST01JU0VfMjAyNzU6DQogCQljYXNlIFBDSV9ERVZJQ0Vf
SURfUFJPTUlTRV8yMDI2OToNCiAJCQltYXAgfD0gWEZFUl9VRE1BXzEzMzsN
CiAJCWNhc2UgUENJX0RFVklDRV9JRF9QUk9NSVNFXzIwMjY4UjoNCiAJCWNh
c2UgUENJX0RFVklDRV9JRF9QUk9NSVNFXzIwMjY4Og0KKwkJCW1hcCAmPSB+
WEZFUl9TV0RNQTsNCiAJCWNhc2UgUENJX0RFVklDRV9JRF9QUk9NSVNFXzIw
MjY3Og0KIAkJY2FzZSBQQ0lfREVWSUNFX0lEX1BST01JU0VfMjAyNjU6DQog
CQkJbWFwIHw9IFhGRVJfVURNQV8xMDA7DQogCQljYXNlIFBDSV9ERVZJQ0Vf
SURfUFJPTUlTRV8yMDI2MjoNCiAJCQltYXAgfD0gWEZFUl9VRE1BXzY2Ow0K
LQkJY2FzZSBQQ0lfREVWSUNFX0lEX1BST01JU0VfMjAyNDY6DQotCQkJbWFw
IHw9IFhGRVJfVURNQTsNCisNCisJCQlpZiAoIWNoLT51ZG1hX2ZvdXIpIHsN
CisJCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IDQwLXBpbiBjYWJsZSwg
c3BlZWQgcmVkdWNlZCB0byBVRE1BKDMzKSBtb2RlLlxuIiwgY2gtPm5hbWUp
Ow0KKwkJCQltYXAgJj0gflhGRVJfVURNQV84MFc7DQorCQkJfQ0KIAl9DQor
DQogCXJldHVybiBtYXA7DQogfQ0KIA0KQEAgLTM3Miw0OCArMzczLDM0IEBA
DQogfQ0KIA0KICNpZmRlZiBDT05GSUdfQkxLX0RFVl9JREVETUENCi0vKiBG
SVhNRTogc3BsaXQgdGhpcyBmb3Igb2xkICYgbmV3IGNoaXBzZXRzIChqdW1w
Yml0KSAtLWJreiAqLw0KLXN0YXRpYyBpbnQgY29uZmlnX2NoaXBzZXRfZm9y
X2RtYShzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUsIGJ5dGUgdWRtYSkNCitz
dGF0aWMgaW50IHBkYzIwMnh4X3R4X3VkbWFfc2V0dXAoc3RydWN0IGF0YV9k
ZXZpY2UgKmRyaXZlLCBpbnQgbWFwKQ0KK3sNCisJc3RydWN0IGhkX2RyaXZl
aWQgKmlkID0gZHJpdmUtPmlkOw0KKwlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNo
ID0gZHJpdmUtPmNoYW5uZWw7DQorCXUzMiBpbmRleHJlZyA9IGNoLT5kbWFf
YmFzZSArIDE7DQorCXUzMiBkYXRhcmVnID0gaW5kZXhyZWcgKyAyOw0KKwl1
OCBhZGogPSAoZHJpdmUtPmRuICUgMikgPyAweDA4IDogMHgwMDsNCisNCisJ
aWYgKGRyaXZlLT50eXBlICE9IEFUQV9ESVNLKQ0KKwkJcmV0dXJuIDA7DQor
DQorCS8qIElPUkRZX0VOICYgUFJFRkVUQ0hfRU4gKi8NCisJaWYgKGlkLT5j
YXBhYmlsaXR5ICYgNCkNCisJCXNldF8ycmVncygweDEzLCAoSU5fQllURShk
YXRhcmVnKXwweDAzKSk7DQorDQorCXJldHVybiB1ZG1hX2dlbmVyaWNfc2V0
dXAoZHJpdmUsIG1hcCk7DQorfQ0KKw0KK3N0YXRpYyBpbnQgcGRjMjAyeHhf
dWRtYV9zZXR1cChzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUsIGludCBtYXAp
DQogew0KLQlzdHJ1Y3QgaGRfZHJpdmVpZCAqaWQJPSBkcml2ZS0+aWQ7DQor
CXN0cnVjdCBoZF9kcml2ZWlkICppZCA9IGRyaXZlLT5pZDsNCiAJc3RydWN0
IGF0YV9jaGFubmVsICpod2lmID0gZHJpdmUtPmNoYW5uZWw7DQogCXN0cnVj
dCBoZF9kcml2ZWlkICptYXRlX2lkID0gaHdpZi0+ZHJpdmVzWyEoZHJpdmUt
PmRuJTIpXS5pZDsNCi0Jc3RydWN0IHBjaV9kZXYgKmRldgk9IGh3aWYtPnBj
aV9kZXY7DQorCXN0cnVjdCBwY2lfZGV2ICpkZXYgPSBod2lmLT5wY2lfZGV2
Ow0KIAl1MzIgaGlnaF8xNiA9IHBjaV9yZXNvdXJjZV9zdGFydChkZXYsIDQp
Ow0KLQl1MzIgZG1hX2Jhc2UgPSBod2lmLT5kbWFfYmFzZTsNCi0JdTMyIGlu
ZGV4cmVnID0gZG1hX2Jhc2UgKyAxOw0KLQl1MzIgZGF0YXJlZyA9IGRtYV9i
YXNlICsgMzsNCi0JYnl0ZSBhZGoJCT0gKGRyaXZlLT5kbiUyKSA/IDB4MDgg
OiAweDAwOw0KLQl1OCBqdW1wYml0Ow0KIAl1MzIgZHJpdmVfY29uZjsNCiAJ
dTggZHJpdmVfcGNpID0gMCwgQVAsIHRtcCwgbW9kZSA9IC0xOw0KIAl1OCBD
TEtTUEQsIG1hc2sgPSBod2lmLT51bml0ID8gMHgwOCA6IDB4MDI7DQotCWlu
dCBtYXA7DQotDQotCS8qIFVETUEgMywgNCwgNSBhbmQgNiAqLw0KLQl1OCBu
ZWVkc184MHcgPSAoaWQtPmRtYV91bHRyYSAmIDB4MDA3OCk7DQotDQotCXN3
aXRjaChkZXYtPmRldmljZSkgew0KLQkJY2FzZSBQQ0lfREVWSUNFX0lEX1BS
T01JU0VfMjAyNjc6DQotCQljYXNlIFBDSV9ERVZJQ0VfSURfUFJPTUlTRV8y
MDI2NToNCi0JCWNhc2UgUENJX0RFVklDRV9JRF9QUk9NSVNFXzIwMjYyOg0K
LQkJY2FzZSBQQ0lfREVWSUNFX0lEX1BST01JU0VfMjAyNDY6DQotCQkJanVt
cGJpdCA9IDA7DQotCQkJYnJlYWs7DQotCQlkZWZhdWx0OiAvKiBjaGlwc2V0
cyBuZXdlciB0aGVuIDIwMjY3ICovDQotCQkJanVtcGJpdCA9IDE7DQotCQkJ
YnJlYWs7DQotCX0NCi0NCi0JLyogRklYTUU6IHRoaXMgY2hlY2sgaXMgd3Jv
bmcgZm9yIDIwMjQ2ICAtLWJreiAqLw0KLQkvKiAqLw0KLQlpZiAobmVlZHNf
ODB3ICYmICFod2lmLT51ZG1hX2ZvdXIpIHsNCi0JCXByaW50ayhLRVJOX1dB
Uk5JTkcgIiVzOiBjaGFubmVsIHJlcXVpcmVzIGFuIDgwLXBpbiBjYWJsZS5c
biIsIGh3aWYtPm5hbWUpOw0KLQkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IHJl
ZHVjZWQgdG8gVURNQSgzMykgbW9kZS5cbiIsIGRyaXZlLT5uYW1lKTsNCi0J
fQ0KLQ0KLQlpZiAoanVtcGJpdCkNCi0JCWdvdG8gY2hpcHNldF9pc19zZXQ7
DQogDQogCS8qDQogCSAqIFNldCB0aGUgY29udHJvbCByZWdpc3RlciB0byB1
c2UgdGhlIDY2TWh6IHN5c3RlbQ0KQEAgLTQyNyw3ICs0MTQsNyBAQA0KIAkg
KiBGSVhNRTogbW92ZSB0aGlzIHRvIHBkYzIwMnh4X3R1bmVwcm9jKCkNCiAJ
ICogICAgICAgIHJpZ2h0IG5vdyB5b3UgY2FuJ3QgZG93bmdyYWRlIGZyb20g
VTY2IHRvIFUzMyAgLS1ia3oNCiAJICovDQotCWlmIChuZWVkc184MHcpIHsN
CisJaWYgKGlkLT5kbWFfdWx0cmEgJiAweDAwNzgpIHsJLyogVURNQSAzLCA0
LCA1IGFuZCA2ICovDQogCQlDTEtTUEQgPSBJTl9CWVRFKGhpZ2hfMTYgKyBQ
RENfQ0xLKTsNCiAJCS8qIGNoZWNrIGNhYmxlIGFuZCBtYXRlIChtdXN0IGJl
IGF0IGxlYXN0IHVkbWEzIGNhcGFibGUpICovDQogCQlpZiAoIWh3aWYtPnVk
bWFfZm91ciB8fA0KQEAgLTQ0OSwxMiArNDM2LDExIEBADQogCS8qIEZJWE1F
OiB3aGF0IGlmIFNZTkNfRVJSRFkgaXMgZW5hYmxlZCBmb3Igc2xhdmUNCiAJ
CSAgYW5kIGRpc2FibGVkIGZvciBtYXN0ZXI/IC0tYmt6ICovDQogCXBjaV9y
ZWFkX2NvbmZpZ19ieXRlKGRldiwgZHJpdmVfcGNpLCAmQVApOw0KKwkvKiBl
bmFibGUgU1lOQ19FUlJEWSBmb3IgbWFzdGVyIGFuZCBzbGF2ZSAoaWYgZW5h
YmxlZCBmb3IgbWFzdGVyKSAqLw0KIAlpZiAoIShBUCAmIFNZTkNfRVJSRFlf
RU4pKSB7DQotCQlpZiAoZHJpdmUtPmRuID09IDAgfHwgZHJpdmUtPmRuID09
IDIpIHsNCi0JCQkvKiBlbmFibGUgU1lOQ19FUlJEWSBmb3IgbWFzdGVyICov
DQorCQlpZiAoIShkcml2ZS0+ZG4gJSAyKSkgew0KIAkJCXBjaV93cml0ZV9j
b25maWdfYnl0ZShkZXYsIGRyaXZlX3BjaSwgQVB8U1lOQ19FUlJEWV9FTik7
DQogCQl9IGVsc2Ugew0KLQkJCS8qIGVuYWJsZSBTWU5DX0VSUkRZIGZvciBz
bGF2ZSBpZiBlbmFibGVkIGZvciBtYXN0ZXIgKi8NCiAJCQlwY2lfcmVhZF9j
b25maWdfYnl0ZShkZXYsIGRyaXZlX3BjaSAtIDQsICZ0bXApOw0KIAkJCWlm
ICh0bXAgJiBTWU5DX0VSUkRZX0VOKQ0KIAkJCQlwY2lfd3JpdGVfY29uZmln
X2J5dGUoZGV2LCBkcml2ZV9wY2ksIEFQfFNZTkNfRVJSRFlfRU4pOw0KQEAg
LTQ2Niw4NSArNDUyLDI2IEBADQogCWlmIChkcml2ZS0+dHlwZSAhPSBBVEFf
RElTSykNCiAJCXJldHVybiAwOw0KIA0KLQlpZiAoanVtcGJpdCkgew0KLQkJ
aWYgKGlkLT5jYXBhYmlsaXR5ICYgNCkgewkvKiBJT1JEWV9FTiAmIFBSRUZF
VENIX0VOICovDQotCQkJc2V0XzJyZWdzKDB4MTMsIChJTl9CWVRFKGRhdGFy
ZWcpfDB4MDMpKTsNCi0JCX0NCi0JfSBlbHNlIHsNCi0JCXBjaV9yZWFkX2Nv
bmZpZ19ieXRlKGRldiwgZHJpdmVfcGNpLCAmQVApOw0KLQkJaWYgKGlkLT5j
YXBhYmlsaXR5ICYgNCkJCS8qIElPUkRZX0VOICovDQotCQkJcGNpX3dyaXRl
X2NvbmZpZ19ieXRlKGRldiwgZHJpdmVfcGNpLCBBUHxJT1JEWV9FTik7DQot
CQlwY2lfcmVhZF9jb25maWdfYnl0ZShkZXYsIGRyaXZlX3BjaSwgJkFQKTsN
Ci0JCWlmIChkcml2ZS0+dHlwZSA9PSBBVEFfRElTSykJLyogUFJFRkVUQ0hf
RU4gKi8NCi0JCQlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCBkcml2ZV9w
Y2ksIEFQfFBSRUZFVENIX0VOKTsNCi0JfQ0KKwlwY2lfcmVhZF9jb25maWdf
Ynl0ZShkZXYsIGRyaXZlX3BjaSwgJkFQKTsNCisJaWYgKGlkLT5jYXBhYmls
aXR5ICYgNCkJCS8qIElPUkRZX0VOICovDQorCQlwY2lfd3JpdGVfY29uZmln
X2J5dGUoZGV2LCBkcml2ZV9wY2ksIEFQfElPUkRZX0VOKTsNCisJcGNpX3Jl
YWRfY29uZmlnX2J5dGUoZGV2LCBkcml2ZV9wY2ksICZBUCk7DQorCWlmIChk
cml2ZS0+dHlwZSA9PSBBVEFfRElTSykJLyogUFJFRkVUQ0hfRU4gKi8NCisJ
CXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIGRyaXZlX3BjaSwgQVB8UFJF
RkVUQ0hfRU4pOw0KIA0KLQlpZiAodWRtYSkgew0KLQkJbWFwID0gcGRjMjAy
eHhfcmF0ZW1hc2soZHJpdmUpOw0KLQl9IGVsc2Ugew0KLQkJaWYgKCFqdW1w
Yml0KQ0KLQkJCW1hcCA9IFhGRVJfU1dETUEgfCBYRkVSX01XRE1BOw0KLQkJ
ZWxzZQ0KLQkJCW1hcCA9IFhGRVJfTVdETUE7DQotCX0NCisJbWFwID0gaHdp
Zi0+bW9kZXNfbWFwOw0KKw0KKwlpZiAoIWVpZ2h0eV9uaW50eV90aHJlZShk
cml2ZSkpDQorCQltYXAgJj0gflhGRVJfVURNQV84MFc7DQogDQogCW1vZGUg
PSBhdGFfdGltaW5nX21vZGUoZHJpdmUsIG1hcCk7DQogCWlmIChtb2RlIDwg
WEZFUl9TV19ETUFfMCkgew0KIAkJLyogcmVzdG9yZSBvcmlnaW5hbCBwY2kt
Y29uZmlnIHNwYWNlICovDQotCQlpZiAoIWp1bXBiaXQpDQotCQkJcGNpX3dy
aXRlX2NvbmZpZ19kd29yZChkZXYsIGRyaXZlX3BjaSwgZHJpdmVfY29uZik7
DQorCQlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKGRldiwgZHJpdmVfcGNpLCBk
cml2ZV9jb25mKTsNCiAJCXJldHVybiAwOw0KIAl9DQogDQotCXJldHVybiAh
aHdpZi0+c3BlZWRwcm9jKGRyaXZlLCBtb2RlKTsNCi19DQotDQotc3RhdGlj
IGludCBwZGMyMDJ4eF91ZG1hX3NldHVwKHN0cnVjdCBhdGFfZGV2aWNlICpk
cml2ZSkNCi17DQotCXN0cnVjdCBoZF9kcml2ZWlkICppZCA9IGRyaXZlLT5p
ZDsNCi0Jc3RydWN0IGF0YV9jaGFubmVsICpod2lmID0gZHJpdmUtPmNoYW5u
ZWw7DQotCWludCBvbiA9IDA7DQotCWludCB2ZXJib3NlID0gMTsNCi0NCi0J
aWYgKGlkICYmIChpZC0+Y2FwYWJpbGl0eSAmIDEpICYmIGh3aWYtPmF1dG9k
bWEpIHsNCi0JCS8qIENvbnN1bHQgdGhlIGxpc3Qgb2Yga25vd24gImJhZCIg
ZHJpdmVzICovDQotCQl2ZXJib3NlID0gMDsNCi0JCWlmICh1ZG1hX2JsYWNr
X2xpc3QoZHJpdmUpKQ0KLQkJCWdvdG8gbm9fZG1hX3NldDsNCi0JCWlmIChp
ZC0+ZmllbGRfdmFsaWQgJiA0KSB7DQotCQkJaWYgKGlkLT5kbWFfdWx0cmEg
JiAweDAwN0YpIHsNCi0JCQkJLyogRm9yY2UgaWYgQ2FwYWJsZSBVbHRyYURN
QSAqLw0KLQkJCQlvbiA9IGNvbmZpZ19jaGlwc2V0X2Zvcl9kbWEoZHJpdmUs
IDEpOw0KLQkJCQlpZiAoKGlkLT5maWVsZF92YWxpZCAmIDIpICYmDQotCQkJ
CSAgICAoIW9uKSkNCi0JCQkJCWdvdG8gdHJ5X2RtYV9tb2RlczsNCi0JCQl9
DQotCQl9IGVsc2UgaWYgKGlkLT5maWVsZF92YWxpZCAmIDIpIHsNCi10cnlf
ZG1hX21vZGVzOg0KLQkJCWlmICgoaWQtPmRtYV9td29yZCAmIDB4MDAwNykg
fHwNCi0JCQkgICAgKGlkLT5kbWFfMXdvcmQgJiAweDAwMDcpKSB7DQotCQkJ
CS8qIEZvcmNlIGlmIENhcGFibGUgcmVndWxhciBETUEgbW9kZXMgKi8NCi0J
CQkJb24gPSBjb25maWdfY2hpcHNldF9mb3JfZG1hKGRyaXZlLCAwKTsNCi0J
CQkJaWYgKCFvbikNCi0JCQkJCWdvdG8gbm9fZG1hX3NldDsNCi0JCQl9DQot
CQl9IGVsc2UgaWYgKHVkbWFfd2hpdGVfbGlzdChkcml2ZSkpIHsNCi0JCQlp
ZiAoaWQtPmVpZGVfZG1hX3RpbWUgPiAxNTApIHsNCi0JCQkJZ290byBub19k
bWFfc2V0Ow0KLQkJCX0NCi0JCQkvKiBDb25zdWx0IHRoZSBsaXN0IG9mIGtu
b3duICJnb29kIiBkcml2ZXMgKi8NCi0JCQlvbiA9IGNvbmZpZ19jaGlwc2V0
X2Zvcl9kbWEoZHJpdmUsIDApOw0KLQkJCWlmICghb24pDQotCQkJCWdvdG8g
bm9fZG1hX3NldDsNCi0JCX0gZWxzZSBnb3RvIG5vX2RtYV9zZXQ7DQotCX0g
ZWxzZSBpZiAoKGlkLT5jYXBhYmlsaXR5ICYgOCkgfHwgKGlkLT5maWVsZF92
YWxpZCAmIDIpKSB7DQotbm9fZG1hX3NldDoNCi0JCXBkYzIwMnh4X3R1bmVf
ZHJpdmUoZHJpdmUsIDI1NSk7DQotCX0NCi0NCi0JdWRtYV9lbmFibGUoZHJp
dmUsIG9uLCB2ZXJib3NlKTsNCi0NCi0JcmV0dXJuIDA7DQorCXJldHVybiB1
ZG1hX2dlbmVyaWNfc2V0dXAoZHJpdmUsIG1hcCk7DQogfQ0KIA0KIHN0YXRp
YyB2b2lkIHBkYzIwMnh4X3VkbWFfc3RhcnQoc3RydWN0IGF0YV9kZXZpY2Ug
KmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEpDQpAQCAtNzI1LDEyICs2NTIs
MjAgQEANCiAJCWNhc2UgUENJX0RFVklDRV9JRF9QUk9NSVNFXzIwMjY5Og0K
IAkJY2FzZSBQQ0lfREVWSUNFX0lEX1BST01JU0VfMjAyNjg6DQogCQljYXNl
IFBDSV9ERVZJQ0VfSURfUFJPTUlTRV8yMDI2OFI6DQorCQkJaHdpZi0+dWRt
YV9mb3VyID0gcGRjMjAyeHhfdHhfYXRhNjZfY2hlY2soaHdpZik7DQorDQog
CQkJaHdpZi0+c3BlZWRwcm9jID0gJnBkYzIwMnh4X25ld190dW5lX2NoaXBz
ZXQ7DQogCQkJaHdpZi0+cmVzZXRwcm9jID0gJnBkYzIwMnh4X25ld19yZXNl
dDsNCisjaWZkZWYgQ09ORklHX0JMS19ERVZfSURFRE1BDQorCQkJaWYgKGh3
aWYtPmRtYV9iYXNlKQ0KKwkJCQlod2lmLT51ZG1hX3NldHVwID0gcGRjMjAy
eHhfdHhfdWRtYV9zZXR1cDsNCisjZW5kaWYNCiAJCQlicmVhazsNCiAJCWNh
c2UgUENJX0RFVklDRV9JRF9QUk9NSVNFXzIwMjY3Og0KIAkJY2FzZSBQQ0lf
REVWSUNFX0lEX1BST01JU0VfMjAyNjU6DQogCQljYXNlIFBDSV9ERVZJQ0Vf
SURfUFJPTUlTRV8yMDI2MjoNCisJCQlod2lmLT51ZG1hX2ZvdXIgPSBwZGMy
MDJ4eF9hdGE2Nl9jaGVjayhod2lmKTsNCisNCiAJCQlod2lmLT5yZXNldHBy
b2MJPSAmcGRjMjAyeHhfcmVzZXQ7DQogI2lmZGVmIENPTkZJR19CTEtfREVW
X0lERURNQQ0KIAkJCS8qIHdlIG5lZWQgc3BlY2lhbCBmdW5jdGlvbnMgZm9y
IGxiYTQ4ICovDQpAQCAtNzQxLDYgKzY3NiwxMCBAQA0KICNlbmRpZg0KIAkJ
LyogRklYTUU6IGNoZWNrIHdoZXRoZXIgMjAyNDYgd29ya3Mgd2l0aCBsYmE0
OCAtLWJreiAqLw0KIAkJY2FzZSBQQ0lfREVWSUNFX0lEX1BST01JU0VfMjAy
NDY6DQorI2lmZGVmIENPTkZJR19CTEtfREVWX0lERURNQQ0KKwkJCWlmICho
d2lmLT5kbWFfYmFzZSkNCisJCQkJaHdpZi0+dWRtYV9zZXR1cCA9IHBkYzIw
Mnh4X3VkbWFfc2V0dXA7DQorI2VuZGlmDQogCQkJaHdpZi0+c3BlZWRwcm9j
ID0gJnBkYzIwMnh4X3R1bmVfY2hpcHNldDsNCiAJCWRlZmF1bHQ6DQogCQkJ
YnJlYWs7DQpAQCAtNzQ4LDE4ICs2ODcsMTUgQEANCiANCiAjaWZkZWYgQ09O
RklHX0JMS19ERVZfSURFRE1BDQogCWlmIChod2lmLT5kbWFfYmFzZSkgew0K
KwkJaHdpZi0+bW9kZXNfbWFwID0gcGRjMjAyeHhfbW9kZXNfbWFwKGh3aWYp
Ow0KIAkJaHdpZi0+dWRtYV9pcnFfbG9zdCA9IHBkYzIwMnh4X2J1ZzsNCiAJ
CWh3aWYtPnVkbWFfdGltZW91dCA9IHBkYzIwMnh4X2J1ZzsNCi0JCWh3aWYt
PnVkbWFfc2V0dXAgPSBwZGMyMDJ4eF91ZG1hX3NldHVwOw0KIAkJaHdpZi0+
aGlnaG1lbSA9IDE7DQotCQlpZiAoIW5vYXV0b2RtYSkNCi0JCQlod2lmLT5h
dXRvZG1hID0gMTsNCiAJfSBlbHNlDQogI2VuZGlmDQogCXsNCiAJCWh3aWYt
PmRyaXZlc1swXS5hdXRvdHVuZSA9IDE7DQogCQlod2lmLT5kcml2ZXNbMV0u
YXV0b3R1bmUgPSAxOw0KLQkJaHdpZi0+YXV0b2RtYSA9IDA7DQogCX0NCiB9
DQogDQpAQCAtNzcwLDcgKzcwNiw2IEBADQogCQl2ZW5kb3I6IFBDSV9WRU5E
T1JfSURfUFJPTUlTRSwNCiAJCWRldmljZTogUENJX0RFVklDRV9JRF9QUk9N
SVNFXzIwMjQ2LA0KIAkJaW5pdF9jaGlwc2V0OiBwZGMyMDJ4eF9pbml0X2No
aXBzZXQsDQotCQlhdGE2Nl9jaGVjazogTlVMTCwNCiAJCWluaXRfY2hhbm5l
bDogaWRlX2luaXRfcGRjMjAyeHgsDQogI2lmbmRlZiBDT05GSUdfUERDMjAy
WFhfRk9SQ0UNCiAJCWVuYWJsZWJpdHM6IHt7MHg1MCwweDAyLDB4MDJ9LCB7
MHg1MCwweDA0LDB4MDR9fSwNCkBAIC03ODMsNyArNzE4LDYgQEANCiAJCXZl
bmRvcjogUENJX1ZFTkRPUl9JRF9QUk9NSVNFLA0KIAkJZGV2aWNlOiBQQ0lf
REVWSUNFX0lEX1BST01JU0VfMjAyNjIsDQogCQlpbml0X2NoaXBzZXQ6IHBk
YzIwMnh4X2luaXRfY2hpcHNldCwNCi0JCWF0YTY2X2NoZWNrOiBwZGMyMDJ4
eF9hdGE2Nl9jaGVjaywNCiAJCWluaXRfY2hhbm5lbDogaWRlX2luaXRfcGRj
MjAyeHgsDQogI2lmbmRlZiBDT05GSUdfUERDMjAyWFhfRk9SQ0UNCiAJCWVu
YWJsZWJpdHM6IHt7MHg1MCwweDAyLDB4MDJ9LCB7MHg1MCwweDA0LDB4MDR9
fSwNCkBAIC03OTYsNyArNzMwLDYgQEANCiAJCXZlbmRvcjogUENJX1ZFTkRP
Ul9JRF9QUk9NSVNFLA0KIAkJZGV2aWNlOiBQQ0lfREVWSUNFX0lEX1BST01J
U0VfMjAyNjUsDQogCQlpbml0X2NoaXBzZXQ6IHBkYzIwMnh4X2luaXRfY2hp
cHNldCwNCi0JCWF0YTY2X2NoZWNrOiBwZGMyMDJ4eF9hdGE2Nl9jaGVjaywN
CiAJCWluaXRfY2hhbm5lbDogaWRlX2luaXRfcGRjMjAyeHgsDQogI2lmbmRl
ZiBDT05GSUdfUERDMjAyWFhfRk9SQ0UNCiAJCWVuYWJsZWJpdHM6IHt7MHg1
MCwweDAyLDB4MDJ9LCB7MHg1MCwweDA0LDB4MDR9fSwNCkBAIC04MTEsNyAr
NzQ0LDYgQEANCiAJCXZlbmRvcjogUENJX1ZFTkRPUl9JRF9QUk9NSVNFLA0K
IAkJZGV2aWNlOiBQQ0lfREVWSUNFX0lEX1BST01JU0VfMjAyNjcsDQogCQlp
bml0X2NoaXBzZXQ6IHBkYzIwMnh4X2luaXRfY2hpcHNldCwNCi0JCWF0YTY2
X2NoZWNrOiBwZGMyMDJ4eF9hdGE2Nl9jaGVjaywNCiAJCWluaXRfY2hhbm5l
bDogaWRlX2luaXRfcGRjMjAyeHgsDQogI2lmbmRlZiBDT05GSUdfUERDMjAy
WFhfRk9SQ0UNCiAJCWVuYWJsZWJpdHM6IHt7MHg1MCwweDAyLDB4MDJ9LCB7
MHg1MCwweDA0LDB4MDR9fSwNCkBAIC04MjQsNyArNzU2LDYgQEANCiAJCXZl
bmRvcjogUENJX1ZFTkRPUl9JRF9QUk9NSVNFLA0KIAkJZGV2aWNlOiBQQ0lf
REVWSUNFX0lEX1BST01JU0VfMjAyNjgsDQogCQlpbml0X2NoaXBzZXQ6IHBk
YzIwMnh4X3R4X2luaXRfY2hpcHNldCwNCi0JCWF0YTY2X2NoZWNrOiBwZGMy
MDJ4eF90eF9hdGE2Nl9jaGVjaywNCiAJCWluaXRfY2hhbm5lbDogaWRlX2lu
aXRfcGRjMjAyeHgsDQogCQlib290YWJsZTogT0ZGX0JPQVJELA0KIAkJZmxh
Z3M6IEFUQV9GX0lSUSB8IEFUQV9GX0RNQQ0KQEAgLTgzNyw3ICs3NjgsNiBA
QA0KIAkJdmVuZG9yOiBQQ0lfVkVORE9SX0lEX1BST01JU0UsDQogCQlkZXZp
Y2U6IFBDSV9ERVZJQ0VfSURfUFJPTUlTRV8yMDI2OFIsDQogCQlpbml0X2No
aXBzZXQ6IHBkYzIwMnh4X3R4X2luaXRfY2hpcHNldCwNCi0JCWF0YTY2X2No
ZWNrOiBwZGMyMDJ4eF90eF9hdGE2Nl9jaGVjaywNCiAJCWluaXRfY2hhbm5l
bDogaWRlX2luaXRfcGRjMjAyeHgsDQogCQlib290YWJsZTogT0ZGX0JPQVJE
LA0KIAkJZmxhZ3M6IEFUQV9GX0lSUSAgfCBBVEFfRl9ETUENCkBAIC04NDYs
NyArNzc2LDYgQEANCiAJCXZlbmRvcjogUENJX1ZFTkRPUl9JRF9QUk9NSVNF
LA0KIAkJZGV2aWNlOiBQQ0lfREVWSUNFX0lEX1BST01JU0VfMjAyNjksDQog
CQlpbml0X2NoaXBzZXQ6IHBkYzIwMnh4X3R4X2luaXRfY2hpcHNldCwNCi0J
CWF0YTY2X2NoZWNrOiBwZGMyMDJ4eF90eF9hdGE2Nl9jaGVjaywNCiAJCWlu
aXRfY2hhbm5lbDogaWRlX2luaXRfcGRjMjAyeHgsDQogCQlib290YWJsZTog
T0ZGX0JPQVJELA0KIAkJZmxhZ3M6IEFUQV9GX0lSUSB8IEFUQV9GX0RNQQ0K
QEAgLTg1NSw3ICs3ODQsNiBAQA0KIAkJdmVuZG9yOiBQQ0lfVkVORE9SX0lE
X1BST01JU0UsDQogCQlkZXZpY2U6IFBDSV9ERVZJQ0VfSURfUFJPTUlTRV8y
MDI3NSwNCiAJCWluaXRfY2hpcHNldDogcGRjMjAyeHhfdHhfaW5pdF9jaGlw
c2V0LA0KLQkJYXRhNjZfY2hlY2s6IHBkYzIwMnh4X3R4X2F0YTY2X2NoZWNr
LA0KIAkJaW5pdF9jaGFubmVsOiBpZGVfaW5pdF9wZGMyMDJ4eCwNCiAJCWJv
b3RhYmxlOiBPRkZfQk9BUkQsDQogCQlmbGFnczogQVRBX0ZfSVJRIHwgQVRB
X0ZfRE1BDQpAQCAtODY0LDcgKzc5Miw2IEBADQogCQl2ZW5kb3I6IFBDSV9W
RU5ET1JfSURfUFJPTUlTRSwNCiAJCWRldmljZTogUENJX0RFVklDRV9JRF9Q
Uk9NSVNFXzIwMjc2LA0KIAkJaW5pdF9jaGlwc2V0OiBwZGMyMDJ4eF90eF9p
bml0X2NoaXBzZXQsDQotCQlhdGE2Nl9jaGVjazogcGRjMjAyeHhfdHhfYXRh
NjZfY2hlY2ssDQogCQlpbml0X2NoYW5uZWw6IGlkZV9pbml0X3BkYzIwMnh4
LA0KIAkJYm9vdGFibGU6IE9GRl9CT0FSRCwNCiAJCWZsYWdzOiBBVEFfRl9J
UlEgfCBBVEFfRl9ETUENCmRpZmYgLXVyIC1YZG9udGRpZmYgbGludXgtMi41
LjI0L2RyaXZlcnMvaWRlL3BpaXguYyBsaW51eC9kcml2ZXJzL2lkZS9waWl4
LmMNCi0tLSBsaW51eC0yLjUuMjQvZHJpdmVycy9pZGUvcGlpeC5jCVR1ZSBK
dW4gMjUgMjI6NDY6MDUgMjAwMg0KKysrIGxpbnV4L2RyaXZlcnMvaWRlL3Bp
aXguYwlUdWUgSnVsICAyIDIzOjU0OjE2IDIwMDINCkBAIC0yNDQsMjYgKzI0
NCwxOCBAQA0KIH0NCiANCiAjaWZkZWYgQ09ORklHX0JMS19ERVZfSURFRE1B
DQotDQotc3RhdGljIGludCBwaWl4X3VkbWFfc2V0dXAoc3RydWN0IGF0YV9k
ZXZpY2UgKmRyaXZlKQ0KK3N0YXRpYyBpbnQgX19pbml0IHBpaXhfbW9kZXNf
bWFwKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2gpDQogew0KLQlzaG9ydCB3ODAg
PSBkcml2ZS0+Y2hhbm5lbC0+dWRtYV9mb3VyOw0KLQ0KLQlzaG9ydCBzcGVl
ZCA9IGF0YV90aW1pbmdfbW9kZShkcml2ZSwNCi0JCQlYRkVSX1BJTyB8IFhG
RVJfRVBJTyB8DQotCQkJKHBpaXhfY29uZmlnLT5mbGFncyAmIFBJSVhfTk9E
TUEgPyAwIDogKFhGRVJfU1dETUEgfCBYRkVSX01XRE1BIHwNCi0JCQkocGlp
eF9jb25maWctPmZsYWdzICYgUElJWF9VRE1BID8gWEZFUl9VRE1BIDogMCkg
fA0KLQkJCSh3ODAgJiYgKHBpaXhfY29uZmlnLT5mbGFncyAmIFBJSVhfVURN
QSkgPj0gUElJWF9VRE1BXzY2ID8gWEZFUl9VRE1BXzY2IDogMCkgfA0KLQkJ
CSh3ODAgJiYgKHBpaXhfY29uZmlnLT5mbGFncyAmIFBJSVhfVURNQSkgPj0g
UElJWF9VRE1BXzEwMCA/IFhGRVJfVURNQV8xMDAgOiAwKSB8DQotCQkJKHc4
MCAmJiAocGlpeF9jb25maWctPmZsYWdzICYgUElJWF9VRE1BKSA+PSBQSUlY
X1VETUFfMTMzID8gWEZFUl9VRE1BXzEzMyA6IDApKSkpOw0KLQ0KLQlwaWl4
X3NldF9kcml2ZShkcml2ZSwgc3BlZWQpOw0KLQ0KLQl1ZG1hX2VuYWJsZShk
cml2ZSwgZHJpdmUtPmNoYW5uZWwtPmF1dG9kbWEgJiYgKHNwZWVkICYgWEZF
Ul9NT0RFKSAhPSBYRkVSX1BJTywgMCk7DQorCXNob3J0IHc4MCA9IGNoLT51
ZG1hX2ZvdXI7DQorCWludCBtYXAgPSBYRkVSX0VQSU8gfA0KKwkJICAocGlp
eF9jb25maWctPmZsYWdzICYgUElJWF9OT0RNQSA/IDAgOiAoWEZFUl9TV0RN
QSB8IFhGRVJfTVdETUEgfA0KKwkJICAocGlpeF9jb25maWctPmZsYWdzICYg
UElJWF9VRE1BID8gWEZFUl9VRE1BIDogMCkgfA0KKwkJICAodzgwICYmIChw
aWl4X2NvbmZpZy0+ZmxhZ3MgJiBQSUlYX1VETUEpID49IFBJSVhfVURNQV82
NiA/IFhGRVJfVURNQV82NiA6IDApIHwNCisJCSAgKHc4MCAmJiAocGlpeF9j
b25maWctPmZsYWdzICYgUElJWF9VRE1BKSA+PSBQSUlYX1VETUFfMTAwID8g
WEZFUl9VRE1BXzEwMCA6IDApIHwNCisJCSAgKHc4MCAmJiAocGlpeF9jb25m
aWctPmZsYWdzICYgUElJWF9VRE1BKSA+PSBQSUlYX1VETUFfMTMzID8gWEZF
Ul9VRE1BXzEzMyA6IDApKSk7DQogDQotCXJldHVybiAwOw0KKwlyZXR1cm4g
bWFwOw0KIH0NCi0NCiAjZW5kaWYNCiANCiAvKg0KQEAgLTM2MCw5ICszNTIs
MTAgQEANCiB7DQogCWludCBpOw0KIA0KKwljaC0+dWRtYV9mb3VyID0gcGlp
eF9hdGE2Nl9jaGVjayhjaCk7DQorDQogCWNoLT50dW5lcHJvYyA9ICZwaWl4
X3R1bmVfZHJpdmU7DQogCWNoLT5zcGVlZHByb2MgPSAmcGlpeF9zZXRfZHJp
dmU7DQotCWNoLT5hdXRvZG1hID0gMDsNCiAJY2gtPmlvXzMyYml0ID0gMTsN
CiAJY2gtPnVubWFzayA9IDE7DQogCWZvciAoaSA9IDA7IGkgPCAyOyBpKysp
IHsNCkBAIC0zNzMsMTEgKzM2Niw4IEBADQogI2lmZGVmIENPTkZJR19CTEtf
REVWX0lERURNQQ0KIAlpZiAoY2gtPmRtYV9iYXNlKSB7DQogCQljaC0+aGln
aG1lbSA9IDE7DQotCQljaC0+dWRtYV9zZXR1cCA9IHBpaXhfdWRtYV9zZXR1
cDsNCi0jIGlmZGVmIENPTkZJR19JREVETUFfQVVUTw0KLQkJaWYgKCFub2F1
dG9kbWEpDQotCQkJY2gtPmF1dG9kbWEgPSAxOw0KLSMgZW5kaWYNCisJCWNo
LT5tb2Rlc19tYXAgPSBwaWl4X21vZGVzX21hcChjaCk7DQorCQljaC0+dWRt
YV9zZXR1cCA9IHVkbWFfZ2VuZXJpY19zZXR1cDsNCiAJfQ0KICNlbmRpZg0K
IH0NCkBAIC00MDEsNyArMzkxLDYgQEANCiAJCXZlbmRvcjogUENJX1ZFTkRP
Ul9JRF9JTlRFTCwNCiAJCWRldmljZTogUENJX0RFVklDRV9JRF9JTlRFTF84
MjM3MUZCXzEsDQogCQlpbml0X2NoaXBzZXQ6IHBpaXhfaW5pdF9jaGlwc2V0
LA0KLQkJYXRhNjZfY2hlY2s6IHBpaXhfYXRhNjZfY2hlY2ssDQogCQlpbml0
X2NoYW5uZWw6IHBpaXhfaW5pdF9jaGFubmVsLA0KIAkJaW5pdF9kbWE6IHBp
aXhfaW5pdF9kbWEsDQogCQllbmFibGViaXRzOiB7ezB4NDEsMHg4MCwweDgw
fSwgezB4NDMsMHg4MCwweDgwfX0sDQpAQCAtNDExLDcgKzQwMCw2IEBADQog
CQl2ZW5kb3I6IFBDSV9WRU5ET1JfSURfSU5URUwsDQogCQlkZXZpY2U6IFBD
SV9ERVZJQ0VfSURfSU5URUxfODIzNzFTQl8xLA0KIAkJaW5pdF9jaGlwc2V0
OiBwaWl4X2luaXRfY2hpcHNldCwNCi0JCWF0YTY2X2NoZWNrOiBwaWl4X2F0
YTY2X2NoZWNrLA0KIAkJaW5pdF9jaGFubmVsOiBwaWl4X2luaXRfY2hhbm5l
bCwNCiAJCWluaXRfZG1hOiBwaWl4X2luaXRfZG1hLA0KIAkJZW5hYmxlYml0
czoge3sweDQxLDB4ODAsMHg4MH0sIHsweDQzLDB4ODAsMHg4MH19LA0KQEAg
LTQyMSw3ICs0MDksNiBAQA0KIAkJdmVuZG9yOiBQQ0lfVkVORE9SX0lEX0lO
VEVMLA0KIAkJZGV2aWNlOiBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyMzcxQUIs
DQogCQlpbml0X2NoaXBzZXQ6IHBpaXhfaW5pdF9jaGlwc2V0LA0KLQkJYXRh
NjZfY2hlY2s6IHBpaXhfYXRhNjZfY2hlY2ssDQogCQlpbml0X2NoYW5uZWw6
IHBpaXhfaW5pdF9jaGFubmVsLA0KIAkJaW5pdF9kbWE6IHBpaXhfaW5pdF9k
bWEsDQogCQllbmFibGViaXRzOiB7ezB4NDEsMHg4MCwweDgwfSwgezB4NDMs
MHg4MCwweDgwfX0sDQpAQCAtNDMxLDcgKzQxOCw2IEBADQogCQl2ZW5kb3I6
IFBDSV9WRU5ET1JfSURfSU5URUwsDQogCQlkZXZpY2U6IFBDSV9ERVZJQ0Vf
SURfSU5URUxfODI0NDNNWF8xLA0KIAkJaW5pdF9jaGlwc2V0OiBwaWl4X2lu
aXRfY2hpcHNldCwNCi0JCWF0YTY2X2NoZWNrOiBwaWl4X2F0YTY2X2NoZWNr
LA0KIAkJaW5pdF9jaGFubmVsOiBwaWl4X2luaXRfY2hhbm5lbCwNCiAJCWlu
aXRfZG1hOiBwaWl4X2luaXRfZG1hLA0KIAkJZW5hYmxlYml0czoge3sweDQx
LDB4ODAsMHg4MH0sIHsweDQzLDB4ODAsMHg4MH19LA0KQEAgLTQ0MSw3ICs0
MjcsNiBAQA0KIAkJdmVuZG9yOiBQQ0lfVkVORE9SX0lEX0lOVEVMLA0KIAkJ
ZGV2aWNlOiBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyMzcyRkJfMSwNCiAJCWlu
aXRfY2hpcHNldDogcGlpeF9pbml0X2NoaXBzZXQsDQotCQlhdGE2Nl9jaGVj
azogcGlpeF9hdGE2Nl9jaGVjaywNCiAJCWluaXRfY2hhbm5lbDogcGlpeF9p
bml0X2NoYW5uZWwsDQogCQlpbml0X2RtYTogcGlpeF9pbml0X2RtYSwNCiAJ
CWVuYWJsZWJpdHM6IHt7MHg0MSwweDgwLDB4ODB9LCB7MHg0MywweDgwLDB4
ODB9fSwNCkBAIC00NTEsNyArNDM2LDYgQEANCiAJCXZlbmRvcjogUENJX1ZF
TkRPUl9JRF9JTlRFTCwNCiAJCWRldmljZTogUENJX0RFVklDRV9JRF9JTlRF
TF84MjgwMUFBXzEsDQogCQlpbml0X2NoaXBzZXQ6IHBpaXhfaW5pdF9jaGlw
c2V0LA0KLQkJYXRhNjZfY2hlY2s6IHBpaXhfYXRhNjZfY2hlY2ssDQogCQlp
bml0X2NoYW5uZWw6IHBpaXhfaW5pdF9jaGFubmVsLA0KIAkJaW5pdF9kbWE6
IHBpaXhfaW5pdF9kbWEsDQogCQllbmFibGViaXRzOiB7ezB4NDEsMHg4MCww
eDgwfSwgezB4NDMsMHg4MCwweDgwfX0sDQpAQCAtNDYxLDcgKzQ0NSw2IEBA
DQogCQl2ZW5kb3I6IFBDSV9WRU5ET1JfSURfSU5URUwsDQogCQlkZXZpY2U6
IFBDSV9ERVZJQ0VfSURfSU5URUxfODI4MDFBQl8xLA0KIAkJaW5pdF9jaGlw
c2V0OiBwaWl4X2luaXRfY2hpcHNldCwNCi0JCWF0YTY2X2NoZWNrOiBwaWl4
X2F0YTY2X2NoZWNrLA0KIAkJaW5pdF9jaGFubmVsOiBwaWl4X2luaXRfY2hh
bm5lbCwNCiAJCWluaXRfZG1hOiBwaWl4X2luaXRfZG1hLA0KIAkJZW5hYmxl
Yml0czoge3sweDQxLDB4ODAsMHg4MH0sIHsweDQzLDB4ODAsMHg4MH19LA0K
QEAgLTQ3MSw3ICs0NTQsNiBAQA0KIAkJdmVuZG9yOiBQQ0lfVkVORE9SX0lE
X0lOVEVMLA0KIAkJZGV2aWNlOiBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyODAx
QkFfOSwNCiAJCWluaXRfY2hpcHNldDogcGlpeF9pbml0X2NoaXBzZXQsDQot
CQlhdGE2Nl9jaGVjazogcGlpeF9hdGE2Nl9jaGVjaywNCiAJCWluaXRfY2hh
bm5lbDogcGlpeF9pbml0X2NoYW5uZWwsDQogCQlpbml0X2RtYTogcGlpeF9p
bml0X2RtYSwNCiAJCWVuYWJsZWJpdHM6IHt7MHg0MSwweDgwLDB4ODB9LCB7
MHg0MywweDgwLDB4ODB9fSwNCkBAIC00ODEsNyArNDYzLDYgQEANCiAJCXZl
bmRvcjogUENJX1ZFTkRPUl9JRF9JTlRFTCwNCiAJCWRldmljZTogUENJX0RF
VklDRV9JRF9JTlRFTF84MjgwMUJBXzgsDQogCQlpbml0X2NoaXBzZXQ6IHBp
aXhfaW5pdF9jaGlwc2V0LA0KLQkJYXRhNjZfY2hlY2s6IHBpaXhfYXRhNjZf
Y2hlY2ssDQogCQlpbml0X2NoYW5uZWw6IHBpaXhfaW5pdF9jaGFubmVsLA0K
IAkJaW5pdF9kbWE6IHBpaXhfaW5pdF9kbWEsDQogCQllbmFibGViaXRzOiB7
ezB4NDEsMHg4MCwweDgwfSwgezB4NDMsMHg4MCwweDgwfX0sDQpAQCAtNDkx
LDcgKzQ3Miw2IEBADQogCQl2ZW5kb3I6IFBDSV9WRU5ET1JfSURfSU5URUws
DQogCQlkZXZpY2U6IFBDSV9ERVZJQ0VfSURfSU5URUxfODI4MDFFXzksDQog
CQlpbml0X2NoaXBzZXQ6IHBpaXhfaW5pdF9jaGlwc2V0LA0KLQkJYXRhNjZf
Y2hlY2s6IHBpaXhfYXRhNjZfY2hlY2ssDQogCQlpbml0X2NoYW5uZWw6IHBp
aXhfaW5pdF9jaGFubmVsLA0KIAkJaW5pdF9kbWE6IHBpaXhfaW5pdF9kbWEs
DQogCQllbmFibGViaXRzOiB7ezB4NDEsMHg4MCwweDgwfSwgezB4NDMsMHg4
MCwweDgwfX0sDQpAQCAtNTAxLDcgKzQ4MSw2IEBADQogCQl2ZW5kb3I6IFBD
SV9WRU5ET1JfSURfSU5URUwsDQogCQlkZXZpY2U6IFBDSV9ERVZJQ0VfSURf
SU5URUxfODI4MDFDQV8xMCwNCiAJCWluaXRfY2hpcHNldDogcGlpeF9pbml0
X2NoaXBzZXQsDQotCQlhdGE2Nl9jaGVjazogcGlpeF9hdGE2Nl9jaGVjaywN
CiAJCWluaXRfY2hhbm5lbDogcGlpeF9pbml0X2NoYW5uZWwsDQogCQlpbml0
X2RtYTogcGlpeF9pbml0X2RtYSwNCiAJCWVuYWJsZWJpdHM6IHt7MHg0MSww
eDgwLDB4ODB9LCB7MHg0MywweDgwLDB4ODB9fSwNCkBAIC01MTEsNyArNDkw
LDYgQEANCiAJCXZlbmRvcjogUENJX1ZFTkRPUl9JRF9JTlRFTCwNCiAJCWRl
dmljZTogUENJX0RFVklDRV9JRF9JTlRFTF84MjgwMUNBXzExLA0KIAkJaW5p
dF9jaGlwc2V0OiBwaWl4X2luaXRfY2hpcHNldCwNCi0JCWF0YTY2X2NoZWNr
OiBwaWl4X2F0YTY2X2NoZWNrLA0KIAkJaW5pdF9jaGFubmVsOiBwaWl4X2lu
aXRfY2hhbm5lbCwNCiAJCWluaXRfZG1hOiBwaWl4X2luaXRfZG1hLA0KIAkJ
ZW5hYmxlYml0czoge3sweDQxLDB4ODAsMHg4MH0sIHsweDQzLDB4ODAsMHg4
MH19LA0KQEAgLTUyMSw3ICs0OTksNiBAQA0KIAkJdmVuZG9yOiBQQ0lfVkVO
RE9SX0lEX0lOVEVMLA0KIAkJZGV2aWNlOiBQQ0lfREVWSUNFX0lEX0lOVEVM
XzgyODAxREJfOSwNCiAJCWluaXRfY2hpcHNldDogcGlpeF9pbml0X2NoaXBz
ZXQsDQotCQlhdGE2Nl9jaGVjazogcGlpeF9hdGE2Nl9jaGVjaywNCiAJCWlu
aXRfY2hhbm5lbDogcGlpeF9pbml0X2NoYW5uZWwsDQogCQlpbml0X2RtYTog
cGlpeF9pbml0X2RtYSwNCiAJCWVuYWJsZWJpdHM6IHt7MHg0MSwweDgwLDB4
ODB9LCB7MHg0MywweDgwLDB4ODB9fSwNCkBAIC01MzEsNyArNTA4LDYgQEAN
CiAJCXZlbmRvcjogUENJX1ZFTkRPUl9JRF9FRkFSLA0KIAkJZGV2aWNlOiBQ
Q0lfREVWSUNFX0lEX0VGQVJfU0xDOTBFNjZfMSwNCiAJCWluaXRfY2hpcHNl
dDogcGlpeF9pbml0X2NoaXBzZXQsDQotCQlhdGE2Nl9jaGVjazogcGlpeF9h
dGE2Nl9jaGVjaywNCiAJCWluaXRfY2hhbm5lbDogcGlpeF9pbml0X2NoYW5u
ZWwsDQogCQlpbml0X2RtYTogcGlpeF9pbml0X2RtYSwNCiAJCWVuYWJsZWJp
dHM6IHt7MHg0MSwweDgwLDB4ODB9LCB7MHg0MywweDgwLDB4ODB9fSwNCmRp
ZmYgLXVyIC1YZG9udGRpZmYgbGludXgtMi41LjI0L2RyaXZlcnMvaWRlL3Nl
cnZlcndvcmtzLmMgbGludXgvZHJpdmVycy9pZGUvc2VydmVyd29ya3MuYw0K
LS0tIGxpbnV4LTIuNS4yNC9kcml2ZXJzL2lkZS9zZXJ2ZXJ3b3Jrcy5jCVR1
ZSBKdW4gMjUgMjI6NDY6NDMgMjAwMg0KKysrIGxpbnV4L2RyaXZlcnMvaWRl
L3NlcnZlcndvcmtzLmMJVHVlIEp1bCAgMiAyMzo1NDoxNiAyMDAyDQpAQCAt
MTAzLDE1ICsxMDMsMTEgQEANCiANCiBzdGF0aWMgc3RydWN0IHBjaV9kZXYg
KmlzYV9kZXY7DQogDQotc3RhdGljIGludCBzdndrc19yYXRlbWFzayhzdHJ1
Y3QgYXRhX2RldmljZSAqZHJpdmUpDQorc3RhdGljIGludCBfX2luaXQgc3Z3
a3NfbW9kZXNfbWFwKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2gpDQogew0KLQlz
dHJ1Y3QgcGNpX2RldiAqZGV2ID0gZHJpdmUtPmNoYW5uZWwtPnBjaV9kZXY7
DQotCWludCBtYXAgPSAwOw0KKwlpbnQgbWFwID0gWEZFUl9FUElPIHwgWEZF
Ul9NV0RNQTsNCiANCi0JaWYgKCFlaWdodHlfbmludHlfdGhyZWUoZHJpdmUp
KQ0KLQkJcmV0dXJuIFhGRVJfVURNQTsNCi0NCi0Jc3dpdGNoKGRldi0+ZGV2
aWNlKSB7DQorCXN3aXRjaChjaC0+cGNpX2Rldi0+ZGV2aWNlKSB7DQogCQlj
YXNlIFBDSV9ERVZJQ0VfSURfU0VSVkVSV09SS1NfQ1NCNUlERToNCiAJCQlp
ZiAoc3Z3a3NfcmV2aXNpb24gPj0gU1ZXS1NfQ1NCNV9SRVZJU0lPTl9ORVcp
DQogCQkJCW1hcCB8PSBYRkVSX1VETUFfMTAwOw0KQEAgLTEyMCw2ICsxMTYs
NyBAQA0KIAkJCW1hcCB8PSBYRkVSX1VETUE7DQogCQkJYnJlYWs7DQogCX0N
CisNCiAJcmV0dXJuIG1hcDsNCiB9DQogDQpAQCAtMTc2LDYgKzE3Myw3IEBA
DQogCQkJY3NiNV9waW8gICB8PSAoKHNwZWVkIC0gWEZFUl9QSU9fMCkgPDwg
KDQqZHJpdmUtPmRuKSk7DQogCQkJYnJlYWs7DQogDQorCQkvKiBGSVhNRTog
Y2hlY2sgU1dETUEgbW9kZXMgIC0tYmt6ICovDQogI2lmZGVmIENPTkZJR19C
TEtfREVWX0lERURNQQ0KIAkJY2FzZSBYRkVSX01XX0RNQV8yOg0KIAkJY2Fz
ZSBYRkVSX01XX0RNQV8xOg0KQEAgLTIyNCw3OSArMjIyLDEzIEBADQogCXJl
dHVybiBpZGVfY29uZmlnX2RyaXZlX3NwZWVkKGRyaXZlLCBzcGVlZCk7DQog
fQ0KIA0KKy8qIEZJWE1FOiBwaW8gPT0gMjU1IC0+IGF0YV9iZXN0X3Bpb19t
b2RlKGRyaXZlKSAgLS1ia3ogKi8NCiBzdGF0aWMgdm9pZCBzdndrc190dW5l
X2RyaXZlKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSwgdTggcGlvKQ0KIHsN
CiAJKHZvaWQpIHN2d2tzX3R1bmVfY2hpcHNldChkcml2ZSwgWEZFUl9QSU9f
MCArIG1pbl90KHU4LCBwaW8sIDQpKTsNCiB9DQogDQogI2lmZGVmIENPTkZJ
R19CTEtfREVWX0lERURNQQ0KLXN0YXRpYyBpbnQgY29uZmlnX2NoaXBzZXRf
Zm9yX2RtYShzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUpDQotew0KLQlpbnQg
bWFwOw0KLQl1OCBtb2RlOw0KLQ0KLQkvKiBGSVhNRTogY2hlY2sgU1dETUEg
bW9kZXMgLS1ia3ogKi8NCi0JbWFwID0gWEZFUl9NV0RNQSB8IHN2d2tzX3Jh
dGVtYXNrKGRyaXZlKTsNCi0JbW9kZSA9IGF0YV90aW1pbmdfbW9kZShkcml2
ZSwgbWFwKTsNCi0NCi0JcmV0dXJuICFzdndrc190dW5lX2NoaXBzZXQoZHJp
dmUsIG1vZGUpOw0KLX0NCi0NCi1zdGF0aWMgaW50IHN2d2tzX3VkbWFfc2V0
dXAoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlKQ0KLXsNCi0Jc3RydWN0IGhk
X2RyaXZlaWQgKmlkID0gZHJpdmUtPmlkOw0KLQlpbnQgb24gPSAxOw0KLQlp
bnQgdmVyYm9zZSA9IDE7DQotDQotCWlmIChpZCAmJiAoaWQtPmNhcGFiaWxp
dHkgJiAxKSAmJiBkcml2ZS0+Y2hhbm5lbC0+YXV0b2RtYSkgew0KLQkJLyog
Q29uc3VsdCB0aGUgbGlzdCBvZiBrbm93biAiYmFkIiBkcml2ZXMgKi8NCi0J
CWlmICh1ZG1hX2JsYWNrX2xpc3QoZHJpdmUpKSB7DQotCQkJb24gPSAwOw0K
LQkJCWdvdG8gZmFzdF9hdGFfcGlvOw0KLQkJfQ0KLQkJb24gPSAwOw0KLQkJ
dmVyYm9zZSA9IDA7DQotCQlpZiAoaWQtPmZpZWxkX3ZhbGlkICYgNCkgew0K
LQkJCWlmIChpZC0+ZG1hX3VsdHJhICYgMHgwMDNGKSB7DQotCQkJCS8qIEZv
cmNlIGlmIENhcGFibGUgVWx0cmFETUEgKi8NCi0JCQkJb24gPSBjb25maWdf
Y2hpcHNldF9mb3JfZG1hKGRyaXZlKTsNCi0JCQkJaWYgKChpZC0+ZmllbGRf
dmFsaWQgJiAyKSAmJg0KLQkJCQkgICAgKCFvbikpDQotCQkJCQlnb3RvIHRy
eV9kbWFfbW9kZXM7DQotCQkJfQ0KLQkJfSBlbHNlIGlmIChpZC0+ZmllbGRf
dmFsaWQgJiAyKSB7DQotdHJ5X2RtYV9tb2RlczoNCi0JCQlpZiAoKGlkLT5k
bWFfbXdvcmQgJiAweDAwMDcpIHx8DQotCQkJICAgIChpZC0+ZG1hXzF3b3Jk
ICYgMHgwMDcpKSB7DQotCQkJCS8qIEZvcmNlIGlmIENhcGFibGUgcmVndWxh
ciBETUEgbW9kZXMgKi8NCi0JCQkJb24gPSBjb25maWdfY2hpcHNldF9mb3Jf
ZG1hKGRyaXZlKTsNCi0JCQkJaWYgKCFvbikNCi0JCQkJCWdvdG8gbm9fZG1h
X3NldDsNCi0JCQl9DQotCQl9IGVsc2UgaWYgKHVkbWFfd2hpdGVfbGlzdChk
cml2ZSkpIHsNCi0JCQlpZiAoaWQtPmVpZGVfZG1hX3RpbWUgPiAxNTApIHsN
Ci0JCQkJZ290byBub19kbWFfc2V0Ow0KLQkJCX0NCi0JCQkvKiBDb25zdWx0
IHRoZSBsaXN0IG9mIGtub3duICJnb29kIiBkcml2ZXMgKi8NCi0JCQlvbiA9
IGNvbmZpZ19jaGlwc2V0X2Zvcl9kbWEoZHJpdmUpOw0KLQkJCWlmICghb24p
DQotCQkJCWdvdG8gbm9fZG1hX3NldDsNCi0JCX0gZWxzZSB7DQotCQkJZ290
byBmYXN0X2F0YV9waW87DQotCQl9DQotCX0gZWxzZSBpZiAoKGlkLT5jYXBh
YmlsaXR5ICYgOCkgfHwgKGlkLT5maWVsZF92YWxpZCAmIDIpKSB7DQotZmFz
dF9hdGFfcGlvOg0KLQkJb24gPSAwOw0KLQkJdmVyYm9zZSA9IDA7DQotbm9f
ZG1hX3NldDoNCi0JCXN2d2tzX3R1bmVfY2hpcHNldChkcml2ZSwgYXRhX2Jl
c3RfcGlvX21vZGUoZHJpdmUpKTsNCi0JfQ0KLQ0KLQl1ZG1hX2VuYWJsZShk
cml2ZSwgb24sIHZlcmJvc2UpOw0KLQ0KLQlyZXR1cm4gMDsNCi19DQotDQog
c3RhdGljIGludCBzdndrc191ZG1hX3N0b3Aoc3RydWN0IGF0YV9kZXZpY2Ug
KmRyaXZlKQ0KIHsNCiAJc3RydWN0IGF0YV9jaGFubmVsICpjaCA9IGRyaXZl
LT5jaGFubmVsOw0KQEAgLTQzNywyNCArMzY5LDIxIEBADQogCWlmICghaHdp
Zi0+aXJxKQ0KIAkJaHdpZi0+aXJxID0gaHdpZi0+dW5pdCA/IDE1IDogMTQ7
DQogDQorCWh3aWYtPnVkbWFfZm91ciA9IHN2d2tzX2F0YTY2X2NoZWNrKGh3
aWYpOw0KKw0KIAlod2lmLT50dW5lcHJvYyA9ICZzdndrc190dW5lX2RyaXZl
Ow0KIAlod2lmLT5zcGVlZHByb2MgPSAmc3Z3a3NfdHVuZV9jaGlwc2V0Ow0K
IA0KICNpZm5kZWYgQ09ORklHX0JMS19ERVZfSURFRE1BDQogCWh3aWYtPmRy
aXZlc1swXS5hdXRvdHVuZSA9IDE7DQogCWh3aWYtPmRyaXZlc1sxXS5hdXRv
dHVuZSA9IDE7DQotCWh3aWYtPmF1dG9kbWEgPSAwOw0KICNlbHNlDQogCWlm
IChod2lmLT5kbWFfYmFzZSkgew0KLSNpZmRlZiBDT05GSUdfSURFRE1BX0FV
VE8NCi0JCWlmICghbm9hdXRvZG1hKQ0KLQkJCWh3aWYtPmF1dG9kbWEgPSAx
Ow0KLSNlbmRpZg0KKwkJaHdpZi0+bW9kZXNfbWFwID0gc3Z3a3NfbW9kZXNf
bWFwKGh3aWYpOw0KKwkJaHdpZi0+dWRtYV9zZXR1cCA9IHVkbWFfZ2VuZXJp
Y19zZXR1cDsNCiAJCWh3aWYtPnVkbWFfc3RvcCA9IHN2d2tzX3VkbWFfc3Rv
cDsNCi0JCWh3aWYtPnVkbWFfc2V0dXAgPSBzdndrc191ZG1hX3NldHVwOw0K
IAkJaHdpZi0+aGlnaG1lbSA9IDE7DQogCX0gZWxzZSB7DQotCQlod2lmLT5h
dXRvZG1hID0gMDsNCiAJCWh3aWYtPmRyaXZlc1swXS5hdXRvdHVuZSA9IDE7
DQogCQlod2lmLT5kcml2ZXNbMV0uYXV0b3R1bmUgPSAxOw0KIAl9DQpAQCAt
NDY4LDcgKzM5Nyw2IEBADQogCQl2ZW5kb3I6IFBDSV9WRU5ET1JfSURfU0VS
VkVSV09SS1MsDQogCQlkZXZpY2U6IFBDSV9ERVZJQ0VfSURfU0VSVkVSV09S
S1NfT1NCNElERSwNCiAJCWluaXRfY2hpcHNldDogc3Z3a3NfaW5pdF9jaGlw
c2V0LA0KLQkJYXRhNjZfY2hlY2s6IHN2d2tzX2F0YTY2X2NoZWNrLA0KIAkJ
aW5pdF9jaGFubmVsOiBpZGVfaW5pdF9zdndrcywNCiAJCWJvb3RhYmxlOiBP
Tl9CT0FSRCwNCiAJCWZsYWdzOiBBVEFfRl9ETUENCkBAIC00NzcsNyArNDA1
LDYgQEANCiAJCXZlbmRvcjogUENJX1ZFTkRPUl9JRF9TRVJWRVJXT1JLUywN
CiAJCWRldmljZTogUENJX0RFVklDRV9JRF9TRVJWRVJXT1JLU19DU0I1SURF
LA0KIAkJaW5pdF9jaGlwc2V0OiBzdndrc19pbml0X2NoaXBzZXQsDQotCQlh
dGE2Nl9jaGVjazogc3Z3a3NfYXRhNjZfY2hlY2ssDQogCQlpbml0X2NoYW5u
ZWw6IGlkZV9pbml0X3N2d2tzLA0KIAkJYm9vdGFibGU6IE9OX0JPQVJELA0K
IAkJZmxhZ3M6IEFUQV9GX1NJTVBMRVgNCmRpZmYgLXVyIC1YZG9udGRpZmYg
bGludXgtMi41LjI0L2RyaXZlcnMvaWRlL3NpczU1MTMuYyBsaW51eC9kcml2
ZXJzL2lkZS9zaXM1NTEzLmMNCi0tLSBsaW51eC0yLjUuMjQvZHJpdmVycy9p
ZGUvc2lzNTUxMy5jCVR1ZSBKdW4gMjUgMjI6NDY6NDMgMjAwMg0KKysrIGxp
bnV4L2RyaXZlcnMvaWRlL3NpczU1MTMuYwlUdWUgSnVsICAyIDIzOjU0OjE2
IDIwMDINCkBAIC0yMDcsOSArMjA3LDkgQEANCiANCiBzdGF0aWMgc3RydWN0
IHBjaV9kZXYgKmhvc3RfZGV2ID0gTlVMTDsNCiANCi1zdGF0aWMgaW50IHNp
czU1MTNfcmF0ZW1hc2soc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlKQ0KK3N0
YXRpYyBpbnQgX19pbml0IHNpczU1MTNfbW9kZXNfbWFwKHN0cnVjdCBhdGFf
Y2hhbm5lbCAqY2gpDQogew0KLQlpbnQgbWFwID0gMDsNCisJaW50IG1hcCA9
IFhGRVJfRVBJTyB8IFhGRVJfU1dETUEgfCBYRkVSX01XRE1BOw0KIA0KIAlz
d2l0Y2goY2hpcHNldF9mYW1pbHkpIHsNCiAJCWNhc2UgQVRBXzEzMzoJLyog
bWFwIHw9IFhGRVJfVURNQV8xMzM7ICovDQpAQCAtMjIxLDE1ICsyMjEsOCBA
QA0KIAkJY2FzZSBBVEFfMzM6DQogCQkJbWFwIHw9IFhGRVJfVURNQTsNCiAJ
CQlicmVhazsNCi0JCWNhc2UgQVRBXzE2Og0KLQkJY2FzZSBBVEFfMDA6DQot
CQlkZWZhdWx0Og0KLQkJCXJldHVybiAwOw0KIAl9DQogDQotCWlmICghZWln
aHR5X25pbnR5X3RocmVlKGRyaXZlKSkNCi0JCXJldHVybiBYRkVSX1VETUE7
DQotDQogCXJldHVybiBtYXA7DQogfQ0KIA0KQEAgLTQwNCw4NiArMzk3LDYg
QEANCiAJKHZvaWQpY29uZmlnX2FydF9yd3BfcGlvKGRyaXZlLCBtaW5fdCh1
OCwgcGlvLCA0KSk7DQogfQ0KIA0KLSNpZmRlZiBDT05GSUdfQkxLX0RFVl9J
REVETUENCi1zdGF0aWMgaW50IGNvbmZpZ19jaGlwc2V0X2Zvcl9kbWEoc3Ry
dWN0IGF0YV9kZXZpY2UgKmRyaXZlLCB1OCB1ZG1hKQ0KLXsNCi0JaW50IG1h
cDsNCi0JdTggbW9kZTsNCi0NCi0jaWZkZWYgREVCVUcNCi0JcHJpbnRrKCJT
SVM1NTEzOiBjb25maWdfY2hpcHNldF9mb3JfZG1hLCBkcml2ZSAlZCwgdWRt
YSAlZFxuIiwNCi0JICAgICAgIGRyaXZlLT5kbiwgdWRtYSk7DQotI2VuZGlm
DQotDQotCWlmICh1ZG1hKQ0KLQkJbWFwID0gc2lzNTUxM19yYXRlbWFzayhk
cml2ZSk7DQotCWVsc2UNCi0JCW1hcCA9IFhGRVJfU1dETUEgfCBYRkVSX01X
RE1BOw0KLQ0KLQltb2RlID0gYXRhX3RpbWluZ19tb2RlKGRyaXZlLCBtYXAp
Ow0KLQlpZiAobW9kZSA8IFhGRVJfU1dfRE1BXzApDQotCQlyZXR1cm4gMDsN
Ci0NCi0JcmV0dXJuICFzaXM1NTEzX3R1bmVfY2hpcHNldChkcml2ZSwgbW9k
ZSk7DQotfQ0KLQ0KLXN0YXRpYyBpbnQgc2lzNTUxM191ZG1hX3NldHVwKHN0
cnVjdCBhdGFfZGV2aWNlICpkcml2ZSkNCi17DQotCXN0cnVjdCBoZF9kcml2
ZWlkICppZCA9IGRyaXZlLT5pZDsNCi0JaW50IG9uID0gMDsNCi0JaW50IHZl
cmJvc2UgPSAxOw0KLQ0KLQljb25maWdfZHJpdmVfYXJ0X3J3cChkcml2ZSk7
DQotCXNpczU1MTNfdHVuZV9kcml2ZShkcml2ZSwgMjU1KTsNCi0NCi0JaWYg
KGlkICYmIChpZC0+Y2FwYWJpbGl0eSAmIDEpICYmIGRyaXZlLT5jaGFubmVs
LT5hdXRvZG1hKSB7DQotCQkvKiBDb25zdWx0IHRoZSBsaXN0IG9mIGtub3du
ICJiYWQiIGRyaXZlcyAqLw0KLQkJaWYgKHVkbWFfYmxhY2tfbGlzdChkcml2
ZSkpIHsNCi0JCQlvbiA9IDA7DQotCQkJZ290byBmYXN0X2F0YV9waW87DQot
CQl9DQotCQlvbiA9IDA7DQotCQl2ZXJib3NlID0gMDsNCi0JCWlmIChpZC0+
ZmllbGRfdmFsaWQgJiA0KSB7DQotCQkJaWYgKGlkLT5kbWFfdWx0cmEgJiAw
eDAwM0YpIHsNCi0JCQkJLyogRm9yY2UgaWYgQ2FwYWJsZSBVbHRyYURNQSAq
Lw0KLQkJCQlvbiA9IGNvbmZpZ19jaGlwc2V0X2Zvcl9kbWEoZHJpdmUsIDEp
Ow0KLQkJCQlpZiAoKGlkLT5maWVsZF92YWxpZCAmIDIpICYmDQotCQkJCSAg
ICAoIW9uKSkNCi0JCQkJCWdvdG8gdHJ5X2RtYV9tb2RlczsNCi0JCQl9DQot
CQl9IGVsc2UgaWYgKGlkLT5maWVsZF92YWxpZCAmIDIpIHsNCi10cnlfZG1h
X21vZGVzOg0KLQkJCWlmICgoaWQtPmRtYV9td29yZCAmIDB4MDAwNykgfHwN
Ci0JCQkgICAgKGlkLT5kbWFfMXdvcmQgJiAweDAwMDcpKSB7DQotCQkJCS8q
IEZvcmNlIGlmIENhcGFibGUgcmVndWxhciBETUEgbW9kZXMgKi8NCi0JCQkJ
b24gPSBjb25maWdfY2hpcHNldF9mb3JfZG1hKGRyaXZlLCAwKTsNCi0JCQkJ
aWYgKCFvbikNCi0JCQkJCWdvdG8gbm9fZG1hX3NldDsNCi0JCQl9DQotCQl9
IGVsc2UgaWYgKCh1ZG1hX3doaXRlX2xpc3QoZHJpdmUpKSAmJg0KLQkJCSAg
IChpZC0+ZWlkZV9kbWFfdGltZSA+IDE1MCkpIHsNCi0JCQkvKiBDb25zdWx0
IHRoZSBsaXN0IG9mIGtub3duICJnb29kIiBkcml2ZXMgKi8NCi0JCQlvbiA9
IGNvbmZpZ19jaGlwc2V0X2Zvcl9kbWEoZHJpdmUsIDApOw0KLQkJCWlmICgh
b24pDQotCQkJCWdvdG8gbm9fZG1hX3NldDsNCi0JCX0gZWxzZSB7DQotCQkJ
Z290byBmYXN0X2F0YV9waW87DQotCQl9DQotCX0gZWxzZSBpZiAoKGlkLT5j
YXBhYmlsaXR5ICYgOCkgfHwgKGlkLT5maWVsZF92YWxpZCAmIDIpKSB7DQot
ZmFzdF9hdGFfcGlvOg0KLQkJb24gPSAwOw0KLQkJdmVyYm9zZSA9IDA7DQot
bm9fZG1hX3NldDoNCi0JCXNpczU1MTNfdHVuZV9kcml2ZShkcml2ZSwgMjU1
KTsNCi0JfQ0KLQ0KLQl1ZG1hX2VuYWJsZShkcml2ZSwgb24sIHZlcmJvc2Up
Ow0KLQ0KLQlyZXR1cm4gMDsNCi19DQotI2VuZGlmDQotDQogLyogQ2hpcCBk
ZXRlY3Rpb24gYW5kIGdlbmVyYWwgY29uZmlnICovDQogc3RhdGljIHVuc2ln
bmVkIGludCBfX2luaXQgcGNpX2luaXRfc2lzNTUxMyhzdHJ1Y3QgcGNpX2Rl
diAqZGV2KQ0KIHsNCkBAIC01NzYsMjUgKzQ4OSwxOSBAQA0KIA0KIAlod2lm
LT5pcnEgPSBod2lmLT51bml0ID8gMTUgOiAxNDsNCiANCisJaHdpZi0+dWRt
YV9mb3VyID0gYXRhNjZfc2lzNTUxMyhod2lmKTsNCisNCiAJaHdpZi0+dHVu
ZXByb2MgPSAmc2lzNTUxM190dW5lX2RyaXZlOw0KIAlod2lmLT5zcGVlZHBy
b2MgPSAmc2lzNTUxM190dW5lX2NoaXBzZXQ7DQogDQotCWlmICghKGh3aWYt
PmRtYV9iYXNlKSkNCi0JCXJldHVybjsNCi0NCi0JaWYgKGhvc3RfZGV2KSB7
DQotI2lmZGVmIENPTkZJR19CTEtfREVWX0lERURNQQ0KLQkJaWYgKGNoaXBz
ZXRfZmFtaWx5ID4gQVRBXzE2KSB7DQotCQkJaHdpZi0+YXV0b2RtYSA9IG5v
YXV0b2RtYSA/IDAgOiAxOw0KLQkJCWh3aWYtPmhpZ2htZW0gPSAxOw0KLQkJ
CWh3aWYtPnVkbWFfc2V0dXAgPSBzaXM1NTEzX3VkbWFfc2V0dXA7DQotCQl9
IGVsc2Ugew0KLSNlbmRpZg0KLQkJCWh3aWYtPmF1dG9kbWEgPSAwOw0KICNp
ZmRlZiBDT05GSUdfQkxLX0RFVl9JREVETUENCi0JCX0NCi0jZW5kaWYNCisJ
aWYgKGh3aWYtPmRtYV9iYXNlICYmIGhvc3RfZGV2ICYmIGNoaXBzZXRfZmFt
aWx5ID4gQVRBXzE2KSB7DQorCQlod2lmLT5oaWdobWVtID0gMTsNCisJCWh3
aWYtPm1vZGVzX21hcCA9IHNpczU1MTNfbW9kZXNfbWFwKGh3aWYpOw0KKwkJ
aHdpZi0+dWRtYV9zZXR1cCA9IHVkbWFfZ2VuZXJpY19zZXR1cDsNCiAJfQ0K
KyNlbmRpZg0KKw0KIAlyZXR1cm47DQogfQ0KIA0KQEAgLTYwNCwxMSArNTEx
LDkgQEANCiAJdmVuZG9yOiBQQ0lfVkVORE9SX0lEX1NJLA0KIAlkZXZpY2U6
IFBDSV9ERVZJQ0VfSURfU0lfNTUxMywNCiAJaW5pdF9jaGlwc2V0OiBwY2lf
aW5pdF9zaXM1NTEzLA0KLQlhdGE2Nl9jaGVjazogYXRhNjZfc2lzNTUxMywN
CiAJaW5pdF9jaGFubmVsOiBpZGVfaW5pdF9zaXM1NTEzLA0KIAllbmFibGVi
aXRzOiB7ezB4NGEsMHgwMiwweDAyfSwgezB4NGEsMHgwNCwweDA0fSB9LA0K
IAlib290YWJsZTogT05fQk9BUkQsDQotCWZsYWdzOiBBVEFfRl9OT0FETUEN
CiB9Ow0KIA0KIGludCBfX2luaXQgaW5pdF9zaXM1NTEzKHZvaWQpDQpkaWZm
IC11ciAtWGRvbnRkaWZmIGxpbnV4LTIuNS4yNC9kcml2ZXJzL2lkZS9zbDgy
YzEwNS5jIGxpbnV4L2RyaXZlcnMvaWRlL3NsODJjMTA1LmMNCi0tLSBsaW51
eC0yLjUuMjQvZHJpdmVycy9pZGUvc2w4MmMxMDUuYwlUdWUgSnVuIDI1IDIy
OjQ2OjAyIDIwMDINCisrKyBsaW51eC9kcml2ZXJzL2lkZS9zbDgyYzEwNS5j
CVR1ZSBKdWwgIDIgMjM6NTQ6MDcgMjAwMg0KQEAgLTEzMCw3ICsxMzAsNyBA
QA0KICAqIENoZWNrIHRvIHNlZSBpZiB0aGUgZHJpdmUgYW5kDQogICogY2hp
cHNldCBpcyBjYXBhYmxlIG9mIERNQSBtb2RlDQogICovDQotc3RhdGljIGlu
dCBzbDgyYzEwNV9kbWFfc2V0dXAoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZl
KQ0KK3N0YXRpYyBpbnQgc2w4MmMxMDVfZG1hX3NldHVwKHN0cnVjdCBhdGFf
ZGV2aWNlICpkcml2ZSwgaW50IG1hcCkNCiB7DQogCWludCBvbiA9IDA7DQog
DQpAQCAtMzMzLDcgKzMzMyw2IEBADQogCQlkbWFfc3RhdGUgJj0gfjB4NjA7
DQogCX0gZWxzZSB7DQogCQlkbWFfc3RhdGUgfD0gMHg2MDsNCi0JCWNoLT5h
dXRvZG1hID0gMTsNCiAJfQ0KIAlvdXRiKGRtYV9zdGF0ZSwgZG1hX2Jhc2Ug
KyAyKTsNCiANCmRpZmYgLXVyIC1YZG9udGRpZmYgbGludXgtMi41LjI0L2Ry
aXZlcnMvaWRlL3RybTI5MC5jIGxpbnV4L2RyaXZlcnMvaWRlL3RybTI5MC5j
DQotLS0gbGludXgtMi41LjI0L2RyaXZlcnMvaWRlL3RybTI5MC5jCVR1ZSBK
dW4gMjUgMjI6NDY6MDIgMjAwMg0KKysrIGxpbnV4L2RyaXZlcnMvaWRlL3Ry
bTI5MC5jCVR1ZSBKdWwgIDIgMjM6NTQ6MDcgMjAwMg0KQEAgLTIzOSw5ICsy
MzksOSBAQA0KIAlyZXR1cm4gKGludyhkcml2ZS0+Y2hhbm5lbC0+ZG1hX2Jh
c2UgKyAyKSA9PSAweDAwZmYpOw0KIH0NCiANCi1zdGF0aWMgaW50IHRybTI5
MF91ZG1hX3NldHVwKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSkNCitzdGF0
aWMgaW50IHRybTI5MF91ZG1hX3NldHVwKHN0cnVjdCBhdGFfZGV2aWNlICpk
cml2ZSwgaW50IG1hcCkNCiB7DQotCXJldHVybiB1ZG1hX3BjaV9zZXR1cChk
cml2ZSk7DQorCXJldHVybiB1ZG1hX3BjaV9zZXR1cChkcml2ZSwgbWFwKTsN
CiB9DQogI2VuZGlmDQogDQpAQCAtMzAzLDcgKzMwMyw2IEBADQogI2VuZGlm
DQogDQogCWh3aWYtPnNlbGVjdHByb2MgPSAmdHJtMjkwX3NlbGVjdHByb2M7
DQotCWh3aWYtPmF1dG9kbWEgPSAwOwkJCQkvKiBwbGF5IGl0IHNhZmUgZm9y
IG5vdyAqLw0KICNpZiAxDQogCXsNCiAJCS8qDQpkaWZmIC11ciAtWGRvbnRk
aWZmIGxpbnV4LTIuNS4yNC9kcml2ZXJzL2lkZS92aWE4MmN4eHguYyBsaW51
eC9kcml2ZXJzL2lkZS92aWE4MmN4eHguYw0KLS0tIGxpbnV4LTIuNS4yNC9k
cml2ZXJzL2lkZS92aWE4MmN4eHguYwlUdWUgSnVuIDI1IDIyOjQ2OjA1IDIw
MDINCisrKyBsaW51eC9kcml2ZXJzL2lkZS92aWE4MmN4eHguYwlUdWUgSnVs
ICAyIDIzOjU0OjE2IDIwMDINCkBAIC0yMjEsMjIgKzIyMSwxNiBAQA0KIH0N
CiANCiAjaWZkZWYgQ09ORklHX0JMS19ERVZfSURFRE1BDQotc3RhdGljIGlu
dCB2aWE4MmN4eHhfdWRtYV9zZXR1cChzdHJ1Y3QgYXRhX2RldmljZSAqZHJp
dmUpDQorc3RhdGljIGludCBfX2luaXQgdmlhX21vZGVzX21hcChzdHJ1Y3Qg
YXRhX2NoYW5uZWwgKmNoKQ0KIHsNCi0Jc2hvcnQgdzgwID0gZHJpdmUtPmNo
YW5uZWwtPnVkbWFfZm91cjsNCisJc2hvcnQgdzgwID0gY2gtPnVkbWFfZm91
cjsNCisJaW50IG1hcCA9IFhGRVJfRVBJTyB8IFhGRVJfU1dETUEgfCBYRkVS
X01XRE1BIHwNCisJCSAgKHZpYV9jb25maWctPmZsYWdzICYgVklBX1VETUEg
PyBYRkVSX1VETUEgOiAwKSB8DQorCQkgICh3ODAgJiYgKHZpYV9jb25maWct
PmZsYWdzICYgVklBX1VETUEpID49IFZJQV9VRE1BXzY2ID8gWEZFUl9VRE1B
XzY2IDogMCkgfA0KKwkJICAodzgwICYmICh2aWFfY29uZmlnLT5mbGFncyAm
IFZJQV9VRE1BKSA+PSBWSUFfVURNQV8xMDAgPyBYRkVSX1VETUFfMTAwIDog
MCkgfA0KKwkJICAodzgwICYmICh2aWFfY29uZmlnLT5mbGFncyAmIFZJQV9V
RE1BKSA+PSBWSUFfVURNQV8xMzMgPyBYRkVSX1VETUFfMTMzIDogMCk7DQog
DQotCXNob3J0IHNwZWVkID0gYXRhX3RpbWluZ19tb2RlKGRyaXZlLA0KLQkJ
CVhGRVJfUElPIHwgWEZFUl9FUElPIHwgWEZFUl9TV0RNQSB8IFhGRVJfTVdE
TUEgfA0KLQkJCSh2aWFfY29uZmlnLT5mbGFncyAmIFZJQV9VRE1BID8gWEZF
Ul9VRE1BIDogMCkgfA0KLQkJCSh3ODAgJiYgKHZpYV9jb25maWctPmZsYWdz
ICYgVklBX1VETUEpID49IFZJQV9VRE1BXzY2ID8gWEZFUl9VRE1BXzY2IDog
MCkgfA0KLQkJCSh3ODAgJiYgKHZpYV9jb25maWctPmZsYWdzICYgVklBX1VE
TUEpID49IFZJQV9VRE1BXzEwMCA/IFhGRVJfVURNQV8xMDAgOiAwKSB8DQot
CQkJKHc4MCAmJiAodmlhX2NvbmZpZy0+ZmxhZ3MgJiBWSUFfVURNQSkgPj0g
VklBX1VETUFfMTMzID8gWEZFUl9VRE1BXzEzMyA6IDApKTsNCi0NCi0Jdmlh
X3NldF9kcml2ZShkcml2ZSwgc3BlZWQpOw0KLQ0KLQl1ZG1hX2VuYWJsZShk
cml2ZSwgZHJpdmUtPmNoYW5uZWwtPmF1dG9kbWEgJiYgKHNwZWVkICYgWEZF
Ul9NT0RFKSAhPSBYRkVSX1BJTywgMCk7DQotDQotCXJldHVybiAwOw0KKwly
ZXR1cm4gbWFwOw0KIH0NCiAjZW5kaWYNCiANCkBAIC0zNTIsOSArMzQ2LDEw
IEBADQogew0KIAlpbnQgaTsNCiANCisJaHdpZi0+dWRtYV9mb3VyID0gdmlh
ODJjeHh4X2F0YTY2X2NoZWNrKGh3aWYpOw0KKw0KIAlod2lmLT50dW5lcHJv
YyA9ICZ2aWE4MmN4eHhfdHVuZV9kcml2ZTsNCiAJaHdpZi0+c3BlZWRwcm9j
ID0gJnZpYV9zZXRfZHJpdmU7DQotCWh3aWYtPmF1dG9kbWEgPSAwOw0KIAlo
d2lmLT5pb18zMmJpdCA9IDE7DQogDQogCWh3aWYtPnVubWFzayA9ICh2aWFf
Y29uZmlnLT5mbGFncyAmIFZJQV9OT19VTk1BU0spID8gMCA6IDE7DQpAQCAt
MzY2LDExICszNjEsOCBAQA0KICNpZmRlZiBDT05GSUdfQkxLX0RFVl9JREVE
TUENCiAJaWYgKGh3aWYtPmRtYV9iYXNlKSB7DQogCQlod2lmLT5oaWdobWVt
ID0gMTsNCi0JCWh3aWYtPnVkbWFfc2V0dXAgPSB2aWE4MmN4eHhfdWRtYV9z
ZXR1cDsNCi0jIGlmZGVmIENPTkZJR19JREVETUFfQVVUTw0KLQkJaWYgKCFu
b2F1dG9kbWEpDQotCQkJaHdpZi0+YXV0b2RtYSA9IDE7DQotIyBlbmRpZg0K
KwkJaHdpZi0+bW9kZXNfbWFwID0gdmlhX21vZGVzX21hcChod2lmKTsNCisJ
CWh3aWYtPnVkbWFfc2V0dXAgPSB1ZG1hX2dlbmVyaWNfc2V0dXA7DQogCX0N
CiAjZW5kaWYNCiB9DQpAQCAtMzkxLDIzICszODMsMTkgQEANCiAJCXZlbmRv
cjogUENJX1ZFTkRPUl9JRF9WSUEsDQogCQlkZXZpY2U6CVBDSV9ERVZJQ0Vf
SURfVklBXzgyQzU3Nl8xLA0KIAkJaW5pdF9jaGlwc2V0OiB2aWE4MmN4eHhf
aW5pdF9jaGlwc2V0LA0KLQkJYXRhNjZfY2hlY2s6IHZpYTgyY3h4eF9hdGE2
Nl9jaGVjaywNCiAJCWluaXRfY2hhbm5lbDogdmlhODJjeHh4X2luaXRfY2hh
bm5lbCwNCiAJCWluaXRfZG1hOiB2aWE4MmN4eHhfaW5pdF9kbWEsDQogCQll
bmFibGViaXRzOiB7ezB4NDAsMHgwMiwweDAyfSwgezB4NDAsMHgwMSwweDAx
fX0sDQogCQlib290YWJsZTogT05fQk9BUkQsDQotCQlmbGFnczogQVRBX0Zf
Tk9BRE1BDQogCX0sDQogCXsNCiAJCXZlbmRvcjoJUENJX1ZFTkRPUl9JRF9W
SUEsDQogCQlkZXZpY2U6CVBDSV9ERVZJQ0VfSURfVklBXzgyQzU4Nl8xLA0K
IAkJaW5pdF9jaGlwc2V0OiB2aWE4MmN4eHhfaW5pdF9jaGlwc2V0LA0KLQkJ
YXRhNjZfY2hlY2s6IHZpYTgyY3h4eF9hdGE2Nl9jaGVjaywNCiAJCWluaXRf
Y2hhbm5lbDogdmlhODJjeHh4X2luaXRfY2hhbm5lbCwNCiAJCWluaXRfZG1h
OiB2aWE4MmN4eHhfaW5pdF9kbWEsDQogCQllbmFibGViaXRzOiB7ezB4NDAs
MHgwMiwweDAyfSwgezB4NDAsMHgwMSwweDAxfX0sDQogCQlib290YWJsZTog
T05fQk9BUkQsDQotCQlmbGFnczogQVRBX0ZfTk9BRE1BDQogCX0sDQogfTsN
CiANCmRpZmYgLXVyIC1YZG9udGRpZmYgbGludXgtMi41LjI0L2luY2x1ZGUv
bGludXgvaWRlLmggbGludXgvaW5jbHVkZS9saW51eC9pZGUuaA0KLS0tIGxp
bnV4LTIuNS4yNC9pbmNsdWRlL2xpbnV4L2lkZS5oCVdlZCBKdWwgIDMgMDA6
MDI6MDcgMjAwMg0KKysrIGxpbnV4L2luY2x1ZGUvbGludXgvaWRlLmgJVHVl
IEp1bCAgMiAyMzo1Mjo1OCAyMDAyDQpAQCAtNDU2LDcgKzQ1Niw3IEBADQog
CXZvaWQgKCphdGFwaV9yZWFkKShzdHJ1Y3QgYXRhX2RldmljZSAqLCB2b2lk
ICosIHVuc2lnbmVkIGludCk7DQogCXZvaWQgKCphdGFwaV93cml0ZSkoc3Ry
dWN0IGF0YV9kZXZpY2UgKiwgdm9pZCAqLCB1bnNpZ25lZCBpbnQpOw0KIA0K
LQlpbnQgKCp1ZG1hX3NldHVwKShzdHJ1Y3QgYXRhX2RldmljZSAqKTsNCisJ
aW50ICgqdWRtYV9zZXR1cCkoc3RydWN0IGF0YV9kZXZpY2UgKiwgaW50KTsN
CiANCiAJdm9pZCAoKnVkbWFfZW5hYmxlKShzdHJ1Y3QgYXRhX2RldmljZSAq
LCBpbnQsIGludCk7DQogCXZvaWQgKCp1ZG1hX3N0YXJ0KSAoc3RydWN0IGF0
YV9kZXZpY2UgKiwgc3RydWN0IHJlcXVlc3QgKik7DQpAQCAtNDk2LDcgKzQ5
Niw5IEBADQogCXVuc2lnbmVkIHVubWFzawkJOiAxOwkvKiBmbGFnOiBva2F5
IHRvIHVubWFzayBvdGhlciBpcnFzICovDQogCXVuc2lnbmVkIHNsb3cJCTog
MTsJLyogZmxhZzogc2xvdyBkYXRhIHBvcnQgKi8NCiAJdW5zaWduZWQgaW9f
MzJiaXQJOiAxOwkvKiAwPTE2LWJpdCwgMT0zMi1iaXQgKi8NCisJdW5zaWdu
ZWQgbm9fYXRhcGlfYXV0b2RtYSA6IDE7CS8qIGZsYWc6IHVzZSBhdXRvIERN
QSBvbmx5IGZvciBkaXNrcyAqLw0KIAl1bnNpZ25lZCBjaGFyIGJ1c19zdGF0
ZTsJLyogcG93ZXIgc3RhdGUgb2YgdGhlIElERSBidXMgKi8NCisJaW50IG1v
ZGVzX21hcDsJCQkvKiBtYXAgb2Ygc3VwcG9ydGVkIHRyYW5zZmVyIG1vZGVz
ICovDQogfTsNCiANCiAvKg0KQEAgLTc3MSw3ICs3NzMsOSBAQA0KIGV4dGVy
biBpbnQgdWRtYV9wY2lfaXJxX3N0YXR1cyhzdHJ1Y3QgYXRhX2RldmljZSAq
ZHJpdmUpOw0KIGV4dGVybiB2b2lkIHVkbWFfcGNpX3RpbWVvdXQoc3RydWN0
IGF0YV9kZXZpY2UgKmRyaXZlKTsNCiBleHRlcm4gdm9pZCB1ZG1hX3BjaV9p
cnFfbG9zdChzdHJ1Y3QgYXRhX2RldmljZSAqKTsNCi1leHRlcm4gaW50IHVk
bWFfcGNpX3NldHVwKHN0cnVjdCBhdGFfZGV2aWNlICopOw0KK2V4dGVybiBp
bnQgdWRtYV9wY2lfc2V0dXAoc3RydWN0IGF0YV9kZXZpY2UgKiwgaW50KTsN
CisNCitleHRlcm4gaW50IHVkbWFfZ2VuZXJpY19zZXR1cChzdHJ1Y3QgYXRh
X2RldmljZSAqLCBpbnQpOw0KIA0KIGV4dGVybiBpbnQgdWRtYV9uZXdfdGFi
bGUoc3RydWN0IGF0YV9kZXZpY2UgKiwgc3RydWN0IHJlcXVlc3QgKik7DQog
ZXh0ZXJuIHZvaWQgdWRtYV9kZXN0cm95X3RhYmxlKHN0cnVjdCBhdGFfY2hh
bm5lbCAqKTsNCg==
---559023410-851401618-1025648531=:27685--
-
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/