[PATCH 2.5.22] simple ide-tape.c and ide-floppy.c cleanup

Bartlomiej Zolnierkiewicz (B.Zolnierkiewicz@elka.pw.edu.pl)
Wed, 19 Jun 2002 23:45:33 +0200 (MET DST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

---559023410-758783491-1024523133=:18992
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi!

generic ATAPI hit #1 (rather trivial cleanup) against 2.5.22:

- move generic ATAPI structs from ide/ide-floppy.c
and ide/ide-tape.c to include/atapi.h
(this has a nice side effect of making ide-tape
a bit more endianness aware)

- also move generic ATAPI command's defines to atapi.h

- remove IDEFLOPPY_MIN/MAX() macros, use generic ones

- add #ifndef __LINUX_ATAPI_H_ blabla to atapi.h
to prevent including it more than once

should apply cleanly to 2.5.23

--
Bartlomiej Zolnierkiewicz

---559023410-758783491-1024523133=:18992 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="atapi-1.diff" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.SOL.4.30.0206192345330.18992@mion.elka.pw.edu.pl> Content-Description: Content-Disposition: attachment; filename="atapi-1.diff"

LS0tIGxpbnV4LTIuNS4yMi9pbmNsdWRlL2xpbnV4L2F0YXBpLmgJVHVlIEp1 biAxOCAwMDoyNzozOCAyMDAyDQorKysgbGludXgvaW5jbHVkZS9saW51eC9h dGFwaS5oCVdlZCBKdW4gMTkgMDA6MDc6MjYgMjAwMg0KQEAgLTEsMyArMSw3 IEBADQorDQorI2lmbmRlZiBfX0xJTlVYX0FUQVBJX0gNCisjZGVmaW5lIF9f TElOVVhfQVRBUElfSA0KKw0KIC8qKioqIHZpOnNldCB0cz04IHN0cz04IHN3 PTg6KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqDQogICoNCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDIgTWFyY2luIERh bGVja2kgPG1hcnRpbkBkYWxlY2tpLmRlPg0KQEAgLTEyLDYgKzE2LDkgQEAN CiAgKiBtb3JlIGRldGFpbHMuDQogICovDQogDQorI2luY2x1ZGUgPGxpbnV4 L3R5cGVzLmg+DQorI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4NCisNCiAv Kg0KICAqIFdpdGggZWFjaCBwYWNrZXQgY29tbWFuZCwgd2UgYWxsb2NhdGUg YSBidWZmZXIuDQogICogVGhpcyBpcyB1c2VkIGZvciBzZXZlcmFsIHBhY2tl dA0KQEAgLTc5LDMgKzg2LDMxMyBAQA0KIGV4dGVybiB2b2lkIGF0YXBpX3Jl YWQoc3RydWN0IGF0YV9kZXZpY2UgKiwgdTggKiwgdW5zaWduZWQgaW50KTsN CiBleHRlcm4gdm9pZCBhdGFwaV93cml0ZShzdHJ1Y3QgYXRhX2RldmljZSAq LCB1OCAqLCB1bnNpZ25lZCBpbnQpOw0KIA0KKw0KKy8qDQorICoJQVRBUEkg cGFja2V0IGNvbW1hbmRzLg0KKyAqLw0KKyNkZWZpbmUgQVRBUElfRk9STUFU X1VOSVRfQ01ECQkweDA0DQorI2RlZmluZSBBVEFQSV9JTlFVSVJZX0NNRAkJ MHgxMg0KKyNkZWZpbmUgQVRBUElfTU9ERV9TRUxFQ1QxMF9DTUQJCTB4NTUN CisjZGVmaW5lIEFUQVBJX01PREVfU0VOU0UxMF9DTUQJCTB4NWENCisjZGVm aW5lIEFUQVBJX0FMTE9XX1BSRVZFTlRfUkVNT1ZBTF9DTUQgMHgxZQ0KKyNk ZWZpbmUgQVRBUElfUkVBRDEwX0NNRAkJMHgyOA0KKyNkZWZpbmUgQVRBUElf UkVBRDEyX0NNRAkJMHhhOA0KKyNkZWZpbmUgQVRBUElfUkVBRF9DQVBBQ0lU WV9DTUQJCTB4MjUNCisjZGVmaW5lIEFUQVBJX1JFQURfQ0FQQUNJVElFU19D TUQJMHgyMw0KKyNkZWZpbmUgQVRBUElfUkVRVUVTVF9TRU5TRV9DTUQJCTB4 MDMNCisjZGVmaW5lIEFUQVBJX1NFRUtfQ01ECQkJMHgyYg0KKyNkZWZpbmUg QVRBUElfU1RBUlRfU1RPUF9DTUQJCTB4MWINCisjZGVmaW5lIEFUQVBJX1RF U1RfVU5JVF9SRUFEWV9DTUQJMHgwMA0KKyNkZWZpbmUgQVRBUElfVkVSSUZZ MTBfQ01ECQkweDJmDQorI2RlZmluZSBBVEFQSV9XUklURTEwX0NNRAkJMHgy YQ0KKyNkZWZpbmUgQVRBUElfV1JJVEUxMl9DTUQJCTB4YWENCisjZGVmaW5l IEFUQVBJX1dSSVRFX1ZFUklGWTEwX0NNRAkweDJlDQorDQorLyoNCisgKglE ZWZpbmVzIGZvciB0aGUgTU9ERSBTRU5TRSBjb21tYW5kLg0KKyAqLw0KKyNk ZWZpbmUgTU9ERV9TRU5TRV9DVVJSRU5UCQkweDAwDQorI2RlZmluZSBNT0RF X1NFTlNFX0NIQU5HRUFCTEUJCTB4MDENCisjZGVmaW5lIE1PREVfU0VOU0Vf REVGQVVMVAkJMHgwMiANCisjZGVmaW5lIE1PREVfU0VOU0VfU0FWRUQJCTB4 MDMNCisNCisNCisvKg0KKyAqCUFUQVBJIFN0YXR1cyBSZWdpc3Rlci4NCisg Ki8NCit0eXBlZGVmIHVuaW9uIHsNCisJdTggYWxsCQkJOiA4Ow0KKwlzdHJ1 Y3Qgew0KKyNpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTl9CSVRGSUVMRCkN CisJCXU4IGNoZWNrCTogMTsJLyogRXJyb3Igb2NjdXJyZWQgKi8NCisJCXU4 IGlkeAkJOiAxOwkvKiBSZXNlcnZlZCAqLw0KKwkJdTggY29ycgkJOiAxOwkv KiBDb3JyZWN0YWJsZSBlcnJvciBvY2N1cnJlZCAqLw0KKwkJdTggZHJxCQk6 IDE7CS8qIERhdGEgaXMgcmVxdWVzdCBieSB0aGUgZGV2aWNlICovDQorCQl1 OCBkc2MJCTogMTsJLyogTWVkaWEgYWNjZXNzIGNvbW1hbmQgZmluaXNoZWQg LyBCdWZmZXIgYXZhaWxhYmlsaXR5ICovDQorCQl1OCByZXNlcnZlZDUJOiAx OwkvKiBSZXNlcnZlZCAqLw0KKwkJdTggZHJkeQkJOiAxOwkvKiBJZ25vcmVk IGZvciBBVEFQSSBjb21tYW5kcyAocmVhZHkgdG8gYWNjZXB0IEFUQSBjb21t YW5kKSAqLw0KKwkJdTggYnN5CQk6IDE7CS8qIFRoZSBkZXZpY2UgaGFzIGFj Y2VzcyB0byB0aGUgY29tbWFuZCBibG9jayAqLw0KKyNlbGlmIGRlZmluZWQo X19CSUdfRU5ESUFOX0JJVEZJRUxEKQ0KKwkJdTggYnN5CQk6IDE7DQorCQl1 OCBkcmR5CQk6IDE7DQorCQl1OCByZXNlcnZlZDUJOiAxOw0KKwkJdTggZHNj CQk6IDE7DQorCQl1OCBkcnEJCTogMTsNCisJCXU4IGNvcnIJCTogMTsNCisJ CXU4IGlkeAkJOiAxOw0KKwkJdTggY2hlY2sJOiAxOw0KKyNlbHNlDQorI2Vy cm9yICJQbGVhc2UgZml4IDxhc20vYnl0ZW9yZGVyLmg+Ig0KKyNlbmRpZg0K Kwl9IGI7DQorfSBhdGFwaV9zdGF0dXNfcmVnX3Q7DQorDQorLyoNCisgKglB VEFQSSBlcnJvciByZWdpc3Rlci4NCisgKi8NCit0eXBlZGVmIHVuaW9uIHsN CisJdTggYWxsCQkJOiA4Ow0KKwlzdHJ1Y3Qgew0KKyNpZiBkZWZpbmVkKF9f TElUVExFX0VORElBTl9CSVRGSUVMRCkNCisJCXU4IGlsaQkJOiAxOwkvKiBJ bGxlZ2FsIExlbmd0aCBJbmRpY2F0aW9uICovDQorCQl1OCBlb20JCTogMTsJ LyogRW5kIE9mIE1lZGlhIERldGVjdGVkICovDQorCQl1OCBhYnJ0CQk6IDE7 CS8qIEFib3J0ZWQgY29tbWFuZCAtIEFzIGRlZmluZWQgYnkgQVRBICovDQor CQl1OCBtY3IJCTogMTsJLyogTWVkaWEgQ2hhbmdlIFJlcXVlc3RlZCAtIEFz IGRlZmluZWQgYnkgQVRBICovDQorCQl1OCBzZW5zZV9rZXkJOiA0OwkvKiBT ZW5zZSBrZXkgb2YgdGhlIGxhc3QgZmFpbGVkIHBhY2tldCBjb21tYW5kICov DQorI2VsaWYgZGVmaW5lZChfX0JJR19FTkRJQU5fQklURklFTEQpDQorCQl1 OCBzZW5zZV9rZXkJOiA0Ow0KKwkJdTggbWNyCQk6IDE7DQorCQl1OCBhYnJ0 CQk6IDE7DQorCQl1OCBlb20JCTogMTsNCisJCXU4IGlsaQkJOiAxOw0KKyNl bHNlDQorI2Vycm9yICJQbGVhc2UgZml4IDxhc20vYnl0ZW9yZGVyLmg+Ig0K KyNlbmRpZg0KKwl9IGI7DQorfSBhdGFwaV9lcnJvcl9yZWdfdDsNCisNCisv KiBDdXJyZW50bHkgdW51c2VkLCBidXQgcGxlYXNlIGRvIG5vdCByZW1vdmUu ICAtLWJreiAqLw0KKy8qDQorICoJQVRBUEkgRmVhdHVyZSBSZWdpc3Rlci4N CisgKi8NCit0eXBlZGVmIHVuaW9uIHsNCisJdTggYWxsCQkJOiA4Ow0KKwlz dHJ1Y3Qgew0KKyNpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTl9CSVRGSUVM RCkNCisJCXU4IGRtYQkJOiAxOwkvKiBVc2luZyBETUEgb3IgUElPICovDQor CQl1OCByZXNlcnZlZDMyMQk6IDM7CS8qIFJlc2VydmVkICovDQorCQl1OCBy ZXNlcnZlZDY1NAk6IDM7CS8qIFJlc2VydmVkIChUYWcgVHlwZSkgKi8NCisJ CXU4IHJlc2VydmVkNwk6IDE7CS8qIFJlc2VydmVkICovDQorI2VsaWYgZGVm aW5lZChfX0JJR19FTkRJQU5fQklURklFTEQpDQorCQl1OCByZXNlcnZlZDcJ OiAxOw0KKwkJdTggcmVzZXJ2ZWQ2NTQJOiAzOw0KKwkJdTggcmVzZXJ2ZWQz MjEJOiAzOw0KKwkJdTggZG1hCQk6IDE7DQorI2Vsc2UNCisjZXJyb3IgIlBs ZWFzZSBmaXggPGFzbS9ieXRlb3JkZXIuaD4iDQorI2VuZGlmDQorCX0gYjsN Cit9IGF0YXBpX2ZlYXR1cmVfcmVnX3Q7DQorDQorLyoNCisgKglBVEFQSSBC eXRlIENvdW50IFJlZ2lzdGVyLg0KKyAqLw0KK3R5cGVkZWYgdW5pb24gew0K Kwl1MTYgYWxsCQkJOiAxNjsNCisJc3RydWN0IHsNCisjaWYgZGVmaW5lZChf X0xJVFRMRV9FTkRJQU5fQklURklFTEQpDQorCQl1OCBsb3c7CQkJLyogTFNC ICovDQorCQl1OCBoaWdoOwkJLyogTVNCICovDQorI2VsaWYgZGVmaW5lZChf X0JJR19FTkRJQU5fQklURklFTEQpDQorCQl1OCBoaWdoOw0KKwkJdTggbG93 Ow0KKyNlbHNlDQorI2Vycm9yICJQbGVhc2UgZml4IDxhc20vYnl0ZW9yZGVy Lmg+Ig0KKyNlbmRpZg0KKwl9IGI7DQorfSBhdGFwaV9iY291bnRfcmVnX3Q7 DQorDQorLyoNCisgKglBVEFQSSBJbnRlcnJ1cHQgUmVhc29uIFJlZ2lzdGVy Lg0KKyAqLw0KK3R5cGVkZWYgdW5pb24gew0KKwl1OCBhbGwJCQk6IDg7DQor CXN0cnVjdCB7DQorI2lmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX0JJVEZJ RUxEKQ0KKwkJdTggY29kCQk6IDE7CS8qIEluZm9ybWF0aW9uIHRyYW5zZmVy cmVkIGlzIGNvbW1hbmQgKDEpIG9yIGRhdGEgKDApICovDQorCQl1OCBpbwkJ OiAxOwkvKiBUaGUgZGV2aWNlIHJlcXVlc3RzIHVzIHRvIHJlYWQgKDEpIG9y IHdyaXRlICgwKSAqLw0KKwkJdTggcmVzZXJ2ZWQJOiA2OwkvKiBSZXNlcnZl ZCAqLw0KKyNlbGlmIGRlZmluZWQoX19CSUdfRU5ESUFOX0JJVEZJRUxEKQ0K KwkJdTggcmVzZXJ2ZWQJOiA2Ow0KKwkJdTggaW8JCTogMTsNCisJCXU4IGNv ZAkJOiAxOw0KKyNlbHNlDQorI2Vycm9yICJQbGVhc2UgZml4IDxhc20vYnl0 ZW9yZGVyLmg+Ig0KKyNlbmRpZg0KKwl9IGI7DQorfSBhdGFwaV9pcmVhc29u X3JlZ190Ow0KKw0KKy8qIEN1cnJlbnRseSB1bnVzZWQsIGJ1dCBwbGVhc2Ug ZG8gbm90IHJlbW92ZS4gIC0tYmt6ICovDQorLyoNCisgKglBVEFQSSBEcml2 ZSBTZWxlY3QgUmVnaXN0ZXIuDQorICovDQordHlwZWRlZiB1bmlvbiB7CQ0K Kwl1OCBhbGwJCQk6ODsNCisJc3RydWN0IHsNCisjaWYgZGVmaW5lZChfX0xJ VFRMRV9FTkRJQU5fQklURklFTEQpDQorCQl1OCBzYW1fbHVuCTozOwkvKiBM b2dpY2FsIHVuaXQgbnVtYmVyICovDQorCQl1OCByZXNlcnZlZDMJOjE7CS8q IFJlc2VydmVkICovDQorCQl1OCBkcnYJCToxOwkvKiBUaGUgcmVzcG9uZGlu ZyBkcml2ZSB3aWxsIGJlIGRyaXZlIDAgKDApIG9yIGRyaXZlIDEgKDEpICov DQorCQl1OCBvbmU1CQk6MTsJLyogU2hvdWxkIGJlIHNldCB0byAxICovDQor CQl1OCByZXNlcnZlZDYJOjE7CS8qIFJlc2VydmVkICovDQorCQl1OCBvbmU3 CQk6MTsJLyogU2hvdWxkIGJlIHNldCB0byAxICovDQorI2VsaWYgZGVmaW5l ZChfX0JJR19FTkRJQU5fQklURklFTEQpDQorCQl1OCBvbmU3CQk6MTsNCisJ CXU4IHJlc2VydmVkNgk6MTsNCisJCXU4IG9uZTUJCToxOw0KKwkJdTggZHJ2 CQk6MTsNCisJCXU4IHJlc2VydmVkMwk6MTsNCisJCXU4IHNhbV9sdW4JOjM7 DQorI2Vsc2UNCisjZXJyb3IgIlBsZWFzZSBmaXggPGFzbS9ieXRlb3JkZXIu aD4iDQorI2VuZGlmDQorCX0gYjsNCit9IGF0YXBpX2RyaXZlc2VsX3JlZ190 Ow0KKw0KKy8qIEN1cnJlbnRseSB1bnVzZWQsIGJ1dCBwbGVhc2UgZG8gbm90 IHJlbW92ZS4gIC0tYmt6ICovDQorLyoNCisgKglBVEFQSSBEZXZpY2UgQ29u dHJvbCBSZWdpc3Rlci4NCisgKi8NCit0eXBlZGVmIHVuaW9uIHsNCisJdTgg YWxsCQkJOiA4Ow0KKwlzdHJ1Y3Qgew0KKyNpZiBkZWZpbmVkKF9fTElUVExF X0VORElBTl9CSVRGSUVMRCkNCisJCXU4IHplcm8wCTogMTsJLyogU2hvdWxk IGJlIHNldCB0byB6ZXJvICovDQorCQl1OCBuaWVuCQk6IDE7CS8qIERldmlj ZSBpbnRlcnJ1cHQgaXMgZGlzYWJsZWQgKDEpIG9yIGVuYWJsZWQgKDApICov DQorCQl1OCBzcnN0CQk6IDE7CS8qIEFUQSBzb2Z0d2FyZSByZXNldC4gQVRB UEkgZGV2aWNlcyBzaG91bGQgdXNlIHRoZSBuZXcgQVRBUEkgc3JzdC4gKi8N CisJCXU4IG9uZTMJCTogMTsJLyogU2hvdWxkIGJlIHNldCB0byAxICovDQor CQl1OCByZXNlcnZlZDQ1NjcJOiA0OwkvKiBSZXNlcnZlZCAqLw0KKyNlbGlm IGRlZmluZWQoX19CSUdfRU5ESUFOX0JJVEZJRUxEKQ0KKwkJdTggcmVzZXJ2 ZWQ0NTY3CTogNDsNCisJCXU4IG9uZTMJCTogMTsNCisJCXU4IHNyc3QJCTog MTsNCisJCXU4IG5pZW4JCTogMTsNCisJCXU4IHplcm8wCTogMTsNCisjZWxz ZQ0KKyNlcnJvciAiUGxlYXNlIGZpeCA8YXNtL2J5dGVvcmRlci5oPiINCisj ZW5kaWYNCisJfSBiOw0KK30gYXRhcGlfY29udHJvbF9yZWdfdDsNCisNCisv Kg0KKyAqCVRoZSBmb2xsb3dpbmcgaXMgdXNlZCB0byBmb3JtYXQgdGhlIGdl bmVyYWwgY29uZmlndXJhdGlvbiB3b3JkDQorICoJb2YgdGhlIEFUQVBJIElE RU5USUZZIERFVklDRSBjb21tYW5kLg0KKyAqLw0KK3N0cnVjdCBhdGFwaV9p ZF9nY3cgew0KKyNpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTl9CSVRGSUVM RCkNCisJdTggcGFja2V0X3NpemUJCTogMjsJLyogUGFja2V0IFNpemUgKi8N CisJdTggcmVzZXJ2ZWQyMzQJCTogMzsJLyogUmVzZXJ2ZWQgKi8NCisJdTgg ZHJxX3R5cGUJCTogMjsJLyogQ29tbWFuZCBwYWNrZXQgRFJRIHR5cGUgKi8N CisJdTggcmVtb3ZhYmxlCQk6IDE7CS8qIFJlbW92YWJsZSBtZWRpYSAqLw0K Kwl1OCBkZXZpY2VfdHlwZQkJOiA1OwkvKiBEZXZpY2UgdHlwZSAqLw0KKwl1 OCByZXNlcnZlZDEzCQk6IDE7CS8qIFJlc2VydmVkICovDQorCXU4IHByb3Rv Y29sCQk6IDI7CS8qIFByb3RvY29sIHR5cGUgKi8NCisjZWxpZiBkZWZpbmVk KF9fQklHX0VORElBTl9CSVRGSUVMRCkNCisJdTggcHJvdG9jb2wJCTogMjsN CisJdTggcmVzZXJ2ZWQxMwkJOiAxOw0KKwl1OCBkZXZpY2VfdHlwZQkJOiA1 Ow0KKwl1OCByZW1vdmFibGUJCTogMTsNCisJdTggZHJxX3R5cGUJCTogMjsN CisJdTggcmVzZXJ2ZWQyMzQJCTogMzsNCisJdTggcGFja2V0X3NpemUJCTog MjsNCisjZWxzZQkNCisjZXJyb3IgIlBsZWFzZSBmaXggPGFzbS9ieXRlb3Jk ZXIuaD4iDQorI2VuZGlmDQorfTsNCisNCisvKg0KKyAqCUlOUVVJUlkgcGFj a2V0IGNvbW1hbmQgLSBEYXRhIEZvcm1hdC4NCisgKi8NCit0eXBlZGVmIHN0 cnVjdCB7DQorI2lmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX0JJVEZJRUxE KQ0KKwl1OAlkZXZpY2VfdHlwZQk6IDU7CS8qIFBlcmlwaGVyYWwgRGV2aWNl IFR5cGUgKi8NCisJdTgJcmVzZXJ2ZWQwXzc2NQk6IDM7CS8qIFBlcmlwaGVy YWwgUXVhbGlmaWVyIC0gUmVzZXJ2ZWQgKi8NCisJdTgJcmVzZXJ2ZWQxXzZ0 MAk6IDc7CS8qIFJlc2VydmVkICovDQorCXU4CXJtYgkJOiAxOwkvKiBSZW1v dmFibGUgTWVkaXVtIEJpdCAqLw0KKwl1OAlhbnNpX3ZlcnNpb24JOiAzOwkv KiBBTlNJIFZlcnNpb24gKi8NCisJdTgJZWNtYV92ZXJzaW9uCTogMzsJLyog RUNNQSBWZXJzaW9uICovDQorCXU4CWlzb192ZXJzaW9uCTogMjsJLyogSVNP IFZlcnNpb24gKi8NCisJdTgJcmVzcG9uc2VfZm9ybWF0IDogNDsJLyogUmVz cG9uc2UgRGF0YSBGb3JtYXQgKi8NCisJdTgJcmVzZXJ2ZWQzXzQ1CTogMjsJ LyogUmVzZXJ2ZWQgKi8NCisJdTgJcmVzZXJ2ZWQzXzYJOiAxOwkvKiBUcm1J T1AgLSBSZXNlcnZlZCAqLw0KKwl1OAlyZXNlcnZlZDNfNwk6IDE7CS8qIEFF TkMgLSBSZXNlcnZlZCAqLw0KKyNlbGlmIGRlZmluZWQoX19CSUdfRU5ESUFO X0JJVEZJRUxEKQ0KKwl1OAlyZXNlcnZlZDBfNzY1CTogMzsNCisJdTgJZGV2 aWNlX3R5cGUJOiA1Ow0KKwl1OAlybWIJCTogMTsNCisJdTgJcmVzZXJ2ZWQx XzZ0MAk6IDc7DQorCXU4CWlzb192ZXJzaW9uCTogMjsNCisJdTgJZWNtYV92 ZXJzaW9uCTogMzsNCisJdTgJYW5zaV92ZXJzaW9uCTogMzsNCisJdTgJcmVz ZXJ2ZWQzXzcJOiAxOw0KKwl1OAlyZXNlcnZlZDNfNgk6IDE7DQorCXU4CXJl c2VydmVkM180NQk6IDI7DQorCXU4CXJlc3BvbnNlX2Zvcm1hdCA6IDQ7DQor I2Vsc2UNCisjZXJyb3IgIlBsZWFzZSBmaXggPGFzbS9ieXRlb3JkZXIuaD4i DQorI2VuZGlmDQorCXU4CWFkZGl0aW9uYWxfbGVuZ3RoOwkvKiBBZGRpdGlv bmFsIExlbmd0aCAodG90YWxfbGVuZ3RoLTQpICovDQorCXU4CXJzdjUsIHJz djYsIHJzdjc7CS8qIFJlc2VydmVkICovDQorCXU4CXZlbmRvcl9pZFs4XTsJ CS8qIFZlbmRvciBJZGVudGlmaWNhdGlvbiAqLw0KKwl1OAlwcm9kdWN0X2lk WzE2XTsJCS8qIFByb2R1Y3QgSWRlbnRpZmljYXRpb24gKi8NCisJdTgJcmV2 aXNpb25fbGV2ZWxbNF07CS8qIFJldmlzaW9uIExldmVsICovDQorCXU4CXZl bmRvcl9zcGVjaWZpY1syMF07CS8qIFZlbmRvciBTcGVjaWZpYyAtIE9wdGlv bmFsICovDQorCXU4CXJlc2VydmVkNTZ0OTVbNDBdOwkvKiBSZXNlcnZlZCAt IE9wdGlvbmFsICovDQorCQkJCQkvKiBBZGRpdGlvbmFsIGluZm9ybWF0aW9u IG1heSBiZSByZXR1cm5lZCAqLw0KK30gYXRhcGlfaW5xdWlyeV9yZXN1bHRf dDsNCisNCisvKg0KKyAqCVJFUVVFU1QgU0VOU0UgcGFja2V0IGNvbW1hbmQg cmVzdWx0IC0gRGF0YSBGb3JtYXQuDQorICovDQordHlwZWRlZiBzdHJ1Y3Qg ew0KKyNpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTl9CSVRGSUVMRCkNCisJ dTgJZXJyb3JfY29kZQk6IDc7CS8qIEVycm9yIENvZGUgKDB4NzAgLSBjdXJy ZW50IG9yIDB4NzEgLSBkZWZlcnJlZCkgKi8NCisJdTgJdmFsaWQJCTogMTsJ LyogVGhlIGluZm9ybWF0aW9uIGZpZWxkIGNvbmZvcm1zIHRvIHN0YW5kYXJk ICovDQorCXU4CXJlc2VydmVkMQk6IDg7CS8qIFJlc2VydmVkIChTZWdtZW50 IE51bWJlcikgKi8NCisJdTgJc2Vuc2Vfa2V5CTogNDsJLyogU2Vuc2UgS2V5 ICovDQorCXU4CXJlc2VydmVkMl80CTogMTsJLyogUmVzZXJ2ZWQgKi8NCisJ dTgJaWxpCQk6IDE7CS8qIEluY29ycmVjdCBMZW5ndGggSW5kaWNhdG9yICov DQorCXU4CWVvbQkJOiAxOwkvKiBFbmQgT2YgTWVkaXVtICovDQorCXU4CWZp bGVtYXJrCTogMTsJLyogRmlsZW1hcmsgKi8NCisjZWxpZiBkZWZpbmVkKF9f QklHX0VORElBTl9CSVRGSUVMRCkNCisJdTgJdmFsaWQJCTogMTsNCisJdTgJ ZXJyb3JfY29kZQk6IDc7DQorCXU4CXJlc2VydmVkMQk6IDg7DQorCXU4CWZp bGVtYXJrCTogMTsNCisJdTgJZW9tCQk6IDE7DQorCXU4CWlsaQkJOiAxOw0K Kwl1OAlyZXNlcnZlZDJfNAk6IDE7DQorCXU4CXNlbnNlX2tleQk6IDQ7DQor I2Vsc2UNCisjZXJyb3IgIlBsZWFzZSBmaXggPGFzbS9ieXRlb3JkZXIuaD4i DQorI2VuZGlmDQorCXUzMglpbmZvcm1hdGlvbiBfX2F0dHJpYnV0ZV9fICgo cGFja2VkKSk7DQorCXU4CWFzbDsJCQkvKiBBZGRpdGlvbmFsIHNlbnNlIGxl bmd0aCAobi03KSAqLw0KKwl1MzIJY29tbWFuZF9zcGVjaWZpYzsJLyogQWRk aXRpb25hbCBjb21tYW5kIHNwZWNpZmljIGluZm9ybWF0aW9uICovDQorCXU4 CWFzYzsJCQkvKiBBZGRpdGlvbmFsIFNlbnNlIENvZGUgKi8NCisJdTgJYXNj cTsJCQkvKiBBZGRpdGlvbmFsIFNlbnNlIENvZGUgUXVhbGlmaWVyICovDQor CXU4CXJlcGxhY2VhYmxlX3VuaXRfY29kZTsJLyogRmllbGQgUmVwbGFjZWFi bGUgVW5pdCBDb2RlICovDQorI2lmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFO X0JJVEZJRUxEKQ0KKwl1OAlza19zcGVjaWZpYzEJOiA3OwkvKiBTZW5zZSBL ZXkgU3BlY2lmaWMgKi8NCisJdTgJc2tzdgkJOiAxOwkvKiBTZW5zZSBLZXkg U3BlY2lmaWMgaW5mb3JtYXRpb24gaXMgdmFsaWQgKi8NCisjZWxpZiBkZWZp bmVkKF9fQklHX0VORElBTl9CSVRGSUVMRCkNCisJdTgJc2tzdgkJOiAxOwkv KiBTZW5zZSBLZXkgU3BlY2lmaWMgaW5mb3JtYXRpb24gaXMgdmFsaWQgKi8N CisJdTgJc2tfc3BlY2lmaWMxCTogNzsJLyogU2Vuc2UgS2V5IFNwZWNpZmlj ICovDQorI2Vsc2UNCisjZXJyb3IgIlBsZWFzZSBmaXggPGFzbS9ieXRlb3Jk ZXIuaD4iDQorI2VuZGlmDQorCXU4CXNrX3NwZWNpZmljWzJdOwkJLyogU2Vu c2UgS2V5IFNwZWNpZmljICovDQorCXU4CXBhZFsyXTsJCQkvKiBQYWRkaW5n IHRvIDIwIGJ5dGVzICovDQorfSBhdGFwaV9yZXF1ZXN0X3NlbnNlX3Jlc3Vs dF90Ow0KKw0KKyNlbmRpZiBfX0xJTlVYX0FUQVBJX0gNCi0tLSBsaW51eC0y LjUuMjIvZHJpdmVycy9pZGUvaWRlLWZsb3BweS5jCVR1ZSBKdW4gMTggMDA6 Mjk6MDIgMjAwMg0KKysrIGxpbnV4L2RyaXZlcnMvaWRlL2lkZS1mbG9wcHku YwlUdWUgSnVuIDE4IDIzOjUwOjA2IDIwMDINCkBAIC0yNzIsMzQgKzI3Miw2 IEBADQogI2RlZmluZSBJREVGTE9QUFlfWklQX0RSSVZFCQk1CS8qIFJlcXVp cmVzIEJIIGFsZ29yaXRobSBmb3IgcGFja2V0cyAqLw0KIA0KIC8qDQotICoJ QVRBUEkgZmxvcHB5IGRyaXZlIHBhY2tldCBjb21tYW5kcw0KLSAqLw0KLSNk ZWZpbmUgSURFRkxPUFBZX0ZPUk1BVF9VTklUX0NNRAkweDA0DQotI2RlZmlu ZSBJREVGTE9QUFlfSU5RVUlSWV9DTUQJCTB4MTINCi0jZGVmaW5lIElERUZM T1BQWV9NT0RFX1NFTEVDVF9DTUQJMHg1NQ0KLSNkZWZpbmUgSURFRkxPUFBZ X01PREVfU0VOU0VfQ01ECTB4NWENCi0jZGVmaW5lIElERUZMT1BQWV9SRUFE MTBfQ01ECQkweDI4DQotI2RlZmluZSBJREVGTE9QUFlfUkVBRDEyX0NNRAkJ MHhhOA0KLSNkZWZpbmUgSURFRkxPUFBZX1JFQURfQ0FQQUNJVFlfQ01ECTB4 MjMNCi0jZGVmaW5lIElERUZMT1BQWV9SRVFVRVNUX1NFTlNFX0NNRAkweDAz DQotI2RlZmluZSBJREVGTE9QUFlfUFJFVkVOVF9SRU1PVkFMX0NNRAkweDFl DQotI2RlZmluZSBJREVGTE9QUFlfU0VFS19DTUQJCTB4MmINCi0jZGVmaW5l IElERUZMT1BQWV9TVEFSVF9TVE9QX0NNRAkweDFiDQotI2RlZmluZSBJREVG TE9QUFlfVEVTVF9VTklUX1JFQURZX0NNRAkweDAwDQotI2RlZmluZSBJREVG TE9QUFlfVkVSSUZZX0NNRAkJMHgyZg0KLSNkZWZpbmUgSURFRkxPUFBZX1dS SVRFMTBfQ01ECQkweDJhDQotI2RlZmluZSBJREVGTE9QUFlfV1JJVEUxMl9D TUQJCTB4YWENCi0jZGVmaW5lIElERUZMT1BQWV9XUklURV9WRVJJRllfQ01E CTB4MmUNCi0NCi0vKg0KLSAqCURlZmluZXMgZm9yIHRoZSBtb2RlIHNlbnNl IGNvbW1hbmQNCi0gKi8NCi0jZGVmaW5lIE1PREVfU0VOU0VfQ1VSUkVOVAkJ MHgwMA0KLSNkZWZpbmUgTU9ERV9TRU5TRV9DSEFOR0VBQkxFCQkweDAxDQot I2RlZmluZSBNT0RFX1NFTlNFX0RFRkFVTFQJCTB4MDIgDQotI2RlZmluZSBN T0RFX1NFTlNFX1NBVkVECQkweDAzDQotDQotLyoNCiAgKglJT0NUTHMgdXNl ZCBpbiBsb3ctbGV2ZWwgZm9ybWF0dGluZy4NCiAgKi8NCiANCkBAIC0zMTUs MjcwICsyODcsNiBAQA0KICNkZWZpbmUJSURFRkxPUFBZX0VSUk9SX0dFTkVS QUwJCTEwMQ0KIA0KIC8qDQotICoJVGhlIEFUQVBJIFN0YXR1cyBSZWdpc3Rl ci4NCi0gKi8NCi10eXBlZGVmIHVuaW9uIHsNCi0JdW5zaWduZWQgYWxsCQkJ Ojg7DQotCXN0cnVjdCB7DQotI2lmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFO X0JJVEZJRUxEKQ0KLQkJdW5zaWduZWQgY2hlY2sJCToxOwkvKiBFcnJvciBv Y2N1cnJlZCAqLw0KLQkJdW5zaWduZWQgaWR4CQk6MTsJLyogUmVzZXJ2ZWQg Ki8NCi0JCXVuc2lnbmVkIGNvcnIJCToxOwkvKiBDb3JyZWN0YWJsZSBlcnJv ciBvY2N1cnJlZCAqLw0KLQkJdW5zaWduZWQgZHJxCQk6MTsJLyogRGF0YSBp cyByZXF1ZXN0IGJ5IHRoZSBkZXZpY2UgKi8NCi0JCXVuc2lnbmVkIGRzYwkJ OjE7CS8qIE1lZGlhIGFjY2VzcyBjb21tYW5kIGZpbmlzaGVkICovDQotCQl1 bnNpZ25lZCByZXNlcnZlZDUJOjE7CS8qIFJlc2VydmVkICovDQotCQl1bnNp Z25lZCBkcmR5CQk6MTsJLyogSWdub3JlZCBmb3IgQVRBUEkgY29tbWFuZHMg KHJlYWR5IHRvIGFjY2VwdCBBVEEgY29tbWFuZCkgKi8NCi0JCXVuc2lnbmVk IGJzeQkJOjE7CS8qIFRoZSBkZXZpY2UgaGFzIGFjY2VzcyB0byB0aGUgY29t bWFuZCBibG9jayAqLw0KLSNlbGlmIGRlZmluZWQoX19CSUdfRU5ESUFOX0JJ VEZJRUxEKQ0KLQkJdW5zaWduZWQgYnN5CQk6MTsJLyogVGhlIGRldmljZSBo YXMgYWNjZXNzIHRvIHRoZSBjb21tYW5kIGJsb2NrICovDQotCQl1bnNpZ25l ZCBkcmR5CQk6MTsJLyogSWdub3JlZCBmb3IgQVRBUEkgY29tbWFuZHMgKHJl YWR5IHRvIGFjY2VwdCBBVEEgY29tbWFuZCkgKi8NCi0JCXVuc2lnbmVkIHJl c2VydmVkNQk6MTsJLyogUmVzZXJ2ZWQgKi8NCi0JCXVuc2lnbmVkIGRzYwkJ OjE7CS8qIE1lZGlhIGFjY2VzcyBjb21tYW5kIGZpbmlzaGVkICovDQotCQl1 bnNpZ25lZCBkcnEJCToxOwkvKiBEYXRhIGlzIHJlcXVlc3QgYnkgdGhlIGRl dmljZSAqLw0KLQkJdW5zaWduZWQgY29ycgkJOjE7CS8qIENvcnJlY3RhYmxl IGVycm9yIG9jY3VycmVkICovDQotCQl1bnNpZ25lZCBpZHgJCToxOwkvKiBS ZXNlcnZlZCAqLw0KLQkJdW5zaWduZWQgY2hlY2sJCToxOwkvKiBFcnJvciBv Y2N1cnJlZCAqLw0KLSNlbHNlDQotI2Vycm9yICJCaXRmaWVsZCBlbmRpYW5u ZXNzIG5vdCBkZWZpbmVkISBDaGVjayB5b3VyIGJ5dGVvcmRlci5oIg0KLSNl bmRpZg0KLQl9IGI7DQotfSBpZGVmbG9wcHlfc3RhdHVzX3JlZ190Ow0KLQ0K LS8qDQotICoJVGhlIEFUQVBJIGVycm9yIHJlZ2lzdGVyLg0KLSAqLw0KLXR5 cGVkZWYgdW5pb24gew0KLQl1bnNpZ25lZCBhbGwJCQk6ODsNCi0Jc3RydWN0 IHsNCi0jaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU5fQklURklFTEQpDQot CQl1bnNpZ25lZCBpbGkJCToxOwkvKiBJbGxlZ2FsIExlbmd0aCBJbmRpY2F0 aW9uICovDQotCQl1bnNpZ25lZCBlb20JCToxOwkvKiBFbmQgT2YgTWVkaWEg RGV0ZWN0ZWQgKi8NCi0JCXVuc2lnbmVkIGFicnQJCToxOwkvKiBBYm9ydGVk IGNvbW1hbmQgLSBBcyBkZWZpbmVkIGJ5IEFUQSAqLw0KLQkJdW5zaWduZWQg bWNyCQk6MTsJLyogTWVkaWEgQ2hhbmdlIFJlcXVlc3RlZCAtIEFzIGRlZmlu ZWQgYnkgQVRBICovDQotCQl1bnNpZ25lZCBzZW5zZV9rZXkJOjQ7CS8qIFNl bnNlIGtleSBvZiB0aGUgbGFzdCBmYWlsZWQgcGFja2V0IGNvbW1hbmQgKi8N Ci0jZWxpZiBkZWZpbmVkKF9fQklHX0VORElBTl9CSVRGSUVMRCkNCi0JCXVu c2lnbmVkIHNlbnNlX2tleQk6NDsJLyogU2Vuc2Uga2V5IG9mIHRoZSBsYXN0 IGZhaWxlZCBwYWNrZXQgY29tbWFuZCAqLw0KLQkJdW5zaWduZWQgbWNyCQk6 MTsJLyogTWVkaWEgQ2hhbmdlIFJlcXVlc3RlZCAtIEFzIGRlZmluZWQgYnkg QVRBICovDQotCQl1bnNpZ25lZCBhYnJ0CQk6MTsJLyogQWJvcnRlZCBjb21t YW5kIC0gQXMgZGVmaW5lZCBieSBBVEEgKi8NCi0JCXVuc2lnbmVkIGVvbQkJ OjE7CS8qIEVuZCBPZiBNZWRpYSBEZXRlY3RlZCAqLw0KLQkJdW5zaWduZWQg aWxpCQk6MTsJLyogSWxsZWdhbCBMZW5ndGggSW5kaWNhdGlvbiAqLw0KLSNl bHNlDQotI2Vycm9yICJCaXRmaWVsZCBlbmRpYW5uZXNzIG5vdCBkZWZpbmVk ISBDaGVjayB5b3VyIGJ5dGVvcmRlci5oIg0KLSNlbmRpZg0KLQl9IGI7DQot fSBpZGVmbG9wcHlfZXJyb3JfcmVnX3Q7DQotDQotLyoNCi0gKglBVEFQSSBG ZWF0dXJlIFJlZ2lzdGVyDQotICovDQotdHlwZWRlZiB1bmlvbiB7DQotCXVu c2lnbmVkIGFsbAkJCTo4Ow0KLQlzdHJ1Y3Qgew0KLSNpZiBkZWZpbmVkKF9f TElUVExFX0VORElBTl9CSVRGSUVMRCkNCi0JCXVuc2lnbmVkIGRtYQkJOjE7 CS8qIFVzaW5nIERNQSBvciBQSU8gKi8NCi0JCXVuc2lnbmVkIHJlc2VydmVk MzIxCTozOwkvKiBSZXNlcnZlZCAqLw0KLQkJdW5zaWduZWQgcmVzZXJ2ZWQ2 NTQJOjM7CS8qIFJlc2VydmVkIChUYWcgVHlwZSkgKi8NCi0JCXVuc2lnbmVk IHJlc2VydmVkNwk6MTsJLyogUmVzZXJ2ZWQgKi8NCi0jZWxpZiBkZWZpbmVk KF9fQklHX0VORElBTl9CSVRGSUVMRCkNCi0JCXVuc2lnbmVkIHJlc2VydmVk Nwk6MTsJLyogUmVzZXJ2ZWQgKi8NCi0JCXVuc2lnbmVkIHJlc2VydmVkNjU0 CTozOwkvKiBSZXNlcnZlZCAoVGFnIFR5cGUpICovDQotCQl1bnNpZ25lZCBy ZXNlcnZlZDMyMQk6MzsJLyogUmVzZXJ2ZWQgKi8NCi0JCXVuc2lnbmVkIGRt YQkJOjE7CS8qIFVzaW5nIERNQSBvciBQSU8gKi8NCi0jZWxzZQ0KLSNlcnJv ciAiQml0ZmllbGQgZW5kaWFubmVzcyBub3QgZGVmaW5lZCEgQ2hlY2sgeW91 ciBieXRlb3JkZXIuaCINCi0jZW5kaWYNCi0JfSBiOw0KLX0gaWRlZmxvcHB5 X2ZlYXR1cmVfcmVnX3Q7DQotDQotLyoNCi0gKglBVEFQSSBCeXRlIENvdW50 IFJlZ2lzdGVyLg0KLSAqLw0KLXR5cGVkZWYgdW5pb24gew0KLQl1bnNpZ25l ZCBhbGwJCQk6MTY7DQotCXN0cnVjdCB7DQotI2lmIGRlZmluZWQoX19MSVRU TEVfRU5ESUFOX0JJVEZJRUxEKQ0KLQkJdW5zaWduZWQgbG93CQk6ODsJLyog TFNCICovDQotCQl1bnNpZ25lZCBoaWdoCQk6ODsJLyogTVNCICovDQotI2Vs aWYgZGVmaW5lZChfX0JJR19FTkRJQU5fQklURklFTEQpDQotCQl1bnNpZ25l ZCBoaWdoCQk6ODsJLyogTVNCICovDQotCQl1bnNpZ25lZCBsb3cJCTo4Owkv KiBMU0IgKi8NCi0jZWxzZQ0KLSNlcnJvciAiQml0ZmllbGQgZW5kaWFubmVz cyBub3QgZGVmaW5lZCEgQ2hlY2sgeW91ciBieXRlb3JkZXIuaCINCi0jZW5k aWYNCi0JfSBiOw0KLX0gaWRlZmxvcHB5X2Jjb3VudF9yZWdfdDsNCi0NCi0v Kg0KLSAqCUFUQVBJIEludGVycnVwdCBSZWFzb24gUmVnaXN0ZXIuDQotICov DQotdHlwZWRlZiB1bmlvbiB7DQotCXVuc2lnbmVkIGFsbAkJCTo4Ow0KLQlz dHJ1Y3Qgew0KLSNpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTl9CSVRGSUVM RCkNCi0JCXVuc2lnbmVkIGNvZAkJOjE7CS8qIEluZm9ybWF0aW9uIHRyYW5z ZmVycmVkIGlzIGNvbW1hbmQgKDEpIG9yIGRhdGEgKDApICovDQotCQl1bnNp Z25lZCBpbwkJOjE7CS8qIFRoZSBkZXZpY2UgcmVxdWVzdHMgdXMgdG8gcmVh ZCAoMSkgb3Igd3JpdGUgKDApICovDQotCQl1bnNpZ25lZCByZXNlcnZlZAk6 NjsJLyogUmVzZXJ2ZWQgKi8NCi0jZWxpZiBkZWZpbmVkKF9fQklHX0VORElB Tl9CSVRGSUVMRCkNCi0JCXVuc2lnbmVkIHJlc2VydmVkCTo2OwkvKiBSZXNl cnZlZCAqLw0KLQkJdW5zaWduZWQgaW8JCToxOwkvKiBUaGUgZGV2aWNlIHJl cXVlc3RzIHVzIHRvIHJlYWQgKDEpIG9yIHdyaXRlICgwKSAqLw0KLQkJdW5z aWduZWQgY29kCQk6MTsJLyogSW5mb3JtYXRpb24gdHJhbnNmZXJyZWQgaXMg Y29tbWFuZCAoMSkgb3IgZGF0YSAoMCkgKi8NCi0jZWxzZQ0KLSNlcnJvciAi Qml0ZmllbGQgZW5kaWFubmVzcyBub3QgZGVmaW5lZCEgQ2hlY2sgeW91ciBi eXRlb3JkZXIuaCINCi0jZW5kaWYNCi0JfSBiOw0KLX0gaWRlZmxvcHB5X2ly ZWFzb25fcmVnX3Q7DQotDQotLyoNCi0gKglBVEFQSSBmbG9wcHkgRHJpdmUg U2VsZWN0IFJlZ2lzdGVyDQotICovDQotdHlwZWRlZiB1bmlvbiB7CQ0KLQl1 bnNpZ25lZCBhbGwJCQk6ODsNCi0Jc3RydWN0IHsNCi0jaWYgZGVmaW5lZChf X0xJVFRMRV9FTkRJQU5fQklURklFTEQpDQotCQl1bnNpZ25lZCBzYW1fbHVu CTozOwkvKiBMb2dpY2FsIHVuaXQgbnVtYmVyICovDQotCQl1bnNpZ25lZCBy ZXNlcnZlZDMJOjE7CS8qIFJlc2VydmVkICovDQotCQl1bnNpZ25lZCBkcnYJ CToxOwkvKiBUaGUgcmVzcG9uZGluZyBkcml2ZSB3aWxsIGJlIGRyaXZlIDAg KDApIG9yIGRyaXZlIDEgKDEpICovDQotCQl1bnNpZ25lZCBvbmU1CQk6MTsJ LyogU2hvdWxkIGJlIHNldCB0byAxICovDQotCQl1bnNpZ25lZCByZXNlcnZl ZDYJOjE7CS8qIFJlc2VydmVkICovDQotCQl1bnNpZ25lZCBvbmU3CQk6MTsJ LyogU2hvdWxkIGJlIHNldCB0byAxICovDQotI2VsaWYgZGVmaW5lZChfX0JJ R19FTkRJQU5fQklURklFTEQpDQotCQl1bnNpZ25lZCBvbmU3CQk6MTsJLyog U2hvdWxkIGJlIHNldCB0byAxICovDQotCQl1bnNpZ25lZCByZXNlcnZlZDYJ OjE7CS8qIFJlc2VydmVkICovDQotCQl1bnNpZ25lZCBvbmU1CQk6MTsJLyog U2hvdWxkIGJlIHNldCB0byAxICovDQotCQl1bnNpZ25lZCBkcnYJCToxOwkv KiBUaGUgcmVzcG9uZGluZyBkcml2ZSB3aWxsIGJlIGRyaXZlIDAgKDApIG9y IGRyaXZlIDEgKDEpICovDQotCQl1bnNpZ25lZCByZXNlcnZlZDMJOjE7CS8q IFJlc2VydmVkICovDQotCQl1bnNpZ25lZCBzYW1fbHVuCTozOwkvKiBMb2dp Y2FsIHVuaXQgbnVtYmVyICovDQotI2Vsc2UNCi0jZXJyb3IgIkJpdGZpZWxk IGVuZGlhbm5lc3Mgbm90IGRlZmluZWQhIENoZWNrIHlvdXIgYnl0ZW9yZGVy LmgiDQotI2VuZGlmDQotCX0gYjsNCi19IGlkZWZsb3BweV9kcml2ZXNlbF9y ZWdfdDsNCi0NCi0vKg0KLSAqCUFUQVBJIERldmljZSBDb250cm9sIFJlZ2lz dGVyDQotICovDQotdHlwZWRlZiB1bmlvbiB7CQkJDQotCXVuc2lnbmVkIGFs bAkJCTo4Ow0KLQlzdHJ1Y3Qgew0KLSNpZiBkZWZpbmVkKF9fTElUVExFX0VO RElBTl9CSVRGSUVMRCkNCi0JCXVuc2lnbmVkIHplcm8wCQk6MTsJLyogU2hv dWxkIGJlIHNldCB0byB6ZXJvICovDQotCQl1bnNpZ25lZCBuaWVuCQk6MTsJ LyogRGV2aWNlIGludGVycnVwdCBpcyBkaXNhYmxlZCAoMSkgb3IgZW5hYmxl ZCAoMCkgKi8NCi0JCXVuc2lnbmVkIHNyc3QJCToxOwkvKiBBVEEgc29mdHdh cmUgcmVzZXQuIEFUQVBJIGRldmljZXMgc2hvdWxkIHVzZSB0aGUgbmV3IEFU QVBJIHNyc3QuICovDQotCQl1bnNpZ25lZCBvbmUzCQk6MTsJLyogU2hvdWxk IGJlIHNldCB0byAxICovDQotCQl1bnNpZ25lZCByZXNlcnZlZDQ1NjcJOjQ7 CS8qIFJlc2VydmVkICovDQotI2VsaWYgZGVmaW5lZChfX0JJR19FTkRJQU5f QklURklFTEQpDQotCQl1bnNpZ25lZCByZXNlcnZlZDQ1NjcJOjQ7CS8qIFJl c2VydmVkICovDQotCQl1bnNpZ25lZCBvbmUzCQk6MTsJLyogU2hvdWxkIGJl IHNldCB0byAxICovDQotCQl1bnNpZ25lZCBzcnN0CQk6MTsJLyogQVRBIHNv ZnR3YXJlIHJlc2V0LiBBVEFQSSBkZXZpY2VzIHNob3VsZCB1c2UgdGhlIG5l dyBBVEFQSSBzcnN0LiAqLw0KLQkJdW5zaWduZWQgbmllbgkJOjE7CS8qIERl dmljZSBpbnRlcnJ1cHQgaXMgZGlzYWJsZWQgKDEpIG9yIGVuYWJsZWQgKDAp ICovDQotCQl1bnNpZ25lZCB6ZXJvMAkJOjE7CS8qIFNob3VsZCBiZSBzZXQg dG8gemVybyAqLw0KLSNlbHNlDQotI2Vycm9yICJCaXRmaWVsZCBlbmRpYW5u ZXNzIG5vdCBkZWZpbmVkISBDaGVjayB5b3VyIGJ5dGVvcmRlci5oIg0KLSNl bmRpZg0KLQl9IGI7DQotfSBpZGVmbG9wcHlfY29udHJvbF9yZWdfdDsNCi0N Ci0vKg0KLSAqCVRoZSBmb2xsb3dpbmcgaXMgdXNlZCB0byBmb3JtYXQgdGhl IGdlbmVyYWwgY29uZmlndXJhdGlvbiB3b3JkIG9mDQotICoJdGhlIEFUQVBJ IElERU5USUZZIERFVklDRSBjb21tYW5kLg0KLSAqLw0KLXN0cnVjdCBpZGVm bG9wcHlfaWRfZ2N3IHsJDQotI2lmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFO X0JJVEZJRUxEKQ0KLQl1bnNpZ25lZCBwYWNrZXRfc2l6ZQkJOjI7CS8qIFBh Y2tldCBTaXplICovDQotCXVuc2lnbmVkIHJlc2VydmVkMjM0CQk6MzsJLyog UmVzZXJ2ZWQgKi8NCi0JdW5zaWduZWQgZHJxX3R5cGUJCToyOwkvKiBDb21t YW5kIHBhY2tldCBEUlEgdHlwZSAqLw0KLQl1bnNpZ25lZCByZW1vdmFibGUJ CToxOwkvKiBSZW1vdmFibGUgbWVkaWEgKi8NCi0JdW5zaWduZWQgZGV2aWNl X3R5cGUJCTo1OwkvKiBEZXZpY2UgdHlwZSAqLw0KLQl1bnNpZ25lZCByZXNl cnZlZDEzCQk6MTsJLyogUmVzZXJ2ZWQgKi8NCi0JdW5zaWduZWQgcHJvdG9j b2wJCToyOwkvKiBQcm90b2NvbCB0eXBlICovDQotI2VsaWYgZGVmaW5lZChf X0JJR19FTkRJQU5fQklURklFTEQpDQotCXVuc2lnbmVkIHByb3RvY29sCQk6 MjsJLyogUHJvdG9jb2wgdHlwZSAqLw0KLQl1bnNpZ25lZCByZXNlcnZlZDEz CQk6MTsJLyogUmVzZXJ2ZWQgKi8NCi0JdW5zaWduZWQgZGV2aWNlX3R5cGUJ CTo1OwkvKiBEZXZpY2UgdHlwZSAqLw0KLQl1bnNpZ25lZCByZW1vdmFibGUJ CToxOwkvKiBSZW1vdmFibGUgbWVkaWEgKi8NCi0JdW5zaWduZWQgZHJxX3R5 cGUJCToyOwkvKiBDb21tYW5kIHBhY2tldCBEUlEgdHlwZSAqLw0KLQl1bnNp Z25lZCByZXNlcnZlZDIzNAkJOjM7CS8qIFJlc2VydmVkICovDQotCXVuc2ln bmVkIHBhY2tldF9zaXplCQk6MjsJLyogUGFja2V0IFNpemUgKi8NCi0jZWxz ZQ0KLSNlcnJvciAiQml0ZmllbGQgZW5kaWFubmVzcyBub3QgZGVmaW5lZCEg Q2hlY2sgeW91ciBieXRlb3JkZXIuaCINCi0jZW5kaWYNCi19Ow0KLQ0KLS8q DQotICoJSU5RVUlSWSBwYWNrZXQgY29tbWFuZCAtIERhdGEgRm9ybWF0DQot ICovDQotdHlwZWRlZiBzdHJ1Y3Qgew0KLSNpZiBkZWZpbmVkKF9fTElUVExF X0VORElBTl9CSVRGSUVMRCkNCi0JdW5zaWduZWQJZGV2aWNlX3R5cGUJOjU7 CS8qIFBlcmlwaGVyYWwgRGV2aWNlIFR5cGUgKi8NCi0JdW5zaWduZWQJcmVz ZXJ2ZWQwXzc2NQk6MzsJLyogUGVyaXBoZXJhbCBRdWFsaWZpZXIgLSBSZXNl cnZlZCAqLw0KLQl1bnNpZ25lZAlyZXNlcnZlZDFfNnQwCTo3OwkvKiBSZXNl cnZlZCAqLw0KLQl1bnNpZ25lZAlybWIJCToxOwkvKiBSZW1vdmFibGUgTWVk aXVtIEJpdCAqLw0KLQl1bnNpZ25lZAlhbnNpX3ZlcnNpb24JOjM7CS8qIEFO U0kgVmVyc2lvbiAqLw0KLQl1bnNpZ25lZAllY21hX3ZlcnNpb24JOjM7CS8q IEVDTUEgVmVyc2lvbiAqLw0KLQl1bnNpZ25lZAlpc29fdmVyc2lvbgk6MjsJ LyogSVNPIFZlcnNpb24gKi8NCi0JdW5zaWduZWQJcmVzcG9uc2VfZm9ybWF0 IDo0OwkvKiBSZXNwb25zZSBEYXRhIEZvcm1hdCAqLw0KLQl1bnNpZ25lZAly ZXNlcnZlZDNfNDUJOjI7CS8qIFJlc2VydmVkICovDQotCXVuc2lnbmVkCXJl c2VydmVkM182CToxOwkvKiBUcm1JT1AgLSBSZXNlcnZlZCAqLw0KLQl1bnNp Z25lZAlyZXNlcnZlZDNfNwk6MTsJLyogQUVOQyAtIFJlc2VydmVkICovDQot I2VsaWYgZGVmaW5lZChfX0JJR19FTkRJQU5fQklURklFTEQpDQotCXVuc2ln bmVkCXJlc2VydmVkMF83NjUJOjM7CS8qIFBlcmlwaGVyYWwgUXVhbGlmaWVy IC0gUmVzZXJ2ZWQgKi8NCi0JdW5zaWduZWQJZGV2aWNlX3R5cGUJOjU7CS8q IFBlcmlwaGVyYWwgRGV2aWNlIFR5cGUgKi8NCi0JdW5zaWduZWQJcm1iCQk6 MTsJLyogUmVtb3ZhYmxlIE1lZGl1bSBCaXQgKi8NCi0JdW5zaWduZWQJcmVz ZXJ2ZWQxXzZ0MAk6NzsJLyogUmVzZXJ2ZWQgKi8NCi0JdW5zaWduZWQJaXNv X3ZlcnNpb24JOjI7CS8qIElTTyBWZXJzaW9uICovDQotCXVuc2lnbmVkCWVj bWFfdmVyc2lvbgk6MzsJLyogRUNNQSBWZXJzaW9uICovDQotCXVuc2lnbmVk CWFuc2lfdmVyc2lvbgk6MzsJLyogQU5TSSBWZXJzaW9uICovDQotCXVuc2ln bmVkCXJlc2VydmVkM183CToxOwkvKiBBRU5DIC0gUmVzZXJ2ZWQgKi8NCi0J dW5zaWduZWQJcmVzZXJ2ZWQzXzYJOjE7CS8qIFRybUlPUCAtIFJlc2VydmVk ICovDQotCXVuc2lnbmVkCXJlc2VydmVkM180NQk6MjsJLyogUmVzZXJ2ZWQg Ki8NCi0JdW5zaWduZWQJcmVzcG9uc2VfZm9ybWF0IDo0OwkvKiBSZXNwb25z ZSBEYXRhIEZvcm1hdCAqLw0KLSNlbHNlDQotI2Vycm9yICJCaXRmaWVsZCBl bmRpYW5uZXNzIG5vdCBkZWZpbmVkISBDaGVjayB5b3VyIGJ5dGVvcmRlci5o Ig0KLSNlbmRpZg0KLQl1OAkJYWRkaXRpb25hbF9sZW5ndGg7CS8qIEFkZGl0 aW9uYWwgTGVuZ3RoICh0b3RhbF9sZW5ndGgtNCkgKi8NCi0JdTgJCXJzdjUs IHJzdjYsIHJzdjc7CS8qIFJlc2VydmVkICovDQotCXU4CQl2ZW5kb3JfaWRb OF07CQkvKiBWZW5kb3IgSWRlbnRpZmljYXRpb24gKi8NCi0JdTgJCXByb2R1 Y3RfaWRbMTZdOwkJLyogUHJvZHVjdCBJZGVudGlmaWNhdGlvbiAqLw0KLQl1 OAkJcmV2aXNpb25fbGV2ZWxbNF07CS8qIFJldmlzaW9uIExldmVsICovDQot CXU4CQl2ZW5kb3Jfc3BlY2lmaWNbMjBdOwkvKiBWZW5kb3IgU3BlY2lmaWMg LSBPcHRpb25hbCAqLw0KLQl1OAkJcmVzZXJ2ZWQ1NnQ5NVs0MF07CS8qIFJl c2VydmVkIC0gT3B0aW9uYWwgKi8NCi0JCQkJCQkvKiBBZGRpdGlvbmFsIGlu Zm9ybWF0aW9uIG1heSBiZSByZXR1cm5lZCAqLw0KLX0gaWRlZmxvcHB5X2lu cXVpcnlfcmVzdWx0X3Q7DQotDQotLyoNCi0gKglSRVFVRVNUIFNFTlNFIHBh Y2tldCBjb21tYW5kIHJlc3VsdCAtIERhdGEgRm9ybWF0Lg0KLSAqLw0KLXR5 cGVkZWYgc3RydWN0IHsNCi0jaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU5f QklURklFTEQpDQotCXVuc2lnbmVkCWVycm9yX2NvZGUJOjc7CS8qIEN1cnJl bnQgZXJyb3IgKDB4NzApICovDQotCXVuc2lnbmVkCXZhbGlkCQk6MTsJLyog VGhlIGluZm9ybWF0aW9uIGZpZWxkIGNvbmZvcm1zIHRvIFNGRi04MDcwaSAq Lw0KLQl1OAkJcmVzZXJ2ZWQxCTo4OwkvKiBSZXNlcnZlZCAqLw0KLQl1bnNp Z25lZAlzZW5zZV9rZXkJOjQ7CS8qIFNlbnNlIEtleSAqLw0KLQl1bnNpZ25l ZAlyZXNlcnZlZDJfNAk6MTsJLyogUmVzZXJ2ZWQgKi8NCi0JdW5zaWduZWQJ aWxpCQk6MTsJLyogSW5jb3JyZWN0IExlbmd0aCBJbmRpY2F0b3IgKi8NCi0J dW5zaWduZWQJcmVzZXJ2ZWQyXzY3CToyOw0KLSNlbGlmIGRlZmluZWQoX19C SUdfRU5ESUFOX0JJVEZJRUxEKQ0KLQl1bnNpZ25lZAl2YWxpZAkJOjE7CS8q IFRoZSBpbmZvcm1hdGlvbiBmaWVsZCBjb25mb3JtcyB0byBTRkYtODA3MGkg Ki8NCi0JdW5zaWduZWQJZXJyb3JfY29kZQk6NzsJLyogQ3VycmVudCBlcnJv ciAoMHg3MCkgKi8NCi0JdTgJCXJlc2VydmVkMQk6ODsJLyogUmVzZXJ2ZWQg Ki8NCi0JdW5zaWduZWQJcmVzZXJ2ZWQyXzY3CToyOw0KLQl1bnNpZ25lZAlp bGkJCToxOwkvKiBJbmNvcnJlY3QgTGVuZ3RoIEluZGljYXRvciAqLw0KLQl1 bnNpZ25lZAlyZXNlcnZlZDJfNAk6MTsJLyogUmVzZXJ2ZWQgKi8NCi0JdW5z aWduZWQJc2Vuc2Vfa2V5CTo0OwkvKiBTZW5zZSBLZXkgKi8NCi0jZWxzZQ0K LSNlcnJvciAiQml0ZmllbGQgZW5kaWFubmVzcyBub3QgZGVmaW5lZCEgQ2hl Y2sgeW91ciBieXRlb3JkZXIuaCINCi0jZW5kaWYNCi0JdTMyCQlpbmZvcm1h dGlvbiBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7DQotCXU4CQlhc2w7CQkJ LyogQWRkaXRpb25hbCBzZW5zZSBsZW5ndGggKG4tNykgKi8NCi0JdTMyCQlj b21tYW5kX3NwZWNpZmljOwkvKiBBZGRpdGlvbmFsIGNvbW1hbmQgc3BlY2lm aWMgaW5mb3JtYXRpb24gKi8NCi0JdTgJCWFzYzsJCQkvKiBBZGRpdGlvbmFs IFNlbnNlIENvZGUgKi8NCi0JdTgJCWFzY3E7CQkJLyogQWRkaXRpb25hbCBT ZW5zZSBDb2RlIFF1YWxpZmllciAqLw0KLQl1OAkJcmVwbGFjZWFibGVfdW5p dF9jb2RlOwkvKiBGaWVsZCBSZXBsYWNlYWJsZSBVbml0IENvZGUgKi8NCi0J dTgJCXNrc3ZbM107DQotCXU4CQlwYWRbMl07CQkJLyogUGFkZGluZyB0byAy MCBieXRlcyAqLw0KLX0gaWRlZmxvcHB5X3JlcXVlc3Rfc2Vuc2VfcmVzdWx0 X3Q7DQotDQotLyoNCiAgKglQYWdlcyBvZiB0aGUgU0VMRUNUIFNFTlNFIC8g TU9ERSBTRU5TRSBwYWNrZXQgY29tbWFuZHMuDQogICovDQogI2RlZmluZQlJ REVGTE9QUFlfQ0FQQUJJTElUSUVTX1BBR0UJMHgxYg0KQEAgLTYwMiw5ICsz MTAsNiBAQA0KIAl1OAkJcmVzZXJ2ZWRbNF07DQogfSBpZGVmbG9wcHlfbW9k ZV9wYXJhbWV0ZXJfaGVhZGVyX3Q7DQogDQotI2RlZmluZSBJREVGTE9QUFlf TUlOKGEsYikJKChhKTwoYikgPyAoYSk6KGIpKQ0KLSNkZWZpbmUJSURFRkxP UFBZX01BWChhLGIpCSgoYSk+KGIpID8gKGEpOihiKSkNCi0NCiAvKg0KICAq CWlkZWZsb3BweV9lbmRfcmVxdWVzdCBpcyB1c2VkIHRvIGZpbmlzaCBzZXJ2 aWNpbmcgYSByZXF1ZXN0Lg0KICAqDQpAQCAtNjYzLDcgKzM2OCw3IEBAIHN0 YXRpYyB2b2lkIGlkZWZsb3BweV9pbnB1dF9idWZmZXJzKHN0cnUNCiAJCQlh dGFwaV9kaXNjYXJkX2RhdGEoZHJpdmUsIGJjb3VudCk7DQogCQkJcmV0dXJu Ow0KIAkJfQ0KLQkJY291bnQgPSBJREVGTE9QUFlfTUlOKGJpby0+Ymlfc2l6 ZSAtIHBjLT5iX2NvdW50LCBiY291bnQpOw0KKwkJY291bnQgPSBtaW5fdCh1 bnNpZ25lZCBpbnQsIGJpby0+Ymlfc2l6ZSAtIHBjLT5iX2NvdW50LCBiY291 bnQpOw0KIAkJYXRhcGlfcmVhZChkcml2ZSwgYmlvX2RhdGEoYmlvKSArIHBj LT5iX2NvdW50LCBjb3VudCk7DQogCQliY291bnQgLT0gY291bnQ7IHBjLT5i X2NvdW50ICs9IGNvdW50Ow0KIAl9DQpAQCAtNjkwLDcgKzM5NSw3IEBAIHN0 YXRpYyB2b2lkIGlkZWZsb3BweV9vdXRwdXRfYnVmZmVycyhzdHINCiAJCQlh dGFwaV93cml0ZV96ZXJvcyAoZHJpdmUsIGJjb3VudCk7DQogCQkJcmV0dXJu Ow0KIAkJfQ0KLQkJY291bnQgPSBJREVGTE9QUFlfTUlOKHBjLT5iX2NvdW50 LCBiY291bnQpOw0KKwkJY291bnQgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIHBj LT5iX2NvdW50LCBiY291bnQpOw0KIAkJYXRhcGlfd3JpdGUoZHJpdmUsIHBj LT5iX2RhdGEsIGNvdW50KTsNCiAJCWJjb3VudCAtPSBjb3VudDsgcGMtPmJf ZGF0YSArPSBjb3VudDsgcGMtPmJfY291bnQgLT0gY291bnQ7DQogCX0NCkBA IC03NDMsMTMgKzQ0OCwxMyBAQCBzdGF0aWMgc3RydWN0IHJlcXVlc3QgKmlk ZWZsb3BweV9uZXh0X3JxDQogICoJaWRlZmxvcHB5X2FuYWx5emVfZXJyb3Ig aXMgY2FsbGVkIG9uIGVhY2ggZmFpbGVkIHBhY2tldCBjb21tYW5kIHJldHJ5 DQogICoJdG8gYW5hbHl6ZSB0aGUgcmVxdWVzdCBzZW5zZS4NCiAgKi8NCi1z dGF0aWMgdm9pZCBpZGVmbG9wcHlfYW5hbHl6ZV9lcnJvcihzdHJ1Y3QgYXRh X2RldmljZSAqZHJpdmUsIGlkZWZsb3BweV9yZXF1ZXN0X3NlbnNlX3Jlc3Vs dF90ICpyZXN1bHQpDQorc3RhdGljIHZvaWQgaWRlZmxvcHB5X2FuYWx5emVf ZXJyb3Ioc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlLCBhdGFwaV9yZXF1ZXN0 X3NlbnNlX3Jlc3VsdF90ICpyZXN1bHQpDQogew0KIAlpZGVmbG9wcHlfZmxv cHB5X3QgKmZsb3BweSA9IGRyaXZlLT5kcml2ZXJfZGF0YTsNCiANCiAJZmxv cHB5LT5zZW5zZV9rZXkgPSByZXN1bHQtPnNlbnNlX2tleTsgZmxvcHB5LT5h c2MgPSByZXN1bHQtPmFzYzsgZmxvcHB5LT5hc2NxID0gcmVzdWx0LT5hc2Nx Ow0KLQlmbG9wcHktPnByb2dyZXNzX2luZGljYXRpb249IHJlc3VsdC0+c2tz dlswXSAmIDB4ODAgPw0KLQkJKHVuc2lnbmVkIHNob3J0KWdldF91bmFsaWdu ZWQoKHUxNiAqKShyZXN1bHQtPnNrc3YrMSkpOjB4MTAwMDA7DQorCWZsb3Bw eS0+cHJvZ3Jlc3NfaW5kaWNhdGlvbj0gcmVzdWx0LT5za3N2ID8NCisJCSh1 bnNpZ25lZCBzaG9ydClnZXRfdW5hbGlnbmVkKCh1MTYgKikocmVzdWx0LT5z a19zcGVjaWZpYykpOjB4MTAwMDA7DQogI2lmIElERUZMT1BQWV9ERUJVR19M T0cNCiAJaWYgKGZsb3BweS0+ZmFpbGVkX3BjKQ0KIAkJcHJpbnRrIChLRVJO X0lORk8gImlkZS1mbG9wcHk6IHBjID0gJXgsIHNlbnNlIGtleSA9ICV4LCBh c2MgPSAleCwgYXNjcSA9ICV4XG4iLGZsb3BweS0+ZmFpbGVkX3BjLT5jWzBd LHJlc3VsdC0+c2Vuc2Vfa2V5LHJlc3VsdC0+YXNjLHJlc3VsdC0+YXNjcSk7 DQpAQCAtNzY2LDcgKzQ3MSw3IEBAIHN0YXRpYyB2b2lkIGlkZWZsb3BweV9y ZXF1ZXN0X3NlbnNlX2NhbGwNCiAJcHJpbnRrIChLRVJOX0lORk8gImlkZS1m bG9wcHk6IFJlYWNoZWQgaWRlZmxvcHB5X3JlcXVlc3Rfc2Vuc2VfY2FsbGJh Y2tcbiIpOw0KICNlbmRpZg0KIAlpZiAoIWZsb3BweS0+cGMtPmVycm9yKSB7 DQotCQlpZGVmbG9wcHlfYW5hbHl6ZV9lcnJvcihkcml2ZSwoaWRlZmxvcHB5 X3JlcXVlc3Rfc2Vuc2VfcmVzdWx0X3QgKikgZmxvcHB5LT5wYy0+YnVmZmVy KTsNCisJCWlkZWZsb3BweV9hbmFseXplX2Vycm9yKGRyaXZlLChhdGFwaV9y ZXF1ZXN0X3NlbnNlX3Jlc3VsdF90ICopIGZsb3BweS0+cGMtPmJ1ZmZlcik7 DQogCQlpZGVmbG9wcHlfZW5kX3JlcXVlc3QoZHJpdmUsIHJxLCAxKTsNCiAJ fSBlbHNlIHsNCiAJCXByaW50ayAoS0VSTl9FUlIgIkVycm9yIGluIFJFUVVF U1QgU0VOU0UgaXRzZWxmIC0gQWJvcnRpbmcgcmVxdWVzdCFcbiIpOw0KQEAg LTc5MSw3ICs0OTYsNyBAQCBzdGF0aWMgdm9pZCBpZGVmbG9wcHlfcGNfY2Fs bGJhY2soc3RydWN0DQogc3RhdGljIHZvaWQgaWRlZmxvcHB5X2NyZWF0ZV9y ZXF1ZXN0X3NlbnNlX2NtZChzdHJ1Y3QgYXRhcGlfcGFja2V0X2NvbW1hbmQg KnBjKQ0KIHsNCiAJYXRhcGlfaW5pdF9wYyhwYyk7DQotCXBjLT5jWzBdID0g SURFRkxPUFBZX1JFUVVFU1RfU0VOU0VfQ01EOw0KKwlwYy0+Y1swXSA9IEFU QVBJX1JFUVVFU1RfU0VOU0VfQ01EOw0KIAlwYy0+Y1s0XSA9IDI1NTsNCiAJ cGMtPnJlcXVlc3RfdHJhbnNmZXIgPSAxODsNCiAJcGMtPmNhbGxiYWNrID0g JmlkZWZsb3BweV9yZXF1ZXN0X3NlbnNlX2NhbGxiYWNrOw0KQEAgLTgwNiw3 ICs1MTEsNyBAQCBzdGF0aWMgdm9pZCBpZGVmbG9wcHlfcmV0cnlfcGMoc3Ry dWN0IGF0DQogew0KIAlzdHJ1Y3QgYXRhcGlfcGFja2V0X2NvbW1hbmQgKnBj Ow0KIAlzdHJ1Y3QgcmVxdWVzdCAqcnE7DQotCWlkZWZsb3BweV9lcnJvcl9y ZWdfdCBlcnJvcjsNCisJYXRhcGlfZXJyb3JfcmVnX3QgZXJyb3I7DQogDQog CWVycm9yLmFsbCA9IElOX0JZVEUoSURFX0VSUk9SX1JFRyk7DQogCXBjID0g aWRlZmxvcHB5X25leHRfcGNfc3RvcmFnZShkcml2ZSk7DQpAQCAtODI0LDkg KzUyOSw5IEBAIHN0YXRpYyBpZGVfc3RhcnRzdG9wX3QgaWRlZmxvcHB5X3Bj X2ludHINCiAJdW5zaWduZWQgbG9uZyBmbGFnczsNCiAJc3RydWN0IGF0YV9j aGFubmVsICpjaCA9IGRyaXZlLT5jaGFubmVsOw0KIAlpZGVmbG9wcHlfZmxv cHB5X3QgKmZsb3BweSA9IGRyaXZlLT5kcml2ZXJfZGF0YTsNCi0JaWRlZmxv cHB5X3N0YXR1c19yZWdfdCBzdGF0dXM7DQotCWlkZWZsb3BweV9iY291bnRf cmVnX3QgYmNvdW50Ow0KLQlpZGVmbG9wcHlfaXJlYXNvbl9yZWdfdCBpcmVh c29uOw0KKwlhdGFwaV9zdGF0dXNfcmVnX3Qgc3RhdHVzOw0KKwlhdGFwaV9i Y291bnRfcmVnX3QgYmNvdW50Ow0KKwlhdGFwaV9pcmVhc29uX3JlZ190IGly ZWFzb247DQogCXN0cnVjdCBhdGFwaV9wYWNrZXRfY29tbWFuZCAqcGMgPSBm bG9wcHktPnBjOw0KIAl1bnNpZ25lZCBpbnQgdGVtcDsNCiANCkBAIC04NjQs NyArNTY5LDcgQEAgc3RhdGljIGlkZV9zdGFydHN0b3BfdCBpZGVmbG9wcHlf cGNfaW50cg0KIAkJCXByaW50ayAoS0VSTl9JTkZPICJpZGUtZmxvcHB5OiAl czogSS9PIGVycm9yXG4iLGRyaXZlLT5uYW1lKTsNCiAjZW5kaWYNCiAJCQly cS0+ZXJyb3JzKys7DQotCQkJaWYgKHBjLT5jWzBdID09IElERUZMT1BQWV9S RVFVRVNUX1NFTlNFX0NNRCkgew0KKwkJCWlmIChwYy0+Y1swXSA9PSBBVEFQ SV9SRVFVRVNUX1NFTlNFX0NNRCkgew0KIAkJCQlwcmludGsgKEtFUk5fRVJS ICJpZGUtZmxvcHB5OiBJL08gZXJyb3IgaW4gcmVxdWVzdCBzZW5zZSBjb21t YW5kXG4iKTsNCiAJCQkJcmV0dXJuIGlkZV9zdG9wcGVkOw0KIAkJCX0NCkBA IC05NTUsNyArNjYwLDcgQEAgc3RhdGljIGlkZV9zdGFydHN0b3BfdCBpZGVm bG9wcHlfdHJhbnNmZQ0KIAlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoID0gZHJp dmUtPmNoYW5uZWw7DQogCWlkZV9zdGFydHN0b3BfdCBzdGFydHN0b3A7DQog CWlkZWZsb3BweV9mbG9wcHlfdCAqZmxvcHB5ID0gZHJpdmUtPmRyaXZlcl9k YXRhOw0KLQlpZGVmbG9wcHlfaXJlYXNvbl9yZWdfdCBpcmVhc29uOw0KKwlh dGFwaV9pcmVhc29uX3JlZ190IGlyZWFzb247DQogCWludCByZXQ7DQogDQog CS8qIEZJWE1FOiBNb3ZlIHRoaXMgbG9jayB1cHdhcmRzLg0KQEAgLTEwMTAs NyArNzE1LDcgQEAgc3RhdGljIGlkZV9zdGFydHN0b3BfdCBpZGVmbG9wcHlf dHJhbnNmZQ0KIAlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoID0gZHJpdmUtPmNo YW5uZWw7DQogCWlkZWZsb3BweV9mbG9wcHlfdCAqZmxvcHB5ID0gZHJpdmUt PmRyaXZlcl9kYXRhOw0KIAlpZGVfc3RhcnRzdG9wX3Qgc3RhcnRzdG9wOw0K LQlpZGVmbG9wcHlfaXJlYXNvbl9yZWdfdCBpcmVhc29uOw0KKwlhdGFwaV9p cmVhc29uX3JlZ190IGlyZWFzb247DQogCWludCByZXQ7DQogDQogCWlmIChh dGFfc3RhdHVzX3BvbGwoZHJpdmUsIERSUV9TVEFULCBCVVNZX1NUQVQsDQpA QCAtMTA1NywxNyArNzYyLDE3IEBAIHN0YXRpYyBpZGVfc3RhcnRzdG9wX3Qg aWRlZmxvcHB5X2lzc3VlX3ANCiAJCXN0cnVjdCBhdGFwaV9wYWNrZXRfY29t bWFuZCAqcGMpDQogew0KIAlpZGVmbG9wcHlfZmxvcHB5X3QgKmZsb3BweSA9 IGRyaXZlLT5kcml2ZXJfZGF0YTsNCi0JaWRlZmxvcHB5X2Jjb3VudF9yZWdf dCBiY291bnQ7DQorCWF0YXBpX2Jjb3VudF9yZWdfdCBiY291bnQ7DQogCWlu dCBkbWFfb2sgPSAwOw0KIAlhdGFfaGFuZGxlcl90ICpwa3RfeGZlcl9yb3V0 aW5lOw0KIA0KICNpZiBJREVGTE9QUFlfREVCVUdfQlVHUw0KLQlpZiAoZmxv cHB5LT5wYy0+Y1swXSA9PSBJREVGTE9QUFlfUkVRVUVTVF9TRU5TRV9DTUQg JiYgcGMtPmNbMF0gPT0gSURFRkxPUFBZX1JFUVVFU1RfU0VOU0VfQ01EKSB7 DQorCWlmIChmbG9wcHktPnBjLT5jWzBdID09IEFUQVBJX1JFUVVFU1RfU0VO U0VfQ01EICYmIHBjLT5jWzBdID09IEFUQVBJX1JFUVVFU1RfU0VOU0VfQ01E KSB7DQogCQlwcmludGsoS0VSTl9FUlIgImlkZS1mbG9wcHk6IHBvc3NpYmxl IGlkZS1mbG9wcHkuYyBidWcgLSBUd28gcmVxdWVzdCBzZW5zZSBpbiBzZXJp YWwgd2VyZSBpc3N1ZWRcbiIpOw0KIAl9DQogI2VuZGlmDQogDQotCWlmIChm bG9wcHktPmZhaWxlZF9wYyA9PSBOVUxMICYmIHBjLT5jWzBdICE9IElERUZM T1BQWV9SRVFVRVNUX1NFTlNFX0NNRCkNCisJaWYgKGZsb3BweS0+ZmFpbGVk X3BjID09IE5VTEwgJiYgcGMtPmNbMF0gIT0gQVRBUElfUkVRVUVTVF9TRU5T RV9DTUQpDQogCQlmbG9wcHktPmZhaWxlZF9wYz1wYzsNCiAJZmxvcHB5LT5w Yz1wYzsJCQkJCQkJLyogU2V0IHRoZSBjdXJyZW50IHBhY2tldCBjb21tYW5k ICovDQogDQpAQCAtMTE2Miw3ICs4NjcsNyBAQCBzdGF0aWMgdm9pZCBpZGVm bG9wcHlfY3JlYXRlX3ByZXZlbnRfY21kDQogI2VuZGlmDQogDQogCWF0YXBp X2luaXRfcGMgKHBjKTsNCi0JcGMtPmNbMF0gPSBJREVGTE9QUFlfUFJFVkVO VF9SRU1PVkFMX0NNRDsNCisJcGMtPmNbMF0gPSBBVEFQSV9BTExPV19QUkVW RU5UX1JFTU9WQUxfQ01EOw0KIAlwYy0+Y1s0XSA9IHByZXZlbnQ7DQogCXBj LT5jYWxsYmFjayA9IGlkZWZsb3BweV9wY19jYWxsYmFjazsNCiB9DQpAQCAt MTE3MCw3ICs4NzUsNyBAQCBzdGF0aWMgdm9pZCBpZGVmbG9wcHlfY3JlYXRl X3ByZXZlbnRfY21kDQogc3RhdGljIHZvaWQgaWRlZmxvcHB5X2NyZWF0ZV9y ZWFkX2NhcGFjaXR5X2NtZChzdHJ1Y3QgYXRhcGlfcGFja2V0X2NvbW1hbmQg KnBjKQ0KIHsNCiAJYXRhcGlfaW5pdF9wYyhwYyk7DQotCXBjLT5jWzBdID0g SURFRkxPUFBZX1JFQURfQ0FQQUNJVFlfQ01EOw0KKwlwYy0+Y1swXSA9IEFU QVBJX1JFQURfQ0FQQUNJVElFU19DTUQ7DQogCXBjLT5jWzddID0gMjU1Ow0K IAlwYy0+Y1s4XSA9IDI1NTsNCiAJcGMtPnJlcXVlc3RfdHJhbnNmZXIgPSAy NTU7DQpAQCAtMTE4MSw3ICs4ODYsNyBAQCBzdGF0aWMgdm9pZCBpZGVmbG9w cHlfY3JlYXRlX2Zvcm1hdF91bml0DQogCQlpbnQgYiwgaW50IGwsIGludCBm bGFncykNCiB7DQogCWF0YXBpX2luaXRfcGMgKHBjKTsNCi0JcGMtPmNbMF0g PSBJREVGTE9QUFlfRk9STUFUX1VOSVRfQ01EOw0KKwlwYy0+Y1swXSA9IEFU QVBJX0ZPUk1BVF9VTklUX0NNRDsNCiAJcGMtPmNbMV0gPSAweDE3Ow0KIA0K IAltZW1zZXQocGMtPmJ1ZmZlciwgMCwgMTIpOw0KQEAgLTEyMDcsNyArOTEy LDcgQEAgc3RhdGljIHZvaWQgaWRlZmxvcHB5X2NyZWF0ZV9tb2RlX3NlbnNl Xw0KIAl1bnNpZ25lZCBzaG9ydCBsZW5ndGggPSBzaXplb2YoaWRlZmxvcHB5 X21vZGVfcGFyYW1ldGVyX2hlYWRlcl90KTsNCiANCiAJYXRhcGlfaW5pdF9w YyhwYyk7DQotCXBjLT5jWzBdID0gSURFRkxPUFBZX01PREVfU0VOU0VfQ01E Ow0KKwlwYy0+Y1swXSA9IEFUQVBJX01PREVfU0VOU0UxMF9DTUQ7DQogCXBj LT5jWzFdID0gMDsNCiAJcGMtPmNbMl0gPSBwYWdlX2NvZGUgKyAodHlwZSA8 PCA2KTsNCiANCkBAIC0xMjI5LDcgKzkzNCw3IEBAIHN0YXRpYyB2b2lkIGlk ZWZsb3BweV9jcmVhdGVfbW9kZV9zZW5zZV8NCiBzdGF0aWMgdm9pZCBpZGVm bG9wcHlfY3JlYXRlX3N0YXJ0X3N0b3BfY21kKHN0cnVjdCBhdGFwaV9wYWNr ZXRfY29tbWFuZCAqcGMsIGludCBzdGFydCkNCiB7DQogCWF0YXBpX2luaXRf cGMocGMpOw0KLQlwYy0+Y1swXSA9IElERUZMT1BQWV9TVEFSVF9TVE9QX0NN RDsNCisJcGMtPmNbMF0gPSBBVEFQSV9TVEFSVF9TVE9QX0NNRDsNCiAJcGMt PmNbNF0gPSBzdGFydDsNCiAJcGMtPmNhbGxiYWNrID0gaWRlZmxvcHB5X3Bj X2NhbGxiYWNrOw0KIH0NCkBAIC0xMjM3LDcgKzk0Miw3IEBAIHN0YXRpYyB2 b2lkIGlkZWZsb3BweV9jcmVhdGVfc3RhcnRfc3RvcF8NCiBzdGF0aWMgdm9p ZCBpZGVmbG9wcHlfY3JlYXRlX3Rlc3RfdW5pdF9yZWFkeV9jbWQoc3RydWN0 IGF0YXBpX3BhY2tldF9jb21tYW5kICpwYykNCiB7DQogCWF0YXBpX2luaXRf cGMocGMpOw0KLQlwYy0+Y1swXSA9IElERUZMT1BQWV9URVNUX1VOSVRfUkVB RFlfQ01EOw0KKwlwYy0+Y1swXSA9IEFUQVBJX1RFU1RfVU5JVF9SRUFEWV9D TUQ7DQogCXBjLT5jYWxsYmFjayA9IGlkZWZsb3BweV9wY19jYWxsYmFjazsN CiB9DQogDQpAQCAtMTI1NSwxMCArOTYwLDEwIEBAIHN0YXRpYyB2b2lkIGlk ZWZsb3BweV9jcmVhdGVfcndfY21kKGlkZWYNCiANCiAJYXRhcGlfaW5pdF9w YyhwYyk7DQogCWlmICh0ZXN0X2JpdCAoSURFRkxPUFBZX1VTRV9SRUFEMTIs ICZmbG9wcHktPmZsYWdzKSkgew0KLQkJcGMtPmNbMF0gPSBjbWQgPT0gUkVB RCA/IElERUZMT1BQWV9SRUFEMTJfQ01EIDogSURFRkxPUFBZX1dSSVRFMTJf Q01EOw0KKwkJcGMtPmNbMF0gPSBjbWQgPT0gUkVBRCA/IEFUQVBJX1JFQUQx Ml9DTUQgOiBBVEFQSV9XUklURTEyX0NNRDsNCiAJCXB1dF91bmFsaWduZWQo aHRvbmwgKGJsb2NrcyksICh1bnNpZ25lZCBpbnQgKikgJnBjLT5jWzZdKTsN CiAJfSBlbHNlIHsNCi0JCXBjLT5jWzBdID0gY21kID09IFJFQUQgPyBJREVG TE9QUFlfUkVBRDEwX0NNRCA6IElERUZMT1BQWV9XUklURTEwX0NNRDsNCisJ CXBjLT5jWzBdID0gY21kID09IFJFQUQgPyBBVEFQSV9SRUFEMTBfQ01EIDog QVRBUElfV1JJVEUxMF9DTUQ7DQogCQlwdXRfdW5hbGlnbmVkKGh0b25zIChi bG9ja3MpLCAodW5zaWduZWQgc2hvcnQgKikgJnBjLT5jWzddKTsNCiAJfQ0K IAlwdXRfdW5hbGlnbmVkKGh0b25sKGJsb2NrKSwgKHVuc2lnbmVkIGludCAq KSAmcGMtPmNbMl0pOw0KQEAgLTE2NTUsNyArMTM2MCw3IEBAIHN0YXRpYyBp bnQgaWRlZmxvcHB5X2dldF9mb3JtYXRfcHJvZ3Jlc3MNCiAJfQ0KIAllbHNl DQogCXsNCi0JCWlkZWZsb3BweV9zdGF0dXNfcmVnX3Qgc3RhdHVzOw0KKwkJ YXRhcGlfc3RhdHVzX3JlZ190IHN0YXR1czsNCiAJCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7DQogDQogCQlfX3NhdmVfZmxhZ3MoZmxhZ3MpOw0KQEAgLTE4NjEs NyArMTU2Niw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlkZWZsb3BweV9j YXBhY2l0eSgNCiAgKi8NCiBzdGF0aWMgaW50IGlkZWZsb3BweV9pZGVudGlm eV9kZXZpY2Uoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlLHN0cnVjdCBoZF9k cml2ZWlkICppZCkNCiB7DQotCXN0cnVjdCBpZGVmbG9wcHlfaWRfZ2N3IGdj dzsNCisJc3RydWN0IGF0YXBpX2lkX2djdyBnY3c7DQogI2lmIElERUZMT1BQ WV9ERUJVR19JTkZPDQogCXVuc2lnbmVkIHNob3J0IG1hc2ssaTsNCiAJY2hh ciBidWZmZXJbODBdOw0KQEAgLTE5NzYsNyArMTY4MSw3IEBAIHN0YXRpYyBp bnQgaWRlZmxvcHB5X2lkZW50aWZ5X2RldmljZShzdHINCiAgKi8NCiBzdGF0 aWMgdm9pZCBpZGVmbG9wcHlfc2V0dXAoc3RydWN0IGF0YV9kZXZpY2UgKmRy aXZlLCBpZGVmbG9wcHlfZmxvcHB5X3QgKmZsb3BweSkNCiB7DQotCXN0cnVj dCBpZGVmbG9wcHlfaWRfZ2N3IGdjdzsNCisJc3RydWN0IGF0YXBpX2lkX2dj dyBnY3c7DQogCWludCBpOw0KIA0KIAkqKCh1bnNpZ25lZCBzaG9ydCAqKSAm Z2N3KSA9IGRyaXZlLT5pZC0+Y29uZmlnOw0KLS0tIGxpbnV4LTIuNS4yMi9k cml2ZXJzL2lkZS9pZGUtdGFwZS5jCVR1ZSBKdW4gMTggMDA6Mjk6MDIgMjAw Mg0KKysrIGxpbnV4L2RyaXZlcnMvaWRlL2lkZS10YXBlLmMJVHVlIEp1biAx OCAyMzo1Mjo0MiAyMDAyDQpAQCAtNzcxLDMyICs3NzEsNiBAQA0KIH0gaWRl dGFwZV9zdGFnZV90Ow0KIA0KIC8qDQotICoJUkVRVUVTVCBTRU5TRSBwYWNr ZXQgY29tbWFuZCByZXN1bHQgLSBEYXRhIEZvcm1hdC4NCi0gKi8NCi10eXBl ZGVmIHN0cnVjdCB7DQotCXVuc2lnbmVkCWVycm9yX2NvZGUJOjc7CS8qIEN1 cnJlbnQgb2YgZGVmZXJyZWQgZXJyb3JzICovDQotCXVuc2lnbmVkCXZhbGlk CQk6MTsJLyogVGhlIGluZm9ybWF0aW9uIGZpZWxkIGNvbmZvcm1zIHRvIFFJ Qy0xNTdDICovDQotCV9fdTgJCXJlc2VydmVkMQk6ODsJLyogU2VnbWVudCBO dW1iZXIgLSBSZXNlcnZlZCAqLw0KLQl1bnNpZ25lZAlzZW5zZV9rZXkJOjQ7 CS8qIFNlbnNlIEtleSAqLw0KLQl1bnNpZ25lZAlyZXNlcnZlZDJfNAk6MTsJ LyogUmVzZXJ2ZWQgKi8NCi0JdW5zaWduZWQJaWxpCQk6MTsJLyogSW5jb3Jy ZWN0IExlbmd0aCBJbmRpY2F0b3IgKi8NCi0JdW5zaWduZWQJZW9tCQk6MTsJ LyogRW5kIE9mIE1lZGl1bSAqLw0KLQl1bnNpZ25lZAlmaWxlbWFyayAJOjE7 CS8qIEZpbGVtYXJrICovDQotCV9fdTMyCQlpbmZvcm1hdGlvbiBfX2F0dHJp YnV0ZV9fICgocGFja2VkKSk7DQotCV9fdTgJCWFzbDsJCQkvKiBBZGRpdGlv bmFsIHNlbnNlIGxlbmd0aCAobi03KSAqLw0KLQlfX3UzMgkJY29tbWFuZF9z cGVjaWZpYzsJLyogQWRkaXRpb25hbCBjb21tYW5kIHNwZWNpZmljIGluZm9y bWF0aW9uICovDQotCV9fdTgJCWFzYzsJCQkvKiBBZGRpdGlvbmFsIFNlbnNl IENvZGUgKi8NCi0JX191OAkJYXNjcTsJCQkvKiBBZGRpdGlvbmFsIFNlbnNl IENvZGUgUXVhbGlmaWVyICovDQotCV9fdTgJCXJlcGxhY2VhYmxlX3VuaXRf Y29kZTsJLyogRmllbGQgUmVwbGFjZWFibGUgVW5pdCBDb2RlICovDQotCXVu c2lnbmVkCXNrX3NwZWNpZmljMSAJOjc7CS8qIFNlbnNlIEtleSBTcGVjaWZp YyAqLw0KLQl1bnNpZ25lZAlza3N2CQk6MTsJLyogU2Vuc2UgS2V5IFNwZWNp ZmljIGluZm9ybWF0aW9uIGlzIHZhbGlkICovDQotCV9fdTgJCXNrX3NwZWNp ZmljMjsJCS8qIFNlbnNlIEtleSBTcGVjaWZpYyAqLw0KLQlfX3U4CQlza19z cGVjaWZpYzM7CQkvKiBTZW5zZSBLZXkgU3BlY2lmaWMgKi8NCi0JX191OAkJ cGFkWzJdOwkJCS8qIFBhZGRpbmcgdG8gMjAgYnl0ZXMgKi8NCi19IGlkZXRh cGVfcmVxdWVzdF9zZW5zZV9yZXN1bHRfdDsNCi0NCi0NCi0vKg0KICAqCU1v c3Qgb2Ygb3VyIGdsb2JhbCBkYXRhIHdoaWNoIHdlIG5lZWQgdG8gc2F2ZSBl dmVuIGFzIHdlIGxlYXZlIHRoZQ0KICAqCWRyaXZlciBkdWUgdG8gYW4gaW50 ZXJydXB0IG9yIGEgdGltZXIgZXZlbnQgaXMgc3RvcmVkIGluIGEgdmFyaWFi bGUNCiAgKglvZiB0eXBlIGlkZXRhcGVfdGFwZV90LCBkZWZpbmVkIGJlbG93 Lg0KQEAgLTkyMCw3ICs4OTQsNyBAQA0KIAlpbnQgYXZnX3NpemU7DQogCWlu dCBhdmdfc3BlZWQ7DQogDQotCWlkZXRhcGVfcmVxdWVzdF9zZW5zZV9yZXN1 bHRfdCBzZW5zZTsJLyogbGFzdCBzZW5zZSBpbmZvcm1hdGlvbiAqLw0KKwlh dGFwaV9yZXF1ZXN0X3NlbnNlX3Jlc3VsdF90IHNlbnNlOwkvKiBsYXN0IHNl bnNlIGluZm9ybWF0aW9uICovDQogDQogCWNoYXIgdmVuZG9yX2lkWzEwXTsN CiAJY2hhciBwcm9kdWN0X2lkWzE4XTsNCkBAIC0xMDQ0LDE5ICsxMDE4LDE1 IEBADQogLyoNCiAgKglTdXBwb3J0ZWQgQVRBUEkgdGFwZSBkcml2ZXMgcGFj a2V0IGNvbW1hbmRzDQogICovDQotI2RlZmluZSBJREVUQVBFX1RFU1RfVU5J VF9SRUFEWV9DTUQJMHgwMA0KICNkZWZpbmUgSURFVEFQRV9SRVdJTkRfQ01E CQkweDAxDQotI2RlZmluZSBJREVUQVBFX1JFUVVFU1RfU0VOU0VfQ01ECTB4 MDMNCiAjZGVmaW5lIElERVRBUEVfUkVBRF9DTUQJCTB4MDgNCiAjZGVmaW5l IElERVRBUEVfV1JJVEVfQ01ECQkweDBhDQogI2RlZmluZSBJREVUQVBFX1dS SVRFX0ZJTEVNQVJLX0NNRAkweDEwDQogI2RlZmluZSBJREVUQVBFX1NQQUNF X0NNRAkJMHgxMQ0KLSNkZWZpbmUgSURFVEFQRV9JTlFVSVJZX0NNRAkJMHgx Mg0KICNkZWZpbmUgSURFVEFQRV9FUkFTRV9DTUQJCTB4MTkNCiAjZGVmaW5l IElERVRBUEVfTU9ERV9TRU5TRV9DTUQJCTB4MWENCiAjZGVmaW5lIElERVRB UEVfTU9ERV9TRUxFQ1RfQ01ECQkweDE1DQogI2RlZmluZSBJREVUQVBFX0xP QURfVU5MT0FEX0NNRAkJMHgxYg0KLSNkZWZpbmUgSURFVEFQRV9QUkVWRU5U X0NNRAkJMHgxZQ0KICNkZWZpbmUgSURFVEFQRV9MT0NBVEVfQ01ECQkweDJi DQogI2RlZmluZSBJREVUQVBFX1JFQURfUE9TSVRJT05fQ01ECTB4MzQNCiAj ZGVmaW5lIElERVRBUEVfUkVBRF9CVUZGRVJfQ01ECQkweDNjDQpAQCAtMTEy NCwxMDEgKzEwOTQsNiBAQA0KICNkZWZpbmUJSURFVEFQRV9FUlJPUl9FT0QJ CTEwMw0KIA0KIC8qDQotICoJVGhlIEFUQVBJIFN0YXR1cyBSZWdpc3Rlci4N Ci0gKi8NCi10eXBlZGVmIHVuaW9uIHsNCi0JdW5zaWduZWQgYWxsCQkJOjg7 DQotCXN0cnVjdCB7DQotCQl1bnNpZ25lZCBjaGVjawkJOjE7CS8qIEVycm9y IG9jY3VycmVkICovDQotCQl1bnNpZ25lZCBpZHgJCToxOwkvKiBSZXNlcnZl ZCAqLw0KLQkJdW5zaWduZWQgY29ycgkJOjE7CS8qIENvcnJlY3RhYmxlIGVy cm9yIG9jY3VycmVkICovDQotCQl1bnNpZ25lZCBkcnEJCToxOwkvKiBEYXRh IGlzIHJlcXVlc3QgYnkgdGhlIGRldmljZSAqLw0KLQkJdW5zaWduZWQgZHNj CQk6MTsJLyogQnVmZmVyIGF2YWlsYWJpbGl0eSAvIE1lZGlhIGFjY2VzcyBj b21tYW5kIGZpbmlzaGVkICovDQotCQl1bnNpZ25lZCByZXNlcnZlZDUJOjE7 CS8qIFJlc2VydmVkICovDQotCQl1bnNpZ25lZCBkcmR5CQk6MTsJLyogSWdu b3JlZCBmb3IgQVRBUEkgY29tbWFuZHMgKHJlYWR5IHRvIGFjY2VwdCBBVEEg Y29tbWFuZCkgKi8NCi0JCXVuc2lnbmVkIGJzeQkJOjE7CS8qIFRoZSBkZXZp Y2UgaGFzIGFjY2VzcyB0byB0aGUgY29tbWFuZCBibG9jayAqLw0KLQl9IGI7 DQotfSBpZGV0YXBlX3N0YXR1c19yZWdfdDsNCi0NCi0vKg0KLSAqCVRoZSBB VEFQSSBlcnJvciByZWdpc3Rlci4NCi0gKi8NCi10eXBlZGVmIHVuaW9uIHsN Ci0JdW5zaWduZWQgYWxsCQkJOjg7DQotCXN0cnVjdCB7DQotCQl1bnNpZ25l ZCBpbGkJCToxOwkvKiBJbGxlZ2FsIExlbmd0aCBJbmRpY2F0aW9uICovDQot CQl1bnNpZ25lZCBlb20JCToxOwkvKiBFbmQgT2YgTWVkaWEgRGV0ZWN0ZWQg Ki8NCi0JCXVuc2lnbmVkIGFicnQJCToxOwkvKiBBYm9ydGVkIGNvbW1hbmQg LSBBcyBkZWZpbmVkIGJ5IEFUQSAqLw0KLQkJdW5zaWduZWQgbWNyCQk6MTsJ LyogTWVkaWEgQ2hhbmdlIFJlcXVlc3RlZCAtIEFzIGRlZmluZWQgYnkgQVRB ICovDQotCQl1bnNpZ25lZCBzZW5zZV9rZXkJOjQ7CS8qIFNlbnNlIGtleSBv ZiB0aGUgbGFzdCBmYWlsZWQgcGFja2V0IGNvbW1hbmQgKi8NCi0JfSBiOw0K LX0gaWRldGFwZV9lcnJvcl9yZWdfdDsNCi0NCi0vKg0KLSAqCUFUQVBJIEZl YXR1cmUgUmVnaXN0ZXINCi0gKi8NCi10eXBlZGVmIHVuaW9uIHsNCi0JdW5z aWduZWQgYWxsCQkJOjg7DQotCXN0cnVjdCB7DQotCQl1bnNpZ25lZCBkbWEJ CToxOwkvKiBVc2luZyBETUEgb3IgUElPICovDQotCQl1bnNpZ25lZCByZXNl cnZlZDMyMQk6MzsJLyogUmVzZXJ2ZWQgKi8NCi0JCXVuc2lnbmVkIHJlc2Vy dmVkNjU0CTozOwkvKiBSZXNlcnZlZCAoVGFnIFR5cGUpICovDQotCQl1bnNp Z25lZCByZXNlcnZlZDcJOjE7CS8qIFJlc2VydmVkICovDQotCX0gYjsNCi19 IGlkZXRhcGVfZmVhdHVyZV9yZWdfdDsNCi0NCi0vKg0KLSAqCUFUQVBJIEJ5 dGUgQ291bnQgUmVnaXN0ZXIuDQotICovDQotdHlwZWRlZiB1bmlvbiB7DQot CXVuc2lnbmVkIGFsbAkJCToxNjsNCi0Jc3RydWN0IHsNCi0JCXVuc2lnbmVk IGxvdwkJOjg7CS8qIExTQiAqLw0KLQkJdW5zaWduZWQgaGlnaAkJOjg7CS8q IE1TQiAqLw0KLQl9IGI7DQotfSBpZGV0YXBlX2Jjb3VudF9yZWdfdDsNCi0N Ci0vKg0KLSAqCUFUQVBJIEludGVycnVwdCBSZWFzb24gUmVnaXN0ZXIuDQot ICovDQotdHlwZWRlZiB1bmlvbiB7DQotCXVuc2lnbmVkIGFsbAkJCTo4Ow0K LQlzdHJ1Y3Qgew0KLQkJdW5zaWduZWQgY29kCQk6MTsJLyogSW5mb3JtYXRp b24gdHJhbnNmZXJyZWQgaXMgY29tbWFuZCAoMSkgb3IgZGF0YSAoMCkgKi8N Ci0JCXVuc2lnbmVkIGlvCQk6MTsJLyogVGhlIGRldmljZSByZXF1ZXN0cyB1 cyB0byByZWFkICgxKSBvciB3cml0ZSAoMCkgKi8NCi0JCXVuc2lnbmVkIHJl c2VydmVkCTo2OwkvKiBSZXNlcnZlZCAqLw0KLQl9IGI7DQotfSBpZGV0YXBl X2lyZWFzb25fcmVnX3Q7DQotDQotLyoNCi0gKglBVEFQSSBEcml2ZSBTZWxl Y3QgUmVnaXN0ZXINCi0gKi8NCi10eXBlZGVmIHVuaW9uIHsJDQotCXVuc2ln bmVkIGFsbAkJCTo4Ow0KLQlzdHJ1Y3Qgew0KLQkJdW5zaWduZWQgc2FtX2x1 bgk6NDsJLyogU2hvdWxkIGJlIHplcm8gd2l0aCBBVEFQSSAobm90IHVzZWQp ICovDQotCQl1bnNpZ25lZCBkcnYJCToxOwkvKiBUaGUgcmVzcG9uZGluZyBk cml2ZSB3aWxsIGJlIGRyaXZlIDAgKDApIG9yIGRyaXZlIDEgKDEpICovDQot CQl1bnNpZ25lZCBvbmU1CQk6MTsJLyogU2hvdWxkIGJlIHNldCB0byAxICov DQotCQl1bnNpZ25lZCByZXNlcnZlZDYJOjE7CS8qIFJlc2VydmVkICovDQot CQl1bnNpZ25lZCBvbmU3CQk6MTsJLyogU2hvdWxkIGJlIHNldCB0byAxICov DQotCX0gYjsNCi19IGlkZXRhcGVfZHJpdmVzZWxfcmVnX3Q7DQotDQotLyoN Ci0gKglBVEFQSSBEZXZpY2UgQ29udHJvbCBSZWdpc3Rlcg0KLSAqLw0KLXR5 cGVkZWYgdW5pb24gew0KLQl1bnNpZ25lZCBhbGwJCQk6ODsNCi0Jc3RydWN0 IHsNCi0JCXVuc2lnbmVkIHplcm8wCQk6MTsJLyogU2hvdWxkIGJlIHNldCB0 byB6ZXJvICovDQotCQl1bnNpZ25lZCBuaWVuCQk6MTsJLyogRGV2aWNlIGlu dGVycnVwdCBpcyBkaXNhYmxlZCAoMSkgb3IgZW5hYmxlZCAoMCkgKi8NCi0J CXVuc2lnbmVkIHNyc3QJCToxOwkvKiBBVEEgc29mdHdhcmUgcmVzZXQuIEFU QVBJIGRldmljZXMgc2hvdWxkIHVzZSB0aGUgbmV3IEFUQVBJIHNyc3QuICov DQotCQl1bnNpZ25lZCBvbmUzCQk6MTsJLyogU2hvdWxkIGJlIHNldCB0byAx ICovDQotCQl1bnNpZ25lZCByZXNlcnZlZDQ1NjcJOjQ7CS8qIFJlc2VydmVk ICovDQotCX0gYjsNCi19IGlkZXRhcGVfY29udHJvbF9yZWdfdDsNCi0NCi0v Kg0KICAqCWlkZXRhcGVfY2hyZGV2X3QgcHJvdmlkZXMgdGhlIGxpbmsgYmV0 d2VlbiBvdXQgY2hhcmFjdGVyIGRldmljZQ0KICAqCWludGVyZmFjZSBhbmQg b3VyIGJsb2NrIGRldmljZSBpbnRlcmZhY2UgYW5kIHRoZSBjb3JyZXNwb25k aW5nDQogICoJYXRhX2RldmljZSBzdHJ1Y3R1cmUuDQpAQCAtMTIyOCw0NSAr MTEwMyw2IEBADQogfSBpZGV0YXBlX2NocmRldl90Ow0KIA0KIC8qDQotICoJ VGhlIGZvbGxvd2luZyBpcyB1c2VkIHRvIGZvcm1hdCB0aGUgZ2VuZXJhbCBj b25maWd1cmF0aW9uIHdvcmQgb2YNCi0gKgl0aGUgQVRBUEkgSURFTlRJRlkg REVWSUNFIGNvbW1hbmQuDQotICovDQotc3RydWN0IGlkZXRhcGVfaWRfZ2N3 IHsJDQotCXVuc2lnbmVkIHBhY2tldF9zaXplCQk6MjsJLyogUGFja2V0IFNp emUgKi8NCi0JdW5zaWduZWQgcmVzZXJ2ZWQyMzQJCTozOwkvKiBSZXNlcnZl ZCAqLw0KLQl1bnNpZ25lZCBkcnFfdHlwZQkJOjI7CS8qIENvbW1hbmQgcGFj a2V0IERSUSB0eXBlICovDQotCXVuc2lnbmVkIHJlbW92YWJsZQkJOjE7CS8q IFJlbW92YWJsZSBtZWRpYSAqLw0KLQl1bnNpZ25lZCBkZXZpY2VfdHlwZQkJ OjU7CS8qIERldmljZSB0eXBlICovDQotCXVuc2lnbmVkIHJlc2VydmVkMTMJ CToxOwkvKiBSZXNlcnZlZCAqLw0KLQl1bnNpZ25lZCBwcm90b2NvbAkJOjI7 CS8qIFByb3RvY29sIHR5cGUgKi8NCi19Ow0KLQ0KLS8qDQotICoJSU5RVUlS WSBwYWNrZXQgY29tbWFuZCAtIERhdGEgRm9ybWF0IChGcm9tIFRhYmxlIDYt OCBvZiBRSUMtMTU3QykNCi0gKi8NCi10eXBlZGVmIHN0cnVjdCB7DQotCXVu c2lnbmVkCWRldmljZV90eXBlCTo1OwkvKiBQZXJpcGhlcmFsIERldmljZSBU eXBlICovDQotCXVuc2lnbmVkCXJlc2VydmVkMF83NjUJOjM7CS8qIFBlcmlw aGVyYWwgUXVhbGlmaWVyIC0gUmVzZXJ2ZWQgKi8NCi0JdW5zaWduZWQJcmVz ZXJ2ZWQxXzZ0MAk6NzsJLyogUmVzZXJ2ZWQgKi8NCi0JdW5zaWduZWQJcm1i CQk6MTsJLyogUmVtb3ZhYmxlIE1lZGl1bSBCaXQgKi8NCi0JdW5zaWduZWQJ YW5zaV92ZXJzaW9uCTozOwkvKiBBTlNJIFZlcnNpb24gKi8NCi0JdW5zaWdu ZWQJZWNtYV92ZXJzaW9uCTozOwkvKiBFQ01BIFZlcnNpb24gKi8NCi0JdW5z aWduZWQJaXNvX3ZlcnNpb24JOjI7CS8qIElTTyBWZXJzaW9uICovDQotCXVu c2lnbmVkCXJlc3BvbnNlX2Zvcm1hdCA6NDsJLyogUmVzcG9uc2UgRGF0YSBG b3JtYXQgKi8NCi0JdW5zaWduZWQJcmVzZXJ2ZWQzXzQ1CToyOwkvKiBSZXNl cnZlZCAqLw0KLQl1bnNpZ25lZAlyZXNlcnZlZDNfNgk6MTsJLyogVHJtSU9Q IC0gUmVzZXJ2ZWQgKi8NCi0JdW5zaWduZWQJcmVzZXJ2ZWQzXzcJOjE7CS8q IEFFTkMgLSBSZXNlcnZlZCAqLw0KLQlfX3U4CQlhZGRpdGlvbmFsX2xlbmd0 aDsJLyogQWRkaXRpb25hbCBMZW5ndGggKHRvdGFsX2xlbmd0aC00KSAqLw0K LQlfX3U4CQlyc3Y1LCByc3Y2LCByc3Y3OwkvKiBSZXNlcnZlZCAqLw0KLQlf X3U4CQl2ZW5kb3JfaWRbOF07CQkvKiBWZW5kb3IgSWRlbnRpZmljYXRpb24g Ki8NCi0JX191OAkJcHJvZHVjdF9pZFsxNl07CQkvKiBQcm9kdWN0IElkZW50 aWZpY2F0aW9uICovDQotCV9fdTgJCXJldmlzaW9uX2xldmVsWzRdOwkvKiBS ZXZpc2lvbiBMZXZlbCAqLw0KLQlfX3U4CQl2ZW5kb3Jfc3BlY2lmaWNbMjBd OwkvKiBWZW5kb3IgU3BlY2lmaWMgLSBPcHRpb25hbCAqLw0KLQlfX3U4CQly ZXNlcnZlZDU2dDk1WzQwXTsJLyogUmVzZXJ2ZWQgLSBPcHRpb25hbCAqLw0K LQkJCQkJCS8qIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gbWF5IGJlIHJldHVy bmVkICovDQotfSBpZGV0YXBlX2lucXVpcnlfcmVzdWx0X3Q7DQotDQotLyoN CiAgKglSRUFEIFBPU0lUSU9OIHBhY2tldCBjb21tYW5kIC0gRGF0YSBGb3Jt YXQgKEZyb20gVGFibGUgNi01NykNCiAgKi8NCiB0eXBlZGVmIHN0cnVjdCB7 DQpAQCAtMTQwNywxOSArMTI0MywxOSBAQCBjaGFyICppZGV0YXBlX3NlbnNl X2tleV92ZXJib3NlIChieXRlIGlkDQogY2hhciAqaWRldGFwZV9jb21tYW5k X2tleV92ZXJib3NlIChieXRlIGlkZXRhcGVfY29tbWFuZF9rZXkpDQogew0K IAlzd2l0Y2ggKGlkZXRhcGVfY29tbWFuZF9rZXkpIHsNCi0JCWNhc2UgSURF VEFQRV9URVNUX1VOSVRfUkVBRFlfQ01EOglyZXR1cm4oIlRFU1RfVU5JVF9S RUFEWV9DTUQiKTsNCisJCWNhc2UgQVRBUElfVEVTVF9VTklUX1JFQURZX0NN RDoJCXJldHVybigiVEVTVF9VTklUX1JFQURZX0NNRCIpOw0KIAkJY2FzZSBJ REVUQVBFX1JFV0lORF9DTUQ6CQlyZXR1cm4oIlJFV0lORF9DTUQiKTsNCi0J CWNhc2UgSURFVEFQRV9SRVFVRVNUX1NFTlNFX0NNRDoJCXJldHVybigiUkVR VUVTVF9TRU5TRV9DTUQiKTsNCisJCWNhc2UgQVRBUElfUkVRVUVTVF9TRU5T RV9DTUQ6CQlyZXR1cm4oIlJFUVVFU1RfU0VOU0VfQ01EIik7DQogCQljYXNl IElERVRBUEVfUkVBRF9DTUQ6CQkJcmV0dXJuKCJSRUFEX0NNRCIpOw0KIAkJ Y2FzZSBJREVUQVBFX1dSSVRFX0NNRDoJCQlyZXR1cm4oIldSSVRFX0NNRCIp Ow0KIAkJY2FzZSBJREVUQVBFX1dSSVRFX0ZJTEVNQVJLX0NNRDoJcmV0dXJu KCJXUklURV9GSUxFTUFSS19DTUQiKTsNCiAJCWNhc2UgSURFVEFQRV9TUEFD RV9DTUQ6CQkJcmV0dXJuKCJTUEFDRV9DTUQiKTsNCi0JCWNhc2UgSURFVEFQ RV9JTlFVSVJZX0NNRDoJCXJldHVybigiSU5RVUlSWV9DTUQiKTsNCisJCWNh c2UgQVRBUElfSU5RVUlSWV9DTUQ6CQkJcmV0dXJuKCJJTlFVSVJZX0NNRCIp Ow0KIAkJY2FzZSBJREVUQVBFX0VSQVNFX0NNRDoJCQlyZXR1cm4oIkVSQVNF X0NNRCIpOw0KIAkJY2FzZSBJREVUQVBFX01PREVfU0VOU0VfQ01EOgkJcmV0 dXJuKCJNT0RFX1NFTlNFX0NNRCIpOw0KIAkJY2FzZSBJREVUQVBFX01PREVf U0VMRUNUX0NNRDoJCXJldHVybigiTU9ERV9TRUxFQ1RfQ01EIik7DQogCQlj YXNlIElERVRBUEVfTE9BRF9VTkxPQURfQ01EOgkJcmV0dXJuKCJMT0FEX1VO TE9BRF9DTUQiKTsNCi0JCWNhc2UgSURFVEFQRV9QUkVWRU5UX0NNRDoJCXJl dHVybigiUFJFVkVOVF9DTUQiKTsNCisJCWNhc2UgQVRBUElfQUxMT1dfUFJF VkVOVF9SRU1PVkFMX0NNRDoJcmV0dXJuKCJBTExPV19QUkVWRU5UX1JFTU9W QUxfQ01EIik7DQogCQljYXNlIElERVRBUEVfTE9DQVRFX0NNRDoJCXJldHVy bigiTE9DQVRFX0NNRCIpOw0KIAkJY2FzZSBJREVUQVBFX1JFQURfUE9TSVRJ T05fQ01EOgkJcmV0dXJuKCJSRUFEX1BPU0lUSU9OX0NNRCIpOw0KIAkJY2Fz ZSBJREVUQVBFX1JFQURfQlVGRkVSX0NNRDoJCXJldHVybigiUkVBRF9CVUZG RVJfQ01EIik7DQpAQCAtMTU3NCw3ICsxNDEwLDcgQEAgc3RhdGljIHN0cnVj dCByZXF1ZXN0ICppZGV0YXBlX25leHRfcnFfcw0KICAqCXRvIGFuYWx5emUg dGhlIHJlcXVlc3Qgc2Vuc2UuIFdlIGN1cnJlbnRseSBkbyBub3QgdXRpbGl6 ZSB0aGlzDQogICoJaW5mb3JtYXRpb24uDQogICovDQotc3RhdGljIHZvaWQg aWRldGFwZV9hbmFseXplX2Vycm9yKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2 ZSwgaWRldGFwZV9yZXF1ZXN0X3NlbnNlX3Jlc3VsdF90ICpyZXN1bHQpDQor c3RhdGljIHZvaWQgaWRldGFwZV9hbmFseXplX2Vycm9yKHN0cnVjdCBhdGFf ZGV2aWNlICpkcml2ZSwgYXRhcGlfcmVxdWVzdF9zZW5zZV9yZXN1bHRfdCAq cmVzdWx0KQ0KIHsNCiAJaWRldGFwZV90YXBlX3QgKnRhcGUgPSBkcml2ZS0+ ZHJpdmVyX2RhdGE7DQogCXN0cnVjdCBhdGFwaV9wYWNrZXRfY29tbWFuZCAq cGMgPSB0YXBlLT5mYWlsZWRfcGM7DQpAQCAtMTg4Nyw3ICsxNzIzLDcgQEAg c3RhdGljIHZvaWQgaWRldGFwZV9yZXF1ZXN0X3NlbnNlX2NhbGxiYQ0KIAkJ cHJpbnRrIChLRVJOX0lORk8gImlkZS10YXBlOiBSZWFjaGVkIGlkZXRhcGVf cmVxdWVzdF9zZW5zZV9jYWxsYmFja1xuIik7DQogI2VuZGlmDQogCWlmICgh dGFwZS0+cGMtPmVycm9yKSB7DQotCQlpZGV0YXBlX2FuYWx5emVfZXJyb3Ig KGRyaXZlLCAoaWRldGFwZV9yZXF1ZXN0X3NlbnNlX3Jlc3VsdF90ICopIHRh cGUtPnBjLT5idWZmZXIpOw0KKwkJaWRldGFwZV9hbmFseXplX2Vycm9yIChk cml2ZSwgKGF0YXBpX3JlcXVlc3Rfc2Vuc2VfcmVzdWx0X3QgKikgdGFwZS0+ cGMtPmJ1ZmZlcik7DQogCQlpZGV0YXBlX2VuZF9yZXF1ZXN0KGRyaXZlLCBy cSwgMSk7DQogCX0gZWxzZSB7DQogCQlwcmludGsgKEtFUk5fRVJSICJpZGUt dGFwZTogRXJyb3IgaW4gUkVRVUVTVCBTRU5TRSBpdHNlbGYgLSBBYm9ydGlu ZyByZXF1ZXN0IVxuIik7DQpAQCAtMTg5OCw3ICsxNzM0LDcgQEAgc3RhdGlj IHZvaWQgaWRldGFwZV9yZXF1ZXN0X3NlbnNlX2NhbGxiYQ0KIHN0YXRpYyB2 b2lkIGlkZXRhcGVfY3JlYXRlX3JlcXVlc3Rfc2Vuc2VfY21kKHN0cnVjdCBh dGFwaV9wYWNrZXRfY29tbWFuZCAqcGMpDQogew0KIAlhdGFwaV9pbml0X3Bj KHBjKTsNCi0JcGMtPmNbMF0gPSBJREVUQVBFX1JFUVVFU1RfU0VOU0VfQ01E Ow0KKwlwYy0+Y1swXSA9IEFUQVBJX1JFUVVFU1RfU0VOU0VfQ01EOw0KIAlw Yy0+Y1s0XSA9IDIwOw0KIAlwYy0+cmVxdWVzdF90cmFuc2ZlciA9IDE4Ow0K IAlwYy0+Y2FsbGJhY2sgPSAmaWRldGFwZV9yZXF1ZXN0X3NlbnNlX2NhbGxi YWNrOw0KQEAgLTE5NDEsNyArMTc3Nyw3IEBAIHN0YXRpYyB2b2lkIGlkZXRh cGVfcmV0cnlfcGMoc3RydWN0IGF0YV8NCiAJaWRldGFwZV90YXBlX3QgKnRh cGUgPSBkcml2ZS0+ZHJpdmVyX2RhdGE7DQogCXN0cnVjdCBhdGFwaV9wYWNr ZXRfY29tbWFuZCAqcGM7DQogCXN0cnVjdCByZXF1ZXN0ICpycTsNCi0JaWRl dGFwZV9lcnJvcl9yZWdfdCBlcnJvcjsNCisJYXRhcGlfZXJyb3JfcmVnX3Qg ZXJyb3I7DQogDQogCWVycm9yLmFsbCA9IElOX0JZVEUgKElERV9FUlJPUl9S RUcpOw0KIAlwYyA9IGlkZXRhcGVfbmV4dF9wY19zdG9yYWdlIChkcml2ZSk7 DQpAQCAtMTk4MSw5ICsxODE3LDkgQEAgc3RhdGljIGlkZV9zdGFydHN0b3Bf dCBpZGV0YXBlX3BjX2ludHIocw0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0K IAlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoID0gZHJpdmUtPmNoYW5uZWw7DQog CWlkZXRhcGVfdGFwZV90ICp0YXBlID0gZHJpdmUtPmRyaXZlcl9kYXRhOw0K LQlpZGV0YXBlX3N0YXR1c19yZWdfdCBzdGF0dXM7DQotCWlkZXRhcGVfYmNv dW50X3JlZ190IGJjb3VudDsNCi0JaWRldGFwZV9pcmVhc29uX3JlZ190IGly ZWFzb247DQorCWF0YXBpX3N0YXR1c19yZWdfdCBzdGF0dXM7DQorCWF0YXBp X2Jjb3VudF9yZWdfdCBiY291bnQ7DQorCWF0YXBpX2lyZWFzb25fcmVnX3Qg aXJlYXNvbjsNCiAJc3RydWN0IGF0YXBpX3BhY2tldF9jb21tYW5kICpwYyA9 IHRhcGUtPnBjOw0KIA0KIAl1bnNpZ25lZCBpbnQgdGVtcDsNCkBAIC0yMDQz LDE0ICsxODc5LDE0IEBAIHN0YXRpYyBpZGVfc3RhcnRzdG9wX3QgaWRldGFw ZV9wY19pbnRyKHMNCiAJCQlzdGF0dXMuYi5jaGVjayA9IDE7DQogCQl9DQog I2VuZGlmDQotCQlpZiAoc3RhdHVzLmIuY2hlY2sgJiYgcGMtPmNbMF0gPT0g SURFVEFQRV9SRVFVRVNUX1NFTlNFX0NNRCkNCisJCWlmIChzdGF0dXMuYi5j aGVjayAmJiBwYy0+Y1swXSA9PSBBVEFQSV9SRVFVRVNUX1NFTlNFX0NNRCkN CiAJCQlzdGF0dXMuYi5jaGVjayA9IDA7DQogCQlpZiAoc3RhdHVzLmIuY2hl Y2sgfHwgdGVzdF9iaXQgKFBDX0RNQV9FUlJPUiwgJnBjLT5mbGFncykpIHsJ LyogRXJyb3IgZGV0ZWN0ZWQgKi8NCiAjaWYgSURFVEFQRV9ERUJVR19MT0cN CiAJCQlpZiAodGFwZS0+ZGVidWdfbGV2ZWwgPj0gMSkNCiAJCQkJcHJpbnRr IChLRVJOX0lORk8gImlkZS10YXBlOiAlczogSS9PIGVycm9yLCAiLHRhcGUt Pm5hbWUpOw0KICNlbmRpZg0KLQkJCWlmIChwYy0+Y1swXSA9PSBJREVUQVBF X1JFUVVFU1RfU0VOU0VfQ01EKSB7DQorCQkJaWYgKHBjLT5jWzBdID09IEFU QVBJX1JFUVVFU1RfU0VOU0VfQ01EKSB7DQogCQkJCXByaW50ayAoS0VSTl9F UlIgImlkZS10YXBlOiBJL08gZXJyb3IgaW4gcmVxdWVzdCBzZW5zZSBjb21t YW5kXG4iKTsNCiAJCQkJcmV0dXJuIGlkZV9zdG9wcGVkOw0KIAkJCX0NCkBA IC0yMTk2LDcgKzIwMzIsNyBAQCBzdGF0aWMgaWRlX3N0YXJ0c3RvcF90IGlk ZXRhcGVfdHJhbnNmZXJfDQogCXN0cnVjdCBhdGFfY2hhbm5lbCAqY2ggPSBk cml2ZS0+Y2hhbm5lbDsNCiAJaWRldGFwZV90YXBlX3QgKnRhcGUgPSBkcml2 ZS0+ZHJpdmVyX2RhdGE7DQogCXN0cnVjdCBhdGFwaV9wYWNrZXRfY29tbWFu ZCAqcGMgPSB0YXBlLT5wYzsNCi0JaWRldGFwZV9pcmVhc29uX3JlZ190IGly ZWFzb247DQorCWF0YXBpX2lyZWFzb25fcmVnX3QgaXJlYXNvbjsNCiAJaW50 IHJldHJpZXMgPSAxMDA7DQogCWlkZV9zdGFydHN0b3BfdCBzdGFydHN0b3A7 DQogCWludCByZXQ7DQpAQCAtMjI0MCwxNiArMjA3NiwxNiBAQCBzdGF0aWMg aWRlX3N0YXJ0c3RvcF90IGlkZXRhcGVfaXNzdWVfcGFjDQogCQlzdHJ1Y3Qg cmVxdWVzdCAqcnEsIHN0cnVjdCBhdGFwaV9wYWNrZXRfY29tbWFuZCAqcGMp DQogew0KIAlpZGV0YXBlX3RhcGVfdCAqdGFwZSA9IGRyaXZlLT5kcml2ZXJf ZGF0YTsNCi0JaWRldGFwZV9iY291bnRfcmVnX3QgYmNvdW50Ow0KKwlhdGFw aV9iY291bnRfcmVnX3QgYmNvdW50Ow0KIAlpbnQgZG1hX29rID0gMDsNCiAN CiAjaWYgSURFVEFQRV9ERUJVR19CVUdTDQotCWlmICh0YXBlLT5wYy0+Y1sw XSA9PSBJREVUQVBFX1JFUVVFU1RfU0VOU0VfQ01EICYmIHBjLT5jWzBdID09 IElERVRBUEVfUkVRVUVTVF9TRU5TRV9DTUQpIHsNCisJaWYgKHRhcGUtPnBj LT5jWzBdID09IEFUQVBJX1JFUVVFU1RfU0VOU0VfQ01EICYmIHBjLT5jWzBd ID09IEFUQVBJX1JFUVVFU1RfU0VOU0VfQ01EKSB7DQogCQlwcmludGsgKEtF Uk5fRVJSICJpZGUtdGFwZTogcG9zc2libGUgaWRlLXRhcGUuYyBidWcgLSBU d28gcmVxdWVzdCBzZW5zZSBpbiBzZXJpYWwgd2VyZSBpc3N1ZWRcbiIpOw0K IAl9DQogI2VuZGlmIC8qIElERVRBUEVfREVCVUdfQlVHUyAqLw0KIA0KLQlp ZiAodGFwZS0+ZmFpbGVkX3BjID09IE5VTEwgJiYgcGMtPmNbMF0gIT0gSURF VEFQRV9SRVFVRVNUX1NFTlNFX0NNRCkNCisJaWYgKHRhcGUtPmZhaWxlZF9w YyA9PSBOVUxMICYmIHBjLT5jWzBdICE9IEFUQVBJX1JFUVVFU1RfU0VOU0Vf Q01EKQ0KIAkJdGFwZS0+ZmFpbGVkX3BjID0gcGM7DQogCXRhcGUtPnBjID0g cGM7CQkJCQkJCS8qIFNldCB0aGUgY3VycmVudCBwYWNrZXQgY29tbWFuZCAq Lw0KIA0KQEAgLTIyNjEsNyArMjA5Nyw3IEBAIHN0YXRpYyBpZGVfc3RhcnRz dG9wX3QgaWRldGFwZV9pc3N1ZV9wYWMNCiAJCSAqCWV4YW1wbGUpLg0KIAkJ ICovDQogCQlpZiAoIXRlc3RfYml0IChQQ19BQk9SVCwgJnBjLT5mbGFncykp IHsNCi0JCQlpZiAoIShwYy0+Y1swXSA9PSBJREVUQVBFX1RFU1RfVU5JVF9S RUFEWV9DTUQgJiYgdGFwZS0+c2Vuc2Vfa2V5ID09IDIgJiYNCisJCQlpZiAo IShwYy0+Y1swXSA9PSBBVEFQSV9URVNUX1VOSVRfUkVBRFlfQ01EICYmIHRh cGUtPnNlbnNlX2tleSA9PSAyICYmDQogCQkJICAgICAgdGFwZS0+YXNjID09 IDQgJiYgKHRhcGUtPmFzY3EgPT0gMSB8fCB0YXBlLT5hc2NxID09IDgpKSkg ew0KIAkJCQlwcmludGsgKEtFUk5fRVJSICJpZGUtdGFwZTogJXM6IEkvTyBl cnJvciwgcGMgPSAlMngsIGtleSA9ICUyeCwgYXNjID0gJTJ4LCBhc2NxID0g JTJ4XG4iLA0KIAkJCQkJdGFwZS0+bmFtZSwgcGMtPmNbMF0sIHRhcGUtPnNl bnNlX2tleSwgdGFwZS0+YXNjLCB0YXBlLT5hc2NxKTsNCkBAIC0yNDUxLDcg KzIyODcsNyBAQCBzdGF0aWMgdm9pZCBpZGV0YXBlX21lZGlhX2FjY2Vzc19m aW5pc2hlDQogew0KIAlpZGV0YXBlX3RhcGVfdCAqdGFwZSA9IGRyaXZlLT5k cml2ZXJfZGF0YTsNCiAJc3RydWN0IGF0YXBpX3BhY2tldF9jb21tYW5kICpw YyA9IHRhcGUtPnBjOw0KLQlpZGV0YXBlX3N0YXR1c19yZWdfdCBzdGF0dXM7 DQorCWF0YXBpX3N0YXR1c19yZWdfdCBzdGF0dXM7DQogDQogCWlmICh0YXBl LT5vbnN0cmVhbSkNCiAJCXByaW50ayhLRVJOX0lORk8gImlkZS10YXBlOiBi dWc6IG9uc3RyZWFtLCBtZWRpYV9hY2Nlc3NfZmluaXNoZWRcbiIpOw0KQEAg LTI2MDksNyArMjQ0NSw3IEBAIHN0YXRpYyBpZGVfc3RhcnRzdG9wX3QgaWRl dGFwZV9kb19yZXF1ZXMNCiAJaWRldGFwZV90YXBlX3QgKnRhcGUgPSBkcml2 ZS0+ZHJpdmVyX2RhdGE7DQogCXN0cnVjdCBhdGFwaV9wYWNrZXRfY29tbWFu ZCAqcGM7DQogCXN0cnVjdCByZXF1ZXN0ICpwb3N0cG9uZWRfcnEgPSB0YXBl LT5wb3N0cG9uZWRfcnE7DQotCWlkZXRhcGVfc3RhdHVzX3JlZ190IHN0YXR1 czsNCisJYXRhcGlfc3RhdHVzX3JlZ190IHN0YXR1czsNCiAJaW50IHJldDsN CiANCiAjaWYgSURFVEFQRV9ERUJVR19MT0cNCkBAIC0yNjMxLDcgKzI0Njcs NyBAQCBzdGF0aWMgaWRlX3N0YXJ0c3RvcF90IGlkZXRhcGVfZG9fcmVxdWVz DQogCS8qDQogCSAqCVJldHJ5IGEgZmFpbGVkIHBhY2tldCBjb21tYW5kDQog CSAqLw0KLQlpZiAodGFwZS0+ZmFpbGVkX3BjICE9IE5VTEwgJiYgdGFwZS0+ cGMtPmNbMF0gPT0gSURFVEFQRV9SRVFVRVNUX1NFTlNFX0NNRCkgew0KKwlp ZiAodGFwZS0+ZmFpbGVkX3BjICE9IE5VTEwgJiYgdGFwZS0+cGMtPmNbMF0g PT0gQVRBUElfUkVRVUVTVF9TRU5TRV9DTUQpIHsNCiAJCWludCByZXQ7DQog DQogCQkvKiBGSVhNRTogbWFrZSB0aGlzIHVubG9ja2luZyBnbyBhd2F5Ki8N CkBAIC0zMTkzLDcgKzMwMjksNyBAQCBzdGF0aWMgdm9pZCBpZGV0YXBlX2Ny ZWF0ZV93cml0ZV9maWxlbWFyDQogc3RhdGljIHZvaWQgaWRldGFwZV9jcmVh dGVfdGVzdF91bml0X3JlYWR5X2NtZChzdHJ1Y3QgYXRhcGlfcGFja2V0X2Nv bW1hbmQgKnBjKQ0KIHsNCiAJYXRhcGlfaW5pdF9wYyhwYyk7DQotCXBjLT5j WzBdID0gSURFVEFQRV9URVNUX1VOSVRfUkVBRFlfQ01EOw0KKwlwYy0+Y1sw XSA9IEFUQVBJX1RFU1RfVU5JVF9SRUFEWV9DTUQ7DQogCXBjLT5jYWxsYmFj ayA9IGlkZXRhcGVfcGNfY2FsbGJhY2s7DQogfQ0KIA0KQEAgLTMzNzQsNyAr MzIxMCw3IEBAIHN0YXRpYyBpbnQgaWRldGFwZV9jcmVhdGVfcHJldmVudF9j bWQoc3QNCiAJCXJldHVybiAwOw0KIA0KIAlhdGFwaV9pbml0X3BjKHBjKTsN Ci0JcGMtPmNbMF0gPSBJREVUQVBFX1BSRVZFTlRfQ01EOw0KKwlwYy0+Y1sw XSA9IEFUQVBJX0FMTE9XX1BSRVZFTlRfUkVNT1ZBTF9DTUQ7DQogCXBjLT5j WzRdID0gcHJldmVudDsNCiAJcGMtPmNhbGxiYWNrID0gaWRldGFwZV9wY19j YWxsYmFjazsNCiANCkBAIC0zNjM0LDcgKzM0NzAsNyBAQCBzdGF0aWMgdm9p ZCBpZGV0YXBlX2luc2VydF9waXBlbGluZV9pbnRvDQogc3RhdGljIHZvaWQg aWRldGFwZV9jcmVhdGVfaW5xdWlyeV9jbWQoc3RydWN0IGF0YXBpX3BhY2tl dF9jb21tYW5kICpwYykNCiB7DQogCWF0YXBpX2luaXRfcGMocGMpOw0KLQlw Yy0+Y1swXSA9IElERVRBUEVfSU5RVUlSWV9DTUQ7DQorCXBjLT5jWzBdID0g QVRBUElfSU5RVUlSWV9DTUQ7DQogCXBjLT5jWzRdID0gcGMtPnJlcXVlc3Rf dHJhbnNmZXIgPSAyNTQ7DQogCXBjLT5jYWxsYmFjayA9IGlkZXRhcGVfcGNf Y2FsbGJhY2s7DQogfQ0KQEAgLTU1NzIsNyArNTQwOCw3IEBAIHN0YXRpYyBp bnQgaWRldGFwZV9jaHJkZXZfcmVsZWFzZSAoc3RydWMNCiAgKi8NCiBzdGF0 aWMgaW50IGlkZXRhcGVfaWRlbnRpZnlfZGV2aWNlKHN0cnVjdCBhdGFfZGV2 aWNlICpkcml2ZSxzdHJ1Y3QgaGRfZHJpdmVpZCAqaWQpDQogew0KLQlzdHJ1 Y3QgaWRldGFwZV9pZF9nY3cgZ2N3Ow0KKwlzdHJ1Y3QgYXRhcGlfaWRfZ2N3 IGdjdzsNCiAjaWYgSURFVEFQRV9ERUJVR19JTkZPDQogCXVuc2lnbmVkIHNo b3J0IG1hc2ssaTsNCiAjZW5kaWYgLyogSURFVEFQRV9ERUJVR19JTkZPICov DQpAQCAtNTc5MSwxNCArNTYyNywxNCBAQCBzdGF0aWMgdm9pZCBpZGV0YXBl X2dldF9pbnF1aXJ5X3Jlc3VsdHMoDQogCWNoYXIgKnI7DQogCWlkZXRhcGVf dGFwZV90ICp0YXBlID0gZHJpdmUtPmRyaXZlcl9kYXRhOw0KIAlzdHJ1Y3Qg YXRhcGlfcGFja2V0X2NvbW1hbmQgcGM7DQotCWlkZXRhcGVfaW5xdWlyeV9y ZXN1bHRfdCAqaW5xdWlyeTsNCisJYXRhcGlfaW5xdWlyeV9yZXN1bHRfdCAq aW5xdWlyeTsNCiANCiAJaWRldGFwZV9jcmVhdGVfaW5xdWlyeV9jbWQoJnBj KTsNCiAJaWYgKGlkZXRhcGVfcXVldWVfcGNfdGFpbCAoZHJpdmUsICZwYykp IHsNCiAJCXByaW50ayAoS0VSTl9FUlIgImlkZS10YXBlOiAlczogY2FuJ3Qg Z2V0IElOUVVJUlkgcmVzdWx0c1xuIiwgdGFwZS0+bmFtZSk7DQogCQlyZXR1 cm47DQogCX0NCi0JaW5xdWlyeSA9IChpZGV0YXBlX2lucXVpcnlfcmVzdWx0 X3QgKikgcGMuYnVmZmVyOw0KKwlpbnF1aXJ5ID0gKGF0YXBpX2lucXVpcnlf cmVzdWx0X3QgKikgcGMuYnVmZmVyOw0KIAltZW1jcHkodGFwZS0+dmVuZG9y X2lkLCBpbnF1aXJ5LT52ZW5kb3JfaWQsIDgpOw0KIAltZW1jcHkodGFwZS0+ cHJvZHVjdF9pZCwgaW5xdWlyeS0+cHJvZHVjdF9pZCwgMTYpOw0KIAltZW1j cHkodGFwZS0+ZmlybXdhcmVfcmV2aXNpb24sIGlucXVpcnktPnJldmlzaW9u X2xldmVsLCA0KTsNCkBAIC01OTg1LDcgKzU4MjEsNyBAQCBzdGF0aWMgdm9p ZCBpZGV0YXBlX3NldHVwKHN0cnVjdCBhdGFfZGV2DQogCXVuc2lnbmVkIGxv bmcgdDEsIHRtaWQsIHRuOw0KIAl1bnNpZ25lZCBsb25nIHQ7DQogCWludCBz cGVlZDsNCi0Jc3RydWN0IGlkZXRhcGVfaWRfZ2N3IGdjdzsNCisJc3RydWN0 IGF0YXBpX2lkX2djdyBnY3c7DQogCWludCBzdGFnZV9zaXplOw0KIAlzdHJ1 Y3Qgc3lzaW5mbyBzaTsNCiANCg== ---559023410-758783491-1024523133=:18992-- - 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/