Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Tue, 2 Jul 2002 18:20:16 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Tue, 2 Jul 2002 18:20:15 -0400 Received: from mion.elka.pw.edu.pl ([194.29.160.35]:12445 "EHLO mion.elka.pw.edu.pl") by vger.kernel.org with ESMTP id ; Tue, 2 Jul 2002 18:20:01 -0400 Date: Wed, 3 Jul 2002 00:22:11 +0200 (MET DST) From: Bartlomiej Zolnierkiewicz To: Martin Dalecki cc: Subject: [PATCH] 2.5.24 IDE 97 Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-559023410-851401618-1025648531=:27685" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 99694 Lines: 1672 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: 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/