Re: [UPDATE] Zerocopy patches, against 2.4.1-pre10

Ion Badulescu (ionut@cs.columbia.edu)
Sat, 27 Jan 2001 13:18:41 -0800 (PST)


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.

--375685179-76745159-980630321=:20615
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi Alexey,

On Sat, 27 Jan 2001 kuznet@ms2.inr.ac.ru wrote:

> > fits the new Linux model a bit better, as it has one descriptor per
> > packet, not one per fragment (like the current implementation).
>
> Yes. Absence of such mode with acenic is big pain in ass.

And, at least for the starfire, using buffer descriptors eats up more
resources than using packet descriptors. So buffer descriptors are gone,
forever.

> Seems, this is pretty common bug. At least, perfect checksumming
> of chunks with any size and alignment is so big boast of
> alteon people, that it is clearly rather exception than rule. 8)8)

Oh well. Don't we wish hardware were perfect.. :-)

It's not too bad for the starfire, either, as it doesn't appear to suffer
from any alignment issues, and the only fragments it has problem with are
1-byte fragments (2-byte and larger are ok). And I'm still hoping that
Adaptec will release updated firmware (and that they will also approve the
inclusion of their firmware with the Linux driver).

If they don't approve it, maybe I'll add a config option so that the user
can download their own copy of the firmware from Adaptec's site, place it
in /etc somewhere, give the location to the driver and have the driver
open the files from kernel space and process them. It would be ugly
though, and a big PITA.

> I think you have to check for wrong combination of alignment/size and
> to call skb_checksum_help() and to disable checksumming if combination
> is bad.

Good, thanks a lot for the pointer. Maybe I went a bit overboard with my
fix, as I revert to CPU checksumming if *any* fragment (not just the last
one in the chain) has only 1 byte. But it seems to work well now.

I've attached a diff for the latest driver (and firmware) version, against
2.4.1pre10+zerocopy. Sorry about MIME, but my pine is currently broken
(strips trailing spaces/tabs).

And, one final question: is it worth it for me to extract just the Rx
checksumming changes and send them to Linux/Alan, or should I just wait
for zerocopy to be included?

Thanks,
Ion

-- 
  It is better to keep your mouth shut and be thought a fool,
            than to open it and remove all doubt.

--375685179-76745159-980630321=:20615 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="starfire-zerocopy-2.diff" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.4.30.0101271318410.20615@age.cs.columbia.edu> Content-Description: Content-Disposition: attachment; filename="starfire-zerocopy-2.diff"

ZGlmZiAtdXJOWCBkaWZmX2tlcm5lbF9leGNsdWRlcyAvdXNyL3NyYy9sb2Nh bC9saW51eC0yLjQudmFuaWxsYS9kcml2ZXJzL25ldC9zdGFyZmlyZS5jIGxp bnV4LTIuNC9kcml2ZXJzL25ldC9zdGFyZmlyZS5jDQotLS0gL3Vzci9zcmMv bG9jYWwvbGludXgtMi40LnZhbmlsbGEvZHJpdmVycy9uZXQvc3RhcmZpcmUu YwlGcmkgQXVnIDExIDE1OjU3OjU4IDIwMDANCisrKyBsaW51eC0yLjQvZHJp dmVycy9uZXQvc3RhcmZpcmUuYwlTYXQgSmFuIDI3IDEyOjQ0OjM1IDIwMDEN CkBAIC0zNCw2ICszNCwxMCBAQA0KIAkNCiAJTEsxLjEuNCAoamdhcnppayk6 DQogCS0gTWVyZ2UgQmVja2VyIHZlcnNpb24gMS4wMw0KKw0KKwlMSzEuMi4w IChJb24gQmFkdWxlc2N1IDxpb251dEBjcy5jb2x1bWJpYS5lZHU+KQ0KKwkt IFN1cHBvcnQgaGFyZHdhcmUgUngvVHggY2hlY2tzdW1taW5nDQorCS0gQWRk IEdGUCBmaXJtd2FyZSB0YWtlbiBmcm9tIEFkYXB0ZWMncyBOZXR3YXJlIGRy aXZlcg0KICovDQogDQogLyogVGhlc2UgaWRlbnRpZnkgdGhlIGRyaXZlciBi YXNlIHZlcnNpb24gYW5kIG1heSBub3QgYmUgcmVtb3ZlZC4gKi8NCkBAIC00 MywxMSArNDcsMTcgQEANCiAiIFVwZGF0ZXMgYW5kIGluZm8gYXQgaHR0cDov L3d3dy5zY3lsZC5jb20vbmV0d29yay9zdGFyZmlyZS5odG1sXG4iOw0KIA0K IHN0YXRpYyBjb25zdCBjaGFyIHZlcnNpb24zW10gPQ0KLSIgKHVub2ZmaWNp YWwgMi40Lngga2VybmVsIHBvcnQsIHZlcnNpb24gMS4xLjQsIEF1Z3VzdCAx MCwgMjAwMClcbiI7DQorIiAodW5vZmZpY2lhbCAyLjQueCBrZXJuZWwgcG9y dCwgdmVyc2lvbiAxLjIuMCwgSmFudWFyeSAyNSwgMjAwMSlcbiI7DQogDQog LyogVGhlIHVzZXItY29uZmlndXJhYmxlIHZhbHVlcy4NCiAgICBUaGVzZSBt YXkgYmUgbW9kaWZpZWQgd2hlbiBhIGRyaXZlciBtb2R1bGUgaXMgbG9hZGVk LiovDQogDQorLyoNCisgKiBUaGUgY3VycmVudCBmcmFtZSBwcm9jZXNzb3Ig ZmlybXdhcmUgZmFpbHMgdG8gY2hlY2tzdW0gYSBmcmFnbWVudA0KKyAqIG9m IGxlbmd0aCAxLiBJZiBhbmQgd2hlbiB0aGlzIGlzIGZpeGVkLCB0aGUgI2Rl ZmluZSBiZWxvdyBjYW4gYmUgcmVtb3ZlZC4NCisgKi8NCisjZGVmaW5lIEhB U19CUk9LRU5fRklSTVdBUkUNCisNCiAvKiBVc2VkIGZvciB0dW5pbmcgaW50 ZXJydXB0IGxhdGVuY3kgdnMuIG92ZXJoZWFkLiAqLw0KIHN0YXRpYyBpbnQg aW50ZXJydXB0X21pdGlnYXRpb24gPSAweDA7DQogDQpAQCAtMTE3LDEyICsx MjcsMTUgQEANCiAjaW5jbHVkZSA8YXNtL2JpdG9wcy5oPg0KICNpbmNsdWRl IDxhc20vaW8uaD4NCiANCisjaW5jbHVkZSAic3RhcmZpcmVfZmlybXdhcmUu aCINCisNCiBNT0RVTEVfQVVUSE9SKCJEb25hbGQgQmVja2VyIDxiZWNrZXJA c2N5bGQuY29tPiIpOw0KIE1PRFVMRV9ERVNDUklQVElPTigiQWRhcHRlYyBT dGFyZmlyZSBFdGhlcm5ldCBkcml2ZXIiKTsNCiBNT0RVTEVfUEFSTShtYXhf aW50ZXJydXB0X3dvcmssICJpIik7DQogTU9EVUxFX1BBUk0obXR1LCAiaSIp Ow0KIE1PRFVMRV9QQVJNKGRlYnVnLCAiaSIpOw0KIE1PRFVMRV9QQVJNKHJ4 X2NvcHlicmVhaywgImkiKTsNCitNT0RVTEVfUEFSTShpbnRlcnJ1cHRfbWl0 aWdhdGlvbiwgImkiKTsNCiBNT0RVTEVfUEFSTShvcHRpb25zLCAiMS0iIF9f TU9EVUxFX1NUUklORyhNQVhfVU5JVFMpICJpIik7DQogTU9EVUxFX1BBUk0o ZnVsbF9kdXBsZXgsICIxLSIgX19NT0RVTEVfU1RSSU5HKE1BWF9VTklUUykg ImkiKTsNCiANCkBAIC0yNTYsMTkgKzI2OSwzMSBAQA0KIAlUeFRocmVzaG9s ZD0weDUwMEIwLA0KIAlDb21wbGV0aW9uSGlBZGRyPTB4NTAwQjQsIFR4Q29t cGxldGlvbkFkZHI9MHg1MDBCOCwNCiAJUnhDb21wbGV0aW9uQWRkcj0weDUw MEJDLCBSeENvbXBsZXRpb25RMkFkZHI9MHg1MDBDMCwNCi0JQ29tcGxldGlv blFDb25zdW1lcklkeD0weDUwMEM0LA0KKwlDb21wbGV0aW9uUUNvbnN1bWVy SWR4PTB4NTAwQzQsIFJ4RE1BQ3RybD0weDUwMEQwLA0KIAlSeERlc2NRQ3Ry bD0weDUwMEQ0LCBSeERlc2NRSGlBZGRyPTB4NTAwREMsIFJ4RGVzY1FBZGRy PTB4NTAwRTAsDQogCVJ4RGVzY1FJZHg9MHg1MDBFOCwgUnhETUFTdGF0dXM9 MHg1MDBGMCwgUnhGaWx0ZXJNb2RlPTB4NTAwRjQsDQotCVR4TW9kZT0weDU1 MDAwLA0KKwlUeE1vZGU9MHg1NTAwMCwgVHhHZnBNZW09MHg1ODAwMCwgUnhH ZnBNZW09MHg1YTAwMCwNCiB9Ow0KIA0KIC8qIEJpdHMgaW4gdGhlIGludGVy cnVwdCBzdGF0dXMvbWFzayByZWdpc3RlcnMuICovDQogZW51bSBpbnRyX3N0 YXR1c19iaXRzIHsNCi0JSW50ck5vcm1hbFN1bW1hcnk9MHg4MDAwLAlJbnRy QWJub3JtYWxTdW1tYXJ5PTB4MDIwMDAwMDAsDQotCUludHJSeERvbmU9MHgw MzAwLCBJbnRyUnhFbXB0eT0weDEwMDQwLCBJbnRyUnhQQ0lFcnI9MHg4MDAw MCwNCi0JSW50clR4RG9uZT0weDQwMDAsIEludHJUeEVtcHR5PTB4MTAwMCwg SW50clR4UENJRXJyPTB4ODAwMDAsDQotCVN0YXRzTWF4PTB4MDgwMDAwMDAs IExpbmtDaGFuZ2U9MHhmMDAwMDAwMCwNCi0JSW50clR4RGF0YUxvdz0weDAw MDQwMDAwLA0KKwlJbnRyTGlua0NoYW5nZT0weGYwMDAwMDAwLCBJbnRyU3Rh dHNNYXg9MHgwODAwMDAwMCwNCisJSW50ckFibm9ybWFsU3VtbWFyeT0weDAy MDAwMDAwLCBJbnRyR2VuZXJhbFRpbWVyPTB4MDEwMDAwMDAsDQorCUludHJT b2Z0d2FyZT0weDgwMDAwMCwgSW50clJ4Q29tcGxRMUxvdz0weDQwMDAwMCwN CisJSW50clR4Q29tcGxRTG93PTB4MjAwMDAwLCBJbnRyUENJPTB4MTAwMDAw LA0KKwlJbnRyRE1BRXJyPTB4MDgwMDAwLCBJbnRyVHhEYXRhTG93PTB4MDQw MDAwLA0KKwlJbnRyUnhDb21wbFEyTG93PTB4MDIwMDAwLCBJbnRyUnhEZXNj UTFMb3c9MHgwMTAwMDAsDQorCUludHJOb3JtYWxTdW1tYXJ5PTB4ODAwMCwg SW50clR4RG9uZT0weDQwMDAsDQorCUludHJUeERNQURvbmU9MHgyMDAwLCBJ bnRyVHhFbXB0eT0weDEwMDAsDQorCUludHJFYXJseVJ4UTI9MHgwODAwLCBJ bnRyRWFybHlSeFExPTB4MDQwMCwNCisJSW50clJ4UTJEb25lPTB4MDIwMCwg SW50clJ4UTFEb25lPTB4MDEwMCwNCisJSW50clJ4R0ZQRGVhZD0weDgwLCBJ bnRyUnhEZXNjUTJMb3c9MHg0MCwNCisJSW50ck5vVHhDc3VtPTB4MjAsIElu dHJUeEJhZElEPTB4MTAsDQorCUludHJIaVByaVR4QmFkSUQ9MHgwOCwgSW50 clJ4R2ZwPTB4MDQsDQorCUludHJUeEdmcD0weDAyLCBJbnRyUENJUGFkPTB4 MDEsDQorCS8qIG5vdCBxdWl0ZSBiaXRzICovDQorCUludHJSeERvbmU9SW50 clJ4UTJEb25lIHwgSW50clJ4UTFEb25lLA0KKwlJbnRyUnhFbXB0eT1JbnRy UnhEZXNjUTFMb3cgfCBJbnRyUnhEZXNjUTJMb3csDQogfTsNCiANCiAvKiBC aXRzIGluIHRoZSBSeEZpbHRlck1vZGUgcmVnaXN0ZXIuICovDQpAQCAtMjc3 LDYgKzMwMiwzNyBAQA0KIAlBY2NlcHRNdWx0aWNhc3Q9MHgxMCwgQWNjZXB0 TXlQaHlzPTB4RTA0MCwNCiB9Ow0KIA0KKy8qIEJpdHMgaW4gdGhlIFR4RGVz Y0N0cmwgcmVnaXN0ZXIuICovDQorZW51bSB0eF9jdHJsX2JpdHMgew0KKwlU eERlc2NTcGFjZVVubGltPTB4MDAsIFR4RGVzY1NwYWNlMzI9MHgxMCwgVHhE ZXNjU3BhY2U2ND0weDIwLA0KKwlUeERlc2NTcGFjZTEyOD0weDMwLCBUeERl c2NTcGFjZTI1Nj0weDQwLA0KKwlUeERlc2NUeXBlMD0weDAwLCBUeERlc2NU eXBlMT0weDAxLCBUeERlc2NUeXBlMj0weDAyLA0KKwlUeERlc2NUeXBlMz0w eDAzLCBUeERlc2NUeXBlND0weDA0LA0KKwlUeE5vRE1BQ29tcGxldGlvbj0w eDA4LCBUeERlc2NRNjRiaXQ9MHg4MCwNCisJVHhIaVByaUZJRk9UaHJlc2hT aGlmdD0yNCwgVHhQYWRMZW5TaGlmdD0xNiwNCisJVHhETUFCdXJzdFNpemVT aGlmdD04LA0KK307DQorDQorLyogQml0cyBpbiB0aGUgUnhEZXNjUUN0cmwg cmVnaXN0ZXIuICovDQorZW51bSByeF9jdHJsX2JpdHMgew0KKwlSeEJ1ZmZl ckxlblNoaWZ0PTE2LCBSeE1pbkRlc2NyVGhyZXNoU2hpZnQ9MCwNCisJUnhQ cmVmZXRjaE1vZGU9MHg4MDAwLCBSeDIwNDhRRW50cmllcz0weDQwMDAsDQor CVJ4VmFyaWFibGVRPTB4MjAwMCwgUnhEZXNjNjRiaXQ9MHgxMDAwLA0KKwlS eERlc2NRQWRkcjY0Yml0PTB4MDEwMCwNCisJUnhEZXNjU3BhY2U0PTB4MDAw LCBSeERlc2NTcGFjZTg9MHgxMDAsDQorCVJ4RGVzY1NwYWNlMTY9MHgyMDAs IFJ4RGVzY1NwYWNlMzI9MHgzMDAsDQorCVJ4RGVzY1NwYWNlNjQ9MHg0MDAs IFJ4RGVzY1NwYWNlMTI4PTB4NTAwLA0KKwlSeENvbnN1bWVyV3JFbj0weDgw LA0KK307DQorDQorLyogQml0cyBpbiB0aGUgUnhDb21wbGV0aW9uQWRkciBy ZWdpc3RlciAqLw0KK2VudW0gcnhfY29tcGxfYml0cyB7DQorCVJ4Q29tcGxR QWRkcjY0Yml0PTB4ODAsIFR4Q29tcGxQcm9kdWNlcldyRW49MHg0MCwNCisJ UnhDb21wbFR5cGUwPTB4MDAsIFJ4Q29tcGxUeXBlMT0weDEwLA0KKwlSeENv bXBsVHlwZTI9MHgyMCwgUnhDb21wbFR5cGUzPTB4MzAsDQorCVJ4Q29tcGxU aHJlc2hTaGlmdD0wLA0KK307DQorDQogLyogVGhlIFJ4IGFuZCBUeCBidWZm ZXIgZGVzY3JpcHRvcnMuICovDQogc3RydWN0IHN0YXJmaXJlX3J4X2Rlc2Mg ew0KIAl1MzIgcnhhZGRyOwkJCQkJLyogT3B0aW9uYWxseSA2NCBiaXRzLiAq Lw0KQEAgLTI4OCw4ICszNDQsMTIgQEANCiAvKiBDb21wbGV0aW9uIHF1ZXVl IGVudHJ5Lg0KICAgIFlvdSBtdXN0IHVwZGF0ZSB0aGUgcGFnZSBhbGxvY2F0 aW9uLCBpbml0X3JpbmcgYW5kIHRoZSBzaGlmdCBjb3VudCBpbiByeCgpDQog ICAgaWYgdXNpbmcgYSBsYXJnZXIgZm9ybWF0LiAqLw0KKyNkZWZpbmUgY3N1 bV9yeF9zdGF0dXMNCiBzdHJ1Y3QgcnhfZG9uZV9kZXNjIHsNCiAJdTMyIHN0 YXR1czsJCQkJCS8qIExvdyAxNiBiaXRzIGlzIGxlbmd0aC4gKi8NCisjaWZk ZWYgY3N1bV9yeF9zdGF0dXMNCisJdTMyIHN0YXR1czI7CQkJCS8qIExvdyAx NiBiaXRzIGlzIGNzdW0gKi8NCisjZW5kaWYNCiAjaWZkZWYgZnVsbF9yeF9z dGF0dXMNCiAJdTMyIHN0YXR1czI7DQogCXUxNiB2bGFuaWQ7DQpAQCAtMzAx LDE0ICszNjEsMjQgQEANCiAJUnhPSz0weDIwMDAwMDAwLCBSeEZJRk9FcnI9 MHgxMDAwMDAwMCwgUnhCdWZRMj0weDA4MDAwMDAwLA0KIH07DQogDQotLyog VHlwZSAxIFR4IGRlc2NyaXB0b3IuICovDQorLyogVHlwZSAwIFR4IGRlc2Ny aXB0b3IuICovDQorLyogSWYgbW9yZSBmcmFnbWVudHMgYXJlIG5lZWRlZCwg ZG9uJ3QgZm9yZ2V0IHRvIGNoYW5nZSB0aGUNCisgICBkZXNjcmlwdG9yIHNw YWNpbmcgYXMgd2VsbCEgKi8NCiBzdHJ1Y3Qgc3RhcmZpcmVfdHhfZGVzYyB7 DQotCXUzMiBzdGF0dXM7CQkJCQkvKiBVcHBlciBiaXRzIGFyZSBzdGF0dXMs IGxvd2VyIDE2IGxlbmd0aC4gKi8NCi0JdTMyIGFkZHI7DQorCXUzMiBzdGF0 dXM7DQorCXUzMiBuYnVmczsNCisJdTMyIGZpcnN0X2FkZHI7DQorCXUxNiBm aXJzdF9sZW47DQorCXUxNiB0b3RhbF9sZW47DQorCXN0cnVjdCB7DQorCQl1 MzIgYWRkcjsNCisJCXUzMiBsZW47DQorCX0gZnJhZ1s2XTsNCiB9Ow0KIGVu dW0gdHhfZGVzY19iaXRzIHsNCi0JVHhEZXNjSUQ9MHhCMTAxMDAwMCwJCS8q IEFsc28gbWFya3Mgc2luZ2xlIGZyYWdtZW50LCBhZGQgQ1JDLiAgKi8NCi0J VHhEZXNjSW50cj0weDA4MDAwMDAwLCBUeFJpbmdXcmFwPTB4MDQwMDAwMDAs DQorCVR4RGVzY0lEPTB4QjAwMDAwMDAsDQorCVR4Q1JDRW49MHgwMTAwMDAw MCwgVHhEZXNjSW50cj0weDA4MDAwMDAwLA0KKwlUeFJpbmdXcmFwPTB4MDQw MDAwMDAsIFR4Q2FsVENQPTB4MDIwMDAwMDAsDQogfTsNCiBzdHJ1Y3QgdHhf ZG9uZV9yZXBvcnQgew0KIAl1MzIgc3RhdHVzOwkJCQkJLyogdGltZXN0YW1w LCBpbmRleC4gKi8NCkBAIC0zMTgsMTAgKzM4OCwxNSBAQA0KIH07DQogDQog I2RlZmluZSBQUklWX0FMSUdOCTE1IAkvKiBSZXF1aXJlZCBhbGlnbm1lbnQg bWFzayAqLw0KLXN0cnVjdCByaW5nX2luZm8gew0KK3N0cnVjdCByeF9yaW5n X2luZm8gew0KIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOw0KIAlkbWFfYWRkcl90 IG1hcHBpbmc7DQogfTsNCitzdHJ1Y3QgdHhfcmluZ19pbmZvIHsNCisJc3Ry dWN0IHNrX2J1ZmYgKnNrYjsNCisJZG1hX2FkZHJfdCBmaXJzdF9tYXBwaW5n Ow0KKwlkbWFfYWRkcl90IGZyYWdfbWFwcGluZ1s2XTsNCit9Ow0KIA0KIHN0 cnVjdCBuZXRkZXZfcHJpdmF0ZSB7DQogCS8qIERlc2NyaXB0b3IgcmluZ3Mg Zmlyc3QgZm9yIGFsaWdubWVudC4gKi8NCkBAIC0zMzAsOCArNDA1LDggQEAN CiAJZG1hX2FkZHJfdCByeF9yaW5nX2RtYTsNCiAJZG1hX2FkZHJfdCB0eF9y aW5nX2RtYTsNCiAJLyogVGhlIGFkZHJlc3NlcyBvZiByeC90eC1pbi1wbGFj ZSBza2J1ZmZzLiAqLw0KLQlzdHJ1Y3QgcmluZ19pbmZvIHJ4X2luZm9bUlhf UklOR19TSVpFXTsNCi0Jc3RydWN0IHJpbmdfaW5mbyB0eF9pbmZvW1RYX1JJ TkdfU0laRV07DQorCXN0cnVjdCByeF9yaW5nX2luZm8gcnhfaW5mb1tSWF9S SU5HX1NJWkVdOw0KKwlzdHJ1Y3QgdHhfcmluZ19pbmZvIHR4X2luZm9bVFhf UklOR19TSVpFXTsNCiAJLyogUG9pbnRlcnMgdG8gY29tcGxldGlvbiBxdWV1 ZXMgKGZ1bGwgcGFnZXMpLiAgSSBzaG91bGQgY2FjaGUgbGluZSBwYWQuLiov DQogCXU4IHBhZDBbMTAwXTsNCiAJc3RydWN0IHJ4X2RvbmVfZGVzYyAqcnhf ZG9uZV9xOw0KQEAgLTM5MCwxNiArNDY1LDE3IEBADQogCXN0YXRpYyBpbnQg Y2FyZF9pZHggPSAtMTsNCiAJc3RhdGljIGludCBwcmludGVkX3ZlcnNpb24g PSAwOw0KIAlsb25nIGlvYWRkcjsNCi0JaW50IGRydl9mbGFncywgaW9fc2l6 ZSA9IG5ldGRydl90YmxbY2hpcF9pZHhdLmlvX3NpemU7DQorCWludCBkcnZf ZmxhZ3MsIGlvX3NpemU7DQogDQogCWNhcmRfaWR4Kys7DQogCW9wdGlvbiA9 IGNhcmRfaWR4IDwgTUFYX1VOSVRTID8gb3B0aW9uc1tjYXJkX2lkeF0gOiAw Ow0KLQkNCisNCiAJaWYgKCFwcmludGVkX3ZlcnNpb24rKykNCiAJCXByaW50 ayhLRVJOX0lORk8gIiVzIiBLRVJOX0lORk8gIiVzIiBLRVJOX0lORk8gIiVz IiwNCiAJCSAgICAgICB2ZXJzaW9uMSwgdmVyc2lvbjIsIHZlcnNpb24zKTsN CiANCiAJaW9hZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0IChwZGV2LCAwKTsN CisJaW9fc2l6ZSA9IHBjaV9yZXNvdXJjZV9sZW4gKHBkZXYsIDApOw0KIAlp ZiAoIWlvYWRkciB8fCAoKHBjaV9yZXNvdXJjZV9mbGFncyAocGRldiwgMCkg JiBJT1JFU09VUkNFX01FTSkgPT0gMCkpIHsNCiAJCXByaW50ayAoS0VSTl9F UlIgInN0YXJmaXJlICVkOiBubyBQQ0kgTUVNIHJlc291cmNlcywgYWJvcnRp bmdcbiIsIGNhcmRfaWR4KTsNCiAJCXJldHVybiAtRU5PREVWOw0KQEAgLTQx MCw2ICs0ODYsNyBAQA0KIAkJcHJpbnRrIChLRVJOX0VSUiAic3RhcmZpcmUg JWQ6IGNhbm5vdCBhbGxvYyBldGhlcmRldiwgYWJvcnRpbmdcbiIsIGNhcmRf aWR4KTsNCiAJCXJldHVybiAtRU5PTUVNOw0KIAl9DQorCVNFVF9NT0RVTEVf T1dORVIoZGV2KTsNCiAJDQogCWlycSA9IHBkZXYtPmlycTsgDQogDQpAQCAt NDM0LDYgKzUxMSw5IEBADQogCXByaW50ayhLRVJOX0lORk8gIiVzOiAlcyBh dCAweCVseCwgIiwNCiAJCSAgIGRldi0+bmFtZSwgbmV0ZHJ2X3RibFtjaGlw X2lkeF0ubmFtZSwgaW9hZGRyKTsNCiANCisJLyogU3RhcmZpcmUgY2FuIGRv IFNHIGFuZCBUQ1AvVURQIGNoZWNrc3VtbWluZyAqLw0KKwlkZXYtPmZlYXR1 cmVzIHw9IE5FVElGX0ZfU0cgfCBORVRJRl9GX0lQX0NTVU07DQorDQogCS8q IFNlcmlhbCBFRVBST00gcmVhZHMgYXJlIGhpZGRlbiBieSB0aGUgaGFyZHdh cmUuICovDQogCWZvciAoaSA9IDA7IGkgPCA2OyBpKyspDQogCQlkZXYtPmRl dl9hZGRyW2ldID0gcmVhZGIoaW9hZGRyICsgRUVQUk9NQ3RybCArIDIwLWkp Ow0KQEAgLTU0NiwxMyArNjI2LDkgQEANCiANCiAJLyogRG8gd2UgZXZlciBu ZWVkIHRvIHJlc2V0IHRoZSBjaGlwPz8/ICovDQogDQotCU1PRF9JTkNfVVNF X0NPVU5UOw0KLQ0KIAlyZXR2YWwgPSByZXF1ZXN0X2lycShkZXYtPmlycSwg JmludHJfaGFuZGxlciwgU0FfU0hJUlEsIGRldi0+bmFtZSwgZGV2KTsNCi0J aWYgKHJldHZhbCkgew0KLQkJTU9EX0RFQ19VU0VfQ09VTlQ7DQorCWlmIChy ZXR2YWwpDQogCQlyZXR1cm4gcmV0dmFsOw0KLQl9DQogDQogCS8qIERpc2Fi bGUgdGhlIFJ4IGFuZCBUeCwgYW5kIHJlc2V0IHRoZSBjaGlwLiAqLw0KIAl3 cml0ZWwoMCwgaW9hZGRyICsgR2VuQ3RybCk7DQpAQCAtNTY0LDcgKzY0MCw3 IEBADQogCWlmIChucC0+dHhfZG9uZV9xID09IDApDQogCQlucC0+dHhfZG9u ZV9xID0gcGNpX2FsbG9jX2NvbnNpc3RlbnQobnAtPnBjaV9kZXYsIFBBR0Vf U0laRSwgJm5wLT50eF9kb25lX3FfZG1hKTsNCiAJaWYgKG5wLT5yeF9kb25l X3EgPT0gMCkNCi0JCW5wLT5yeF9kb25lX3EgPSBwY2lfYWxsb2NfY29uc2lz dGVudChucC0+cGNpX2RldiwgUEFHRV9TSVpFLCAmbnAtPnJ4X2RvbmVfcV9k bWEpOw0KKwkJbnAtPnJ4X2RvbmVfcSA9IHBjaV9hbGxvY19jb25zaXN0ZW50 KG5wLT5wY2lfZGV2LCBzaXplb2Yoc3RydWN0IHJ4X2RvbmVfZGVzYykgKiBE T05FX1FfU0laRSwgJm5wLT5yeF9kb25lX3FfZG1hKTsNCiAJaWYgKG5wLT50 eF9yaW5nID09IDApDQogCQlucC0+dHhfcmluZyA9IHBjaV9hbGxvY19jb25z aXN0ZW50KG5wLT5wY2lfZGV2LCBQQUdFX1NJWkUsICZucC0+dHhfcmluZ19k bWEpOw0KIAlpZiAobnAtPnJ4X3JpbmcgPT0gMCkNCkBAIC01NzUsNyArNjUx LDcgQEANCiAJCQlwY2lfZnJlZV9jb25zaXN0ZW50KG5wLT5wY2lfZGV2LCBQ QUdFX1NJWkUsDQogCQkJCQkJCQlucC0+dHhfZG9uZV9xLCBucC0+dHhfZG9u ZV9xX2RtYSk7DQogCQlpZiAobnAtPnJ4X2RvbmVfcSkNCi0JCQlwY2lfZnJl ZV9jb25zaXN0ZW50KG5wLT5wY2lfZGV2LCBQQUdFX1NJWkUsDQorCQkJcGNp X2ZyZWVfY29uc2lzdGVudChucC0+cGNpX2Rldiwgc2l6ZW9mKHN0cnVjdCBy eF9kb25lX2Rlc2MpICogRE9ORV9RX1NJWkUsDQogCQkJCQkJCQlucC0+cnhf ZG9uZV9xLCBucC0+cnhfZG9uZV9xX2RtYSk7DQogCQlpZiAobnAtPnR4X3Jp bmcpDQogCQkJcGNpX2ZyZWVfY29uc2lzdGVudChucC0+cGNpX2RldiwgUEFH RV9TSVpFLA0KQEAgLTU4MywxNiArNjU5LDIzIEBADQogCQlpZiAobnAtPnJ4 X3JpbmcpDQogCQkJcGNpX2ZyZWVfY29uc2lzdGVudChucC0+cGNpX2Rldiwg UEFHRV9TSVpFLA0KIAkJCQkJCQkJbnAtPnJ4X3JpbmcsIG5wLT5yeF9yaW5n X2RtYSk7DQotCQlNT0RfREVDX1VTRV9DT1VOVDsNCiAJCXJldHVybiAtRU5P TUVNOw0KIAl9DQogDQogCWluaXRfcmluZyhkZXYpOw0KIAkvKiBTZXQgdGhl IHNpemUgb2YgdGhlIFJ4IGJ1ZmZlcnMuICovDQotCXdyaXRlbCgobnAtPnJ4 X2J1Zl9zejw8MTYpIHwgMHhBMDAwLCBpb2FkZHIgKyBSeERlc2NRQ3RybCk7 DQotDQotCS8qIFNldCBUeCBkZXNjcmlwdG9yIHRvIHR5cGUgMSBhbmQgcGFk ZGluZyB0byAwIGJ5dGVzLiAqLw0KLQl3cml0ZWwoMHgwMjAwMDQwMSwgaW9h ZGRyICsgVHhEZXNjQ3RybCk7DQorCXdyaXRlbCgobnAtPnJ4X2J1Zl9zeiA8 PCBSeEJ1ZmZlckxlblNoaWZ0KSB8DQorCQkgICAoMCA8PCBSeE1pbkRlc2Ny VGhyZXNoU2hpZnQpIHwNCisJCSAgIFJ4UHJlZmV0Y2hNb2RlIHwgUnhWYXJp YWJsZVEgfA0KKwkJICAgUnhEZXNjU3BhY2U0LA0KKwkJICAgaW9hZGRyICsg UnhEZXNjUUN0cmwpOw0KKw0KKwkvKiBTZXQgVHggZGVzY3JpcHRvciB0byB0 eXBlIDAgYW5kIHNwYWNpbmcgdG8gNjQgYnl0ZXMuICovDQorCXdyaXRlbCgo MiA8PCBUeEhpUHJpRklGT1RocmVzaFNoaWZ0KSB8DQorCSAgICAgICAoMCA8 PCBUeFBhZExlblNoaWZ0KSB8DQorCSAgICAgICAoNCA8PCBUeERNQUJ1cnN0 U2l6ZVNoaWZ0KSB8DQorCSAgICAgICBUeERlc2NTcGFjZTY0IHwgVHhEZXNj VHlwZTAsDQorCSAgICAgICBpb2FkZHIgKyBUeERlc2NDdHJsKTsNCiANCiAj aWYgZGVmaW5lZChBRERSXzY0QklUUykgJiYgZGVmaW5lZChfX2FscGhhX18p DQogCS8qIFhYWCBXZSByZWFsbHkgbmVlZCBhIDY0LWJpdCBQQ0kgZG1hIGlu dGVyZmFjZXMgdG9vLi4uIC1EYXZlTSAqLw0KQEAgLTYwNyw3ICs2OTAsMjQg QEANCiAJd3JpdGVsKG5wLT50eF9yaW5nX2RtYSwgaW9hZGRyICsgVHhSaW5n UHRyKTsNCiANCiAJd3JpdGVsKG5wLT50eF9kb25lX3FfZG1hLCBpb2FkZHIg KyBUeENvbXBsZXRpb25BZGRyKTsNCi0Jd3JpdGVsKG5wLT5yeF9kb25lX3Ff ZG1hLCBpb2FkZHIgKyBSeENvbXBsZXRpb25BZGRyKTsNCisjaWZkZWYgZnVs bF9yeF9zdGF0dXMNCisJd3JpdGVsKG5wLT5yeF9kb25lX3FfZG1hIHwNCisJ CSAgIFJ4Q29tcGxUeXBlMyB8DQorCQkgICAoMCA8PCBSeENvbXBsVGhyZXNo U2hpZnQpLA0KKwkJICAgaW9hZGRyICsgUnhDb21wbGV0aW9uQWRkcik7DQor I2Vsc2UNCisjaWZkZWYgY3N1bV9yeF9zdGF0dXMNCisJd3JpdGVsKG5wLT5y eF9kb25lX3FfZG1hIHwNCisJCSAgIFJ4Q29tcGxUeXBlMiB8DQorCQkgICAo MCA8PCBSeENvbXBsVGhyZXNoU2hpZnQpLA0KKwkJICAgaW9hZGRyICsgUnhD b21wbGV0aW9uQWRkcik7DQorI2Vsc2UNCisJd3JpdGVsKG5wLT5yeF9kb25l X3FfZG1hIHwNCisJCSAgIFJ4Q29tcGxUeXBlMCB8DQorCQkgICAoMCA8PCBS eENvbXBsVGhyZXNoU2hpZnQpLA0KKwkJICAgaW9hZGRyICsgUnhDb21wbGV0 aW9uQWRkcik7DQorI2VuZGlmDQorI2VuZGlmDQogDQogCWlmIChkZWJ1ZyA+ IDEpDQogCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6ICBGaWxsaW5nIGluIHRo ZSBzdGF0aW9uIGFkZHJlc3MuXG4iLCBkZXYtPm5hbWUpOw0KQEAgLTY0Mywx NSArNzQzLDIxIEBADQogCWNoZWNrX2R1cGxleChkZXYsIDEpOw0KIA0KIAkv KiBTZXQgdGhlIGludGVycnVwdCBtYXNrIGFuZCBlbmFibGUgUENJIGludGVy cnVwdHMuICovDQotCXdyaXRlbChJbnRyUnhEb25lIHwgSW50clJ4RW1wdHkg fCBJbnRyUnhQQ0lFcnIgfA0KLQkJICAgSW50clR4RG9uZSB8IEludHJUeEVt cHR5IHwgSW50clR4UENJRXJyIHwNCi0JCSAgIFN0YXRzTWF4IHwgTGlua0No YW5nZSB8IEludHJOb3JtYWxTdW1tYXJ5IHwgSW50ckFibm9ybWFsU3VtbWFy eQ0KLQkJICAgfCAweDAwMTAgLCBpb2FkZHIgKyBJbnRyRW5hYmxlKTsNCisJ d3JpdGVsKEludHJSeERvbmUgfCBJbnRyUnhFbXB0eSB8IEludHJETUFFcnIg fA0KKwkgICAgICAgSW50clR4RG9uZSB8IEludHJTdGF0c01heCB8IEludHJM aW5rQ2hhbmdlIHwNCisJICAgICAgIEludHJOb3JtYWxTdW1tYXJ5IHwgSW50 ckFibm9ybWFsU3VtbWFyeSB8DQorCSAgICAgICBJbnRyUnhHRlBEZWFkIHwg SW50ck5vVHhDc3VtIHwgSW50clR4QmFkSUQsDQorCSAgICAgICBpb2FkZHIg KyBJbnRyRW5hYmxlKTsNCiAJd3JpdGVsKDB4MDA4MDAwMDAgfCByZWFkbChp b2FkZHIgKyBQQ0lEZXZpY2VDb25maWcpLA0KIAkJICAgaW9hZGRyICsgUENJ RGV2aWNlQ29uZmlnKTsNCiANCi0JLyogRW5hYmxlIHRoZSBSeCBhbmQgVHgg dW5pdHMuICovDQotCXdyaXRlbCgweDAwMEYsIGlvYWRkciArIEdlbkN0cmwp Ow0KKwkvKiBMb2FkIFJ4L1R4IGZpcm13YXJlIGludG8gdGhlIGZyYW1lIHBy b2Nlc3NvcnMgKi8NCisJZm9yIChpID0gMDsgaSA8IEZJUk1XQVJFX1JYX1NJ WkUgKiAyOyBpKyspDQorCQl3cml0ZWwoY3B1X3RvX2xlMzIoZmlybXdhcmVf cnhbaV0pLCBpb2FkZHIgKyBSeEdmcE1lbSArIGkgKiA0KTsNCisJZm9yIChp ID0gMDsgaSA8IEZJUk1XQVJFX1RYX1NJWkUgKiAyOyBpKyspDQorCQl3cml0 ZWwoY3B1X3RvX2xlMzIoZmlybXdhcmVfdHhbaV0pLCBpb2FkZHIgKyBUeEdm cE1lbSArIGkgKiA0KTsNCisJLyogRW5hYmxlIHRoZSBSeCBhbmQgVHggdW5p dHMsIGFuZCB0aGUgUngvVHggZnJhbWUgcHJvY2Vzc29ycy4gKi8NCisJd3Jp dGVsKDB4MDAzRiwgaW9hZGRyICsgR2VuQ3RybCk7DQogDQogCWlmIChkZWJ1 ZyA+IDIpDQogCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IERvbmUgbmV0ZGV2 X29wZW4oKS5cbiIsDQpAQCAtNzY1LDcgKzg3MSw3IEBADQogc3RhdGljIHZv aWQgaW5pdF9yaW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpDQogew0KIAlz dHJ1Y3QgbmV0ZGV2X3ByaXZhdGUgKm5wID0gKHN0cnVjdCBuZXRkZXZfcHJp dmF0ZSAqKWRldi0+cHJpdjsNCi0JaW50IGk7DQorCWludCBpLCBqOw0KIA0K IAlucC0+dHhfZnVsbCA9IDA7DQogCW5wLT5jdXJfcnggPSBucC0+Y3VyX3R4 ID0gMDsNCkBAIC04MDQsNyArOTEwLDkgQEANCiANCiAJZm9yIChpID0gMDsg aSA8IFRYX1JJTkdfU0laRTsgaSsrKSB7DQogCQlucC0+dHhfaW5mb1tpXS5z a2IgPSBOVUxMOw0KLQkJbnAtPnR4X2luZm9baV0ubWFwcGluZyA9IDA7DQor CQlucC0+dHhfaW5mb1tpXS5maXJzdF9tYXBwaW5nID0gMDsNCisJCWZvciAo aiA9IDA7IGogPCA2OyBqKyspDQorCQkJbnAtPnR4X2luZm9baV0uZnJhZ19t YXBwaW5nW2pdID0gMDsNCiAJCW5wLT50eF9yaW5nW2ldLnN0YXR1cyA9IDA7 DQogCX0NCiAJcmV0dXJuOw0KQEAgLTgxNCw2ICs5MjIsNyBAQA0KIHsNCiAJ c3RydWN0IG5ldGRldl9wcml2YXRlICpucCA9IChzdHJ1Y3QgbmV0ZGV2X3By aXZhdGUgKilkZXYtPnByaXY7DQogCXVuc2lnbmVkIGVudHJ5Ow0KKwlpbnQg aTsNCiANCiAJLyogQ2F1dGlvbjogdGhlIHdyaXRlIG9yZGVyIGlzIGltcG9y dGFudCBoZXJlLCBzZXQgdGhlIGZpZWxkDQogCSAgIHdpdGggdGhlICJvd25l cnNoaXAiIGJpdHMgbGFzdC4gKi8NCkBAIC04MjEsNDIgKzkzMCw4NyBAQA0K IAkvKiBDYWxjdWxhdGUgdGhlIG5leHQgVHggZGVzY3JpcHRvciBlbnRyeS4g Ki8NCiAJZW50cnkgPSBucC0+Y3VyX3R4ICUgVFhfUklOR19TSVpFOw0KIA0K KyNpZmRlZiBIQVNfQlJPS0VOX0ZJUk1XQVJFDQorCXsNCisJCWludCBoYXNf YmFkX2xlbmd0aCA9IDA7DQorDQorCQlpZiAoc2tiX2hlYWRsZW4oc2tiKSA9 PSAxKQ0KKwkJCWhhc19iYWRfbGVuZ3RoID0gMTsNCisJCWVsc2Ugew0KKwkJ CWZvciAoaSA9IDA7IGkgPCBza2Jfc2hpbmZvKHNrYiktPm5yX2ZyYWdzOyBp KyspDQorCQkJCWlmIChza2Jfc2hpbmZvKHNrYiktPmZyYWdzW2ldLnNpemUg PT0gMSkgew0KKwkJCQkJaGFzX2JhZF9sZW5ndGggPSAxOw0KKwkJCQkJYnJl YWs7DQorCQkJCX0NCisJCX0NCisNCisJCWlmIChoYXNfYmFkX2xlbmd0aCkN CisJCQlza2JfY2hlY2tzdW1faGVscChza2IpOw0KKwl9DQorI2VuZGlmIC8q IEhBU19CUk9LRU5fRklSTVdBUkUgKi8NCisNCiAJbnAtPnR4X2luZm9bZW50 cnldLnNrYiA9IHNrYjsNCi0JbnAtPnR4X2luZm9bZW50cnldLm1hcHBpbmcg PQ0KLQkJcGNpX21hcF9zaW5nbGUobnAtPnBjaV9kZXYsIHNrYi0+ZGF0YSwg c2tiLT5sZW4sIFBDSV9ETUFfVE9ERVZJQ0UpOw0KKwlucC0+dHhfaW5mb1tl bnRyeV0uZmlyc3RfbWFwcGluZyA9DQorCQlwY2lfbWFwX3NpbmdsZShucC0+ cGNpX2Rldiwgc2tiLT5kYXRhLCBza2JfaGVhZGxlbihza2IpLCBQQ0lfRE1B X1RPREVWSUNFKTsNCiANCi0JbnAtPnR4X3JpbmdbZW50cnldLmFkZHIgPSBj cHVfdG9fbGUzMihucC0+dHhfaW5mb1tlbnRyeV0ubWFwcGluZyk7DQorCW5w LT50eF9yaW5nW2VudHJ5XS5maXJzdF9hZGRyID0gY3B1X3RvX2xlMzIobnAt PnR4X2luZm9bZW50cnldLmZpcnN0X21hcHBpbmcpOw0KKwlucC0+dHhfcmlu Z1tlbnRyeV0uZmlyc3RfbGVuID0gY3B1X3RvX2xlMzIoc2tiX2hlYWRsZW4o c2tiKSk7DQorCW5wLT50eF9yaW5nW2VudHJ5XS50b3RhbF9sZW4gPSBjcHVf dG9fbGUzMihza2ItPmxlbik7DQogCS8qIEFkZCAgInwgVHhEZXNjSW50ciIg dG8gZ2VuZXJhdGUgVHgtZG9uZSBpbnRlcnJ1cHRzLiAqLw0KLQlucC0+dHhf cmluZ1tlbnRyeV0uc3RhdHVzID0gY3B1X3RvX2xlMzIoc2tiLT5sZW4gfCBU eERlc2NJRCk7DQorCW5wLT50eF9yaW5nW2VudHJ5XS5zdGF0dXMgPSBjcHVf dG9fbGUzMihUeERlc2NJRCB8IFR4Q1JDRW4pOw0KKwlpZiAoZW50cnkgPj0g VFhfUklOR19TSVpFLTEpCQkgLyogV3JhcCByaW5nICovDQorCQlucC0+dHhf cmluZ1tlbnRyeV0uc3RhdHVzIHw9IGNwdV90b19sZTMyKFR4UmluZ1dyYXAg fCBUeERlc2NJbnRyKTsNCisJbnAtPnR4X3JpbmdbZW50cnldLm5idWZzID0g Y3B1X3RvX2xlMzIoc2tiX3NoaW5mbyhza2IpLT5ucl9mcmFncyArIDEpOw0K Kw0KKwlpZiAoc2tiLT5pcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fSFcpDQorCQlu cC0+dHhfcmluZ1tlbnRyeV0uc3RhdHVzIHw9IGNwdV90b19sZTMyKFR4Q2Fs VENQKTsNCisNCiAJaWYgKGRlYnVnID4gNSkgew0KLQkJcHJpbnRrKEtFUk5f REVCVUcgIiVzOiBUeCAjJWQgc2xvdCAlZCAgJTguOHggJTguOHguXG4iLA0K KwkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBUeCAjJWQgc2xvdCAlZCBzdGF0 dXMgJTguOHggbmJ1ZnMgJWQgbGVuICU0LjR4LyU0LjR4LlxuIiwNCiAJCQkg ICBkZXYtPm5hbWUsIG5wLT5jdXJfdHgsIGVudHJ5LA0KIAkJCSAgIGxlMzJf dG9fY3B1KG5wLT50eF9yaW5nW2VudHJ5XS5zdGF0dXMpLA0KLQkJCSAgIGxl MzJfdG9fY3B1KG5wLT50eF9yaW5nW2VudHJ5XS5hZGRyKSk7DQorCQkJICAg bGUzMl90b19jcHUobnAtPnR4X3JpbmdbZW50cnldLm5idWZzKSwNCisJCQkg ICBsZTMyX3RvX2NwdShucC0+dHhfcmluZ1tlbnRyeV0uZmlyc3RfbGVuKSwN CisJCQkgICBsZTMyX3RvX2NwdShucC0+dHhfcmluZ1tlbnRyeV0udG90YWxf bGVuKSk7DQorCX0NCisNCisJZm9yIChpID0gMDsgaSA8IHNrYl9zaGluZm8o c2tiKS0+bnJfZnJhZ3M7IGkrKykgew0KKwkJc2tiX2ZyYWdfdCAqdGhpc19m cmFnID0gJnNrYl9zaGluZm8oc2tiKS0+ZnJhZ3NbaV07DQorDQorCQkvKiB3 ZSBhbHJlYWR5IGhhdmUgdGhlIHByb3BlciB2YWx1ZSBpbiBlbnRyeSAqLw0K KwkJbnAtPnR4X2luZm9bZW50cnldLmZyYWdfbWFwcGluZ1tpXSA9DQorCQkJ cGNpX21hcF9zaW5nbGUobnAtPnBjaV9kZXYsIHBhZ2VfYWRkcmVzcyh0aGlz X2ZyYWctPnBhZ2UpICsgdGhpc19mcmFnLT5wYWdlX29mZnNldCwgdGhpc19m cmFnLT5zaXplLCBQQ0lfRE1BX1RPREVWSUNFKTsNCisNCisJCW5wLT50eF9y aW5nW2VudHJ5XS5mcmFnW2ldLmFkZHIgPSBjcHVfdG9fbGUzMihucC0+dHhf aW5mb1tlbnRyeV0uZnJhZ19tYXBwaW5nW2ldKTsNCisJCW5wLT50eF9yaW5n W2VudHJ5XS5mcmFnW2ldLmxlbiA9IGNwdV90b19sZTMyKHRoaXNfZnJhZy0+ c2l6ZSk7DQorCQlpZiAoZGVidWcgPiA1KSB7DQorCQkJcHJpbnRrKEtFUk5f REVCVUcgIiVzOiBUeCAjJWQgZnJhZyAlZCBsZW4gJTQuNHguXG4iLA0KKwkJ CQkgICBkZXYtPm5hbWUsIG5wLT5jdXJfdHgsIGksDQorCQkJCSAgIGxlMzJf dG9fY3B1KG5wLT50eF9yaW5nW2VudHJ5XS5mcmFnW2ldLmxlbikpOw0KKwkJ fQ0KIAl9DQorDQogCW5wLT5jdXJfdHgrKzsNCi0jaWYgMQ0KLQlpZiAoZW50 cnkgPj0gVFhfUklOR19TSVpFLTEpIHsJCSAvKiBXcmFwIHJpbmcgKi8NCi0J CW5wLT50eF9yaW5nW2VudHJ5XS5zdGF0dXMgfD0gY3B1X3RvX2xlMzIoVHhS aW5nV3JhcCB8IFR4RGVzY0ludHIpOw0KKw0KKwlpZiAoZW50cnkgPj0gVFhf UklOR19TSVpFLTEpCQkgLyogV3JhcCByaW5nICovDQogCQllbnRyeSA9IC0x Ow0KLQl9DQotI2VuZGlmDQorCWVudHJ5Kys7DQogDQogCS8qIE5vbi14ODY6 IGV4cGxpY2l0bHkgZmx1c2ggZGVzY3JpcHRvciBjYWNoZSBsaW5lcyBoZXJl LiAqLw0KKwkvKiBFbnN1cmUgZXZlcnl0aGluZyBpcyB3cml0dGVuIGJhY2sg YWJvdmUgYmVmb3JlIHRoZSB0cmFuc21pdCBpcw0KKwkgICBpbml0aWF0ZWQu IC0gSmVzICovDQorCXdtYigpOw0KIA0KIAkvKiBVcGRhdGUgdGhlIHByb2R1 Y2VyIGluZGV4LiAqLw0KLQl3cml0ZWwoKytlbnRyeSwgZGV2LT5iYXNlX2Fk ZHIgKyBUeFByb2R1Y2VySWR4KTsNCisJd3JpdGVsKGVudHJ5ICogKHNpemVv ZihzdHJ1Y3Qgc3RhcmZpcmVfdHhfZGVzYykgLyA4KSwgZGV2LT5iYXNlX2Fk ZHIgKyBUeFByb2R1Y2VySWR4KTsNCiANCiAJaWYgKG5wLT5jdXJfdHggLSBu cC0+ZGlydHlfdHggPj0gVFhfUklOR19TSVpFIC0gMSkgew0KIAkJbnAtPnR4 X2Z1bGwgPSAxOw0KIAkJbmV0aWZfc3RvcF9xdWV1ZShkZXYpOw0KIAl9DQor DQogCWRldi0+dHJhbnNfc3RhcnQgPSBqaWZmaWVzOw0KIA0KLQlpZiAoZGVi dWcgPiA0KSB7DQotCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IFRyYW5zbWl0 IGZyYW1lICMlZCBxdWV1ZWQgaW4gc2xvdCAlZC5cbiIsDQotCQkJICAgZGV2 LT5uYW1lLCBucC0+Y3VyX3R4LCBlbnRyeSk7DQotCX0NCiAJcmV0dXJuIDA7 DQogfQ0KIA0KQEAgLTkxOSwxOCArMTA3MywyOSBAQA0KIAkJCQkJbnAtPnN0 YXRzLnR4X3BhY2tldHMrKzsNCiAJCQkJfSBlbHNlIGlmICgodHhfc3RhdHVz ICYgMHhlMDAwMDAwMCkgPT0gMHg4MDAwMDAwMCkgew0KIAkJCQkJc3RydWN0 IHNrX2J1ZmYgKnNrYjsNCisJCQkJCWludCBpOw0KIAkJCQkJdTE2IGVudHJ5 ID0gdHhfc3RhdHVzOyAJCS8qIEltcGxpY2l0IHRydW5jYXRlICovDQotCQkJ CQllbnRyeSA+Pj0gMzsNCisJCQkJCWVudHJ5IC89IHNpemVvZihzdHJ1Y3Qg c3RhcmZpcmVfdHhfZGVzYyk7DQogDQogCQkJCQlza2IgPSBucC0+dHhfaW5m b1tlbnRyeV0uc2tiOw0KKwkJCQkJbnAtPnR4X2luZm9bZW50cnldLnNrYiA9 IE5VTEw7DQogCQkJCQlwY2lfdW5tYXBfc2luZ2xlKG5wLT5wY2lfZGV2LA0K LQkJCQkJCQkgbnAtPnR4X2luZm9bZW50cnldLm1hcHBpbmcsDQotCQkJCQkJ CSBza2ItPmxlbiwgUENJX0RNQV9UT0RFVklDRSk7DQorCQkJCQkJCQkJIG5w LT50eF9pbmZvW2VudHJ5XS5maXJzdF9tYXBwaW5nLA0KKwkJCQkJCQkJCSBz a2JfaGVhZGxlbihza2IpLA0KKwkJCQkJCQkJCSBQQ0lfRE1BX1RPREVWSUNF KTsNCisJCQkJCW5wLT50eF9pbmZvW2VudHJ5XS5maXJzdF9tYXBwaW5nID0g MDsNCisNCisJCQkJCWZvciAoaSA9IDA7IGkgPCBza2Jfc2hpbmZvKHNrYikt Pm5yX2ZyYWdzOyBpKyspIHsNCisJCQkJCQlwY2lfdW5tYXBfc2luZ2xlKG5w LT5wY2lfZGV2LA0KKwkJCQkJCQkJCQkgbnAtPnR4X2luZm9bZW50cnldLmZy YWdfbWFwcGluZ1tpXSwNCisJCQkJCQkJCQkJIHNrYl9zaGluZm8oc2tiKS0+ ZnJhZ3NbaV0uc2l6ZSwNCisJCQkJCQkJCQkJIFBDSV9ETUFfVE9ERVZJQ0Up Ow0KKwkJCQkJCW5wLT50eF9pbmZvW2VudHJ5XS5mcmFnX21hcHBpbmdbaV0g PSAwOw0KKwkJCQkJfQ0KIA0KIAkJCQkJLyogU2NhdmVuZ2UgdGhlIGRlc2Ny aXB0b3IuICovDQogCQkJCQlkZXZfa2ZyZWVfc2tiX2lycShza2IpOw0KLQkJ CQkJbnAtPnR4X2luZm9bZW50cnldLnNrYiA9IE5VTEw7DQotCQkJCQlucC0+ dHhfaW5mb1tlbnRyeV0ubWFwcGluZyA9IDA7DQorDQogCQkJCQlucC0+ZGly dHlfdHgrKzsNCiAJCQkJfQ0KIAkJCQlucC0+dHhfZG9uZV9xW25wLT50eF9k b25lXS5zdGF0dXMgPSAwOw0KQEAgLTEwMzcsMTQgKzEyMDIsNiBAQA0KIAkJ CQl0ZW1wID0gc2tiX3B1dChza2IsIHBrdF9sZW4pOw0KIAkJCQlucC0+cnhf aW5mb1tlbnRyeV0uc2tiID0gTlVMTDsNCiAJCQkJbnAtPnJ4X2luZm9bZW50 cnldLm1hcHBpbmcgPSAwOw0KLSNpZm5kZWYgZmluYWxfdmVyc2lvbgkJCQkv KiBSZW1vdmUgYWZ0ZXIgdGVzdGluZy4gKi8NCi0JCQkJaWYgKGxlMzJfdG9f Y3B1KG5wLT5yeF9yaW5nW2VudHJ5XS5yeGFkZHIgJiB+MykgIT0gKCh1bnNp Z25lZCBsb25nKSB0ZW1wKSkNCi0JCQkJCXByaW50ayhLRVJOX0VSUiAiJXM6 IEludGVybmFsIGZhdWx0OiBUaGUgc2tidWZmIGFkZHJlc3NlcyAiDQotCQkJ CQkJICAgImRvIG5vdCBtYXRjaCBpbiBuZXRkZXZfcng6ICVkIHZzLiAlcCAv ICVwLlxuIiwNCi0JCQkJCQkgICBkZXYtPm5hbWUsDQotCQkJCQkJICAgbGUz Ml90b19jcHUobnAtPnJ4X3JpbmdbZW50cnldLnJ4YWRkciksDQotCQkJCQkJ ICAgc2tiLT5oZWFkLCB0ZW1wKTsNCi0jZW5kaWYNCiAJCQl9DQogI2lmbmRl ZiBmaW5hbF92ZXJzaW9uCQkJCS8qIFJlbW92ZSBhZnRlciB0ZXN0aW5nLiAq Lw0KIAkJCS8qIFlvdSB3aWxsIHdhbnQgdGhpcyBpbmZvIGZvciB0aGUgaW5p dGlhbCBkZWJ1Zy4gKi8NCkBAIC0xMDYwLDkgKzEyMTcsMjMgQEANCiAJCQkJ CSAgIHNrYi0+ZGF0YVsxN10pOw0KICNlbmRpZg0KIAkJCXNrYi0+cHJvdG9j b2wgPSBldGhfdHlwZV90cmFucyhza2IsIGRldik7DQotI2lmZGVmIGZ1bGxf cnhfc3RhdHVzDQotCQkJaWYgKGxlMzJfdG9fY3B1KG5wLT5yeF9kb25lX3Fb bnAtPnJ4X2RvbmVdLnN0YXR1czIpICYgMHgwMTAwMDAwMCkNCisjaWYgZGVm aW5lZChmdWxsX3J4X3N0YXR1cykgfHwgZGVmaW5lZChjc3VtX3J4X3N0YXR1 cykNCisJCQlpZiAobGUzMl90b19jcHUobnAtPnJ4X2RvbmVfcVtucC0+cnhf ZG9uZV0uc3RhdHVzMikgJiAweDAxMDAwMDAwKSB7DQogCQkJCXNrYi0+aXBf c3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7DQorCQkJfQ0KKwkJCS8q DQorCQkJICogVGhpcyBmZWF0dXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSB3b3Jr aW5nLCBhdCBsZWFzdA0KKwkJCSAqIHdpdGggdGhlIHR3byBmaXJtd2FyZSB2 ZXJzaW9ucyBJIGhhdmUuIElmIHRoZSBHRlAgc2Vlcw0KKwkJCSAqIGEgZnJh Z21lbnQsIGl0IGVpdGhlciBpZ25vcmVzIGl0IGNvbXBsZXRlbHksIG9yIHJl cG9ydHMNCisJCQkgKiAiYmFkIGNoZWNrc3VtIiBvbiBpdC4NCisJCQkgKg0K KwkJCSAqIE1heWJlIEkgbWlzc2VkIHNvbWV0aGluZyAtLSBjb3JyZWN0aW9u cyBhcmUgd2VsY29tZS4gLUlvbg0KKwkJCSAqLw0KKwkJCWVsc2UgaWYgKGxl MzJfdG9fY3B1KG5wLT5yeF9kb25lX3FbbnAtPnJ4X2RvbmVdLnN0YXR1czIp ICYgMHgwMDQwMDAwMCkgew0KKwkJCQlza2ItPmlwX3N1bW1lZCA9IENIRUNL U1VNX0hXOw0KKwkJCQlza2ItPmNzdW0gPSBsZTMyX3RvX2NwdShucC0+cnhf ZG9uZV9xW25wLT5yeF9kb25lXS5zdGF0dXMyKSAmIDB4ZmZmZjsNCisJCQkJ cHJpbnRrKEtFUk5fREVCVUcgIiVzOiBjaGVja3N1bV9odywgc3RhdHVzMiA9 ICV4XG4iLCBkZXYtPm5hbWUsIG5wLT5yeF9kb25lX3FbbnAtPnJ4X2RvbmVd LnN0YXR1czIpOw0KKwkJCX0NCiAjZW5kaWYNCiAJCQluZXRpZl9yeChza2Ip Ow0KIAkJCWRldi0+bGFzdF9yeCA9IGppZmZpZXM7DQpAQCAtMTEwOSwyOCAr MTI4MCwyNiBAQA0KIHsNCiAJc3RydWN0IG5ldGRldl9wcml2YXRlICpucCA9 IChzdHJ1Y3QgbmV0ZGV2X3ByaXZhdGUgKilkZXYtPnByaXY7DQogDQotCWlm IChpbnRyX3N0YXR1cyAmIExpbmtDaGFuZ2UpIHsNCisJaWYgKGludHJfc3Rh dHVzICYgSW50ckxpbmtDaGFuZ2UpIHsNCiAJCXByaW50ayhLRVJOX05PVElD RSAiJXM6IExpbmsgY2hhbmdlZDogQXV0b25lZ290aWF0aW9uIGFkdmVydGlz aW5nIg0KIAkJCSAgICIgJTQuNHggIHBhcnRuZXIgJTQuNHguXG4iLCBkZXYt Pm5hbWUsDQogCQkJICAgbWRpb19yZWFkKGRldiwgbnAtPnBoeXNbMF0sIDQp LA0KIAkJCSAgIG1kaW9fcmVhZChkZXYsIG5wLT5waHlzWzBdLCA1KSk7DQog CQljaGVja19kdXBsZXgoZGV2LCAwKTsNCiAJfQ0KLQlpZiAoaW50cl9zdGF0 dXMgJiBTdGF0c01heCkgew0KKwlpZiAoaW50cl9zdGF0dXMgJiBJbnRyU3Rh dHNNYXgpIHsNCiAJCWdldF9zdGF0cyhkZXYpOw0KIAl9DQogCS8qIENhbWUg Y2xvc2UgdG8gdW5kZXJydW5uaW5nIHRoZSBUeCBGSUZPLCBpbmNyZWFzZSB0 aHJlc2hvbGQuICovDQogCWlmIChpbnRyX3N0YXR1cyAmIEludHJUeERhdGFM b3cpDQogCQl3cml0ZWwoKytucC0+dHhfdGhyZXNob2xkLCBkZXYtPmJhc2Vf YWRkciArIFR4VGhyZXNob2xkKTsNCiAJaWYgKChpbnRyX3N0YXR1cyAmDQot CQkgfihJbnRyQWJub3JtYWxTdW1tYXJ5fExpbmtDaGFuZ2V8U3RhdHNNYXh8 SW50clR4RGF0YUxvd3wxKSkgJiYgZGVidWcpDQorCQkgfihJbnRyQWJub3Jt YWxTdW1tYXJ5fEludHJMaW5rQ2hhbmdlfEludHJTdGF0c01heHxJbnRyVHhE YXRhTG93fDEpKSAmJiBkZWJ1ZykNCiAJCXByaW50ayhLRVJOX0VSUiAiJXM6 IFNvbWV0aGluZyBXaWNrZWQgaGFwcGVuZWQhICU0LjR4LlxuIiwNCiAJCQkg ICBkZXYtPm5hbWUsIGludHJfc3RhdHVzKTsNCi0JLyogSG1tbW1tLCBpdCdz IG5vdCBjbGVhciBob3cgdG8gcmVjb3ZlciBmcm9tIFBDSSBmYXVsdHMuICov DQotCWlmIChpbnRyX3N0YXR1cyAmIEludHJUeFBDSUVycikNCisJLyogSG1t bW1tLCBpdCdzIG5vdCBjbGVhciBob3cgdG8gcmVjb3ZlciBmcm9tIERNQSBm YXVsdHMuICovDQorCWlmIChpbnRyX3N0YXR1cyAmIEludHJETUFFcnIpDQog CQlucC0+c3RhdHMudHhfZmlmb19lcnJvcnMrKzsNCi0JaWYgKGludHJfc3Rh dHVzICYgSW50clJ4UENJRXJyKQ0KLQkJbnAtPnN0YXRzLnJ4X2ZpZm9fZXJy b3JzKys7DQogfQ0KIA0KIHN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZV9zdGF0 cyAqZ2V0X3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpDQpAQCAtMTI4 MCw3ICsxNDQ5LDcgQEANCiB7DQogCWxvbmcgaW9hZGRyID0gZGV2LT5iYXNl X2FkZHI7DQogCXN0cnVjdCBuZXRkZXZfcHJpdmF0ZSAqbnAgPSAoc3RydWN0 IG5ldGRldl9wcml2YXRlICopZGV2LT5wcml2Ow0KLQlpbnQgaTsNCisJaW50 IGksIGo7DQogDQogCW5ldGlmX3N0b3BfcXVldWUoZGV2KTsNCiANCkBAIC0x MzA1LDcgKzE0NzQsNyBAQA0KIAkJZm9yIChpID0gMDsgaSA8IDggLyogVFhf UklOR19TSVpFIGlzIGh1Z2UhICovOyBpKyspDQogCQkJcHJpbnRrKEtFUk5f REVCVUcgIiAjJWQgZGVzYy4gJTguOHggJTguOHggLT4gJTguOHguXG4iLA0K IAkJCQkgICBpLCBsZTMyX3RvX2NwdShucC0+dHhfcmluZ1tpXS5zdGF0dXMp LA0KLQkJCQkgICBsZTMyX3RvX2NwdShucC0+dHhfcmluZ1tpXS5hZGRyKSwN CisJCQkJICAgbGUzMl90b19jcHUobnAtPnR4X3JpbmdbaV0uZmlyc3RfYWRk ciksDQogCQkJCSAgIGxlMzJfdG9fY3B1KG5wLT50eF9kb25lX3FbaV0uc3Rh dHVzKSk7DQogCQlwcmludGsoS0VSTl9ERUJVRyAiICBSeCByaW5nIGF0ICU4 Ljh4IC0+ICVwOlxuIiwNCiAJCQkgICBucC0+cnhfcmluZ19kbWEsIG5wLT5y eF9kb25lX3EpOw0KQEAgLTEzMzMsMTYgKzE1MDIsMjMgQEANCiAJCXN0cnVj dCBza19idWZmICpza2IgPSBucC0+dHhfaW5mb1tpXS5za2I7DQogCQlpZiAo c2tiICE9IE5VTEwpIHsNCiAJCQlwY2lfdW5tYXBfc2luZ2xlKG5wLT5wY2lf ZGV2LA0KLQkJCQkJIG5wLT50eF9pbmZvW2ldLm1hcHBpbmcsDQotCQkJCQkg c2tiLT5sZW4sIFBDSV9ETUFfVE9ERVZJQ0UpOw0KKwkJCQkJIG5wLT50eF9p bmZvW2ldLmZpcnN0X21hcHBpbmcsDQorCQkJCQkgc2tiX2hlYWRsZW4oc2ti KSwgUENJX0RNQV9UT0RFVklDRSk7DQorCQkJbnAtPnR4X2luZm9baV0uZmly c3RfbWFwcGluZyA9IDA7DQogCQkJZGV2X2tmcmVlX3NrYihza2IpOw0KKwkJ CW5wLT50eF9pbmZvW2ldLnNrYiA9IE5VTEw7DQorCQkJZm9yIChqID0gMDsg aiA8IDY7IGorKykNCisJCQkJaWYgKG5wLT50eF9pbmZvW2ldLmZyYWdfbWFw cGluZ1tqXSkgew0KKwkJCQkJcGNpX3VubWFwX3NpbmdsZShucC0+cGNpX2Rl diwNCisJCQkJCQkJCQkgbnAtPnR4X2luZm9baV0uZnJhZ19tYXBwaW5nW2pd LA0KKwkJCQkJCQkJCSBza2Jfc2hpbmZvKHNrYiktPmZyYWdzW2pdLnNpemUs DQorCQkJCQkJCQkJIFBDSV9ETUFfVE9ERVZJQ0UpOw0KKwkJCQkJbnAtPnR4 X2luZm9baV0uZnJhZ19tYXBwaW5nW2pdID0gMDsNCisJCQkJfSBlbHNlDQor CQkJCQlicmVhazsNCiAJCX0NCi0JCW5wLT50eF9pbmZvW2ldLnNrYiA9IE5V TEw7DQotCQlucC0+dHhfaW5mb1tpXS5tYXBwaW5nID0gMDsNCiAJfQ0KIA0K LQlNT0RfREVDX1VTRV9DT1VOVDsNCi0NCiAJcmV0dXJuIDA7DQogfQ0KIA0K QEAgLTEzNTksNiArMTUzNSw5IEBADQogDQogCXVucmVnaXN0ZXJfbmV0ZGV2 KGRldik7DQogCWlvdW5tYXAoKGNoYXIgKilkZXYtPmJhc2VfYWRkcik7DQor DQorCXJlbGVhc2VfbWVtX3JlZ2lvbihwY2lfcmVzb3VyY2Vfc3RhcnQgKHBk ZXYsIDApLA0KKwkJCQkJICAgcGNpX3Jlc291cmNlX2xlbiAocGRldiwgMCkp Ow0KIA0KIAlpZiAobnAtPnR4X2RvbmVfcSkNCiAJCXBjaV9mcmVlX2NvbnNp c3RlbnQobnAtPnBjaV9kZXYsIFBBR0VfU0laRSwNCmRpZmYgLXVyTlggZGlm Zl9rZXJuZWxfZXhjbHVkZXMgL3Vzci9zcmMvbG9jYWwvbGludXgtMi40LnZh bmlsbGEvZHJpdmVycy9uZXQvc3RhcmZpcmVfZmlybXdhcmUuaCBsaW51eC0y LjQvZHJpdmVycy9uZXQvc3RhcmZpcmVfZmlybXdhcmUuaA0KLS0tIC91c3Iv c3JjL2xvY2FsL2xpbnV4LTIuNC52YW5pbGxhL2RyaXZlcnMvbmV0L3N0YXJm aXJlX2Zpcm13YXJlLmgJV2VkIERlYyAzMSAxNjowMDowMCAxOTY5DQorKysg bGludXgtMi40L2RyaXZlcnMvbmV0L3N0YXJmaXJlX2Zpcm13YXJlLmgJU2F0 IEphbiAyNyAxMzowMzowNiAyMDAxDQpAQCAtMCwwICsxLDIxNSBAQA0KK3N0 YXRpYyB1MzIgZmlybXdhcmVfcnhbXSA9IHsNCisgIDB4MDEwMDAzZGMsIDB4 MDAwMDAwMDAsDQorICAweDA0MDAwNDIxLCAweDAwMDAwMDg2LA0KKyAgMHg4 MDAwMDAxNSwgMHgwMDAwMTgwZSwNCisgIDB4ODEwMDAwMTUsIDB4MDAwMDY2 NjQsDQorICAweDFhMDA0MGFiLCAweDAwMDAwYjA2LA0KKyAgMHgxNDIwMDAx MSwgMHgwMDAwMDAwMCwNCisgIDB4MTQyMDQwMjIsIDB4MDAwMGFhYWEsDQor ICAweDE0MjA0MDIyLCAweDAwMDAwMzAwLA0KKyAgMHgxNDIwNDAyMiwgMHgw MDAwMDAwMCwNCisgIDB4MWEwMDQwYWIsIDB4MDAwMDBiMTQsDQorICAweDE0 MjAwMDExLCAweDAwMDAwMDAwLA0KKyAgMHg4MzAwMDAxNSwgMHgwMDAwMDAw MiwNCisgIDB4MDQwMDAwMjEsIDB4MDAwMDAwMDAsDQorICAweDAwMDAwMDEw LCAweDAwMDAwMDAwLA0KKyAgMHgwNDAwMDQyMSwgMHgwMDAwMDA4NywNCisg IDB4MDAwMDAwMTAsIDB4MDAwMDAwMDAsDQorICAweDAwMDAwMDEwLCAweDAw MDAwMDAwLA0KKyAgMHgwMDAwODAxNSwgMHgwMDAwMDAwMCwNCisgIDB4MDAw MDAwM2UsIDB4MDAwMDAwMDAsDQorICAweDAwMDAwMDEwLCAweDAwMDAwMDAw LA0KKyAgMHg4MjAwMDAxNSwgMHgwMDAwNDAwMCwNCisgIDB4MDA5ZTgwNTAs IDB4MDAwMDAwMDAsDQorICAweDAzMDA4MDE1LCAweDAwMDAwMDAwLA0KKyAg MHg4NjAwODAxNSwgMHgwMDAwMDAwMCwNCisgIDB4ODIwMDAwMTUsIDB4MDAw MDgwMDAsDQorICAweDAxMDAwMDFjLCAweDAwMDAwMDAwLA0KKyAgMHgwMDAw NTBhMCwgMHgwMDAwMDEwYywNCisgIDB4NGUyMGQwMTEsIDB4MDAwMDYwMDgs DQorICAweDE0MjBkMDEyLCAweDAwMDA0MDA4LA0KKyAgMHgwMDAwZjA5MCwg MHgwMDAwNzAwMCwNCisgIDB4MDAwMGM4YjAsIDB4MDAwMDMwMDAsDQorICAw eDAwMDA0MDQwLCAweDAwMDAwMDAwLA0KKyAgMHgwMDEwODAxNSwgMHgwMDAw MDAwMCwNCisgIDB4MDBhMmMxNTAsIDB4MDAwMDQwMDAsDQorICAweDAwYTQw MGIwLCAweDAwMDAwMDE0LA0KKyAgMHgwMDAwMDAyMCwgMHgwMDAwMDAwMCwN CisgIDB4MjUwMDQwMGQsIDB4MDAwMDI1MjUsDQorICAweDAwMDQ3MjIwLCAw eDAwMDAzMTAwLA0KKyAgMHgwMDkzNDA3MCwgMHgwMDAwMDAwMCwNCisgIDB4 MDAwMDAwMjAsIDB4MDAwMDAwMDAsDQorICAweDAwOTI0NDYwLCAweDAwMDAw MTg0LA0KKyAgMHgyYjIwYzAxMSwgMHgwMDAwMDAwMCwNCisgIDB4MDAwMGM0 MjAsIDB4MDAwMDA1NDAsDQorICAweDM2MDE0MDE4LCAweDAwMDA0MjJkLA0K KyAgMHgxNDIwMDAxMSwgMHgwMDAwMDAwMCwNCisgIDB4MDA5MjQ0NjAsIDB4 MDAwMDAxODMsDQorICAweDMyMDAwMDFmLCAweDAwMDAwMDM0LA0KKyAgMHgw MmFjMDAxNSwgMHgwMDAwMDAwMiwNCisgIDB4MDBhNjAxMTAsIDB4MDAwMDAw MDgsDQorICAweDQyMjAwMDExLCAweDAwMDAwMDAwLA0KKyAgMHgwMDkyNDA2 MCwgMHgwMDAwMDEwMywNCisgIDB4MDAwMDAwMWUsIDB4MDAwMDAwMDAsDQor ICAweDAwMDAwMDIwLCAweDAwMDAwMTAwLA0KKyAgMHgwMDAwMDAxZSwgMHgw MDAwMDAwMCwNCisgIDB4MDA5MjQ0NjAsIDB4MDAwMDAwODYsDQorICAweDAw MDA0MDgwLCAweDAwMDAwMDAwLA0KKyAgMHgwMDkyYzA3MCwgMHgwMDAwMDAw MCwNCisgIDB4MDA5MjQwNjAsIDB4MDAwMDAxMDAsDQorICAweDAwMDBjODkw LCAweDAwMDA1MDAwLA0KKyAgMHgwMGE2YzExMCwgMHgwMDAwMDAwMCwNCisg IDB4MDBiMGMwOTAsIDB4MDAwMDAwMTIsDQorICAweDAyMWMwMDE1LCAweDAw MDAwMDAwLA0KKyAgMHgzMjAwMDAxZiwgMHgwMDAwMDAzNCwNCisgIDB4MDA5 MjQ0NjAsIDB4MDAwMDA1MTAsDQorICAweDQ0MjEwMDExLCAweDAwMDAwMDAw LA0KKyAgMHg0MjAwMDAxMSwgMHgwMDAwMDAwMCwNCisgIDB4ODMwMDAwMTUs IDB4MDAwMDAwNDAsDQorICAweDAwOTI0NDYwLCAweDAwMDAwNTA4LA0KKyAg MHg0NTAxNDAxOCwgMHgwMDAwNDU0NSwNCisgIDB4MDA4MDgwNTAsIDB4MDAw MDAwMDAsDQorICAweDYyMjA4MDEyLCAweDAwMDAwMDAwLA0KKyAgMHg4MjAw MDAxNSwgMHgwMDAwMDgwMCwNCisgIDB4MTUyMDAwMTEsIDB4MDAwMDAwMDAs DQorICAweDAwMDAwMDEwLCAweDAwMDAwMDAwLA0KKyAgMHgwMDAwMDAxMCwg MHgwMDAwMDAwMCwNCisgIDB4MDAwMDAwMTAsIDB4MDAwMDAwMDAsDQorICAw eDAwMDAwMDEwLCAweDAwMDAwMDAwLA0KKyAgMHgwMDAwMDAxMCwgMHgwMDAw MDAwMCwNCisgIDB4ODAwMDAwMTUsIDB4MDAwMGVlYTQsDQorICAweDgxMDAw MDE1LCAweDAwMDAwMDVmLA0KKyAgMHgwMDAwMDA2MCwgMHgwMDAwMDAwMCwN CisgIDB4MDAwMDQxMjAsIDB4MDAwMDAwMDAsDQorICAweDAwMDA0YTAwLCAw eDAwMDA0MDAwLA0KKyAgMHgwMDkyNDQ2MCwgMHgwMDAwMDE5MCwNCisgIDB4 NTYwMTQwMWEsIDB4MDAwMDU5NTYsDQorICAweDE0MDAwMDExLCAweDAwMDAw MDAwLA0KKyAgMHgwMDkzNDA1MCwgMHgwMDAwMDAxOCwNCisgIDB4MDA5MzAw NTAsIDB4MDAwMDAwMTgsDQorICAweDM2MDE0MDNhLCAweDAwMDAwMDJkLA0K KyAgMHgwMDA2NDNhOSwgMHgwMDAwMDAwMCwNCisgIDB4MDAwMGM0MjAsIDB4 MDAwMDAxNDAsDQorICAweDU2MDE0MDFhLCAweDAwMDA1OTU2LA0KKyAgMHgx NDAwMDAxMSwgMHgwMDAwMDAwMCwNCisgIDB4MDAwMDAwMTAsIDB4MDAwMDAw MDAsDQorICAweDAwMDAwMDEwLCAweDAwMDAwMDAwLA0KKyAgMHgwMDA2NDJh OSwgMHgwMDAwMDAwMCwNCisgIDB4MDAwMjQ0MjAsIDB4MDAwMDAxODMsDQor ICAweDU2MDE0MDFhLCAweDAwMDA1OTU2LA0KKyAgMHg4MjAwMDAxNSwgMHgw MDAwMjAwMCwNCisgIDB4MTUyMDAwMTEsIDB4MDAwMDAwMDAsDQorICAweDgy MDAwMDE1LCAweDAwMDAwMDEwLA0KKyAgMHgxNTIwMDAxMSwgMHgwMDAwMDAw MCwNCisgIDB4ODIwMDAwMTUsIDB4MDAwMDAwMTAsDQorICAweDE1MjAwMDEx LCAweDAwMDAwMDAwLA0KK307CS8qIDEwNCBSeCBpbnN0cnVjdGlvbnMgKi8N CisjZGVmaW5lIEZJUk1XQVJFX1JYX1NJWkUgMTA0DQorDQorc3RhdGljIHUz MiBmaXJtd2FyZV90eFtdID0gew0KKyAgMHgwMTAwMDNkYywgMHgwMDAwMDAw MCwNCisgIDB4MDQwMDA0MjEsIDB4MDAwMDAwODYsDQorICAweDgwMDAwMDE1 LCAweDAwMDAxODBlLA0KKyAgMHg4MTAwMDAxNSwgMHgwMDAwNjY2NCwNCisg IDB4MWEwMDQwYWIsIDB4MDAwMDBiMDYsDQorICAweDE0MjAwMDExLCAweDAw MDAwMDAwLA0KKyAgMHgxNDIwNDAyMiwgMHgwMDAwYWFhYSwNCisgIDB4MTQy MDQwMjIsIDB4MDAwMDAzMDAsDQorICAweDE0MjA0MDIyLCAweDAwMDAwMDAw LA0KKyAgMHgxYTAwNDBhYiwgMHgwMDAwMGIxNCwNCisgIDB4MTQyMDAwMTEs IDB4MDAwMDAwMDAsDQorICAweDgzMDAwMDE1LCAweDAwMDAwMDAyLA0KKyAg MHgwNDAwMDAyMSwgMHgwMDAwMDAwMCwNCisgIDB4MDAwMDAwMTAsIDB4MDAw MDAwMDAsDQorICAweDA0MDAwNDIxLCAweDAwMDAwMDg3LA0KKyAgMHgwMDAw MDAxMCwgMHgwMDAwMDAwMCwNCisgIDB4MDAwMDAwMTAsIDB4MDAwMDAwMDAs DQorICAweDAwMDA4MDE1LCAweDAwMDAwMDAwLA0KKyAgMHgwMDAwMDAzZSwg MHgwMDAwMDAwMCwNCisgIDB4MDAwMDAwMTAsIDB4MDAwMDAwMDAsDQorICAw eDgyMDAwMDE1LCAweDAwMDA0MDAwLA0KKyAgMHgwMDllODA1MCwgMHgwMDAw MDAwMCwNCisgIDB4MDMwMDgwMTUsIDB4MDAwMDAwMDAsDQorICAweDg2MDA4 MDE1LCAweDAwMDAwMDAwLA0KKyAgMHg4MjAwMDAxNSwgMHgwMDAwODAwMCwN CisgIDB4MDEwMDAwMWMsIDB4MDAwMDAwMDAsDQorICAweDAwMDA1MGEwLCAw eDAwMDAwMTBjLA0KKyAgMHg0ZTIwZDAxMSwgMHgwMDAwNjAwOCwNCisgIDB4 MTQyMGQwMTIsIDB4MDAwMDQwMDgsDQorICAweDAwMDBmMDkwLCAweDAwMDA3 MDAwLA0KKyAgMHgwMDAwYzhiMCwgMHgwMDAwMzAwMCwNCisgIDB4MDAwMDQw NDAsIDB4MDAwMDAwMDAsDQorICAweDAwMTA4MDE1LCAweDAwMDAwMDAwLA0K KyAgMHgwMGEyYzE1MCwgMHgwMDAwNDAwMCwNCisgIDB4MDBhNDAwYjAsIDB4 MDAwMDAwMTQsDQorICAweDAwMDAwMDIwLCAweDAwMDAwMDAwLA0KKyAgMHgy NTAwNDAwZCwgMHgwMDAwMjUyNSwNCisgIDB4MDAwNDcyMjAsIDB4MDAwMDMx MDAsDQorICAweDAwOTM0MDcwLCAweDAwMDAwMDAwLA0KKyAgMHgwMDAwMDAy MCwgMHgwMDAwMDAwMCwNCisgIDB4MDA5MjQ0NjAsIDB4MDAwMDAxODQsDQor ICAweDJiMjBjMDExLCAweDAwMDAwMDAwLA0KKyAgMHgwMDAwYzQyMCwgMHgw MDAwMDU0MCwNCisgIDB4MzYwMTQwMTgsIDB4MDAwMDQyMmQsDQorICAweDE0 MjAwMDExLCAweDAwMDAwMDAwLA0KKyAgMHgwMDkyNDQ2MCwgMHgwMDAwMDE4 MywNCisgIDB4MzIwMDAwMWYsIDB4MDAwMDAwMzQsDQorICAweDAyYWMwMDE1 LCAweDAwMDAwMDAyLA0KKyAgMHgwMGE2MDExMCwgMHgwMDAwMDAwOCwNCisg IDB4NDIyMDAwMTEsIDB4MDAwMDAwMDAsDQorICAweDAwOTI0MDYwLCAweDAw MDAwMTAzLA0KKyAgMHgwMDAwMDAxZSwgMHgwMDAwMDAwMCwNCisgIDB4MDAw MDAwMjAsIDB4MDAwMDAxMDAsDQorICAweDAwMDAwMDFlLCAweDAwMDAwMDAw LA0KKyAgMHgwMDkyNDQ2MCwgMHgwMDAwMDA4NiwNCisgIDB4MDAwMDQwODAs IDB4MDAwMDAwMDAsDQorICAweDAwOTJjMDcwLCAweDAwMDAwMDAwLA0KKyAg MHgwMDkyNDA2MCwgMHgwMDAwMDEwMCwNCisgIDB4MDAwMGM4OTAsIDB4MDAw MDUwMDAsDQorICAweDAwYTZjMTEwLCAweDAwMDAwMDAwLA0KKyAgMHgwMGIw YzA5MCwgMHgwMDAwMDAxMiwNCisgIDB4MDIxYzAwMTUsIDB4MDAwMDAwMDAs DQorICAweDMyMDAwMDFmLCAweDAwMDAwMDM0LA0KKyAgMHgwMDkyNDQ2MCwg MHgwMDAwMDUxMCwNCisgIDB4NDQyMTAwMTEsIDB4MDAwMDAwMDAsDQorICAw eDQyMDAwMDExLCAweDAwMDAwMDAwLA0KKyAgMHg4MzAwMDAxNSwgMHgwMDAw MDA0MCwNCisgIDB4MDA5MjQ0NjAsIDB4MDAwMDA1MDgsDQorICAweDQ1MDE0 MDE4LCAweDAwMDA0NTQ1LA0KKyAgMHgwMDgwODA1MCwgMHgwMDAwMDAwMCwN CisgIDB4NjIyMDgwMTIsIDB4MDAwMDAwMDAsDQorICAweDgyMDAwMDE1LCAw eDAwMDAwODAwLA0KKyAgMHgxNTIwMDAxMSwgMHgwMDAwMDAwMCwNCisgIDB4 MDAwMDAwMTAsIDB4MDAwMDAwMDAsDQorICAweDAwMDAwMDEwLCAweDAwMDAw MDAwLA0KKyAgMHgwMDAwMDAxMCwgMHgwMDAwMDAwMCwNCisgIDB4MDAwMDAw MTAsIDB4MDAwMDAwMDAsDQorICAweDAwMDAwMDEwLCAweDAwMDAwMDAwLA0K KyAgMHg4MDAwMDAxNSwgMHgwMDAwZWVhNCwNCisgIDB4ODEwMDAwMTUsIDB4 MDAwMDAwNWYsDQorICAweDAwMDAwMDYwLCAweDAwMDAwMDAwLA0KKyAgMHgw MDAwNDEyMCwgMHgwMDAwMDAwMCwNCisgIDB4MDAwMDRhMDAsIDB4MDAwMDQw MDAsDQorICAweDAwOTI0NDYwLCAweDAwMDAwMTkwLA0KKyAgMHg1NjAxNDAx YSwgMHgwMDAwNTk1NiwNCisgIDB4MTQwMDAwMTEsIDB4MDAwMDAwMDAsDQor ICAweDAwOTM0MDUwLCAweDAwMDAwMDE4LA0KKyAgMHgwMDkzMDA1MCwgMHgw MDAwMDAxOCwNCisgIDB4MzYwMTQwM2EsIDB4MDAwMDAwMmQsDQorICAweDAw MDY0M2E5LCAweDAwMDAwMDAwLA0KKyAgMHgwMDAwYzQyMCwgMHgwMDAwMDE0 MCwNCisgIDB4NTYwMTQwMWEsIDB4MDAwMDU5NTYsDQorICAweDE0MDAwMDEx LCAweDAwMDAwMDAwLA0KKyAgMHgwMDAwMDAxMCwgMHgwMDAwMDAwMCwNCisg IDB4MDAwMDAwMTAsIDB4MDAwMDAwMDAsDQorICAweDAwMDY0MmE5LCAweDAw MDAwMDAwLA0KKyAgMHgwMDAyNDQyMCwgMHgwMDAwMDE4MywNCisgIDB4NTYw MTQwMWEsIDB4MDAwMDU5NTYsDQorICAweDgyMDAwMDE1LCAweDAwMDAyMDAw LA0KKyAgMHgxNTIwMDAxMSwgMHgwMDAwMDAwMCwNCisgIDB4ODIwMDAwMTUs IDB4MDAwMDAwMTAsDQorICAweDE1MjAwMDExLCAweDAwMDAwMDAwLA0KKyAg MHg4MjAwMDAxNSwgMHgwMDAwMDAxMCwNCisgIDB4MTUyMDAwMTEsIDB4MDAw MDAwMDAsDQorfTsJLyogMTA0IFR4IGluc3RydWN0aW9ucyAqLw0KKyNkZWZp bmUgRklSTVdBUkVfVFhfU0laRSAxMDQNCmRpZmYgLXVyTlggZGlmZl9rZXJu ZWxfZXhjbHVkZXMgL3Vzci9zcmMvbG9jYWwvbGludXgtMi40LnZhbmlsbGEv ZHJpdmVycy9uZXQvc3RhcmZpcmVfZmlybXdhcmUucGwgbGludXgtMi40L2Ry aXZlcnMvbmV0L3N0YXJmaXJlX2Zpcm13YXJlLnBsDQotLS0gL3Vzci9zcmMv bG9jYWwvbGludXgtMi40LnZhbmlsbGEvZHJpdmVycy9uZXQvc3RhcmZpcmVf ZmlybXdhcmUucGwJV2VkIERlYyAzMSAxNjowMDowMCAxOTY5DQorKysgbGlu dXgtMi40L2RyaXZlcnMvbmV0L3N0YXJmaXJlX2Zpcm13YXJlLnBsCVRodSBK YW4gMjUgMjE6NDM6MjcgMjAwMQ0KQEAgLTAsMCArMSwzMSBAQA0KKyMhL3Vz ci9iaW4vcGVybA0KKw0KKyMgVGhpcyBzY3JpcHQgY2FuIGJlIHVzZWQgdG8g Z2VuZXJhdGUgYSBuZXcgc3RhcmZpcmVfZmlybXdhcmUuaA0KKyMgZnJvbSBH RlBfUlguREFUIGFuZCBHRlBfVFguREFULCBmaWxlcyBpbmNsdWRlZCB3aXRo IHRoZSBEREsNCisjIGFuZCBhbHNvIHdpdGggdGhlIE5vdmVsbCBkcml2ZXJz Lg0KKw0KK29wZW4gRlcsICJHRlBfUlguREFUIiB8fCBkaWU7DQorb3BlbiBG V0gsICI+c3RhcmZpcmVfZmlybXdhcmUuaCIgfHwgZGllOw0KKw0KK3ByaW50 ZihGV0ggInN0YXRpYyB1MzIgZmlybXdhcmVfcnhbXSA9IHtcbiIpOw0KKyRj b3VudGVyID0gMDsNCit3aGlsZSAoJGZvbyA9IDxGVz4pIHsNCisgIGNob21w Ow0KKyAgcHJpbnRmKEZXSCAiICAweCVzLCAweDAwMDAlcyxcbiIsIHN1YnN0 cigkZm9vLCA0LCA4KSwgc3Vic3RyKCRmb28sIDAsIDQpKTsNCisgICRjb3Vu dGVyKys7DQorfQ0KKw0KK2Nsb3NlIEZXOw0KK29wZW4gRlcsICJHRlBfVFgu REFUIiB8fCBkaWU7DQorDQorcHJpbnRmKEZXSCAifTtcdC8qICVkIFJ4IGlu c3RydWN0aW9ucyAqL1xuI2RlZmluZSBGSVJNV0FSRV9SWF9TSVpFICVkXG5c bnN0YXRpYyB1MzIgZmlybXdhcmVfdHhbXSA9IHtcbiIsICRjb3VudGVyLCAk Y291bnRlcik7DQorJGNvdW50ZXIgPSAwOw0KK3doaWxlICgkZm9vID0gPEZX Pikgew0KKyAgY2hvbXA7DQorICBwcmludGYoRldIICIgIDB4JXMsIDB4MDAw MCVzLFxuIiwgc3Vic3RyKCRmb28sIDQsIDgpLCBzdWJzdHIoJGZvbywgMCwg NCkpOw0KKyAgJGNvdW50ZXIrKzsNCit9DQorDQorY2xvc2UgRlc7DQorcHJp bnRmKEZXSCAifTtcdC8qICVkIFR4IGluc3RydWN0aW9ucyAqL1xuI2RlZmlu ZSBGSVJNV0FSRV9UWF9TSVpFICVkXG4iLCAkY291bnRlciwgJGNvdW50ZXIp Ow0KK2Nsb3NlKEZXSCk7DQo= --375685179-76745159-980630321=:20615-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/