Subject: Re: WDC code review (Re: 840AV question.)
To: John Ruschmeyer <jruschme@mac.com>
From: John Ruschmeyer <jruschme@mac.com>
List: port-mac68k
Date: 11/13/2001 16:47:00
> This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

--MS_Mac_OE_3088514820_1429766_MIME_Part
Content-type: text/plain; charset="US-ASCII"
Content-transfer-encoding: 7bit

Of course, it would help if I really attached the file.

Mea culpa...
<<<John>>>

> From: John Ruschmeyer <jruschme@mac.com>
> Date: Tue, 13 Nov 2001 16:39:37 -0500
> To: Takeshi Shibagaki <ie9t-sbgk@asahi-net.or.jp>, <briggs@wasabisystems.com>
> Cc: <port-mac68k@netbsd.org>
> Subject: WDC code review (Re: 840AV question.)
> 
> 
> 
>> From: Takeshi Shibagaki <ie9t-sbgk@asahi-net.or.jp>
>> Date: Wed, 14 Nov 2001 06:10:05 +0900
>> 
>> Hi,
>> 
>> # What status your wdc code review?
> 
> Which reminds me... it's been working very well on my Q630.
> 
> Attached it a slightly updated copy of the original patch. It differs from
> the original in two manners:
> 
> 1) An IDETEST config file is included
> 2) I restored the use of some symbolic constants to the wdc_obio.c file.
> This is purely for readability.
> 
> I really want to see this in 1.6. :-)
> 
> <<<John>>>
> 
> 


--MS_Mac_OE_3088514820_1429766_MIME_Part
Content-type: application/octet-stream; name="mac68k_wdc_diffs";
 x-mac-creator="554E4958";
 x-mac-type="42494E41"
Content-disposition: attachment
Content-transfer-encoding: base64

ZGlmZiAtcnVOIHNyYy5vcmcvZXRjL2V0Yy5tYWM2OGsvTUFLRURFViBzcmMubmV3L2V0Yy9l
dGMubWFjNjhrL01BS0VERVYKLS0tIHNyYy5vcmcvZXRjL2V0Yy5tYWM2OGsvTUFLRURFVglG
cmkgSnVsIDI4IDAzOjQzOjI0IDIwMDAKKysrIHNyYy5uZXcvZXRjL2V0Yy5tYWM2OGsvTUFL
RURFVglTdW4gT2N0ICAxIDEzOjIxOjUwIDIwMDAKQEAgLTkxLDcgKzkxLDcgQEAKIGNhc2Ug
JGkgaW4KIAogYWxsKQotCXNoICQwIHN0ZCBmZCBzZDAgc2QxIHNkMiBzZDMgdHR5MCB0dHkx
IHB0eTAgcHR5MSBwdHkyIHB0eTMKKwlzaCAkMCBzdGQgZmQgc2QwIHNkMSBzZDIgc2QzIHdk
MCB3ZDEgd2QyIHdkMyB0dHkwIHR0eTEgcHR5MCBwdHkxIHB0eTIgcHR5MwogCXNoICQwIHN0
MCBzdDEgY2gwIGNkMCBjZDEgZmQwIGZkMSB2bmQwIHZuZDEgdm5kMiB2bmQzCiAJc2ggJDAg
Y2NkMCBjY2QxIGNjZDIgY2NkMyBtZDAgc3MwIHVrMCB1azEgcmFpZDAgcmFpZDEgcmFpZDIg
cmFpZDMKIAlzaCAkMCB0dHllMCBhZGIgZ3JmMCBncmYxIGdyZjIgZ3JmMwpAQCAtMTIxLDcg
KzEyMSw3IEBACiAKIHJhbWluc3QpCiAJc2ggJDAgc3RkIAotCXNoICQwIHNkMCBzZDEgc2Qy
IHNkMyBzdDAgc3QxIGNkMCBjZDEgbWQwCisJc2ggJDAgc2QwIHNkMSBzZDIgc2QzIHdkMCB3
ZDEgd2QyIHdkMyBzdDAgc3QxIGNkMCBjZDEgbWQwCiAJc2ggJDAgYWRiIGdyZjAgZ3JmMSB0
dHllMAogCXNoICQwIHR0eTAgdHR5MSBwdHkwCiAJOzsKQEAgLTIyNCwxMiArMjI0LDEzIEBA
CiAJY2htb2QgNjQwICRuYW1lJHVuaXQgbiRuYW1lJHVuaXQgZW4kbmFtZSR1bml0CiAJOzsK
IAotc2QqfGZkKnx2bmQqfGNjZCp8cmFpZCopCitzZCp8ZmQqfHdkKnx2bmQqfGNjZCp8cmFp
ZCopCiAJY2FzZSAkaSBpbgogCWNjZCopIG5hbWU9Y2NkOwl1bml0PSR7aSNjY2R9OwlibGs9
OTsJY2hyPTIwOzsKIAlmZCopIG5hbWU9ZmQ7CXVuaXQ9JHtpI2ZkfTsJYmxrPTIxOwljaHI9
NDM7OwogCXJhaWQqKSBuYW1lPXJhaWQ7IHVuaXQ9JHtpI3JhaWR9OyBibGs9MjA7IGNocj00
Mjs7CiAJc2QqKSBuYW1lPXNkOwl1bml0PSR7aSNzZH07CWJsaz00OwljaHI9MTM7OworCXdk
KikgbmFtZT13ZDsJdW5pdD0ke2kjd2R9OwlibGs9MjI7CWNocj00ODs7CiAJdm5kKikgbmFt
ZT12bmQ7CXVuaXQ9JHtpI3ZuZH07CWJsaz04OwljaHI9MTk7OwogCWVzYWMKIAlybSAtZiAk
bmFtZSR1bml0PyByJG5hbWUkdW5pdD8KZGlmZiAtcnVOIHNyYy9zeXMvYXJjaC9tYWM2OGsu
b3JpZy9jb25mL0dFTkVSSUMgc3JjL3N5cy9hcmNoL21hYzY4ay9jb25mL0dFTkVSSUMKLS0t
IHNyYy9zeXMvYXJjaC9tYWM2OGsub3JpZy9jb25mL0dFTkVSSUMJU3VuIFNlcCAgMiAwODo0
MzozMCAyMDAxCisrKyBzcmMvc3lzL2FyY2gvbWFjNjhrL2NvbmYvR0VORVJJQwlTdW4gU2Vw
IDE2IDEwOjM2OjA1IDIwMDEKQEAgLTIwMyw2ICsyMDMsMTAgQEAKIHNzKglhdCBzY3NpYnVz
PyB0YXJnZXQgPyBsdW4gPwkjIFNDU0kgc2Nhbm5lcnMKIHVrKglhdCBzY3NpYnVzPyB0YXJn
ZXQgPyBsdW4gPwkjIFNDU0kgdW5rbm93bgogCisjIElERSBjb250cm9sbGVyIGFuZCBkZXZp
Y2VzCit3ZGMqCWF0IG9iaW8/Cit3ZCoJYXQgd2RjPyBjaGFubmVsID8gZHJpdmUgPworCiAK
ICMgTWlzY2VsbGFuZW91cyBtYXNzIHN0b3JhZ2UgZGV2aWNlcwogCmRpZmYgLXJ1TiBzcmMv
c3lzL2FyY2gvbWFjNjhrLm9yaWcvY29uZi9JREVURVNUIHNyYy9zeXMvYXJjaC9tYWM2OGsv
Y29uZi9JREVURVNUCi0tLSBzcmMvc3lzL2FyY2gvbWFjNjhrLm9yaWcvY29uZi9JREVURVNU
CVdlZCBEZWMgMzEgMTk6MDA6MDAgMTk2OQorKysgc3JjL3N5cy9hcmNoL21hYzY4ay9jb25m
L0lERVRFU1QJU3VuIFNlcCAxNiAxMDozOTowNCAyMDAxCkBAIC0wLDAgKzEsMjY4IEBACisj
CSROZXRCU0Q6IEdFTkVSSUMsdiAxLjEwMi4yLjMgMjAwMC8wOC8wNiAxMjo1NjoxOCBicmln
Z3MgRXhwICQKKyMKKyMgR0VORVJJQworCitpbmNsdWRlCSJhcmNoL21hYzY4ay9jb25mL3N0
ZC5tYWM2OGsiCisKKyNpZGVudCAJCSJHRU5FUklDLSRSZXZpc2lvbjogMS4xMDIuMi4zICQi
CisKK21heHVzZXJzCTE2CQkjIGVzdGltYXRlZCBudW1iZXIgb2YgdXNlcnMKKworIyBDUFUg
c3VwcG9ydC4gIEF0IGxlYXN0IG9uZSBpcyBSRVFVSVJFRC4KK29wdGlvbnMgCU02ODA0MAor
b3B0aW9ucyAJTTY4MDMwCitvcHRpb25zIAlNNjgwMjAJCSMgTm90ZTogIG11c3QgaGF2ZSA2
ODg1MSBQTU1VCisKKyMgQ1BVLXJlbGF0ZWQgb3B0aW9ucy4KK29wdGlvbnMgCUZQU1AKK29w
dGlvbnMgCUZQVV9FTVVMQVRFCisKKyMgU3RhbmRhcmQgc3lzdGVtIG9wdGlvbnMKKworb3B0
aW9ucyAJVUNPTlNPTEUJIyB1c2VycyBjYW4gdXNlIFRJT0NDT05TIChmb3IgeGNvbnNvbGUp
CitvcHRpb25zIAlJTlNFQ1VSRQkjIGRpc2FibGUga2VybmVsIHNlY3VyaXR5IGxldmVscwor
CitvcHRpb25zIAlSVENfT0ZGU0VUPTAJIyBoYXJkd2FyZSBjbG9jayBpcyB0aGlzIG1hbnkg
bWlucy4gd2VzdCBvZiBHTVQKKyNvcHRpb25zIAlOVFAJCSMgTlRQIHBoYXNlL2ZyZXF1ZW5j
eSBsb2NrZWQgbG9vcAorCitvcHRpb25zIAlLVFJBQ0UJCSMgc3lzdGVtIGNhbGwgdHJhY2lu
ZyB2aWEga3RyYWNlKDEpCisKK29wdGlvbnMgCVNZU1ZNU0cJCSMgU3lzdGVtIFYtbGlrZSBt
ZXNzYWdlIHF1ZXVlcworb3B0aW9ucyAJU1lTVlNFTQkJIyBTeXN0ZW0gVi1saWtlIHNlbWFw
aG9yZXMKK29wdGlvbnMgCVNZU1ZTSE0JCSMgU3lzdGVtIFYtbGlrZSBtZW1vcnkgc2hhcmlu
ZworI29wdGlvbnMgCVNITU1BWFBHUz0xMDI0CSMgMTAyNCBwYWdlcyBpcyB0aGUgZGVmYXVs
dAorCitvcHRpb25zIAlMS00JCSMgbG9hZGFibGUga2VybmVsIG1vZHVsZXMKKworIyBEaWFn
bm9zdGljL2RlYnVnZ2luZyBzdXBwb3J0IG9wdGlvbnMKK29wdGlvbnMgCURJQUdOT1NUSUMJ
IyBjaGVhcCBrZXJuZWwgY29uc2lzdGVuY3kgY2hlY2tzCisjb3B0aW9ucyAJREVCVUcJCSMg
ZXhwZW5zaXZlIGRlYnVnZ2luZyBjaGVja3Mvc3VwcG9ydAorb3B0aW9ucyAJS01FTVNUQVRT
CSMga2VybmVsIG1lbW9yeSBzdGF0aXN0aWNzICh2bXN0YXQgLW0pCitvcHRpb25zIAlEREIJ
CSMgaW4ta2VybmVsIGRlYnVnZ2VyCisjb3B0aW9ucyAJRERCX0hJU1RPUllfU0laRT0xMDAJ
IyBlbmFibGUgaGlzdG9yeSBlZGl0aW5nIGluIEREQgorI29wdGlvbnMgCUtHREIJCSMgcmVt
b3RlIGRlYnVnZ2VyCisjb3B0aW9ucyAJS0dEQkRFVj0weGMwMQkjIGtnZGIgZGV2aWNlIG51
bWJlciAoZGV2X3QpCisjb3B0aW9ucyAJS0dEQlJBVEU9Mzg0MDAJIyBiYXVkIHJhdGUKKyNt
YWtlb3B0aW9ucwlERUJVRz0iLWciCSMgY29tcGlsZSBmdWxsIHN5bWJvbCB0YWJsZQorCisj
IENvbXBhdGliaWxpdHkgb3B0aW9ucworI29wdGlvbnMgCUNPTVBBVF9OT01JRAkjIGNvbXBh
dGliaWxpdHkgd2l0aCAzODZCU0QsIEJTREksIE5ldEJTRCAwLjgsCisjb3B0aW9ucyAJQ09N
UEFUXzA5CSMgTmV0QlNEIDAuOSwKK29wdGlvbnMgCUNPTVBBVF8xMAkjIE5ldEJTRCAxLjAs
CitvcHRpb25zIAlDT01QQVRfMTEJIyBOZXRCU0QgMS4xLAorb3B0aW9ucyAJQ09NUEFUXzEy
CSMgTmV0QlNEIDEuMiwKK29wdGlvbnMgCUNPTVBBVF8xMwkjIE5ldEJTRCAxLjMsCitvcHRp
b25zIAlDT01QQVRfMTQJIyBOZXRCU0QgMS40LAorb3B0aW9ucyAJQ09NUEFUXzQzCSMgYW5k
IDQuM0JTRAorCitvcHRpb25zIAlDT01QQVRfU1VOT1MJIyBjb21wYXRpYmlsaXR5IHdpdGgg
U3VuT1MgNC54IGJpbmFyaWVzCisjb3B0aW9ucyAJQ09NUEFUX1NWUjQJIyBjb21wYXRpYmls
aXR5IHdpdGggU1ZSNCBiaW5hcmllcworI29wdGlvbnMgCUNPTVBBVF9NNjhLNEsJIyBjb21w
YXRpYmlsaXR5IHdpdGggTmV0QlNEL202OGs0ayBiaW5hcmllcworI29wdGlvbnMgCUNPTVBB
VF9MSU5VWAkjIGNvbXBhdGliaWxpdHkgd2l0aCBMaW51eC9tNjhrIGJpbmFyaWVzCisjb3B0
aW9ucyAJRVhFQ19FTEYzMgkjIDMyLWJpdCBFTEYgZXhlY3V0YWJsZXMgKExpbnV4LCBTVlI0
KQorCisjIEZpbGUgc3lzdGVtcworZmlsZS1zeXN0ZW0gCUZGUwkJIyBVRlMKK2ZpbGUtc3lz
dGVtIAlFWFQyRlMJCSMgc2Vjb25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtIChsaW51eCkKK2Zp
bGUtc3lzdGVtIAlMRlMJCSMgbG9nLXN0cnVjdHVyZWQgZmlsZSBzeXN0ZW0KK2ZpbGUtc3lz
dGVtIAlNRlMJCSMgbWVtb3J5IGZpbGUgc3lzdGVtCitmaWxlLXN5c3RlbSAJTkZTCQkjIE5l
dHdvcmsgRmlsZSBTeXN0ZW0gY2xpZW50CitmaWxlLXN5c3RlbSAJQ0Q5NjYwCQkjIElTTyA5
NjYwICsgUm9jayBSaWRnZSBmaWxlIHN5c3RlbQorZmlsZS1zeXN0ZW0gCU1TRE9TRlMJCSMg
TVMtRE9TIGZpbGUgc3lzdGVtCitmaWxlLXN5c3RlbSAJRkRFU0MJCSMgL2Rldi9mZAorZmls
ZS1zeXN0ZW0gCUtFUk5GUwkJIyAva2VybgorZmlsZS1zeXN0ZW0gCU5VTExGUwkJIyBsb29w
YmFjayBmaWxlIHN5c3RlbQorZmlsZS1zeXN0ZW0gCU9WRVJMQVkJCSMgb3ZlcmxheSBmaWxl
IHN5c3RlbQorZmlsZS1zeXN0ZW0gCVBPUlRBTAkJIyBwb3J0YWwgZmlsZXN5c3RlbSAoc3Rp
bGwgZXhwZXJpbWVudGFsKQorZmlsZS1zeXN0ZW0gCVBST0NGUwkJIyAvcHJvYworZmlsZS1z
eXN0ZW0gCVVNQVBGUwkJIyBOVUxMRlMgKyB1aWQgYW5kIGdpZCByZW1hcHBpbmcKK2ZpbGUt
c3lzdGVtIAlVTklPTgkJIyB1bmlvbiBmaWxlIHN5c3RlbQorZmlsZS1zeXN0ZW0gCUNPREEJ
CSMgVmVudXMvQ29kYSBkaXN0cmlidXRlZCBmaWxlIHN5c3RlbQorCisjIEZpbGUgc3lzdGVt
IG9wdGlvbnMKK29wdGlvbnMgCVFVT1RBCQkjIFVGUyBxdW90YXMKKyNvcHRpb25zIAlGRlNf
RUkJCSMgRkZTIEVuZGlhbiBJbmRlcGVuZGFudCBzdXBwb3J0CitvcHRpb25zIAlTT0ZUREVQ
CQkjIEZGUyBzb2Z0IHVwZGF0ZXMgc3VwcG9ydC4KK29wdGlvbnMgCU5GU1NFUlZFUgkjIE5l
dHdvcmsgRmlsZSBTeXN0ZW0gc2VydmVyCisjb3B0aW9ucyAJRVhUMkZTX1NZU1RFTV9GTEFH
UyAjIG1ha2VzIGV4dDJmcyBmaWxlIGZsYWdzIChhcHBlbmQgYW5kCisJCQkJIyBpbW11dGFi
bGUpIGJlaGF2ZSBhcyBzeXN0ZW0gZmxhZ3MuCisKKyMgTmV0d29ya2luZyBvcHRpb25zCitv
cHRpb25zIAlHQVRFV0FZCQkjIHBhY2tldCBmb3J3YXJkaW5nCitvcHRpb25zIAlJTkVUCQkj
IElQICsgSUNNUCArIFRDUCArIFVEUAorb3B0aW9ucyAJSU5FVDYJCSMgSVBWNgorI29wdGlv
bnMgCUlQU0VDCQkjIElQIHNlY3VyaXR5Cisjb3B0aW9ucyAJSVBTRUNfRVNQCSMgSVAgc2Vj
dXJpdHkgKGVuY3J5cHRpb24gcGFydDsgZGVmaW5lIHcvSVBTRUMpCisjb3B0aW9ucyAJSVBT
RUNfREVCVUcJIyBkZWJ1ZyBmb3IgSVAgc2VjdXJpdHkKKyNvcHRpb25zIAlNUk9VVElORwkj
IElQIG11bHRpY2FzdCByb3V0aW5nCitvcHRpb25zIAlOUwkJIyBYTlMKKyNvcHRpb25zIAlO
U0lQCQkjIFhOUyB0dW5uZWxpbmcgb3ZlciBJUAorb3B0aW9ucyAJSVNPLFRQSVAJIyBPU0kK
KyNvcHRpb25zIAlFT04JCSMgT1NJIHR1bm5lbGluZyBvdmVyIElQCitvcHRpb25zIAlDQ0lU
VCxMTEMsSERMQwkjIFguMjUKK29wdGlvbnMgCU5FVEFUQUxLCSMgQXBwbGVUYWxrIG5ldHdv
cmtpbmcgcHJvdG9jb2xzCitvcHRpb25zIAlQUFBfQlNEQ09NUAkjIEJTRC1Db21wcmVzcyBj
b21wcmVzc2lvbiBzdXBwb3J0IGZvciBQUFAKK29wdGlvbnMgCVBQUF9ERUZMQVRFCSMgRGVm
bGF0ZSBjb21wcmVzc2lvbiBzdXBwb3J0IGZvciBQUFAKK29wdGlvbnMgCVBQUF9GSUxURVIJ
IyBBY3RpdmUgZmlsdGVyIHN1cHBvcnQgZm9yIFBQUCAocmVxdWlyZXMgYnBmKQorb3B0aW9u
cyAJUEZJTF9IT09LUwkjIHBmaWwoOSkgcGFja2V0IGZpbHRlciBob29rcworCisjIENvbXBh
dGliaWxpdHkgd2l0aCA0LjJCU0QgaW1wbGVtZW50YXRpb24gb2YgVENQL0lQLiAgTm90IHJl
Y29tbWVuZGVkLgorI29wdGlvbnMgCVRDUF9DT01QQVRfNDIKKworIyBUaGVzZSBvcHRpb25z
IGVuYWJsZSB2ZXJib3NlIG1lc3NhZ2VzIGZvciBzZXZlcmFsIHN1YnN5c3RlbXMuCisjIFdh
cm5pbmcsIHRoZXNlIG1heSBjb21waWxlIGxhcmdlIHN0cmluZyB0YWJsZXMgaW50byB0aGUg
a2VybmVsIQorb3B0aW9ucyAJU0NTSVZFUkJPU0UJIyBodW1hbiByZWFkYWJsZSBTQ1NJIGVy
cm9yIG1lc3NhZ2VzCisKKyMgd3Njb25zIG9wdGlvbnMKKyNvcHRpb25zIAlXU0VNVUxfU1VO
CQkjIHN1biB0ZXJtaW5hbCBlbXVsYXRpb24KK29wdGlvbnMgCVdTRU1VTF9WVDEwMAkJIyBW
VDEwMCAvIFZUMjIwIGVtdWxhdGlvbgorb3B0aW9ucyAJV1NESVNQTEFZX0NPTVBBVF9JVEVG
T05UICMgdXNlIGl0ZSBmb250ICg2eDEwKQorCisjIHJjb25zIG9wdGlvbnM7IG5vdGUgdGhh
dCAxLWJpdCBhbmQgOC1iaXQgZGlzcGxheXMgYXJlIHN1cHBvcnRlZCBieSBkZWZhdWx0Lgor
b3B0aW9ucyAJUkNPTlNfMkJQUAkJIyBTdXBwb3J0IGZvciAyLWJpdCBkaXNwbGF5CitvcHRp
b25zIAlSQ09OU180QlBQCQkjIFN1cHBvcnQgZm9yIDQtYml0IGRpc3BsYXkKK29wdGlvbnMg
CVJDT05TXzE2QlBQCQkjIFN1cHBvcnQgZm9yIDE2LWJpdCBkaXNwbGF5CisKKyMgTWFjLXNw
ZWNpZmljIG9wdGlvbnMKKyNvcHRpb25zIAlBTFRYQlVUVE9OUwkjIE1hcCBPcHQtezEsMiwz
fSB0byBtb3VzZSBidXR0b25zCisjb3B0aW9ucyAJRElTQUJMRV9FWFRfQ0FDSEUgIyBJZiBy
ZWFsbHkgcGFyYW5vaWQsIGRpc2FibGUgSUljaSBleHQuIGNhY2hlCitvcHRpb25zIAlHUkZf
Q09NUEFUCSMgSW5jbHVkZSBncmYgY29tcGF0aWJpbGl0eSBjb2RlCisjb3B0aW9ucyAJTVJH
X0FEQgkJIyBVc2UgUk9NLWJhc2VkIEFEQiBkcml2ZXIKK29wdGlvbnMgCVpTX0NPTlNPTEVf
QUJPUlQKKworb3B0aW9ucyAJTkZTX0JPT1RfREhDUAorCisjIEtlcm5lbCByb290IGZpbGUg
c3lzdGVtIGFuZCBkdW1wIGNvbmZpZ3VyYXRpb24uCitjb25maWcJCW5ldGJzZAlyb290IG9u
ID8gdHlwZSA/CisKKyMKKyMgRGV2aWNlIGNvbmZpZ3VyYXRpb24KKyMKKworbWFpbmJ1czAg
YXQgcm9vdAorCitmcHUwIGF0IG1haW5idXM/CQkJIyBGbG9hdGluZy1Qb2ludCBDb3Byb2Nl
c3NvciBzdXBwb3J0CisKKworIyBCYXNpYyBCdXMgU3VwcG9ydAorCisjIE9uLWJvYXJkIEkv
TyBidXMgc3VwcG9ydAorb2JpbzAgYXQgbWFpbmJ1cz8KKworIyBOdUJ1cyBzdXBwb3J0Citu
dWJ1czAgYXQgbWFpbmJ1cz8KKworCisjIENvbnNvbGUgRGV2aWNlcworCisjIEFwcGxlIERl
c2t0b3AgQnVzIGludGVyZmFjZQorYWRiMAlhdCBvYmlvPworYWVkKglhdCBhZGI/CQkJCSMg
QURCIGV2ZW50IGRldmljZQorYWtiZCoJYXQgYWRiPwkJCQkjIEFEQiBrZXlib2FyZAorYW1z
KglhdCBhZGI/CQkJCSMgQURCIG1vdXNlCisKKyMgQmFzaWMgZnJhbWUgYnVmZmVyIHN1cHBv
cnQKK2ludHZpZDAJYXQgb2Jpbz8JCQkjIEludGVybmFsIHZpZGVvIGhhcmR3YXJlCittYWN2
aWQqCWF0IG51YnVzPwkJCSMgTnVCdXMgdmlkZW8gY2FyZAorCisjIERldmljZS1pbmRlcGVu
ZGVudCBmcmFtZSBidWZmZXIgaW50ZXJmYWNlCittYWNmYioJYXQgaW50dmlkPworbWFjZmIq
CWF0IG1hY3ZpZD8KKworIyBXb3Jrc3RhdGlvbiBDb25zb2xlIGRldmljZXMKK3dzZGlzcGxh
eSogYXQgbWFjZmI/IGNvbnNvbGUgPword3NrYmQqCWF0IGFrYmQ/IGNvbnNvbGUgPword3Nt
b3VzZSogYXQgYW1zPworCisKKyMgU2VyaWFsIERldmljZXMKKworIyBPbi1ib2FyZCBzZXJp
YWwgaW50ZXJmYWNlCit6c2MwCWF0IG9iaW8/Cit6c3R0eSoJYXQgenNjPyBjaGFubmVsID8K
KworCisjIFNDU0kgQ29udHJvbGxlcnMgYW5kIERldmljZXMKKworIyBTQ1NJIGNvbnRyb2xs
ZXJzCisjIFhYWCAtIHVzZSBvbmx5IG9uZSBvZiBuY3JzY3NpIG9yIHNiYworbmNyc2NzaTAg
YXQgb2Jpbz8JCQkjIFNDU0kgTkNSIDUzODAKKyNzYmMwCWF0IG9iaW8/IGZsYWdzIDB4MQkJ
IyBNSSBTQ1NJIE5DUiA1MzgwCitlc3AwCWF0IG9iaW8/CQkJIyBTQ1NJIE5DUiA1M0M5eAor
ZXNwMQlhdCBvYmlvPwkJCSMgU0NTSSBOQ1IgNTNDOXgKKworIyBTQ1NJIGJ1cyBzdXBwb3J0
CitzY3NpYnVzKiBhdCBzY3NpPworCisjIFNDU0kgZGV2aWNlcworc2QqCWF0IHNjc2lidXM/
IHRhcmdldCA/IGx1biA/CSMgU0NTSSBkaXNrIGRyaXZlcworc3QqCWF0IHNjc2lidXM/IHRh
cmdldCA/IGx1biA/CSMgU0NTSSB0YXBlIGRyaXZlcworY2QqCWF0IHNjc2lidXM/IHRhcmdl
dCA/IGx1biA/CSMgU0NTSSBDRC1ST00gZHJpdmVzCitjaCoJYXQgc2NzaWJ1cz8gdGFyZ2V0
ID8gbHVuID8JIyBTQ1NJIGF1dG9jaGFuZ2Vycworc2UqCWF0IHNjc2lidXM/IHRhcmdldCA/
IGx1biA/CSMgU0NTSSBldGhlcm5ldAorc3MqCWF0IHNjc2lidXM/IHRhcmdldCA/IGx1biA/
CSMgU0NTSSBzY2FubmVycwordWsqCWF0IHNjc2lidXM/IHRhcmdldCA/IGx1biA/CSMgU0NT
SSB1bmtub3duCisKKyMgSURFIGNvbnRyb2xsZXIgYW5kIGRldmljZXMKK3dkYzAJYXQgb2Jp
bz8KK3dkKglhdCB3ZGMwIGNoYW5uZWwgPyBkcml2ZSA/CisKKworIyBNaXNjZWxsYW5lb3Vz
IG1hc3Mgc3RvcmFnZSBkZXZpY2VzCisKKyMgSVdNIGZsb3BweSBkaXNrIGNvbnRyb2xsZXIK
K2l3bTAJYXQgb2Jpbz8JCQkjIFNvbnkgZHJpdmVyICg4MDBLIEdDUikKK2ZkKglhdCBpd20/
IGRyaXZlID8KKworCisjIE5ldHdvcmsgSW50ZXJmYWNlcworCisjIE9uLWJvYXJkIEV0aGVy
bmV0IGNvbnRyb2xsZXJzCitzbioJYXQgb2Jpbz8JCQkjIFNPTklDLWJhc2VkIChEUDgzOTMy
LCBEUDgzOTE2KQorbWMqCWF0IG9iaW8/CQkJIyBNQUNFLWJhc2VkCisKKyMgTnVCdXMgRXRo
ZXJuZXQgY29udHJvbGxlcnMKK2FlKglhdCBudWJ1cz8JCQkjIERQODM5MC1iYXNlZAorc24q
CWF0IG51YnVzPwkJCSMgU09OSUMtYmFzZWQgKERQODM5MzIsIERQODM5MTYpCitzbSoJYXQg
bnVidXM/CQkJIyBTTUMgOTFjeHgtYmFzZWQKKworbnNwaHkqCWF0IG1paT8gcGh5ID8KK3Vr
cGh5KglhdCBtaWk/IHBoeSA/CisKKyMgQXVkaW8gRGV2aWNlcworCisjIE9uLWJvYXJkIGF1
ZGlvIGhhcmR3YXJlCithc2MwCWF0IG9iaW8/CQkJIyBBU0MvRUFTQyBhdWRpbworCisjIFBz
ZXVkby1EZXZpY2VzCisKKyMgZGlzay9tYXNzIHN0b3JhZ2UgcHNldWRvLWRldmljZXMKK3Bz
ZXVkby1kZXZpY2UJY2NkCQk0CSMgY29uY2F0ZW5hdGVkL3N0cmlwZWQgZGlzayBkZXZpY2Vz
CisjcHNldWRvLWRldmljZQlyYWlkCQk0CSMgUkFJRGZyYW1lIGRpc2sgZHJpdmVyCisjb3B0
aW9ucyAJUkFJRF9BVVRPQ09ORklHCQkjIGF1dG8tY29uZmlndXJhdGlvbiBvZiBSQUlEIGNv
bXBvbmVudHMKK3BzZXVkby1kZXZpY2UJbWQJCTEJIyBtZW1vcnkgZGlzayBkZXZpY2UgKHJh
bWRpc2spCitwc2V1ZG8tZGV2aWNlCXZjb2RhCQkxCSMgVmVudXMvQ29kYSBkaXN0cmlidXRl
ZCBmaWxlIHN5c3RlbQorcHNldWRvLWRldmljZQl2bmQJCTQJIyBkaXNrLWxpa2UgaW50ZXJm
YWNlIHRvIGZpbGVzCisKKyMgbmV0d29yayBwc2V1ZG8tZGV2aWNlcworcHNldWRvLWRldmlj
ZQlicGZpbHRlcgkxMgkjIEJlcmtlbGV5IHBhY2tldCBmaWx0ZXIKK3BzZXVkby1kZXZpY2UJ
aXBmaWx0ZXIJCSMgSVAgZmlsdGVyIChmaXJld2FsbCkgYW5kIE5BVAorcHNldWRvLWRldmlj
ZQlsb29wCQkJIyBuZXR3b3JrIGxvb3BiYWNrCitwc2V1ZG8tZGV2aWNlCXBwcAkJMgkjIFBv
aW50LXRvLVBvaW50IFByb3RvY29sCitwc2V1ZG8tZGV2aWNlCXNsCQkyCSMgU2VyaWFsIExp
bmUgSVAKKyNwc2V1ZG8tZGV2aWNlCXN0cmlwCQkyCSMgU3Rhcm1vZGUgUmFkaW8gSVAgKE1l
dHJpY29tKQorcHNldWRvLWRldmljZQl0dW4JCTIJIyBuZXR3b3JrIHR1bm5lbGluZyBvdmVy
IHR0eQorI3BzZXVkby1kZXZpY2UJZ3JlCQkyCSMgZ2VuZXJpYyBMMyBvdmVyIElQIHR1bm5l
bAorcHNldWRvLWRldmljZQlnaWYJCTQJIyBJUHZbNDZdIG92ZXIgSVB2WzQ2XSB0dW5uZWwg
KFJGQzE5MzMpCisjcHNldWRvLWRldmljZQlmYWl0aAkJMQkjIElQdls0Nl0gdGNwIHJlbGF5
IHRyYW5zbGF0aW9uIGkvZgorI3BzZXVkby1kZXZpY2UJc3RmCQkxCSMgNnRvNCBJUHY2IG92
ZXIgSVB2NCBlbmNhcHN1bGF0aW9uCisKKyMgbWlzY2VsbGFuZW91cyBwc2V1ZG8tZGV2aWNl
cworcHNldWRvLWRldmljZQlncmYJCTIJIyBncmYgZW11bGF0aW9uIGZvciB3c2NvbnMKK3Bz
ZXVkby1kZXZpY2UJaXRlCQkxCSMgaXRlIGVtdWxhdGlvbiBmb3Igd3Njb25zCitwc2V1ZG8t
ZGV2aWNlCXB0eQkJNjQJIyBwc2V1ZG8tdGVybWluYWxzCisjcHNldWRvLWRldmljZQl0YgkJ
MQkjIHRhYmxldCBsaW5lIGRpc2NpcGxpbmUKKworIyByYW5kb20gbnVtYmVyIGdlbmVyYXRv
ciBwc2V1ZG8tZGV2aWNlCitwc2V1ZG8tZGV2aWNlCXJuZAkJCSMgL2Rldi9yYW5kb20gYW5k
IGluLWtlcm5lbCBnZW5lcmF0b3IKKyNvcHRpb25zIAlSTkRfQ09NCQkJIyB1c2UgImNvbSIg
cmFuZG9tbmVzcyBhcyB3ZWxsIChCUk9LRU4pCmRpZmYgLXJ1TiBzcmMvc3lzL2FyY2gvbWFj
NjhrLm9yaWcvY29uZi9maWxlcy5tYWM2OGsgc3JjL3N5cy9hcmNoL21hYzY4ay9jb25mL2Zp
bGVzLm1hYzY4awotLS0gc3JjL3N5cy9hcmNoL21hYzY4ay5vcmlnL2NvbmYvZmlsZXMubWFj
NjhrCVN1biBTZXAgIDIgMDg6NDM6MzEgMjAwMQorKysgc3JjL3N5cy9hcmNoL21hYzY4ay9j
b25mL2ZpbGVzLm1hYzY4awlTdW4gU2VwIDE2IDEwOjM2OjA1IDIwMDEKQEAgLTEyMyw2ICsx
MjMsMTQgQEAKICNhdHRhY2gJcXNjIGF0IG51YnVzCiAjZmlsZQlhcmNoL21hYzY4ay9udWJ1
cy9xc2MuYwkJcXNjCiAKKyMKKyMgTWFjaGluZS1pbmRlcGVuZGVudCBBVEEgZHJpdmVycwor
IworaW5jbHVkZQkiZGV2L2F0YS9maWxlcy5hdGEiCisKK2F0dGFjaAl3ZGMgYXQgb2Jpb19u
b3JtIHdpdGggd2RjX29iaW8KK2ZpbGUJYXJjaC9tYWM2OGsvb2Jpby93ZGNfb2Jpby5jCXdk
Y19vYmlvCisKIGRldmljZQl6c2MgeyBjaGFubmVsID0gLTEgfQogYXR0YWNoCXpzYyBhdCBv
YmlvX25vcm0KIGZpbGUJYXJjaC9tYWM2OGsvZGV2L3pzLmMJCXpzYyBuZWVkcy1mbGFnCkBA
IC0xODUsNiArMTkzLDkgQEAKIAogIyBSQUlEZnJhbWUKIG1ham9yCXtyYWlkID0gMjB9CisK
KyNBVEEgZGlzaworbWFqb3IJe3dkID0gMjJ9CiAKICMgQ29tcGF0aWJpbGl0eSBtb2R1bGVz
CiAKZGlmZiAtcnVOIHNyYy9zeXMvYXJjaC9tYWM2OGsub3JpZy9pbmNsdWRlL2J1cy5oIHNy
Yy9zeXMvYXJjaC9tYWM2OGsvaW5jbHVkZS9idXMuaAotLS0gc3JjL3N5cy9hcmNoL21hYzY4
ay5vcmlnL2luY2x1ZGUvYnVzLmgJU3VuIFNlcCAgMiAwODo0Mzo0MyAyMDAxCisrKyBzcmMv
c3lzL2FyY2gvbWFjNjhrL2luY2x1ZGUvYnVzLmgJU3VuIFNlcCAxNiAxOToxNDo0MiAyMDAx
CkBAIC03Nyw2ICs3Nyw4IEBACiB0eXBlZGVmIHVfbG9uZyBidXNfYWRkcl90OwogdHlwZWRl
ZiB1X2xvbmcgYnVzX3NpemVfdDsKIAorI2RlZmluZSBfX0JVU19TUEFDRV9IQVNfU1RSRUFN
X01FVEhPRFMJMQorCiAvKgogICogQWNjZXNzIG1ldGhvZHMgZm9yIGJ1cyByZXNvdXJjZXMg
YW5kIGFkZHJlc3Mgc3BhY2UuCiAgKi8KZGlmZiAtcnVOIHNyYy9zeXMvYXJjaC9tYWM2OGsu
b3JpZy9tYWM2OGsvY29uZi5jIHNyYy9zeXMvYXJjaC9tYWM2OGsvbWFjNjhrL2NvbmYuYwot
LS0gc3JjL3N5cy9hcmNoL21hYzY4ay5vcmlnL21hYzY4ay9jb25mLmMJU3VuIFNlcCAgMiAw
ODo0Mzo1MiAyMDAxCisrKyBzcmMvc3lzL2FyY2gvbWFjNjhrL21hYzY4ay9jb25mLmMJU3Vu
IFNlcCAxNiAxMDozNjowNyAyMDAxCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAic3Qu
aCIKICNpbmNsdWRlICJ2Y29kYS5oIgogI2luY2x1ZGUgInZuZC5oIgorI2luY2x1ZGUgIndk
LmgiCiAKIC8qIE5vIGNkZXYgZm9yIG1kICovCiAKQEAgLTcxLDYgKzcyLDcgQEAKIGJkZXZf
ZGVjbChzdCk7CiBiZGV2X2RlY2woc3cpOwogYmRldl9kZWNsKHZuZCk7CitiZGV2X2RlY2wo
d2QpOwogCiBzdHJ1Y3QgYmRldnN3CWJkZXZzd1tdID0KIHsKQEAgLTk2LDYgKzk4LDcgQEAK
IAliZGV2X2xrbV9kdW1teSgpLAkJLyogMTkgKi8KIAliZGV2X2Rpc2tfaW5pdChOUkFJRCxy
YWlkKSwJLyogMjA6IFJBSURmcmFtZSBkaXNrIGRyaXZlciAqLwogCWJkZXZfZGlza19pbml0
KE5GRCwgZmQpLAkvKiAyMTogU29ueSBmbG9wcHkgZGlzayAqLworCWJkZXZfZGlza19pbml0
KE5XRCwgd2QpLAkvKiAyMjogSURFIGRpc2sgKi8KIH07CiBpbnQJbmJsa2RldiA9IHNpemVv
ZihiZGV2c3cpIC8gc2l6ZW9mKGJkZXZzd1swXSk7CiAKQEAgLTE2MSw2ICsxNjQsNyBAQAog
Y2Rldl9kZWNsKHpzYyk7CiBjZGV2X2RlY2woc2NzaWJ1cyk7CiBjZGV2X2RlY2wodmNfbmJf
KTsKK2NkZXZfZGVjbCh3ZCk7CiAKIGRldl9kZWNsKGZpbGVkZXNjLG9wZW4pOwogCkBAIC0y
MTQsNiArMjE4LDcgQEAKIAljZGV2X21vdXNlX2luaXQoTldTTVVYLCB3c211eCksCS8qIDQ1
OiB3cyBtdWx0aXBsZXhvciAqLwogCWNkZXZfd3NkaXNwbGF5X2luaXQoTldTRElTUExBWSx3
c2Rpc3BsYXkpLCAvKiA0NjogZnJhbWUgYnVmZmVycywgZXRjLiAqLwogCWNkZXZfdmNfbmJf
aW5pdChOVkNPREEsdmNfbmJfKSwJLyogNDc6IFZlbnVzIGNhY2hlIGRyaXZlciAoQ29kYSkg
Ki8KKwljZGV2X2Rpc2tfaW5pdChOV0Qsd2QpLCAvKiA0ODogSURFIGRpc2sgKi8KIH07CiBp
bnQJbmNocmRldiA9IHNpemVvZihjZGV2c3cpIC8gc2l6ZW9mKGNkZXZzd1swXSk7CiAKQEAg
LTMwMyw2ICszMDgsNyBAQAogCS8qIDQ1ICovCU5PREVWLAogCS8qIDQ2ICovCU5PREVWLAog
CS8qIDQ3ICovCU5PREVWLAorCS8qIDQ4ICovCTIyLAogfTsKIAogZGV2X3QKZGlmZiAtcnVO
IHNyYy9zeXMvYXJjaC9tYWM2OGsub3JpZy9tYWM2OGsvbWFjaGRlcC5jIHNyYy9zeXMvYXJj
aC9tYWM2OGsvbWFjNjhrL21hY2hkZXAuYwotLS0gc3JjL3N5cy9hcmNoL21hYzY4ay5vcmln
L21hYzY4ay9tYWNoZGVwLmMJU3VuIFNlcCAgMiAwODo0Mzo1OSAyMDAxCisrKyBzcmMvc3lz
L2FyY2gvbWFjNjhrL21hYzY4ay9tYWNoZGVwLmMJU3VuIFNlcCAxNiAxMDozNjowOSAyMDAx
CkBAIC0xNTYsNiArMTU2LDcgQEAKIHVfbG9uZwlJT0Jhc2U7CiAKIHZhZGRyX3QJU0NTSUJh
c2U7Cit1X2xvbmcJSURFQmFzZTsKIAogLyogVGhlc2UgYXJlIHVzZWQgdG8gbWFwIGtlcm5l
bCBzcGFjZTogKi8KIGV4dGVybiBpbnQgbnVtcmFuZ2VzOwpAQCAtMjI4Niw2ICsyMjg3LDEy
IEBACiAJCVZpYTFCYXNlID0gKHZvbGF0aWxlIHVfY2hhciAqKWJhc2U7CiAJCXNjY0EgPSAo
dm9sYXRpbGUgdV9jaGFyICopYmFzZSArIDB4YzAyMDsKIAkJU0NTSUJhc2UgPSBiYXNlICsg
MHgxMDAwMDsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGN1cnJlbnRfbWFjX21vZGVsLT5t
YWNoaW5laWQpIHsKKwkJY2FzZSBNQUNIX01BQ1A1ODA6CisJCWNhc2UgTUFDSF9NQUNRNjMw
OgorCQkJSURFQmFzZSA9IDB4NTBmMWEwMDA7CisJCQlicmVhazsKKwkJfQogCQlicmVhazsK
IAljYXNlIE1BQ0hfQ0xBU1NQNTgwOgogCQkvKgpAQCAtMjMxMiw2ICsyMzE5LDEyIEBACiAJ
CVZpYTFCYXNlID0gKHZvbGF0aWxlIHVfY2hhciAqKWJhc2U7CiAJCXNjY0EgPSAodm9sYXRp
bGUgdV9jaGFyICopIGJhc2UgKyAweDQwMDA7CiAJCVNDU0lCYXNlID0gYmFzZTsKKwkJc3dp
dGNoIChjdXJyZW50X21hY19tb2RlbC0+bWFjaGluZWlkKSB7CisJCWNhc2UgTUFDSF9NQUNQ
QjE1MDoKKwkJY2FzZSBNQUNIX01BQ1BCMTkwOgorCQkJSURFQmFzZSA9IDB4NTBmMWEwMDA7
CisJCQlicmVhazsKKwkJfQogCQlicmVhazsKIAljYXNlIE1BQ0hfQ0xBU1NJSWZ4OgogCQkv
KgpkaWZmIC1ydU4gc3JjL3N5cy9hcmNoL21hYzY4ay5vcmlnL29iaW8vd2RjX29iaW8uYyBz
cmMvc3lzL2FyY2gvbWFjNjhrL29iaW8vd2RjX29iaW8uYwotLS0gc3JjL3N5cy9hcmNoL21h
YzY4ay5vcmlnL29iaW8vd2RjX29iaW8uYwlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkKKysr
IHNyYy9zeXMvYXJjaC9tYWM2OGsvb2Jpby93ZGNfb2Jpby5jCVR1ZSBTZXAgMTggMTQ6MDE6
NDMgMjAwMQpAQCAtMCwwICsxLDI4MCBAQAorLyoJJE5ldEJTRDogd2RjX29iaW8uYyBFeHAg
JCAqLworCisvKgorICogQ29weXJpZ2h0IChjKSAyMDAwIFRha2VzaGkgU2hpYmFnYWtpICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIG1hYzY4ayBPQklPLUlERSBhdHRhY2htZW50
IGNyZWF0ZWQgYnkgVGFrZXNoaSBTaGliYWdha2kKKyAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNwZWNpYWwgdGhhbmtzIEtlbiBOYWthdGEKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlv
bmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQorICogICAgbXVzdCBkaXNw
bGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgorICoJVGhpcyBwcm9kdWN0IGlu
Y2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBDaGFybGVzIE0uIEhhbm51bS4KKyAqIDQu
IFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cworICogICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVY
UFJFU1MgT1IKKyAqIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKyAqIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
CisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsCisgKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxzeXMv
dHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvc3lzdG0u
aD4KKyNpbmNsdWRlIDxzeXMvZGV2aWNlLmg+CisjaW5jbHVkZSA8c3lzL21hbGxvYy5oPgor
CisjaW5jbHVkZSA8bWFjaGluZS9idXMuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2ludHIuaD4K
KyNpbmNsdWRlIDxtYWNoaW5lL2NwdS5oPgorI2luY2x1ZGUgPG1hY2hpbmUvdmlhcmVnLmg+
CisKKyNpbmNsdWRlIDxtYWM2OGsvb2Jpby9vYmlvdmFyLmg+CisKKyNpbmNsdWRlIDxkZXYv
YXRhL2F0YXZhci5oPgorI2luY2x1ZGUgPGRldi9pYy93ZGN2YXIuaD4KKworI2RlZmluZQlX
RENfT0JJT19SRUdfTlBPUlRTCTgKKyNkZWZpbmUgV0RDX09CSU9fQlVTX1NQQUNFX1NJWkUJ
MHg0MAorI2RlZmluZQlXRENfT0JJT19BVVhSRUdfT0ZGU0VUCTB4MzgKKyNkZWZpbmUJV0RD
X09CSU9fQVVYUkVHX05QT1JUUwkxCisjZGVmaW5lCVdEQ19PQklPX0lTUl9PRkZTRVQJMHgx
MDEKKyNkZWZpbmUJV0RDX09CSU9fSVNSX05QT1JUUwkxCisKKy8qCisgKiBYWFggVGhpcyBj
b2RlIGN1cnJlbnRseSBkb2Vzbid0IGV2ZW4gdHJ5IHRvIGFsbG93IDMyLWJpdCBkYXRhIHBv
cnQgdXNlLgorICovCisKK3N0cnVjdCB3ZGNfb2Jpb19zb2Z0YyB7CisJc3RydWN0ICB3ZGNf
c29mdGMgc2Nfd2RjZGV2OworCXN0cnVjdCAgY2hhbm5lbF9zb2Z0YyAqd2RjX2NoYW5wdHI7
CisJc3RydWN0ICBjaGFubmVsX3NvZnRjIHdkY19jaGFubmVsOworCXZvaWQgICAgKnNjX2lo
OworfTsKKworaW50CXdkY19vYmlvX21hdGNoCV9fUCgoc3RydWN0IGRldmljZSAqLCBzdHJ1
Y3QgY2ZkYXRhICosIHZvaWQgKikpOwordm9pZAl3ZGNfb2Jpb19hdHRhY2gJX19QKChzdHJ1
Y3QgZGV2aWNlICosIHN0cnVjdCBkZXZpY2UgKiwgdm9pZCAqKSk7Cit2b2lkCXdkY19vYmlv
X2ludHIgX19QKCh2b2lkICopKTsKK3ZvaWQJbWFjNjhrX2JzaF93ZGNfc2V0X3N0cmlkZSBf
X1AoKGJ1c19zcGFjZV90YWdfdCB0LAorCWJ1c19zcGFjZV9oYW5kbGVfdCAqaCwgaW50IHN0
cmlkZSkpOwordV9pbnQxNl90CW1hYzY4a19ic3IyX3dkY19nZW4gX19QKChidXNfc3BhY2Vf
dGFnX3QgdCwKKwkJYnVzX3NwYWNlX2hhbmRsZV90ICpic2gsIGJ1c19zaXplX3Qgb2Zmc2V0
KSk7CisKK3N0cnVjdCBjZmF0dGFjaCB3ZGNfb2Jpb19jYSA9IHsKKwlzaXplb2Yoc3RydWN0
IHdkY19vYmlvX3NvZnRjKSwgd2RjX29iaW9fbWF0Y2gsIHdkY19vYmlvX2F0dGFjaAorfTsK
KworaW50Cit3ZGNfb2Jpb19tYXRjaChwYXJlbnQsIG1hdGNoLCBhdXgpCisJc3RydWN0IGRl
dmljZSAqcGFyZW50OworCXN0cnVjdCBjZmRhdGEgKm1hdGNoOworCXZvaWQgKmF1eDsKK3sK
KwlzdHJ1Y3Qgb2Jpb19hdHRhY2hfYXJncyAqb2EgPSAoc3RydWN0IG9iaW9fYXR0YWNoX2Fy
Z3MgKikgYXV4OworCXN0cnVjdCBjaGFubmVsX3NvZnRjIGNoOworCWV4dGVybiB1X2xvbmcg
SURFQmFzZTsKKwlzdGF0aWMgaW50IHdkY19tYXRjaGVkID0gMDsKKwlpbnQgcmVzdWx0ID0g
MDsKKworCW1lbXNldCgmY2gsIDAsIHNpemVvZihjaCkpOworCisJc3dpdGNoIChjdXJyZW50
X21hY19tb2RlbC0+bWFjaGluZWlkKSB7CisJY2FzZSBNQUNIX01BQ1BCMTUwOgorCWNhc2Ug
TUFDSF9NQUNQQjE5MDoKKwljYXNlIE1BQ0hfTUFDUDU4MDoKKwljYXNlIE1BQ0hfTUFDUTYz
MDoKKwkJY2guY21kX2lvdCA9IGNoLmN0bF9pb3QgPSBvYS0+b2FfdGFnOworCisJCWlmIChi
dXNfc3BhY2VfbWFwKGNoLmNtZF9pb3QsCisJCQkJICBJREVCYXNlLCBXRENfT0JJT19CVVNf
U1BBQ0VfU0laRSwgMCwgJmNoLmNtZF9pb2gpKQorCQkJcmV0dXJuIDA7CisKKwkJbWFjNjhr
X2JzaF93ZGNfc2V0X3N0cmlkZShjaC5jbWRfaW90LCAmY2guY21kX2lvaCwgNCk7CisKKwkJ
aWYgKGJ1c19zcGFjZV9zdWJyZWdpb24oY2guY21kX2lvdCwKKwkJCQkgICAgICAgIGNoLmNt
ZF9pb2gsIFdEQ19PQklPX0FVWFJFR19PRkZTRVQsCisJCQkJCVdEQ19PQklPX0FVWFJFR19O
UE9SVFMsICZjaC5jdGxfaW9oKSkKKwkJCXJldHVybiAwOworCisJCXJlc3VsdCA9IHdkY3By
b2JlKCZjaCk7CisKKwkJYnVzX3NwYWNlX3VubWFwKGNoLmNtZF9pb3QsIGNoLmNtZF9pb2gs
IFdEQ19PQklPX0JVU19TUEFDRV9TSVpFKTsKKworCQlpZiAocmVzdWx0KQorCQkJd2RjX21h
dGNoZWQgPSAxOworCQlyZXR1cm4gKHJlc3VsdCk7CisJfQorCXJldHVybiAwOworfQorCitz
dGF0aWMgYnVzX3NwYWNlX3RhZ190CQl3ZGNfb2Jpb19pc3JfdGFnOworc3RhdGljIGJ1c19z
cGFjZV9oYW5kbGVfdAl3ZGNfb2Jpb19pc3JfaGRsOworc3RhdGljIHN0cnVjdCBjaGFubmVs
X3NvZnRjCSpjaF9zYyA9IE5VTEw7CisKK3ZvaWQKK3dkY19vYmlvX2ludHIoYXJnKQorCXZv
aWQgKmFyZzsKK3sKKwl1bnNpZ25lZCBjaGFyIHN0YXR1czsKKworCXN0YXR1cyA9IGJ1c19z
cGFjZV9yZWFkXzEod2RjX29iaW9faXNyX3RhZywKKwkJCQkgIHdkY19vYmlvX2lzcl9oZGws
IDApOworCWlmIChzdGF0dXMgJiAweDIwKSB7CisJCXdkY2ludHIoY2hfc2MpOworCQlidXNf
c3BhY2Vfd3JpdGVfMSh3ZGNfb2Jpb19pc3JfdGFnLAorCQkJCSAgd2RjX29iaW9faXNyX2hk
bCwgMCwgc3RhdHVzJn4weDIwKTsKKwl9Cit9CisKK3ZvaWQKK3dkY19vYmlvX2F0dGFjaChw
YXJlbnQsIHNlbGYsIGF1eCkKKwlzdHJ1Y3QgZGV2aWNlICpwYXJlbnQ7CisJc3RydWN0IGRl
dmljZSAqc2VsZjsKKwl2b2lkICphdXg7Cit7CisJc3RydWN0IHdkY19vYmlvX3NvZnRjICpz
YyA9ICh2b2lkICopc2VsZjsKKwlzdHJ1Y3Qgb2Jpb19hdHRhY2hfYXJncyAqb2EgPSBhdXg7
CisJc3RydWN0IGNoYW5uZWxfc29mdGMgKmNocCA9ICZzYy0+d2RjX2NoYW5uZWw7CisJZXh0
ZXJuIHVfbG9uZyBJREVCYXNlOworCisJb2EtPm9hX2FkZHIgPSBJREVCYXNlOworCXNjLT53
ZGNfY2hhbm5lbC5jbWRfaW90ID0gc2MtPndkY19jaGFubmVsLmN0bF9pb3QgPSBvYS0+b2Ff
dGFnOworCisJaWYgKGJ1c19zcGFjZV9tYXAoc2MtPndkY19jaGFubmVsLmNtZF9pb3QsCisJ
CQkgIG9hLT5vYV9hZGRyLCBXRENfT0JJT19CVVNfU1BBQ0VfU0laRSwgMCwgJnNjLT53ZGNf
Y2hhbm5lbC5jbWRfaW9oKSkgeworCQlwcmludGYoIiVzOiBjb3VsZG4ndCBtYXAgcmVnaXN0
ZXJzXG4iLAorCQkJc2MtPnNjX3dkY2Rldi5zY19kZXYuZHZfeG5hbWUpOworCQlyZXR1cm47
CisJfQorCisJbWFjNjhrX2JzaF93ZGNfc2V0X3N0cmlkZShzYy0+d2RjX2NoYW5uZWwuY21k
X2lvdCwgJnNjLT53ZGNfY2hhbm5lbC5jbWRfaW9oLCA0KTsKKworCWlmIChidXNfc3BhY2Vf
c3VicmVnaW9uKHNjLT53ZGNfY2hhbm5lbC5jbWRfaW90LAorCQkJCXNjLT53ZGNfY2hhbm5l
bC5jbWRfaW9oLCBXRENfT0JJT19BVVhSRUdfT0ZGU0VULAorCQkJCVdEQ19PQklPX0FVWFJF
R19OUE9SVFMsICZzYy0+d2RjX2NoYW5uZWwuY3RsX2lvaCkpCisJCXJldHVybjsKKwlzd2l0
Y2ggKGN1cnJlbnRfbWFjX21vZGVsLT5tYWNoaW5laWQpIHsKKwljYXNlIE1BQ0hfTUFDUDU4
MDoKKwljYXNlIE1BQ0hfTUFDUTYzMDoKKwkJLyoKKwkJICogUXVhZHJhL1BlcmZvcm1hIElE
RSBnZW5lcmF0ZXMgcHNldWRvIE51YnVzIGludHIgYXQgc2xvdCBGCisJCSAqLworCQlwcmlu
dGYoIiAoUXVhZHJhL1BlcmZvcm1hIHNlcmllcyBJREUgaW50ZXJmYWNlKSIpOworCisJICAg
IAl3ZGNfb2Jpb19pc3JfdGFnID0gb2EtPm9hX3RhZzsKKworCQlpZiAoYnVzX3NwYWNlX21h
cCh3ZGNfb2Jpb19pc3JfdGFnLAorCQkJCSAgb2EtPm9hX2FkZHIrV0RDX09CSU9fSVNSX09G
RlNFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRENfT0JJT19JU1Jf
TlBPUlRTLCAwLCAmd2RjX29iaW9faXNyX2hkbCkpIHsKKwkJCXByaW50ZigiJXM6IGNvdWxk
bid0IG1hcCBpbnRyIHN0YXR1cyByZWdpc3RlclxuIiwKKwkJCQlzYy0+c2Nfd2RjZGV2LnNj
X2Rldi5kdl94bmFtZSk7CisJCQlyZXR1cm47CisJCX0KKworCQlhZGRfbnVidXNfaW50cigw
eGYsICh2b2lkICgqKSh2b2lkKikpd2RjX29iaW9faW50ciwgKHZvaWQgKikmc2MtPnNjX3dk
Y2Rldik7CisJCWNoX3NjID0gJnNjLT53ZGNfY2hhbm5lbDsKKworCQlicmVhazsKKwljYXNl
IE1BQ0hfTUFDUEIxNTA6CisJY2FzZSBNQUNIX01BQ1BCMTkwOgorCQkvKgorCQkgKiBQb3dl
ckJvb2sgSURFIGdlbmVyYXRlcyBwc2V1ZG8gTnVCdXMgaW50ciBhdCBzbG90IEMKKwkJICov
CisJCXByaW50ZigiIChQb3dlckJvb2sgc2VyaWVzIElERSBpbnRlcmZhY2UpIik7CisKKwkg
ICAgCXdkY19vYmlvX2lzcl90YWcgPSBvYS0+b2FfdGFnOworCisJCWlmIChidXNfc3BhY2Vf
bWFwKHdkY19vYmlvX2lzcl90YWcsCisJCQkJICBvYS0+b2FfYWRkcitXRENfT0JJT19JU1Jf
T0ZGU0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdEQ19PQklPX0lT
Ul9OUE9SVFMsIDAsICZ3ZGNfb2Jpb19pc3JfaGRsKSkgeworCQkJcHJpbnRmKCIlczogY291
bGRuJ3QgbWFwIGludHIgc3RhdHVzIHJlZ2lzdGVyXG4iLAorCQkJCXNjLT5zY193ZGNkZXYu
c2NfZGV2LmR2X3huYW1lKTsKKwkJCXJldHVybjsKKwkJfQorCisJCWFkZF9udWJ1c19pbnRy
KDB4YywgKHZvaWQgKCopKHZvaWQqKSl3ZGNfb2Jpb19pbnRyLCAodm9pZCAqKSZzYy0+c2Nf
d2RjZGV2KTsKKwkJY2hfc2MgPSAmc2MtPndkY19jaGFubmVsOworCisJCWJyZWFrOworCX0K
KworCXNjLT5zY193ZGNkZXYuY2FwIHw9IFdEQ19DQVBBQklMSVRZX0RBVEExNjsKKwlzYy0+
c2Nfd2RjZGV2LlBJT19jYXAgPSAwOworCXNjLT53ZGNfY2hhbnB0ciA9ICZzYy0+d2RjX2No
YW5uZWw7CisJc2MtPnNjX3dkY2Rldi5jaGFubmVscyA9ICZzYy0+d2RjX2NoYW5wdHI7CisJ
c2MtPnNjX3dkY2Rldi5uY2hhbm5lbHMgPSAxOworCWNocC0+Y2hhbm5lbCA9IDA7CisJY2hw
LT53ZGMgPSAmc2MtPnNjX3dkY2RldjsKKwljaHAtPmNoX3F1ZXVlID0gbWFsbG9jKHNpemVv
ZihzdHJ1Y3QgY2hhbm5lbF9xdWV1ZSksIE1fREVWQlVGLCBNX05PV0FJVCk7CisKKwlpZiAo
Y2hwLT5jaF9xdWV1ZSA9PSBOVUxMKSB7CisJCXByaW50ZigiJXM6IGNhbid0IGFsbG9jYXRl
IG1lbW9yeSBmb3IgY29tbWFuZCBxdWV1ZSIsCisJCQlzYy0+c2Nfd2RjZGV2LnNjX2Rldi5k
dl94bmFtZSk7CisJCXJldHVybjsKKwl9CisJCisJcHJpbnRmKCJcbiIpOworCisJd2RjYXR0
YWNoKCZzYy0+d2RjX2NoYW5uZWwpOworfQorCit1X2ludDE2X3QKK21hYzY4a19ic3IyX3dk
Y19nZW4oYnVzX3NwYWNlX3RhZ190IHQsIGJ1c19zcGFjZV9oYW5kbGVfdCAqYnNoLCBidXNf
c2l6ZV90IG9mZnNldCkKK3sKKyAgICAgICAgcmV0dXJuICgqKHZvbGF0aWxlIHVfaW50MTZf
dCAqKSAoYnNoLT5iYXNlICsgb2Zmc2V0ICogYnNoLT5zdHJpZGUpKTsKK30KKwordm9pZAor
bWFjNjhrX2JzaF93ZGNfc2V0X3N0cmlkZShidXNfc3BhY2VfdGFnX3QgdCwgYnVzX3NwYWNl
X2hhbmRsZV90ICpoLCBpbnQgc3RyaWRlKQoreworCWgtPnN0cmlkZSA9IHN0cmlkZTsKKyAg
ICAgICAgaC0+YnNyMSA9IG1hYzY4a19ic3IxX2dlbjsKKyAgICAgICAgaC0+YnNyMiA9IG1h
YzY4a19ic3IyX3dkY19nZW47CisgICAgICAgIGgtPmJzcjQgPSBtYWM2OGtfYnNyNF9nZW47
CisgICAgICAgIGgtPmJzcnMyID0gbWFjNjhrX2JzcnMyX2dlbjsKKyAgICAgICAgaC0+YnNy
czQgPSBtYWM2OGtfYnNyczRfZ2VuOworICAgICAgICBoLT5ic3JtMSA9IG1hYzY4a19ic3Jt
MV9nZW47CisgICAgICAgIGgtPmJzcm0yID0gbWFjNjhrX2Jzcm0yX3N3YXA7CisgICAgICAg
IGgtPmJzcm00ID0gbWFjNjhrX2Jzcm00X3N3YXA7CisgICAgICAgIGgtPmJzcm1zMiA9IG1h
YzY4a19ic3JtMjsKKyAgICAgICAgaC0+YnNybXM0ID0gbWFjNjhrX2Jzcm00OworICAgICAg
ICBoLT5ic3JyMSA9IG1hYzY4a19ic3JyMV9nZW47CisgICAgICAgIGgtPmJzcnIyID0gbWFj
NjhrX2JzcnIyX2dlbjsKKyAgICAgICAgaC0+YnNycjQgPSBtYWM2OGtfYnNycjRfZ2VuOwor
ICAgICAgICBoLT5ic3JyczIgPSBtYWM2OGtfYnNycnMyX2dlbjsKKyAgICAgICAgaC0+YnNy
cnM0ID0gbWFjNjhrX2JzcnJzNF9nZW47CisgICAgICAgIGgtPmJzdzEgPSBtYWM2OGtfYnN3
MV9nZW47CisgICAgICAgIGgtPmJzdzIgPSBtYWM2OGtfYnN3Ml9nZW47CisgICAgICAgIGgt
PmJzdzQgPSBtYWM2OGtfYnN3NF9nZW47CisgICAgICAgIGgtPmJzd3MyID0gbWFjNjhrX2Jz
d3MyX2dlbjsKKyAgICAgICAgaC0+YnN3czQgPSBtYWM2OGtfYnN3czRfZ2VuOworICAgICAg
ICBoLT5ic3dtMiA9IG1hYzY4a19ic3dtMl9zd2FwOworICAgICAgICBoLT5ic3dtNCA9IG1h
YzY4a19ic3dtNF9zd2FwOworICAgICAgICBoLT5ic3dtczIgPSBtYWM2OGtfYnN3bTI7Cisg
ICAgICAgIGgtPmJzd21zNCA9IG1hYzY4a19ic3dtNDsKKyAgICAgICAgaC0+YnN3cjEgPSBt
YWM2OGtfYnN3cjFfZ2VuOworICAgICAgICBoLT5ic3dyMiA9IG1hYzY4a19ic3dyMl9nZW47
CisgICAgICAgIGgtPmJzd3I0ID0gbWFjNjhrX2Jzd3I0X2dlbjsKKyAgICAgICAgaC0+YnN3
cnMyID0gbWFjNjhrX2Jzd3JzMl9nZW47CisgICAgICAgIGgtPmJzd3JzNCA9IG1hYzY4a19i
c3dyczRfZ2VuOworICAgICAgICBoLT5ic3NtMSA9IG1hYzY4a19ic3NtMV9nZW47CisgICAg
ICAgIGgtPmJzc20yID0gbWFjNjhrX2Jzc20yX2dlbjsKKyAgICAgICAgaC0+YnNzbTQgPSBt
YWM2OGtfYnNzbTRfZ2VuOworICAgICAgICBoLT5ic3NyMSA9IG1hYzY4a19ic3NyMV9nZW47
CisgICAgICAgIGgtPmJzc3IyID0gbWFjNjhrX2Jzc3IyX2dlbjsKKyAgICAgICAgaC0+YnNz
cjQgPSBtYWM2OGtfYnNzcjRfZ2VuOworfQo=

--MS_Mac_OE_3088514820_1429766_MIME_Part--