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

Albert Cranford (ac9410@attbi.com)
Thu, 29 Aug 2002 03:01:01 -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.0208290259032.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-4c-patch Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.4.44.0208290301010.17093@home1> Content-Description: Content-Disposition: attachment; filename=47-i2c-4c-patch

LS0tIC9kZXYvbnVsbAkxOTk0LTA3LTE3IDE5OjQ2OjE4LjAwMDAwMDAwMCAt MDQwMA0KKysrIGxpbnV4L2RyaXZlcnMvaTJjL2kyYy1hbGdvLWlibV9vY3Au aAkyMDAyLTA3LTIzIDAxOjQ1OjQ2LjAwMDAwMDAwMCAtMDQwMA0KQEAgLTAs MCArMSw1NSBAQA0KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g Ki8NCisvKiBpMmMtYWxnby1pYm1fb2NwLmggaTJjIGRyaXZlciBhbGdvcml0 aG1zIGZvciBJQk0gUFBDIDQwNSBJSUMgYWRhcHRlcnMgICAgICAgICAqLw0K Ky8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCisvKiAgIENv cHlyaWdodCAoQykgMTk5NS05NyBTaW1vbiBHLiBWb2dsDQorICAgICAgICAg ICAgICAgICAgIDE5OTgtOTkgSGFucyBCZXJnbHVuZA0KKw0KKyAgICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQ0KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKyAgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKw0KKyAgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwNCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisgICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQ0KKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKyAgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQ0KKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KKyAgICBGb3VuZGF0aW9uLCBJ bmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4g ICAgICAgICAgICAgICAgKi8NCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tICovDQorDQorLyogV2l0aCBzb21lIGNoYW5nZXMgZnJvbSBLefZz dGkgTeRsa2tpIDxrbWFsa2tpQGNjLmh1dC5maT4gYW5kIGV2ZW4NCisgICBG cm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+ICovDQorDQorLyogTW9k aWZpY2F0aW9ucyBieSBNb250YVZpc3RhIFNvZnR3YXJlLCBBdWd1c3QgMjAw MA0KKyAgIENoYW5nZXMgbWFkZSB0byBzdXBwb3J0IHRoZSBJSUMgcGVyaXBo ZXJhbCBvbiB0aGUgSUJNIFBQQyA0MDUgKi8NCisNCisjaWZuZGVmIEkyQ19B TEdPX0lJQ19IDQorI2RlZmluZSBJMkNfQUxHT19JSUNfSCAxDQorDQorLyog LS0tIERlZmluZXMgZm9yIHBjZi1hZGFwdGVycyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JKi8NCisjaW5jbHVkZSA8bGludXgv aTJjLmg+DQorDQorc3RydWN0IGkyY19hbGdvX2lpY19kYXRhIHsNCisJc3Ry dWN0IGlpY19yZWdzICpkYXRhOwkJLyogcHJpdmF0ZSBkYXRhIGZvciBsb2xl dmVsIHJvdXRpbmVzCSovDQorCXZvaWQgKCpzZXRpaWMpICh2b2lkICpkYXRh LCBpbnQgY3RsLCBpbnQgdmFsKTsNCisJaW50ICAoKmdldGlpYykgKHZvaWQg KmRhdGEsIGludCBjdGwpOw0KKwlpbnQgICgqZ2V0b3duKSAodm9pZCAqZGF0 YSk7DQorCWludCAgKCpnZXRjbG9jaykgKHZvaWQgKmRhdGEpOw0KKwl2b2lk ICgqd2FpdGZvcnBpbikgKHZvaWQgKmRhdGEpOyAgICAgDQorDQorCS8qIGxv Y2FsIHNldHRpbmdzICovDQorCWludCB1ZGVsYXk7DQorCWludCBtZGVsYXk7 DQorCWludCB0aW1lb3V0Ow0KK307DQorDQorDQorI2RlZmluZSBJMkNfSUlD X0FEQVBfTUFYCTE2DQorDQorDQoraW50IGkyY19paWNfYWRkX2J1cyhzdHJ1 Y3QgaTJjX2FkYXB0ZXIgKik7DQoraW50IGkyY19paWNfZGVsX2J1cyhzdHJ1 Y3QgaTJjX2FkYXB0ZXIgKik7DQorDQorI2VuZGlmIC8qIEkyQ19BTEdPX0lJ Q19IICovDQotLS0gL2Rldi9udWxsCTE5OTQtMDctMTcgMTk6NDY6MTguMDAw MDAwMDAwIC0wNDAwDQorKysgbGludXgvZHJpdmVycy9pMmMvaTJjLWZyb2Rv LmMJMjAwMi0wNy0yMyAwMTo1MTowNC4wMDAwMDAwMDAgLTA0MDANCkBAIC0w LDAgKzEsMTE2IEBADQorDQorLyoNCisgKiBsaW51eC9kcml2ZXJzL2kyYy9p MmMtZnJvZG8uYw0KKyAqDQorICogQXV0aG9yOiBBYnJhaGFtIHZhbiBkZXIg TWVyd2UgPGFicmFoYW1AMmQzZC5jby56YT4NCisgKg0KKyAqIEFuIEkyQyBh ZGFwdGVyIGRyaXZlciBmb3IgdGhlIDJkM0QsIEluYy4gU3Ryb25nQVJNIFNB LTExMTANCisgKiBEZXZlbG9wbWVudCBib2FyZCAoRnJvZG8pLg0KKyAqDQor ICogVGhpcyBzb3VyY2UgY29kZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCisgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0K KyAqIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbi4NCisgKi8NCisNCisjaW5jbHVkZSA8bGludXgvY29u ZmlnLmg+DQorI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4NCisjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+DQorDQorI2luY2x1ZGUgPGxpbnV4L2tlcm5l bC5oPg0KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+DQorI2luY2x1ZGUgPGxp bnV4L2RlbGF5Lmg+DQorDQorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPg0K Kw0KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4NCisjaW5jbHVkZSA8bGludXgv aTJjLWFsZ28tYml0Lmg+DQorDQorc3RhdGljIHZvaWQgZnJvZG9fc2V0c2Rh ICh2b2lkICpkYXRhLGludCBzdGF0ZSkNCit7DQorCWlmIChzdGF0ZSkNCisJ CUZST0RPX0NQTERfSTJDIHw9IEZST0RPX0kyQ19TREFfT1VUOw0KKwllbHNl DQorCQlGUk9ET19DUExEX0kyQyAmPSB+RlJPRE9fSTJDX1NEQV9PVVQ7DQor fQ0KKw0KK3N0YXRpYyB2b2lkIGZyb2RvX3NldHNjbCAodm9pZCAqZGF0YSxp bnQgc3RhdGUpDQorew0KKwlpZiAoc3RhdGUpDQorCQlGUk9ET19DUExEX0ky QyB8PSBGUk9ET19JMkNfU0NMX09VVDsNCisJZWxzZQ0KKwkJRlJPRE9fQ1BM RF9JMkMgJj0gfkZST0RPX0kyQ19TQ0xfT1VUOw0KK30NCisNCitzdGF0aWMg aW50IGZyb2RvX2dldHNkYSAodm9pZCAqZGF0YSkNCit7DQorCXJldHVybiAo KEZST0RPX0NQTERfSTJDICYgRlJPRE9fSTJDX1NEQV9JTikgIT0gMCk7DQor fQ0KKw0KK3N0YXRpYyBpbnQgZnJvZG9fZ2V0c2NsICh2b2lkICpkYXRhKQ0K K3sNCisJcmV0dXJuICgoRlJPRE9fQ1BMRF9JMkMgJiBGUk9ET19JMkNfU0NM X0lOKSAhPSAwKTsNCit9DQorDQorc3RhdGljIHN0cnVjdCBpMmNfYWxnb19i aXRfZGF0YSBiaXRfZnJvZG9fZGF0YSA9IHsNCisJc2V0c2RhOgkJZnJvZG9f c2V0c2RhLA0KKwlzZXRzY2w6CQlmcm9kb19zZXRzY2wsDQorCWdldHNkYToJ CWZyb2RvX2dldHNkYSwNCisJZ2V0c2NsOgkJZnJvZG9fZ2V0c2NsLA0KKwl1 ZGVsYXk6CQk4MCwNCisJbWRlbGF5OgkJODAsDQorCXRpbWVvdXQ6CTEwMA0K K307DQorDQorc3RhdGljIGludCBmcm9kb19jbGllbnRfcmVnaXN0ZXIgKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpDQorew0KKwlyZXR1cm4gKDApOw0K K30NCisNCitzdGF0aWMgaW50IGZyb2RvX2NsaWVudF91bnJlZ2lzdGVyIChz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQ0KK3sNCisJcmV0dXJuICgwKTsN Cit9DQorDQorc3RhdGljIHZvaWQgZnJvZG9faW5jX3VzZSAoc3RydWN0IGky Y19hZGFwdGVyICphZGFwdGVyKQ0KK3sNCisJTU9EX0lOQ19VU0VfQ09VTlQ7 DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGZyb2RvX2RlY191c2UgKHN0cnVjdCBp MmNfYWRhcHRlciAqYWRhcHRlcikNCit7DQorCU1PRF9ERUNfVVNFX0NPVU5U Ow0KK30NCisNCitzdGF0aWMgc3RydWN0IGkyY19hZGFwdGVyIGZyb2RvX29w cyA9IHsNCisJbmFtZToJCQkJIkZyb2RvIGFkYXB0ZXIgZHJpdmVyIiwNCisJ aWQ6CQkJCQlJMkNfSFdfQl9GUk9ETywNCisJYWxnbzoJCQkJTlVMTCwNCisJ YWxnb19kYXRhOgkJCSZiaXRfZnJvZG9fZGF0YSwNCisJaW5jX3VzZToJCQlm cm9kb19pbmNfdXNlLA0KKwlkZWNfdXNlOgkJCWZyb2RvX2RlY191c2UsDQor CWNsaWVudF9yZWdpc3RlcjoJZnJvZG9fY2xpZW50X3JlZ2lzdGVyLA0KKwlj bGllbnRfdW5yZWdpc3RlcjoJZnJvZG9fY2xpZW50X3VucmVnaXN0ZXINCit9 Ow0KKw0KK3N0YXRpYyBpbnQgX19pbml0IGkyY19mcm9kb19pbml0ICh2b2lk KQ0KK3sNCisJcmV0dXJuIChpMmNfYml0X2FkZF9idXMgKCZmcm9kb19vcHMp KTsNCit9DQorDQorRVhQT1JUX05PX1NZTUJPTFM7DQorDQorc3RhdGljIHZv aWQgX19leGl0IGkyY19mcm9kb19leGl0ICh2b2lkKQ0KK3sNCisJaTJjX2Jp dF9kZWxfYnVzICgmZnJvZG9fb3BzKTsNCit9DQorDQorTU9EVUxFX0FVVEhP UiAoIkFicmFoYW0gdmFuIGRlciBNZXJ3ZSA8YWJyYWhhbUAyZDNkLmNvLnph PiIpOw0KK01PRFVMRV9ERVNDUklQVElPTiAoIkkyQy1CdXMgYWRhcHRlciBy b3V0aW5lcyBmb3IgRnJvZG8iKTsNCisNCitNT0RVTEVfTElDRU5TRSAoIkdQ TCIpOw0KKw0KK0VYUE9SVF9OT19TWU1CT0xTOw0KKw0KK21vZHVsZV9pbml0 IChpMmNfZnJvZG9faW5pdCk7DQorbW9kdWxlX2V4aXQgKGkyY19mcm9kb19l eGl0KTsNCisNCi0tLSAvZGV2L251bGwJMTk5NC0wNy0xNyAxOTo0NjoxOC4w MDAwMDAwMDAgLTA0MDANCisrKyBsaW51eC9kcml2ZXJzL2kyYy9pMmMtcGNm LWVwcC5jCTIwMDItMDctMjMgMDk6MDk6MDYuMDAwMDAwMDAwIC0wNDAwDQpA QCAtMCwwICsxLDMxMCBAQA0KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gKi8NCisvKiBpMmMtcGNmLWVwcC5jIGkyYy1odyBhY2Nlc3MgZm9y IFBDRjg1ODQgc3R5bGUgRVBQIHBhcmFsbGVsIHBvcnQgYWRhcHRlcnMgICov DQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KKw0KKyNp bmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCisjaW5jbHVkZSA8bGludXgvaW9w b3J0Lmg+DQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KKyNpbmNsdWRl IDxsaW51eC9kZWxheS5oPg0KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQor I2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4NCisjaW5jbHVkZSA8bGludXgv aW5pdC5oPg0KKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+DQorI2luY2x1 ZGUgPGFzbS9pcnEuaD4NCisjaW5jbHVkZSA8YXNtL2lvLmg+DQorDQorI2lu Y2x1ZGUgPGxpbnV4L2kyYy5oPg0KKyNpbmNsdWRlIDxsaW51eC9pMmMtYWxn by1wY2YuaD4NCisjaW5jbHVkZSAiaTJjLXBjZjg1ODQuaCINCisNCitzdHJ1 Y3QgIGkyY19wY2ZfZXBwIHsNCisgIGludCBwZV9iYXNlOw0KKyAgaW50IHBl X2lycTsNCisgIGludCBwZV9jbG9jazsNCisgIGludCBwZV9vd247DQorfSA7 DQorDQorI2RlZmluZSBERUZBVUxUX0JBU0UgMHgzNzgNCisjZGVmaW5lIERF RkFVTFRfSVJRICAgICAgNw0KKyNkZWZpbmUgREVGQVVMVF9DTE9DSyAweDFj DQorI2RlZmluZSBERUZBVUxUX09XTiAgIDB4NTUNCisNCitzdGF0aWMgaW50 IGJhc2UgID0gMDsNCitzdGF0aWMgaW50IGlycSAgID0gMDsNCitzdGF0aWMg aW50IGNsb2NrID0gMDsNCitzdGF0aWMgaW50IG93biAgID0gMDsNCitzdGF0 aWMgaW50IGkyY19kZWJ1Zz0wOw0KK3N0YXRpYyBzdHJ1Y3QgaTJjX3BjZl9l cHAgZ3BlOw0KK3N0YXRpYyB3YWl0X3F1ZXVlX2hlYWRfdCBwY2Zfd2FpdDsN CitzdGF0aWMgaW50IHBjZl9wZW5kaW5nOw0KKyAgc3BpbmxvY2tfdCBpcnFf ZHJpdmVyX2xvY2sgPSBTUElOX0xPQ0tfVU5MT0NLRUQ7DQorDQorLyogLS0t LS0gZ2xvYmFsIGRlZmluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0JKi8NCisjZGVmaW5lIERFQih4KQlpZiAo aTJjX2RlYnVnPj0xKSB4DQorI2RlZmluZSBERUIyKHgpIGlmIChpMmNfZGVi dWc+PTIpIHgNCisjZGVmaW5lIERFQjMoeCkgaWYgKGkyY19kZWJ1Zz49Mykg eA0KKyNkZWZpbmUgREVCRSh4KQl4CS8qIGVycm9yIG1lc3NhZ2VzIAkJCQkq Lw0KKw0KKy8qIC0tLSBDb252ZW5pZW5jZSBkZWZpbmVzIGZvciB0aGUgRVBQ L1NQUCBwb3J0OgkJCSovDQorI2RlZmluZSBCQVNFCSgoc3RydWN0IGkyY19w Y2ZfZXBwICopKGRhdGEpKS0+cGVfYmFzZQ0KKy8vICNkZWZpbmUgREFUQQlC QVNFCQkJLyogU1BQIGRhdGEgcG9ydCAqLw0KKyNkZWZpbmUgU1RBVAkoQkFT RSsxKQkJLyogU1BQIHN0YXR1cyBwb3J0ICovDQorI2RlZmluZSBDVFJMCShC QVNFKzIpCQkvKiBTUFAgY29udHJvbCBwb3J0ICovDQorI2RlZmluZSBFQURE CShCQVNFKzMpCQkvKiBFUFAgYWRkcmVzcyBwb3J0ICovDQorI2RlZmluZSBF REFUCShCQVNFKzQpCQkvKiBFUFAgZGF0YSBwb3J0ICovDQorDQorLyogLS0t LS0gbG9jYWwgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0JKi8NCisNCitzdGF0aWMgdm9pZCBwY2Zf ZXBwX3NldGJ5dGUodm9pZCAqZGF0YSwgaW50IGN0bCwgaW50IHZhbCkNCit7 DQorICBpZiAoY3RsKSB7DQorICAgIGlmIChncGUucGVfaXJxID4gMCkgew0K KyAgICAgIERFQjMocHJpbnRrKEtFUk5fREVCVUcgImkyYy1wY2YtZXBwLm86 IFdyaXRlIGNvbnRyb2wgMHgleFxuIiwNCisJCSAgdmFsfEkyQ19QQ0ZfRU5J KSk7DQorICAgICAgLy8gc2V0IEEwIHBpbiBISUdIDQorICAgICAgb3V0Yihp bmIoQ1RSTCkgfCBQQVJQT1JUX0NPTlRST0xfSU5JVCwgQ1RSTCk7DQorICAg ICAgLy8gREVCMyhwcmludGsoS0VSTl9ERUJVRyAiaTJjLXBjZi1lcHAubzog Q1RSTCBwb3J0ID0gMHgleFxuIiwgaW5iKENUUkwpKSk7DQorICAgICAgLy8g REVCMyhwcmludGsoS0VSTl9ERUJVRyAiaTJjLXBjZi1lcHAubzogU1RBVCBw b3J0ID0gMHgleFxuIiwgaW5iKFNUQVQpKSk7DQorICAgICAgDQorICAgICAg Ly8gRVBQIHdyaXRlIGRhdGEgY3ljbGUNCisgICAgICBvdXRiKHZhbCB8IEky Q19QQ0ZfRU5JLCBFREFUKTsNCisgICAgfSBlbHNlIHsNCisgICAgICBERUIz KHByaW50ayhLRVJOX0RFQlVHICJpMmMtcGNmLWVwcC5vOiBXcml0ZSBjb250 cm9sIDB4JXhcbiIsIHZhbCkpOw0KKyAgICAgIC8vIHNldCBBMCBwaW4gSElH SA0KKyAgICAgIG91dGIoaW5iKENUUkwpIHwgUEFSUE9SVF9DT05UUk9MX0lO SVQsIENUUkwpOw0KKyAgICAgIG91dGIodmFsLCBDVFJMKTsNCisgICAgfQ0K KyAgfSBlbHNlIHsNCisgICAgREVCMyhwcmludGsoS0VSTl9ERUJVRyAiaTJj LXBjZi1lcHAubzogV3JpdGUgZGF0YSAweCV4XG4iLCB2YWwpKTsNCisgICAg Ly8gc2V0IEEwIHBpbiBMTw0KKyAgICBvdXRiKGluYihDVFJMKSAmIH5QQVJQ T1JUX0NPTlRST0xfSU5JVCwgQ1RSTCk7DQorICAgIC8vIERFQjMocHJpbnRr KEtFUk5fREVCVUcgImkyYy1wY2YtZXBwLm86IENUUkwgcG9ydCA9IDB4JXhc biIsIGluYihDVFJMKSkpOw0KKyAgICAvLyBERUIzKHByaW50ayhLRVJOX0RF QlVHICJpMmMtcGNmLWVwcC5vOiBTVEFUIHBvcnQgPSAweCV4XG4iLCBpbmIo U1RBVCkpKTsNCisgICAgb3V0Yih2YWwsIEVEQVQpOw0KKyAgfQ0KK30NCisN CitzdGF0aWMgaW50IHBjZl9lcHBfZ2V0Ynl0ZSh2b2lkICpkYXRhLCBpbnQg Y3RsKQ0KK3sNCisgIGludCB2YWw7DQorDQorICBpZiAoY3RsKSB7DQorICAg IC8vIHNldCBBMCBwaW4gSElHSA0KKyAgICBvdXRiKGluYihDVFJMKSB8IFBB UlBPUlRfQ09OVFJPTF9JTklULCBDVFJMKTsNCisgICAgdmFsID0gaW5iKEVE QVQpOw0KKyAgICBERUIzKHByaW50ayhLRVJOX0RFQlVHICJpMmMtcGNmLWVw cC5vOiBSZWFkIGNvbnRyb2wgMHgleFxuIiwgdmFsKSk7DQorICB9IGVsc2Ug ew0KKyAgICAvLyBzZXQgQTAgcGluIExPVw0KKyAgICBvdXRiKGluYihDVFJM KSAmIH5QQVJQT1JUX0NPTlRST0xfSU5JVCwgQ1RSTCk7DQorICAgIHZhbCA9 IGluYihFREFUKTsNCisgICAgREVCMyhwcmludGsoS0VSTl9ERUJVRyAiaTJj LXBjZi1lcHAubzogUmVhZCBkYXRhIDB4JXhcbiIsIHZhbCkpOw0KKyAgfQ0K KyAgcmV0dXJuICh2YWwpOw0KK30NCisNCitzdGF0aWMgaW50IHBjZl9lcHBf Z2V0b3duKHZvaWQgKmRhdGEpDQorew0KKyAgcmV0dXJuIChncGUucGVfb3du KTsNCit9DQorDQorDQorc3RhdGljIGludCBwY2ZfZXBwX2dldGNsb2NrKHZv aWQgKmRhdGEpDQorew0KKyAgcmV0dXJuIChncGUucGVfY2xvY2spOw0KK30N CisNCisjaWYgMA0KK3N0YXRpYyB2b2lkIHBjZl9lcHBfc2xlZXAodW5zaWdu ZWQgbG9uZyB0aW1lb3V0KQ0KK3sNCisgIHNjaGVkdWxlX3RpbWVvdXQoIHRp bWVvdXQgKiBIWik7DQorfQ0KKyNlbmRpZg0KKw0KK3N0YXRpYyB2b2lkIHBj Zl9lcHBfd2FpdGZvcnBpbih2b2lkKSB7DQorICBpbnQgdGltZW91dCA9IDEw Ow0KKw0KKyAgaWYgKGdwZS5wZV9pcnEgPiAwKSB7DQorICAgIHNwaW5fbG9j a19pcnEoJmlycV9kcml2ZXJfbG9jayk7DQorICAgIGlmIChwY2ZfcGVuZGlu ZyA9PSAwKSB7DQorICAgICAgaW50ZXJydXB0aWJsZV9zbGVlcF9vbl90aW1l b3V0KCZwY2Zfd2FpdCwgdGltZW91dCpIWik7DQorICAgICAgLy91ZGVsYXko MTAwKTsNCisgICAgfSBlbHNlIHsNCisgICAgICBwY2ZfcGVuZGluZyA9IDA7 DQorICAgIH0NCisgICAgc3Bpbl91bmxvY2tfaXJxKCZpcnFfZHJpdmVyX2xv Y2spOw0KKyAgfSBlbHNlIHsNCisgICAgdWRlbGF5KDEwMCk7DQorICB9DQor fQ0KKw0KK3N0YXRpYyB2b2lkIHBjZl9lcHBfaGFuZGxlcihpbnQgdGhpc19p cnEsIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpIHsNCisg IHBjZl9wZW5kaW5nID0gMTsNCisgIHdha2VfdXBfaW50ZXJydXB0aWJsZSgm cGNmX3dhaXQpOw0KKyAgREVCMyhwcmludGsoS0VSTl9ERUJVRyAiaTJjLXBj Zi1lcHAubzogaW4gaW50ZXJydXB0IGhhbmRsZXIuXG4iKSk7DQorfQ0KKw0K Kw0KK3N0YXRpYyBpbnQgcGNmX2VwcF9pbml0KHZvaWQgKmRhdGEpDQorew0K KyAgaWYgKGNoZWNrX3JlZ2lvbihncGUucGVfYmFzZSwgNSkgPCAwICkgew0K KyAgICANCisgICAgcHJpbnRrKEtFUk5fV0FSTklORyAiQ291bGQgbm90IHJl cXVlc3QgcG9ydCByZWdpb24gd2l0aCBiYXNlIDB4JXhcbiIsIGdwZS5wZV9i YXNlKTsNCisgICAgcmV0dXJuIC1FTk9ERVY7DQorICB9IGVsc2Ugew0KKyAg ICByZXF1ZXN0X3JlZ2lvbihncGUucGVfYmFzZSwgNSwgImkyYyAoRVBQIHBh cmFsbGVsIHBvcnQgYWRhcHRlcikiKTsNCisgIH0NCisNCisgIERFQjMocHJp bnRrKEtFUk5fREVCVUcgImkyYy1wY2YtZXBwLm86IGluaXQgc3RhdHVzIHBv cnQgPSAweCV4XG4iLCBpbmIoMHgzNzkpKSk7DQorICANCisgIGlmIChncGUu cGVfaXJxID4gMCkgew0KKyAgICBpZiAocmVxdWVzdF9pcnEoZ3BlLnBlX2ly cSwgcGNmX2VwcF9oYW5kbGVyLCAwLCAiUENGODU4NCIsIDApIDwgMCkgew0K KyAgICAgIHByaW50ayhLRVJOX05PVElDRSAiaTJjLXBjZi1lcHAubzogUmVx dWVzdCBpcnElZCBmYWlsZWRcbiIsIGdwZS5wZV9pcnEpOw0KKyAgICAgIGdw ZS5wZV9pcnEgPSAwOw0KKyAgICB9IGVsc2UNCisgICAgICBkaXNhYmxlX2ly cShncGUucGVfaXJxKTsNCisgICAgICBlbmFibGVfaXJxKGdwZS5wZV9pcnEp Ow0KKyAgfQ0KKyAgLy8gRVBQIG1vZGUgaW5pdGlhbGl6ZQ0KKyAgLy8gZW5h YmxlIGludGVycnVwdCBmcm9tIG5JTlRSIHBpbg0KKyAgb3V0YihpbmIoQ1RS TCl8MHgxNCwgQ1RSTCk7DQorICAvLyBjbGVhciBFUlJPUiBiaXQgb2YgU1RB VA0KKyAgb3V0YihpbmIoU1RBVCl8MHgwMSwgU1RBVCk7DQorICBvdXRiKGlu YihTVEFUKSZ+MHgwMSxTVEFUKTsNCisgIA0KKyAgcmV0dXJuIDA7DQorfQ0K Kw0KKw0KK3N0YXRpYyB2b2lkIF9fZXhpdCBwY2ZfZXBwX2V4aXQodm9pZCkN Cit7DQorICBpZiAoZ3BlLnBlX2lycSA+IDApIHsNCisgICAgZGlzYWJsZV9p cnEoZ3BlLnBlX2lycSk7DQorICAgIGZyZWVfaXJxKGdwZS5wZV9pcnEsIDAp Ow0KKyAgfQ0KKyAgcmVsZWFzZV9yZWdpb24oZ3BlLnBlX2Jhc2UgLCA1KTsN Cit9DQorDQorDQorc3RhdGljIGludCBwY2ZfZXBwX3JlZyhzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQ0KK3sNCisgIHJldHVybiAwOw0KK30NCisNCisN CitzdGF0aWMgaW50IHBjZl9lcHBfdW5yZWcoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkNCit7DQorICByZXR1cm4gMDsNCit9DQorDQorc3RhdGljIHZv aWQgcGNmX2VwcF9pbmNfdXNlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCkN Cit7DQorI2lmZGVmIE1PRFVMRQ0KKyAgTU9EX0lOQ19VU0VfQ09VTlQ7DQor I2VuZGlmDQorfQ0KKw0KK3N0YXRpYyB2b2lkIHBjZl9lcHBfZGVjX3VzZShz dHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXApDQorew0KKyNpZmRlZiBNT0RVTEUN CisgIE1PRF9ERUNfVVNFX0NPVU5UOw0KKyNlbmRpZg0KK30NCisNCisNCisv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgKiBFbmNhcHN1bGF0 ZSB0aGUgYWJvdmUgZnVuY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9wZXJhdGlv bnMgc3RydWN0dXJlLg0KKyAqIFRoaXMgaXMgb25seSBkb25lIHdoZW4gbW9y ZSB0aGFuIG9uZSBoYXJkd2FyZSBhZGFwdGVyIGlzIHN1cHBvcnRlZC4NCisg Ki8NCitzdGF0aWMgc3RydWN0IGkyY19hbGdvX3BjZl9kYXRhIHBjZl9lcHBf ZGF0YSA9IHsNCisgIE5VTEwsDQorICBwY2ZfZXBwX3NldGJ5dGUsDQorICBw Y2ZfZXBwX2dldGJ5dGUsDQorICBwY2ZfZXBwX2dldG93biwNCisgIHBjZl9l cHBfZ2V0Y2xvY2ssDQorICBwY2ZfZXBwX3dhaXRmb3JwaW4sDQorICA4MCwg ODAsIDEwMCwJCS8qCXdhaXRzLCB0aW1lb3V0ICovDQorfTsNCisNCitzdGF0 aWMgc3RydWN0IGkyY19hZGFwdGVyIHBjZl9lcHBfb3BzID0gew0KKyAgIlBD Rjg1ODQgRVBQIGFkYXB0ZXIiLA0KKyAgSTJDX0hXX1BfTFAsDQorICBOVUxM LA0KKyAgJnBjZl9lcHBfZGF0YSwNCisgIHBjZl9lcHBfaW5jX3VzZSwNCisg IHBjZl9lcHBfZGVjX3VzZSwNCisgIHBjZl9lcHBfcmVnLA0KKyAgcGNmX2Vw cF91bnJlZywNCit9Ow0KKw0KK2ludCBfX2luaXQgaTJjX3BjZmVwcF9pbml0 KHZvaWQpIA0KK3sNCisgIHN0cnVjdCBpMmNfcGNmX2VwcCAqcGVwcCA9ICZn cGU7DQorDQorICBwcmludGsoS0VSTl9ERUJVRyAiaTJjLXBjZi1lcHAubzog aTJjIHBjZjg1ODQtZXBwIGFkYXB0ZXIgbW9kdWxlIHZlcnNpb24gJXMgKCVz KVxuIiwgSTJDX1ZFUlNJT04sIEkyQ19EQVRFKTsNCisgIGlmIChiYXNlID09 IDApDQorICAgIHBlcHAtPnBlX2Jhc2UgPSBERUZBVUxUX0JBU0U7DQorICBl bHNlDQorICAgIHBlcHAtPnBlX2Jhc2UgPSBiYXNlOw0KKw0KKyAgaWYgKGly cSA9PSAwKQ0KKyAgICBwZXBwLT5wZV9pcnEgPSBERUZBVUxUX0lSUTsNCisg IGVsc2UgaWYgKGlycTwwKSB7DQorICAgIC8vIHN3aXRjaCBvZmYgaXJxDQor ICAgIHBlcHAtPnBlX2lycT0wOw0KKyAgfSBlbHNlIHsNCisgICAgcGVwcC0+ cGVfaXJxID0gaXJxOw0KKyAgfQ0KKyAgaWYgKGNsb2NrID09IDApDQorICAg IHBlcHAtPnBlX2Nsb2NrID0gREVGQVVMVF9DTE9DSzsNCisgIGVsc2UNCisg ICAgcGVwcC0+cGVfY2xvY2sgPSBjbG9jazsNCisNCisgIGlmIChvd24gPT0g MCkNCisgICAgcGVwcC0+cGVfb3duID0gREVGQVVMVF9PV047DQorICBlbHNl DQorICAgIHBlcHAtPnBlX293biA9IG93bjsNCisNCisgIHBjZl9lcHBfZGF0 YS5kYXRhID0gKHZvaWQgKilwZXBwOw0KKyAgaW5pdF93YWl0cXVldWVfaGVh ZCgmcGNmX3dhaXQpOw0KKyAgaWYgKHBjZl9lcHBfaW5pdChwZXBwKSA9PSAw KSB7DQorICAgIGludCByZXQ7DQorICAgIGlmICggKHJldCA9IGkyY19wY2Zf YWRkX2J1cygmcGNmX2VwcF9vcHMpKSA8IDApIHsNCisgICAgICBwcmludGso S0VSTl9XQVJOSU5HICJpMmNfcGNmX2FkZF9idXMgY2F1c2VkIGFuIGVycm9y OiAlZFxuIixyZXQpOw0KKyAgICAgIHJlbGVhc2VfcmVnaW9uKHBlcHAtPnBl X2Jhc2UgLCA1KTsNCisgICAgICByZXR1cm4gcmV0Ow0KKyAgICB9DQorICB9 IGVsc2Ugew0KKyAgICANCisgICAgcmV0dXJuIC1FTk9ERVY7DQorICB9DQor ICBwcmludGsoS0VSTl9ERUJVRyAiaTJjLXBjZi1lcHAubzogZm91bmQgZGV2 aWNlIGF0ICUjeC5cbiIsIHBlcHAtPnBlX2Jhc2UpOw0KKyAgcmV0dXJuIDA7 DQorfQ0KKw0KKw0KK0VYUE9SVF9OT19TWU1CT0xTOw0KKw0KKyNpZmRlZiBN T0RVTEUNCitNT0RVTEVfQVVUSE9SKCJIYW5zIEJlcmdsdW5kIDxoYkBzcGFj ZXRlYy5ubz4gXG4gbW9kaWZpZWQgYnkgUnlvc3VrZSBUYWppbWEgPHJvc2tA anNrLnQudS10b2t5by5hYy5qcD4iKTsNCitNT0RVTEVfREVTQ1JJUFRJT04o IkkyQy1CdXMgYWRhcHRlciByb3V0aW5lcyBmb3IgUENGODU4NCBFUFAgcGFy YWxsZWwgcG9ydCBhZGFwdGVyIik7DQorDQorTU9EVUxFX1BBUk0oYmFzZSwg ImkiKTsNCitNT0RVTEVfUEFSTShpcnEsICJpIik7DQorTU9EVUxFX1BBUk0o Y2xvY2ssICJpIik7DQorTU9EVUxFX1BBUk0ob3duLCAiaSIpOw0KK01PRFVM RV9QQVJNKGkyY19kZWJ1ZywgImkiKTsNCisNCitpbnQgaW5pdF9tb2R1bGUo dm9pZCkgDQorew0KKyAgcmV0dXJuIGkyY19wY2ZlcHBfaW5pdCgpOw0KK30N CisNCit2b2lkIGNsZWFudXBfbW9kdWxlKHZvaWQpIA0KK3sNCisgIGkyY19w Y2ZfZGVsX2J1cygmcGNmX2VwcF9vcHMpOw0KKyAgcGNmX2VwcF9leGl0KCk7 DQorfQ0KKw0KKyNlbmRpZg0KKw0KKw0KLS0tIC9kZXYvbnVsbAkxOTk0LTA3 LTE3IDE5OjQ2OjE4LjAwMDAwMDAwMCAtMDQwMA0KKysrIGxpbnV4L2RyaXZl cnMvaTJjL2kyYy1wcG9ydC5jCTIwMDItMDctMjMgMDk6MTI6MjEuMDAwMDAw MDAwIC0wNDAwDQpAQCAtMCwwICsxLDI1MiBAQA0KKy8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0gKi8NCisvKiBpMmMtcHBvcnQuYyBpMmMtaHcg YWNjZXNzICBmb3IgcHJpbWl0aXZlIGkyYyBwYXIuIHBvcnQgYWRhcHRlcgkg ICAgICovDQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0K Ky8qICAgQ29weXJpZ2h0IChDKSAyMDAxICAgIERhbmllbCBTbW9saWsNCisN CisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCisgICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkNCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCisg ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisg ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m DQorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisgICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisNCisgICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UNCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07 IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCisgICAgRm91 bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAy MTM5LCBVU0EuCQkgICAgICovDQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSAqLw0KKw0KKy8qDQorCVNlZSBkb2MvaTJjLXBwb3J0IGZvciBp bnN0cnVjdGlvbnMgb24gd2lyaW5nIHRvIHRoZQ0KKwlwYXJhbGxlbCBwb3J0 IGNvbm5lY3Rvci4NCisNCisJQ3V0ICYgcGFzdGUgOi0pICBiYXNlZCBvbiBW ZWxsZW1hbiBLOTAwMCBkcml2ZXIgYnkgU2ltb24gRy4gVm9nbA0KKyovDQor DQorDQorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KKyNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4NCisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCisj aW5jbHVkZSA8bGludXgvc2xhYi5oPg0KKyNpbmNsdWRlIDxsaW51eC92ZXJz aW9uLmg+DQorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4NCisjaW5jbHVkZSA8 YXNtL3VhY2Nlc3MuaD4NCisjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+DQor I2luY2x1ZGUgPGFzbS9pby5oPg0KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5o Pg0KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4NCisjaW5jbHVkZSA8bGludXgv aTJjLWFsZ28tYml0Lmg+DQorDQorTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0K Kw0KKyNkZWZpbmUgREVGQVVMVF9CQVNFIDB4Mzc4DQorc3RhdGljIGludCBi YXNlPTA7DQorc3RhdGljIHVuc2lnbmVkIGNoYXIgUG9ydERhdGEgPSAwOw0K Kw0KKy8qIC0tLS0tIGdsb2JhbCBkZWZpbmVzIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCSovDQorI2RlZmluZSBE RUIoeCkJCS8qIHNob3VsZCBiZSByZWFzb25hYmxlIG9wZW4sIGNsb3NlICZj LiAJKi8NCisjZGVmaW5lIERFQjIoeCkgCS8qIGxvdyBsZXZlbCBkZWJ1Z2dp bmcgLSB2ZXJ5IHNsb3cgCQkqLw0KKyNkZWZpbmUgREVCRSh4KQl4CS8qIGVy cm9yIG1lc3NhZ2VzIAkJCQkqLw0KKyNkZWZpbmUgREVCSU5JVCh4KSB4CS8q IGRldGVjdGlvbiBzdGF0dXMgbWVzc2FnZXMJCQkqLw0KKw0KKy8qIC0tLSBD b252ZW5pZW5jZSBkZWZpbmVzIGZvciB0aGUgcGFyYWxsZWwgcG9ydDoJCQkq Lw0KKyNkZWZpbmUgQkFTRQkodW5zaWduZWQgaW50KShkYXRhKQ0KKyNkZWZp bmUgREFUQQlCQVNFCQkJLyogQ2VudHJvbmljcyBkYXRhIHBvcnQJCSovDQor I2RlZmluZSBTVEFUCShCQVNFKzEpCQkvKiBDZW50cm9uaWNzIHN0YXR1cyBw b3J0CSovDQorI2RlZmluZSBDVFJMCShCQVNFKzIpCQkvKiBDZW50cm9uaWNz IGNvbnRyb2wgcG9ydAkqLw0KKw0KKy8qIHdlIHdpbGwgdXNlIFNEQSAgLSBB dXRvIExpbmVmZWVkKDE0KSAgIGJpdCAxICBQT1VUICAgKi8NCisvKiB3ZSB3 aWxsIHVzZSBTQ0wgLSBJbml0aWFsaXplIHByaW50ZXIoMTYpICAgIEJVU1kg Yml0IDIqLw0KKw0KKyNkZWZpbmUgIFNFVF9TQ0wgICAgfCAweDA0DQorI2Rl ZmluZSAgQ0xSX1NDTCAgICAmIDB4RkINCisNCisNCisNCisNCisjZGVmaW5l ICBTRVRfU0RBICAgICYgMHgwNA0KKyNkZWZpbmUgIENMUl9TREEgICAgfCAw eDAyDQorDQorDQorLyogLS0tLS0gbG9jYWwgZnVuY3Rpb25zIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JKi8NCisN CisNCitzdGF0aWMgdm9pZCBiaXRfcHBvcnRfc2V0c2NsKHZvaWQgKmRhdGEs IGludCBzdGF0ZSkNCit7DQorCWlmIChzdGF0ZSkgew0KKwkJLy9oaWdoDQor CQlQb3J0RGF0YSA9IFBvcnREYXRhIFNFVF9TQ0w7DQorCX0gZWxzZSB7DQor CQkvL2xvdw0KKwkJUG9ydERhdGEgPSBQb3J0RGF0YSBDTFJfU0NMOyANCisJ fQ0KKwlvdXRiKFBvcnREYXRhLCBDVFJMKTsNCit9DQorDQorc3RhdGljIHZv aWQgYml0X3Bwb3J0X3NldHNkYSh2b2lkICpkYXRhLCBpbnQgc3RhdGUpDQor ew0KKwlpZiAoc3RhdGUpIHsNCisJCQ0KKwkJUG9ydERhdGEgPSBQb3J0RGF0 YSBTRVRfU0RBOw0KKwl9IGVsc2Ugew0KKw0KKwkJUG9ydERhdGEgPSBQb3J0 RGF0YSBDTFJfU0RBOw0KKwl9DQorCW91dGIoUG9ydERhdGEsIENUUkwpOw0K K30gDQorDQorc3RhdGljIGludCBiaXRfcHBvcnRfZ2V0c2NsKHZvaWQgKmRh dGEpDQorew0KKw0KKwlyZXR1cm4gKCA0ID09ICggKGluYl9wKENUUkwpKSAm IDB4MDQgKSApOw0KK30NCisNCitzdGF0aWMgaW50IGJpdF9wcG9ydF9nZXRz ZGEodm9pZCAqZGF0YSkNCit7DQorCXJldHVybiAoIDAgPT0gKCAoaW5iX3Ao Q1RSTCkpICYgMHgwMiApICk7DQorfQ0KKw0KK3N0YXRpYyBpbnQgYml0X3Bw b3J0X2luaXQodm9pZCkNCit7DQorCS8vcmVsZWFzZV9yZWdpb24oIChiYXNl KzIpICwxKTsNCisNCisJaWYgKGNoZWNrX3JlZ2lvbigoYmFzZSsyKSwxKSA8 IDAgKSB7DQorCQlyZXR1cm4gLUVOT0RFVjsJDQorCX0gZWxzZSB7DQorDQor CQkvKiB0ZXN0IGZvciBQUE9SVCBhZGFwLiAJKi8NCisJDQorDQorCQlQb3J0 RGF0YT1pbmIoYmFzZSsyKTsNCisJCVBvcnREYXRhPSAoUG9ydERhdGEgU0VU X1NEQSkgU0VUX1NDTDsNCisJCW91dGIoUG9ydERhdGEsYmFzZSsyKTsJCQkJ DQorDQorCQlpZiAoIShpbmIoYmFzZSsyKSB8IDB4MDYpKSB7CS8qIFNEQSBh bmQgU0NMIHdpbGwgYmUgaGlnaAkqLw0KKwkJCURFQklOSVQocHJpbnRrKCJp MmMtcHBvcnQubzogU0RBIGFuZCBTQ0wgd2FzIGxvdy5cbiIpKTsNCisJCQly ZXR1cm4gLUVOT0RFVjsNCisJCX0gZWxzZSB7DQorCQkNCisJCQkvKlNDTCBo aWdoIGFuZCBTREEgbG93Ki8NCisJCQlQb3J0RGF0YSA9IFBvcnREYXRhIFNF VF9TQ0wgQ0xSX1NEQTsNCisJCQlvdXRiKFBvcnREYXRhLGJhc2UrMik7CQ0K KwkJCXVkZWxheSg0MDApOw0KKwkJCWlmICggIShpbmIoYmFzZSsyKSB8IDB4 NCkgKSB7DQorCQkJCS8vb3V0YigweDA0LGJhc2UrMik7DQorCQkJCURFQklO SVQocHJpbnRrKCJpMmMtcG9ydC5vOiBTREEgd2FzIGhpZ2guXG4iKSk7DQor CQkJCXJldHVybiAtRU5PREVWOw0KKwkJCX0NCisJCX0NCisJCXJlcXVlc3Rf cmVnaW9uKChiYXNlKzIpLDEsDQorCQkJImkyYyAoUFBPUlQgYWRhcHRlciki KTsNCisJCWJpdF9wcG9ydF9zZXRzZGEoKHZvaWQqKWJhc2UsMSk7DQorCQli aXRfcHBvcnRfc2V0c2NsKCh2b2lkKiliYXNlLDEpOw0KKwl9DQorCXJldHVy biAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBfX2V4aXQgYml0X3Bwb3J0X2V4 aXQodm9pZCkNCit7DQorCXJlbGVhc2VfcmVnaW9uKChiYXNlKzIpLDEpOw0K K30NCisNCitzdGF0aWMgaW50IGJpdF9wcG9ydF9yZWcoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkNCit7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0 aWMgaW50IGJpdF9wcG9ydF91bnJlZyhzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQ0KK3sNCisJcmVsZWFzZV9yZWdpb24oKGJhc2UrMiksMSk7DQorCXJl dHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBiaXRfcHBvcnRfaW5jX3Vz ZShzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXApDQorew0KKyNpZmRlZiBNT0RV TEUNCisJTU9EX0lOQ19VU0VfQ09VTlQ7DQorI2VuZGlmDQorfQ0KKw0KK3N0 YXRpYyB2b2lkIGJpdF9wcG9ydF9kZWNfdXNlKHN0cnVjdCBpMmNfYWRhcHRl ciAqYWRhcCkNCit7DQorI2lmZGVmIE1PRFVMRQ0KKwlNT0RfREVDX1VTRV9D T1VOVDsNCisjZW5kaWYNCit9DQorDQorLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQorICogRW5jYXBzdWxhdGUgdGhlIGFib3ZlIGZ1bmN0aW9u cyBpbiB0aGUgY29ycmVjdCBvcGVyYXRpb25zIHN0cnVjdHVyZS4NCisgKiBU aGlzIGlzIG9ubHkgZG9uZSB3aGVuIG1vcmUgdGhhbiBvbmUgaGFyZHdhcmUg YWRhcHRlciBpcyBzdXBwb3J0ZWQuDQorICovDQorc3RhdGljIHN0cnVjdCBp MmNfYWxnb19iaXRfZGF0YSBiaXRfcHBvcnRfZGF0YSA9IHsNCisJTlVMTCwN CisJYml0X3Bwb3J0X3NldHNkYSwNCisJYml0X3Bwb3J0X3NldHNjbCwNCisJ Yml0X3Bwb3J0X2dldHNkYSwNCisJYml0X3Bwb3J0X2dldHNjbCwNCisJLy9O VUxMLA0KKwk0MCwgODAsIDEwMCwJCS8qCXdhaXRzLCB0aW1lb3V0ICovDQor fTsNCisNCitzdGF0aWMgc3RydWN0IGkyY19hZGFwdGVyIGJpdF9wcG9ydF9v cHMgPSB7DQorCSJQcmltaXRpdmUgUGFyYWxsZWwgcG9ydCBhZGFwdG9yIiwN CisJSTJDX0hXX0JfUFBPUlQsDQorCU5VTEwsDQorCSZiaXRfcHBvcnRfZGF0 YSwNCisJYml0X3Bwb3J0X2luY191c2UsDQorCWJpdF9wcG9ydF9kZWNfdXNl LA0KKwliaXRfcHBvcnRfcmVnLA0KKwliaXRfcHBvcnRfdW5yZWcsCQ0KK307 DQorDQorc3RhdGljIGludCBfX2luaXQgaTJjX2JpdHBwb3J0X2luaXQodm9p ZCkNCit7DQorCXByaW50aygiaTJjLXBwb3J0Lm86IGkyYyBQcmltaXRpdmUg cGFyYWxsZWwgcG9ydCBhZGFwdGVyIG1vZHVsZSB2ZXJzaW9uICVzICglcylc biIsIEkyQ19WRVJTSU9OLCBJMkNfREFURSk7DQorDQorCWlmIChiYXNlPT0w KSB7DQorCQkvKiBwcm9iZSBzb21lIHZhbHVlcyAqLw0KKwkJYmFzZT1ERUZB VUxUX0JBU0U7DQorCQliaXRfcHBvcnRfZGF0YS5kYXRhPSh2b2lkKilERUZB VUxUX0JBU0U7DQorCQlpZiAoYml0X3Bwb3J0X2luaXQoKT09MCkgew0KKwkJ CWlmKGkyY19iaXRfYWRkX2J1cygmYml0X3Bwb3J0X29wcykgPCAwKQ0KKwkJ CQlyZXR1cm4gLUVOT0RFVjsNCisJCX0gZWxzZSB7DQorCQkJcmV0dXJuIC1F Tk9ERVY7DQorCQl9DQorCX0gZWxzZSB7DQorCQliaXRfcHBvcnRfZGF0YS5k YXRhPSh2b2lkKiliYXNlOw0KKwkJaWYgKGJpdF9wcG9ydF9pbml0KCk9PTAp IHsNCisJCQlpZihpMmNfYml0X2FkZF9idXMoJmJpdF9wcG9ydF9vcHMpIDwg MCkNCisJCQkJcmV0dXJuIC1FTk9ERVY7DQorCQl9IGVsc2Ugew0KKwkJCXJl dHVybiAtRU5PREVWOw0KKwkJfQ0KKwl9DQorCXByaW50aygiaTJjLXBwb3J0 Lm86IGZvdW5kIGRldmljZSBhdCAlI3guXG4iLGJhc2UpOw0KKwlyZXR1cm4g MDsNCit9DQorDQorDQorRVhQT1JUX05PX1NZTUJPTFM7DQorDQorI2lmZGVm IE1PRFVMRQ0KK01PRFVMRV9BVVRIT1IoIkRhbmllbCBTbW9saWsgPG1hcnZp bkBzaXRvdXIuY3o+Iik7DQorTU9EVUxFX0RFU0NSSVBUSU9OKCJJMkMtQnVz IGFkYXB0ZXIgcm91dGluZXMgZm9yIFByaW1pdGl2ZSBwYXJhbGxlbCBwb3J0 IGFkYXB0ZXIiKQ0KKzsNCisNCitNT0RVTEVfUEFSTShiYXNlLCAiaSIpOw0K Kw0KK2ludCBpbml0X21vZHVsZSh2b2lkKQ0KK3sNCisJcmV0dXJuIGkyY19i aXRwcG9ydF9pbml0KCk7DQorfQ0KKw0KK3ZvaWQgY2xlYW51cF9tb2R1bGUo dm9pZCkNCit7DQorCWkyY19iaXRfZGVsX2J1cygmYml0X3Bwb3J0X29wcyk7 DQorCWJpdF9wcG9ydF9leGl0KCk7DQorfQ0KKw0KKyNlbmRpZg0KLS0tIC9k ZXYvbnVsbAkxOTk0LTA3LTE3IDE5OjQ2OjE4LjAwMDAwMDAwMCAtMDQwMA0K KysrIGxpbnV4L2RyaXZlcnMvaTJjL2kyYy1ycHguYwkyMDAyLTA3LTIzIDAx OjQ1OjQ2LjAwMDAwMDAwMCAtMDQwMA0KQEAgLTAsMCArMSwxMzYgQEANCisv Kg0KKyAqIEVtYmVkZGVkIFBsYW5ldCBSUFggTGl0ZSBNUEM4eHggQ1BNIEky QyBpbnRlcmZhY2UuDQorICogQ29weXJpZ2h0IChjKSAxOTk5IERhbiBNYWxl ayAoZG1hbGVrQGpsYy5uZXQpLg0KKyAqDQorICogbW92ZWQgaW50byBwcm9w ZXIgaTJjIGludGVyZmFjZTsNCisgKiBCcmFkIFBhcmtlciAoYnJhZEBoZWVs dG9lLmNvbSkNCisgKg0KKyAqIFJQWCBsaXRlIHNwZWNpZmljIHBhcnRzIG9m IHRoZSBpMmMgaW50ZXJmYWNlDQorICogVXBkYXRlOiAgVGhlcmUgYWN0dWFs bHkgaXNuJ3QgYW55dGhpbmcgUlBYTGl0ZS1zcGVjaWZpYyBhYm91dCB0aGlz IG1vZHVsZS4NCisgKiBUaGlzIHNob3VsZCB3b3JrIGZvciBtb3N0IGFueSA4 eHggYm9hcmQuICBUaGUgY29uc29sZSBtZXNzYWdlcyBoYXZlIGJlZW4gDQor ICogY2hhbmdlZCB0byBlbGltaW5hdGUgUlBYTGl0ZSByZWZlcmVuY2VzLg0K KyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCisjaW5jbHVk ZSA8bGludXgvaW9wb3J0Lmg+DQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o Pg0KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+DQorI2luY2x1ZGUgPGxpbnV4 L3N0ZGRlZi5oPg0KKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+DQorDQor I2luY2x1ZGUgPGFzbS9tcGM4eHguaD4NCisjaW5jbHVkZSA8YXNtL2NvbW1w cm9jLmg+DQorDQorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPg0KKyNpbmNsdWRl IDxsaW51eC9pMmMtYWxnby04eHguaD4NCisNCitzdGF0aWMgdm9pZA0KK3Jw eF9paWNfaW5pdChzdHJ1Y3QgaTJjX2FsZ29fOHh4X2RhdGEgKmRhdGEpDQor ew0KKwl2b2xhdGlsZSBjcG04eHhfdCAqY3A7DQorCXZvbGF0aWxlIGltbWFw X3QgKmltbWFwOw0KKw0KKwljcCA9IGNwbXA7CS8qIEdldCBwb2ludGVyIHRv IENvbW11bmljYXRpb24gUHJvY2Vzc29yICovDQorCWltbWFwID0gKGltbWFw X3QgKilJTUFQX0FERFI7CS8qIGFuZCB0byBpbnRlcm5hbCByZWdpc3RlcnMg Ki8NCisNCisJZGF0YS0+aWlwID0gKGlpY190ICopJmNwLT5jcF9kcGFyYW1b UFJPRkZfSUlDXTsNCisNCisJLyogQ2hlY2sgZm9yIGFuZCB1c2UgYSBtaWNy b2NvZGUgcmVsb2NhdGlvbiBwYXRjaC4NCisJKi8NCisJaWYgKChkYXRhLT5y ZWxvYyA9IGRhdGEtPmlpcC0+aWljX3JwYmFzZSkpDQorCQlkYXRhLT5paXAg PSAoaWljX3QgKikmY3AtPmNwX2RwbWVtW2RhdGEtPmlpcC0+aWljX3JwYmFz ZV07DQorCQkNCisJZGF0YS0+aTJjID0gKGkyYzh4eF90ICopJihpbW1hcC0+ aW1faTJjKTsNCisJZGF0YS0+Y3AgPSBjcDsNCisNCisJLyogSW5pdGlhbGl6 ZSBQb3J0IEIgSUlDIHBpbnMuDQorCSovDQorCWNwLT5jcF9wYnBhciB8PSAw eDAwMDAwMDMwOw0KKwljcC0+Y3BfcGJkaXIgfD0gMHgwMDAwMDAzMDsNCisJ Y3AtPmNwX3Bib2RyIHw9IDB4MDAwMDAwMzA7DQorDQorCS8qIEFsbG9jYXRl IHNwYWNlIGZvciB0d28gdHJhbnNtaXQgYW5kIHR3byByZWNlaXZlIGJ1ZmZl cg0KKwkgKiBkZXNjcmlwdG9ycyBpbiB0aGUgRFAgcmFtLg0KKwkgKi8NCisJ ZGF0YS0+ZHBfYWRkciA9IG04eHhfY3BtX2RwYWxsb2Moc2l6ZW9mKGNiZF90 KSAqIDQpOw0KKw0KKwkvKiBwdHIgdG8gaTJjIGFyZWEgKi8NCisJZGF0YS0+ aTJjID0gKGkyYzh4eF90ICopJigoKGltbWFwX3QgKilJTUFQX0FERFIpLT5p bV9pMmMpOw0KK30NCisNCitzdGF0aWMgaW50IHJweF9pbnN0YWxsX2lzcihp bnQgaXJxLCB2b2lkICgqZnVuYykodm9pZCAqLCB2b2lkICopLCB2b2lkICpk YXRhKQ0KK3sNCisJLyogaW5zdGFsbCBpbnRlcnJ1cHQgaGFuZGxlciAqLw0K KwljcG1faW5zdGFsbF9oYW5kbGVyKGlycSwgKHZvaWQgKCopKHZvaWQgKiwg c3RydWN0IHB0X3JlZ3MgKikpIGZ1bmMsIGRhdGEpOw0KKw0KKwlyZXR1cm4g MDsNCit9DQorDQorc3RhdGljIGludCBycHhfcmVnKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpDQorew0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGlj IGludCBycHhfdW5yZWcoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkNCit7 DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBycHhfaW5jX3Vz ZShzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXApDQorew0KKyNpZmRlZiBNT0RV TEUNCisJTU9EX0lOQ19VU0VfQ09VTlQ7DQorI2VuZGlmDQorfQ0KKw0KK3N0 YXRpYyB2b2lkIHJweF9kZWNfdXNlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRh cCkNCit7DQorI2lmZGVmIE1PRFVMRQ0KKwlNT0RfREVDX1VTRV9DT1VOVDsN CisjZW5kaWYNCit9DQorDQorc3RhdGljIHN0cnVjdCBpMmNfYWxnb184eHhf ZGF0YSBycHhfZGF0YSA9IHsNCisJc2V0aXNyOiBycHhfaW5zdGFsbF9pc3IN Cit9Ow0KKw0KKw0KK3N0YXRpYyBzdHJ1Y3QgaTJjX2FkYXB0ZXIgcnB4X29w cyA9IHsNCisJIm04eHgiLA0KKwlJMkNfSFdfTVBDOFhYX0VQT04sDQorCU5V TEwsDQorCSZycHhfZGF0YSwNCisJcnB4X2luY191c2UsDQorCXJweF9kZWNf dXNlLA0KKwlycHhfcmVnLA0KKwlycHhfdW5yZWcsDQorfTsNCisNCitpbnQg X19pbml0IGkyY19ycHhfaW5pdCh2b2lkKQ0KK3sNCisJcHJpbnRrKCJpMmMt cnB4Lm86IGkyYyBNUEM4eHggbW9kdWxlIHZlcnNpb24gJXMgKCVzKVxuIiwg STJDX1ZFUlNJT04sIEkyQ19EQVRFKTsNCisNCisJLyogcmVzZXQgaGFyZHdh cmUgdG8gc2FuZSBzdGF0ZSAqLw0KKwlycHhfaWljX2luaXQoJnJweF9kYXRh KTsNCisNCisJaWYgKGkyY184eHhfYWRkX2J1cygmcnB4X29wcykgPCAwKSB7 DQorCQlwcmludGsoImkyYy1ycHg6IFVuYWJsZSB0byByZWdpc3RlciB3aXRo IEkyQ1xuIik7DQorCQlyZXR1cm4gLUVOT0RFVjsNCisJfQ0KKw0KKwlyZXR1 cm4gMDsNCit9DQorDQordm9pZCBfX2V4aXQgaTJjX3JweF9leGl0KHZvaWQp DQorew0KKwlpMmNfOHh4X2RlbF9idXMoJnJweF9vcHMpOw0KK30NCisNCisj aWZkZWYgTU9EVUxFDQorTU9EVUxFX0FVVEhPUigiRGFuIE1hbGVrIDxkbWFs ZWtAamxjLm5ldD4iKTsNCitNT0RVTEVfREVTQ1JJUFRJT04oIkkyQy1CdXMg YWRhcHRlciByb3V0aW5lcyBmb3IgTVBDOHh4IGJvYXJkcyIpOw0KKw0KK21v ZHVsZV9pbml0KGkyY19ycHhfaW5pdCk7DQorbW9kdWxlX2V4aXQoaTJjX3Jw eF9leGl0KTsNCisjZW5kaWYNCisNCg== --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/