[patch 1/9]Four new i2c drivers and __init/__exit cleanup to i2c

Albert Cranford (ac9410@attbi.com)
Sun, 15 Sep 2002 18:33:34 -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-501958521-1032129214=:7637
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello Linus,
New I2C drivers that have been adjusted after Russell King comments of August.
o i2c-algo-8xx.c
o i2c-pport.c
o i2c-adap-ibm_ocp.c
o i2c-pcf-epp.c
o Add new drivers to Config.in and Makefile.
o Add new drivers to i2c-core for initialization.
o Remove EXPORT_NO_SYMBOLS statement from i2c-dev, i2c-elektor and i2c-frodo.
o Cleanup init_module and cleanup_module adding __init and __exit to most drivers.
o Adjust i2c-elektor with cli/sti replacement.

-- 
ac9410@attbi.com

--0-501958521-1032129214=:7637 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=47-i2c-3a-patch Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.4.44.0209151833340.7637@home1> Content-Description: Content-Disposition: attachment; filename=47-i2c-3a-patch

LS0tIC9kZXYvbnVsbAkxOTk0LTA3LTE3IDE5OjQ2OjE4LjAwMDAwMDAwMCAt MDQwMA0KKysrIGxpbnV4LTIuNS4zNC9kcml2ZXJzL2kyYy9pMmMtYWxnby04 eHguYwkyMDAyLTA2LTExIDIyOjI5OjU0LjAwMDAwMDAwMCAtMDQwMA0KQEAg LTAsMCArMSw1OTQgQEANCisvKg0KKyAqIGkyYy1hbGdvLTh4eC5jIGkyeCBk cml2ZXIgYWxnb3JpdGhtcyBmb3IgTVBDOFhYIENQTQ0KKyAqIENvcHlyaWdo dCAoYykgMTk5OSBEYW4gTWFsZWsgKGRtYWxla0BqbGMubmV0KS4NCisgKg0K KyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQ0KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKyAg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKw0KKyAg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YN CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KKyAgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKw0KKyAgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQ0KKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KKyAgICBGb3Vu ZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIx MzksIFVTQS4NCisgKg0KKyAqIG1vdmVkIGludG8gcHJvcGVyIGkyYyBpbnRl cmZhY2U7IHNlcGFyYXRlZCBvdXQgcGxhdGZvcm0gc3BlY2lmaWMgDQorICog cGFydHMgaW50byBpMmMtcnB4LmMNCisgKiBCcmFkIFBhcmtlciAoYnJhZEBo ZWVsdG9lLmNvbSkNCisgKi8NCisNCisvLyBYWFggdG9kbw0KKy8vIHRpbWVv dXQgc2xlZXA/DQorDQorLyogJElkOiBpMmMtYWxnby04eHguYyx2IDEuNiAy MDAyLzA2LzEyIDAyOjI5OjU0IG1kcyBFeHAgJCAqLw0KKw0KKyNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4NCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+ DQorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+DQorI2luY2x1ZGUgPGxpbnV4 L3NsYWIuaD4NCisjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPg0KKyNpbmNs dWRlIDxsaW51eC9pbml0Lmg+DQorI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+ DQorI2luY2x1ZGUgPGxpbnV4L2lvcG9ydC5oPg0KKyNpbmNsdWRlIDxsaW51 eC9lcnJuby5oPg0KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPg0KKw0KKyNp bmNsdWRlIDxhc20vbXBjOHh4Lmg+DQorI2luY2x1ZGUgPGFzbS9jb21tcHJv Yy5oPg0KKw0KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4NCisjaW5jbHVkZSA8 bGludXgvaTJjLWFsZ28tOHh4Lmg+DQorDQorI2RlZmluZSBDUE1fTUFYX1JF QUQJNTEzDQorDQorc3RhdGljIHdhaXRfcXVldWVfaGVhZF90IGlpY193YWl0 Ow0KK3N0YXRpYyB1c2hvcnQgcl90YmFzZSwgcl9yYmFzZTsNCisNCitpbnQg Y3BtX3NjYW4gPSAxOw0KK2ludCBjcG1fZGVidWcgPSAwOw0KKw0KK3N0YXRp YyB2b2lkDQorY3BtX2lpY19pbnRlcnJ1cHQodm9pZCAqZGV2X2lkLCB2b2lk ICpyZWdzKQ0KK3sNCisJdm9sYXRpbGUgaTJjOHh4X3QgKmkyYyA9IChpMmM4 eHhfdCAqKWRldl9pZDsNCisNCisJaWYgKGNwbV9kZWJ1ZyA+IDEpDQorCQlw cmludGsoImNwbV9paWNfaW50ZXJydXB0KGRldl9pZD0lcClcbiIsIGRldl9p ZCk7DQorDQorCS8qIENoaXAgZXJyYXRhLCBjbGVhciBlbmFibGUuDQorCSov DQorCWkyYy0+aTJjX2kybW9kID0gMDsNCisNCisJLyogQ2xlYXIgaW50ZXJy dXB0Lg0KKwkqLw0KKwlpMmMtPmkyY19pMmNlciA9IDB4ZmY7DQorDQorCS8q IEdldCAnbWUgZ29pbmcgYWdhaW4uDQorCSovDQorCXdha2VfdXBfaW50ZXJy dXB0aWJsZSgmaWljX3dhaXQpOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK2Nw bV9paWNfaW5pdChzdHJ1Y3QgaTJjX2FsZ29fOHh4X2RhdGEgKmNwbV9hZGFw KQ0KK3sNCisJdm9sYXRpbGUgaWljX3QJCSppaXAgPSBjcG1fYWRhcC0+aWlw Ow0KKwl2b2xhdGlsZSBpMmM4eHhfdAkqaTJjID0gY3BtX2FkYXAtPmkyYzsN CisNCisJaWYgKGNwbV9kZWJ1ZykgcHJpbnRrKCJjcG1faWljX2luaXQoKSAt IGlpcD0lcFxuIixpaXApOw0KKw0KKwkvKiBJbml0aWFsaXplIHRoZSBwYXJh bWV0ZXIgcmFtLg0KKwkgKiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBtYW55IHRo aW5ncyBhcmUgaW5pdGlhbGl6ZWQgdG8gemVybywNCisJICogZXNwZWNpYWxs eSBpbiB0aGUgY2FzZSBvZiBhIG1pY3JvY29kZSBwYXRjaC4NCisJICovDQor CWlpcC0+aWljX3JzdGF0ZSA9IDA7DQorCWlpcC0+aWljX3JkcCA9IDA7DQor CWlpcC0+aWljX3JicHRyID0gMDsNCisJaWlwLT5paWNfcmJjID0gMDsNCisJ aWlwLT5paWNfcnh0bXAgPSAwOw0KKwlpaXAtPmlpY190c3RhdGUgPSAwOw0K KwlpaXAtPmlpY190ZHAgPSAwOw0KKwlpaXAtPmlpY190YnB0ciA9IDA7DQor CWlpcC0+aWljX3RiYyA9IDA7DQorCWlpcC0+aWljX3R4dG1wID0gMDsNCisN CisJLyogU2V0IHVwIHRoZSBJSUMgcGFyYW1ldGVycyBpbiB0aGUgcGFyYW1l dGVyIHJhbS4NCisJKi8NCisJaWlwLT5paWNfdGJhc2UgPSByX3RiYXNlID0g Y3BtX2FkYXAtPmRwX2FkZHI7DQorCWlpcC0+aWljX3JiYXNlID0gcl9yYmFz ZSA9IGNwbV9hZGFwLT5kcF9hZGRyICsgc2l6ZW9mKGNiZF90KSoyOw0KKw0K KwlpaXAtPmlpY190ZmNyID0gU01DX0VCOw0KKwlpaXAtPmlpY19yZmNyID0g U01DX0VCOw0KKw0KKwkvKiBTZXQgbWF4aW11bSByZWNlaXZlIHNpemUuDQor CSovDQorCWlpcC0+aWljX21yYmxyID0gQ1BNX01BWF9SRUFEOw0KKw0KKwkv KiBJbml0aWFsaXplIFR4L1J4IHBhcmFtZXRlcnMuDQorCSovDQorCWlmIChj cG1fYWRhcC0+cmVsb2MgPT0gMCkgew0KKwkJdm9sYXRpbGUgY3BtOHh4X3Qg KmNwID0gY3BtX2FkYXAtPmNwOw0KKw0KKwkJY3AtPmNwX2NwY3IgPQ0KKwkJ CW1rX2NyX2NtZChDUE1fQ1JfQ0hfSTJDLCBDUE1fQ1JfSU5JVF9UUlgpIHwg Q1BNX0NSX0ZMRzsNCisJCXdoaWxlIChjcC0+Y3BfY3BjciAmIENQTV9DUl9G TEcpDQorCQkJY3B1X3JlbGF4KCk7IC8qIHByZXZlbnQgQXRobG9ucyBzZWxm LWRlc3RydWN0ICovDQorCX0NCisNCisJLyogU2VsZWN0IGFuIGFyYml0cmFy eSBhZGRyZXNzLiAgSnVzdCBtYWtlIHN1cmUgaXQgaXMgdW5pcXVlLg0KKwkq Lw0KKwlpMmMtPmkyY19pMmFkZCA9IDB4MzQ7DQorDQorCS8qIE1ha2UgY2xv Y2sgcnVuIG1heGltdW0gc2xvdy4NCisJKi8NCisJaTJjLT5pMmNfaTJicmcg PSA3Ow0KKw0KKwkvKiBEaXNhYmxlIGludGVycnVwdHMuDQorCSovDQorCWky Yy0+aTJjX2kyY21yID0gMDsNCisJaTJjLT5pMmNfaTJjZXIgPSAweGZmOw0K Kw0KKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZpaWNfd2FpdCk7DQorDQorCS8q IEluc3RhbGwgaW50ZXJydXB0IGhhbmRsZXIuDQorCSovDQorCWlmIChjcG1f ZGVidWcpIHsNCisJCXByaW50ayAoIiVzWyVkXSBJbnN0YWxsIElTUiBmb3Ig SVJRICVkXG4iLA0KKwkJCV9fZnVuY19fLF9fTElORV9fLCBDUE1WRUNfSTJD KTsNCisJfQ0KKwkoKmNwbV9hZGFwLT5zZXRpc3IpKENQTVZFQ19JMkMsIGNw bV9paWNfaW50ZXJydXB0LCAodm9pZCAqKWkyYyk7DQorfQ0KKw0KKw0KK3N0 YXRpYyBpbnQNCitjcG1faWljX3NodXRkb3duKHN0cnVjdCBpMmNfYWxnb184 eHhfZGF0YSAqY3BtX2FkYXApDQorew0KKwl2b2xhdGlsZSBpMmM4eHhfdCAq aTJjID0gY3BtX2FkYXAtPmkyYzsNCisNCisJLyogU2h1dCBkb3duIElJQy4N CisJKi8NCisJaTJjLT5pMmNfaTJtb2QgPSAwOw0KKwlpMmMtPmkyY19pMmNt ciA9IDA7DQorCWkyYy0+aTJjX2kyY2VyID0gMHhmZjsNCisNCisJcmV0dXJu KDApOw0KK30NCisNCitzdGF0aWMgdm9pZCANCitjcG1fcmVzZXRfaWljX3Bh cmFtcyh2b2xhdGlsZSBpaWNfdCAqaWlwKQ0KK3sNCisJaWlwLT5paWNfdGJh c2UgPSByX3RiYXNlOw0KKwlpaXAtPmlpY19yYmFzZSA9IHJfcmJhc2U7DQor DQorCWlpcC0+aWljX3RmY3IgPSBTTUNfRUI7DQorCWlpcC0+aWljX3JmY3Ig PSBTTUNfRUI7DQorDQorCWlpcC0+aWljX21yYmxyID0gQ1BNX01BWF9SRUFE Ow0KKw0KKwlpaXAtPmlpY19yc3RhdGUgPSAwOw0KKwlpaXAtPmlpY19yZHAg PSAwOw0KKwlpaXAtPmlpY19yYnB0ciA9IHJfcmJhc2U7DQorCWlpcC0+aWlj X3JiYyA9IDA7DQorCWlpcC0+aWljX3J4dG1wID0gMDsNCisJaWlwLT5paWNf dHN0YXRlID0gMDsNCisJaWlwLT5paWNfdGRwID0gMDsNCisJaWlwLT5paWNf dGJwdHIgPSByX3RiYXNlOw0KKwlpaXAtPmlpY190YmMgPSAwOw0KKwlpaXAt PmlpY190eHRtcCA9IDA7DQorfQ0KKw0KKyNkZWZpbmUgQkRfU0NfTkFLCQko KHVzaG9ydCkweDAwMDQpIC8qIE5BSyAtIGRpZCBub3QgcmVzcG9uZCAqLw0K KyNkZWZpbmUgQ1BNX0NSX0NMT1NFX1JYQkQJKCh1c2hvcnQpMHgwMDA3KQ0K Kw0KK3N0YXRpYyB2b2lkIGZvcmNlX2Nsb3NlKHN0cnVjdCBpMmNfYWxnb184 eHhfZGF0YSAqY3BtKQ0KK3sNCisJaWYgKGNwbS0+cmVsb2MgPT0gMCkgew0K KwkJdm9sYXRpbGUgY3BtOHh4X3QgKmNwID0gY3BtLT5jcDsNCisNCisJCWlm IChjcG1fZGVidWcpIHByaW50aygiZm9yY2VfY2xvc2UoKVxuIik7DQorCQlj cC0+Y3BfY3BjciA9DQorCQkJbWtfY3JfY21kKENQTV9DUl9DSF9JMkMsIENQ TV9DUl9DTE9TRV9SWEJEKSB8DQorCQkJQ1BNX0NSX0ZMRzsNCisNCisJCXdo aWxlIChjcC0+Y3BfY3BjciAmIENQTV9DUl9GTEcpDQorCQkJY3B1X3JlbGF4 KCk7IC8qIHByZXZlbnQgQXRobG9ucyBzZWxmLWRlc3RydWN0ICovDQorCX0N Cit9DQorDQorDQorLyogUmVhZCBmcm9tIElJQy4uLg0KKyAqIGFieXRlID0g YWRkcmVzcyBieXRlLCB3aXRoIHIvdyBmbGFnIGFscmVhZHkgc2V0DQorICov DQorc3RhdGljIGludA0KK2NwbV9paWNfcmVhZChzdHJ1Y3QgaTJjX2FsZ29f OHh4X2RhdGEgKmNwbSwgdV9jaGFyIGFieXRlLCBjaGFyICpidWYsIGludCBj b3VudCkNCit7DQorCXZvbGF0aWxlIGlpY190ICppaXAgPSBjcG0tPmlpcDsN CisJdm9sYXRpbGUgaTJjOHh4X3QgKmkyYyA9IGNwbS0+aTJjOw0KKwl2b2xh dGlsZSBjcG04eHhfdCAqY3AgPSBjcG0tPmNwOw0KKwl2b2xhdGlsZSBjYmRf dAkqdGJkZiwgKnJiZGY7DQorCXVfY2hhciAqdGI7DQorCXVuc2lnbmVkIGxv bmcgZmxhZ3M7DQorDQorCWlmIChjb3VudCA+PSBDUE1fTUFYX1JFQUQpDQor CQlyZXR1cm4gLUVJTlZBTDsNCisNCisJLyogY2hlY2sgZm9yIGFuZCB1c2Ug YSBtaWNyb2NvZGUgcmVsb2NhdGlvbiBwYXRjaCAqLw0KKwlpZiAoY3BtLT5y ZWxvYykgew0KKwkJY3BtX3Jlc2V0X2lpY19wYXJhbXMoaWlwKTsNCisJfQ0K Kw0KKwl0YmRmID0gKGNiZF90ICopJmNwLT5jcF9kcG1lbVtpaXAtPmlpY190 YmFzZV07DQorCXJiZGYgPSAoY2JkX3QgKikmY3AtPmNwX2RwbWVtW2lpcC0+ aWljX3JiYXNlXTsNCisNCisJLyogVG8gcmVhZCwgd2UgbmVlZCBhbiBlbXB0 eSBidWZmZXIgb2YgdGhlIHByb3BlciBsZW5ndGguDQorCSAqIEFsbCB0aGF0 IGlzIHVzZWQgaXMgdGhlIGZpcnN0IGJ5dGUgZm9yIGFkZHJlc3MsIHRoZSBy ZW1haW5kZXINCisJICogaXMganVzdCB1c2VkIGZvciB0aW1pbmcgKGFuZCBk b2Vzbid0IHJlYWxseSBoYXZlIHRvIGV4aXN0KS4NCisJICovDQorCWlmIChj cG0tPnJlbG9jKSB7DQorCQljcG1fcmVzZXRfaWljX3BhcmFtcyhpaXApOw0K Kwl9DQorCXRiID0gY3BtLT50ZW1wOw0KKwl0YiA9ICh1X2NoYXIgKikoKCh1 aW50KXRiICsgMTUpICYgfjE1KTsNCisJdGJbMF0gPSBhYnl0ZTsJCS8qIERl dmljZSBhZGRyZXNzIGJ5dGUgdy9ydyBmbGFnICovDQorDQorCWZsdXNoX2Rj YWNoZV9yYW5nZSgodW5zaWduZWQgbG9uZykgdGIsICh1bnNpZ25lZCBsb25n KSAodGIrMSkpOw0KKw0KKwlpZiAoY3BtX2RlYnVnKSBwcmludGsoImNwbV9p aWNfcmVhZChhYnl0ZT0weCV4KVxuIiwgYWJ5dGUpOw0KKw0KKwl0YmRmLT5j YmRfYnVmYWRkciA9IF9fcGEodGIpOw0KKwl0YmRmLT5jYmRfZGF0bGVuID0g Y291bnQgKyAxOw0KKwl0YmRmLT5jYmRfc2MgPQ0KKwkJQkRfU0NfUkVBRFkg fCBCRF9TQ19JTlRSUFQgfCBCRF9TQ19MQVNUIHwNCisJCUJEX1NDX1dSQVAg fCBCRF9JSUNfU1RBUlQ7DQorDQorCXJiZGYtPmNiZF9kYXRsZW4gPSAwOw0K KwlyYmRmLT5jYmRfYnVmYWRkciA9IF9fcGEoYnVmKTsNCisJcmJkZi0+Y2Jk X3NjID0gQkRfU0NfRU1QVFkgfCBCRF9TQ19XUkFQOw0KKw0KKwlkbWFfY2Fj aGVfaW52KCh1bnNpZ25lZCBsb25nKSBidWYsICh1bnNpZ25lZCBsb25nKSAo YnVmK2NvdW50KSk7DQorDQorCS8qIENoaXAgYnVnLCBzZXQgZW5hYmxlIGhl cmUgKi8NCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOw0KKwlpMmMtPmkyY19p MmNtciA9IDB4MTM7CS8qIEVuYWJsZSBzb21lIGludGVydXB0cyAqLw0KKwlp MmMtPmkyY19pMmNlciA9IDB4ZmY7DQorCWkyYy0+aTJjX2kybW9kID0gMTsJ LyogRW5hYmxlICovDQorCWkyYy0+aTJjX2kyY29tID0gMHg4MTsJLyogU3Rh cnQgbWFzdGVyICovDQorDQorCS8qIFdhaXQgZm9yIElJQyB0cmFuc2ZlciAq Lw0KKwlpbnRlcnJ1cHRpYmxlX3NsZWVwX29uKCZpaWNfd2FpdCk7DQorCWxv Y2FsX2lycV9yZXN0b3JlKGZsYWdzKTsNCisJaWYgKHNpZ25hbF9wZW5kaW5n KGN1cnJlbnQpKQ0KKwkJcmV0dXJuIC1FSU87DQorDQorCWlmIChjcG1fZGVi dWcpIHsNCisJCXByaW50aygidHggc2MgJTA0eCwgcnggc2MgJTA0eFxuIiwN CisJCSAgICAgICB0YmRmLT5jYmRfc2MsIHJiZGYtPmNiZF9zYyk7DQorCX0N CisNCisJaWYgKHRiZGYtPmNiZF9zYyAmIEJEX1NDX05BSykgew0KKwkJcHJp bnRrKCJJSUMgcmVhZDsgbm8gYWNrXG4iKTsNCisJCXJldHVybiAwOw0KKwl9 DQorDQorCWlmIChyYmRmLT5jYmRfc2MgJiBCRF9TQ19FTVBUWSkgew0KKwkJ cHJpbnRrKCJJSUMgcmVhZDsgY29tcGxldGUgYnV0IHJidWYgZW1wdHlcbiIp Ow0KKwkJZm9yY2VfY2xvc2UoY3BtKTsNCisJCXByaW50aygidHggc2MgJTA0 eCwgcnggc2MgJTA0eFxuIiwNCisJCSAgICAgICB0YmRmLT5jYmRfc2MsIHJi ZGYtPmNiZF9zYyk7DQorCX0NCisNCisJaWYgKGNwbV9kZWJ1ZykgcHJpbnRr KCJyZWFkICVkIGJ5dGVzXG4iLCByYmRmLT5jYmRfZGF0bGVuKTsNCisNCisJ aWYgKHJiZGYtPmNiZF9kYXRsZW4gPCBjb3VudCkgew0KKwkJcHJpbnRrKCJJ SUMgcmVhZDsgc2hvcnQsIHdhbnRlZCAlZCBnb3QgJWRcbiIsDQorCQkgICAg ICAgY291bnQsIHJiZGYtPmNiZF9kYXRsZW4pOw0KKwkJcmV0dXJuIDA7DQor CX0NCisNCisNCisJZG1hX2NhY2hlX2ludigodW5zaWduZWQgbG9uZykgYnVm LCAodW5zaWduZWQgbG9uZykgKGJ1Zitjb3VudCkpOw0KKw0KKwlyZXR1cm4g Y291bnQ7DQorfQ0KKw0KKy8qIFdyaXRlIHRvIElJQy4uLg0KKyAqIGFkZHIg PSBhZGRyZXNzIGJ5dGUsIHdpdGggci93IGZsYWcgYWxyZWFkeSBzZXQNCisg Ki8NCitzdGF0aWMgaW50DQorY3BtX2lpY193cml0ZShzdHJ1Y3QgaTJjX2Fs Z29fOHh4X2RhdGEgKmNwbSwgdV9jaGFyIGFieXRlLCBjaGFyICpidWYsaW50 IGNvdW50KQ0KK3sNCisJdm9sYXRpbGUgaWljX3QgKmlpcCA9IGNwbS0+aWlw Ow0KKwl2b2xhdGlsZSBpMmM4eHhfdCAqaTJjID0gY3BtLT5pMmM7DQorCXZv bGF0aWxlIGNwbTh4eF90ICpjcCA9IGNwbS0+Y3A7DQorCXZvbGF0aWxlIGNi ZF90CSp0YmRmOw0KKwl1X2NoYXIgKnRiOw0KKwl1bnNpZ25lZCBsb25nIGZs YWdzOw0KKw0KKwkvKiBjaGVjayBmb3IgYW5kIHVzZSBhIG1pY3JvY29kZSBy ZWxvY2F0aW9uIHBhdGNoICovDQorCWlmIChjcG0tPnJlbG9jKSB7DQorCQlj cG1fcmVzZXRfaWljX3BhcmFtcyhpaXApOw0KKwl9DQorCXRiID0gY3BtLT50 ZW1wOw0KKwl0YiA9ICh1X2NoYXIgKikoKCh1aW50KXRiICsgMTUpICYgfjE1 KTsNCisJKnRiID0gYWJ5dGU7CQkvKiBEZXZpY2UgYWRkcmVzcyBieXRlIHcv cncgZmxhZyAqLw0KKw0KKwlmbHVzaF9kY2FjaGVfcmFuZ2UoKHVuc2lnbmVk IGxvbmcpIHRiLCAodW5zaWduZWQgbG9uZykgKHRiKzEpKTsNCisJZmx1c2hf ZGNhY2hlX3JhbmdlKCh1bnNpZ25lZCBsb25nKSBidWYsICh1bnNpZ25lZCBs b25nKSAoYnVmK2NvdW50KSk7DQorDQorCWlmIChjcG1fZGVidWcpIHByaW50 aygiY3BtX2lpY193cml0ZShhYnl0ZT0weCV4KVxuIiwgYWJ5dGUpOw0KKw0K KwkvKiBzZXQgdXAgMiBkZXNjcmlwdG9ycyAqLw0KKwl0YmRmID0gKGNiZF90 ICopJmNwLT5jcF9kcG1lbVtpaXAtPmlpY190YmFzZV07DQorDQorCXRiZGZb MF0uY2JkX2J1ZmFkZHIgPSBfX3BhKHRiKTsNCisJdGJkZlswXS5jYmRfZGF0 bGVuID0gMTsNCisJdGJkZlswXS5jYmRfc2MgPSBCRF9TQ19SRUFEWSB8IEJE X0lJQ19TVEFSVDsNCisNCisJdGJkZlsxXS5jYmRfYnVmYWRkciA9IF9fcGEo YnVmKTsNCisJdGJkZlsxXS5jYmRfZGF0bGVuID0gY291bnQ7DQorCXRiZGZb MV0uY2JkX3NjID0gQkRfU0NfUkVBRFkgfCBCRF9TQ19JTlRSUFQgfCBCRF9T Q19MQVNUIHwgQkRfU0NfV1JBUDsNCisNCisJLyogQ2hpcCBidWcsIHNldCBl bmFibGUgaGVyZSAqLw0KKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7DQorCWky Yy0+aTJjX2kyY21yID0gMHgxMzsJLyogRW5hYmxlIHNvbWUgaW50ZXJ1cHRz ICovDQorCWkyYy0+aTJjX2kyY2VyID0gMHhmZjsNCisJaTJjLT5pMmNfaTJt b2QgPSAxOwkvKiBFbmFibGUgKi8NCisJaTJjLT5pMmNfaTJjb20gPSAweDgx OwkvKiBTdGFydCBtYXN0ZXIgKi8NCisNCisJLyogV2FpdCBmb3IgSUlDIHRy YW5zZmVyICovDQorCWludGVycnVwdGlibGVfc2xlZXBfb24oJmlpY193YWl0 KTsNCisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOw0KKwlpZiAoc2lnbmFs X3BlbmRpbmcoY3VycmVudCkpDQorCQlyZXR1cm4gLUVJTzsNCisNCisJaWYg KGNwbV9kZWJ1Zykgew0KKwkJcHJpbnRrKCJ0eDAgc2MgJTA0eCwgdHgxIHNj ICUwNHhcbiIsDQorCQkgICAgICAgdGJkZlswXS5jYmRfc2MsIHRiZGZbMV0u Y2JkX3NjKTsNCisJfQ0KKw0KKwlpZiAodGJkZi0+Y2JkX3NjICYgQkRfU0Nf TkFLKSB7DQorCQlwcmludGsoIklJQyB3cml0ZTsgbm8gYWNrXG4iKTsNCisJ CXJldHVybiAwOw0KKwl9DQorCSAgDQorCWlmICh0YmRmLT5jYmRfc2MgJiBC RF9TQ19SRUFEWSkgew0KKwkJcHJpbnRrKCJJSUMgd3JpdGU7IGNvbXBsZXRl IGJ1dCB0YnVmIHJlYWR5XG4iKTsNCisJCXJldHVybiAwOw0KKwl9DQorDQor CXJldHVybiBjb3VudDsNCit9DQorDQorLyogU2VlIGlmIGFuIElJQyBhZGRy ZXNzIGV4aXN0cy4uDQorICogYWRkciA9IDcgYml0IGFkZHJlc3MsIHVuc2hp ZnRlZA0KKyAqLw0KK3N0YXRpYyBpbnQNCitjcG1faWljX3RyeWFkZHJlc3Mo c3RydWN0IGkyY19hbGdvXzh4eF9kYXRhICpjcG0sIGludCBhZGRyKQ0KK3sN CisJdm9sYXRpbGUgaWljX3QgKmlpcCA9IGNwbS0+aWlwOw0KKwl2b2xhdGls ZSBpMmM4eHhfdCAqaTJjID0gY3BtLT5pMmM7DQorCXZvbGF0aWxlIGNwbTh4 eF90ICpjcCA9IGNwbS0+Y3A7DQorCXZvbGF0aWxlIGNiZF90ICp0YmRmLCAq cmJkZjsNCisJdV9jaGFyICp0YjsNCisJdW5zaWduZWQgbG9uZyBmbGFncywg bGVuOw0KKw0KKwlpZiAoY3BtX2RlYnVnID4gMSkNCisJCXByaW50aygiY3Bt X2lpY190cnlhZGRyZXNzKGNwbT0lcCxhZGRyPSVkKVxuIiwgY3BtLCBhZGRy KTsNCisNCisJLyogY2hlY2sgZm9yIGFuZCB1c2UgYSBtaWNyb2NvZGUgcmVs b2NhdGlvbiBwYXRjaCAqLw0KKwlpZiAoY3BtLT5yZWxvYykgew0KKwkJY3Bt X3Jlc2V0X2lpY19wYXJhbXMoaWlwKTsNCisJfQ0KKw0KKwlpZiAoY3BtX2Rl YnVnICYmIGFkZHIgPT0gMCkgew0KKwkJcHJpbnRrKCJpaXAgJXAsIGRwX2Fk ZHIgMHgleFxuIiwgY3BtLT5paXAsIGNwbS0+ZHBfYWRkcik7DQorCQlwcmlu dGsoImlpY190YmFzZSAlZCwgcl90YmFzZSAlZFxuIiwgaWlwLT5paWNfdGJh c2UsIHJfdGJhc2UpOw0KKwl9DQorDQorCXRiZGYgPSAoY2JkX3QgKikmY3At PmNwX2RwbWVtW2lpcC0+aWljX3RiYXNlXTsNCisJcmJkZiA9IChjYmRfdCAq KSZjcC0+Y3BfZHBtZW1baWlwLT5paWNfcmJhc2VdOw0KKw0KKwl0YiA9IGNw bS0+dGVtcDsNCisJdGIgPSAodV9jaGFyICopKCgodWludCl0YiArIDE1KSAm IH4xNSk7DQorDQorCS8qIGRvIGEgc2ltcGxlIHJlYWQgKi8NCisJdGJbMF0g PSAoYWRkciA8PCAxKSB8IDE7CS8qIGRldmljZSBhZGRyZXNzICgrIHJlYWQp ICovDQorCWxlbiA9IDI7DQorDQorCWZsdXNoX2RjYWNoZV9yYW5nZSgodW5z aWduZWQgbG9uZykgdGIsICh1bnNpZ25lZCBsb25nKSAodGIrMSkpOw0KKw0K Kwl0YmRmLT5jYmRfYnVmYWRkciA9IF9fcGEodGIpOw0KKwl0YmRmLT5jYmRf ZGF0bGVuID0gbGVuOw0KKwl0YmRmLT5jYmRfc2MgPQ0KKwkJQkRfU0NfUkVB RFkgfCBCRF9TQ19JTlRSUFQgfCBCRF9TQ19MQVNUIHwNCisJCUJEX1NDX1dS QVAgfCBCRF9JSUNfU1RBUlQ7DQorDQorCXJiZGYtPmNiZF9kYXRsZW4gPSAw Ow0KKwlyYmRmLT5jYmRfYnVmYWRkciA9IF9fcGEodGIrMik7DQorCXJiZGYt PmNiZF9zYyA9IEJEX1NDX0VNUFRZIHwgQkRfU0NfV1JBUDsNCisNCisJbG9j YWxfaXJxX3NhdmUoZmxhZ3MpOw0KKwlpMmMtPmkyY19pMmNtciA9IDB4MTM7 CS8qIEVuYWJsZSBzb21lIGludGVydXB0cyAqLw0KKwlpMmMtPmkyY19pMmNl ciA9IDB4ZmY7DQorCWkyYy0+aTJjX2kybW9kID0gMTsJLyogRW5hYmxlICov DQorCWkyYy0+aTJjX2kyY29tID0gMHg4MTsJLyogU3RhcnQgbWFzdGVyICov DQorDQorCWlmIChjcG1fZGVidWcgPiAxKSBwcmludGsoImFib3V0IHRvIHNs ZWVwXG4iKTsNCisNCisJLyogd2FpdCBmb3IgSUlDIHRyYW5zZmVyICovDQor CWludGVycnVwdGlibGVfc2xlZXBfb24oJmlpY193YWl0KTsNCisJbG9jYWxf aXJxX3Jlc3RvcmUoZmxhZ3MpOw0KKwlpZiAoc2lnbmFsX3BlbmRpbmcoY3Vy cmVudCkpDQorCQlyZXR1cm4gLUVJTzsNCisNCisJaWYgKGNwbV9kZWJ1ZyA+ IDEpIHByaW50aygiYmFjayBmcm9tIHNsZWVwXG4iKTsNCisNCisJaWYgKHRi ZGYtPmNiZF9zYyAmIEJEX1NDX05BSykgew0KKwkJaWYgKGNwbV9kZWJ1ZyA+ IDEpIHByaW50aygiSUlDIHRyeTsgbm8gYWNrXG4iKTsNCisJCXJldHVybiAw Ow0KKwl9DQorCSAgDQorCWlmICh0YmRmLT5jYmRfc2MgJiBCRF9TQ19SRUFE WSkgew0KKwkJcHJpbnRrKCJJSUMgdHJ5OyBjb21wbGV0ZSBidXQgdGJ1ZiBy ZWFkeVxuIik7DQorCX0NCisJDQorCXJldHVybiAxOw0KK30NCisNCitzdGF0 aWMgaW50IGNwbV94ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqaTJjX2FkYXAs DQorCQkgICAgc3RydWN0IGkyY19tc2cgbXNnc1tdLCANCisJCSAgICBpbnQg bnVtKQ0KK3sNCisJc3RydWN0IGkyY19hbGdvXzh4eF9kYXRhICphZGFwID0g aTJjX2FkYXAtPmFsZ29fZGF0YTsNCisJc3RydWN0IGkyY19tc2cgKnBtc2c7 DQorCWludCBpLCByZXQ7DQorCXVfY2hhciBhZGRyOw0KKyAgICANCisJZm9y IChpID0gMDsgaSA8IG51bTsgaSsrKSB7DQorCQlwbXNnID0gJm1zZ3NbaV07 DQorDQorCQlpZiAoY3BtX2RlYnVnKQ0KKwkJCXByaW50aygiaTJjLWFsZ28t OHh4Lm86ICINCisJCQkgICAgICAgIiMlZCBhZGRyPTB4JXggZmxhZ3M9MHgl eCBsZW49JWRcbiIsDQorCQkJICAgICAgIGksIHBtc2ctPmFkZHIsIHBtc2ct PmZsYWdzLCBwbXNnLT5sZW4pOw0KKw0KKwkJYWRkciA9IHBtc2ctPmFkZHIg PDwgMTsNCisJCWlmIChwbXNnLT5mbGFncyAmIEkyQ19NX1JEICkNCisJCQlh ZGRyIHw9IDE7DQorCQlpZiAocG1zZy0+ZmxhZ3MgJiBJMkNfTV9SRVZfRElS X0FERFIgKQ0KKwkJCWFkZHIgXj0gMTsNCisgICAgDQorCQlpZiAoIShwbXNn LT5mbGFncyAmIEkyQ19NX05PU1RBUlQpKSB7DQorCQl9DQorCQlpZiAocG1z Zy0+ZmxhZ3MgJiBJMkNfTV9SRCApIHsNCisJCQkvKiByZWFkIGJ5dGVzIGlu dG8gYnVmZmVyKi8NCisJCQlyZXQgPSBjcG1faWljX3JlYWQoYWRhcCwgYWRk ciwgcG1zZy0+YnVmLCBwbXNnLT5sZW4pOw0KKwkJCWlmIChjcG1fZGVidWcp DQorCQkJCXByaW50aygiaTJjLWFsZ28tOHh4Lm86IHJlYWQgJWQgYnl0ZXNc biIsIHJldCk7DQorCQkJaWYgKHJldCA8IHBtc2ctPmxlbiApIHsNCisJCQkJ cmV0dXJuIChyZXQ8MCk/IHJldCA6IC1FUkVNT1RFSU87DQorCQkJfQ0KKwkJ fSBlbHNlIHsNCisJCQkvKiB3cml0ZSBieXRlcyBmcm9tIGJ1ZmZlciAqLw0K KwkJCXJldCA9IGNwbV9paWNfd3JpdGUoYWRhcCwgYWRkciwgcG1zZy0+YnVm LCBwbXNnLT5sZW4pOw0KKwkJCWlmIChjcG1fZGVidWcpDQorCQkJCXByaW50 aygiaTJjLWFsZ28tOHh4Lm86IHdyb3RlICVkXG4iLCByZXQpOw0KKwkJCWlm IChyZXQgPCBwbXNnLT5sZW4gKSB7DQorCQkJCXJldHVybiAocmV0PDApID8g cmV0IDogLUVSRU1PVEVJTzsNCisJCQl9DQorCQl9DQorCX0NCisJcmV0dXJu IChudW0pOw0KK30NCisNCitzdGF0aWMgaW50IGFsZ29fY29udHJvbChzdHJ1 Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIA0KKwl1bnNpZ25lZCBpbnQgY21k LCB1bnNpZ25lZCBsb25nIGFyZykNCit7DQorCXJldHVybiAwOw0KK30NCisN CitzdGF0aWMgdTMyIGNwbV9mdW5jKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRh cCkNCit7DQorCXJldHVybiBJMkNfRlVOQ19TTUJVU19FTVVMIHwgSTJDX0ZV TkNfMTBCSVRfQUREUiB8IA0KKwkgICAgICAgSTJDX0ZVTkNfUFJPVE9DT0xf TUFOR0xJTkc7IA0KK30NCisNCisvKiAtLS0tLWV4cG9ydGVkIGFsZ29yaXRo bSBkYXRhOiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CSovDQorDQorc3RhdGljIHN0cnVjdCBpMmNfYWxnb3JpdGhtIGNwbV9hbGdv ID0gew0KKwkiTVBDOHh4IENQTSBhbGdvcml0aG0iLA0KKwlJMkNfQUxHT19N UEM4WFgsDQorCWNwbV94ZmVyLA0KKwlOVUxMLA0KKwlOVUxMLAkJCQkvKiBz bGF2ZV94bWl0CQkqLw0KKwlOVUxMLAkJCQkvKiBzbGF2ZV9yZWN2CQkqLw0K KwlhbGdvX2NvbnRyb2wsCQkJLyogaW9jdGwJCSovDQorCWNwbV9mdW5jLAkJ CS8qIGZ1bmN0aW9uYWxpdHkJKi8NCit9Ow0KKw0KKy8qIA0KKyAqIHJlZ2lz dGVyaW5nIGZ1bmN0aW9ucyB0byBsb2FkIGFsZ29yaXRobXMgYXQgcnVudGlt ZSANCisgKi8NCitpbnQgaTJjXzh4eF9hZGRfYnVzKHN0cnVjdCBpMmNfYWRh cHRlciAqYWRhcCkNCit7DQorCWludCBpOw0KKwlzdHJ1Y3QgaTJjX2FsZ29f OHh4X2RhdGEgKmNwbV9hZGFwID0gYWRhcC0+YWxnb19kYXRhOw0KKw0KKwlp ZiAoY3BtX2RlYnVnKQ0KKwkJcHJpbnRrKCJpMmMtYWxnby04eHgubzogaHcg cm91dGluZXMgZm9yICVzIHJlZ2lzdGVyZWQuXG4iLA0KKwkJICAgICAgIGFk YXAtPm5hbWUpOw0KKw0KKwkvKiByZWdpc3RlciBuZXcgYWRhcHRlciB0byBp MmMgbW9kdWxlLi4uICovDQorDQorCWFkYXAtPmlkIHw9IGNwbV9hbGdvLmlk Ow0KKwlhZGFwLT5hbGdvID0gJmNwbV9hbGdvOw0KKw0KKyNpZmRlZiBNT0RV TEUNCisJTU9EX0lOQ19VU0VfQ09VTlQ7DQorI2VuZGlmDQorDQorCWkyY19h ZGRfYWRhcHRlcihhZGFwKTsNCisJY3BtX2lpY19pbml0KGNwbV9hZGFwKTsN CisNCisJLyogc2NhbiBidXMgKi8NCisJaWYgKGNwbV9zY2FuKSB7DQorCQlw cmludGsoS0VSTl9JTkZPICIgaTJjLWFsZ28tOHh4Lm86IHNjYW5uaW5nIGJ1 cyAlcy4uLlxuIiwNCisJCSAgICAgICBhZGFwLT5uYW1lKTsNCisJCWZvciAo aSA9IDA7IGkgPCAxMjg7IGkrKykgew0KKwkJCWlmIChjcG1faWljX3RyeWFk ZHJlc3MoY3BtX2FkYXAsIGkpKSB7DQorCQkJCXByaW50aygiKCUwMngpIixp PDwxKTsgDQorCQkJfQ0KKwkJfQ0KKwkJcHJpbnRrKCJcbiIpOw0KKwl9DQor CXJldHVybiAwOw0KK30NCisNCisNCitpbnQgaTJjXzh4eF9kZWxfYnVzKHN0 cnVjdCBpMmNfYWRhcHRlciAqYWRhcCkNCit7DQorCWludCByZXM7DQorCXN0 cnVjdCBpMmNfYWxnb184eHhfZGF0YSAqY3BtX2FkYXAgPSBhZGFwLT5hbGdv X2RhdGE7DQorDQorCWNwbV9paWNfc2h1dGRvd24oY3BtX2FkYXApOw0KKw0K KwlpZiAoKHJlcyA9IGkyY19kZWxfYWRhcHRlcihhZGFwKSkgPCAwKQ0KKwkJ cmV0dXJuIHJlczsNCisNCisJcHJpbnRrKCJpMmMtYWxnby04eHgubzogYWRh cHRlciB1bnJlZ2lzdGVyZWQ6ICVzXG4iLGFkYXAtPm5hbWUpOw0KKw0KKyNp ZmRlZiBNT0RVTEUNCisJTU9EX0RFQ19VU0VfQ09VTlQ7DQorI2VuZGlmDQor CXJldHVybiAwOw0KK30NCisNCitFWFBPUlRfU1lNQk9MKGkyY184eHhfYWRk X2J1cyk7DQorRVhQT1JUX1NZTUJPTChpMmNfOHh4X2RlbF9idXMpOw0KKw0K K2ludCBfX2luaXQgaTJjX2FsZ29fOHh4X2luaXQgKHZvaWQpDQorew0KKwlw cmludGsoImkyYy1hbGdvLTh4eC5vOiBpMmMgbXBjOHh4IGFsZ29yaXRobSBt b2R1bGUgdmVyc2lvbiAlcyAoJXMpXG4iLCBJMkNfVkVSU0lPTiwgSTJDX0RB VEUpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorDQorI2lmZGVmIE1PRFVMRQ0K K01PRFVMRV9BVVRIT1IoIkJyYWQgUGFya2VyIDxicmFkQGhlZWx0b2UuY29t PiIpOw0KK01PRFVMRV9ERVNDUklQVElPTigiSTJDLUJ1cyBNUEM4WFggYWxn b3JpdGhtIik7DQorI2lmZGVmIE1PRFVMRV9MSUNFTlNFDQorTU9EVUxFX0xJ Q0VOU0UoIkdQTCIpOw0KKyNlbmRpZg0KKw0KK2ludCBpbml0X21vZHVsZSh2 b2lkKSANCit7DQorCXJldHVybiBpMmNfYWxnb184eHhfaW5pdCgpOw0KK30N CisNCit2b2lkIGNsZWFudXBfbW9kdWxlKHZvaWQpIA0KK3sNCit9DQorI2Vu ZGlmDQotLS0gL2Rldi9udWxsCTE5OTQtMDctMTcgMTk6NDY6MTguMDAwMDAw MDAwIC0wNDAwDQorKysgbGludXgtMi41LjM0L2luY2x1ZGUvbGludXgvaTJj LWFsZ28tOHh4LmgJMjAwMi0wNi0xMSAyMjoyOTo1NC4wMDAwMDAwMDAgLTA0 MDANCkBAIC0wLDAgKzEsNDMgQEANCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICovDQorLyogaTJjLWFsZ28tOHh4LmggaTJjIGRyaXZlciBh bGdvcml0aG1zIGZvciBNUFg4WFggQ1BNCQkJICAgICAqLw0KKy8qDQorICAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5DQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQorICAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorDQorICAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLA0KKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlDQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorDQorICAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlDQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQorICAgIEZvdW5kYXRp b24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwg VVNBLiAgICAgICAgICAgICAgICAqLw0KKy8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gKi8NCisNCisvKiAkSWQ6IGkyYy1hbGdvLTh4eC5oLHYg MS4zIDIwMDIvMDYvMTIgMDI6Mjk6NTQgbWRzIEV4cCAkICovDQorDQorI2lm bmRlZiBJMkNfQUxHT184WFhfSA0KKyNkZWZpbmUgSTJDX0FMR09fOFhYX0gg MQ0KKw0KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4NCisNCitzdHJ1Y3QgaTJj X2FsZ29fOHh4X2RhdGEgew0KKwl1aW50IGRwX2FkZHI7DQorCWludCByZWxv YzsNCisJdm9sYXRpbGUgaTJjOHh4X3QgKmkyYzsNCisJdm9sYXRpbGUgaWlj X3QJKmlpcDsNCisJdm9sYXRpbGUgY3BtOHh4X3QgKmNwOw0KKw0KKwlpbnQJ KCpzZXRpc3IpIChpbnQgaXJxLA0KKwkJCSAgIHZvaWQgKCpmdW5jKSh2b2lk ICosIHZvaWQgKiksDQorCQkJICAgdm9pZCAqZGF0YSk7DQorDQorCXVfY2hh cgl0ZW1wWzUxM107DQorfTsNCisNCitpbnQgaTJjXzh4eF9hZGRfYnVzKHN0 cnVjdCBpMmNfYWRhcHRlciAqKTsNCitpbnQgaTJjXzh4eF9kZWxfYnVzKHN0 cnVjdCBpMmNfYWRhcHRlciAqKTsNCisNCisjZW5kaWYgLyogSTJDX0FMR09f OFhYX0ggKi8NCg== --0-501958521-1032129214=:7637-- - 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/