[patch 4b/5] 2.4.20-pre5 i2c updates (fwd)

Albert Cranford (ac9410@attbi.com)
Thu, 29 Aug 2002 02:58:52 -0400 (EDT)


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.

--0-895384732-1030599472=:16793
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.4.44.0208290257212.17093@home1>

Patch 4/5 was too large, so its now split into 4a, 4b and 4c

-- 
ac9410@attbi.com

---------- Forwarded message ---------- Date: Thu, 29 Aug 2002 01:37:52 -0400 (EDT) From: Albert Cranford <ac9410@attbi.com> To: Marcelo Tosatti <marcelo@conectiva.com.br> Cc: Kernel mailing list <linux-kernel@vger.kernel.org> Subject: [patch 4/5] 2.4.20-pre5 i2c updates

Hello Marcelo, Attached are i2c patches that bring the kernel to the latest released and tested version. Updates include: o Support for SMBus 2.0 PEC Packet Error Checking o New algorithm-i2c-algo-8xxx for MPC8XXX o New algorithm-i2c-algo-ibm_ocp for IBM PPC 405 o New adapter-i2c-adap-ibm_ocp for IBM PPC 405 o New adapter-i2c-frodo for SA 1110 board o New adapter-i2c-pcf-epp for PCF8584 o New adapter-i2c-pport for parallel port o New adapter-i2c-rpx for embeded MPC8XX o Updated documentation Thanks, Albert

-- 
ac9410@attbi.com

--0-895384732-1030599472=:16793 Content-Type: TEXT/PLAIN; charset=X-UNKNOWN; name=47-i2c-4b-patch Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.4.44.0208290258520.17093@home1> Content-Description: Content-Disposition: attachment; filename=47-i2c-4b-patch

LS0tIGxpbnV4L2luY2x1ZGUvbGludXgvaTJjLWFsZ28tOHh4Lmgub3JpZwkx OTk0LTA3LTE3IDE5OjQ2OjE4LjAwMDAwMDAwMCAtMDQwMA0KKysrIGxpbnV4 L2luY2x1ZGUvbGludXgvaTJjLWFsZ28tOHh4LmgJMjAwMi0wNy0yMyAwMTo0 NTo0Ni4wMDAwMDAwMDAgLTA0MDANCkBAIC0wLDAgKzEsNDMgQEANCisvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQorLyogaTJjLWFsZ28t OHh4LmggaTJjIGRyaXZlciBhbGdvcml0aG1zIGZvciBNUFg4WFggQ1BNCQkJ ICAgICAqLw0KKy8qDQorICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQor ICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorICAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yDQorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uDQorDQorICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyAgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZg0KKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQorICAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQor DQorICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlDQorICAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2Ft YnJpZGdlLCBNQSAwMjEzOSwgVVNBLiAgICAgICAgICAgICAgICAqLw0KKy8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCisNCisvKiAkSWQ6 IGkyYy1hbGdvLTh4eC5oLHYgMS4zIDIwMDIvMDYvMTIgMDI6Mjk6NTQgbWRz IEV4cCAkICovDQorDQorI2lmbmRlZiBJMkNfQUxHT184WFhfSA0KKyNkZWZp bmUgSTJDX0FMR09fOFhYX0ggMQ0KKw0KKyNpbmNsdWRlIDxsaW51eC9pMmMu aD4NCisNCitzdHJ1Y3QgaTJjX2FsZ29fOHh4X2RhdGEgew0KKwl1aW50IGRw X2FkZHI7DQorCWludCByZWxvYzsNCisJdm9sYXRpbGUgaTJjOHh4X3QgKmky YzsNCisJdm9sYXRpbGUgaWljX3QJKmlpcDsNCisJdm9sYXRpbGUgY3BtOHh4 X3QgKmNwOw0KKw0KKwlpbnQJKCpzZXRpc3IpIChpbnQgaXJxLA0KKwkJCSAg IHZvaWQgKCpmdW5jKSh2b2lkICosIHZvaWQgKiksDQorCQkJICAgdm9pZCAq ZGF0YSk7DQorDQorCXVfY2hhcgl0ZW1wWzUxM107DQorfTsNCisNCitpbnQg aTJjXzh4eF9hZGRfYnVzKHN0cnVjdCBpMmNfYWRhcHRlciAqKTsNCitpbnQg aTJjXzh4eF9kZWxfYnVzKHN0cnVjdCBpMmNfYWRhcHRlciAqKTsNCisNCisj ZW5kaWYgLyogSTJDX0FMR09fOFhYX0ggKi8NCi0tLSAvZGV2L251bGwJMTk5 NC0wNy0xNyAxOTo0NjoxOC4wMDAwMDAwMDAgLTA0MDANCisrKyBsaW51eC9k cml2ZXJzL2kyYy9pMmMtYWxnby1pYm1fb2NwLmMJMjAwMi0wNy0yMyAwODo1 MzoxNC4wMDAwMDAwMDAgLTA0MDANCkBAIC0wLDAgKzEsOTYzIEBADQorLyoN CisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICAgaTJjLWFs Z28taWJtX29jcC5jIGkyYyBkcml2ZXIgYWxnb3JpdGhtcyBmb3IgSUJNIFBQ QyA0MDUgYWRhcHRlcnMJICAgIA0KKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCisgICAgICANCisgICBJYW4gRGFTaWx2YSwgTW9udGFWaXN0 YSBTb2Z0d2FyZSwgSW5jLg0KKyAgIGlkYXNpbHZhQG12aXN0YS5jb20gb3Ig c291cmNlQG12aXN0YS5jb20NCisNCisgICBDb3B5cmlnaHQgMjAwMCBNb250 YVZpc3RhIFNvZnR3YXJlIEluYy4NCisNCisgICBDaGFuZ2VzIG1hZGUgdG8g c3VwcG9ydCB0aGUgSUlDIHBlcmlwaGVyYWwgb24gdGhlIElCTSBQUEMgNDA1 DQorDQorDQorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQor ICAgVGhpcyBmaWxlIHdhcyBoaWdobHkgbGV2ZXJhZ2VkIGZyb20gaTJjLWFs Z28tcGNmLmMsIHdoaWNoIHdhcyBjcmVhdGVkDQorICAgYnkgU2ltb24gRy4g Vm9nbCBhbmQgSGFucyBCZXJnbHVuZDoNCisNCisNCisgICAgIENvcHlyaWdo dCAoQykgMTk5NS0xOTk3IFNpbW9uIEcuIFZvZ2wNCisgICAgICAgICAgICAg ICAgICAgMTk5OC0yMDAwIEhhbnMgQmVyZ2x1bmQNCisNCisgICBXaXRoIHNv bWUgY2hhbmdlcyBmcm9tIEt59nN0aSBN5Gxra2kgPGttYWxra2lAY2MuaHV0 LmZpPiBhbmQgDQorICAgRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5s PiAsYW5kIGFsc28gZnJvbSBNYXJ0aW4gQmFpbGV5DQorICAgPG1iYWlsZXlA bGl0dGxlZmVldC1pbmMuY29tPg0KKw0KKw0KKyAgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQ0KKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyAg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKyAgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLg0KKw0KKyAgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwNCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisgICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQ0KKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLg0KKw0KKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQ0KKyAgICBGb3VuZGF0aW9uLCBJbmMuLCA2NzUg TWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4NCisgICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisgICBIaXN0b3J5OiAw MS8yMC8xMiAtIEFybWluDQorICAgCWFrdXN0ZXJAbXZpc3RhLmNvbQ0KKyAg IAlwb3J0ZWQgdXAgdG8gMi40LjE2KwkNCisNCisgICBWZXJzaW9uIDAyLzAz LzI1IC0gQXJtaW4NCisgICAgICAgY29udmVydGVkIHRvIG9jcCBmb3JtYXQN CisgICAgICAgcmVtb3ZlZCBjb21tZW50ZWQgb3V0IG9yICNpZiAwIGNvZGUN CisgICAgICAgYWRkZWQgR+lyYXJkIEJhc2xlcidzIGZpeCB0byBpaWNfY29t YmluZWRfdHJhbnNhY3Rpb24oKSBzdWNoIHRoYXQgaXQgDQorICAgICAgIHJl dHVybnMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsbHkgY29tcGxldGVkIHRy YW5zZmVycyAuDQorKi8NCisNCisNCisjaW5jbHVkZSA8bGludXgva2VybmVs Lmg+DQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KKyNpbmNsdWRlIDxs aW51eC9kZWxheS5oPg0KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4NCisjaW5jbHVkZSA8bGludXgvaW5p dC5oPg0KKyNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPg0KKyNpbmNsdWRlIDxs aW51eC9pb3BvcnQuaD4NCisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4NCisN CisjaW5jbHVkZSA8bGludXgvaTJjLmg+DQorI2luY2x1ZGUgImkyYy1hbGdv LWlibV9vY3AuaCINCisjaW5jbHVkZSA8YXNtL29jcC5oPg0KKw0KK01PRFVM RV9MSUNFTlNFKCJHUEwiKTsNCisNCisNCisvKiAtLS0tLSBnbG9iYWwgZGVm aW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSAqLw0KKyNkZWZpbmUgREVCKHgpIGlmIChpMmNfZGVidWc+PTEp IHgNCisjZGVmaW5lIERFQjIoeCkgaWYgKGkyY19kZWJ1Zz49MikgeA0KKyNk ZWZpbmUgREVCMyh4KSBpZiAoaTJjX2RlYnVnPj0zKSB4IC8qIHByaW50IHNl dmVyYWwgc3RhdGlzdGljYWwgdmFsdWVzKi8NCisjZGVmaW5lIERFQlBST1RP KHgpIGlmIChpMmNfZGVidWc+PTkpIHg7DQorIAkvKiBkZWJ1ZyB0aGUgcHJv dG9jb2wgYnkgc2hvd2luZyB0cmFuc2ZlcnJlZCBiaXRzICovDQorI2RlZmlu ZSBERUZfVElNRU9VVCA1DQorDQorLyogZGVidWdnaW5nIC0gc2xvdyBkb3du IHRyYW5zZmVyIHRvIGhhdmUgYSBsb29rIGF0IHRoZSBkYXRhIC4uIAkqLw0K Ky8qIEkgdXNlIHRoaXMgd2l0aCB0d28gbGVkcyZyZXNpc3RvcnMsIGVhY2gg b25lIGNvbm5lY3RlZCB0byBzZGEsc2NsIAkqLw0KKy8qIHJlc3BlY3RpdmVs eS4gVGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhlIGFsZ29yaXRobSB3b3Jrcy4g U29tZSBjaGlwcyAgICovDQorLyogbWlnaHQgbm90IGxpa2UgdGhpcywgYXMg dGhleSBoYXZlIGFuIGludGVybmFsIHRpbWVvdXQgb2Ygc29tZSBtaWxzCSov DQorLyoNCisjZGVmaW5lIFNMT19JTyAgICAgIGppZj1qaWZmaWVzO3doaWxl KGppZmZpZXM8PWppZitpMmNfdGFibGVbbWlub3JdLnZlcnlzbG93KVwNCisg ICAgICAgICAgICAgICAgICAgICAgICBpZiAobmVlZF9yZXNjaGVkKSBzY2hl ZHVsZSgpOw0KKyovDQorDQorDQorLyogLS0tLS0gZ2xvYmFsIHZhcmlhYmxl cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0JKi8NCisNCisjaWZkZWYgU0xPX0lPDQorCWludCBqaWY7DQorI2VuZGlm DQorDQorLyogbW9kdWxlIHBhcmFtZXRlcnM6DQorICovDQorc3RhdGljIGlu dCBpMmNfZGVidWc9MDsNCitzdGF0aWMgaW50IGlpY19zY2FuPTA7CS8qIGhh dmUgYSBsb29rIGF0IHdoYXQncyBoYW5naW5nICdyb3VuZAkJKi8NCisNCisv KiAtLS0gc2V0dGluZyBzdGF0ZXMgb24gdGhlIGJ1cyB3aXRoIHRoZSByaWdo dCB0aW1pbmc6IC0tLS0tLS0tLS0tLS0tLQkqLw0KKw0KKyNkZWZpbmUgaWlj X291dGIoYWRhcCwgcmVnLCB2YWwpIGFkYXAtPnNldGlpYyhhZGFwLT5kYXRh LCAoaW50KSAmKHJlZyksIHZhbCkNCisjZGVmaW5lIGlpY19pbmIoYWRhcCwg cmVnKSBhZGFwLT5nZXRpaWMoYWRhcC0+ZGF0YSwgKGludCkgJihyZWcpKQ0K Kw0KKyNkZWZpbmUgSUlDT19JMkNfU0RBSElHSAkweDA3ODANCisjZGVmaW5l IElJQ09fSTJDX1NEQUxPVwkJMHgwNzgxDQorI2RlZmluZSBJSUNPX0kyQ19T Q0xISUdICTB4MDc4Mg0KKyNkZWZpbmUgSUlDT19JMkNfU0NMTE9XCQkweDA3 ODMNCisjZGVmaW5lIElJQ09fSTJDX0xJTkVSRUFECTB4MDc4NA0KKw0KKyNk ZWZpbmUgSUlDX1NJTkdMRV9YRkVSCQkwDQorI2RlZmluZSBJSUNfQ09NQklO RURfWEZFUgkxDQorDQorI2RlZmluZSBJSUNfRVJSX0xPU1RfQVJCICAgICAg ICAtMg0KKyNkZWZpbmUgSUlDX0VSUl9JTkNPTVBMRVRFX1hGUiAgLTMNCisj ZGVmaW5lIElJQ19FUlJfTkFDSyAgICAgICAgICAgIC0xDQorDQorLyogLS0t IG90aGVyIGF1eGlsaWFyeSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0JKi8NCisNCisNCisvLw0KKy8vIERlc2Ny aXB0aW9uOiBQdXRzIHRoaXMgcHJvY2VzcyB0byBzbGVlcCBmb3IgYSBwZXJp b2QgZXF1YWwgdG8gdGltZW91dCANCisvLw0KK3N0YXRpYyBpbmxpbmUgdm9p ZCBpaWNfc2xlZXAodW5zaWduZWQgbG9uZyB0aW1lb3V0KQ0KK3sNCisJc2No ZWR1bGVfdGltZW91dCggdGltZW91dCAqIEhaKTsNCit9DQorDQorDQorLy8N CisvLyBEZXNjcmlwdGlvbjogVGhpcyBwZXJmb3JtcyB0aGUgSUJNIFBQQyA0 MDUgSUlDIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlDQorLy8gYXMgZGVzY3Jp YmVkIGluIHRoZSBQUEM0MDVHUCBkYXRhIGJvb2suDQorLy8NCitzdGF0aWMg aW50IGlpY19pbml0IChzdHJ1Y3QgaTJjX2FsZ29faWljX2RhdGEgKmFkYXAp DQorew0KKwlzdHJ1Y3QgaWljX3JlZ3MgKmlpYzsJDQorCXN0cnVjdCBpaWNf aWJtICphZGFwX3ByaXZfZGF0YSA9IGFkYXAtPmRhdGE7DQorCXVuc2lnbmVk IHNob3J0CXJldHZhbDsNCisJaWljID0gKHN0cnVjdCBpaWNfcmVncyAqKSBh ZGFwX3ByaXZfZGF0YS0+aWljX2Jhc2U7DQorDQorICAgICAgICAvKiBDbGVh ciBtYXN0ZXIgbG93IG1hc3RlciBhZGRyZXNzICovDQorICAgICAgICBpaWNf b3V0YihhZGFwLGlpYy0+bG1hZHIsIDApOw0KKw0KKyAgICAgICAgLyogQ2xl YXIgaGlnaCBtYXN0ZXIgYWRkcmVzcyAqLw0KKyAgICAgICAgaWljX291dGIo YWRhcCxpaWMtPmhtYWRyLCAwKTsNCisNCisgICAgICAgIC8qIENsZWFyIGxv dyBzbGF2ZSBhZGRyZXNzICovDQorICAgICAgICBpaWNfb3V0YihhZGFwLGlp Yy0+bHNhZHIsIDApOw0KKw0KKyAgICAgICAgLyogQ2xlYXIgaGlnaCBzbGF2 ZSBhZGRyZXNzICovDQorICAgICAgICBpaWNfb3V0YihhZGFwLGlpYy0+aHNh ZHIsIDApOw0KKw0KKyAgICAgICAgLyogQ2xlYXIgc3RhdHVzICovDQorICAg ICAgICBpaWNfb3V0YihhZGFwLGlpYy0+c3RzLCAweDBhKTsNCisNCisgICAg ICAgIC8qIENsZWFyIGV4dGVuZGVkIHN0YXR1cyAqLw0KKyAgICAgICAgaWlj X291dGIoYWRhcCxpaWMtPmV4dHN0cywgMHg4Zik7DQorDQorICAgICAgICAv KiBTZXQgY2xvY2sgZGl2aXNpb24gKi8NCisgICAgICAgIGlpY19vdXRiKGFk YXAsaWljLT5jbGtkaXYsIDB4MDQpOw0KKw0KKwlyZXR2YWwgPSBpaWNfaW5i KGFkYXAsIGlpYy0+Y2xrZGl2KTsNCisJREVCKHByaW50aygiaWljX2luaXQ6 IENMS0RJViByZWdpc3RlciA9ICV4XG4iLCByZXR2YWwpKTsNCisNCisgICAg ICAgIC8qIEVuYWJsZSBpbnRlcnJ1cHRzIG9uIFJlcXVlc3RlZCBNYXN0ZXIg VHJhbnNmZXIgQ29tcGxldGUgKi8NCisgICAgICAgIGlpY19vdXRiKGFkYXAs aWljLT5pbnRtc2ssIDB4MDEpOw0KKw0KKyAgICAgICAgLyogQ2xlYXIgdHJh bnNmZXIgY291bnQgKi8NCisgICAgICAgIGlpY19vdXRiKGFkYXAsaWljLT54 ZnJjbnQsIDB4MCk7DQorDQorICAgICAgICAvKiBDbGVhciBleHRlbmRlZCBj b250cm9sIGFuZCBzdGF0dXMgKi8NCisgICAgICAgIGlpY19vdXRiKGFkYXAs aWljLT54dGNudGxzcywgMHhmMCk7DQorDQorICAgICAgICAvKiBTZXQgbW9k ZSBjb250cm9sIChmbHVzaCBtYXN0ZXIgZGF0YSBidWYsIGVuYWJsZSBob2xk IFNDTCwgZXhpdCAqLw0KKyAgICAgICAgLyogdW5rbm93biBzdGF0ZS4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ki8NCisgICAgICAgIGlpY19vdXRiKGFkYXAsaWljLT5tZGNudGwsIDB4NDcp Ow0KKw0KKyAgICAgICAgLyogQ2xlYXIgY29udHJvbCByZWdpc3RlciAqLw0K KyAgICAgICAgaWljX291dGIoYWRhcCxpaWMtPmNudGwsIDB4MCk7DQorDQor ICAgICAgICBERUIyKHByaW50ayhLRVJOX0RFQlVHICJpaWNfaW5pdDogSW5p dGlhbGl6ZWQgSUlDIG9uIFBQQyA0MDVcbiIpKTsNCisgICAgICAgIHJldHVy biAwOw0KK30NCisNCisNCisvLw0KKy8vIERlc2NyaXB0aW9uOiBBZnRlciB3 ZSBpc3N1ZSBhIHRyYW5zYWN0aW9uIG9uIHRoZSBJSUMgYnVzLCB0aGlzIGZ1 bmN0aW9uDQorLy8gaXMgY2FsbGVkLiAgSXQgcHV0cyB0aGlzIHByb2Nlc3Mg dG8gc2xlZXAgdW50aWwgd2UgZ2V0IGFuIGludGVycnVwdCBmcm9tDQorLy8g ZnJvbSB0aGUgY29udHJvbGxlciB0ZWxsaW5nIHVzIHRoYXQgdGhlIHRyYW5z YWN0aW9uIHdlIHJlcXVlc3RlZCBpbiBjb21wbGV0ZS4NCisvLw0KK3N0YXRp YyBpbnQgd2FpdF9mb3JfcGluKHN0cnVjdCBpMmNfYWxnb19paWNfZGF0YSAq YWRhcCwgaW50ICpzdGF0dXMpIA0KK3sNCisNCisJaW50IHRpbWVvdXQgPSBE RUZfVElNRU9VVDsNCisJaW50IHJldHZhbDsNCisJc3RydWN0IGlpY19yZWdz ICppaWM7DQorCXN0cnVjdCBpaWNfaWJtICphZGFwX3ByaXZfZGF0YSA9IGFk YXAtPmRhdGE7DQorCWlpYyA9IChzdHJ1Y3QgaWljX3JlZ3MgKikgYWRhcF9w cml2X2RhdGEtPmlpY19iYXNlOw0KKw0KKw0KKwkqc3RhdHVzID0gaWljX2lu YihhZGFwLCBpaWMtPnN0cyk7DQorI2lmbmRlZiBTVFVCX0kyQw0KKw0KKwl3 aGlsZSAodGltZW91dC0tICYmICgqc3RhdHVzICYgMHgwMSkpIHsNCisJICAg YWRhcC0+d2FpdGZvcnBpbihhZGFwLT5kYXRhKTsNCisJICAgKnN0YXR1cyA9 IGlpY19pbmIoYWRhcCwgaWljLT5zdHMpOw0KKwl9DQorI2VuZGlmDQorCWlm ICh0aW1lb3V0IDw9IDApIHsNCisJICAgLyogSXNzdWUgc3RvcCBzaWduYWwg b24gdGhlIGJ1cywgYW5kIGZvcmNlIGFuIGludGVycnVwdCAqLw0KKyAgICAg ICAgICAgcmV0dmFsID0gaWljX2luYihhZGFwLCBpaWMtPmNudGwpOw0KKyAg ICAgICAgICAgaWljX291dGIoYWRhcCwgaWljLT5jbnRsLCByZXR2YWwgfCAw eDgwKTsNCisgICAgICAgICAgIC8qIENsZWFyIHN0YXR1cyByZWdpc3RlciAq Lw0KKwkgICBpaWNfb3V0YihhZGFwLCBpaWMtPnN0cywgMHgwYSk7DQorCSAg IC8qIEV4aXQgdW5rbm93biBidXMgc3RhdGUgKi8NCisJICAgcmV0dmFsID0g aWljX2luYihhZGFwLCBpaWMtPm1kY250bCk7DQorCSAgIGlpY19vdXRiKGFk YXAsIGlpYy0+bWRjbnRsLCAocmV0dmFsIHwgMHgwMikpOw0KKw0KKwkgICAv LyBDaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBjb250cm9sbGVyLiAgRG9lcyBp dCBzdGlsbCBzZWUgYQ0KKwkgICAvLyBwZW5kaW5nIHRyYW5zZmVyLCBldmVu IHRob3VnaCB3ZSd2ZSB0cmllZCB0byBzdG9wIGFueQ0KKwkgICAvLyBvbmdv aW5nIHRyYW5zYWN0aW9uPw0KKyAgICAgICAgICAgcmV0dmFsID0gaWljX2lu YihhZGFwLCBpaWMtPnN0cyk7DQorICAgICAgICAgICByZXR2YWwgPSByZXR2 YWwgJiAweDAxOw0KKyAgICAgICAgICAgaWYocmV0dmFsKSB7DQorCSAgICAg IC8vIFRoZSBpaWMgY29udHJvbGxlciBpcyBob3NlZC4gIEl0IGlzIG5vdCBy ZXNwb25kaW5nIHRvIGFueQ0KKwkgICAgICAvLyBvZiBvdXIgY29tbWFuZHMu ICBXZSBoYXZlIGFscmVhZHkgdHJpZWQgdG8gZm9yY2UgaXQgaW50bw0KKwkg ICAgICAvLyBhIGtub3duIHN0YXRlLCBidXQgaXQgaGFzIG5vdCB3b3JrZWQu ICBPdXIgb25seSBjaG9pY2Ugbm93DQorCSAgICAgIC8vIGlzIGEgc29mdCBy ZXNldCwgd2hpY2ggd2lsbCBjbGVhciBhbGwgcmVnaXN0ZXJzLCBhbmQgZm9y Y2UNCisJICAgICAgLy8gdXMgdG8gcmUtaW5pdGlhbGl6ZSB0aGUgY29udHJv bGxlci4NCisJICAgICAgLyogU29mdCByZXNldCAqLw0KKyAgICAgICAgICAg ICAgaWljX291dGIoYWRhcCwgaWljLT54dGNudGxzcywgMHgwMSk7DQorICAg ICAgICAgICAgICB1ZGVsYXkoNTAwKTsNCisgICAgICAgICAgICAgIGlpY19p bml0KGFkYXApOw0KKwkgICAgICAvKiBJcyB0aGUgcGVuZGluZyB0cmFuc2Zl ciBiaXQgaW4gdGhlIHN0cyByZWcgZmluYWxseSBjbGVhcmVkPyAqLw0KKyAg ICAgICAgICAgICAgcmV0dmFsID0gaWljX2luYihhZGFwLCBpaWMtPnN0cyk7 DQorICAgICAgICAgICAgICByZXR2YWwgPSByZXR2YWwgJiAweDAxOw0KKyAg ICAgICAgICAgICAgaWYocmV0dmFsKSB7DQorICAgICAgICAgICAgICAgICBw cmludGsoS0VSTl9DUklUICJUaGUgSUlDIENvbnRyb2xsZXIgaXMgaG9zZWQu ICBBIHByb2Nlc3NvciByZXNldCBpcyByZXF1aXJlZFxuIik7DQorICAgICAg ICAgICAgICB9DQorCSAgICAgIC8vIEZvciBzb21lIHJlYXNvbiwgZXZlbiB0 aG91Z2ggdGhlIGludGVycnVwdCBiaXQgaW4gdGhpcw0KKwkgICAgICAvLyBy ZWdpc3RlciB3YXMgc2V0IGR1cmluZyBpaWNfaW5pdCwgaXQgZGlkbid0IHRh a2UuICBXZQ0KKwkgICAgICAvLyBuZWVkIHRvIHNldCBpdCBhZ2Fpbi4gIERv bid0IGFzayBtZSB3aHkuLi4udGhpcyBpcyBqdXN0IHdoYXQNCisJICAgICAg Ly8gSSBzYXcgd2hlbiB0ZXN0aW5nIHRpbWVvdXRzLg0KKyAgICAgICAgICAg ICAgaWljX291dGIoYWRhcCwgaWljLT5pbnRtc2ssIDB4MDEpOw0KKyAgICAg ICAgICAgfQ0KKwkgICByZXR1cm4oLTEpOw0KKwl9DQorCWVsc2UNCisJICAg cmV0dXJuKDApOw0KK30NCisNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KKy8vIFV0aWxpdHkgZnVuY3Rpb25zDQorLy8N CisNCisNCisvLw0KKy8vIERlc2NyaXB0aW9uOiBMb29rIGF0IHRoZSBzdGF0 dXMgcmVnaXN0ZXIgdG8gc2VlIGlmIHRoZXJlIHdhcyBhbiBlcnJvcg0KKy8v IGluIHRoZSByZXF1ZXN0ZWQgdHJhbnNhY3Rpb24uICBJZiB0aGVyZSBpcywg bG9vayBhdCB0aGUgZXh0ZW5kZWQgc3RhdHVzDQorLy8gcmVnaXN0ZXIgYW5k IGRldGVybWluZSB0aGUgZXhhY3QgY2F1c2UuDQorLy8NCitpbnQgYW5hbHl6 ZV9zdGF0dXMoc3RydWN0IGkyY19hbGdvX2lpY19kYXRhICphZGFwLCBpbnQg KmVycm9yX2NvZGUpDQorew0KKyAgIGludCByZXQ7DQorICAgc3RydWN0IGlp Y19yZWdzICppaWM7DQorICAgc3RydWN0IGlpY19pYm0gKmFkYXBfcHJpdl9k YXRhID0gYWRhcC0+ZGF0YTsNCisgICBpaWMgPSAoc3RydWN0IGlpY19yZWdz ICopIGFkYXBfcHJpdl9kYXRhLT5paWNfYmFzZTsNCisNCisJDQorICAgcmV0 ID0gaWljX2luYihhZGFwLCBpaWMtPnN0cyk7DQorICAgaWYocmV0ICYgMHgw NCkgew0KKyAgICAgIC8vIEVycm9yIG9jY3VycmVkDQorICAgICAgcmV0ID0g aWljX2luYihhZGFwLCBpaWMtPmV4dHN0cyk7DQorICAgICAgaWYocmV0ICYg MHgwNCkgew0KKyAgICAgICAgIC8vIExvc3QgYXJiaXRyYXRpb24NCisgICAg ICAgICAqZXJyb3JfY29kZSA9ICBJSUNfRVJSX0xPU1RfQVJCOw0KKyAgICAg IH0NCisgICAgICBpZihyZXQgJiAweDAyKSB7DQorICAgICAgICAgLy8gSW5j b21wbGV0ZSB0cmFuc2Zlcg0KKyAgICAgICAgICplcnJvcl9jb2RlID0gSUlD X0VSUl9JTkNPTVBMRVRFX1hGUjsNCisgICAgICB9DQorICAgICAgaWYocmV0 ICYgMHgwMSkgew0KKyAgICAgICAgIC8vIE1hc3RlciB0cmFuc2ZlciBhYm9y dGVkIGJ5IGEgTkFDSyBkdXJpbmcgdGhlIHRyYW5zZmVyIG9mIHRoZSANCisJ IC8vIGFkZHJlc3MgYnl0ZQ0KKyAgICAgICAgICplcnJvcl9jb2RlID0gSUlD X0VSUl9OQUNLOw0KKyAgICAgIH0NCisgICAgICByZXR1cm4gLTE7DQorICAg fQ0KKyAgIHJldHVybiAwOw0KK30NCisNCisNCisvLw0KKy8vIERlc2NyaXB0 aW9uOiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdXBwZXIgbGF5 ZXJzIHRvIGRvIHRoZQ0KKy8vIGdydW50IHdvcmsgZm9yIGEgbWFzdGVyIHNl bmQgdHJhbnNhY3Rpb24NCisvLw0KK3N0YXRpYyBpbnQgaWljX3NlbmRieXRl cyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyY19hZGFwLGNvbnN0IGNoYXIgKmJ1 ZiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCBpbnQg eGZlcl9mbGFnKQ0KK3sNCisJc3RydWN0IGlpY19yZWdzICppaWM7DQorCXN0 cnVjdCBpMmNfYWxnb19paWNfZGF0YSAqYWRhcCA9IGkyY19hZGFwLT5hbGdv X2RhdGE7DQorCXN0cnVjdCBpaWNfaWJtICphZGFwX3ByaXZfZGF0YSA9IGFk YXAtPmRhdGE7DQorCWludCB3cmNvdW50LCBzdGF0dXMsIHRpbWVvdXQ7DQor CWludCBsb29wcywgcmVtYWluZGVyLCBpLCBqOw0KKwlpbnQgcmV0LCBlcnJv cl9jb2RlOw0KKyAgCWlpYyA9IChzdHJ1Y3QgaWljX3JlZ3MgKikgYWRhcF9w cml2X2RhdGEtPmlpY19iYXNlOw0KKw0KKyANCisJaWYoIGNvdW50ID09IDAg KSByZXR1cm4gMDsNCisJd3Jjb3VudCA9IDA7DQorCWxvb3BzID0gIGNvdW50 IC8gNDsNCisJcmVtYWluZGVyID0gY291bnQgJSA0Ow0KKw0KKwlpZigobG9v cHMgPiAxKSAmJiAocmVtYWluZGVyID09IDApKSB7DQorCSAgIGZvcihpPTA7 IGk8KGxvb3BzLTEpOyBpKyspIHsNCisgICAgICAgCSAgICAgIC8vDQorICAg CSAgICAgIC8vIFdyaXRlIGZvdXIgYnl0ZXMgdG8gbWFzdGVyIGRhdGEgYnVm ZmVyDQorCSAgICAgIC8vDQorCSAgICAgIGZvcihqPTA7IGo8NDsgaisrKSB7 DQorICAgCSAgICAgICAgIGlpY19vdXRiKGFkYXAsIGlpYy0+bWRidWYsIA0K KwkgICAgICAgICBidWZbd3Jjb3VudCsrXSk7DQorICAJICAgICAgfQ0KKwkg ICAgICAvLw0KKwkgICAgICAvLyBJc3N1ZSBjb21tYW5kIHRvIElJQ08gZGV2 aWNlIHRvIGJlZ2luIHRyYW5zbWlzc2lvbg0KKwkgICAgICAvLw0KKwkgICAg ICBpaWNfb3V0YihhZGFwLCBpaWMtPmNudGwsIDB4MzUpOw0KKwkgICAgICAv Lw0KKwkgICAgICAvLyBXYWl0IGZvciB0cmFuc21pc3Npb24gdG8gY29tcGxl dGUuICBXaGVuIGl0IGRvZXMsIA0KKwkgICAgICAvL2xvb3AgdG8gdGhlIHRv cCBvZiB0aGUgZm9yIHN0YXRlbWVudCBhbmQgd3JpdGUgdGhlIA0KKwkgICAg ICAvLyBuZXh0IGZvdXIgYnl0ZXMuDQorCSAgICAgIC8vDQorCSAgICAgIHRp bWVvdXQgPSB3YWl0X2Zvcl9waW4oYWRhcCwgJnN0YXR1cyk7DQorCSAgICAg IGlmKHRpbWVvdXQgPCAwKSB7DQorCSAgICAgICAgIC8vDQorCSAgICAgICAg IC8vIEVycm9yIGhhbmRsaW5nDQorCSAgICAgICAgIC8vDQorICAgICAgICAg ICAgICAgICAvL3ByaW50ayhLRVJOX0VSUiAiRXJyb3I6IHdyaXRlIHRpbWVv dXRcbiIpOw0KKyAgICAgICAgICAgICAgICAgcmV0dXJuIHdyY291bnQ7DQor CSAgICAgIH0NCisJICAgICAgcmV0ID0gYW5hbHl6ZV9zdGF0dXMoYWRhcCwg JmVycm9yX2NvZGUpOw0KKwkgICAgICBpZihyZXQgPCAwKSB7DQorICAgICAg ICAgICAgICAgICBpZihlcnJvcl9jb2RlID09IElJQ19FUlJfSU5DT01QTEVU RV9YRlIpIHsNCisgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybiB0aGUg bnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkDQorICAgICAgICAgICAgICAg ICAgICByZXQgPSBpaWNfaW5iKGFkYXAsIGlpYy0+eGZyY250KTsNCisgICAg ICAgICAgICAgICAgICAgIHJldCA9IHJldCAmIDB4MDc7DQorICAgICAgICAg ICAgICAgICAgICByZXR1cm4gKHdyY291bnQtNCtyZXQpOw0KKyAgICAgICAg ICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gZXJy b3JfY29kZTsNCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgIH0NCisJ fQ0KKwllbHNlIGlmKChsb29wcyA+PSAxKSAmJiAocmVtYWluZGVyID4gMCkp ew0KKwkgICAvL3ByaW50ayhLRVJOX0RFQlVHICJpaWNfc2VuZGJ5dGVzOiAo bG9vcHMgPj0gMSlcbiIpOw0KKwkgICBmb3IoaT0wOyBpPGxvb3BzOyBpKysp IHsNCisgICAgICAgICAgICAgIC8vDQorICAgICAgICAgICAgICAvLyBXcml0 ZSBmb3VyIGJ5dGVzIHRvIG1hc3RlciBkYXRhIGJ1ZmZlcg0KKyAgICAgICAg ICAgICAgLy8NCisgICAgICAgICAgICAgIGZvcihqPTA7IGo8NDsgaisrKSB7 DQorICAgICAgICAgICAgICAgICBpaWNfb3V0YihhZGFwLCBpaWMtPm1kYnVm LA0KKyAgICAgICAgICAgICAgICAgYnVmW3dyY291bnQrK10pOw0KKyAgICAg ICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgLy8NCisgICAgICAgICAgICAg IC8vIElzc3VlIGNvbW1hbmQgdG8gSUlDTyBkZXZpY2UgdG8gYmVnaW4gdHJh bnNtaXNzaW9uDQorICAgICAgICAgICAgICAvLw0KKyAgICAgICAgICAgICAg aWljX291dGIoYWRhcCwgaWljLT5jbnRsLCAweDM1KTsNCisgICAgICAgICAg ICAgIC8vDQorICAgICAgICAgICAgICAvLyBXYWl0IGZvciB0cmFuc21pc3Np b24gdG8gY29tcGxldGUuICBXaGVuIGl0IGRvZXMsDQorICAgICAgICAgICAg ICAvL2xvb3AgdG8gdGhlIHRvcCBvZiB0aGUgZm9yIHN0YXRlbWVudCBhbmQg d3JpdGUgdGhlDQorICAgICAgICAgICAgICAvLyBuZXh0IGZvdXIgYnl0ZXMu DQorICAgICAgICAgICAgICAvLw0KKyAgICAgICAgICAgICAgdGltZW91dCA9 IHdhaXRfZm9yX3BpbihhZGFwLCAmc3RhdHVzKTsNCisgICAgICAgICAgICAg IGlmKHRpbWVvdXQgPCAwKSB7DQorICAgICAgICAgICAgICAgICAvLw0KKyAg ICAgICAgICAgICAgICAgLy8gRXJyb3IgaGFuZGxpbmcNCisgICAgICAgICAg ICAgICAgIC8vDQorICAgICAgICAgICAgICAgICAvL3ByaW50ayhLRVJOX0VS UiAiRXJyb3I6IHdyaXRlIHRpbWVvdXRcbiIpOw0KKyAgICAgICAgICAgICAg ICAgcmV0dXJuIHdyY291bnQ7DQorICAgICAgICAgICAgICB9DQorICAgICAg ICAgICAgICByZXQgPSBhbmFseXplX3N0YXR1cyhhZGFwLCAmZXJyb3JfY29k ZSk7DQorICAgICAgICAgICAgICBpZihyZXQgPCAwKSB7DQorICAgICAgICAg ICAgICAgICBpZihlcnJvcl9jb2RlID09IElJQ19FUlJfSU5DT01QTEVURV9Y RlIpIHsNCisgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybiB0aGUgbnVt YmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkDQorICAgICAgICAgICAgICAgICAg ICByZXQgPSBpaWNfaW5iKGFkYXAsIGlpYy0+eGZyY250KTsNCisgICAgICAg ICAgICAgICAgICAgIHJldCA9IHJldCAmIDB4MDc7DQorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gKHdyY291bnQtNCtyZXQpOw0KKyAgICAgICAgICAg ICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gZXJyb3Jf Y29kZTsNCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgIH0NCisgICAg ICAgIH0NCisNCisJLy9wcmludGsoS0VSTl9ERUJVRyAiaWljX3NlbmRieXRl czogZXhwZWRpdGUgd3JpdGVcbiIpOw0KKwlpZihyZW1haW5kZXIgPT0gMCkg cmVtYWluZGVyID0gNDsNCisJLy8gcmVtYWluZGVyID0gcmVtYWluZGVyIC0g MTsNCisJLy8NCisJLy8gV3JpdGUgdGhlIHJlbWFpbmluZyBieXRlcyAobGVz cyB0aGFuIG9yIGVxdWFsIHRvIDQpDQorCS8vDQorCWZvcihpPTA7IGk8cmVt YWluZGVyOyBpKyspIHsNCisJICAgaWljX291dGIoYWRhcCwgaWljLT5tZGJ1 ZiwgYnVmW3dyY291bnQrK10pOw0KKwkgICAvL3ByaW50ayhLRVJOX0RFQlVH ICJpaWNfc2VuZGJ5dGVzOiAgZGF0YSB0cmFuc2ZlcnJlZCA9ICV4LCB3cmNv dW50ID0gJWRcbiIsIGJ1Zlt3cmNvdW50LTFdLCAod3Jjb3VudC0xKSk7DQor CX0NCisgICAgICAgIC8vcHJpbnRrKEtFUk5fREVCVUcgImlpY19zZW5kYnl0 ZXM6IElzc3Vpbmcgd3JpdGVcbiIpOw0KKw0KKyAgICAgICAgaWYoeGZlcl9m bGFnID09IElJQ19DT01CSU5FRF9YRkVSKSB7DQorICAgICAgICAgICBpaWNf b3V0YihhZGFwLCBpaWMtPmNudGwsICgweDA5IHwgKChyZW1haW5kZXItMSkg PDwgNCkpKTsNCisgICAgICAgIH0NCisJZWxzZSB7DQorICAgICAgICAgICBp aWNfb3V0YihhZGFwLCBpaWMtPmNudGwsICgweDAxIHwgKChyZW1haW5kZXIt MSkgPDwgNCkpKTsNCisgICAgICAgIH0NCisJREVCMihwcmludGsoS0VSTl9E RUJVRyAiaWljX3NlbmRieXRlczogV2FpdGluZyBmb3IgaW50ZXJydXB0XG4i KSk7DQorCXRpbWVvdXQgPSB3YWl0X2Zvcl9waW4oYWRhcCwgJnN0YXR1cyk7 DQorICAgICAgICBpZih0aW1lb3V0IDwgMCkgew0KKyAgICAgICAJICAgLy8N CisgICAgICAgICAgIC8vIEVycm9yIGhhbmRsaW5nDQorICAgICAgICAgICAv Lw0KKyAgICAgICAgICAgLy9wcmludGsoS0VSTl9FUlIgIkVycm9yOiB3cml0 ZSB0aW1lb3V0XG4iKTsNCisgICAgICAgICAgIHJldHVybiB3cmNvdW50Ow0K KyAgICAgICAgfQ0KKyAgICAgICAgcmV0ID0gYW5hbHl6ZV9zdGF0dXMoYWRh cCwgJmVycm9yX2NvZGUpOw0KKyAgICAgICAgaWYocmV0IDwgMCkgew0KKyAg ICAgICAgICAgaWYoZXJyb3JfY29kZSA9PSBJSUNfRVJSX0lOQ09NUExFVEVf WEZSKSB7DQorICAgICAgICAgICAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBv ZiBieXRlcyB0cmFuc2ZlcnJlZA0KKyAgICAgICAgICAgICAgcmV0ID0gaWlj X2luYihhZGFwLCBpaWMtPnhmcmNudCk7DQorICAgICAgICAgICAgICByZXQg PSByZXQgJiAweDA3Ow0KKyAgICAgICAgICAgICAgcmV0dXJuICh3cmNvdW50 LTQrcmV0KTsNCisgICAgICAgICAgIH0NCisgICAgICAgICAgIGVsc2UgcmV0 dXJuIGVycm9yX2NvZGU7DQorICAgICAgICB9DQorCURFQjIocHJpbnRrKEtF Uk5fREVCVUcgImlpY19zZW5kYnl0ZXM6IEdvdCBpbnRlcnJ1cHRcbiIpKTsN CisJcmV0dXJuIHdyY291bnQ7DQorfQ0KKw0KKw0KKy8vDQorLy8gRGVzY3Jp cHRpb246IENhbGxlZCBieSB0aGUgdXBwZXIgbGF5ZXJzIHRvIGRvIHRoZSBn cnVudCB3b3JrIGZvcg0KKy8vIGEgbWFzdGVyIHJlYWQgdHJhbnNhY3Rpb24u DQorLy8NCitzdGF0aWMgaW50IGlpY19yZWFkYnl0ZXMoc3RydWN0IGkyY19h ZGFwdGVyICppMmNfYWRhcCwgY2hhciAqYnVmLCBpbnQgY291bnQsIGludCB4 ZmVyX3R5cGUpDQorew0KKwlzdHJ1Y3QgaWljX3JlZ3MgKmlpYzsNCisJaW50 IHJkY291bnQ9MCwgaSwgc3RhdHVzLCB0aW1lb3V0Ow0KKwlzdHJ1Y3QgaTJj X2FsZ29faWljX2RhdGEgKmFkYXAgPSBpMmNfYWRhcC0+YWxnb19kYXRhOw0K KwlzdHJ1Y3QgaWljX2libSAqYWRhcF9wcml2X2RhdGEgPSBhZGFwLT5kYXRh Ow0KKwlpbnQgbG9vcHMsIHJlbWFpbmRlciwgajsNCisgICAgICAgIGludCBy ZXQsIGVycm9yX2NvZGU7DQorCWlpYyA9IChzdHJ1Y3QgaWljX3JlZ3MgKikg YWRhcF9wcml2X2RhdGEtPmlpY19iYXNlOw0KKw0KKwlpZihjb3VudCA9PSAw KSByZXR1cm4gMDsNCisJbG9vcHMgPSBjb3VudCAvIDQ7DQorCXJlbWFpbmRl ciA9IGNvdW50ICUgNDsNCisNCisJLy9wcmludGsoS0VSTl9ERUJVRyAiaWlj X3JlYWRieXRlczogbG9vcHMgPSAlZCwgcmVtYWluZGVyID0gJWRcbiIsIGxv b3BzLCByZW1haW5kZXIpOw0KKw0KKwlpZigobG9vcHMgPiAxKSAmJiAocmVt YWluZGVyID09IDApKSB7DQorCS8vcHJpbnRrKEtFUk5fREVCVUcgImlpY19y ZWFkYnl0ZXM6IChsb29wcyA+IDEpICYmIChyZW1haW5kZXIgPT0gMClcbiIp Ow0KKwkgICBmb3IoaT0wOyBpPChsb29wcy0xKTsgaSsrKSB7DQorCSAgICAg IC8vDQorICAgICAgICAgICAgICAvLyBJc3N1ZSBjb21tYW5kIHRvIGJlZ2lu IG1hc3RlciByZWFkICg0IGJ5dGVzIG1heGltdW0pDQorICAgICAgICAgICAg ICAvLw0KKwkgICAgICAvL3ByaW50ayhLRVJOX0RFQlVHICItLS0+SXNzdWVk IHJlYWQgY29tbWFuZFxuIik7DQorCSAgICAgIGlpY19vdXRiKGFkYXAsIGlp Yy0+Y250bCwgMHgzNyk7DQorCSAgICAgIC8vDQorICAgICAgICAgICAgICAv LyBXYWl0IGZvciB0cmFuc21pc3Npb24gdG8gY29tcGxldGUuICBXaGVuIGl0 IGRvZXMsDQorICAgICAgICAgICAgICAvLyBsb29wIHRvIHRoZSB0b3Agb2Yg dGhlIGZvciBzdGF0ZW1lbnQgYW5kIHdyaXRlIHRoZQ0KKyAgICAgICAgICAg ICAgLy8gbmV4dCBmb3VyIGJ5dGVzLg0KKyAgICAgICAgICAgICAgLy8NCisJ ICAgICAgLy9wcmludGsoS0VSTl9ERUJVRyAiLS0tPldhaXRpbmcgZm9yIGlu dGVycnVwdFxuIik7DQorICAgICAgICAgICAgICB0aW1lb3V0ID0gd2FpdF9m b3JfcGluKGFkYXAsICZzdGF0dXMpOw0KKyAgICAgICAgICAgICAgaWYodGlt ZW91dCA8IDApIHsNCisJICAgICAgICAgLy8gRXJyb3IgSGFuZGxlcg0KKwkJ IC8vcHJpbnRrKEtFUk5fRVJSICJFcnJvcjogcmVhZCB0aW1lZCBvdXRcbiIp Ow0KKyAgICAgICAgICAgICAgICAgcmV0dXJuIHJkY291bnQ7DQorCSAgICAg IH0NCisgICAgICAgICAgICAgIC8vcHJpbnRrKEtFUk5fREVCVUcgIi0tLT5H b3QgaW50ZXJydXB0XG4iKTsNCisNCisgICAgICAgICAgICAgIHJldCA9IGFu YWx5emVfc3RhdHVzKGFkYXAsICZlcnJvcl9jb2RlKTsNCisJICAgICAgaWYo cmV0IDwgMCkgew0KKyAgICAgICAgICAgICAgICAgaWYoZXJyb3JfY29kZSA9 PSBJSUNfRVJSX0lOQ09NUExFVEVfWEZSKQ0KKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIHJkY291bnQ7DQorICAgICAgICAgICAgICAgICBlbHNlDQor ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JfY29kZTsNCisgICAg ICAgICAgICAgIH0NCisNCisJICAgICAgZm9yKGo9MDsgajw0OyBqKyspIHsN CisgICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIGRhdGEgdG8gc2h1ZmZs ZSB0byB0b3Agb2YgZGF0YSBidWZmZXINCisgICAgICAgICAgICAgICAgIC8v IFRoaXMgdmFsdWUgbmVlZHMgdG8gb3B0aW1pemVkLg0KKwkJIHVkZWxheSgx KTsNCisJICAgICAgICAgYnVmW3JkY291bnRdID0gaWljX2luYihhZGFwLCBp aWMtPm1kYnVmKTsNCisJICAgICAgICAgcmRjb3VudCsrOw0KKwkJIC8vcHJp bnRrKEtFUk5fREVCVUcgIi0tLT5SZWFkIG9uZSBieXRlXG4iKTsNCisgICAg ICAgICAgICAgIH0NCisgICAgICAgICAgIH0NCisJfQ0KKw0KKwllbHNlIGlm KChsb29wcyA+PSAxKSAmJiAocmVtYWluZGVyID4gMCkpew0KKwkvL3ByaW50 ayhLRVJOX0RFQlVHICJpaWNfcmVhZGJ5dGVzOiAobG9vcHMgPj0xKSAmJiAo cmVtYWluZGVyID4gMClcbiIpOw0KKwkgICBmb3IoaT0wOyBpPGxvb3BzOyBp KyspIHsNCisgICAgICAgICAgICAgIC8vDQorICAgICAgICAgICAgICAvLyBJ c3N1ZSBjb21tYW5kIHRvIGJlZ2luIG1hc3RlciByZWFkICg0IGJ5dGVzIG1h eGltdW0pDQorICAgICAgICAgICAgICAvLw0KKyAgICAgICAgICAgICAgLy9w cmludGsoS0VSTl9ERUJVRyAiLS0tPklzc3VlZCByZWFkIGNvbW1hbmRcbiIp Ow0KKyAgICAgICAgICAgICAgaWljX291dGIoYWRhcCwgaWljLT5jbnRsLCAw eDM3KTsNCisgICAgICAgICAgICAgIC8vDQorICAgICAgICAgICAgICAvLyBX YWl0IGZvciB0cmFuc21pc3Npb24gdG8gY29tcGxldGUuICBXaGVuIGl0IGRv ZXMsDQorICAgICAgICAgICAgICAvLyBsb29wIHRvIHRoZSB0b3Agb2YgdGhl IGZvciBzdGF0ZW1lbnQgYW5kIHdyaXRlIHRoZQ0KKyAgICAgICAgICAgICAg Ly8gbmV4dCBmb3VyIGJ5dGVzLg0KKyAgICAgICAgICAgICAgLy8NCisgICAg ICAgICAgICAgIC8vcHJpbnRrKEtFUk5fREVCVUcgIi0tLT5XYWl0aW5nIGZv ciBpbnRlcnJ1cHRcbiIpOw0KKyAgICAgICAgICAgICAgdGltZW91dCA9IHdh aXRfZm9yX3BpbihhZGFwLCAmc3RhdHVzKTsNCisgICAgICAgICAgICAgIGlm KHRpbWVvdXQgPCAwKSB7DQorICAgICAgICAgICAgICAgICAvLyBFcnJvciBI YW5kbGVyDQorICAgICAgICAgICAgICAgICAvL3ByaW50ayhLRVJOX0VSUiAi RXJyb3I6IHJlYWQgdGltZWQgb3V0XG4iKTsNCisgICAgICAgICAgICAgICAg IHJldHVybiByZGNvdW50Ow0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAg ICAgICAgLy9wcmludGsoS0VSTl9ERUJVRyAiLS0tPkdvdCBpbnRlcnJ1cHRc biIpOw0KKw0KKyAgICAgICAgICAgICAgcmV0ID0gYW5hbHl6ZV9zdGF0dXMo YWRhcCwgJmVycm9yX2NvZGUpOw0KKyAgICAgICAgICAgICAgaWYocmV0IDwg MCkgew0KKyAgICAgICAgICAgICAgICAgaWYoZXJyb3JfY29kZSA9PSBJSUNf RVJSX0lOQ09NUExFVEVfWEZSKQ0KKyAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIHJkY291bnQ7DQorICAgICAgICAgICAgICAgICBlbHNlDQorICAgICAg ICAgICAgICAgICAgICByZXR1cm4gZXJyb3JfY29kZTsNCisgICAgICAgICAg ICAgIH0NCisNCisgICAgICAgICAgICAgIGZvcihqPTA7IGo8NDsgaisrKSB7 DQorICAgICAgICAgICAgICAgICAvLyBXYWl0IGZvciBkYXRhIHRvIHNodWZm bGUgdG8gdG9wIG9mIGRhdGEgYnVmZmVyDQorICAgICAgICAgICAgICAgICAv LyBUaGlzIHZhbHVlIG5lZWRzIHRvIG9wdGltaXplZC4NCisgICAgICAgICAg ICAgICAgIHVkZWxheSgxKTsNCisgICAgICAgICAgICAgICAgIGJ1ZltyZGNv dW50XSA9IGlpY19pbmIoYWRhcCwgaWljLT5tZGJ1Zik7DQorICAgICAgICAg ICAgICAgICByZGNvdW50Kys7DQorICAgICAgICAgICAgICAgICAvL3ByaW50 ayhLRVJOX0RFQlVHICItLS0+UmVhZCBvbmUgYnl0ZVxuIik7DQorICAgICAg ICAgICAgICB9DQorICAgICAgICAgICB9DQorICAgICAgICB9DQorDQorCS8v cHJpbnRrKEtFUk5fREVCVUcgImlpY19yZWFkYnl0ZXM6IGV4cGVkaXRlIHJl YWRcbiIpOw0KKwlpZihyZW1haW5kZXIgPT0gMCkgcmVtYWluZGVyID0gNDsN CisJREVCMihwcmludGsoS0VSTl9ERUJVRyAiaWljX3JlYWRieXRlczogd3Jp dGluZyAleCB0byBJSUNPX0NOVExcbiIsICgweDAzIHwgKChyZW1haW5kZXIt MSkgPDwgNCkpKSk7DQorDQorCWlmKHhmZXJfdHlwZSA9PSBJSUNfQ09NQklO RURfWEZFUikgew0KKwkgICBpaWNfb3V0YihhZGFwLCBpaWMtPmNudGwsICgw eDBiIHwgKChyZW1haW5kZXItMSkgPDwgNCkpKTsNCisgICAgICAgIH0NCisg ICAgICAgIGVsc2Ugew0KKwkgICBpaWNfb3V0YihhZGFwLCBpaWMtPmNudGws ICgweDAzIHwgKChyZW1haW5kZXItMSkgPDwgNCkpKTsNCisgICAgICAgIH0N CisJREVCMihwcmludGsoS0VSTl9ERUJVRyAiaWljX3JlYWRieXRlczogV2Fp dCBmb3IgcGluXG4iKSk7DQorICAgICAgICB0aW1lb3V0ID0gd2FpdF9mb3Jf cGluKGFkYXAsICZzdGF0dXMpOw0KKwlERUIyKHByaW50ayhLRVJOX0RFQlVH ICJpaWNfcmVhZGJ5dGVzOiBHb3QgdGhlIGludGVycnVwdFxuIikpOw0KKyAg ICAgICAgaWYodGltZW91dCA8IDApIHsNCisgICAgICAgICAgIC8vIEVycm9y IEhhbmRsZXINCisJICAgLy9wcmludGsoS0VSTl9FUlIgIkVycm9yOiByZWFk IHRpbWVkIG91dFxuIik7DQorICAgICAgICAgICByZXR1cm4gcmRjb3VudDsN CisgICAgICAgIH0NCisNCisgICAgICAgIHJldCA9IGFuYWx5emVfc3RhdHVz KGFkYXAsICZlcnJvcl9jb2RlKTsNCisgICAgICAgIGlmKHJldCA8IDApIHsN CisgICAgICAgICAgIGlmKGVycm9yX2NvZGUgPT0gSUlDX0VSUl9JTkNPTVBM RVRFX1hGUikNCisgICAgICAgICAgICAgIHJldHVybiByZGNvdW50Ow0KKyAg ICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgICAgcmV0dXJuIGVycm9yX2Nv ZGU7DQorICAgICAgICB9DQorDQorCS8vcHJpbnRrKEtFUk5fREVCVUcgImlp Y19yZWFkYnl0ZTogQmVnaW4gcmVhZGluZyBkYXRhIGJ1ZmZlclxuIik7DQor CWZvcihpPTA7IGk8cmVtYWluZGVyOyBpKyspIHsNCisJICAgYnVmW3JkY291 bnRdID0gaWljX2luYihhZGFwLCBpaWMtPm1kYnVmKTsNCisJICAgLy8gcHJp bnRrKEtFUk5fREVCVUcgImlpY19yZWFkYnl0ZXM6ICBDaGFyYWN0ZXIgcmVh ZCA9ICV4XG4iLCBidWZbcmRjb3VudF0pOw0KKyAgICAgICAgICAgcmRjb3Vu dCsrOw0KKwl9DQorDQorCXJldHVybiByZGNvdW50Ow0KK30NCisNCisNCisv Lw0KKy8vIERlc2NyaXB0aW9uOiAgVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRz IGNvbWJpbmVkIHRyYW5zYWN0aW9ucy4gIENvbWJpbmVkDQorLy8gdHJhbnNh Y3Rpb25zIGNvbnNpc3Qgb2YgY29tYmluYXRpb25zIG9mIHJlYWRpbmcgYW5k IHdyaXRpbmcgYmxvY2tzIG9mIGRhdGEuDQorLy8gRWFjaCB0cmFuc2ZlciAo aS5lLiBhIHJlYWQgb3IgYSB3cml0ZSkgaXMgc2VwYXJhdGVkIGJ5IGEgcmVw ZWF0ZWQgc3RhcnQNCisvLyBjb25kaXRpb24uDQorLy8NCitzdGF0aWMgaW50 IGlpY19jb21iaW5lZF90cmFuc2FjdGlvbihzdHJ1Y3QgaTJjX2FkYXB0ZXIg KmkyY19hZGFwLCBzdHJ1Y3QgaTJjX21zZyBtc2dzW10sIGludCBudW0pIA0K K3sNCisgICBpbnQgaTsNCisgICBzdHJ1Y3QgaTJjX21zZyAqcG1zZzsNCisg ICBpbnQgcmV0Ow0KKw0KKyAgIERFQjIocHJpbnRrKEtFUk5fREVCVUcgIkJl Z2lubmluZyBjb21iaW5lZCB0cmFuc2FjdGlvblxuIikpOw0KKwlmb3IoaT0w OyBpIDwgbnVtOyBpKyspIHsNCisJCXBtc2cgPSAmbXNnc1tpXTsNCisJCWlm KHBtc2ctPmZsYWdzICYgSTJDX01fUkQpIHsNCisNCisJCQkvLyBMYXN0IHJl YWQgb3Igd3JpdGUgc2VnbWVudCBuZWVkcyB0byBiZSB0ZXJtaW5hdGVkIHdp dGggYSBzdG9wDQorCQkJaWYoaSA8IG51bS0xKSB7DQorCQkJCURFQjIocHJp bnRrKEtFUk5fREVCVUcgIlRoaXMgb25lIGlzIGEgcmVhZFxuIikpOw0KKwkJ CX0NCisJCQllbHNlIHsNCisJCQkJREVCMihwcmludGsoS0VSTl9ERUJVRyAi RG9pbmcgdGhlIGxhc3QgcmVhZFxuIikpOw0KKwkJCX0NCisJCQlyZXQgPSBp aWNfcmVhZGJ5dGVzKGkyY19hZGFwLCBwbXNnLT5idWYsIHBtc2ctPmxlbiwg KGkgPCBudW0tMSkgPyBJSUNfQ09NQklORURfWEZFUiA6IElJQ19TSU5HTEVf WEZFUik7DQorDQorCQkJaWYgKHJldCAhPSBwbXNnLT5sZW4pIHsNCisJCQkJ REVCMihwcmludGsoImkyYy1hbGdvLXBwYzQwNS5vOiBmYWlsOiAiDQorCQkJ CQkJCSJvbmx5IHJlYWQgJWQgYnl0ZXMuXG4iLHJldCkpOw0KKwkJCQlyZXR1 cm4gaTsNCisJCQl9DQorCQkJZWxzZSB7DQorCQkJCURFQjIocHJpbnRrKCJp MmMtYWxnby1wcGM0MDUubzogcmVhZCAlZCBieXRlcy5cbiIscmV0KSk7DQor CQkJfQ0KKwkJfQ0KKwkJZWxzZSBpZighKHBtc2ctPmZsYWdzICYgSTJDX01f UkQpKSB7DQorDQorCQkJLy8gTGFzdCByZWFkIG9yIHdyaXRlIHNlZ21lbnQg bmVlZHMgdG8gYmUgdGVybWluYXRlZCB3aXRoIGEgc3RvcA0KKwkJCWlmKGkg PCBudW0tMSkgew0KKwkJCQlERUIyKHByaW50ayhLRVJOX0RFQlVHICJUaGlz IG9uZSBpcyBhIHdyaXRlXG4iKSk7DQorCQkJfQ0KKwkJCWVsc2Ugew0KKwkJ CQlERUIyKHByaW50ayhLRVJOX0RFQlVHICJEb2luZyB0aGUgbGFzdCB3cml0 ZVxuIikpOw0KKwkJCX0NCisJCQlyZXQgPSBpaWNfc2VuZGJ5dGVzKGkyY19h ZGFwLCBwbXNnLT5idWYsIHBtc2ctPmxlbiwgKGkgPCBudW0tMSkgPyBJSUNf Q09NQklORURfWEZFUiA6IElJQ19TSU5HTEVfWEZFUik7DQorDQorCQkJaWYg KHJldCAhPSBwbXNnLT5sZW4pIHsNCisJCQkJREVCMihwcmludGsoImkyYy1h bGdvLXBwYzQwNS5vOiBmYWlsOiAiDQorCQkJCQkJCSJvbmx5IHdyb3RlICVk IGJ5dGVzLlxuIixyZXQpKTsNCisJCQkJcmV0dXJuIGk7DQorCQkJfQ0KKwkJ CWVsc2Ugew0KKwkJCQlERUIyKHByaW50aygiaTJjLWFsZ28tcHBjNDA1Lm86 IHdyb3RlICVkIGJ5dGVzLlxuIixyZXQpKTsNCisJCQl9DQorCQl9DQorCX0N CisgDQorCXJldHVybiBudW07DQorfQ0KKw0KKw0KKy8vDQorLy8gRGVzY3Jp cHRpb246IFdoZW5ldmVyIHdlIGluaXRpYXRlIGEgdHJhbnNhY3Rpb24sIHRo ZSBmaXJzdCBieXRlIGNsb2NrZWQNCisvLyBvbnRvIHRoZSBidXMgYWZ0ZXIg dGhlIHN0YXJ0IGNvbmRpdGlvbiBpcyB0aGUgYWRkcmVzcyAoNyBiaXQpIG9m IHRoZQ0KKy8vIGRldmljZSB3ZSB3YW50IHRvIHRhbGsgdG8uICBUaGlzIGZ1 bmN0aW9uIG1hbmlwdWxhdGVzIHRoZSBhZGRyZXNzIHNwZWNpZmllZA0KKy8v IHNvIHRoYXQgaXQgbWFrZXMgc2Vuc2UgdG8gdGhlIGhhcmR3YXJlIHdoZW4g d3JpdHRlbiB0byB0aGUgSUlDIHBlcmlwaGVyYWwuDQorLy8NCisvLyBOb3Rl OiAxMCBiaXQgYWRkcmVzc2VzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMg ZHJpdmVyLCBhbHRob3VnaCB0aGV5IGFyZQ0KKy8vIHN1cHBvcnRlZCBieSB0 aGUgaGFyZHdhcmUuICBUaGlzIGZ1bmN0aW9uYWxpdHkgbmVlZHMgdG8gYmUg aW1wbGVtZW50ZWQuDQorLy8NCitzdGF0aWMgaW5saW5lIGludCBpaWNfZG9B ZGRyZXNzKHN0cnVjdCBpMmNfYWxnb19paWNfZGF0YSAqYWRhcCwNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpMmNfbXNnICpt c2csIGludCByZXRyaWVzKSANCit7DQorCXN0cnVjdCBpaWNfcmVncyAqaWlj Ow0KKwl1bnNpZ25lZCBzaG9ydCBmbGFncyA9IG1zZy0+ZmxhZ3M7DQorCXVu c2lnbmVkIGNoYXIgYWRkcjsNCisJc3RydWN0IGlpY19pYm0gKmFkYXBfcHJp dl9kYXRhID0gYWRhcC0+ZGF0YTsNCisJaWljID0gKHN0cnVjdCBpaWNfcmVn cyAqKSBhZGFwX3ByaXZfZGF0YS0+aWljX2Jhc2U7DQorDQorLy8NCisvLyBU aGUgZm9sbG93aW5nIHNlZ21lbnQgZm9yIDEwIGJpdCBhZGRyZXNzZXMgbmVl ZHMgdG8gYmUgcG9ydGVkDQorLy8NCisvKiBUZW4gYml0IGFkZHJlc3NlcyBu b3Qgc3VwcG9ydGVkIHJpZ2h0IG5vdw0KKwlpZiAoIChmbGFncyAmIEkyQ19N X1RFTikgICkgeyANCisJCS8vIGEgdGVuIGJpdCBhZGRyZXNzDQorCQlhZGRy ID0gMHhmMCB8ICgoIG1zZy0+YWRkciA+PiA3KSAmIDB4MDMpOw0KKwkJREVC MihwcmludGsoS0VSTl9ERUJVRyAiYWRkcjA6ICVkXG4iLGFkZHIpKTsNCisJ CS8vIHRyeSBleHRlbmRlZCBhZGRyZXNzIGNvZGUuLi4NCisJCXJldCA9IHRy eV9hZGRyZXNzKGFkYXAsIGFkZHIsIHJldHJpZXMpOw0KKwkJaWYgKHJldCE9 MSkgew0KKwkJCXByaW50ayhLRVJOX0VSUiAiaWljX2RvQWRkcmVzczogZGll ZCBhdCBleHRlbmRlZCBhZGRyZXNzIGNvZGUuXG4iKTsNCisJCQlyZXR1cm4g LUVSRU1PVEVJTzsNCisJCX0NCisJCS8vIHRoZSByZW1haW5pbmcgOCBiaXQg YWRkcmVzcw0KKwkJaWljX291dGIoYWRhcCxtc2ctPmFkZHIgJiAweDdmKTsN CisJCS8vIFN0YXR1cyBjaGVjayBjb21lcyBoZXJlDQorCQlpZiAocmV0ICE9 IDEpIHsNCisJCQlwcmludGsoS0VSTl9FUlIgImlpY19kb0FkZHJlc3M6IGRp ZWQgYXQgMm5kIGFkZHJlc3MgY29kZS5cbiIpOw0KKwkJCXJldHVybiAtRVJF TU9URUlPOw0KKwkJfQ0KKwkJaWYgKCBmbGFncyAmIEkyQ19NX1JEICkgew0K KwkJCWkyY19yZXBzdGFydChhZGFwKTsNCisJCQkvLyBva2F5LCBub3cgc3dp dGNoIGludG8gcmVhZGluZyBtb2RlDQorCQkJYWRkciB8PSAweDAxOw0KKwkJ CXJldCA9IHRyeV9hZGRyZXNzKGFkYXAsIGFkZHIsIHJldHJpZXMpOw0KKwkJ CWlmIChyZXQhPTEpIHsNCisJCQkJcHJpbnRrKEtFUk5fRVJSICJpaWNfZG9B ZGRyZXNzOiBkaWVkIGF0IGV4dGVuZGVkIGFkZHJlc3MgY29kZS5cbiIpOw0K KwkJCQlyZXR1cm4gLUVSRU1PVEVJTzsNCisJCQl9DQorCQl9DQorCX0gZWxz ZSAtLS0tLS0tLS0tPiAvLyBub3JtYWwgNyBiaXQgYWRkcmVzcw0KKw0KK1Rl biBiaXQgYWRkcmVzc2VzIG5vdCBzdXBwb3J0ZWQgeWV0ICovDQorDQorCWFk ZHIgPSAoIG1zZy0+YWRkciA8PCAxICk7DQorCWlmIChmbGFncyAmIEkyQ19N X1JEICkNCisJCWFkZHIgfD0gMTsNCisJaWYgKGZsYWdzICYgSTJDX01fUkVW X0RJUl9BRERSICkNCisJCWFkZHIgXj0gMTsNCisJLy8NCisJLy8gV3JpdGUg dG8gdGhlIGxvdyBzbGF2ZSBhZGRyZXNzDQorCS8vDQorCWlpY19vdXRiKGFk YXAsIGlpYy0+bG1hZHIsIGFkZHIpOw0KKwkvLw0KKwkvLyBXcml0ZSB6ZXJv IHRvIHRoZSBoaWdoIHNsYXZlIHJlZ2lzdGVyIHNpbmNlIHdlIGFyZQ0KKwkv LyBvbmx5IHVzaW5nIDcgYml0IGFkZHJlc3Nlcw0KKwkvLw0KKwlpaWNfb3V0 YihhZGFwLCBpaWMtPmhtYWRyLCAwKTsNCisNCisJcmV0dXJuIDA7DQorfQ0K Kw0KKw0KKy8vDQorLy8gRGVzY3JpcHRpb246IFByZXBhcmVzIHRoZSBjb250 cm9sbGVyIGZvciBhIHRyYW5zYWN0aW9uIChjbGVhcmluZyBzdGF0dXMNCisv LyByZWdpc3RlcnMsIGRhdGEgYnVmZmVycywgZXRjKSwgYW5kIHRoZW4gY2Fs bHMgZWl0aGVyIGlpY19yZWFkYnl0ZXMgb3INCisvLyBpaWNfc2VuZGJ5dGVz IHRvIGRvIHRoZSBhY3R1YWwgdHJhbnNhY3Rpb24uDQorLy8NCitzdGF0aWMg aW50IGlpY194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqaTJjX2FkYXAsDQor CQkgICAgc3RydWN0IGkyY19tc2cgbXNnc1tdLCANCisJCSAgICBpbnQgbnVt KQ0KK3sNCisJc3RydWN0IGlpY19yZWdzICppaWM7DQorCXN0cnVjdCBpMmNf YWxnb19paWNfZGF0YSAqYWRhcCA9IGkyY19hZGFwLT5hbGdvX2RhdGE7DQor CXN0cnVjdCBpaWNfaWJtICphZGFwX3ByaXZfZGF0YSA9IGFkYXAtPmRhdGE7 DQorCXN0cnVjdCBpMmNfbXNnICpwbXNnOw0KKwlpbnQgaSA9IDA7DQorCWlu dCByZXQ7DQorCWlpYyA9IChzdHJ1Y3QgaWljX3JlZ3MgKikgYWRhcF9wcml2 X2RhdGEtPmlpY19iYXNlOw0KKw0KKwlwbXNnID0gJm1zZ3NbaV07DQorDQor CS8vDQorCS8vIENsZWFyIHN0YXR1cyByZWdpc3Rlcg0KKwkvLw0KKwlERUIy KHByaW50ayhLRVJOX0RFQlVHICJpaWNfeGZlcjogaWljX3hmZXI6IENsZWFy aW5nIHN0YXR1cyByZWdpc3RlclxuIikpOw0KKwlpaWNfb3V0YihhZGFwLCBp aWMtPnN0cywgMHgwYSk7DQorDQorCS8vDQorCS8vIFdhaXQgZm9yIGFueSBw ZW5kaW5nIHRyYW5zZmVycyB0byBjb21wbGV0ZQ0KKwkvLw0KKwlERUIyKHBy aW50ayhLRVJOX0RFQlVHICJpaWNfeGZlcjogV2FpdGluZyBmb3IgYW55IHBl bmRpbmcgdHJhbnNmZXJzIHRvIGNvbXBsZXRlXG4iKSk7DQorCXdoaWxlKChy ZXQgPSBpaWNfaW5iKGFkYXAsIGlpYy0+c3RzKSkgPT0gMHgwMSkgew0KKwkJ Ow0KKwl9DQorDQorCS8vDQorCS8vIEZsdXNoIG1hc3RlciBkYXRhIGJ1Zg0K KwkvLw0KKwlERUIyKHByaW50ayhLRVJOX0RFQlVHICJpaWNfeGZlcjogQ2xl YXJpbmcgbWFzdGVyIGRhdGEgYnVmZmVyXG4iKSk7CQkNCisJcmV0ID0gaWlj X2luYihhZGFwLCBpaWMtPm1kY250bCk7DQorCWlpY19vdXRiKGFkYXAsIGlp Yy0+bWRjbnRsLCByZXQgfCAweDQwKTsNCisNCisJLy8NCisJLy8gTG9hZCBz bGF2ZSBhZGRyZXNzDQorCS8vDQorCURFQjIocHJpbnRrKEtFUk5fREVCVUcg ImlpY194ZmVyOiBMb2FkaW5nIHNsYXZlIGFkZHJlc3NcbiIpKTsNCisJcmV0 ID0gaWljX2RvQWRkcmVzcyhhZGFwLCBwbXNnLCBpMmNfYWRhcC0+cmV0cmll cyk7DQorDQorICAgICAgICAvLw0KKyAgICAgICAgLy8gQ2hlY2sgdG8gc2Vl IGlmIHRoZSBidXMgaXMgYnVzeQ0KKyAgICAgICAgLy8NCisgICAgICAgIHJl dCA9IGlpY19pbmIoYWRhcCwgaWljLT5leHRzdHMpOw0KKyAgICAgICAgLy8g TWFzayBvZmYgdGhlIGlycmVsZXZlbnQgYml0cw0KKyAgICAgICAgcmV0ID0g cmV0ICYgMHg3MDsNCisgICAgICAgIC8vIFdoZW4gdGhlIGJ1cyBpcyBmcmVl LCB0aGUgQkNTIGJpdHMgaW4gdGhlIEVYVFNUUyByZWdpc3RlciBhcmUgMGIx MDANCisgICAgICAgIGlmKHJldCAhPSAweDQwKSByZXR1cm4gSUlDX0VSUl9M T1NUX0FSQjsNCisNCisJLy8NCisJLy8gQ29tYmluZWQgdHJhbnNhY3Rpb24g KHJlYWQgYW5kIHdyaXRlKQ0KKwkvLw0KKwlpZihudW0gPiAxKSB7DQorICAg ICAgICAgICBERUIyKHByaW50ayhLRVJOX0RFQlVHICJpaWNfeGZlcjogQ2Fs bCBjb21iaW5lZCB0cmFuc2FjdGlvblxuIikpOw0KKyAgICAgICAgICAgcmV0 ID0gaWljX2NvbWJpbmVkX3RyYW5zYWN0aW9uKGkyY19hZGFwLCBtc2dzLCBu dW0pOw0KKyAgICAgICAgfQ0KKwkvLw0KKwkvLyBSZWFkIG9ubHkNCisJLy8N CisJZWxzZSBpZigobnVtID09IDEpICYmIChwbXNnLT5mbGFncyAmIEkyQ19N X1JEKSkgew0KKwkgICAvLw0KKwkgICAvLyBUZWxsIGRldmljZSB0byBiZWdp biByZWFkaW5nIGRhdGEgZnJvbSB0aGUgIG1hc3RlciBkYXRhIA0KKwkgICAv Lw0KKwkgICBERUIyKHByaW50ayhLRVJOX0RFQlVHICJpaWNfeGZlcjogQ2Fs bCBhZGFwdGVyJ3MgcmVhZFxuIikpOw0KKwkgICByZXQgPSBpaWNfcmVhZGJ5 dGVzKGkyY19hZGFwLCBwbXNnLT5idWYsIHBtc2ctPmxlbiwgSUlDX1NJTkdM RV9YRkVSKTsNCisJfSANCisgICAgICAgIC8vDQorCS8vIFdyaXRlIG9ubHkN CisJLy8NCisJZWxzZSBpZigobnVtID09IDEgKSAmJiAoIShwbXNnLT5mbGFn cyAmIEkyQ19NX1JEKSkpIHsNCisJICAgLy8NCisJICAgLy8gV3JpdGUgZGF0 YSB0byBtYXN0ZXIgZGF0YSBidWZmZXJzIGFuZCB0ZWxsIG91ciBkZXZpY2UN CisJICAgLy8gdG8gYmVnaW4gdHJhbnNtaXR0aW5nDQorCSAgIC8vDQorCSAg IERFQjIocHJpbnRrKEtFUk5fREVCVUcgImlpY194ZmVyOiBDYWxsIGFkYXB0 ZXIncyB3cml0ZVxuIikpOw0KKwkgICByZXQgPSBpaWNfc2VuZGJ5dGVzKGky Y19hZGFwLCBwbXNnLT5idWYsIHBtc2ctPmxlbiwgSUlDX1NJTkdMRV9YRkVS KTsNCisJfQkNCisNCisJcmV0dXJuIHJldDsgICANCit9DQorDQorDQorLy8N CisvLyBEZXNjcmlwdGlvbjogSW1wbGVtZW50cyBkZXZpY2Ugc3BlY2lmaWMg aW9jdGxzLiAgSGlnaGVyIGxldmVsIGlvY3RscyBjYW4NCisvLyBiZSBmb3Vu ZCBpbiBpMmMtY29yZS5jIGFuZCBhcmUgdHlwaWNhbCBvZiBhbnkgaTJjIGNv bnRyb2xsZXIgKHNwZWNpZnlpbmcNCisvLyBzbGF2ZSBhZGRyZXNzLCB0aW1l b3V0cywgZXRjKS4gIFRoZXNlIGlvY3RscyB0YWtlIGFkdmFudGFnZSBvZiBh bnkgaGFyZHdhcmUNCisvLyBmZWF0dXJlcyBidWlsdCBpbnRvIHRoZSBjb250 cm9sbGVyIGZvciB3aGljaCB0aGlzIGFsZ29yaXRobS1hZGFwdGVyIHNldA0K Ky8vIHdhcyB3cml0dGVuLiAgVGhlc2UgaW9jdGxzIGFsbG93IHlvdSB0byB0 YWtlIGNvbnRyb2wgb2YgdGhlIGRhdGEgYW5kIGNsb2NrDQorLy8gbGluZXMg b24gdGhlIElCTSBQUEMgNDA1IElJQyBjb250cm9sbGVyIGFuZCBzZXQgdGhl IGVpdGhlciBoaWdoIG9yIGxvdywNCisvLyBzaW1pbGFyIHRvIGEgR1BJTyBw aW4uDQorLy8NCitzdGF0aWMgaW50IGFsZ29fY29udHJvbChzdHJ1Y3QgaTJj X2FkYXB0ZXIgKmFkYXB0ZXIsIA0KKwl1bnNpZ25lZCBpbnQgY21kLCB1bnNp Z25lZCBsb25nIGFyZykNCit7DQorCXN0cnVjdCBpaWNfcmVncyAqaWljOw0K KwlzdHJ1Y3QgaTJjX2FsZ29faWljX2RhdGEgKmFkYXAgPSBhZGFwdGVyLT5h bGdvX2RhdGE7DQorCXN0cnVjdCBpaWNfaWJtICphZGFwX3ByaXZfZGF0YSA9 IGFkYXAtPmRhdGE7DQorCWludCByZXQ9MDsNCisJaW50IGxpbmVzOw0KKwlp aWMgPSAoc3RydWN0IGlpY19yZWdzICopIGFkYXBfcHJpdl9kYXRhLT5paWNf YmFzZTsNCisNCisJbGluZXMgPSBpaWNfaW5iKGFkYXAsIGlpYy0+ZGlyZWN0 Y250bCk7DQorDQorCWlmIChjbWQgPT0gSUlDT19JMkNfU0RBSElHSCkgew0K KwkgICAgICBsaW5lcyA9IGxpbmVzICYgMHgwMTsNCisJICAgICAgaWYoIGxp bmVzICkgbGluZXMgPSAweDA0Ow0KKwkgICAgICBlbHNlIGxpbmVzID0gMDsN CisJICAgICAgaWljX291dGIoYWRhcCwgaWljLT5kaXJlY3RjbnRsLCgweDA4 fGxpbmVzKSk7DQorCX0NCisJZWxzZSBpZiAoY21kID09IElJQ09fSTJDX1NE QUxPVykgew0KKwkgICAgICBsaW5lcyA9IGxpbmVzICYgMHgwMTsNCisJICAg ICAgaWYoIGxpbmVzICkgbGluZXMgPSAweDA0Ow0KKyAgICAgICAgICAgICAg ZWxzZSBsaW5lcyA9IDA7DQorICAgICAgICAgICAgICBpaWNfb3V0YihhZGFw LCBpaWMtPmRpcmVjdGNudGwsKDB4MDB8bGluZXMpKTsNCisJfQ0KKwllbHNl IGlmIChjbWQgPT0gSUlDT19JMkNfU0NMSElHSCkgew0KKyAgICAgICAgICAg ICAgbGluZXMgPSBsaW5lcyAmIDB4MDI7DQorICAgICAgICAgICAgICBpZigg bGluZXMgKSBsaW5lcyA9IDB4MDg7DQorICAgICAgICAgICAgICBlbHNlIGxp bmVzID0gMDsNCisgICAgICAgICAgICAgIGlpY19vdXRiKGFkYXAsIGlpYy0+ ZGlyZWN0Y250bCwoMHgwNHxsaW5lcykpOw0KKwl9DQorCWVsc2UgaWYgKGNt ZCA9PSBJSUNPX0kyQ19TQ0xMT1cpIHsNCisgICAgICAgICAgICAgIGxpbmVz ID0gbGluZXMgJiAweDAyOw0KKwkgICAgICBpZiggbGluZXMgKSBsaW5lcyA9 IDB4MDg7DQorICAgICAgICAgICAgICBlbHNlIGxpbmVzID0gMDsNCisgICAg ICAgICAgICAgIGlpY19vdXRiKGFkYXAsIGlpYy0+ZGlyZWN0Y250bCwoMHgw MHxsaW5lcykpOw0KKwl9DQorCWVsc2UgaWYgKGNtZCA9PSBJSUNPX0kyQ19M SU5FUkVBRCkgew0KKwkgICAgICByZXQgPSBsaW5lczsNCisJfQ0KKwlyZXR1 cm4gcmV0Ow0KK30NCisNCisNCitzdGF0aWMgdTMyIGlpY19mdW5jKHN0cnVj dCBpMmNfYWRhcHRlciAqYWRhcCkNCit7DQorCXJldHVybiBJMkNfRlVOQ19T TUJVU19FTVVMIHwgSTJDX0ZVTkNfMTBCSVRfQUREUiB8IA0KKwkgICAgICAg STJDX0ZVTkNfUFJPVE9DT0xfTUFOR0xJTkc7IA0KK30NCisNCisNCisvKiAt LS0tLWV4cG9ydGVkIGFsZ29yaXRobSBkYXRhOiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCSovDQorDQorc3RhdGljIHN0cnVjdCBp MmNfYWxnb3JpdGhtIGlpY19hbGdvID0gew0KKwkiSUJNIG9uLWNoaXAgSUlD IGFsZ29yaXRobSIsDQorCUkyQ19BTEdPX09DUCwNCisJaWljX3hmZXIsDQor CU5VTEwsDQorCU5VTEwsCQkJCS8qIHNsYXZlX3htaXQJCSovDQorCU5VTEws CQkJCS8qIHNsYXZlX3JlY3YJCSovDQorCWFsZ29fY29udHJvbCwJCQkvKiBp b2N0bAkJKi8NCisJaWljX2Z1bmMsCQkJLyogZnVuY3Rpb25hbGl0eQkqLw0K K307DQorDQorDQorLyogDQorICogcmVnaXN0ZXJpbmcgZnVuY3Rpb25zIHRv IGxvYWQgYWxnb3JpdGhtcyBhdCBydW50aW1lIA0KKyAqLw0KKw0KKw0KKy8v DQorLy8gRGVzY3JpcHRpb246IFJlZ2lzdGVyIGJ1cyBzdHJ1Y3R1cmUNCisv Lw0KK2ludCBpMmNfaWljX2FkZF9idXMoc3RydWN0IGkyY19hZGFwdGVyICph ZGFwKQ0KK3sNCisJc3RydWN0IGkyY19hbGdvX2lpY19kYXRhICppaWNfYWRh cCA9IGFkYXAtPmFsZ29fZGF0YTsNCisNCisJREVCMihwcmludGsoS0VSTl9E RUJVRyAiaTJjLWFsZ28taWljLm86IGh3IHJvdXRpbmVzIGZvciAlcyByZWdp c3RlcmVkLlxuIiwNCisJICAgICAgICAgICAgYWRhcC0+bmFtZSkpOw0KKw0K KwkvKiByZWdpc3RlciBuZXcgYWRhcHRlciB0byBpMmMgbW9kdWxlLi4uICov DQorDQorCWFkYXAtPmlkIHw9IGlpY19hbGdvLmlkOw0KKwlhZGFwLT5hbGdv ID0gJmlpY19hbGdvOw0KKw0KKwlhZGFwLT50aW1lb3V0ID0gMTAwOwkvKiBk ZWZhdWx0IHZhbHVlcywgc2hvdWxkCSovDQorCWFkYXAtPnJldHJpZXMgPSAz OwkJLyogYmUgcmVwbGFjZWQgYnkgZGVmaW5lcwkqLw0KKw0KKyNpZmRlZiBN T0RVTEUNCisJTU9EX0lOQ19VU0VfQ09VTlQ7DQorI2VuZGlmDQorDQorCWlp Y19pbml0KGlpY19hZGFwKTsNCisJaTJjX2FkZF9hZGFwdGVyKGFkYXApOw0K Kw0KKwkvKiBzY2FuIGJ1cyAqLw0KKwkvKiBCeSBkZWZhdWx0IHNjYW5uaW5n IHRoZSBidXMgaXMgdHVybmVkIG9mZi4gKi8NCisJaWYgKGlpY19zY2FuKSB7 DQorCQlwcmludGsoS0VSTl9JTkZPICIgaTJjLWFsZ28taWljLm86IHNjYW5u aW5nIGJ1cyAlcy5cbiIsDQorCQkgICAgICAgYWRhcC0+bmFtZSk7DQorCX0N CisJcmV0dXJuIDA7DQorfQ0KKw0KKw0KKy8vDQorLy8gRG9uZQ0KKy8vDQor aW50IGkyY19paWNfZGVsX2J1cyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXAp DQorew0KKwlpbnQgcmVzOw0KKwlpZiAoKHJlcyA9IGkyY19kZWxfYWRhcHRl cihhZGFwKSkgPCAwKQ0KKwkJcmV0dXJuIHJlczsNCisJREVCMihwcmludGso S0VSTl9ERUJVRyAiaTJjLWFsZ28taWljLm86IGFkYXB0ZXIgdW5yZWdpc3Rl cmVkOiAlc1xuIixhZGFwLT5uYW1lKSk7DQorDQorI2lmZGVmIE1PRFVMRQ0K KwlNT0RfREVDX1VTRV9DT1VOVDsNCisjZW5kaWYNCisJcmV0dXJuIDA7DQor fQ0KKw0KKw0KKy8vDQorLy8gRG9uZQ0KKy8vDQoraW50IF9faW5pdCBpMmNf YWxnb19paWNfaW5pdCAodm9pZCkNCit7DQorCXByaW50ayhLRVJOX0lORk8g IklCTSBPbi1jaGlwIGlpYyAoaTJjKSBhbGdvcml0aG0gbW9kdWxlIDIwMDIu MjcuMDNcbiIpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorDQordm9pZCBpMmNf YWxnb19paWNfZXhpdCh2b2lkKQ0KK3sNCisJcmV0dXJuOw0KK30NCisNCisN CitFWFBPUlRfU1lNQk9MKGkyY19paWNfYWRkX2J1cyk7DQorRVhQT1JUX1NZ TUJPTChpMmNfaWljX2RlbF9idXMpOw0KKw0KKy8vDQorLy8gVGhlIE1PRFVM RV8qIG1hY3JvcyByZXNvbHZlIHRvIG5vdGhpbmcgaWYgTU9EVUxFUyBpcyBu b3QgZGVmaW5lZA0KKy8vIHdoZW4gdGhpcyBmaWxlIGlzIGNvbXBpbGVkLg0K Ky8vDQorTU9EVUxFX0FVVEhPUigiTW9udGFWaXN0YSBTb2Z0d2FyZSA8d3d3 Lm12aXN0YS5jb20+Iik7DQorTU9EVUxFX0RFU0NSSVBUSU9OKCJQUEMgNDA1 IGlpYyBhbGdvcml0aG0iKTsNCisNCitNT0RVTEVfUEFSTShpaWNfdGVzdCwg ImkiKTsNCitNT0RVTEVfUEFSTShpaWNfc2NhbiwgImkiKTsNCitNT0RVTEVf UEFSTShpMmNfZGVidWcsImkiKTsNCisNCitNT0RVTEVfUEFSTV9ERVNDKGlp Y190ZXN0LCAiVGVzdCBpZiB0aGUgSTJDIGJ1cyBpcyBhdmFpbGFibGUiKTsN CitNT0RVTEVfUEFSTV9ERVNDKGlpY19zY2FuLCAiU2NhbiBmb3IgYWN0aXZl IGNoaXBzIG9uIHRoZSBidXMiKTsNCitNT0RVTEVfUEFSTV9ERVNDKGkyY19k ZWJ1ZywNCisgICAgICAgICJkZWJ1ZyBsZXZlbCAtIDAgb2ZmOyAxIG5vcm1h bDsgMiwzIG1vcmUgdmVyYm9zZTsgOSBpaWMtcHJvdG9jb2wiKTsNCisNCisN Cittb2R1bGVfaW5pdChpMmNfYWxnb19paWNfaW5pdCk7DQorbW9kdWxlX2V4 aXQoaTJjX2FsZ29faWljX2V4aXQpOw0K --0-895384732-1030599472=:16793-- - 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/