From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965023AbWFILDQ (ORCPT ); Fri, 9 Jun 2006 07:03:16 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S965106AbWFILDQ (ORCPT ); Fri, 9 Jun 2006 07:03:16 -0400 Received: from mail-gw3.adaptec.com ([216.52.22.36]:19853 "EHLO mail-gw3.adaptec.com") by vger.kernel.org with ESMTP id S965023AbWFILDP (ORCPT ); Fri, 9 Jun 2006 07:03:15 -0400 content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C68BB4.4A25E336" X-MimeOLE: Produced By Microsoft Exchange V6.0.6487.1 Subject: RE: HEADS UP for gdth driver users Date: Fri, 9 Jun 2006 13:03:08 +0200 Message-ID: X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Thread-Topic: HEADS UP for gdth driver users Thread-Index: AcZoU7dvQqyUyKgyTAOAak4U8CB8rAjXssxw From: "Leubner, Achim" To: "Christoph Hellwig" Cc: Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. ------_=_NextPart_001_01C68BB4.4A25E336 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Christoph, Attached you find a patch to remove the scsi_request interface from the gdth driver. The patch contains your first patch, the changes for removing the scsi_request interface and some changes to preserve the 2.4.x compatibility. We tested it and it should work fine. It would be great if it could be integrated in the 2.6.18 cycle. Many thanks and Regards, Achim =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Achim Leubner Software Engineer / RAID drivers ICP vortex GmbH / Adaptec Inc. Phone: +49-351-8718291 =20 -----Original Message----- From: Christoph Hellwig [mailto:hch@lst.de]=20 Sent: Dienstag, 25. April 2006 12:33 To: Leubner, Achim Cc: Christoph Hellwig; linux-kernel@vger.kernel.org Subject: Re: HEADS UP for gdth driver users On Mon, Apr 24, 2006 at 02:21:00PM +0200, Leubner, Achim wrote: > Is there any news on that? Can we use the scsi_get/put_command() functions for allocating a "struct scsi_cmnd" or should we allocate it with kmalloc() or somehow like that? Or, Christoph, did you already make the second patch for the gdth driver?=20 > We want to bring the gdth driver up to date as soon as possible. Any help is greatly appreciated!=20 Sorry, I didn't have time to look at this yet. scsi_get/put_command() sems ok for now, if you have time to look at this now it would be good if you could look at it. It's too late for 2.6.17 already, but having it early in the 2.6.18 cycle would be very helpful. ------_=_NextPart_001_01C68BB4.4A25E336 Content-Type: application/octet-stream; name="gdthp" Content-Transfer-Encoding: base64 Content-Description: gdthp Content-Disposition: attachment; filename="gdthp" ZGlmZiAtdSAuL2dkdGguYyBuZXcvZ2R0aC5jCi0tLSAuL2dkdGguYwkyMDA2LTA1LTAzIDExOjUz OjMyLjAwMDAwMDAwMCArMDIwMAorKysgbmV3L2dkdGguYwkyMDA2LTA1LTAzIDExOjUzOjQ1LjAw MDAwMDAwMCArMDIwMApAQCAtNCw5ICs0LDkgQEAKICAqIEludGVsIENvcnBvcmF0aW9uOiAgU3Rv cmFnZSBSQUlEIENvbnRyb2xsZXJzICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICoKICAqIGdkdGguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAqIENvcHlyaWdodCAoQykgMTk5NS0wNCBJQ1Ag dm9ydGV4IEdtYkgsIEFjaGltIExldWJuZXIgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdo dCAoQykgMTk5NS0wNiBJQ1Agdm9ydGV4IEdtYkgsIEFjaGltIExldWJuZXIgICAgICAgICAgICAg ICAgICoKICAqIENvcHlyaWdodCAoQykgMjAwMi0wNCBJbnRlbCBDb3Jwb3JhdGlvbiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0wNCBBZGFwdGVj IEluYy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAo QykgMjAwMy0wNiBBZGFwdGVjIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICoKICAqIDxhY2hpbV9sZXVibmVyQGFkYXB0ZWMuY29tPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICoKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICAqIEFkZGl0aW9ucy9GaXhl czogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoK QEAgLTI3LDkgKzI3LDE0IEBACiAgKiBhbG9uZyB3aXRoIHRoaXMga2VybmVsOyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlICAgICAgICAgICAqCiAgKiBGb3VuZGF0aW9uLCBJbmMu LCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4gICAgICAgICAgICAqCiAg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqCi0gKiBMaW51eCBrZXJuZWwgMi4yLngsIDIuNC54LCAyLjYueCBzdXBw b3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBMaW51eCBrZXJuZWwgMi40Lngs IDIuNi54IHN1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqCiAgKiAkTG9nOiBnZHRoLmMsdiAkCisgKiBSZXZpc2lvbiAxLjc0ICAyMDA2 LzA0LzEwIDEzOjQ0OjQ3ICBhY2hpbQorICogQ29tbXVuaXR5IGNoYW5nZXMgZm9yIDIuNi54IAor ICogS2VybmVsIDIuMi54IG5vIGxvbmdlciBzdXBwb3J0ZWQKKyAqIHNjc2lfcmVxdWVzdCBpbnRl cmZhY2UgcmVtb3ZlZCwgdGhhbmtzIHRvIENocmlzdG9waCBIZWxsd2lnCisgKgogICogUmV2aXNp b24gMS43MyAgMjAwNC8wMy8zMSAxMzozMzowMyAgYWNoaW0KICAqIFNwZWNpYWwgY29tbWFuZCAw eGZkIGltcGxlbWVudGVkIHRvIGRldGVjdCA2NC1iaXQgRE1BIHN1cHBvcnQKICAqCkBAIC05NCw3 ICs5OSw3IEBACiAgKiBCdWdmaXggZnJlZV9pcnEoKQogICoKICAqIFJldmlzaW9uIDEuNTYgIDIw MDEvMDgvMDkgMTE6MTk6MzkgIGFjaGltCi0gKiBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIGNo YW5nZXMKKyAqIFNjc2lfSG9zdF9UZW1wbGF0ZSBjaGFuZ2VzCiAgKgogICogUmV2aXNpb24gMS41 NSAgMjAwMS8wOC8wOSAxMDoxMToyOCAgYWNoaW0KICAqIENvbW1hbmQgSE9TVF9VTkZSRUVaRV9J TyBiZWZvcmUgY2FjaGUgc2VydmljZSBpbml0LgpAQCAtMzg4LDcgKzM5MywxMyBAQAogI2luY2x1 ZGUgPGxpbnV4L3Byb2NfZnMuaD4KICNpbmNsdWRlIDxsaW51eC90aW1lLmg+CiAjaW5jbHVkZSA8 bGludXgvdGltZXIuaD4KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04o Miw2LDYpCiAjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KKyNlbHNlCisjZGVmaW5lIERN QV8zMkJJVF9NQVNLCTB4MDAwMDAwMDBmZmZmZmZmZlVMTAorI2RlZmluZSBETUFfNjRCSVRfTUFT SwkweGZmZmZmZmZmZmZmZmZmZmZVTEwKKyNlbmRpZgorCiAjaWZkZWYgR0RUSF9SVEMKICNpbmNs dWRlIDxsaW51eC9tYzE0NjgxOHJ0Yy5oPgogI2VuZGlmCkBAIC00MDgsOCArNDE5LDggQEAKIAog I2luY2x1ZGUgInNjc2kuaCIKICNpbmNsdWRlIDxzY3NpL3Njc2lfaG9zdC5oPgotI2luY2x1ZGUg ImdkdGguaCIKICNpbmNsdWRlICJnZHRoX2tjb21wYXQuaCIKKyNpbmNsdWRlICJnZHRoLmgiCiAK IHN0YXRpYyB2b2lkIGdkdGhfZGVsYXkoaW50IG1pbGxpc2Vjb25kcyk7CiBzdGF0aWMgdm9pZCBn ZHRoX2V2YWxfbWFwcGluZyh1bG9uZzMyIHNpemUsIHVsb25nMzIgKmN5bHMsIGludCAqaGVhZHMs IGludCAqc2Vjcyk7CkBAIC00NjQsNiArNDc1LDggQEAKIAogc3RhdGljIHZvaWQgZ2R0aF9mbHVz aChpbnQgaGFudW0pOwogc3RhdGljIGludCBnZHRoX2hhbHQoc3RydWN0IG5vdGlmaWVyX2Jsb2Nr ICpuYiwgdWxvbmcgZXZlbnQsIHZvaWQgKmJ1Zik7CitzdGF0aWMgaW50IGdkdGhfcXVldWVjb21t YW5kKFNjc2lfQ21uZCAqc2NwLHZvaWQgKCpkb25lKShTY3NpX0NtbmQgKikpOworc3RhdGljIHZv aWQgZ2R0aF9zY3NpX2RvbmUoc3RydWN0IHNjc2lfY21uZCAqc2NwKTsgCiAKICNpZmRlZiBERUJV R19HRFRICiBzdGF0aWMgdW5jaGFyICAgRGVidWdTdGF0ZSA9IERFQlVHX0dEVEg7CkBAIC02NDMs NiArNjU2LDcgQEAKIHN0YXRpYyBpbnQgZm9yY2VfZG1hMzIgPSAwOwogCiAvKiBwYXJhbWV0ZXJz IGZvciBtb2Rwcm9iZS9pbnNtb2QgKi8KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM X1ZFUlNJT04oMiw2LDExKQogbW9kdWxlX3BhcmFtX2FycmF5KGlycSwgaW50LCBOVUxMLCAwKTsK IG1vZHVsZV9wYXJhbShkaXNhYmxlLCBpbnQsIDApOwogbW9kdWxlX3BhcmFtKHJlc2VydmVfbW9k ZSwgaW50LCAwKTsKQEAgLTY1NSw2ICs2NjksMjAgQEAKIG1vZHVsZV9wYXJhbShzaGFyZWRfYWNj ZXNzLCBpbnQsIDApOwogbW9kdWxlX3BhcmFtKHByb2JlX2Vpc2FfaXNhLCBpbnQsIDApOwogbW9k dWxlX3BhcmFtKGZvcmNlX2RtYTMyLCBpbnQsIDApOworI2Vsc2UKK01PRFVMRV9QQVJNKGlycSwg ImkiKTsKK01PRFVMRV9QQVJNKGRpc2FibGUsICJpIik7CitNT0RVTEVfUEFSTShyZXNlcnZlX21v ZGUsICJpIik7CitNT0RVTEVfUEFSTShyZXNlcnZlX2xpc3QsICI0LSIgX19NT0RVTEVfU1RSSU5H KE1BWF9SRVNfQVJHUykgImkiKTsKK01PRFVMRV9QQVJNKHJldmVyc2Vfc2NhbiwgImkiKTsKK01P RFVMRV9QQVJNKGhkcl9jaGFubmVsLCAiaSIpOworTU9EVUxFX1BBUk0obWF4X2lkcywgImkiKTsK K01PRFVMRV9QQVJNKHJlc2NhbiwgImkiKTsKK01PRFVMRV9QQVJNKHZpcnRfY3RyLCAiaSIpOwor TU9EVUxFX1BBUk0oc2hhcmVkX2FjY2VzcywgImkiKTsKK01PRFVMRV9QQVJNKHByb2JlX2Vpc2Ff aXNhLCAiaSIpOworTU9EVUxFX1BBUk0oZm9yY2VfZG1hMzIsICJpIik7CisjZW5kaWYKIE1PRFVM RV9BVVRIT1IoIkFjaGltIExldWJuZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIApAQCAt NjgzLDYgKzcxMSw5MSBAQAogICAgIH0KIH0KIAorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBL RVJORUxfVkVSU0lPTigyLDYsMCkgCitzdGF0aWMgdm9pZCBnZHRoX3Njc2lfZG9uZShzdHJ1Y3Qg c2NzaV9jbW5kICpzY3ApIAoreworICAgIFRSQUNFMigoImdkdGhfc2NzaV9kb25lKClcbiIpKTsK KworICAgIGlmIChzY3AtPnNjX3JlcXVlc3QpCisgICAgICAgIGNvbXBsZXRlKChzdHJ1Y3QgY29t cGxldGlvbiAqKXNjcC0+c2NfcmVxdWVzdCk7Cit9CisKK2ludCBfX2dkdGhfZXhlY3V0ZShzdHJ1 Y3Qgc2NzaV9kZXZpY2UgKnNkZXYsIGdkdGhfY21kX3N0ciAqZ2R0Y21kLCBjaGFyICpjbW5kLAor ICAgICAgICAgICAgICAgICAgIGludCB0aW1lb3V0LCB1MzIgKmluZm8pCit7CisgICAgU2NzaV9D bW5kICpzY3A7CisgICAgREVDTEFSRV9DT01QTEVUSU9OKHdhaXQpOworICAgIGludCBydmFsOwor CisgICAgc2NwID0ga21hbGxvYyhzaXplb2YoKnNjcCksIEdGUF9LRVJORUwpOworICAgIGlmICgh c2NwKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICBtZW1zZXQoc2NwLCAwLCBzaXplb2Yo KnNjcCkpOworICAgIHNjcC0+ZGV2aWNlID0gc2RldjsKKyAgICAvKiB1c2Ugc2NfcmVxdWVzdCBm aWVsZCB0byBzYXZlIHRoZSBwdHIuIHRvIGNvbXBsZXRpb24gc3RydWN0LiAqLyAgIAorICAgIHNj cC0+c2NfcmVxdWVzdCA9IChzdHJ1Y3Qgc2NzaV9yZXF1ZXN0ICopJndhaXQ7CisgICAgc2NwLT50 aW1lb3V0X3Blcl9jb21tYW5kID0gdGltZW91dCpIWjsKKyAgICBzY3AtPnJlcXVlc3RfYnVmZmVy ID0gZ2R0Y21kOworICAgIHNjcC0+Y21kX2xlbiA9IDEyOworICAgIG1lbWNweShzY3AtPmNtbmQs IGNtbmQsIDEyKTsKKyAgICBzY3AtPlNDcC50aGlzX3Jlc2lkdWFsID0gSU9DVExfUFJJOyAgIC8q IHByaW9yaXR5ICovICAgICAgICAKKyAgICBzY3AtPmRvbmUgPSBnZHRoX3Njc2lfZG9uZTsgLyog c29tZSBmbi4gdGVzdCB0aGlzICovCisgICAgZ2R0aF9xdWV1ZWNvbW1hbmQoc2NwLCBnZHRoX3Nj c2lfZG9uZSk7CisgICAgd2FpdF9mb3JfY29tcGxldGlvbigmd2FpdCk7CisKKyAgICBydmFsID0g c2NwLT5TQ3AuU3RhdHVzOworICAgIGlmIChpbmZvKQorICAgICAgICAqaW5mbyA9IHNjcC0+U0Nw Lk1lc3NhZ2U7CisgICAga2ZyZWUoc2NwKTsKKyAgICByZXR1cm4gcnZhbDsKK30KKyNlbHNlCitz dGF0aWMgdm9pZCBnZHRoX3Njc2lfZG9uZShTY3NpX0NtbmQgKnNjcCkgCit7CisgICAgVFJBQ0Uy KCgiZ2R0aF9zY3NpX2RvbmUoKVxuIikpOworCisgICAgc2NwLT5yZXF1ZXN0LnJxX3N0YXR1cyA9 IFJRX1NDU0lfRE9ORTsKKyAgICBpZiAoc2NwLT5yZXF1ZXN0LndhaXRpbmcpCisgICAgICAgIGNv bXBsZXRlKHNjcC0+cmVxdWVzdC53YWl0aW5nKTsKK30KKworaW50IF9fZ2R0aF9leGVjdXRlKHN0 cnVjdCBzY3NpX2RldmljZSAqc2RldiwgZ2R0aF9jbWRfc3RyICpnZHRjbWQsIGNoYXIgKmNtbmQs CisgICAgICAgICAgICAgICAgICAgaW50IHRpbWVvdXQsIHUzMiAqaW5mbykKK3sKKyAgICBTY3Np X0NtbmQgKnNjcCA9IHNjc2lfYWxsb2NhdGVfZGV2aWNlKHNkZXYsIDEsIEZBTFNFKTsKKyAgICB1 bnNpZ25lZCBidWZmbGVuID0gZ2R0Y21kID8gc2l6ZW9mKGdkdGhfY21kX3N0cikgOiAwOworICAg IERFQ0xBUkVfQ09NUExFVElPTih3YWl0KTsKKyAgICBpbnQgcnZhbDsKKworICAgIGlmICghc2Nw KQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICBzY3AtPmNtZF9sZW4gPSAxMjsKKyAgICBz Y3AtPnVzZV9zZyA9IDA7CisgICAgc2NwLT5TQ3AudGhpc19yZXNpZHVhbCA9IElPQ1RMX1BSSTsg ICAvKiBwcmlvcml0eSAqLyAgICAgICAgCisgICAgc2NwLT5yZXF1ZXN0LnJxX3N0YXR1cyA9IFJR X1NDU0lfQlVTWTsKKyAgICBzY3AtPnJlcXVlc3Qud2FpdGluZyA9ICZ3YWl0OworICAgIHNjc2lf ZG9fY21kKHNjcCwgY21uZCwgZ2R0Y21kLCBidWZmbGVuLCBnZHRoX3Njc2lfZG9uZSwgdGltZW91 dCpIWiwgMSk7CisgICAgd2FpdF9mb3JfY29tcGxldGlvbigmd2FpdCk7CisKKyAgICBydmFsID0g c2NwLT5TQ3AuU3RhdHVzOworICAgIGlmIChpbmZvKQorICAgICAgICAqaW5mbyA9IHNjcC0+U0Nw Lk1lc3NhZ2U7CisKKyAgICBzY3NpX3JlbGVhc2VfY29tbWFuZChzY3ApOworICAgIHJldHVybiBy dmFsOworfQorI2VuZGlmCisKK2ludCBnZHRoX2V4ZWN1dGUoc3RydWN0IFNjc2lfSG9zdCAqc2hv c3QsIGdkdGhfY21kX3N0ciAqZ2R0Y21kLCBjaGFyICpjbW5kLAorICAgICAgICAgICAgICAgICBp bnQgdGltZW91dCwgdTMyICppbmZvKQoreworICAgIHN0cnVjdCBzY3NpX2RldmljZSAqc2RldiA9 IHNjc2lfZ2V0X2hvc3RfZGV2KHNob3N0KTsKKyAgICBpbnQgcnZhbCA9IF9fZ2R0aF9leGVjdXRl KHNkZXYsIGdkdGNtZCwgY21uZCwgdGltZW91dCwgaW5mbyk7CisKKyAgICBzY3NpX2ZyZWVfaG9z dF9kZXYoc2Rldik7CisgICAgcmV0dXJuIHJ2YWw7Cit9CisKIHN0YXRpYyB2b2lkIGdkdGhfZXZh bF9tYXBwaW5nKHVsb25nMzIgc2l6ZSwgdWxvbmczMiAqY3lscywgaW50ICpoZWFkcywgaW50ICpz ZWNzKQogewogICAgICpjeWxzID0gc2l6ZSAvSEVBRFMvU0VDUzsKQEAgLTc3Myw3ICs4ODYsNyBA QAogTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksZ2R0aHRhYmxlKTsKIAogc3RhdGljIHZvaWQgX19p bml0IGdkdGhfc2VhcmNoX2RldihnZHRoX3BjaV9zdHIgKnBjaXN0ciwgdXNob3J0ICpjbnQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNob3J0IHZlbmRvciwg dXNob3J0IGRldmljZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNob3J0 IHZlbmRvciwgdXNob3J0IGRldmljZSkKIHsKICAgICB1bG9uZyBiYXNlMCwgYmFzZTEsIGJhc2Uy OwogICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2OwpAQCAtMjI0OCwxNiArMjM2MSwxOCBAQAogICAg IGhhID0gSEFEQVRBKGdkdGhfY3RyX3RhYltoYW51bV0pOwogICAgIHNwaW5fbG9ja19pcnFzYXZl KCZoYS0+c21wX2xvY2ssIGZsYWdzKTsKIAotICAgIHNjcC0+U0NwLnRoaXNfcmVzaWR1YWwgPSAo aW50KXByaW9yaXR5OwotICAgIGIgPSB2aXJ0X2N0ciA/IE5VTURBVEEoc2NwLT5kZXZpY2UtPmhv c3QpLT5idXNudW0gOiBzY3AtPmRldmljZS0+Y2hhbm5lbDsKLSAgICB0ID0gc2NwLT5kZXZpY2Ut PmlkOwotICAgIGlmIChwcmlvcml0eSA+PSBERUZBVUxUX1BSSSkgewotICAgICAgICBpZiAoKGIg IT0gaGEtPnZpcnRfYnVzICYmIGhhLT5yYXdbQlVTX0wyUChoYSxiKV0ubG9jaykgfHwKLSAgICAg ICAgICAgIChiID09IGhhLT52aXJ0X2J1cyAmJiB0IDwgTUFYX0hEUklWRVMgJiYgaGEtPmhkclt0 XS5sb2NrKSkgewotICAgICAgICAgICAgVFJBQ0UyKCgiZ2R0aF9wdXRxKCk6IGxvY2tlZCBJTyAt PiB1cGRhdGVfdGltZW91dCgpXG4iKSk7Ci0gICAgICAgICAgICBzY3AtPlNDcC5idWZmZXJzX3Jl c2lkdWFsID0gZ2R0aF91cGRhdGVfdGltZW91dChoYW51bSwgc2NwLCAwKTsKKyAgICBpZiAoc2Nw LT5kb25lICE9IGdkdGhfc2NzaV9kb25lKSB7CisgICAgICAgIHNjcC0+U0NwLnRoaXNfcmVzaWR1 YWwgPSAoaW50KXByaW9yaXR5OworICAgICAgICBiID0gdmlydF9jdHIgPyBOVU1EQVRBKHNjcC0+ ZGV2aWNlLT5ob3N0KS0+YnVzbnVtOnNjcC0+ZGV2aWNlLT5jaGFubmVsOworICAgICAgICB0ID0g c2NwLT5kZXZpY2UtPmlkOworICAgICAgICBpZiAocHJpb3JpdHkgPj0gREVGQVVMVF9QUkkpIHsK KyAgICAgICAgICAgIGlmICgoYiAhPSBoYS0+dmlydF9idXMgJiYgaGEtPnJhd1tCVVNfTDJQKGhh LGIpXS5sb2NrKSB8fAorICAgICAgICAgICAgICAgIChiPT1oYS0+dmlydF9idXMgJiYgdDxNQVhf SERSSVZFUyAmJiBoYS0+aGRyW3RdLmxvY2spKSB7CisgICAgICAgICAgICAgICAgVFJBQ0UyKCgi Z2R0aF9wdXRxKCk6IGxvY2tlZCBJTyAtPnVwZGF0ZV90aW1lb3V0KClcbiIpKTsKKyAgICAgICAg ICAgICAgICBzY3AtPlNDcC5idWZmZXJzX3Jlc2lkdWFsID0gZ2R0aF91cGRhdGVfdGltZW91dCho YW51bSwgc2NwLCAwKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KKyAgICB9ICAg CiAKICAgICBpZiAoaGEtPnJlcV9maXJzdD09TlVMTCkgewogICAgICAgICBoYS0+cmVxX2ZpcnN0 ID0gc2NwOyAgICAgICAgICAgICAgICAgICAgLyogcXVldWUgd2FzIGVtcHR5ICovCkBAIC0yMzA5 LDE0ICsyNDI0LDE4IEBACiAgICAgZm9yIChuc2NwID0gcHNjcCA9IGhhLT5yZXFfZmlyc3Q7IG5z Y3A7IG5zY3AgPSAoU2NzaV9DbW5kICopbnNjcC0+U0NwLnB0cikgewogICAgICAgICBpZiAobnNj cCAhPSBwc2NwICYmIG5zY3AgIT0gKFNjc2lfQ21uZCAqKXBzY3AtPlNDcC5wdHIpCiAgICAgICAg ICAgICBwc2NwID0gKFNjc2lfQ21uZCAqKXBzY3AtPlNDcC5wdHI7Ci0gICAgICAgIGIgPSB2aXJ0 X2N0ciA/IE5VTURBVEEobnNjcC0+ZGV2aWNlLT5ob3N0KS0+YnVzbnVtIDogbnNjcC0+ZGV2aWNl LT5jaGFubmVsOwotICAgICAgICB0ID0gbnNjcC0+ZGV2aWNlLT5pZDsKLSAgICAgICAgbCA9IG5z Y3AtPmRldmljZS0+bHVuOwotICAgICAgICBpZiAobnNjcC0+U0NwLnRoaXNfcmVzaWR1YWwgPj0g REVGQVVMVF9QUkkpIHsKLSAgICAgICAgICAgIGlmICgoYiAhPSBoYS0+dmlydF9idXMgJiYgaGEt PnJhd1tCVVNfTDJQKGhhLGIpXS5sb2NrKSB8fAotICAgICAgICAgICAgICAgIChiID09IGhhLT52 aXJ0X2J1cyAmJiB0IDwgTUFYX0hEUklWRVMgJiYgaGEtPmhkclt0XS5sb2NrKSkgCi0gICAgICAg ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG5zY3AtPmRvbmUgIT0g Z2R0aF9zY3NpX2RvbmUpIHsKKyAgICAgICAgICAgIGIgPSB2aXJ0X2N0ciA/IAorICAgICAgICAg ICAgICAgIE5VTURBVEEobnNjcC0+ZGV2aWNlLT5ob3N0KS0+YnVzbnVtIDogbnNjcC0+ZGV2aWNl LT5jaGFubmVsOworICAgICAgICAgICAgdCA9IG5zY3AtPmRldmljZS0+aWQ7CisgICAgICAgICAg ICBsID0gbnNjcC0+ZGV2aWNlLT5sdW47CisgICAgICAgICAgICBpZiAobnNjcC0+U0NwLnRoaXNf cmVzaWR1YWwgPj0gREVGQVVMVF9QUkkpIHsKKyAgICAgICAgICAgICAgICBpZiAoKGIgIT0gaGEt PnZpcnRfYnVzICYmIGhhLT5yYXdbQlVTX0wyUChoYSxiKV0ubG9jaykgfHwKKyAgICAgICAgICAg ICAgICAgICAgKGIgPT0gaGEtPnZpcnRfYnVzICYmIHQgPCBNQVhfSERSSVZFUyAmJiBoYS0+aGRy W3RdLmxvY2spKSAKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9 CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYiA9IHQgPSBsID0gMDsKIAogICAgICAgICBp ZiAoZmlyc3R0aW1lKSB7CiAgICAgICAgICAgICBpZiAoZ2R0aF90ZXN0X2J1c3koaGFudW0pKSB7 ICAgICAgICAvKiBjb250cm9sbGVyIGJ1c3kgPyAqLwpAQCAtMjMzMSw3ICsyNDUwLDcgQEAKICAg ICAgICAgICAgIGZpcnN0dGltZSA9IEZBTFNFOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5z Y3AtPmRvbmUgIT0gZ2R0aF9zY3NpX2RvbmUgfHwgbnNjcC0+Y21uZFswXSAhPSAweGZmKSB7ICAg ICAgICAKKyAgICAgICAgaWYgKG5zY3AtPmRvbmUgIT0gZ2R0aF9zY3NpX2RvbmUpIHsgICAgICAg IAogICAgICAgICBpZiAobnNjcC0+U0NwLnBoYXNlID09IC0xKSB7CiAgICAgICAgICAgICBuc2Nw LT5TQ3AucGhhc2UgPSBDQUNIRVNFUlZJQ0U7ICAgICAgICAgICAvKiBkZWZhdWx0OiBjYWNoZSBz dmMuICovIAogICAgICAgICAgICAgaWYgKG5zY3AtPmNtbmRbMF0gPT0gVEVTVF9VTklUX1JFQURZ KSB7CkBAIC0yMzk0LDcgKzI1MTMsNyBAQAogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg ICAgICAgICAgICAgbnNjcC0+c2NzaV9kb25lKG5zY3ApOwogICAgICAgICAgICAgfQotICAgICAg ICB9IGVsc2UgaWYgKG5zY3AtPmRvbmUgPT0gZ2R0aF9zY3NpX2RvbmUgJiYgbnNjcC0+Y21uZFsw XSA9PSAweGZmKSB7CisgICAgICAgIH0gZWxzZSBpZiAobnNjcC0+ZG9uZSA9PSBnZHRoX3Njc2lf ZG9uZSkgewogICAgICAgICAgICAgaWYgKCEoY21kX2luZGV4PWdkdGhfc3BlY2lhbF9jbWQoaGFu dW0sbnNjcCkpKQogICAgICAgICAgICAgICAgIHRoaXNfY21kID0gRkFMU0U7CiAgICAgICAgICAg ICBuZXh0X2NtZCA9IEZBTFNFOwpAQCAtMjU0OCw3ICsyNjY3LDcgQEAKICAgICBpZiAoc2NwLT51 c2Vfc2cpIHsKICAgICAgICAgc2wgPSAoc3RydWN0IHNjYXR0ZXJsaXN0ICopc2NwLT5yZXF1ZXN0 X2J1ZmZlcjsKICAgICAgICAgZm9yIChpPTAsY3BzdW09MDsgaTxzY3AtPnVzZV9zZzsgKytpLCsr c2wpIHsKLQkgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgZmxhZ3M7CiAgICAgICAgICAgICBjcG5vdyA9ICh1c2hvcnQpc2wtPmxlbmd0aDsKICAgICAg ICAgICAgIFRSQUNFKCgiY29weV9pbnRlcm5hbCgpIG5vdyAlZCBzdW0gJWQgY291bnQgJWQgJWRc biIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwbm93LGNwc3VtLGNwY291bnQsKHVzaG9y dClzY3AtPmJ1ZmZsZW4pKTsKQEAgLTI1NjAsMTIgKzI2NzksMTkgQEAKICAgICAgICAgICAgICAg ICAgICAgICAgaGFudW0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K LQkgICAgbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwotCSAgICBhZGRyZXNzID0ga21hcF9hdG9taWMo c2wtPnBhZ2UsIEtNX0JJT19TUkNfSVJRKSArIHNsLT5vZmZzZXQ7CisgICAgICAgICAgICBsb2Nh bF9pcnFfc2F2ZShmbGFncyk7CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJT SU9OKDIsNiwwKQorICAgICAgICAgICAgYWRkcmVzcyA9IGttYXBfYXRvbWljKHNsLT5wYWdlLCBL TV9CSU9fU1JDX0lSUSkgKyBzbC0+b2Zmc2V0OworICAgICAgICAgICAgbWVtY3B5KGFkZHJlc3Ms YnVmZmVyLGNwbm93KTsKKyAgICAgICAgICAgIGZsdXNoX2RjYWNoZV9wYWdlKHNsLT5wYWdlKTsK KyAgICAgICAgICAgIGt1bm1hcF9hdG9taWMoYWRkcmVzcywgS01fQklPX1NSQ19JUlEpOworI2Vs c2UKKyAgICAgICAgICAgIGFkZHJlc3MgPSBrbWFwX2F0b21pYyhzbC0+cGFnZSwgS01fQkhfSVJR KSArIHNsLT5vZmZzZXQ7CiAgICAgICAgICAgICBtZW1jcHkoYWRkcmVzcyxidWZmZXIsY3Bub3cp OwotCSAgICBmbHVzaF9kY2FjaGVfcGFnZShzbC0+cGFnZSk7Ci0JICAgIGt1bm1hcF9hdG9taWMo YWRkcmVzcywgS01fQklPX1NSQ19JUlEpOwotCSAgICBsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7 CisgICAgICAgICAgICBmbHVzaF9kY2FjaGVfcGFnZShzbC0+cGFnZSk7CisgICAgICAgICAgICBr dW5tYXBfYXRvbWljKGFkZHJlc3MsIEtNX0JIX0lSUSk7CisjZW5kaWYKKyAgICAgICAgICAgIGxv Y2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKICAgICAgICAgICAgIGlmIChjcHN1bSA9PSBjcGNvdW50 KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYnVmZmVyICs9IGNwbm93OwpA QCAtMjk0Niw5ICszMDcyLDkgQEAKICAgICAgICAgb2Zmc2V0ID0gKHVsb25nKXNjcC0+c2Vuc2Vf YnVmZmVyICYgflBBR0VfTUFTSzsKICAgICAgICAgc2Vuc2VfcGFkZHIgPSBwY2lfbWFwX3BhZ2Uo aGEtPnBkZXYscGFnZSxvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDE2LFBDSV9ETUFfRlJPTURFVklDRSk7Ci0gICAgICAgIHNjcC0+U0NwLmJ1ZmZlciA9IChzdHJ1 Y3Qgc2NhdHRlcmxpc3QgKikoKHVsb25nMzIpc2Vuc2VfcGFkZHIpOworICAgICAgICAqKHVsb25n MzIgKikmc2NwLT5TQ3AuYnVmZmVyID0gKHVsb25nMzIpc2Vuc2VfcGFkZHI7CiAgICAgICAgIC8q IGhpZ2ggcGFydCwgaWYgNjRiaXQgKi8KLSAgICAgICAgc2NwLT5ob3N0X3NjcmliYmxlID0gKGNo YXIgKikodWxvbmczMikoKHVsb25nNjQpc2Vuc2VfcGFkZHIgPj4gMzIpOworICAgICAgICAqKHVs b25nMzIgKikmc2NwLT5ob3N0X3NjcmliYmxlID0gKHVsb25nMzIpKCh1bG9uZzY0KXNlbnNlX3Bh ZGRyID4+IDMyKTsKICAgICAgICAgY21kcC0+T3BDb2RlICAgICAgICAgICA9IEdEVF9XUklURTsg ICAgICAgICAgICAgLyogYWx3YXlzICovCiAgICAgICAgIGNtZHAtPkJvYXJkTm9kZSAgICAgICAg PSBMT0NBTEJPQVJEOwogICAgICAgICBpZiAobW9kZTY0KSB7IApAQCAtMzAyMiw3ICszMTQ4LDcg QEAKICAgICAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIH0g ZWxzZSBpZiAoc2NwLT5yZXF1ZXN0X2J1ZmZsZW4pIHsKICAgICAgICAgICAgIHNjcC0+U0NwLlN0 YXR1cyA9IEdEVEhfTUFQX1NJTkdMRTsKICAgICAgICAgICAgIHNjcC0+U0NwLk1lc3NhZ2UgPSBQ Q0lfRE1BX0JJRElSRUNUSU9OQUw7IAogICAgICAgICAgICAgcGFnZSA9IHZpcnRfdG9fcGFnZShz Y3AtPnJlcXVlc3RfYnVmZmVyKTsKQEAgLTMzMDksNyArMzQzNSw3IEBACiAgICAgfQogCiAgICAg aWYgKCFnZHRoX3BvbGxpbmcpCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmhhMi0+c21wX2xvY2ssIGZs YWdzKTsKKyAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmhhMi0+c21wX2xvY2ssIGZsYWdzKTsK ICAgICB3YWl0X2luZGV4ID0gMDsKIAogICAgIC8qIHNlYXJjaCBjb250cm9sbGVyICovCkBAIC0z NjQyLDkgKzM3NjgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcC0+cmVxdWVz dF9idWZmbGVuLHNjcC0+U0NwLk1lc3NhZ2UpOwogICAgICAgICBpZiAoc2NwLT5TQ3AuYnVmZmVy KSB7CiAgICAgICAgICAgICBkbWFfYWRkcl90IGFkZHI7Ci0gICAgICAgICAgICBhZGRyID0gKGRt YV9hZGRyX3QpKHVsb25nMzIpc2NwLT5TQ3AuYnVmZmVyOworICAgICAgICAgICAgYWRkciA9IChk bWFfYWRkcl90KSoodWxvbmczMiAqKSZzY3AtPlNDcC5idWZmZXI7CiAgICAgICAgICAgICBpZiAo c2NwLT5ob3N0X3NjcmliYmxlKQotICAgICAgICAgICAgICAgIGFkZHIgKz0gKGRtYV9hZGRyX3Qp KCh1bG9uZzY0KSh1bG9uZzMyKXNjcC0+aG9zdF9zY3JpYmJsZSA8PCAzMik7ICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgICAgYWRkciArPSAoZG1hX2FkZHJfdCkKKyAgICAgICAgICAgICAg ICAgICAgKCh1bG9uZzY0KSgqKHVsb25nMzIgKikmc2NwLT5ob3N0X3NjcmliYmxlKSA8PCAzMik7 ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBwY2lfdW5tYXBfcGFnZShoYS0+cGRldixhZGRy LDE2LFBDSV9ETUFfRlJPTURFVklDRSk7CiAgICAgICAgIH0KIApAQCAtNDE1NCw3ICs0MjgxLDEx IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM X1ZFUlNJT04oMiw2LDApCiBzdGF0aWMgaW50IF9faW5pdCBnZHRoX2RldGVjdChzdHJ1Y3Qgc2Nz aV9ob3N0X3RlbXBsYXRlICpzaHRwKQorI2Vsc2UKK3N0YXRpYyBpbnQgX19pbml0IGdkdGhfZGV0 ZWN0KFNjc2lfSG9zdF9UZW1wbGF0ZSAqc2h0cCkKKyNlbmRpZgogewogICAgIHN0cnVjdCBTY3Np X0hvc3QgKnNocDsKICAgICBnZHRoX3BjaV9zdHIgcGNpc3RyW01BWEhBXTsKQEAgLTQxODgsNyAr NDMxOSw3IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHByaW50aygiR0RULUhB OiBTdG9yYWdlIFJBSUQgQ29udHJvbGxlciBEcml2ZXIuIFZlcnNpb246ICVzIFxuIixHRFRIX1ZF UlNJT05fU1RSKTsKKyAgICBwcmludGsoIkdEVC1IQTogU3RvcmFnZSBSQUlEIENvbnRyb2xsZXIg RHJpdmVyLiBWZXJzaW9uOiAlc1xuIixHRFRIX1ZFUlNJT05fU1RSKTsKICAgICAvKiBpbml0aWFs aXphdGlvbnMgKi8KICAgICBnZHRoX3BvbGxpbmcgPSBUUlVFOyBiID0gMDsKICAgICBnZHRoX2Ns ZWFyX2V2ZW50cygpOwpAQCAtNDc1MSw3ICs0ODgyLDcgQEAKICAgICAgICAgZ2R0aF9pbnRlcm5h bF9jbWQoaGFudW0sIFNDU0lSQVdTRVJWSUNFLCBHRFRfUkVTRVRfQlVTLAogICAgICAgICAgICAg ICAgICAgICAgICAgICBCVVNfTDJQKGhhLGIpLCAwLCAwKTsKICAgICAgICAgZ2R0aF9wb2xsaW5n ID0gRkFMU0U7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGEtPnNtcF9sb2NrLCBmbGFncyk7 CisgICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhhLT5zbXBfbG9jaywgZmxhZ3MpOwog ICAgIH0KICAgICByZXR1cm4gU1VDQ0VTUzsKIH0KQEAgLTQ4MTcsOSArNDk0OCwxMSBAQAogI2Vu ZGlmCiAKICAgICBwcmlvcml0eSA9IERFRkFVTFRfUFJJOwotICAgIGlmIChzY3AtPmRvbmUgPT0g Z2R0aF9zY3NpX2RvbmUpCisgICAgaWYgKHNjcC0+ZG9uZSA9PSBnZHRoX3Njc2lfZG9uZSkgCiAg ICAgICAgIHByaW9yaXR5ID0gc2NwLT5TQ3AudGhpc19yZXNpZHVhbDsKLSAgICBnZHRoX3VwZGF0 ZV90aW1lb3V0KGhhbnVtLCBzY3AsIHNjcC0+dGltZW91dF9wZXJfY29tbWFuZCAqIDYpOworICAg IGVsc2UgCisgICAgICAgIGdkdGhfdXBkYXRlX3RpbWVvdXQoaGFudW0sIHNjcCwgc2NwLT50aW1l b3V0X3Blcl9jb21tYW5kICogNik7CisKICAgICBnZHRoX3B1dHEoIGhhbnVtLCBzY3AsIHByaW9y aXR5ICk7CiAgICAgZ2R0aF9uZXh0KCBoYW51bSApOwogICAgIHJldHVybiAwOwpAQCAtNDkyMiwx MSArNTA1NSw3IEBACiAgICAgZ2R0aF9jbWRfc3RyIGNtZDsKICAgICBpbnQgaGFudW07CiAgICAg Z2R0aF9oYV9zdHIgKmhhOwotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lP TigyLDYsMCkKLSAgICBTY3NpX1JlcXVlc3QgKnNycDsKLSNlbHNlCi0gICAgU2NzaV9DbW5kICpz Y3A7Ci0jZW5kaWYKKyAgICBpbnQgcnZhbDsKIAogICAgIGlmIChjb3B5X2Zyb21fdXNlcigmcmVz LCBhcmcsIHNpemVvZihnZHRoX2lvY3RsX3Jlc2V0KSkgfHwKICAgICAgICAgcmVzLmlvbm9kZSA+ PSBnZHRoX2N0cl9jb3VudCB8fCByZXMubnVtYmVyID49IE1BWF9IRFJJVkVTKQpAQCAtNDk0Mywy NSArNTA3MiwxMSBAQAogICAgICAgICBjbWQudS5jYWNoZTY0LkRldmljZU5vID0gcmVzLm51bWJl cjsKICAgICBlbHNlCiAgICAgICAgIGNtZC51LmNhY2hlLkRldmljZU5vID0gcmVzLm51bWJlcjsK LSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgc3Jw ICA9IHNjc2lfYWxsb2NhdGVfcmVxdWVzdChoYS0+c2RldiwgR0ZQX0tFUk5FTCk7Ci0gICAgaWYg KCFzcnApCi0gICAgICAgIHJldHVybiAtRU5PTUVNOwotICAgIHNycC0+c3JfY21kX2xlbiA9IDEy OwotICAgIHNycC0+c3JfdXNlX3NnID0gMDsKLSAgICBnZHRoX2RvX3JlcShzcnAsICZjbWQsIGNt bmQsIDMwKTsKLSAgICByZXMuc3RhdHVzID0gKHVzaG9ydClzcnAtPnNyX2NvbW1hbmQtPlNDcC5T dGF0dXM7Ci0gICAgc2NzaV9yZWxlYXNlX3JlcXVlc3Qoc3JwKTsKLSNlbHNlCi0gICAgc2NwICA9 IHNjc2lfYWxsb2NhdGVfZGV2aWNlKGhhLT5zZGV2LCAxLCBGQUxTRSk7Ci0gICAgaWYgKCFzY3Ap Ci0gICAgICAgIHJldHVybiAtRU5PTUVNOwotICAgIHNjcC0+Y21kX2xlbiA9IDEyOwotICAgIHNj cC0+dXNlX3NnID0gMDsKLSAgICBnZHRoX2RvX2NtZChzY3AsICZjbWQsIGNtbmQsIDMwKTsKLSAg ICByZXMuc3RhdHVzID0gKHVzaG9ydClzY3AtPlNDcC5TdGF0dXM7Ci0gICAgc2NzaV9yZWxlYXNl X2NvbW1hbmQoc2NwKTsKLSNlbmRpZgorCisgICAgcnZhbCA9IF9fZ2R0aF9leGVjdXRlKGhhLT5z ZGV2LCAmY21kLCBjbW5kLCAzMCwgTlVMTCk7CisgICAgaWYgKHJ2YWwgPCAwKQorICAgICAgICBy ZXR1cm4gcnZhbDsKKyAgICByZXMuc3RhdHVzID0gcnZhbDsKIAogICAgIGlmIChjb3B5X3RvX3Vz ZXIoYXJnLCAmcmVzLCBzaXplb2YoZ2R0aF9pb2N0bF9yZXNldCkpKQogICAgICAgICByZXR1cm4g LUVGQVVMVDsKQEAgLTQ5NzQsMTIgKzUwODksOCBAQAogICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CiAg ICAgdWxvbmc2NCBwYWRkcjsgCiAgICAgaW50IGhhbnVtOwotICAgICAgICBnZHRoX2hhX3N0ciAq aGE7IAotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAg ICAgICAgU2NzaV9SZXF1ZXN0ICpzcnA7Ci0jZWxzZQotICAgICAgICBTY3NpX0NtbmQgKnNjcDsK LSNlbmRpZgorICAgIGdkdGhfaGFfc3RyICpoYTsKKyAgICBpbnQgcnZhbDsKICAgICAgICAgCiAg ICAgaWYgKGNvcHlfZnJvbV91c2VyKCZnZW4sIGFyZywgc2l6ZW9mKGdkdGhfaW9jdGxfZ2VuZXJh bCkpIHx8CiAgICAgICAgIGdlbi5pb25vZGUgPj0gZ2R0aF9jdHJfY291bnQpCkBAIC01MDcxLDI3 ICs1MTgyLDEwIEBACiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUg Pj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgc3JwICA9IHNjc2lfYWxsb2NhdGVfcmVxdWVz dChoYS0+c2RldiwgR0ZQX0tFUk5FTCk7Ci0gICAgaWYgKCFzcnApCi0gICAgICAgIHJldHVybiAt RU5PTUVNOwotICAgIHNycC0+c3JfY21kX2xlbiA9IDEyOwotICAgIHNycC0+c3JfdXNlX3NnID0g MDsKLSAgICBnZHRoX2RvX3JlcShzcnAsICZnZW4uY29tbWFuZCwgY21uZCwgZ2VuLnRpbWVvdXQp OwotICAgIGdlbi5zdGF0dXMgPSBzcnAtPnNyX2NvbW1hbmQtPlNDcC5TdGF0dXM7Ci0gICAgZ2Vu LmluZm8gPSBzcnAtPnNyX2NvbW1hbmQtPlNDcC5NZXNzYWdlOwotICAgIHNjc2lfcmVsZWFzZV9y ZXF1ZXN0KHNycCk7Ci0jZWxzZQotICAgIHNjcCAgPSBzY3NpX2FsbG9jYXRlX2RldmljZShoYS0+ c2RldiwgMSwgRkFMU0UpOwotICAgIGlmICghc2NwKQotICAgICAgICByZXR1cm4gLUVOT01FTTsK LSAgICBzY3AtPmNtZF9sZW4gPSAxMjsKLSAgICBzY3AtPnVzZV9zZyA9IDA7Ci0gICAgZ2R0aF9k b19jbWQoc2NwLCAmZ2VuLmNvbW1hbmQsIGNtbmQsIGdlbi50aW1lb3V0KTsKLSAgICBnZW4uc3Rh dHVzID0gc2NwLT5TQ3AuU3RhdHVzOwotICAgIGdlbi5pbmZvID0gc2NwLT5TQ3AuTWVzc2FnZTsK LSAgICBzY3NpX3JlbGVhc2VfY29tbWFuZChzY3ApOwotI2VuZGlmCisgICAgcnZhbCA9IF9fZ2R0 aF9leGVjdXRlKGhhLT5zZGV2LCAmZ2VuLmNvbW1hbmQsIGNtbmQsIGdlbi50aW1lb3V0LCAmZ2Vu LmluZm8pOworICAgIGlmIChydmFsIDwgMCkKKyAgICAgICAgcmV0dXJuIHJ2YWw7CisgICAgZ2Vu LnN0YXR1cyA9IHJ2YWw7CiAKICAgICBpZiAoY29weV90b191c2VyKGFyZyArIHNpemVvZihnZHRo X2lvY3RsX2dlbmVyYWwpLCBidWYsIAogICAgICAgICAgICAgICAgICAgICAgZ2VuLmRhdGFfbGVu ICsgZ2VuLnNlbnNlX2xlbikpIHsKQEAgLTUxMTQsNDAgKzUyMDgsMjIgQEAKICAgICBnZHRoX2hh X3N0ciAqaGE7CiAgICAgdW5jaGFyIGk7CiAgICAgaW50IGhhbnVtLCByYyA9IC1FTk9NRU07Ci0j aWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgIFNjc2lf UmVxdWVzdCAqc3JwOwotI2Vsc2UKLSAgICBTY3NpX0NtbmQgKnNjcDsKLSNlbmRpZgotICAgICAg ICAKKyAgICB1MzIgY2x1c3Rlcl90eXBlID0gMDsKKwogICAgIHJzYyA9IGttYWxsb2Moc2l6ZW9m KCpyc2MpLCBHRlBfS0VSTkVMKTsKICAgICBjbWQgPSBrbWFsbG9jKHNpemVvZigqY21kKSwgR0ZQ X0tFUk5FTCk7CiAgICAgaWYgKCFyc2MgfHwgIWNtZCkKLQlnb3RvIGZyZWVfZmFpbDsKKyAgICAg ICAgZ290byBmcmVlX2ZhaWw7CiAKICAgICBpZiAoY29weV9mcm9tX3VzZXIocnNjLCBhcmcsIHNp emVvZihnZHRoX2lvY3RsX3Jlc2NhbikpIHx8CiAgICAgICAgIHJzYy0+aW9ub2RlID49IGdkdGhf Y3RyX2NvdW50KSB7CiAgICAgICAgIHJjID0gLUVGQVVMVDsKLQlnb3RvIGZyZWVfZmFpbDsKKyAg ICAgICAgZ290byBmcmVlX2ZhaWw7CiAgICAgfQogICAgIGhhbnVtID0gcnNjLT5pb25vZGU7CiAg ICAgaGEgPSBIQURBVEEoZ2R0aF9jdHJfdGFiW2hhbnVtXSk7CiAgICAgbWVtc2V0KGNtZCwgMCwg c2l6ZW9mKGdkdGhfY21kX3N0cikpOwogICAgCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtF Uk5FTF9WRVJTSU9OKDIsNiwwKQotICAgIHNycCAgPSBzY3NpX2FsbG9jYXRlX3JlcXVlc3QoaGEt PnNkZXYsIEdGUF9LRVJORUwpOwotICAgIGlmICghc3JwKQotICAgICAgICBnb3RvIGZyZWVfZmFp bDsKLSAgICBzcnAtPnNyX2NtZF9sZW4gPSAxMjsKLSAgICBzcnAtPnNyX3VzZV9zZyA9IDA7Ci0j ZWxzZQotICAgIHNjcCAgPSBzY3NpX2FsbG9jYXRlX2RldmljZShoYS0+c2RldiwgMSwgRkFMU0Up OwotICAgIGlmICghc2NwKQotICAgICAgICBnb3RvIGZyZWVfZmFpbDsKLSAgICBzY3AtPmNtZF9s ZW4gPSAxMjsKLSAgICBzY3AtPnVzZV9zZyA9IDA7Ci0jZW5kaWYKLQogICAgIGZvciAoaSA9IDA7 IGkgPCBNQVhfSERSSVZFUzsgKytpKSB7IAogICAgICAgICBpZiAoIWhhLT5oZHJbaV0ucHJlc2Vu dCkgewogICAgICAgICAgICAgcnNjLT5oZHJfbGlzdFtpXS5idXMgPSAweGZmOyAKQEAgLTUxNjQs MjcgKzUyNDAsMTUgQEAKICAgICAgICAgICAgICAgICBjbWQtPnUuY2FjaGU2NC5EZXZpY2VObyA9 IGk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY21kLT51LmNhY2hlLkRldmlj ZU5vID0gaTsKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDAp Ci0gICAgICAgICAgICBnZHRoX2RvX3JlcShzcnAsIGNtZCwgY21uZCwgMzApOwotICAgICAgICAg ICAgaWYgKHNycC0+c3JfY29tbWFuZC0+U0NwLlN0YXR1cyA9PSBTX09LKQotICAgICAgICAgICAg ICAgIHJzYy0+aGRyX2xpc3RbaV0uY2x1c3Rlcl90eXBlID0gc3JwLT5zcl9jb21tYW5kLT5TQ3Au TWVzc2FnZTsKLSNlbHNlCi0gICAgICAgICAgICBnZHRoX2RvX2NtZChzY3AsIGNtZCwgY21uZCwg MzApOwotICAgICAgICAgICAgaWYgKHNjcC0+U0NwLlN0YXR1cyA9PSBTX09LKQotICAgICAgICAg ICAgICAgIHJzYy0+aGRyX2xpc3RbaV0uY2x1c3Rlcl90eXBlID0gc2NwLT5TQ3AuTWVzc2FnZTsK LSNlbmRpZgorICAgICAgICAgICAgaWYgKF9fZ2R0aF9leGVjdXRlKGhhLT5zZGV2LCBjbWQsIGNt bmQsIDMwLCAmY2x1c3Rlcl90eXBlKSA9PSBTX09LKQorICAgICAgICAgICAgICAgIHJzYy0+aGRy X2xpc3RbaV0uY2x1c3Rlcl90eXBlID0gY2x1c3Rlcl90eXBlOwogICAgICAgICB9CiAgICAgfSAK LSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgc2Nz aV9yZWxlYXNlX3JlcXVlc3Qoc3JwKTsKLSNlbHNlCi0gICAgc2NzaV9yZWxlYXNlX2NvbW1hbmQo c2NwKTsKLSNlbmRpZiAgICAgICAKLSAKKwogICAgIGlmIChjb3B5X3RvX3VzZXIoYXJnLCByc2Ms IHNpemVvZihnZHRoX2lvY3RsX3Jlc2NhbikpKQogICAgICAgICByYyA9IC1FRkFVTFQ7CiAgICAg ZWxzZQotCXJjID0gMDsKKyAgICAgICAgcmMgPSAwOwogCiBmcmVlX2ZhaWw6CiAgICAga2ZyZWUo cnNjKTsKQEAgLTUyMDIsNDAgKzUyNjYsMjEgQEAKICAgICBpbnQgcmMgPSAtRU5PTUVNOwogICAg IHVsb25nIGZsYWdzOwogICAgIGdkdGhfaGFfc3RyICpoYTsgCi0jaWYgTElOVVhfVkVSU0lPTl9D T0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgIFNjc2lfUmVxdWVzdCAqc3JwOwotI2Vs c2UKLSAgICBTY3NpX0NtbmQgKnNjcDsKLSNlbmRpZgogCiAgICAgcnNjID0ga21hbGxvYyhzaXpl b2YoKnJzYyksIEdGUF9LRVJORUwpOwogICAgIGNtZCA9IGttYWxsb2Moc2l6ZW9mKCpjbWQpLCBH RlBfS0VSTkVMKTsKICAgICBpZiAoIWNtZCB8fCAhcnNjKQotCWdvdG8gZnJlZV9mYWlsOworICAg ICAgICBnb3RvIGZyZWVfZmFpbDsKIAogICAgIGlmIChjb3B5X2Zyb21fdXNlcihyc2MsIGFyZywg c2l6ZW9mKGdkdGhfaW9jdGxfcmVzY2FuKSkgfHwKICAgICAgICAgcnNjLT5pb25vZGUgPj0gZ2R0 aF9jdHJfY291bnQpIHsKLQlyYyA9IC1FRkFVTFQ7Ci0JZ290byBmcmVlX2ZhaWw7CisgICAgICAg IHJjID0gLUVGQVVMVDsKKyAgICAgICAgZ290byBmcmVlX2ZhaWw7CiAgICAgfQogICAgIGhhbnVt ID0gcnNjLT5pb25vZGU7CiAgICAgaGEgPSBIQURBVEEoZ2R0aF9jdHJfdGFiW2hhbnVtXSk7CiAg ICAgbWVtc2V0KGNtZCwgMCwgc2l6ZW9mKGdkdGhfY21kX3N0cikpOwogCi0jaWYgTElOVVhfVkVS U0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgIHNycCAgPSBzY3NpX2FsbG9j YXRlX3JlcXVlc3QoaGEtPnNkZXYsIEdGUF9LRVJORUwpOwotICAgIGlmICghc3JwKQotICAgICAg ICBnb3RvIGZyZWVfZmFpbDsKLSAgICBzcnAtPnNyX2NtZF9sZW4gPSAxMjsKLSAgICBzcnAtPnNy X3VzZV9zZyA9IDA7Ci0jZWxzZQotICAgIHNjcCAgPSBzY3NpX2FsbG9jYXRlX2RldmljZShoYS0+ c2RldiwgMSwgRkFMU0UpOwotICAgIGlmICghc2NwKQotICAgICAgICBnb3RvIGZyZWVfZmFpbDsK LSAgICBzY3AtPmNtZF9sZW4gPSAxMjsKLSAgICBzY3AtPnVzZV9zZyA9IDA7Ci0jZW5kaWYKLSAg ICAgCiAgICAgaWYgKHJzYy0+ZmxhZyA9PSAwKSB7CiAgICAgICAgIC8qIG9sZCBtZXRob2Q6IHJl LWluaXQuIGNhY2hlIHNlcnZpY2UgKi8KICAgICAgICAgY21kLT5TZXJ2aWNlID0gQ0FDSEVTRVJW SUNFOwpAQCAtNTI0NiwxOSArNTI5MSw4IEBACiAgICAgICAgICAgICBjbWQtPk9wQ29kZSA9IEdE VF9JTklUOwogICAgICAgICAgICAgY21kLT51LmNhY2hlLkRldmljZU5vID0gTElOVVhfT1M7CiAg ICAgICAgIH0KLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDAp Ci0gICAgICAgIGdkdGhfZG9fcmVxKHNycCwgY21kLCBjbW5kLCAzMCk7Ci0gICAgICAgIHN0YXR1 cyA9ICh1c2hvcnQpc3JwLT5zcl9jb21tYW5kLT5TQ3AuU3RhdHVzOwotICAgICAgICBpbmZvID0g KHVsb25nMzIpc3JwLT5zcl9jb21tYW5kLT5TQ3AuTWVzc2FnZTsKLSNlbGlmIExJTlVYX1ZFUlNJ T05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDQsMCkKLSAgICAgICAgZ2R0aF9kb19jbWQoc2Nw LCBjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgc3RhdHVzID0gKHVzaG9ydClzY3AtPlNDcC5TdGF0 dXM7Ci0gICAgICAgIGluZm8gPSAodWxvbmczMilzY3AtPlNDcC5NZXNzYWdlOwotI2Vsc2UKLSAg ICAgICAgZ2R0aF9kb19jbWQoJnNjcCwgY21kLCBjbW5kLCAzMCk7Ci0gICAgICAgIHN0YXR1cyA9 ICh1c2hvcnQpc2NwLlNDcC5TdGF0dXM7Ci0gICAgICAgIGluZm8gPSAodWxvbmczMilzY3AuU0Nw Lk1lc3NhZ2U7Ci0jZW5kaWYKKworICAgICAgICBzdGF0dXMgPSBfX2dkdGhfZXhlY3V0ZShoYS0+ c2RldiwgY21kLCBjbW5kLCAzMCwgJmluZm8pOwogICAgICAgICBpID0gMDsKICAgICAgICAgaGRy X2NudCA9IChzdGF0dXMgPT0gU19PSyA/ICh1c2hvcnQpaW5mbyA6IDApOwogICAgIH0gZWxzZSB7 CkBAIC01MjczLDE1ICs1MzA3LDkgQEAKICAgICAgICAgICAgIGNtZC0+dS5jYWNoZTY0LkRldmlj ZU5vID0gaTsKICAgICAgICAgZWxzZSAKICAgICAgICAgICAgIGNtZC0+dS5jYWNoZS5EZXZpY2VO byA9IGk7Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQot ICAgICAgICBnZHRoX2RvX3JlcShzcnAsIGNtZCwgY21uZCwgMzApOwotICAgICAgICBzdGF0dXMg PSAodXNob3J0KXNycC0+c3JfY29tbWFuZC0+U0NwLlN0YXR1czsKLSAgICAgICAgaW5mbyA9ICh1 bG9uZzMyKXNycC0+c3JfY29tbWFuZC0+U0NwLk1lc3NhZ2U7Ci0jZWxzZQotICAgICAgICBnZHRo X2RvX2NtZChzY3AsIGNtZCwgY21uZCwgMzApOwotICAgICAgICBzdGF0dXMgPSAodXNob3J0KXNj cC0+U0NwLlN0YXR1czsKLSAgICAgICAgaW5mbyA9ICh1bG9uZzMyKXNjcC0+U0NwLk1lc3NhZ2U7 Ci0jZW5kaWYKKworICAgICAgICBzdGF0dXMgPSBfX2dkdGhfZXhlY3V0ZShoYS0+c2RldiwgY21k LCBjbW5kLCAzMCwgJmluZm8pOworCiAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZoYS0+c21w X2xvY2ssIGZsYWdzKTsKICAgICAgICAgcnNjLT5oZHJfbGlzdFtpXS5idXMgPSBoYS0+dmlydF9i dXM7CiAgICAgICAgIHJzYy0+aGRyX2xpc3RbaV0udGFyZ2V0ID0gaTsKQEAgLTUzMTMsMTUgKzUz NDEsOSBAQAogICAgICAgICAgICAgY21kLT51LmNhY2hlNjQuRGV2aWNlTm8gPSBpOwogICAgICAg ICBlbHNlCiAgICAgICAgICAgICBjbWQtPnUuY2FjaGUuRGV2aWNlTm8gPSBpOwotI2lmIExJTlVY X1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICAgICAgZ2R0aF9kb19y ZXEoc3JwLCBjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgc3RhdHVzID0gKHVzaG9ydClzcnAtPnNy X2NvbW1hbmQtPlNDcC5TdGF0dXM7Ci0gICAgICAgIGluZm8gPSAodWxvbmczMilzcnAtPnNyX2Nv bW1hbmQtPlNDcC5NZXNzYWdlOwotI2Vsc2UKLSAgICAgICAgZ2R0aF9kb19jbWQoc2NwLCBjbWQs IGNtbmQsIDMwKTsKLSAgICAgICAgc3RhdHVzID0gKHVzaG9ydClzY3AtPlNDcC5TdGF0dXM7Ci0g ICAgICAgIGluZm8gPSAodWxvbmczMilzY3AtPlNDcC5NZXNzYWdlOwotI2VuZGlmCisKKyAgICAg ICAgc3RhdHVzID0gX19nZHRoX2V4ZWN1dGUoaGEtPnNkZXYsIGNtZCwgY21uZCwgMzAsICZpbmZv KTsKKwogICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmaGEtPnNtcF9sb2NrLCBmbGFncyk7CiAg ICAgICAgIGhhLT5oZHJbaV0uZGV2dHlwZSA9IChzdGF0dXMgPT0gU19PSyA/ICh1c2hvcnQpaW5m byA6IDApOwogICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoYS0+c21wX2xvY2ssIGZs YWdzKTsKQEAgLTUzMzIsMTUgKzUzNTQsOSBAQAogICAgICAgICAgICAgY21kLT51LmNhY2hlNjQu RGV2aWNlTm8gPSBpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjbWQtPnUuY2FjaGUuRGV2 aWNlTm8gPSBpOwotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYs MCkKLSAgICAgICAgZ2R0aF9kb19yZXEoc3JwLCBjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgc3Rh dHVzID0gKHVzaG9ydClzcnAtPnNyX2NvbW1hbmQtPlNDcC5TdGF0dXM7Ci0gICAgICAgIGluZm8g PSAodWxvbmczMilzcnAtPnNyX2NvbW1hbmQtPlNDcC5NZXNzYWdlOwotI2Vsc2UKLSAgICAgICAg Z2R0aF9kb19jbWQoc2NwLCBjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgc3RhdHVzID0gKHVzaG9y dClzY3AtPlNDcC5TdGF0dXM7Ci0gICAgICAgIGluZm8gPSAodWxvbmczMilzY3AtPlNDcC5NZXNz YWdlOwotI2VuZGlmCisKKyAgICAgICAgc3RhdHVzID0gX19nZHRoX2V4ZWN1dGUoaGEtPnNkZXYs IGNtZCwgY21uZCwgMzAsICZpbmZvKTsKKwogICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmaGEt PnNtcF9sb2NrLCBmbGFncyk7CiAgICAgICAgIGhhLT5oZHJbaV0uY2x1c3Rlcl90eXBlID0gCiAg ICAgICAgICAgICAoKHN0YXR1cyA9PSBTX09LICYmICFzaGFyZWRfYWNjZXNzKSA/ICh1c2hvcnQp aW5mbyA6IDApOwpAQCAtNTM1MywyOSArNTM2OSwxOCBAQAogICAgICAgICAgICAgY21kLT51LmNh Y2hlNjQuRGV2aWNlTm8gPSBpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjbWQtPnUuY2Fj aGUuRGV2aWNlTm8gPSBpOwotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lP TigyLDYsMCkKLSAgICAgICAgZ2R0aF9kb19yZXEoc3JwLCBjbWQsIGNtbmQsIDMwKTsKLSAgICAg ICAgc3RhdHVzID0gKHVzaG9ydClzcnAtPnNyX2NvbW1hbmQtPlNDcC5TdGF0dXM7Ci0gICAgICAg IGluZm8gPSAodWxvbmczMilzcnAtPnNyX2NvbW1hbmQtPlNDcC5NZXNzYWdlOwotI2Vsc2UKLSAg ICAgICAgZ2R0aF9kb19jbWQoc2NwLCBjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgc3RhdHVzID0g KHVzaG9ydClzY3AtPlNDcC5TdGF0dXM7Ci0gICAgICAgIGluZm8gPSAodWxvbmczMilzY3AtPlND cC5NZXNzYWdlOwotI2VuZGlmCisKKyAgICAgICAgc3RhdHVzID0gX19nZHRoX2V4ZWN1dGUoaGEt PnNkZXYsIGNtZCwgY21uZCwgMzAsICZpbmZvKTsKKwogICAgICAgICBzcGluX2xvY2tfaXJxc2F2 ZSgmaGEtPnNtcF9sb2NrLCBmbGFncyk7CiAgICAgICAgIGhhLT5oZHJbaV0ucndfYXR0cmlicyA9 IChzdGF0dXMgPT0gU19PSyA/ICh1c2hvcnQpaW5mbyA6IDApOwogICAgICAgICBzcGluX3VubG9j a19pcnFyZXN0b3JlKCZoYS0+c21wX2xvY2ssIGZsYWdzKTsKICAgICB9Ci0jaWYgTElOVVhfVkVS U0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgIHNjc2lfcmVsZWFzZV9yZXF1 ZXN0KHNycCk7Ci0jZWxzZQotICAgIHNjc2lfcmVsZWFzZV9jb21tYW5kKHNjcCk7Ci0jZW5kaWYg ICAgICAgCiAgCiAgICAgaWYgKGNvcHlfdG9fdXNlcihhcmcsIHJzYywgc2l6ZW9mKGdkdGhfaW9j dGxfcmVzY2FuKSkpCiAgICAgICAgIHJjID0gLUVGQVVMVDsKICAgICBlbHNlCi0JcmMgPSAwOwor ICAgICAgICByYyA9IDA7CiAKIGZyZWVfZmFpbDoKICAgICBrZnJlZShyc2MpOwpAQCAtNTUxNSwx NyArNTUyMCwxOCBAQAogICAgICAgICBoYW51bSA9IHJlcy5pb25vZGU7IAogICAgICAgICBoYSA9 IEhBREFUQShnZHRoX2N0cl90YWJbaGFudW1dKTsKIAotICAgICAgICAvKiBCZWNhdXNlIHdlIG5l ZWQgYSBTY3NpX0NtbmQgc3RydWN0Liwgd2UgbWFrZSBhIHNjc2lfYWxsb2NhdGUgZGV2aWNlIGFs c28gZm9yIGtlcm5lbHMgPj0yLjYueCAqLyAgICAgICAgCiAjaWYgTElOVVhfVkVSU0lPTl9DT0RF ID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgICAgICBzY3AgID0gc2NzaV9nZXRfY29tbWFu ZChoYS0+c2RldiwgR0ZQX0tFUk5FTCk7CisgICAgICAgIHNjcCAgPSBrbWFsbG9jKHNpemVvZigq c2NwKSwgR0ZQX0tFUk5FTCk7CiAgICAgICAgIGlmICghc2NwKQogICAgICAgICAgICAgcmV0dXJu IC1FTk9NRU07CisgICAgICAgIG1lbXNldChzY3AsIDAsIHNpemVvZigqc2NwKSk7CisgICAgICAg IHNjcC0+ZGV2aWNlID0gaGEtPnNkZXY7CiAgICAgICAgIHNjcC0+Y21kX2xlbiA9IDEyOwogICAg ICAgICBzY3AtPnVzZV9zZyA9IDA7CiAgICAgICAgIHNjcC0+ZGV2aWNlLT5jaGFubmVsID0gdmly dF9jdHIgPyAwIDogcmVzLm51bWJlcjsKICAgICAgICAgcnZhbCA9IGdkdGhfZWhfYnVzX3Jlc2V0 KHNjcCk7CiAgICAgICAgIHJlcy5zdGF0dXMgPSAocnZhbCA9PSBTVUNDRVNTID8gU19PSyA6IFNf R0VORVJSKTsKLSAgICAgICAgc2NzaV9wdXRfY29tbWFuZChzY3ApOworICAgICAgICBrZnJlZShz Y3ApOwogI2Vsc2UKICAgICAgICAgc2NwICA9IHNjc2lfYWxsb2NhdGVfZGV2aWNlKGhhLT5zZGV2 LCAxLCBGQUxTRSk7CiAgICAgICAgIGlmICghc2NwKQpAQCAtNTU1OCwzNCArNTU2NCwxMiBAQAog ICAgIGludCAgICAgICAgICAgICBpOwogICAgIGdkdGhfaGFfc3RyICAgICAqaGE7CiAgICAgZ2R0 aF9jbWRfc3RyICAgIGdkdGNtZDsKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZF UlNJT04oMiw2LDApCi0gICAgU2NzaV9SZXF1ZXN0ICAgICpzcnA7Ci0jZWxzZQotICAgIFNjc2lf Q21uZCAgICAgICAqc2NwOwotI2VuZGlmCi0gICAgc3RydWN0IHNjc2lfZGV2aWNlICAgICAqc2Rl djsKICAgICBjaGFyICAgICAgICAgICAgY21uZFtNQVhfQ09NTUFORF9TSVpFXTsgICAKICAgICBt ZW1zZXQoY21uZCwgMHhmZiwgTUFYX0NPTU1BTkRfU0laRSk7CiAKICAgICBUUkFDRTIoKCJnZHRo X2ZsdXNoKCkgaGFudW0gJWRcbiIsaGFudW0pKTsKICAgICBoYSA9IEhBREFUQShnZHRoX2N0cl90 YWJbaGFudW1dKTsKIAotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigy LDYsMCkKLSAgICBzZGV2ID0gc2NzaV9nZXRfaG9zdF9kZXYoZ2R0aF9jdHJfdGFiW2hhbnVtXSk7 Ci0gICAgc3JwICA9IHNjc2lfYWxsb2NhdGVfcmVxdWVzdChzZGV2LCBHRlBfS0VSTkVMKTsKLSAg ICBpZiAoIXNycCkKLSAgICAgICAgcmV0dXJuOwotICAgIHNycC0+c3JfY21kX2xlbiA9IDEyOwot ICAgIHNycC0+c3JfdXNlX3NnID0gMDsKLSNlbHNlCi0gICAgc2RldiA9IHNjc2lfZ2V0X2hvc3Rf ZGV2KGdkdGhfY3RyX3RhYltoYW51bV0pOwotICAgIHNjcCAgPSBzY3NpX2FsbG9jYXRlX2Rldmlj ZShzZGV2LCAxLCBGQUxTRSk7Ci0gICAgaWYgKCFzY3ApCi0gICAgICAgIHJldHVybjsKLSAgICBz Y3AtPmNtZF9sZW4gPSAxMjsKLSAgICBzY3AtPnVzZV9zZyA9IDA7Ci0jZW5kaWYKLQogICAgIGZv ciAoaSA9IDA7IGkgPCBNQVhfSERSSVZFUzsgKytpKSB7CiAgICAgICAgIGlmIChoYS0+aGRyW2ld LnByZXNlbnQpIHsKICAgICAgICAgICAgIGdkdGNtZC5Cb2FyZE5vZGUgPSBMT0NBTEJPQVJEOwpA QCAtNTYwMSwyMCArNTU4NSwxMCBAQAogICAgICAgICAgICAgICAgIGdkdGNtZC51LmNhY2hlLnNn X2NhbnogPSAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgVFJBQ0UyKCgiZ2R0aF9mbHVz aCgpOiBmbHVzaCBoYSAlZCBkcml2ZSAlZFxuIiwgaGFudW0sIGkpKTsKLSNpZiBMSU5VWF9WRVJT SU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgICAgICAgICBnZHRoX2RvX3Jl cShzcnAsICZnZHRjbWQsIGNtbmQsIDMwKTsKLSNlbHNlCi0gICAgICAgICAgICBnZHRoX2RvX2Nt ZChzY3AsICZnZHRjbWQsIGNtbmQsIDMwKTsKLSNlbmRpZgorCisgICAgICAgICAgICBnZHRoX2V4 ZWN1dGUoZ2R0aF9jdHJfdGFiW2hhbnVtXSwgJmdkdGNtZCwgY21uZCwgMzAsIE5VTEwpOwogICAg ICAgICB9CiAgICAgfQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigy LDYsMCkKLSAgICBzY3NpX3JlbGVhc2VfcmVxdWVzdChzcnApOwotICAgIHNjc2lfZnJlZV9ob3N0 X2RldihzZGV2KTsKLSNlbHNlCi0gICAgc2NzaV9yZWxlYXNlX2NvbW1hbmQoc2NwKTsKLSAgICBz Y3NpX2ZyZWVfaG9zdF9kZXYoc2Rldik7Ci0jZW5kaWYKIH0KIAogLyogc2h1dGRvd24gcm91dGlu ZSAqLwpAQCAtNTYyMywxOCArNTU5NywxMSBAQAogICAgIGludCAgICAgICAgICAgICBoYW51bTsK ICNpZm5kZWYgX19hbHBoYV9fCiAgICAgZ2R0aF9jbWRfc3RyICAgIGdkdGNtZDsKLSNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgU2NzaV9SZXF1ZXN0 ICAgICpzcnA7Ci0gICAgc3RydWN0IHNjc2lfZGV2aWNlICAgICAqc2RldjsKLSNlbHNlCi0gICAg U2NzaV9DbW5kICAgICAgICpzY3A7Ci0gICAgc3RydWN0IHNjc2lfZGV2aWNlICAgICAqc2RldjsK LSNlbmRpZgogICAgIGNoYXIgICAgICAgICAgICBjbW5kW01BWF9DT01NQU5EX1NJWkVdOyAgIAog I2VuZGlmCiAKICAgICBpZiAobm90aWZpZXJfZGlzYWJsZWQpCi0gICAgCXJldHVybiBOT1RJRllf T0s7CisgICAgICAgIHJldHVybiBOT1RJRllfT0s7CiAKICAgICBUUkFDRTIoKCJnZHRoX2hhbHQo KSBldmVudCAlZFxuIiwoaW50KWV2ZW50KSk7CiAgICAgaWYgKGV2ZW50ICE9IFNZU19SRVNUQVJU ICYmIGV2ZW50ICE9IFNZU19IQUxUICYmIGV2ZW50ICE9IFNZU19QT1dFUl9PRkYpCkBAIC01NjUy LDMxICs1NjE5LDcgQEAKICAgICAgICAgZ2R0Y21kLlNlcnZpY2UgPSBDQUNIRVNFUlZJQ0U7CiAg ICAgICAgIGdkdGNtZC5PcENvZGUgPSBHRFRfUkVTRVQ7CiAgICAgICAgIFRSQUNFMigoImdkdGhf aGFsdCgpOiByZXNldCBjb250cm9sbGVyICVkXG4iLCBoYW51bSkpOwotI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICAgICAgc2RldiA9IHNjc2lfZ2V0 X2hvc3RfZGV2KGdkdGhfY3RyX3RhYltoYW51bV0pOwotICAgICAgICBzcnAgID0gc2NzaV9hbGxv Y2F0ZV9yZXF1ZXN0KHNkZXYsIEdGUF9LRVJORUwpOwotICAgICAgICBpZiAoIXNycCkgewotICAg ICAgICAgICAgdW5yZWdpc3Rlcl9yZWJvb3Rfbm90aWZpZXIoJmdkdGhfbm90aWZpZXIpOwotICAg ICAgICAgICAgcmV0dXJuIE5PVElGWV9PSzsKLSAgICAgICAgfQotICAgICAgICBzcnAtPnNyX2Nt ZF9sZW4gPSAxMjsKLSAgICAgICAgc3JwLT5zcl91c2Vfc2cgPSAwOwotICAgICAgICBnZHRoX2Rv X3JlcShzcnAsICZnZHRjbWQsIGNtbmQsIDEwKTsKLSAgICAgICAgc2NzaV9yZWxlYXNlX3JlcXVl c3Qoc3JwKTsKLSAgICAgICAgc2NzaV9mcmVlX2hvc3RfZGV2KHNkZXYpOwotI2Vsc2UKLSAgICAg ICAgc2RldiA9IHNjc2lfZ2V0X2hvc3RfZGV2KGdkdGhfY3RyX3RhYltoYW51bV0pOwotICAgICAg ICBzY3AgID0gc2NzaV9hbGxvY2F0ZV9kZXZpY2Uoc2RldiwgMSwgRkFMU0UpOwotICAgICAgICBp ZiAoIXNjcCkgewotICAgICAgICAgICAgdW5yZWdpc3Rlcl9yZWJvb3Rfbm90aWZpZXIoJmdkdGhf bm90aWZpZXIpOwotICAgICAgICAgICAgcmV0dXJuIE5PVElGWV9PSzsKLSAgICAgICAgfQotICAg ICAgICBzY3AtPmNtZF9sZW4gPSAxMjsKLSAgICAgICAgc2NwLT51c2Vfc2cgPSAwOwotICAgICAg ICBnZHRoX2RvX2NtZChzY3AsICZnZHRjbWQsIGNtbmQsIDEwKTsKLSAgICAgICAgc2NzaV9yZWxl YXNlX2NvbW1hbmQoc2NwKTsKLSAgICAgICAgc2NzaV9mcmVlX2hvc3RfZGV2KHNkZXYpOwotI2Vu ZGlmCisgICAgICAgIGdkdGhfZXhlY3V0ZShnZHRoX2N0cl90YWJbaGFudW1dLCAmZ2R0Y21kLCBj bW5kLCAxMCwgTlVMTCk7CiAjZW5kaWYKICAgICB9CiAgICAgcHJpbnRrKCJEb25lLlxuIik7CkBA IC01Njg3LDcgKzU2MzAsMjIgQEAKICAgICByZXR1cm4gTk9USUZZX09LOwogfQogCisjaWYgTElO VVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQorLyogY29uZmlndXJlIGx1 biAqLworc3RhdGljIGludCBnZHRoX3NsYXZlX2NvbmZpZ3VyZShzdHJ1Y3Qgc2NzaV9kZXZpY2Ug KnNkZXYpCit7CisgICAgc2NzaV9hZGp1c3RfcXVldWVfZGVwdGgoc2RldiwgMCwgc2Rldi0+aG9z dC0+Y21kX3Blcl9sdW4pOworICAgIHNkZXYtPnNraXBfbXNfcGFnZV8zZiA9IDE7CisgICAgc2Rl di0+c2tpcF9tc19wYWdlXzggPSAxOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKKyNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCiBzdGF0aWMgc3RydWN0 IHNjc2lfaG9zdF90ZW1wbGF0ZSBkcml2ZXJfdGVtcGxhdGUgPSB7CisjZWxzZQorc3RhdGljIFNj c2lfSG9zdF9UZW1wbGF0ZSBkcml2ZXJfdGVtcGxhdGUgPSB7CisjZW5kaWYKICAgICAgICAgLnBy b2NfbmFtZSAgICAgICAgICAgICAgPSAiZ2R0aCIsIAogICAgICAgICAucHJvY19pbmZvICAgICAg ICAgICAgICA9IGdkdGhfcHJvY19pbmZvLAogICAgICAgICAubmFtZSAgICAgICAgICAgICAgICAg ICA9ICJHRFQgU0NTSSBEaXNrIEFycmF5IENvbnRyb2xsZXIiLApAQCAtNTY5OCw2ICs1NjU2LDkg QEAKICAgICAgICAgLmVoX2J1c19yZXNldF9oYW5kbGVyICAgPSBnZHRoX2VoX2J1c19yZXNldCwK ICAgICAgICAgLmJpb3NfcGFyYW0gICAgICAgICAgICAgPSBnZHRoX2Jpb3NfcGFyYW0sCiAgICAg ICAgIC5jYW5fcXVldWUgICAgICAgICAgICAgID0gR0RUSF9NQVhDTURTLAorI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKKyAgICAgICAgLnNsYXZlX2NvbmZp Z3VyZSAgICAgICAgPSBnZHRoX3NsYXZlX2NvbmZpZ3VyZSwKKyNlbmRpZgogICAgICAgICAudGhp c19pZCAgICAgICAgICAgICAgICA9IC0xLAogICAgICAgICAuc2dfdGFibGVzaXplICAgICAgICAg ICA9IEdEVEhfTUFYU0csCiAgICAgICAgIC5jbWRfcGVyX2x1biAgICAgICAgICAgID0gR0RUSF9N QVhDX1BfTCwKZGlmZiAtdSAuL2dkdGguaCBuZXcvZ2R0aC5oCi0tLSAuL2dkdGguaAkyMDA2LTA1 LTAzIDExOjUzOjMyLjAwMDAwMDAwMCArMDIwMAorKysgbmV3L2dkdGguaAkyMDA2LTA1LTAyIDE2 OjAyOjAwLjAwMDAwMDAwMCArMDIwMApAQCAtNCwxMyArNCwxMyBAQAogLyoKICAqIEhlYWRlciBm aWxlIGZvciB0aGUgR0RUIERpc2sgQXJyYXkvU3RvcmFnZSBSQUlEIGNvbnRyb2xsZXJzIGRyaXZl ciBmb3IgTGludXgKICAqIAotICogZ2R0aC5oIENvcHlyaWdodCAoQykgMTk5NS0wMyBJQ1Agdm9y dGV4LCBBY2hpbSBMZXVibmVyCisgKiBnZHRoLmggQ29weXJpZ2h0IChDKSAxOTk1LTA2IElDUCB2 b3J0ZXgsIEFjaGltIExldWJuZXIKICAqIFNlZSBnZHRoLmMgZm9yIGZ1cnRoZXIgaW5mb3JtYXRp b25zIGFuZCAKICAqIGJlbG93IGZvciBzdXBwb3J0ZWQgY29udHJvbGxlciB0eXBlcwogICoKICAq IDxhY2hpbV9sZXVibmVyQGFkYXB0ZWMuY29tPgogICoKLSAqICRJZDogZ2R0aC5oLHYgMS41NyAy MDA0LzAzLzMxIDExOjUyOjA5IGFjaGltIEV4cCAkCisgKiAkSWQ6IGdkdGguaCx2IDEuNTggMjAw Ni8wMS8xMSAxNjoxNDowOSBhY2hpbSBFeHAgJAogICovCiAKICNpbmNsdWRlIDxsaW51eC92ZXJz aW9uLmg+CkBAIC0yNiw5ICsyNiw5IEBACiAvKiBkZWZpbmVzLCBtYWNyb3MgKi8KIAogLyogZHJp dmVyIHZlcnNpb24gKi8KLSNkZWZpbmUgR0RUSF9WRVJTSU9OX1NUUiAgICAgICAgIjMuMDQiCisj ZGVmaW5lIEdEVEhfVkVSU0lPTl9TVFIgICAgICAgICIzLjA1IgogI2RlZmluZSBHRFRIX1ZFUlNJ T04gICAgICAgICAgICAzCi0jZGVmaW5lIEdEVEhfU1VCVkVSU0lPTiAgICAgICAgIDQKKyNkZWZp bmUgR0RUSF9TVUJWRVJTSU9OICAgICAgICAgNQogCiAvKiBwcm90b2NvbCB2ZXJzaW9uICovCiAj ZGVmaW5lIFBST1RPQ09MX1ZFUlNJT04gICAgICAgIDEKZGlmZiAtdSAuL2dkdGhfa2NvbXBhdC5o IG5ldy9nZHRoX2tjb21wYXQuaAotLS0gLi9nZHRoX2tjb21wYXQuaAkyMDA2LTA1LTAzIDExOjUz OjMyLjAwMDAwMDAwMCArMDIwMAorKysgbmV3L2dkdGhfa2NvbXBhdC5oCTIwMDYtMDUtMDIgMTY6 MDI6MDAuMDAwMDAwMDAwICswMjAwCkBAIC0xLDUgKzEsMyBAQAotCi0KICNpZm5kZWYgSVJRX0hB TkRMRUQKIHR5cGVkZWYgdm9pZCBpcnFyZXR1cm5fdDsKICNkZWZpbmUgSVJRX05PTkUKQEAgLTEw LDYgKzgsMTggQEAKICNkZWZpbmUgTU9EVUxFX0xJQ0VOU0UoeCkKICNlbmRpZgogCisjaWZuZGVm IF9faW9tZW0KKyNkZWZpbmUgX19pb21lbQorI2VuZGlmCisKKyNpZm5kZWYgX19hdHRyaWJ1dGVf dXNlZF9fCisjZGVmaW5lIF9fYXR0cmlidXRlX3VzZWRfXwlfX2RldmluaXRkYXRhCisjZW5kaWYK KworI2lmbmRlZiBfX3VzZXIKKyNkZWZpbmUgX191c2VyCisjZW5kaWYKKwogI2lmbmRlZiBTRVJW SUNFX0FDVElPTl9JTgogI2RlZmluZSBTRVJWSUNFX0FDVElPTl9JTgkweDllCiAjZW5kaWYKZGlm ZiAtdSAuL2dkdGhfcHJvYy5jIG5ldy9nZHRoX3Byb2MuYwotLS0gLi9nZHRoX3Byb2MuYwkyMDA2 LTA1LTAzIDExOjUzOjMyLjAwMDAwMDAwMCArMDIwMAorKysgbmV3L2dkdGhfcHJvYy5jCTIwMDYt MDUtMDIgMTY6MDE6NTguMDAwMDAwMDAwICswMjAwCkBAIC0xLDUgKzEsNSBAQAogLyogZ2R0aF9w cm9jLmMgCi0gKiAkSWQ6IGdkdGhfcHJvYy5jLHYgMS40MiAyMDA0LzAzLzA1IDE1OjUwOjIwIGFj aGltIEV4cCAkCisgKiAkSWQ6IGdkdGhfcHJvYy5jLHYgMS40MyAyMDA2LzAxLzExIDE2OjE1OjAw IGFjaGltIEV4cCAkCiAgKi8KIAogI2luY2x1ZGUgPGxpbnV4L2NvbXBsZXRpb24uaD4KQEAgLTUx LDU3ICs1MSwyNiBAQAogc3RhdGljIGludCBnZHRoX3NldF9pbmZvKGNoYXIgKmJ1ZmZlcixpbnQg bGVuZ3RoLHN0cnVjdCBTY3NpX0hvc3QgKmhvc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IGhhbnVtLGludCBidXNudW0pCiB7Ci0gICAgaW50ICAgICAgICAgICAgIHJldF92YWwgPSAt RUlOVkFMOwotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkK LSAgICBTY3NpX1JlcXVlc3QgICAgKnNjcDsKLSAgICBzdHJ1Y3Qgc2NzaV9kZXZpY2UgICAgICpz ZGV2OwotI2Vsc2UKLSAgICBTY3NpX0NtbmQgICAgICAgKnNjcDsKLSAgICBzdHJ1Y3Qgc2NzaV9k ZXZpY2UgICAgICpzZGV2OwotI2VuZGlmCi0gICAgVFJBQ0UyKCgiZ2R0aF9zZXRfaW5mbygpIGhh ICVkIGJ1cyAlZFxuIixoYW51bSxidXNudW0pKTsKKyAgICBpbnQgcmV0X3ZhbCA9IC1FSU5WQUw7 CiAKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAg c2RldiA9IHNjc2lfZ2V0X2hvc3RfZGV2KGhvc3QpOwotICAgIHNjcCAgPSBzY3NpX2FsbG9jYXRl X3JlcXVlc3Qoc2RldiwgR0ZQX0tFUk5FTCk7Ci0gICAgaWYgKCFzY3ApCi0gICAgICAgIHJldHVy biAtRU5PTUVNOwotICAgIHNjcC0+c3JfY21kX2xlbiA9IDEyOwotICAgIHNjcC0+c3JfdXNlX3Nn ID0gMDsKLSNlbHNlCi0gICAgc2RldiA9IHNjc2lfZ2V0X2hvc3RfZGV2KGhvc3QpOwotICAgIHNj cCAgPSBzY3NpX2FsbG9jYXRlX2RldmljZShzZGV2LCAxLCBGQUxTRSk7Ci0gICAgaWYgKCFzY3Ap Ci0gICAgICAgIHJldHVybiAtRU5PTUVNOwotICAgIHNjcC0+Y21kX2xlbiA9IDEyOwotICAgIHNj cC0+dXNlX3NnID0gMDsKLSNlbmRpZgorICAgIFRSQUNFMigoImdkdGhfc2V0X2luZm8oKSBoYSAl ZCBidXMgJWRcbiIsaGFudW0sYnVzbnVtKSk7CiAKICAgICBpZiAobGVuZ3RoID49IDQpIHsKICAg ICAgICAgaWYgKHN0cm5jbXAoYnVmZmVyLCJnZHRoIiw0KSA9PSAwKSB7CiAgICAgICAgICAgICBi dWZmZXIgKz0gNTsKICAgICAgICAgICAgIGxlbmd0aCAtPSA1OwotICAgICAgICAgICAgcmV0X3Zh bCA9IGdkdGhfc2V0X2FzY19pbmZvKCBidWZmZXIsIGxlbmd0aCwgaGFudW0sIHNjcCApOworICAg ICAgICAgICAgcmV0X3ZhbCA9IGdkdGhfc2V0X2FzY19pbmZvKGhvc3QsIGJ1ZmZlciwgbGVuZ3Ro LCBoYW51bSk7CiAgICAgICAgIH0KICAgICB9Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtF Uk5FTF9WRVJTSU9OKDIsNiwwKQotICAgIHNjc2lfcmVsZWFzZV9yZXF1ZXN0KHNjcCk7Ci0gICAg c2NzaV9mcmVlX2hvc3RfZGV2KHNkZXYpOwotI2Vsc2UKLSAgICBzY3NpX3JlbGVhc2VfY29tbWFu ZChzY3ApOwotICAgIHNjc2lfZnJlZV9ob3N0X2RldihzZGV2KTsKLSNlbmRpZgorCiAgICAgcmV0 dXJuIHJldF92YWw7CiB9CiAgICAgICAgICAKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VS TkVMX1ZFUlNJT04oMiw2LDApCi1zdGF0aWMgaW50IGdkdGhfc2V0X2FzY19pbmZvKGNoYXIgKmJ1 ZmZlcixpbnQgbGVuZ3RoLGludCBoYW51bSxTY3NpX1JlcXVlc3QgKnNjcCkKLSNlbHNlCi1zdGF0 aWMgaW50IGdkdGhfc2V0X2FzY19pbmZvKGNoYXIgKmJ1ZmZlcixpbnQgbGVuZ3RoLGludCBoYW51 bSxTY3NpX0NtbmQgKnNjcCkKLSNlbmRpZgorc3RhdGljIGludCBnZHRoX3NldF9hc2NfaW5mbyhz dHJ1Y3QgU2NzaV9Ib3N0ICpob3N0LCBjaGFyICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgbGVuZ3RoLGludCBoYW51bSkKIHsKLSAgICBpbnQgICAgICAgICAgICAgb3JpZ19s ZW5ndGgsIGRyaXZlLCB3Yl9tb2RlOwotICAgIGludCAgICAgICAgICAgICBpLCBmb3VuZDsKKyAg ICBpbnQgb3JpZ19sZW5ndGgsIGRyaXZlLCB3Yl9tb2RlOworICAgIGludCBpLCBmb3VuZDsKICAg ICBnZHRoX2hhX3N0ciAgICAgKmhhOwogICAgIGdkdGhfY21kX3N0ciAgICBnZHRjbWQ7CiAgICAg Z2R0aF9jcGFyX3N0ciAgICpwY3BhcjsKQEAgLTE0NiwxMSArMTE1LDggQEAKICAgICAgICAgICAg ICAgICAgICAgZ2R0Y21kLnUuY2FjaGUuRGV2aWNlTm8gPSBpOwogICAgICAgICAgICAgICAgICAg ICBnZHRjbWQudS5jYWNoZS5CbG9ja05vID0gMTsKICAgICAgICAgICAgICAgICB9Ci0jaWYgTElO VVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgICAgICAgICAgICAg IGdkdGhfZG9fcmVxKHNjcCwgJmdkdGNtZCwgY21uZCwgMzApOwotI2Vsc2UKLSAgICAgICAgICAg ICAgICBnZHRoX2RvX2NtZChzY3AsICZnZHRjbWQsIGNtbmQsIDMwKTsKLSNlbmRpZgorCisgICAg ICAgICAgICAgICAgZ2R0aF9leGVjdXRlKGhvc3QsICZnZHRjbWQsIGNtbmQsIDMwLCBOVUxMKTsK ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoIWZvdW5kKQpAQCAtMjAyLDEx ICsxNjgsOSBAQAogICAgICAgICBnZHRjbWQudS5pb2N0bC5zdWJmdW5jID0gQ0FDSEVfQ09ORklH OwogICAgICAgICBnZHRjbWQudS5pb2N0bC5jaGFubmVsID0gSU5WQUxJRF9DSEFOTkVMOwogICAg ICAgICBwY3Bhci0+d3JpdGVfYmFjayA9IHdiX21vZGU9PTEgPyAwOjE7Ci0jaWYgTElOVVhfVkVS U0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgICAgICBnZHRoX2RvX3JlcShz Y3AsICZnZHRjbWQsIGNtbmQsIDMwKTsKLSNlbHNlCi0gICAgICAgIGdkdGhfZG9fY21kKHNjcCwg JmdkdGNtZCwgY21uZCwgMzApOwotI2VuZGlmCisKKyAgICAgICAgZ2R0aF9leGVjdXRlKGhvc3Qs ICZnZHRjbWQsIGNtbmQsIDMwLCBOVUxMKTsKKwogICAgICAgICBnZHRoX2lvY3RsX2ZyZWUoaGFu dW0sIEdEVEhfU0NSQVRDSCwgaGEtPnBzY3JhdGNoLCBwYWRkcik7CiAgICAgICAgIHByaW50aygi RG9uZS5cbiIpOwogICAgICAgICByZXR1cm4ob3JpZ19sZW5ndGgpOwpAQCAtMjMwLDEzICsxOTQs NiBAQAogCiAgICAgZ2R0aF9jbWRfc3RyICpnZHRjbWQ7CiAgICAgZ2R0aF9ldnRfc3RyICplc3Ry OwotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICBT Y3NpX1JlcXVlc3QgKnNjcDsKLSAgICBzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXY7Ci0jZWxzZQot ICAgIFNjc2lfQ21uZCAqc2NwOwotICAgIHN0cnVjdCBzY3NpX2RldmljZSAqc2RldjsKLSNlbmRp ZgogICAgIGNoYXIgaHJlY1sxNjFdOwogICAgIHN0cnVjdCB0aW1ldmFsIHR2OwogCkBAIC0yNTIs NyArMjA5LDcgQEAKICAgICBnZHRjbWQgPSBrbWFsbG9jKHNpemVvZigqZ2R0Y21kKSwgR0ZQX0tF Uk5FTCk7CiAgICAgZXN0ciA9IGttYWxsb2Moc2l6ZW9mKCplc3RyKSwgR0ZQX0tFUk5FTCk7CiAg ICAgaWYgKCFnZHRjbWQgfHwgIWVzdHIpCi0JZ290byBmcmVlX2ZhaWw7CisgICAgICAgIGdvdG8g ZnJlZV9mYWlsOwogCiAgICAgbWVtc2V0KGNtbmQsIDB4ZmYsIDEyKTsKICAgICBtZW1zZXQoZ2R0 Y21kLCAwLCBzaXplb2YoZ2R0aF9jbWRfc3RyKSk7CkBAIC0yNjAsMjggKzIxNyw2IEBACiAgICAg VFJBQ0UyKCgiZ2R0aF9nZXRfaW5mbygpIGhhICVkIGJ1cyAlZFxuIixoYW51bSxidXNudW0pKTsK ICAgICBoYSA9IEhBREFUQShnZHRoX2N0cl90YWJbaGFudW1dKTsKIAotI2lmIExJTlVYX1ZFUlNJ T05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICBzZGV2ID0gc2NzaV9nZXRfaG9z dF9kZXYoaG9zdCk7Ci0gICAgc2NwICA9IHNjc2lfYWxsb2NhdGVfcmVxdWVzdChzZGV2LCBHRlBf S0VSTkVMKTsKLSAgICBpZiAoIXNjcCkKLSAgICAgICAgZ290byBmcmVlX2ZhaWw7Ci0gICAgc2Nw LT5zcl9jbWRfbGVuID0gMTI7Ci0gICAgc2NwLT5zcl91c2Vfc2cgPSAwOwotI2VsaWYgTElOVVhf VkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNCwwKQotICAgIHNkZXYgPSBzY3NpX2dl dF9ob3N0X2Rldihob3N0KTsKLSAgICBzY3AgID0gc2NzaV9hbGxvY2F0ZV9kZXZpY2Uoc2Rldiwg MSwgRkFMU0UpOwotICAgIGlmICghc2NwKQotICAgICAgICBnb3RvIGZyZWVfZmFpbDsKLSAgICBz Y3AtPmNtZF9sZW4gPSAxMjsKLSAgICBzY3AtPnVzZV9zZyA9IDA7Ci0jZWxzZQotICAgIG1lbXNl dCgmc2RldiwwLHNpemVvZihzdHJ1Y3Qgc2NzaV9kZXZpY2UpKTsKLSAgICBtZW1zZXQoJnNjcCwg MCxzaXplb2YoU2NzaV9DbW5kKSk7Ci0gICAgc2Rldi5ob3N0ID0gc2NwLmhvc3QgPSBob3N0Owot ICAgIHNkZXYuaWQgPSBzY3AudGFyZ2V0ID0gc2Rldi5ob3N0LT50aGlzX2lkOwotICAgIHNjcC5k ZXZpY2UgPSAmc2RldjsKLSNlbmRpZgotICAgIAogICAgIAogICAgIC8qIHJlcXVlc3QgaXMgaS5l LiAiY2F0IC9wcm9jL3Njc2kvZ2R0aC8wIiAqLyAKICAgICAvKiBmb3JtYXQ6ICUtMTVzXHQlLTEw c1x0JS0xNXNcdCVzICovCkBAIC0zODYsMTYgKzMyMSw5IEBACiAgICAgICAgICAgICAgICAgc2l6 ZW9mKHBkcy0+bGlzdFswXSk7CiAgICAgICAgICAgICBpZiAocGRzLT5lbnRyaWVzID4gY250KQog ICAgICAgICAgICAgICAgIHBkcy0+ZW50cmllcyA9IGNudDsKLSNpZiBMSU5VWF9WRVJTSU9OX0NP REUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgICAgICAgICBnZHRoX2RvX3JlcShzY3As IGdkdGNtZCwgY21uZCwgMzApOwotICAgICAgICAgICAgaWYgKHNjcC0+c3JfY29tbWFuZC0+U0Nw LlN0YXR1cyAhPSBTX09LKSAKLSNlbHNlCi0gICAgICAgICAgICBnZHRoX2RvX2NtZChzY3AsIGdk dGNtZCwgY21uZCwgMzApOwotICAgICAgICAgICAgaWYgKHNjcC0+U0NwLlN0YXR1cyAhPSBTX09L KSAKLSNlbmRpZgotICAgICAgICAgICAgeyAKKworICAgICAgICAgICAgaWYgKGdkdGhfZXhlY3V0 ZShob3N0LCBnZHRjbWQsIGNtbmQsIDMwLCBOVUxMKSAhPSBTX09LKQogICAgICAgICAgICAgICAg IHBkcy0+Y291bnQgPSAwOwotICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvKiBvdGhlciBJ T0NUTHMgbXVzdCBmaXQgaW50byBhcmVhIEdEVEhfU0NSQVRDSC80ICovCiAgICAgICAgICAgICBm b3IgKGogPSAwOyBqIDwgaGEtPnJhd1tpXS5wZGV2X2NudDsgKytqKSB7CkBAIC00MTAsMTQgKzMz OCw4IEBACiAgICAgICAgICAgICAgICAgZ2R0Y21kLT51LmlvY3RsLnN1YmZ1bmMgPSBTQ1NJX0RS X0lORk8gfCBMX0NUUkxfUEFUVEVSTjsKICAgICAgICAgICAgICAgICBnZHRjbWQtPnUuaW9jdGwu Y2hhbm5lbCA9IAogICAgICAgICAgICAgICAgICAgICBoYS0+cmF3W2ldLmFkZHJlc3MgfCBoYS0+ cmF3W2ldLmlkX2xpc3Rbal07Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJT SU9OKDIsNiwwKQotICAgICAgICAgICAgICAgIGdkdGhfZG9fcmVxKHNjcCwgZ2R0Y21kLCBjbW5k LCAzMCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNjcC0+c3JfY29tbWFuZC0+U0NwLlN0YXR1cyA9 PSBTX09LKSAKLSNlbHNlCi0gICAgICAgICAgICAgICAgZ2R0aF9kb19jbWQoc2NwLCBnZHRjbWQs IGNtbmQsIDMwKTsKLSAgICAgICAgICAgICAgICBpZiAoc2NwLT5TQ3AuU3RhdHVzID09IFNfT0sp IAotI2VuZGlmCi0gICAgICAgICAgICAgICAgeworCisgICAgICAgICAgICAgICAgaWYgKGdkdGhf ZXhlY3V0ZShob3N0LCBnZHRjbWQsIGNtbmQsIDMwLCBOVUxMKSA9PSBTX09LKSB7CiAgICAgICAg ICAgICAgICAgICAgIHN0cm5jcHkoaHJlYyxwZGktPnZlbmRvciw4KTsKICAgICAgICAgICAgICAg ICAgICAgc3RybmNweShocmVjKzgscGRpLT5wcm9kdWN0LDE2KTsKICAgICAgICAgICAgICAgICAg ICAgc3RybmNweShocmVjKzI0LHBkaS0+cmV2aXNpb24sNCk7CkBAIC00NjYsMTQgKzM4OCw4IEBA CiAgICAgICAgICAgICAgICAgICAgIGdkdGNtZC0+dS5pb2N0bC5jaGFubmVsID0gCiAgICAgICAg ICAgICAgICAgICAgICAgICBoYS0+cmF3W2ldLmFkZHJlc3MgfCBoYS0+cmF3W2ldLmlkX2xpc3Rb al07CiAgICAgICAgICAgICAgICAgICAgIHBkZWYtPnNkZGNfdHlwZSA9IDB4MDg7Ci0jaWYgTElO VVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgICAgICAgICAgICAg ICAgICBnZHRoX2RvX3JlcShzY3AsIGdkdGNtZCwgY21uZCwgMzApOwotICAgICAgICAgICAgICAg ICAgICBpZiAoc2NwLT5zcl9jb21tYW5kLT5TQ3AuU3RhdHVzID09IFNfT0spIAotI2Vsc2UKLSAg ICAgICAgICAgICAgICAgICAgZ2R0aF9kb19jbWQoc2NwLCBnZHRjbWQsIGNtbmQsIDMwKTsKLSAg ICAgICAgICAgICAgICAgICAgaWYgKHNjcC0+U0NwLlN0YXR1cyA9PSBTX09LKSAKLSNlbmRpZgot ICAgICAgICAgICAgICAgICAgICB7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGdkdGhfZXhl Y3V0ZShob3N0LCBnZHRjbWQsIGNtbmQsIDMwLCBOVUxMKSA9PSBTX09LKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplID0gc3ByaW50ZihidWZmZXIrbGVuLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIiBHcm93biBEZWZlY3RzOlx0JWRcbiIsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZGVmLT5zZGRjX2NudCk7CkBAIC01MTks MTYgKzQzNSw4IEBACiAgICAgICAgICAgICAgICAgZ2R0Y21kLT51LmlvY3RsLnBhcmFtX3NpemUg PSBzaXplb2YoZ2R0aF9jZHJpbmZvX3N0cik7CiAgICAgICAgICAgICAgICAgZ2R0Y21kLT51Lmlv Y3RsLnN1YmZ1bmMgPSBDQUNIRV9EUlZfSU5GTzsKICAgICAgICAgICAgICAgICBnZHRjbWQtPnUu aW9jdGwuY2hhbm5lbCA9IGRydl9ubzsKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM X1ZFUlNJT04oMiw2LDApCi0gICAgICAgICAgICAgICAgZ2R0aF9kb19yZXEoc2NwLCBnZHRjbWQs IGNtbmQsIDMwKTsKLSAgICAgICAgICAgICAgICBpZiAoc2NwLT5zcl9jb21tYW5kLT5TQ3AuU3Rh dHVzICE9IFNfT0spIAotI2Vsc2UKLSAgICAgICAgICAgICAgICBnZHRoX2RvX2NtZChzY3AsIGdk dGNtZCwgY21uZCwgMzApOwotICAgICAgICAgICAgICAgIGlmIChzY3AtPlNDcC5TdGF0dXMgIT0g U19PSykKLSNlbmRpZgotICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoZ2R0 aF9leGVjdXRlKGhvc3QsIGdkdGNtZCwgY21uZCwgMzAsIE5VTEwpICE9IFNfT0spCiAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBw Y2RpLT5sZF9kdHlwZSA+Pj0gMTY7CiAgICAgICAgICAgICAgICAgaisrOwogICAgICAgICAgICAg ICAgIGlmIChwY2RpLT5sZF9kdHlwZSA+IDIpIHsKQEAgLTYyOSwxNCArNTM3LDcgQEAKICAgICAg ICAgICAgIGdkdGNtZC0+dS5pb2N0bC5wYXJhbV9zaXplID0gc2l6ZW9mKGdkdGhfYXJyYXlpbmZf c3RyKTsKICAgICAgICAgICAgIGdkdGNtZC0+dS5pb2N0bC5zdWJmdW5jID0gQVJSQVlfSU5GTyB8 IExBX0NUUkxfUEFUVEVSTjsKICAgICAgICAgICAgIGdkdGNtZC0+dS5pb2N0bC5jaGFubmVsID0g aTsKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAg ICAgICAgICBnZHRoX2RvX3JlcShzY3AsIGdkdGNtZCwgY21uZCwgMzApOwotICAgICAgICAgICAg aWYgKHNjcC0+c3JfY29tbWFuZC0+U0NwLlN0YXR1cyA9PSBTX09LKSAKLSNlbHNlCi0gICAgICAg ICAgICBnZHRoX2RvX2NtZChzY3AsIGdkdGNtZCwgY21uZCwgMzApOwotICAgICAgICAgICAgaWYg KHNjcC0+U0NwLlN0YXR1cyA9PSBTX09LKSAKLSNlbmRpZgotICAgICAgICAgICAgeworICAgICAg ICAgICAgaWYgKGdkdGhfZXhlY3V0ZShob3N0LCBnZHRjbWQsIGNtbmQsIDMwLCBOVUxMKSA9PSBT X09LKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBhaS0+YWlfc3RhdGUgPT0gMCkKICAgICAgICAg ICAgICAgICAgICAgc3RyY3B5KGhyZWMsICJpZGxlIik7CiAgICAgICAgICAgICAgICAgZWxzZSBp ZiAocGFpLT5haV9zdGF0ZSA9PSAyKQpAQCAtNzEwLDE0ICs2MTEsNyBAQAogICAgICAgICAgICAg Z2R0Y21kLT51LmlvY3RsLmNoYW5uZWwgPSBpOwogICAgICAgICAgICAgcGhnLT5lbnRyaWVzID0g TUFYX0hEUklWRVM7CiAgICAgICAgICAgICBwaGctPm9mZnNldCA9IEdEVE9GRlNPRihnZHRoX2hn ZXRfc3RyLCBlbnRyeVswXSk7IAotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVS U0lPTigyLDYsMCkKLSAgICAgICAgICAgIGdkdGhfZG9fcmVxKHNjcCwgZ2R0Y21kLCBjbW5kLCAz MCk7Ci0gICAgICAgICAgICBpZiAoc2NwLT5zcl9jb21tYW5kLT5TQ3AuU3RhdHVzICE9IFNfT0sp IAotI2Vsc2UKLSAgICAgICAgICAgIGdkdGhfZG9fY21kKHNjcCwgZ2R0Y21kLCBjbW5kLCAzMCk7 Ci0gICAgICAgICAgICBpZiAoc2NwLT5TQ3AuU3RhdHVzICE9IFNfT0spIAotI2VuZGlmCi0gICAg ICAgICAgICB7CisgICAgICAgICAgICBpZiAoZ2R0aF9leGVjdXRlKGhvc3QsIGdkdGNtZCwgY21u ZCwgMzAsIE5VTEwpID09IFNfT0spIHsKICAgICAgICAgICAgICAgICBoYS0+aGRyW2ldLmxkcl9u byA9IGk7CiAgICAgICAgICAgICAgICAgaGEtPmhkcltpXS5yd19hdHRyaWJzID0gMDsKICAgICAg ICAgICAgICAgICBoYS0+aGRyW2ldLnN0YXJ0X3NlYyA9IDA7CkBAIC03OTEsMTMgKzY4NSw2IEBA CiAgICAgfQogCiBzdG9wX291dHB1dDoKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM X1ZFUlNJT04oMiw2LDApCi0gICAgc2NzaV9yZWxlYXNlX3JlcXVlc3Qoc2NwKTsKLSAgICBzY3Np X2ZyZWVfaG9zdF9kZXYoc2Rldik7Ci0jZWxzZQotICAgIHNjc2lfcmVsZWFzZV9jb21tYW5kKHNj cCk7Ci0gICAgc2NzaV9mcmVlX2hvc3RfZGV2KHNkZXYpOwotI2VuZGlmCiAgICAgKnN0YXJ0ID0g YnVmZmVyICsob2Zmc2V0LWJlZ2luKTsKICAgICBsZW4gLT0gKG9mZnNldC1iZWdpbik7CiAgICAg aWYgKGxlbiA+IGxlbmd0aCkKQEAgLTgxMiw2NCArNjk5LDYgQEAKICAgICByZXR1cm4gcmM7CiB9 CiAKLQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLXN0 YXRpYyB2b2lkIGdkdGhfZG9fcmVxKFNjc2lfUmVxdWVzdCAqc2NwLCBnZHRoX2NtZF9zdHIgKmdk dGNtZCwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjbW5kLCBpbnQgdGltZW91dCkK LXsKLSAgICB1bnNpZ25lZCBidWZmbGVuOwotICAgIERFQ0xBUkVfQ09NUExFVElPTih3YWl0KTsK LQotICAgIFRSQUNFMigoImdkdGhfZG9fcmVxKClcbiIpKTsKLSAgICBpZiAoZ2R0Y21kICE9IE5V TEwpIHsgCi0gICAgICAgIGJ1ZmZsZW4gPSBzaXplb2YoZ2R0aF9jbWRfc3RyKTsKLSAgICB9IGVs c2UgewotICAgICAgICBidWZmbGVuID0gMDsKLSAgICB9Ci0gICAgc2NwLT5zcl9yZXF1ZXN0LT5y cV9zdGF0dXMgPSBSUV9TQ1NJX0JVU1k7Ci0gICAgc2NwLT5zcl9yZXF1ZXN0LT53YWl0aW5nID0g JndhaXQ7Ci0gICAgc2NzaV9kb19yZXEoc2NwLCBjbW5kLCBnZHRjbWQsIGJ1ZmZsZW4sIGdkdGhf c2NzaV9kb25lLCB0aW1lb3V0KkhaLCAxKTsKLSAgICB3YWl0X2Zvcl9jb21wbGV0aW9uKCZ3YWl0 KTsKLX0KLQotI2Vsc2UKLXN0YXRpYyB2b2lkIGdkdGhfZG9fY21kKFNjc2lfQ21uZCAqc2NwLCBn ZHRoX2NtZF9zdHIgKmdkdGNtZCwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjbW5k LCBpbnQgdGltZW91dCkKLXsKLSAgICB1bnNpZ25lZCBidWZmbGVuOwotICAgIERFQ0xBUkVfQ09N UExFVElPTih3YWl0KTsKLQotICAgIFRSQUNFMigoImdkdGhfZG9fY21kKClcbiIpKTsKLSAgICBp ZiAoZ2R0Y21kICE9IE5VTEwpIHsgCi0gICAgICAgIHNjcC0+U0NwLnRoaXNfcmVzaWR1YWwgPSBJ T0NUTF9QUkk7Ci0gICAgICAgIGJ1ZmZsZW4gPSBzaXplb2YoZ2R0aF9jbWRfc3RyKTsKLSAgICB9 IGVsc2UgewotICAgICAgICBzY3AtPlNDcC50aGlzX3Jlc2lkdWFsID0gREVGQVVMVF9QUkk7Ci0g ICAgICAgIGJ1ZmZsZW4gPSAwOwotICAgIH0KLQotICAgIHNjcC0+cmVxdWVzdC5ycV9zdGF0dXMg PSBSUV9TQ1NJX0JVU1k7Ci0gICAgc2NwLT5yZXF1ZXN0LndhaXRpbmcgPSAmd2FpdDsKLSAgICBz Y3NpX2RvX2NtZChzY3AsIGNtbmQsIGdkdGNtZCwgYnVmZmxlbiwgZ2R0aF9zY3NpX2RvbmUsIHRp bWVvdXQqSFosIDEpOwotICAgIHdhaXRfZm9yX2NvbXBsZXRpb24oJndhaXQpOwotfQotI2VuZGlm Ci0KLXZvaWQgZ2R0aF9zY3NpX2RvbmUoU2NzaV9DbW5kICpzY3ApCi17Ci0gICAgVFJBQ0UyKCgi Z2R0aF9zY3NpX2RvbmUoKVxuIikpOwotCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5F TF9WRVJTSU9OKDIsNiwwKQotICAgIHNjcC0+cmVxdWVzdC0+cnFfc3RhdHVzID0gUlFfU0NTSV9E T05FOwotICAgIGlmIChzY3AtPnJlcXVlc3QtPndhaXRpbmcgIT0gTlVMTCkKLSAgICAgICAgY29t cGxldGUoc2NwLT5yZXF1ZXN0LT53YWl0aW5nKTsKLSNlbHNlCi0gICAgc2NwLT5yZXF1ZXN0LnJx X3N0YXR1cyA9IFJRX1NDU0lfRE9ORTsKLSAgICBpZiAoc2NwLT5yZXF1ZXN0LndhaXRpbmcgIT0g TlVMTCkKLSAgICAgICAgY29tcGxldGUoc2NwLT5yZXF1ZXN0LndhaXRpbmcpOwotI2VuZGlmCi19 Ci0KIHN0YXRpYyBjaGFyICpnZHRoX2lvY3RsX2FsbG9jKGludCBoYW51bSwgaW50IHNpemUsIGlu dCBzY3JhdGNoLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nNjQgKnBhZGRy KQogewpAQCAtOTc2LDExICs4MDUsMTQgQEAKICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmaGEtPnNt cF9sb2NrLCBmbGFncyk7CiAKICAgICBmb3IgKHNjcCA9IGhhLT5yZXFfZmlyc3Q7IHNjcDsgc2Nw ID0gKFNjc2lfQ21uZCAqKXNjcC0+U0NwLnB0cikgewotICAgICAgICBiID0gdmlydF9jdHIgPyBO VU1EQVRBKHNjcC0+ZGV2aWNlLT5ob3N0KS0+YnVzbnVtIDogc2NwLT5kZXZpY2UtPmNoYW5uZWw7 Ci0gICAgICAgIHQgPSBzY3AtPmRldmljZS0+aWQ7Ci0gICAgICAgIGlmICh0ID09ICh1bmNoYXIp aWQgJiYgYiA9PSAodW5jaGFyKWJ1c251bSkgewotICAgICAgICAgICAgVFJBQ0UyKCgiZ2R0aF9z dG9wX3RpbWVvdXQoKTogdXBkYXRlX3RpbWVvdXQoKVxuIikpOwotICAgICAgICAgICAgc2NwLT5T Q3AuYnVmZmVyc19yZXNpZHVhbCA9IGdkdGhfdXBkYXRlX3RpbWVvdXQoaGFudW0sIHNjcCwgMCk7 CisgICAgICAgIGlmIChzY3AtPmRvbmUgIT0gZ2R0aF9zY3NpX2RvbmUpIHsKKyAgICAgICAgICAg IGIgPSB2aXJ0X2N0ciA/IAorICAgICAgICAgICAgICAgIE5VTURBVEEoc2NwLT5kZXZpY2UtPmhv c3QpLT5idXNudW0gOiBzY3AtPmRldmljZS0+Y2hhbm5lbDsKKyAgICAgICAgICAgIHQgPSBzY3At PmRldmljZS0+aWQ7CisgICAgICAgICAgICBpZiAodCA9PSAodW5jaGFyKWlkICYmIGIgPT0gKHVu Y2hhcilidXNudW0pIHsKKyAgICAgICAgICAgICAgICBUUkFDRTIoKCJnZHRoX3N0b3BfdGltZW91 dCgpOiB1cGRhdGVfdGltZW91dCgpXG4iKSk7CisgICAgICAgICAgICAgICAgc2NwLT5TQ3AuYnVm ZmVyc19yZXNpZHVhbCA9IGdkdGhfdXBkYXRlX3RpbWVvdXQoaGFudW0sIHNjcCwgMCk7CisgICAg ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm aGEtPnNtcF9sb2NrLCBmbGFncyk7CkBAIC05OTcsMTEgKzgyOSwxNCBAQAogICAgIHNwaW5fbG9j a19pcnFzYXZlKCZoYS0+c21wX2xvY2ssIGZsYWdzKTsKIAogICAgIGZvciAoc2NwID0gaGEtPnJl cV9maXJzdDsgc2NwOyBzY3AgPSAoU2NzaV9DbW5kICopc2NwLT5TQ3AucHRyKSB7Ci0gICAgICAg IGIgPSB2aXJ0X2N0ciA/IE5VTURBVEEoc2NwLT5kZXZpY2UtPmhvc3QpLT5idXNudW0gOiBzY3At PmRldmljZS0+Y2hhbm5lbDsKLSAgICAgICAgdCA9IHNjcC0+ZGV2aWNlLT5pZDsKLSAgICAgICAg aWYgKHQgPT0gKHVuY2hhcilpZCAmJiBiID09ICh1bmNoYXIpYnVzbnVtKSB7Ci0gICAgICAgICAg ICBUUkFDRTIoKCJnZHRoX3N0YXJ0X3RpbWVvdXQoKTogdXBkYXRlX3RpbWVvdXQoKVxuIikpOwot ICAgICAgICAgICAgZ2R0aF91cGRhdGVfdGltZW91dChoYW51bSwgc2NwLCBzY3AtPlNDcC5idWZm ZXJzX3Jlc2lkdWFsKTsKKyAgICAgICAgaWYgKHNjcC0+ZG9uZSAhPSBnZHRoX3Njc2lfZG9uZSkg eworICAgICAgICAgICAgYiA9IHZpcnRfY3RyID8gCisgICAgICAgICAgICAgICAgTlVNREFUQShz Y3AtPmRldmljZS0+aG9zdCktPmJ1c251bSA6IHNjcC0+ZGV2aWNlLT5jaGFubmVsOworICAgICAg ICAgICAgdCA9IHNjcC0+ZGV2aWNlLT5pZDsKKyAgICAgICAgICAgIGlmICh0ID09ICh1bmNoYXIp aWQgJiYgYiA9PSAodW5jaGFyKWJ1c251bSkgeworICAgICAgICAgICAgICAgIFRSQUNFMigoImdk dGhfc3RhcnRfdGltZW91dCgpOiB1cGRhdGVfdGltZW91dCgpXG4iKSk7CisgICAgICAgICAgICAg ICAgZ2R0aF91cGRhdGVfdGltZW91dChoYW51bSwgc2NwLCBzY3AtPlNDcC5idWZmZXJzX3Jlc2lk dWFsKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBzcGluX3VubG9ja19p cnFyZXN0b3JlKCZoYS0+c21wX2xvY2ssIGZsYWdzKTsKZGlmZiAtdSAuL2dkdGhfcHJvYy5oIG5l dy9nZHRoX3Byb2MuaAotLS0gLi9nZHRoX3Byb2MuaAkyMDA2LTA1LTAzIDExOjUzOjMyLjAwMDAw MDAwMCArMDIwMAorKysgbmV3L2dkdGhfcHJvYy5oCTIwMDYtMDUtMDIgMTY6MDI6MDAuMDAwMDAw MDAwICswMjAwCkBAIC01LDIwICs1LDE2IEBACiAgKiAkSWQ6IGdkdGhfcHJvYy5oLHYgMS4xNiAy MDA0LzAxLzE0IDEzOjA5OjAxIGFjaGltIEV4cCAkCiAgKi8KIAoraW50IGdkdGhfZXhlY3V0ZShz dHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCwgZ2R0aF9jbWRfc3RyICpnZHRjbWQsIGNoYXIgKmNtbmQs CisgICAgICAgICAgICAgICAgIGludCB0aW1lb3V0LCB1MzIgKmluZm8pOworCiBzdGF0aWMgaW50 IGdkdGhfc2V0X2luZm8oY2hhciAqYnVmZmVyLGludCBsZW5ndGgsc3RydWN0IFNjc2lfSG9zdCAq aG9zdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGFudW0saW50IGJ1c251bSk7CiBz dGF0aWMgaW50IGdkdGhfZ2V0X2luZm8oY2hhciAqYnVmZmVyLGNoYXIgKipzdGFydCxvZmZfdCBv ZmZzZXQsaW50IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgU2NzaV9I b3N0ICpob3N0LGludCBoYW51bSxpbnQgYnVzbnVtKTsKIAotI2lmIExJTlVYX1ZFUlNJT05fQ09E RSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLXN0YXRpYyB2b2lkIGdkdGhfZG9fcmVxKFNjc2lf UmVxdWVzdCAqc3JwLCBnZHRoX2NtZF9zdHIgKmNtZCwgCi0gICAgICAgICAgICAgICAgICAgICAg ICBjaGFyICpjbW5kLCBpbnQgdGltZW91dCk7Ci1zdGF0aWMgaW50IGdkdGhfc2V0X2FzY19pbmZv KGNoYXIgKmJ1ZmZlcixpbnQgbGVuZ3RoLGludCBoYW51bSxTY3NpX1JlcXVlc3QgKnNjcCk7Ci0j ZWxzZQotc3RhdGljIHZvaWQgZ2R0aF9kb19jbWQoU2NzaV9DbW5kICpzY3AsIGdkdGhfY21kX3N0 ciAqY21kLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNtbmQsIGludCB0aW1lb3V0 KTsKLXN0YXRpYyBpbnQgZ2R0aF9zZXRfYXNjX2luZm8oY2hhciAqYnVmZmVyLGludCBsZW5ndGgs aW50IGhhbnVtLFNjc2lfQ21uZCAqc2NwKTsKLSNlbmRpZgorc3RhdGljIGludCBnZHRoX3NldF9h c2NfaW5mbyhzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0LCBjaGFyICpidWZmZXIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGgsIGludCBoYW51bSk7CiAKIHN0YXRpYyBjaGFy ICpnZHRoX2lvY3RsX2FsbG9jKGludCBoYW51bSwgaW50IHNpemUsIGludCBzY3JhdGNoLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWxvbmc2NCAqcGFkZHIpOyAgCkBAIC0yOCw3ICsy NCw1IEBACiBzdGF0aWMgdm9pZCBnZHRoX3N0YXJ0X3RpbWVvdXQoaW50IGhhbnVtLCBpbnQgYnVz bnVtLCBpbnQgaWQpOwogc3RhdGljIGludCBnZHRoX3VwZGF0ZV90aW1lb3V0KGludCBoYW51bSwg U2NzaV9DbW5kICpzY3AsIGludCB0aW1lb3V0KTsKIAotdm9pZCBnZHRoX3Njc2lfZG9uZShTY3Np X0NtbmQgKnNjcCk7Ci0KICNlbmRpZgogCg== ------_=_NextPart_001_01C68BB4.4A25E336--