From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from cpout2.tiscali.be (cpout2.tiscali.be [62.235.13.194]) by dsl2.external.hp.com (Postfix) with ESMTP id 16F09487E for ; Thu, 22 Jan 2004 11:54:20 -0700 (MST) Date: Thu, 22 Jan 2004 19:54:16 +0100 Message-ID: <400CB8A1000028AB@ocpmta3.freegates.net> From: "Joel Soete" Subject: Re: [parisc-linux] B2k and CONFIG_PDC_CONSOLE pb: followup To: "Grant Grundler" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="========/400CB8A1000028AB/mail.tiscali.be" Cc: PARISC list List-Id: parisc-linux developers list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --========/400CB8A1000028AB/mail.tiscali.be Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit >yup - that's fixed in 2.6 slightly better. >Look for pdc_io_reset_devices() in drivers/parisc/sba_iommu.c. >You can backport and test that change to 2.4, I'd be happy to apply it. Well, here is attached 95% of work (see attached text file PDC_WRK.diff) Please double check (may be still removing temporarely useless EXPORT_SYMBOL and finalyse chg of 'direction' type to an enum?) But it doesn't help it just move the pb when setup SBA :( [snip] 5. Memory (1) at 0xfed10200 [49], versions 0x d, 0x0, 0x9 CPU(s): 1 x PA8600 (PCX-W+) at 400.000000 MHz SBA found Astro 2.1 at 0xfed00000 >The problem is if suckyio USB (or any device) is still doing DMA when >we reprogram the IOMMU, it will cause an HPMC. hmm I didn't get any hmpc but it more act as if it was sending something to write to the cdrom (iether the cdrom was connected or not) or trying to reset with wrong info? > The reason is we are fundementally changing how DMA works (non-coherent > to coherent) and PDC doesn't reprogram the suckyIo USB accordingly. > C3000 (and related systems) provides a special PDC call to disable USB. > "ccio" (eg C200) systems can have the same problem with LAN boot. Even in 2.6 I got exactly the same pb with this ?*# b2k (and unforunately I have only one b2k to test :(, just in case it was a pb on this machine?) >> I also try to bypass this memcpy (and restore pdc_suspend_usb() call) >> and it boot also well. The same with patch. >I think you've just prevented either PDC or Linux from using a PDC device. Ok >> In sumary, on the b2k, this early memcpy() seems to break something in >> the later pdc_suspend_usb() call. >It's the other way around. pdc_suspend_usb() is breaking PDC_CONSOLE. >See email related to linux-2.6 c3000 serial console problems late >last year. Still have to read back again (sorry) >AFAIK, the memcpy just enables the PDC to use a serial console. >But pdc_suspend_usb() apperently blows away the whole suckyio chip >and thus PDC can no longer use suckyio serial either. Hrmm..I t ought >there was a IO_RESET_AND_CLEAR pdc call in that same chunk of code. Sorry I didn't find any IO_RESET_AND_CLEAR :( Even though, I try to call pdc_io_reset(); just before pdc_io_reset_device();. But it doesn't help ;) >Anyway, Figuring out some additional info could help: > (a) know which devices migh have DMA enabled when the OS gets control How may do this ?) > (b) disable just the DMA > (c) detect when PDC_CONSOLE wants to use a device whose DMA we've disabled I would also like to be sure that the same info are used (and btw send to pdc) by real32_call_asm and so just put some printk before this call real32_call_asm(); but it seems to create an infinite loop of print. Any idea? Where should I found more info on all of this 'cmd' send to pdc? Thanks in advance for additional attention, Joel ------------------------------------------------------------------------- Tiscali ADSL: 12 mois à 29,50 €/mois! L'Internet rapide, c'est pour tout le monde. http://reg.tiscali.be/default.asp?lg=fr --========/400CB8A1000028AB/mail.tiscali.be Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="PDC_WRK.diff" ZGlmZiAtTmF1clggZG9udGRpZmYgbGludXgtMi40LjI0LXBhMC5vcmlnL2FyY2gvcGFyaXNjL2tl cm5lbC9lbnRyeS5TIGxpbnV4LTIuNC4yNC1wYTAvYXJjaC9wYXJpc2Mva2VybmVsL2VudHJ5LlMK LS0tIGxpbnV4LTIuNC4yNC1wYTAub3JpZy9hcmNoL3BhcmlzYy9rZXJuZWwvZW50cnkuUwkyMDAz LTEyLTA1IDA3OjQyOjMyLjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi40LjI0LXBhMC9hcmNo L3BhcmlzYy9rZXJuZWwvZW50cnkuUwkyMDA0LTAxLTIyIDEzOjIyOjA0LjAwMDAwMDAwMCArMDEw MApAQCAtMjIyNyw5ICsyMjI3LDEyIEBACiAKIAlTVFJFRyAgICAgJXIyOCxUQVNLX1BUX0dSMjgt VEFTS19TWl9BTEdOLUZSQU1FX1NJWkUoJXIzMCkKIAorI2lmZGVmIENPTkZJR19IUFVYCisKIAkv KiBTYXZlIG90aGVyIGhwdXggcmV0dXJucyBpZiBwZXJzb25hbGl0eSBpcyBQRVJfSFBVWCAqLwog Ci0jZGVmaW5lIFBFUl9IUFVYIDB4ZSAvKiA8bGludXgvcGVyc29uYWxpdHkuaD4gY2Fubm90IGJl IGVhc2lseSBpbmNsdWRlZCAqLworLyogPGxpbnV4L3BlcnNvbmFsaXR5Lmg+IGNhbm5vdCBiZSBl YXNpbHkgaW5jbHVkZWQgKi8KKyNkZWZpbmUgUEVSX0hQVVggMHhlCiAKIAlMRFJFRyAgICAgVEFT S19QRVJTT05BTElUWS1UQVNLX1NaX0FMR04tRlJBTUVfU0laRSglcjMwKSwlcjE5CiAJQ01QSUI8 PixuIFBFUl9IUFVYLCVyMTksMWYKQEAgLTIyMzcsNiArMjI0MCw4IEBACiAJU1RSRUcgICAgICVy MjksVEFTS19QVF9HUjI5LVRBU0tfU1pfQUxHTi1GUkFNRV9TSVpFKCVyMzApCiAxOgogCisjZW5k aWYgLyogQ09ORklHX0hQVVggKi8KKwogCS8qIFNlZW1zIHRvIG1lIHRoYXQgZHAgY291bGQgYmUg d3JvbmcgaGVyZSwgaWYgdGhlIHN5c2NhbGwgaW52b2x2ZWQKIAkgKiBjYWxsaW5nIGEgbW9kdWxl LCBhbmQgbm90aGluZyBnb3Qgcm91bmQgdG8gcmVzdG9yaW5nIGRwIG9uIHJldHVybi4KIAkgKi8K ZGlmZiAtTmF1clggZG9udGRpZmYgbGludXgtMi40LjI0LXBhMC5vcmlnL2FyY2gvcGFyaXNjL2tl cm5lbC9maXJtd2FyZS5jIGxpbnV4LTIuNC4yNC1wYTAvYXJjaC9wYXJpc2Mva2VybmVsL2Zpcm13 YXJlLmMKLS0tIGxpbnV4LTIuNC4yNC1wYTAub3JpZy9hcmNoL3BhcmlzYy9rZXJuZWwvZmlybXdh cmUuYwkyMDAzLTEwLTAyIDA3OjMwOjU1LjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMi40LjI0 LXBhMC9hcmNoL3BhcmlzYy9rZXJuZWwvZmlybXdhcmUuYwkyMDA0LTAxLTIyIDE4OjE2OjEyLjAw MDAwMDAwMCArMDEwMApAQCAtMSwxMCArMSwyMiBAQAotLyogYXJjaC9wYXJpc2Mva2VybmVsL2Zp cm13YXJlLmMgIC0gc2FmZSBwZGMgYWNjZXNzIHJvdXRpbmVzCisvKgorICogYXJjaC9wYXJpc2Mv a2VybmVsL2Zpcm13YXJlLmMgIC0gc2FmZSBQREMgYWNjZXNzIHJvdXRpbmVzCisgKgorICoJUERD ID09IFByb2Nlc3NvciBEZXBlbmRlbnQgQ29kZQorICoKKyAqIFNlZSBodHRwOi8vd3d3LnBhcmlz Yy1saW51eC5vcmcvZG9jdW1lbnRhdGlvbi9pbmRleC5odG1sCisgKiBmb3IgZG9jdW1lbnRhdGlv biBkZXNjcmliaW5nIHRoZSBlbnRyeSBwb2ludHMgYW5kIGNhbGxpbmcKKyAqIGNvbnZlbnRpb25z IGRlZmluZWQgYmVsb3cuCiAgKgogICogQ29weXJpZ2h0IDE5OTkgU3VTRSBHbWJIIE51ZXJuYmVy ZyAoUGhpbGlwcCBSdW1wZiwgcHJ1bXBmQHR1eC5vcmcpCi0gKiBwb3J0aW9ucyBDb3B5cmlnaHQg MTk5OSBUaGUgUHVmZmluIEdyb3VwLCAoQWxleCBkZVZyaWVzLCBEYXZpZCBLZW5uZWR5KQorICog Q29weXJpZ2h0IDE5OTkgVGhlIFB1ZmZpbiBHcm91cCwgKEFsZXggZGVWcmllcywgRGF2aWQgS2Vu bmVkeSkKKyAqIENvcHlyaWdodCAyMDAzIEdyYW50IEdydW5kbGVyIDxncnVuZGxlciBwYXJpc2Mt bGludXggb3JnPgogICoKLSAqIG9ubHkgdGhlc2Ugcm91dGluZXMgc2hvdWxkIGJlIHVzZWQgb3V0 IG9mIHRoZSByZWFsIGtlcm5lbCAoaS5lLiBldmVyeXRoaW5nCi0gKiB1c2luZyB2aXJ0dWFsIGFk ZHJlc3NlcykgZm9yIG9idmlvdXMgcmVhc29ucyAqLworICogICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisgKiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAqCisgKi8KIAogLyoJSSB0aGluayBpdCB3b3VsZCBiZSBpbiBldmVy eW9uZSdzIGJlc3QgaW50ZXJlc3QgdG8gZm9sbG93IHRoaXMKICAqCWd1aWRlbGluZXMgd2hlbiB3 cml0aW5nIFBEQyB3cmFwcGVyczoKQEAgLTQxLDE5ICs1MywyMCBAQAogICoJCQkJCXBydW1wZgk5 OTEwMTYJCiAgKi8KIAorI2luY2x1ZGUgPHN0ZGFyZy5oPgorCisjaW5jbHVkZSA8bGludXgvZGVs YXkuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+ CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CiAj aW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5j bHVkZSA8bGludXgvZGVsYXkuaD4KIAogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CiAjaW5jbHVkZSA8 YXNtL3BkYy5oPgogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vz c29yLmg+CS8qIGZvciBib290X2NwdV9kYXRhICovCiAKLSNpbmNsdWRlIDxzdGRhcmcuaD4KLQog c3RhdGljIHNwaW5sb2NrX3QgcGRjX2xvY2sgPSBTUElOX0xPQ0tfVU5MT0NLRUQ7CiBzdGF0aWMg dW5zaWduZWQgbG9uZyBwZGNfcmVzdWx0WzMyXSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoOCkp KTsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIHBkY19yZXN1bHQyWzMyXSBfX2F0dHJpYnV0ZV9fICgo YWxpZ25lZCAoOCkpKTsKQEAgLTcwLDkgKzgzLDkgQEAKICAqLwogCiAjaWZkZWYgX19M UDY0X18KLXN0YXRpYyBsb25nIHJlYWw2NF9jYWxsKHVuc2lnbmVkIGxvbmcgZnVuY3Rpb24sIC4u Lik7Citsb25nIHJlYWw2NF9jYWxsKHVuc2lnbmVkIGxvbmcgZnVuY3Rpb24sIC4uLik7CiAjZW5k aWYKLXN0YXRpYyBsb25nIHJlYWwzMl9jYWxsKHVuc2lnbmVkIGxvbmcgZnVuY3Rpb24sIC4uLik7 Citsb25nIHJlYWwzMl9jYWxsKHVuc2lnbmVkIGxvbmcgZnVuY3Rpb24sIC4uLik7CiAKICNpZiBk ZWZpbmVkKF9fTFA2NF9fKSAmJiAhIGRlZmluZWQoQ09ORklHX1BEQ19OQVJST1cpCiAjZGVmaW5l IE1FTV9QREMgKHVuc2lnbmVkIGxvbmcpKFBBR0UwLT5tZW1fcGRjX2hpKSA8PCAzMiB8IFBBR0Uw LT5tZW1fcGRjCkBAIC0xNDMsMTQgKzE1NiwxNSBAQAogICovCiBpbnQgcGRjX2FkZF92YWxpZCh1 bnNpZ25lZCBsb25nIGFkZHJlc3MpCiB7Ci0gICAgICAgIGludCByZXR2YWw7CisJaW50IHJldHZh bDsKIAotICAgICAgICBzcGluX2xvY2tfaXJxKCZwZGNfbG9jayk7Ci0gICAgICAgIHJldHZhbCA9 IG1lbV9wZGNfY2FsbChQRENfQUREX1ZBTElELCBQRENfQUREX1ZBTElEX1ZFUklGWSwgYWRkcmVz cyk7Ci0gICAgICAgIHNwaW5fdW5sb2NrX2lycSgmcGRjX2xvY2spOworCXNwaW5fbG9ja19pcnEo JnBkY19sb2NrKTsKKwlyZXR2YWwgPSBtZW1fcGRjX2NhbGwoUERDX0FERF9WQUxJRCwgUERDX0FE RF9WQUxJRF9WRVJJRlksIGFkZHJlc3MpOworCXNwaW5fdW5sb2NrX2lycSgmcGRjX2xvY2spOwog Ci0gICAgICAgIHJldHVybiByZXR2YWw7CisJcmV0dXJuIHJldHZhbDsKIH0KKy8qIEVYUE9SVF9T WU1CT0wocGRjX2FkZF92YWxpZCk7ICovCiAKIC8qKgogICogcGRjX2NoYXNzaXNfaW5mbyAtIFJl dHVybiBjaGFzc2lzIGluZm9ybWF0aW9uLgpAQCAtMTYyLDE4ICsxNzYsMTggQEAKICAqLwogaW50 IF9faW5pdCBwZGNfY2hhc3Npc19pbmZvKHN0cnVjdCBwZGNfY2hhc3Npc19pbmZvICpjaGFzc2lz X2luZm8sIHZvaWQgKmxlZF9pbmZvLCB1bnNpZ25lZCBsb25nIGxlbikKIHsKLSAgICAgICAgaW50 IHJldHZhbDsKKwlpbnQgcmV0dmFsOwogCi0gICAgICAgIHNwaW5fbG9ja19pcnEoJnBkY19sb2Nr KTsKLSAgICAgICAgbWVtY3B5KCZwZGNfcmVzdWx0LCBjaGFzc2lzX2luZm8sIHNpemVvZigqY2hh c3Npc19pbmZvKSk7Ci0gICAgICAgIG1lbWNweSgmcGRjX3Jlc3VsdDIsIGxlZF9pbmZvLCBsZW4p OwotICAgICAgICByZXR2YWwgPSBtZW1fcGRjX2NhbGwoUERDX0NIQVNTSVMsIFBEQ19SRVRVUk5f Q0hBU1NJU19JTkZPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wYShwZGNfcmVz dWx0KSwgX19wYShwZGNfcmVzdWx0MiksIGxlbik7Ci0gICAgICAgIG1lbWNweShjaGFzc2lzX2lu Zm8sIHBkY19yZXN1bHQsIHNpemVvZigqY2hhc3Npc19pbmZvKSk7Ci0gICAgICAgIG1lbWNweShs ZWRfaW5mbywgcGRjX3Jlc3VsdDIsIGxlbik7Ci0gICAgICAgIHNwaW5fdW5sb2NrX2lycSgmcGRj X2xvY2spOworCXNwaW5fbG9ja19pcnEoJnBkY19sb2NrKTsKKwltZW1jcHkoJnBkY19yZXN1bHQs IGNoYXNzaXNfaW5mbywgc2l6ZW9mKCpjaGFzc2lzX2luZm8pKTsKKwltZW1jcHkoJnBkY19yZXN1 bHQyLCBsZWRfaW5mbywgbGVuKTsKKwlyZXR2YWwgPSBtZW1fcGRjX2NhbGwoUERDX0NIQVNTSVMs IFBEQ19SRVRVUk5fQ0hBU1NJU19JTkZPLAorCQkJICAgICAgX19wYShwZGNfcmVzdWx0KSwgX19w YShwZGNfcmVzdWx0MiksIGxlbik7CisJbWVtY3B5KGNoYXNzaXNfaW5mbywgcGRjX3Jlc3VsdCwg c2l6ZW9mKCpjaGFzc2lzX2luZm8pKTsKKwltZW1jcHkobGVkX2luZm8sIHBkY19yZXN1bHQyLCBs ZW4pOworCXNwaW5fdW5sb2NrX2lycSgmcGRjX2xvY2spOwogCi0gICAgICAgIHJldHVybiByZXR2 YWw7CisJcmV0dXJuIHJldHZhbDsKIH0KIAogLyoqCkBAIC0xODcsOSArMjAxLDkgQEAKIHsKIAlp ZiAoIWlzX3BkY19wYXQoKSkKIAkJcmV0dXJuIC0xOwotCQkKKwogCWludCByZXR2YWwgPSAwOwot CQorCiAJc3Bpbl9sb2NrX2lycSgmcGRjX2xvY2spOwogCXJldHZhbCA9IG1lbV9wZGNfY2FsbChQ RENfUEFUX0NIQVNTSVNfTE9HLCBQRENfUEFUX0NIQVNTSVNfV1JJVEVfTE9HLCBfX3BhKCZzdGF0 ZSksIF9fcGEoJmRhdGEpKTsKIAlzcGluX3VubG9ja19pcnEoJnBkY19sb2NrKTsKQEAgLTIyNCwx OCArMjM4LDE4IEBACiAgKi8KIGludCBfX2luaXQgcGRjX2NvcHJvY19jZmcoc3RydWN0IHBkY19j b3Byb2NfY2ZnICpwZGNfY29wcm9jX2luZm8pCiB7Ci0gICAgICAgIGludCByZXR2YWw7CisJaW50 IHJldHZhbDsKIAotICAgICAgICBzcGluX2xvY2tfaXJxKCZwZGNfbG9jayk7Ci0gICAgICAgIHJl dHZhbCA9IG1lbV9wZGNfY2FsbChQRENfQ09QUk9DLCBQRENfQ09QUk9DX0NGRywgX19wYShwZGNf cmVzdWx0KSk7Ci0gICAgICAgIGNvbnZlcnRfdG9fd2lkZShwZGNfcmVzdWx0KTsKLSAgICAgICAg cGRjX2NvcHJvY19pbmZvLT5jY3JfZnVuY3Rpb25hbCA9IHBkY19yZXN1bHRbMF07Ci0gICAgICAg IHBkY19jb3Byb2NfaW5mby0+Y2NyX3ByZXNlbnQgPSBwZGNfcmVzdWx0WzFdOwotICAgICAgICBw ZGNfY29wcm9jX2luZm8tPnJldmlzaW9uID0gcGRjX3Jlc3VsdFsxN107Ci0gICAgICAgIHBkY19j b3Byb2NfaW5mby0+bW9kZWwgPSBwZGNfcmVzdWx0WzE4XTsKLSAgICAgICAgc3Bpbl91bmxvY2tf aXJxKCZwZGNfbG9jayk7CisJc3Bpbl9sb2NrX2lycSgmcGRjX2xvY2spOworCXJldHZhbCA9IG1l bV9wZGNfY2FsbChQRENfQ09QUk9DLCBQRENfQ09QUk9DX0NGRywgX19wYShwZGNfcmVzdWx0KSk7 CisJY29udmVydF90b193aWRlKHBkY19yZXN1bHQpOworCXBkY19jb3Byb2NfaW5mby0+Y2NyX2Z1 bmN0aW9uYWwgPSBwZGNfcmVzdWx0WzBdOworCXBkY19jb3Byb2NfaW5mby0+Y2NyX3ByZXNlbnQg PSBwZGNfcmVzdWx0WzFdOworCXBkY19jb3Byb2NfaW5mby0+cmV2aXNpb24gPSBwZGNfcmVzdWx0 WzE3XTsKKwlwZGNfY29wcm9jX2luZm8tPm1vZGVsID0gcGRjX3Jlc3VsdFsxOF07CisJc3Bpbl91 bmxvY2tfaXJxKCZwZGNfbG9jayk7CiAKLSAgICAgICAgcmV0dXJuIHJldHZhbDsKKwly ZXR1cm4gcmV0dmFsOwogfQogCiAvKioKQEAgLTI2NCw2ICsyNzgsNyBAQAogCiAJcmV0dXJuIHJl dHZhbDsKIH0KKy8qIEVYUE9SVF9TWU1CT0wocGRjX2lvZGNfcmVhZCk7ICovCiAKIC8qKgogICog cGRjX3N5c3RlbV9tYXBfZmluZF9tb2RzIC0gTG9jYXRlIHVuYXJjaGl0ZWN0ZWQgbW9kdWxlcy4K QEAgLTUxOCw2ICs1MzMsNyBAQAogCiAJcmV0dXJuIHJldHZhbDsKIH0KKy8qIEVYUE9SVF9TWU1C T0wocGRjX2xhbl9zdGF0aW9uX2lkKTsgKi8KIAogCiAvKioKQEAgLTUzNyw4ICs1NTMsOCBAQAog ICogICAgbyBjYWJsZSB0b28gbG9uZyAoaWUgU0Ugc2NzaSAxME1oeiB3b24ndCBzdXBwb3J0IDZt IGxlbmd0aCksCiAgKiAgICBvIGJ1cyB3aWR0aCBleHBvcnRlZCBpcyBsZXNzIHRoYW4gd2hhdCB0 aGUgaW50ZXJmYWNlIGNoaXAgc3VwcG9ydHMuCiAgKi8KLWludCBwZGNfZ2V0X2luaXRpYXRvcigg c3RydWN0IGhhcmR3YXJlX3BhdGggKmh3cGF0aCwgdW5zaWduZWQgY2hhciAqc2NzaV9pZCwKLQl1 bnNpZ25lZCBsb25nICpwZXJpb2QsIGNoYXIgKndpZHRoLCBjaGFyICptb2RlKQoraW50IHBkY19n ZXRfaW5pdGlhdG9yKHN0cnVjdCBoYXJkd2FyZV9wYXRoICpod3BhdGgsIHVuc2lnbmVkIGNoYXIg KnNjc2lfaWQsCisJCXVuc2lnbmVkIGxvbmcgKnBlcmlvZCwgY2hhciAqd2lkdGgsIGNoYXIgKm1v ZGUpCiB7CiAJaW50IHJldHZhbDsKIApAQCAtNTU2LDQyICs1NzIsNDAgQEAKIAogCQkvKiBjb252 ZXJ0IEJ1cyBzcGVlZCBpbiBNaHogdG8gcGVyaW9kIChpbiAxLzEwIG5zKSAqLwogCQlzd2l0Y2go cGRjX3Jlc3VsdFsxXSkgewotCQkvKgotCQkqKiBjYXNlICAwOiAgIGRyaXZlciBkZXRlcm1pbmVz IHJhdGUKLQkJKiogY2FzZSAtMTogICBTZXR0aW5ncyBhcmUgdW5pbml0aWFsaXplZC4KLQkJKi8K LQkJY2FzZSAgNTogICpwZXJpb2QgPSAyMDAwOyBicmVhazsKLQkJY2FzZSAxMDogICpwZXJpb2Qg PSAxMDAwOyBicmVhazsKLQkJY2FzZSAyMDogICpwZXJpb2QgPSA1MDA7IGJyZWFrOwotCQljYXNl IDQwOiAgKnBlcmlvZCA9IDI1MDsgYnJlYWs7Ci0JCWRlZmF1bHQ6IC8qIERvIG5vdGhpbmcgKi8g YnJlYWs7CisJCQkvKgorCQkJICogY2FzZSAgMDogICBkcml2ZXIgZGV0ZXJtaW5lcyByYXRlCisJ CQkgKiBjYXNlIC0xOiAgIFNldHRpbmdzIGFyZSB1bmluaXRpYWxpemVkLgorCQkJICovCisJCQlj YXNlICA1OiAgKnBlcmlvZCA9IDIwMDA7IGJyZWFrOworCQkJY2FzZSAxMDogICpwZXJpb2QgPSAx MDAwOyBicmVhazsKKwkJCWNhc2UgMjA6ICAqcGVyaW9kID0gNTAwOyBicmVhazsKKwkJCWNhc2Ug NDA6ICAqcGVyaW9kID0gMjUwOyBicmVhazsKKwkJCWRlZmF1bHQ6IC8qIERvIG5vdGhpbmcgKi8g YnJlYWs7CiAJCX0KIAogCQkvKiAKLQkJKiogcGRjX3Jlc3VsdFsyXQlQREMgc3VnZ2VzdGVkIFND U0kgaWQKLQkJKiogcGRjX3Jlc3VsdFszXQlQREMgc3VnZ2VzdGVkIFNDU0kgcmF0ZQotCQkqLwor CQkgKiBwZGNfcmVzdWx0WzJdCVBEQyBzdWdnZXN0ZWQgU0NTSSBpZAorCQkgKiBwZGNfcmVzdWx0 WzNdCVBEQyBzdWdnZXN0ZWQgU0NTSSByYXRlCisJCSAqLwogCiAJCS8qIEMzMDAwIGFuZCBzaW1p bGFyIHdvcmtzdGF0aW9ucyByZXBvcnQgcGVyaW9kL21vZGUgKi8KIAkJaWYgKElTX1NQUk9DS0VU UygpKSB7Ci0JCQkvKgotCQkJKioJMCA9PSA4LWJpdAotCQkJKioJMSA9PSAxNi1iaXQKLQkJCSov CisJCQkvKiAwID09IDgtYml0LCAxID09IDE2LWJpdCAqLwogCQkJKndpZHRoID0gKGNoYXIpIHBk Y19yZXN1bHRbNF07CiAKIAkJCS8qIC4uLmluIGNhc2Ugc29tZW9uZSBuZWVkcyBpdCBpbiB0aGUg ZnV0dXJlLgotCQkJKiogc3ltNTNjOHh4LmMgY29tbWVudHMgc2F5IGl0IGNhbid0IGF1dG9kZXRl Y3QKLQkJCSoqIGZvciA4MjUvODI1QS84NzUgY2hpcHMuCi0JCQkqKgkwID09IFNFLCAxID09IEhW RCwgMiA9PSBMVkQKLQkJCSovCisJCQkgKiBzeW01M2M4eHguYyBjb21tZW50cyBzYXkgaXQgY2Fu J3QgYXV0b2RldGVjdAorCQkJICogZm9yIDgyNS84MjVBLzg3NSBjaGlwcy4KKwkJCSAqCTAgPT0g U0UsIDEgPT0gSFZELCAyID09IExWRAorCQkJICovCiAJCQkqbW9kZSA9IChjaGFyKSBwZGNfcmVz dWx0WzVdOyAKIAkJfQogCX0KIAogCXNwaW5fdW5sb2NrX2lycSgmcGRjX2xvY2spOwotCXJldHVy biByZXR2YWwgPj0gUERDX09LOworCXJldHVybiAocmV0dmFsID49IFBEQ19PSyk7CiB9CisvKiBF WFBPUlRfU1lNQk9MKHBkY19nZXRfaW5pdGlhdG9yKTsgKi8KIAogCiAvKioKQEAgLTY0MCw2ICs2 NTQsNDkgQEAKIH0KIAogCisjaWYgMAkvKiBVTlRFU1QgQ09ERSAtIGxlZnQgaGVyZSBpbiBjYXNl IHNvbWVvbmUgbmVlZHMgaXQgKi8KKworLyogCisgKiBwZGNfcGNpX2NvbmZpZ19yZWFkIC0gcmVh ZCBQQ0kgY29uZmlnIHNwYWNlLgorICogQGhwYQkJdG9rZW4gZnJvbSBQREMgdG8gaW5kaWNhdGUg d2hpY2ggUENJIGRldmljZQorICogQHBjaV9hZGRyCWNvbmZpZ3VyYXRpb24gc3BhY2UgYWRkcmVz cyB0byByZWFkIGZyb20KKyAqCisgKiBSZWFkIFBDSSBDb25maWd1cmF0aW9uIHNwYWNlICpiZWZv cmUqIGxpbnV4IFBDSSBzdWJzeXN0ZW0gaXMgcnVubmluZy4KKyAqLwordW5zaWduZWQgaW50IHBk Y19wY2lfY29uZmlnX3JlYWQodm9pZCAqaHBhLCB1bnNpZ25lZCBsb25nIGNmZ19hZGRyKQorewor CWludCByZXR2YWw7CisJc3Bpbl9sb2NrX2lycSgmcGRjX2xvY2spOworCXBkY19yZXN1bHRbMF0g PSAwOworCXBkY19yZXN1bHRbMV0gPSAwOworCXJldHZhbCA9IG1lbV9wZGNfY2FsbChQRENfUENJ X0lOREVYLCBQRENfUENJX1JFQURfQ09ORklHLCAKKwkJCSAgICAgIF9fcGEocGRjX3Jlc3VsdCks IGhwYSwgY2ZnX2FkZHImfjNVTCwgNFVMKTsKKwlzcGluX3VubG9ja19pcnEoJnBkY19sb2NrKTsK KwlyZXR1cm4gcmV0dmFsID8gfjAgOiAodW5zaWduZWQgaW50KSBwZGNfcmVzdWx0WzBdOworfQor CisKKy8qIAorICogcGRjX3BjaV9jb25maWdfd3JpdGUgLSByZWFkIFBDSSBjb25maWcgc3BhY2Uu CisgKiBAaHBhCQl0b2tlbiBmcm9tIFBEQyB0byBpbmRpY2F0ZSB3aGljaCBQQ0kgZGV2 aWNlCisgKiBAcGNpX2FkZHIJY29uZmlndXJhdGlvbiBzcGFjZSBhZGRyZXNzIHRvIHdyaXRlCisg KiBAdmFsCQl2YWx1ZSB3ZSB3YW50IGluIHRoZSAzMi1iaXQgcmVnaXN0ZXIKKyAqCisgKiBXcml0 ZSBQQ0kgQ29uZmlndXJhdGlvbiBzcGFjZSAqYmVmb3JlKiBsaW51eCBQQ0kgc3Vic3lzdGVtIGlz IHJ1bm5pbmcuCisgKi8KK3ZvaWQgcGRjX3BjaV9jb25maWdfd3JpdGUodm9pZCAqaHBhLCB1bnNp Z25lZCBsb25nIGNmZ19hZGRyLCB1bnNpZ25lZCBpbnQgdmFsKQoreworCWludCByZXR2YWw7CisJ c3Bpbl9sb2NrX2lycSgmcGRjX2xvY2spOworCXBkY19yZXN1bHRbMF0gPSAwOworCXJldHZhbCA9 IG1lbV9wZGNfY2FsbChQRENfUENJX0lOREVYLCBQRENfUENJX1dSSVRFX0NPTkZJRywgCisJCQkg ICAgICBfX3BhKHBkY19yZXN1bHQpLCBocGEsCisJCQkgICAgICBjZmdfYWRkciZ+M1VMLCA0VUws ICh1bnNpZ25lZCBsb25nKSB2YWwpOworCXNwaW5fdW5sb2NrX2lycSgmcGRjX2xvY2spOworCXJl dHVybiByZXR2YWw7Cit9CisjZW5kaWYgLyogVU5URVNURUQgQ09ERSAqLworCiAvKioKICAqIHBk Y190b2RfcmVhZCAtIFJlYWQgdGhlIFRpbWUtT2YtRGF5IGNsb2NrLgogICogQHRvZDogVGhlIHJl dHVybiBidWZmZXI6CkBAIC02NTgsNiArNzE1LDcgQEAKIAogICAgICAgICByZXR1cm4gcmV0dmFs OwogfQorLyogRVhQT1JUX1NZTUJPTChwZGNfdG9kX3JlYWQpOyAqLwogCiAvKioKICAqIHBkY190 b2Rfc2V0IC0gU2V0IHRoZSBUaW1lLU9mLURheSBjbG9jay4KQEAgLTY3Niw2ICs3MzQsNyBAQAog CiAgICAgICAgIHJldHVybiByZXR2YWw7CiB9CisvKiBFWFBPUlRfU1lNQk9MKHBkY190b2Rfc2V0 KTsgKi8KIAogI2lmZGVmIF9fTFA2NF9fCiBpbnQgcGRjX21lbV9tZW1fdGFibGUoc3RydWN0IHBk Y19tZW1vcnlfdGFibGVfcmFkZHIgKnJfYWRkciwKQEAgLTc3MCwyMCArODI5LDM0IEBACiB9CiAK IC8qCi0gKiBwZGNfc3VzcGVuZF91c2IgLSBTdG9wIFVTQiBjb250cm9sbGVyCisgKiBwZGNfaW9f cmVzZXQgLSBIYWNrIHRvIGF2b2lkIG92ZXJsYXBwaW5nIHJhbmdlIHJlZ2lzdGVycyBvZiBCcmlk Z2VzIGRldmljZXMuCisgKiBQcmltYXJpbHkgYSBwcm9ibGVtIG9uIFQ2MDAgKHdoaWNoIHBhcmlz Yy1saW51eCBkb2Vzbid0IHN1cHBvcnQpIGJ1dAorICogd2hvIGtub3dzIHdoYXQgb3RoZXIgcGxh dGZvcm0gZmlybXdhcmUgbWlnaHQgZG8gd2l0aCB0aGlzIE9TICJob29rIi4KKyAqLwordm9pZCBw ZGNfaW9fcmVzZXQodm9pZCkKK3sKKwlzcGluX2xvY2tfaXJxKCZwZGNfbG9jayk7ICAKKwltZW1f cGRjX2NhbGwoUERDX0lPLCBQRENfSU9fUkVTRVQsIDApOworCXNwaW5fdW5sb2NrX2lycSgmcGRj X2xvY2spOworfQorCisvKgorICogcGRjX2lvX3Jlc2V0X2RldmljZXMgLSBIYWNrIHRvIFN0b3Ag VVNCIGNvbnRyb2xsZXIKICAqCiAgKiBJZiBQREMgdXNlZCB0aGUgdXNiIGNvbnRyb2xsZXIsIHRo ZSB1c2IgY29udHJvbGxlcgogICogaXMgc3RpbGwgcnVubmluZyBhbmQgd2lsbCBjcmFzaCB0aGUg bWFjaGluZXMgZHVyaW5nIGlvbW11IAogICogc2V0dXAsIGJlY2F1c2Ugb2Ygc3RpbGwgcnVubmlu ZyBETUEuIFRoaXMgUERDIGNhbGwKLSAqIHN0b3BzIHRoZSBVU0IgY29udHJvbGxlcgorICogc3Rv cHMgdGhlIFVTQiBjb250cm9sbGVyLgorICogTm9ybWFsbHkgY2FsbGVkIGFmdGVyIGNhbGxpbmcg cGRjX2lvX3Jlc2V0KCkuCiAgKi8KLXZvaWQgcGRjX3N1c3BlbmRfdXNiKHZvaWQpCit2b2lkIHBk Y19pb19yZXNldF9kZXZpY2VzKHZvaWQpCiB7CiAJc3Bpbl9sb2NrX2lycSgmcGRjX2xvY2spOyAg Ci0JbWVtX3BkY19jYWxsKFBEQ19JTywgUERDX0lPX1NVU1BFTkRfVVNCLCAwKTsKKwltZW1fcGRj X2NhbGwoUERDX0lPLCBQRENfSU9fUkVTRVRfREVWSUNFUywgMCk7CiAJc3Bpbl91bmxvY2tfaXJx KCZwZGNfbG9jayk7CiB9CiAKKwogLyoqCiAgKiBwZGNfaW9kY19wdXRjIC0gQ29uc29sZSBjaGFy YWN0ZXIgcHJpbnQgdXNpbmcgSU9EQy4KICAqIEBjOiB0aGUgY2hhcmFjdGVyIHRvIG91dHB1dC4K QEAgLTkwMyw2ICs5NzYsNyBAQAogCiAgICAgICAgIHJldHVybiByZXR2YWw7CiB9CisvKiBFWFBP UlRfU1lNQk9MKHBkY19zdGlfY2FsbCk7ICovCiAKICNpZmRlZiBfX0xQNjRfXwogLyoqCkBAIC0x MDY1LDcgKzExMzksNyBAQAogCS8qIGluIHJlYWxpdHksIHRoZXJlJ3MgbmVhcmx5IDhrIG9mIHN0 YWNrIGFmdGVyIHRoaXMgKi8KIH07CiAKLXN0YXRpYyBsb25nIHJlYWwzMl9jYWxsKHVuc2lnbmVk IGxvbmcgZm4sIC4uLikKK2xvbmcgcmVhbDMyX2NhbGwodW5zaWduZWQgbG9uZyBmbiwgLi4uKQog ewogCXZhX2xpc3QgYXJnczsKIAlleHRlcm4gc3RydWN0IG5hcnJvd19zdGFjayByZWFsX3N0YWNr MzI7CkBAIC0xMTE2LDcgKzExOTAsNyBAQAogCS8qIGluIHJlYWxpdHksIHRoZXJlJ3MgbmVhcmx5 IDhrIG9mIHN0YWNrIGFmdGVyIHRoaXMgKi8KIH07CiAKLXN0YXRpYyBsb25nIHJlYWw2NF9jYWxs KHVuc2lnbmVkIGxvbmcgZm4sIC4uLikKK2xvbmcgcmVhbDY0X2NhbGwodW5zaWduZWQgbG9uZyBm biwgLi4uKQogewogCXZhX2xpc3QgYXJnczsKIAlleHRlcm4gc3RydWN0IHdpZGVfc3RhY2sgcmVh bF9zdGFjazY0OwpkaWZmIC1OYXVyWCBkb250ZGlmZiBsaW51eC0yLjQuMjQtcGEwLm9yaWcvYXJj aC9wYXJpc2Mva2VybmVsL2ludmVudG9yeS5jIGxpbnV4LTIuNC4yNC1wYTAvYXJjaC9wYXJpc2Mv a2VybmVsL2ludmVudG9yeS5jCi0tLSBsaW51eC0yLjQuMjQtcGEwLm9yaWcvYXJjaC9wYXJpc2Mv a2VybmVsL2ludmVudG9yeS5jCTIwMDMtMDgtMDQgMDg6MDA6MDAuMDAwMDAwMDAwICswMjAwCisr KyBsaW51eC0yLjQuMjQtcGEwL2FyY2gvcGFyaXNjL2tlcm5lbC9pbnZlbnRvcnkuYwkyMDA0LTAx LTIyIDE5OjA0OjM5LjAwMDAwMDAwMCArMDEwMApAQCAtMTY3LDkgKzE2Nyw2IEBACiBzdGF0aWMg aW50IF9faW5pdCAKIHBhdF9xdWVyeV9tb2R1bGUodWxvbmcgcGNlbGxfbG9jLCB1bG9uZyBtb2Rf aW5kZXgpCiB7Ci0jaWZkZWYgREVCVUdfUEFUCi0JcGRjX3BhdF9jZWxsX21vZF9tYWRk cl9ibG9ja190IGlvX3BkY19jZWxsOwotI2VuZGlmCiAJcGRjX3BhdF9jZWxsX21vZF9tYWRkcl9i bG9ja190IHBhX3BkY19jZWxsOwogCXVuc2lnbmVkIGxvbmcgYnl0ZWNudDsKIAl1bnNpZ25lZCBs b25nIHRlbXA7CS8qIDY0LWJpdCBzY3JhdGNoIHZhbHVlICovCkBAIC0yMDksNiArMjA2LDcgQEAK IAlyZWdpc3Rlcl9wYXJpc2NfZGV2aWNlKGRldik7CS8qIGFkdmVydGlzZSBkZXZpY2UgKi8KIAog I2lmZGVmIERFQlVHX1BBVAorCXBkY19wYXRfY2VsbF9tb2RfbWFkZHJfYmxvY2tfdCBpb19wZGNf Y2VsbDsKIAkvKiBkdW1wIHdoYXQgd2Ugc2VlIHNvIGZhci4uLiAqLwogCXN3aXRjaCAoUEFUX0dF VF9FTlRJVFkoZGV2LT5tb2RfaW5mbykpIHsKIAkJdW5zaWduZWQgbG9uZyBpOwpAQCAtNTI3LDEy ICs1MjUsNiBAQAogCWludCBpOwogCWxvbmcgc3RhdHVzID0gUERDX09LOwogICAgIAotCS8qCi0J ICogZmlyc3Qgc3RvcCB0aGUgdXNiIGNvbnRyb2xsZXIsIG90aGVyd2lzZSB0aGUgbWFjaGluZQot CSAqIG1pZ2h0IGNyYXNoIGR1cmluZyBpb21tdSBzZXR1cAotCSAqLwotCXBkY19zdXNwZW5kX3Vz YigpOwotCiAJZm9yIChpID0gMDsgc3RhdHVzICE9IFBEQ19CQURfUFJPQyAmJiBzdGF0dXMgIT0g UERDX05FX01PRDsgaSsrKSB7CiAJCXN0cnVjdCBwYXJpc2NfZGV2aWNlICpkZXY7CiAJCXN0cnVj dCBwZGNfc3lzdGVtX21hcF9tb2RfaW5mbyBtb2R1bGVfcmVzdWx0OwpkaWZmIC1OYXVyWCBkb250 ZGlmZiBsaW51eC0yLjQuMjQtcGEwLm9yaWcvYXJjaC9wYXJpc2Mva2VybmVsL3BkY19jb25zLmMg bGludXgtMi40LjI0LXBhMC9hcmNoL3BhcmlzYy9rZXJuZWwvcGRjX2NvbnMuYwotLS0gbGludXgt Mi40LjI0LXBhMC5vcmlnL2FyY2gvcGFyaXNjL2tlcm5lbC9wZGNfY29ucy5jCTIwMDQtMDEtMTkg MDc6MjU6NDYuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjQuMjQtcGEwL2FyY2gvcGFyaXNj L2tlcm5lbC9wZGNfY29ucy5jCTIwMDQtMDEtMjIgMTk6NTQ6NDguMDgyNjc4MTA0ICswMTAwCkBA IC00MSw4ICs0MSwxMCBAQAogCiAvKiBEZWZpbmUgRUFSTFlfQk9PVFVQX0RFQlVHIHRvIGRlYnVn IGtlcm5lbCByZWxhdGVkIGJvb3QgcHJvYmxlbXMuIAogICogT24gcHJvZHVjdGlvbiBrZXJuZWxz IEVBUkxZX0JPT1RVUF9ERUJVRyBzaG91bGQgYmUgdW5kZWZpbmVkLiAqLworLyoKICN1bmRlZiBF QVJMWV9CT09UVVBfREVCVUcKLQorICovCisjZGVmaW5lIEVBUkxZX0JPT1RVUF9ERUJVRwogCiAj aW5jbHVkZSA8bGludXgvY29uZmlnLmg+CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CkBAIC04 Miw3ICs4NCw3IEBACiAKICNpZiBkZWZpbmVkKENPTkZJR19QRENfQ09OU09MRSkgfHwgZGVmaW5l ZChDT05GSUdfU0VSSUFMX01VWCkKICNkZWZpbmUgUERDX0NPTlNPTEVfREVWSUNFIHBkY19jb25z b2xlX2RldmljZQotc3RhdGljIGtkZXZfdCBwZGNfY29uc29sZV9kZXZpY2UgKHN0cnVjdCBjb25z b2xlICpjKQorc3RhdGljIGtkZXZfdCBwZGNfY29uc29sZV9kZXZpY2Uoc3RydWN0IGNvbnNvbGUg KmMpCiB7CiAgICAgICAgIHJldHVybiBNS0RFVihNVVhfTUFKT1IsIDApOwogfQpAQCAtOTEsMTgg KzkzLDE4IEBACiAjZW5kaWYKIAogc3RhdGljIHN0cnVjdCBjb25zb2xlIHBkY19jb25zID0gewot CW5hbWU6CQkidHR5QiIsCi0Jd3JpdGU6CQlwZGNfY29uc29sZV93cml0ZSwKKwkubmFtZSA9CQki dHR5QiIsCisJLndyaXRlID0JCXBkY19jb25zb2xlX3dyaXRlLAogI3dhcm5pbmcgVVBTVFJFQU0g Mi40LjE5IHJlbW92ZWQgdGhlIG5leHQgNCBsaW5lcyBidXQgd2UgZGlkIG5vdAotCXJlYWQ6CQlO VUxMLAotCWRldmljZToJCVBEQ19DT05TT0xFX0RFVklDRSwKLQl1bmJsYW5rOglOVUxMLAotCXNl dHVwOgkJcGRjX2NvbnNvbGVfc2V0dXAsCi0JZmxhZ3M6CQlDT05fQk9PVHxDT05fUFJJTlRCVUZG RVJ8Q09OX0VOQUJMRUQsCi0JaW5kZXg6CQktMSwKKwkucmVhZCA9CQlOVUxMLAorCS5kZXZpY2Ug PQlQRENfQ09OU09MRV9ERVZJQ0UsCisJLnVuYmxhbmsgPQlOVUxMLAorCS5zZXR1cCA9CXBkY19j b25zb2xlX3NldHVwLAorCS5mbGFncyA9CUNPTl9CT09UfENPTl9QUklOVEJVRkZFUnxDT05fRU5B QkxFRCwKKwkuaW5kZXggPQktMSwKIH07CiAKLXN0YXRpYyBpbnQgcGRjX2NvbnNvbGVfaW5pdGlh bGl6ZWQ7CitzdGF0aWMgaW50IHBkY19jb25zb2xlX2luaXRpYWxpemVkID0gMDsKIGV4dGVybiB1 bnNpZ25lZCBsb25nIGNvbl9zdGFydDsJLyoga2VybmVsL3ByaW50ay5jICovCiBleHRlcm4gdW5z aWduZWQgbG9uZyBsb2dfZW5kOwkvKiBrZXJuZWwvcHJpbnRrLmMgKi8KIApAQCAtMTY0LDcgKzE2 Niw3IEBACiAJCXJldHVybjsKIAogCXdoaWxlICgoY29uc29sZSA9IGNvbnNvbGVfZHJpdmVycykg IT0gTlVMTCkKLQkJdW5yZWdpc3Rlcl9jb25zb2xlKGNvbnNvbGVfZHJpdmVycyk7CisJCXVucmVn aXN0ZXJfY29uc29sZShjb25zb2xlKTsKIAogCS8qIERvbid0IHJlcGVhdCB3aGF0IHdlJ3ZlIGFs cmVhZHkgcHJpbnRlZCAqLwogCWNvbl9zdGFydCA9IGxvZ19lbmQ7CmRpZmYgLU5hdXJYIGRvbnRk aWZmIGxpbnV4LTIuNC4yNC1wYTAub3JpZy9hcmNoL3BhcmlzYy9rZXJuZWwvcmVhbDIuUyBsaW51 eC0yLjQuMjQtcGEwL2FyY2gvcGFyaXNjL2tlcm5lbC9yZWFsMi5TCi0tLSBsaW51eC0yLjQuMjQt cGEwLm9yaWcvYXJjaC9wYXJpc2Mva2VybmVsL3JlYWwyLlMJMjAwMy0wOS0yMiAwOTowNjoyMi4w MDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNC4yNC1wYTAvYXJjaC9wYXJpc2Mva2VybmVsL3Jl YWwyLlMJMjAwNC0wMS0yMiAxNjo1Mjo0My4wMDAwMDAwMDAgKzAxMDAKQEAgLTEzLDcgKzEzLDcg QEAKIAkuc2VjdGlvbgkuYnNzCiAJLmV4cG9ydCByZWFsX3N0YWNrMzIKICNpZmRlZiBfX0xQNjRf XwotCS5leHBvcnQgcmVhbF9zdGFjazY0IAorCS5leHBvcnQgcmVhbF9zdGFjazY0CiAjZW5kaWYK IAkuYWxpZ24JNjQKIHJlYWxfc3RhY2szMjoKZGlmZiAtTmF1clggZG9udGRpZmYgbGludXgtMi40 LjI0LXBhMC5vcmlnL2FyY2gvcGFyaXNjL2tlcm5lbC9zYmFfaW9tbXUuYyBsaW51eC0y LjQuMjQtcGEwL2FyY2gvcGFyaXNjL2tlcm5lbC9zYmFfaW9tbXUuYwotLS0gbGludXgtMi40LjI0 LXBhMC5vcmlnL2FyY2gvcGFyaXNjL2tlcm5lbC9zYmFfaW9tbXUuYwkyMDAyLTEyLTAzIDA4OjA3 OjEyLjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi40LjI0LXBhMC9hcmNoL3BhcmlzYy9rZXJu ZWwvc2JhX2lvbW11LmMJMjAwNC0wMS0yMiAxOTo0Nzo0NS4wMDAwMDAwMDAgKzAxMDAKQEAgLTU3 OSw3ICs1NzksOCBAQAogCWlmIChwaWRlID49IChpb2MtPnJlc19zaXplIDw8IDMpKSB7CiAJCXBp ZGUgPSBzYmFfc2VhcmNoX2JpdG1hcChpb2MsIHBhZ2VzX25lZWRlZCk7CiAJCWlmIChwaWRlID49 IChpb2MtPnJlc19zaXplIDw8IDMpKQotCQkJcGFuaWMoX19GSUxFX18gIjogSS9PIE1NVSBAICVs eCBpcyBvdXQgb2YgbWFwcGluZyByZXNvdXJjZXNcbiIsIGlvYy0+aW9jX2hwYSk7CisJCQlwYW5p YygiJXM6IEkvTyBNTVUgQCAlbHggaXMgb3V0IG9mIG1hcHBpbmcgcmVzb3VyY2VzXG4iLAorCQkJ ICAgICAgX19GSUxFX18sIGlvYy0+aW9jX2hwYSk7CiAJfQogCiAjaWZkZWYgQVNTRVJUX1BESVJf U0FOSVRZCkBAIC05MDQsOCArOTA1LDggQEAKICAqCiAgKiBTZWUgRG9jdW1lbnRhdGlvbi9ETUEt bWFwcGluZy50eHQKICAqLwotc3RhdGljIHZvaWQKLXNiYV91bm1hcF9zaW5nbGUoc3RydWN0IHBj aV9kZXYgKmRldiwgZG1hX2FkZHJfdCBpb3ZhLCBzaXplX3Qgc2l6ZSwgaW50IGRpcmVjdGlvbikK K3N0YXRpYyB2b2lkIHNiYV91bm1hcF9zaW5nbGUoc3RydWN0IHBjaV9kZXYgKmRldiwgZG1hX2Fk ZHJfdCBpb3ZhLCBzaXplX3Qgc2l6ZSwKKwkJIGludCBkaXJlY3Rpb24pCiB7CiAJc3RydWN0IGlv YyAqaW9jOwogI2lmIERFTEFZRURfUkVTT1VSQ0VfQ05UID4gMApAQCAtOTc0LDggKzk3NSw4IEBA CiAgKgogICogU2VlIERvY3VtZW50YXRpb24vRE1BLW1hcHBpbmcudHh0CiAgKi8KLXN0YXRpYyB2 b2lkICoKLXNiYV9hbGxvY19jb25zaXN0ZW50KHN0cnVjdCBwY2lfZGV2ICpod2Rldiwgc2l6ZV90 IHNpemUsIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUpCitzdGF0aWMgdm9pZCAqc2JhX2FsbG9jX2Nv bnNpc3RlbnQoc3RydWN0IHBjaV9kZXYgKmh3ZGV2LCBzaXplX3Qgc2l6ZSwKKwkJCQkgIGRtYV9h ZGRyX3QgKmRtYV9oYW5kbGUpCiB7CiAJdm9pZCAqcmV0OwogCkBAIC0xMDA2LDcgKzEwMDcsOCBA QAogICogU2VlIERvY3VtZW50YXRpb24vRE1BLW1hcHBpbmcudHh0CiAgKi8KIHN0YXRpYyB2b2lk Ci1zYmFfZnJlZV9jb25zaXN0ZW50KHN0cnVjdCBwY2lfZGV2ICpod2Rldiwgc2l6ZV90IHNpemUs IHZvaWQgKnZhZGRyLCBkbWFfYWRkcl90IGRtYV9oYW5kbGUpCitzYmFfZnJlZV9jb25zaXN0ZW50 KHN0cnVjdCBwY2lfZGV2ICpod2Rldiwgc2l6ZV90IHNpemUsIHZvaWQgKnZhZGRyLAorCQkgICAg ZG1hX2FkZHJfdCBkbWFfaGFuZGxlKQogewogCXNiYV91bm1hcF9zaW5nbGUoaHdkZXYsIGRtYV9o YW5kbGUsIHNpemUsIDApOwogCWZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpIHZhZGRyLCBnZXRf b3JkZXIoc2l6ZSkpOwpAQCAtMTExMyw3ICsxMTE1LDcgQEAKIAogLyoKICoqIFR3byBhZGRyZXNz IHJhbmdlcyBhcmUgRE1BIGNvbnRpZ3VvdXMgKmlmZiogImVuZCBvZiBwcmV2IiBhbmQKLSoqICJz dGFydCBvZiBuZXh0IiBhcmUgYm90aCBvbiBhIHBhZ2UgYm91bmRyeS4KKyoqICJzdGFydCBvZiBu ZXh0IiBhcmUgYm90aCBvbiBhIHBhZ2UgYm91bmRhcnkuCiAqKgogKiogKHNoaWZ0IGxlZnQgaXMg YSBxdWljayB0cmljayB0byBtYXNrIG9mZiB1cHBlciBiaXRzKQogKi8KQEAgLTExMzEsNyArMTEz Myw3IEBACiAgKiBpbiB0aGUgRE1BIHN0cmVhbS4gQWxsb2NhdGVzIFBESVIgZW50cmllcyBidXQg ZG9lcyBub3QgZmlsbCB0aGVtLgogICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIERNQSBjaHVua3Mu CiAgKgotICogRG9pbmcgdGhlIGZpbGwgc2VwZXJhdGUgZnJvbSB0aGUgY29hbGVzY2luZy9hbGxv Y2F0aW9uIGtlZXBzIHRoZQorICogRG9pbmcgdGhlIGZpbGwgc2VwYXJhdGUgZnJvbSB0aGUgY29h bGVzY2luZy9hbGxvY2F0aW9uIGtlZXBzIHRoZQogICogY29kZSBzaW1wbGVyLiBGdXR1cmUgZW5o YW5jZW1lbnQgY291bGQgbWFrZSBvbmUgcGFzcyB0aHJvdWdoCiAgKiB0aGUgc2dsaXN0IGRvIGJv dGguCiAgKi8KQEAgLTEyMTgsNyArMTIyMCw3IEBACiAJCQkqKiBjYW4ndCBjaGFuZ2UuIEFuZCB3 ZSBuZWVkIHRoZSBvZmZzZXQgZnJvbSB0aGUgZmlyc3QKIAkJCSoqIGNodW5rIC0gbm90IHRoZSBs YXN0IG9uZS4gRXJnbyBTdWNjZXNzaXZlIGNodW5rcwogCQkJKiogbXVzdCBzdGFydCBvbiBwYWdl IGJvdW5kYXJpZXMgYW5kIGRvdmUgdGFpbAotCQkJKiogd2l0aCBpdCdzIHByZWRlY2Vzc29yLgor CQkJKiogd2l0aCBpdHMgcHJlZGVjZXNzb3IuCiAJCQkqLwogCQkJc2dfZG1hX2xlbih2Y29udGln X3NnKSA9IHZjb250aWdfbGVuOwogCkBAIC0xMjY4LDcgKzEyNzAsOCBAQAogICogU2VlIERvY3Vt ZW50YXRpb24vRE1BLW1hcHBpbmcudHh0CiAgKi8KIHN0YXRpYyBpbnQKLXNiYV9tYXBfc2coc3Ry dWN0IHBjaV9kZXYgKmRldiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2xpc3QsIGludCBuZW50cywg aW50IGRpcmVjdGlvbikKK3NiYV9tYXBfc2coc3RydWN0IHBjaV9kZXYgKmRldiwgc3RydWN0IHNj YXR0ZXJsaXN0ICpzZ2xpc3QsIGludCBuZW50cywKKwkgICBpbnQgZGlyZWN0aW9uKQogewogCXN0 cnVjdCBpb2MgKmlvYzsKIAlpbnQgY29hbGVzY2VkLCBmaWxsZWQgPSAwOwpAQCAtMTM1MCw3ICsx MzUzLDggQEAKICAqIFNlZSBEb2N1bWVudGF0aW9uL0RNQS1tYXBwaW5nLnR4dAogICovCiBzdGF0 aWMgdm9pZCAKLXNiYV91bm1hcF9zZyhzdHJ1Y3QgcGNpX2RldiAqZGV2LCBzdHJ1Y3Qgc2NhdHRl cmxpc3QgKnNnbGlzdCwgaW50IG5lbnRzLCBpbnQgZGlyZWN0aW9uKQorc2JhX3VubWFwX3NnKHN0 cnVjdCBwY2lfZGV2ICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2dsaXN0LCBpbnQgbmVudHMs CisJICAgICBpbnQgZGlyZWN0aW9uKQogewogCXN0cnVjdCBpb2MgKmlvYzsKICNpZmRl ZiBBU1NFUlRfUERJUl9TQU5JVFkKQEAgLTEzOTUsMTUgKzEzOTksMTUgQEAKIH0KIAogc3RhdGlj IHN0cnVjdCBwY2lfZG1hX29wcyBzYmFfb3BzID0gewotCXNiYV9kbWFfc3VwcG9ydGVkLAotCXNi YV9hbGxvY19jb25zaXN0ZW50LAkvKiBhbGxvY2F0ZSBjYWNoZWFibGUgaG9zdCBtZW0gKi8KLQlz YmFfZnJlZV9jb25zaXN0ZW50LAkvKiByZWxlYXNlIGNhY2hlYWJsZSBob3N0IG1lbSAqLwotCXNi YV9tYXBfc2luZ2xlLAotCXNiYV91bm1hcF9zaW5nbGUsCi0Jc2JhX21hcF9zZywKLQlzYmFfdW5t YXBfc2csCi0JTlVMTCwJCQkvKiBkbWFfc3luY19zaW5nbGUgKi8KLQlOVUxMCQkJLyogZG1hX3N5 bmNfc2cgKi8KKwkuZG1hX3N1cHBvcnRlZCA9CXNiYV9kbWFfc3VwcG9ydGVkLAorCS5hbGxvY19j b25zaXN0ZW50ID0Jc2JhX2FsbG9jX2NvbnNpc3RlbnQsCS8qIGFsbG9jYXRlIGNhY2hlYWJsZSBo b3N0IG1lbSAqLworCS5mcmVlX2NvbnNpc3RlbnQgPQlzYmFfZnJlZV9jb25zaXN0ZW50LAkvKiBy ZWxlYXNlIGNhY2hlYWJsZSBob3N0IG1lbSAqLworCS5tYXBfc2luZ2xlID0JCXNiYV9tYXBfc2lu Z2xlLAorCS51bm1hcF9zaW5nbGUgPQkJc2JhX3VubWFwX3NpbmdsZSwKKwkubWFwX3NnID0JCXNi YV9tYXBfc2csCisJLnVubWFwX3NnID0JCXNiYV91bm1hcF9zZywKKwkuZG1hX3N5bmNfc2luZ2xl ID0JTlVMTCwKKwkuZG1hX3N5bmNfc2cgPQkJTlVMTCwKIH07CiAKIApAQCAtMTY3OCw2ICsxNjgy LDIyIEBACiAJaW50IG51bV9pb2M7CiAJdTY0IGlvY19jdGw7CiAKKwlpZiAoIWlzX3BkY19wYXQo KSkgeworCQkvKiAKKwkJICogU2h1dGRvd24gdGhlIFVTQiBjb250cm9sbGVyIG9uIEFzdHJvLWJh c2VkIHdvcmtzdGF0aW9ucy4KKwkJICogT25jZSB3ZSByZXByb2dyYW0gdGhlIElPTU1VLCB0aGUg bmV4dCBETUEgcGVyZm9ybWVkIGJ5CisJCSAqIFVTQiB3aWxsIEhQTUMgdGhlIGJveC4KKwkJICov CisJCXBkY19pb19yZXNldF9kZXZpY2VzKCk7CisKKwkJLyoKKwkJICogWFhYIE1heSBuZWVkIHNv bWV0aGluZyBtb3JlIHNvcGhpc3RpY2F0ZWQgdG8gZGVhbAorCQkgKiAgICAgd2l0aCBETUEgZnJv bSBMQU4uIE1heWJlIHVzZSBwYWdlIHplcm8gYm9vdCBkZXZpY2UKKwkJICogICAgIGFzIGEgaGFu ZGxlIHRvIHRhbGsgdG8gUERDIGFib3V0IHdoaWNoIGRldmljZSB0bworCQkgKiAgICAgc2h1dGRv d24uIFRoaXMgYWxzbyBuZWVkcyB0byB3b3JrIGZvciBpc19wZGNfcGF0KCkuIAorCQkgKi8KKwl9 CisKIAlpb2NfY3RsID0gUkVBRF9SRUcoc2JhX2Rldi0+c2JhX2hwYStJT0NfQ1RSTCk7CiAJREJH X0lOSVQoIiVzKCkgaHBhIDB4JWx4IGlvY19jdGwgMHglTHggLT4iLAogCQlfX0ZVTkNUSU9OX18s IHNiYV9kZXYtPnNiYV9ocGEsIGlvY19jdGwpOwpAQCAtMTcyOCw5ICsxNzQ4LDEwIEBACiB7CiAJ aW50IGk7CiAKLQkvKiBhZGQgdGhpcyBvbmUgdG8gdGhlIGhlYWQgb2YgdGhlIGxpc3QgKG9yZGVy IGRvZXNuJ3QgbWF0dGVyKQotCSoqIFRoaXMgd2lsbCBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyAt IGVzcGVjaWFsbHkgaWYgd2UgZ2V0IGNvcmVkdW1wcwotCSovCisJLyoKKwkgKiBhZGQgdGhpcyBv bmUgdG8gdGhlIGhlYWQgb2YgdGhlIGxpc3QgKG9yZGVyIGRvZXNuJ3QgbWF0dGVyKQorCSAqIFRo aXMgd2lsbCBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyAtIGVzcGVjaWFsbHkgaWYgd2UgZ2V0IGNv cmVkdW1wcworCSAqLwogCXNiYV9kZXYtPm5leHQgPSBzYmFfbGlzdDsKIAlzYmFfbGlzdCA9IHNi YV9kZXY7CiAKQEAgLTE3NjQsNyArMTc4NSw4IEBACiAKIAkJaWYgKE5VTEwgPT0gc2JhX2Rldi0+ aW9jW2ldLnJlc19tYXApCiAJCXsKLQkJCXBhbmljKF9fRklMRV9fICI6JXMoKSBjb3VsZCBub3Qg YWxsb2NhdGUgcmVzb3VyY2UgbWFwXG4iLCBfX0ZVTkNUSU9OX18gKTsKKwkJCXBhbmljKCIlczol cygpIGNvdWxkIG5vdCBhbGxvY2F0ZSByZXNvdXJjZSBtYXBcbiIsCisJCQkgICAgICBfX0ZJTEVf XywgX19GVU5DVElPTl9fKTsKIAkJfQogCiAJCW1lbXNldChzYmFfZGV2LT5pb2NbaV0ucmVzX21h cCwgMCwgcmVzX3NpemUpOwpAQCAtMTkxOCw5ICsxOTQwLDkgQEAKIGludCBzYmFfZHJpdmVyX2Nh bGxiYWNrKHN0cnVjdCBwYXJpc2NfZGV2aWNlICopOwogCiBzdGF0aWMgc3RydWN0IHBhcmlzY19k cml2ZXIgc2JhX2RyaXZlciA9IHsKLQluYW1lOgkJTU9EVUxFX05BTUUsCi0JaWRfdGFibGU6CXNi YV90YmwsCi0JcHJvYmU6CQlzYmFfZHJpdmVyX2NhbGxiYWNrLAorCS5uYW1lCT0JTU9EVUxFX05B TUUsCisJLmlkX3RhYmxlID0Jc2JhX3RibCwKKwkucHJvYmUgPQlzYmFfZHJpdmVyX2NhbGxiYWNr LAogfTsKIAogLyoKZGlmZiAtTmF1clggZG9udGRpZmYgbGludXgtMi40LjI0LXBhMC5vcmlnL2lu Y2x1ZGUvYXNtLXBhcmlzYy9wZGMuaCBsaW51eC0yLjQuMjQtcGEwL2luY2x1ZGUvYXNtLXBhcmlz Yy9wZGMuaAotLS0gbGludXgtMi40LjI0LXBhMC5vcmlnL2luY2x1ZGUvYXNtLXBhcmlzYy9wZGMu aAkyMDAyLTEwLTA0IDA3OjQ4OjQ3LjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMi40LjI0LXBh MC9pbmNsdWRlL2FzbS1wYXJpc2MvcGRjLmgJMjAwNC0wMS0yMiAxODo0MzoxMy4wMDAwMDAwMDAg KzAxMDAKQEAgLTE5MSw4ICsxOTEsOCBAQAogCiAjZGVmaW5lIFBEQ19JTwkJMTM1CQkvKiBsb2cg ZXJyb3IgaW5mbywgcmVzZXQgSU8gc3lzdGVtICovCiAjZGVmaW5lIFBEQ19JT19SRUFEX0FORF9D TEVBUl9FUlJPUlMJMAotI2RlZmluZSBQRENfSU9fUkVBRF9BTkRfTE9HX0VSUk9SUwkxCi0jZGVm aW5lIFBEQ19JT19TVVNQRU5EX1VTQgkJMgorI2RlZmluZSBQRENfSU9fUkVTRVQJCQkxCisjZGVm aW5lIFBEQ19JT19SRVNFVF9ERVZJQ0VTCQkyCiAvKiBzZXRzIGJpdHMgNiY3IChsaXR0bGUgZW5k aWFuKSBvZiB0aGUgSGNDb250cm9sIFJlZ2lzdGVyICovCiAjZGVmaW5lIFBEQ19JT19VU0JfU1VT UEVORAkweEMwMDAwMDAwMDAwMDAwMDAKICNkZWZpbmUgUERDX0lPX0VFUFJPTV9JT19FUlJfVEFC TEVfRlVMTAktNQkvKiByZXR1cm4gdmFsdWUgKi8KQEAgLTQ3Niw3ICs0NzYsMTEgQEAK ICNkZWZpbmUgUERDX1RZUEVfU1lTVEVNX01BUAkgMSAvKiAzMi1iaXQsIGJ1dCBzdXBwb3J0cyBQ RENfU1lTVEVNX01BUCAqLwogI2RlZmluZSBQRENfVFlQRV9TTkFLRQkJIDIgLyogRG9lc24ndCBz dXBwb3J0IFNZU1RFTV9NQVAgKi8KIAotI2RlZmluZSBpc19wZGNfcGF0KCkJKHBkY190eXBlID09 IFBEQ19UWVBFX1BBVCkKKyNpZmRlZiBDT05GSUdfUEFSSVNDNjQKKyNkZWZpbmUgaXNfcGRjX3Bh dCgpICAgIChQRENfVFlQRV9QQVQgPT0gcGRjX3R5cGUpCisjZWxzZQorI2RlZmluZSBpc19wZGNf cGF0KCkgICAgKDApCisjZW5kaWYKIAogc3RydWN0IHBkY19jaGFzc2lzX2luZm8geyAgICAgICAv KiBmb3IgUERDX0NIQVNTSVNfSU5GTyAqLwogCXVuc2lnbmVkIGxvbmcgYWN0Y250OyAgIC8qIGFj dHVhbCBudW1iZXIgb2YgYnl0ZXMgcmV0dXJuZWQgKi8KQEAgLTk1MSw3ICs5NTUsOCBAQAogaW50 IHBkY19kb19yZXNldCh2b2lkKTsKIGludCBwZGNfc29mdF9wb3dlcl9pbmZvKHVuc2lnbmVkIGxv bmcgKnBvd2VyX3JlZyk7CiBpbnQgcGRjX3NvZnRfcG93ZXJfYnV0dG9uKGludCBzd19jb250cm9s KTsKLXZvaWQgcGRjX3N1c3BlbmRfdXNiKHZvaWQpOwordm9pZCBwZGNfaW9fcmVzZXQodm9pZCk7 Cit2b2lkIHBkY19pb19yZXNldF9kZXZpY2VzKHZvaWQpOwogaW50IHBkY19pb2RjX2dldGModm9p ZCk7CiB2b2lkIHBkY19pb2RjX3B1dGModW5zaWduZWQgY2hhciBjKTsKIHZvaWQgcGRjX2lvZGNf b3V0Yyh1bnNpZ25lZCBjaGFyIGMpOwpAQCAtOTYzLDcgKzk2OCw2IEBACiAKICNpZmRlZiBfX0xQ NjRfXwogaW50IHBkY19wYXRfY2hhc3Npc19zZW5kX2xvZyh1bnNpZ25lZCBsb25nIHN0YXR1cywg dW5zaWduZWQgbG9uZyBkYXRhKTsKLQogaW50IHBkY19wYXRfY2VsbF9nZXRfbnVtYmVyKHN0cnVj dCBwZGNfcGF0X2NlbGxfbnVtICpjZWxsX2luZm8pOwogaW50IHBkY19wYXRfY2VsbF9tb2R1bGUo dW5zaWduZWQgbG9uZyAqYWN0Y250LCB1bnNpZ25lZCBsb25nIHBsb2MsIHVuc2lnbmVkIGxvbmcg bW9kLAogCQkJdW5zaWduZWQgbG9uZyB2aWV3X3R5cGUsIHZvaWQgKm1lbV9hZGRyKTsK --========/400CB8A1000028AB/mail.tiscali.be--