From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from yx-out-2324.google.com (yx-out-2324.google.com [74.125.44.28]) by ozlabs.org (Postfix) with ESMTP id B259ADDF40 for ; Fri, 4 Jul 2008 01:35:30 +1000 (EST) Received: by yx-out-2324.google.com with SMTP id 8so247833yxg.39 for ; Thu, 03 Jul 2008 08:35:29 -0700 (PDT) Message-ID: <792f5f410807030835q4589a27eh4b7d13e93e922a5e@mail.gmail.com> Date: Thu, 3 Jul 2008 16:35:27 +0100 From: "Tim Yamin" Sender: plasmaroo@gmail.com To: "Grant Likely" Subject: Re: [PATCH]: [MPC5200] (v2) Add ATA DMA support In-Reply-To: <20080702173040.GB23846@secretlab.ca> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_9610_21545051.1215099327122" References: <792f5f410806270544p69c773b9o9df4a5618d4babe1@mail.gmail.com> <20080701234943.GA16391@secretlab.ca> <792f5f410807020548m107cd6a5xf0360e07053e104c@mail.gmail.com> <20080702173040.GB23846@secretlab.ca> Cc: linuxppc-dev@ozlabs.org List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , ------=_Part_9610_21545051.1215099327122 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline On Wed, Jul 2, 2008 at 6:30 PM, Grant Likely wrote: > I know that only ATA uses this; but it is nice to have fixes to things > that are obviously wrong in existing code to be split into their own > patches. That way, even if the ATA patch gets backed out, the bug fix > will remain. Ok, so I've split the patch up into two pieces now... >> +static void >> +mpc52xx_bmdma_start(struct ata_queued_cmd *qc) >> +{ >> + struct ata_port *ap = qc->ap; >> + struct mpc52xx_ata_priv *priv = ap->host->private_data; >> + >> + /* LocalBus lock */ >> + while (test_and_set_bit(0, &pata_mpc52xx_ata_dma_lock) != 0) >> + ; > > Need to be able to bail on timeout. A deadlock can't occur within the PATA driver because you won't have two DMA requests happening at once, so there is no point in adding a timeout. And even if you do have a timeout, you'd have to drop the I/O request somehow, so it's not really a good idea. If anything else needs to touch the DMA lock, it should do so in a sensible fashion... Thanks, Tim ------=_Part_9610_21545051.1215099327122 Content-Type: text/x-patch; name=bestcomm-ata-fixes.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fi7ino5w0 Content-Disposition: attachment; filename=bestcomm-ata-fixes.patch MSkgYXRhLmggaGFzIGRzdF9wYSBpbiB0aGUgd3JvbmcgcGxhY2UgKG5lZWRzIHRvIG1hdGNoIHdo YXQgdGhlIEJlc3RDb21tCiAgIHRhc2sgbWljcm9jb2RlIGluIGJjb21fYXRhX3Rhc2suYyBleHBl Y3RzKTsgZml4IGl0LgoKMikgVGhlIEJlc3RDb21tIEFUQSB0YXNrIHByaW9yaXR5IHdhcyBjaGFu Z2VkIHRvIG1heGltdW0gaW4gYmVzdGNvbW1fcHJpdi5oOwogICB0aGlzIGZpeGVzIGEgZGVhZGxv Y2sgaXNzdWUgSSB3YXMgZXhwZXJpZW5jaW5nIHdoZW4gaGVhdnkgRE1BIHdhcwogICBvY2N1cmlu ZyBvbiBib3RoIHRoZSBBVEEgYW5kIEV0aGVybmV0IEJlc3RDb21tIHRhc2tzLCBlLmcuIHdoZW4K ICAgZG93bmxvYWRpbmcgYSBsYXJnZSBmaWxlIG92ZXIgYSBMQU4gdG8gZGlzay4KCjMpIFRoZSBB VEEgQmVzdENvbW0gZHJpdmVyIHVzZXMgYmNvbV9hdGFfYmQgd2hpY2ggaXMgYmlnZ2VyIHRoYW4g YmNvbV9iZAogICBhbmQgdGhpcyBjYXVzZXMgcHJvYmxlbXMgYmVjYXVzZSB0aGUgdmFyaW91cyBi Y29tXy4uLiBmdW5jdGlvbnMgZG8gbm90CiAgIGRlcmVmZXJlbmNlIHRoZSBjb3JyZWN0IGxvY2F0 aW9uLiBJJ3ZlIGludHJvZHVjZWQgYmNvbV9nZXRfYmQgd2hpY2gKICAgdXNlcyBiY29tX3Rhc2su YmRfc2l6ZSBhbmQgdGhpcyBmaXhlcyB0aGUgcHJvYmxlbS4KClNpZ25lZC1vZmYtYnk6IFRpbSBZ YW1pbiA8cGxhc21Acm9vLm1lLnVrPgoKZGlmZiAtdXJwIGxpbnV4LTIuNi4yNi1yYzYvYXJjaC9w b3dlcnBjL3N5c2Rldi9iZXN0Y29tbS9hdGEuaCBsaW51eC0yLjYuMjYtcmM2LWF0YS9hcmNoL3Bv d2VycGMvc3lzZGV2L2Jlc3Rjb21tL2F0YS5oCi0tLSBsaW51eC0yLjYuMjYtcmM2L2FyY2gvcG93 ZXJwYy9zeXNkZXYvYmVzdGNvbW0vYXRhLmgJMjAwOC0wNC0xNyAwMzo0OTo0NC4wMDAwMDAwMDAg KzAxMDAKKysrIGxpbnV4LTIuNi4yNi1yYzYtYXRhL2FyY2gvcG93ZXJwYy9zeXNkZXYvYmVzdGNv bW0vYXRhLmgJMjAwOC0wNy0wMyAxNjoxNzowNS4wMDAwMDAwMDAgKzAxMDAKQEAgLTE2LDggKzE2 LDggQEAKIAogc3RydWN0IGJjb21fYXRhX2JkIHsKIAl1MzIJc3RhdHVzOwotCXUzMglkc3RfcGE7 CiAJdTMyCXNyY19wYTsKKwl1MzIJZHN0X3BhOwogfTsKIAogZXh0ZXJuIHN0cnVjdCBiY29tX3Rh c2sgKgpkaWZmIC11cnAgbGludXgtMi42LjI2LXJjNi9hcmNoL3Bvd2VycGMvc3lzZGV2L2Jlc3Rj b21tL2Jlc3Rjb21tLmggbGludXgtMi42LjI2LXJjNi1hdGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9i ZXN0Y29tbS9iZXN0Y29tbS5oCi0tLSBsaW51eC0yLjYuMjYtcmM2L2FyY2gvcG93ZXJwYy9zeXNk ZXYvYmVzdGNvbW0vYmVzdGNvbW0uaAkyMDA4LTA0LTE3IDAzOjQ5OjQ0LjAwMDAwMDAwMCArMDEw MAorKysgbGludXgtMi42LjI2LXJjNi1hdGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9iZXN0Y29tbS9i ZXN0Y29tbS5oCTIwMDgtMDctMDMgMTY6MTc6MDUuMDAwMDAwMDAwICswMTAwCkBAIC0zOCw3ICsz OCw3IEBAIHN0cnVjdCBiY29tX3Rhc2sgewogCXVuc2lnbmVkIGludAlmbGFnczsKIAlpbnQJCWly cTsKIAotCXN0cnVjdCBiY29tX2JkCSpiZDsKKwl2b2lkCQkqYmQ7CiAJcGh5c19hZGRyX3QJYmRf cGE7CiAJdm9pZAkJKipjb29raWU7CiAJdW5zaWduZWQgc2hvcnQJaW5kZXg7CkBAIC0xNDAsMTUg KzE0MCwyOSBAQCBiY29tX3F1ZXVlX2Z1bGwoc3RydWN0IGJjb21fdGFzayAqdHNrKQogfQogCiAv KioKKyAqIGJjb21fZ2V0X2JkIC0gR2V0IGEgQkQgZnJvbSB0aGUgcXVldWUKKyAqIEB0c2s6IFRo ZSBCZXN0Q29tbSB0YXNrIHN0cnVjdHVyZQorICogaW5kZXg6IEluZGV4IG9mIHRoZSBCRCB0byBm ZXRjaAorICovCitzdGF0aWMgaW5saW5lIHN0cnVjdCBiY29tX2JkCisqYmNvbV9nZXRfYmQoc3Ry dWN0IGJjb21fdGFzayAqdHNrLCB1bnNpZ25lZCBpbnQgaW5kZXgpCit7CisJcmV0dXJuIHRzay0+ YmQgKyBpbmRleCAqIHRzay0+YmRfc2l6ZTsKK30KKworLyoqCiAgKiBiY29tX2J1ZmZlcl9kb25l IC0gQ2hlY2tzIGlmIGEgQmVzdENvbW0gCiAgKiBAdHNrOiBUaGUgQmVzdENvbW0gdGFzayBzdHJ1 Y3R1cmUKICAqLwogc3RhdGljIGlubGluZSBpbnQKIGJjb21fYnVmZmVyX2RvbmUoc3RydWN0IGJj b21fdGFzayAqdHNrKQogeworCXN0cnVjdCBiY29tX2JkICpiZDsKIAlpZiAoYmNvbV9xdWV1ZV9l bXB0eSh0c2spKQogCQlyZXR1cm4gMDsKLQlyZXR1cm4gISh0c2stPmJkW3Rzay0+b3V0ZGV4XS5z dGF0dXMgJiBCQ09NX0JEX1JFQURZKTsKKworCWJkID0gYmNvbV9nZXRfYmQodHNrLCB0c2stPm91 dGRleCk7CisJcmV0dXJuICEoYmQtPnN0YXR1cyAmIEJDT01fQkRfUkVBRFkpOwogfQogCiAvKioK QEAgLTE2MCwxNiArMTc0LDIxIEBAIGJjb21fYnVmZmVyX2RvbmUoc3RydWN0IGJjb21fdGFzayAq dHNrKQogc3RhdGljIGlubGluZSBzdHJ1Y3QgYmNvbV9iZCAqCiBiY29tX3ByZXBhcmVfbmV4dF9i dWZmZXIoc3RydWN0IGJjb21fdGFzayAqdHNrKQogewotCXRzay0+YmRbdHNrLT5pbmRleF0uc3Rh dHVzID0gMDsJLyogY2xlYW51cCBsYXN0IHN0YXR1cyAqLwotCXJldHVybiAmdHNrLT5iZFt0c2st PmluZGV4XTsKKwlzdHJ1Y3QgYmNvbV9iZCAqYmQ7CisKKwliZCA9IGJjb21fZ2V0X2JkKHRzaywg dHNrLT5pbmRleCk7CisJYmQtPnN0YXR1cyA9IDA7CS8qIGNsZWFudXAgbGFzdCBzdGF0dXMgKi8K KwlyZXR1cm4gYmQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAogYmNvbV9zdWJtaXRfbmV4dF9i dWZmZXIoc3RydWN0IGJjb21fdGFzayAqdHNrLCB2b2lkICpjb29raWUpCiB7CisJc3RydWN0IGJj b21fYmQgKmJkID0gYmNvbV9nZXRfYmQodHNrLCB0c2stPmluZGV4KTsKKwogCXRzay0+Y29va2ll W3Rzay0+aW5kZXhdID0gY29va2llOwogCW1iKCk7CS8qIGVuc3VyZSB0aGUgYmQgaXMgcmVhbGx5 IHVwLXRvLWRhdGUgKi8KLQl0c2stPmJkW3Rzay0+aW5kZXhdLnN0YXR1cyB8PSBCQ09NX0JEX1JF QURZOworCWJkLT5zdGF0dXMgfD0gQkNPTV9CRF9SRUFEWTsKIAl0c2stPmluZGV4ID0gX2Jjb21f bmV4dF9pbmRleCh0c2spOwogCWlmICh0c2stPmZsYWdzICYgQkNPTV9GTEFHU19FTkFCTEVfVEFT SykKIAkJYmNvbV9lbmFibGUodHNrKTsKQEAgLTE3OSwxMCArMTk4LDEyIEBAIHN0YXRpYyBpbmxp bmUgdm9pZCAqCiBiY29tX3JldHJpZXZlX2J1ZmZlcihzdHJ1Y3QgYmNvbV90YXNrICp0c2ssIHUz MiAqcF9zdGF0dXMsIHN0cnVjdCBiY29tX2JkICoqcF9iZCkKIHsKIAl2b2lkICpjb29raWUgPSB0 c2stPmNvb2tpZVt0c2stPm91dGRleF07CisJc3RydWN0IGJjb21fYmQgKmJkID0gYmNvbV9nZXRf YmQodHNrLCB0c2stPm91dGRleCk7CisKIAlpZiAocF9zdGF0dXMpCi0JCSpwX3N0YXR1cyA9IHRz ay0+YmRbdHNrLT5vdXRkZXhdLnN0YXR1czsKKwkJKnBfc3RhdHVzID0gYmQtPnN0YXR1czsKIAlp ZiAocF9iZCkKLQkJKnBfYmQgPSAmdHNrLT5iZFt0c2stPm91dGRleF07CisJCSpwX2JkID0gYmQ7 CiAJdHNrLT5vdXRkZXggPSBfYmNvbV9uZXh0X291dGRleCh0c2spOwogCXJldHVybiBjb29raWU7 CiB9CmRpZmYgLXVycCBsaW51eC0yLjYuMjYtcmM2L2FyY2gvcG93ZXJwYy9zeXNkZXYvYmVzdGNv bW0vYmVzdGNvbW1fcHJpdi5oIGxpbnV4LTIuNi4yNi1yYzYtYXRhL2FyY2gvcG93ZXJwYy9zeXNk ZXYvYmVzdGNvbW0vYmVzdGNvbW1fcHJpdi5oCi0tLSBsaW51eC0yLjYuMjYtcmM2L2FyY2gvcG93 ZXJwYy9zeXNkZXYvYmVzdGNvbW0vYmVzdGNvbW1fcHJpdi5oCTIwMDgtMDQtMTcgMDM6NDk6NDQu MDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuMjYtcmM2LWF0YS9hcmNoL3Bvd2VycGMvc3lz ZGV2L2Jlc3Rjb21tL2Jlc3Rjb21tX3ByaXYuaAkyMDA4LTA3LTAzIDE2OjE3OjA1LjAwMDAwMDAw MCArMDEwMApAQCAtMTk4LDggKzE5OCw4IEBAIHN0cnVjdCBiY29tX3Rhc2tfaGVhZGVyIHsKICNk ZWZpbmUgQkNPTV9JUFJfU0NUTVJfMQkyCiAjZGVmaW5lIEJDT01fSVBSX0ZFQ19SWAkJNgogI2Rl ZmluZSBCQ09NX0lQUl9GRUNfVFgJCTUKLSNkZWZpbmUgQkNPTV9JUFJfQVRBX1JYCQk0Ci0jZGVm aW5lIEJDT01fSVBSX0FUQV9UWAkJMworI2RlZmluZSBCQ09NX0lQUl9BVEFfUlgJCTcKKyNkZWZp bmUgQkNPTV9JUFJfQVRBX1RYCQk3CiAjZGVmaW5lIEJDT01fSVBSX1NDUENJX1JYCTIKICNkZWZp bmUgQkNPTV9JUFJfU0NQQ0lfVFgJMgogI2RlZmluZSBCQ09NX0lQUl9QU0MzX1JYCTIK ------=_Part_9610_21545051.1215099327122 Content-Type: text/x-patch; name=pata_mpc52xx-add-dma.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fi7inwlv1 Content-Disposition: attachment; filename=pata_mpc52xx-add-dma.patch VGhpcyBwYXRjaCBhZGRzIE1ETUEvVURNQSBzdXBwb3J0ICh1c2luZyBCZXN0Q29tbSBmb3IgRE1B KSBvbiB0aGUgTVBDNTIwMApwbGF0Zm9ybS4gUGF0Y2ggcmVxdWlyZXMgdGhlIEFUQSBCZXN0Q29t bSBmaXhlcyB0byBmdW5jdGlvbiBwcm9wZXJseS4KCkJhc2VkIGhlYXZpbHkgb24gcHJldmlvdXMg d29yayBieSBGcmVlc2NhbGUgKEJlcm5hcmQgS3VobiwgSm9obiBSaWdieSkKYW5kIERvbWVuIFB1 bmNlci4KClVzaW5nIGEgU2FuRGlzayBFeHRyZW1lIElWIENGIGNhcmQgSSBnZXQgcmVhZCBzcGVl ZHMgb2YgYXBwcm94aW1hdGVseQoyNi43MCBNQi9zZWMuCgpUaGVyZSdzIGFsc28gd2hhdCBJIGJl bGlldmUgdG8gYmUgYSBoYXJkd2FyZSBidWcgaWYgeW91IGhhdmUgaGlnaCBsZXZlbHMKb2YgQmVz dENvbW0gQVRBIERNQSBhY3Rpdml0eSBhbG9uZyB3aXRoIGhlYXZ5IExvY2FsUGx1cyBCdXMgYWN0 aXZpdHk7CnRoZSBhZGRyZXNzIGJ1cyBzZWVtcyB0byBzb21ldGltZXMgZ2V0IGNvcnJ1cHRlZCB3 aXRoIEFUQSBjb21tYW5kcyB3aGlsZQp0aGUgTG9jYWxQbHVzIEJ1cyBvcGVyYXRpb24gaXMgc3Rp bGwgYWN0aXZlIChpLmUuIENoaXAgU2VsZWN0IGlzIGFzc2VydGVkKS4KCkkndmUgYXNrZWQgRnJl ZXNjYWxlIGFib3V0IHRoaXMgYnV0IGhhdmUgbm90IHJlY2VpdmVkIGEgcmVwbHkgeWV0IC0tIGlm CmFueWJvZHkgZnJvbSBGcmVlc2NhbGUgaGFzIGFueSBpZGVhcyBwbGVhc2UgY29udGFjdCBtZTsg SSBjYW4gc3VwcGx5IHNvbWUKYW5hbHl6ZXIgdHJhY2VzIGlmIG5lZWRlZC4gVGhlcmVmb3JlLCBm b3Igbm93LCBkbyBub3QgZW5hYmxlIERNQSBpZiB5b3UKbmVlZCByZWxpYWJsZSBMb2NhbFBsdXMg QnVzIHVubGVzcyB5b3UgZG8gYSBmaXh1cCBpbiB5b3VyIGRyaXZlciBhcwpmb2xsb3dzOgoKTG9j a2luZyBleGFtcGxlOgoKICAgICAgICB3aGlsZSAodGVzdF9hbmRfc2V0X2JpdCgwLCAmcGF0YV9t cGM1Mnh4X2F0YV9kbWFfbG9jaykgIT0gMCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1 Y3QgYmNvbV90YXNrXzIgKnRzayA9IHBhdGFfbXBjNTJ4eF9hdGFfZG1hX3Rhc2s7CgogICAgICAg ICAgICAgICAgaWYoYmNvbV9idWZmZXJfZG9uZV8yKHRzaykpCiAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiAxOwogICAgICAgIH0KCglyZXR1cm4gMDsKCihTYXZlIHRoZSByZXR1cm4gdmFs dWUgdG8gYGZsYWdzYCkKClVubG9ja2luZyBleGFtcGxlOgoKICAgICAgICBpZihmbGFncyA9PSAw KQogICAgICAgICAgICAgICAgY2xlYXJfYml0KDAsICZwYXRhX21wYzUyeHhfYXRhX2RtYV9sb2Nr KTsKCkNvbW1lbnRzIGFuZCB0ZXN0aW5nIHdvdWxkIG9mIGNvdXJzZSBiZSB2ZXJ5IHdlbGNvbWUu CgpUaGFua3MsCgpTaWduZWQtb2ZmLWJ5OiBUaW0gWWFtaW4gPHBsYXNtQHJvby5tZS51az4KCmRp ZmYgLXVycCBsaW51eC0yLjYuMjYtcmM2L2FyY2gvcG93ZXJwYy9zeXNkZXYvYmVzdGNvbW0vYmVz dGNvbW0uYyBsaW51eC0yLjYuMjYtcmM2LWF0YS9hcmNoL3Bvd2VycGMvc3lzZGV2L2Jlc3Rjb21t L2Jlc3Rjb21tLmMKLS0tIGxpbnV4LTIuNi4yNi1yYzYvYXJjaC9wb3dlcnBjL3N5c2Rldi9iZXN0 Y29tbS9iZXN0Y29tbS5jCTIwMDgtMDQtMTcgMDM6NDk6NDQuMDAwMDAwMDAwICswMTAwCisrKyBs aW51eC0yLjYuMjYtcmM2LWF0YS9hcmNoL3Bvd2VycGMvc3lzZGV2L2Jlc3Rjb21tL2Jlc3Rjb21t LmMJMjAwOC0wNy0wMyAxNjoxNzowNS4wMDAwMDAwMDAgKzAxMDAKQEAgLTMzMCwxMSArMzMwLDE2 IEBAIGJjb21fZW5naW5lX2luaXQodm9pZCkKIAkvKiBJbml0ICdhbHdheXMnIGluaXRpYXRvciAq LwogCW91dF84KCZiY29tX2VuZy0+cmVncy0+aXByW0JDT01fSU5JVElBVE9SX0FMV0FZU10sIEJD T01fSVBSX0FMV0FZUyk7CiAKKwkvKiBJZiBBVEEgRE1BIGlzIGVuYWJsZWQsIGFsd2F5cyB0dXJu IHByZWZldGNoIG9mZiAoaXQgYnJlYWtzIHRoaW5ncykgKi8KKyNpZm5kZWYgQ09ORklHX1BBVEFf TVBDNTJ4eF9ETUEKIAkvKiBEaXNhYmxlIENPTU0gQnVzIFByZWZldGNoIG9uIHRoZSBvcmlnaW5h bCA1MjAwOyBpdCdzIGJyb2tlbiAqLwogCWlmICgobWZzcHIoU1BSTl9TVlIpICYgTVBDNTIwMF9T VlJfTUFTSykgPT0gTVBDNTIwMF9TVlIpIHsKKyNlbmRpZgogCQlyZWd2YWwgPSBpbl9iZTE2KCZi Y29tX2VuZy0+cmVncy0+UHRkQ250cmwpOwogCQlvdXRfYmUxNigmYmNvbV9lbmctPnJlZ3MtPlB0 ZENudHJsLCAgcmVndmFsIHwgMSk7CisjaWZuZGVmIENPTkZJR19QQVRBX01QQzUyeHhfRE1BCiAJ fQorI2VuZGlmCiAKIAkvKiBJbml0IGxvY2sgKi8KIAlzcGluX2xvY2tfaW5pdCgmYmNvbV9lbmct PmxvY2spOwpkaWZmIC11cnAgbGludXgtMi42LjI2LXJjNi9kcml2ZXJzL2F0YS9LY29uZmlnIGxp bnV4LTIuNi4yNi1yYzYtYXRhL2RyaXZlcnMvYXRhL0tjb25maWcKLS0tIGxpbnV4LTIuNi4yNi1y YzYvZHJpdmVycy9hdGEvS2NvbmZpZwkyMDA4LTA3LTAzIDEzOjA2OjM1LjAwMDAwMDAwMCArMDEw MAorKysgbGludXgtMi42LjI2LXJjNi1hdGEvZHJpdmVycy9hdGEvS2NvbmZpZwkyMDA4LTA3LTAz IDE2OjE2OjMyLjAwMDAwMDAwMCArMDEwMApAQCAtNDYyLDYgKzQ2MiwxNSBAQCBjb25maWcgUEFU QV9NUEM1Mnh4CiAKIAkgIElmIHVuc3VyZSwgc2F5IE4uCiAKK2NvbmZpZyBQQVRBX01QQzUyeHhf RE1BCisJdHJpc3RhdGUgIkZyZWVzY2FsZSBNUEM1Mnh4IFNvQyBpbnRlcm5hbCBJREUgRE1BIgor CWRlcGVuZHMgb24gUEFUQV9NUEM1Mnh4CisJaGVscAorCSAgVGhpcyBvcHRpb24gZW5hYmxlcyBz dXBwb3J0IGZvciBETUEgb24gdGhlIE1QQzUyeHggU29DIFBBVEEKKwkgIGNvbnRyb2xsZXIuCisK KwkgIElmIHVuc3VyZSwgc2F5IE4uCisKIGNvbmZpZyBQQVRBX01QSUlYCiAJdHJpc3RhdGUgIklu dGVsIFBBVEEgTVBJSVggc3VwcG9ydCIKIAlkZXBlbmRzIG9uIFBDSQpkaWZmIC11cnAgbGludXgt Mi42LjI2LXJjNi9kcml2ZXJzL2F0YS9wYXRhX21wYzUyeHguYyBsaW51eC0yLjYuMjYtcmM2LWF0 YS9kcml2ZXJzL2F0YS9wYXRhX21wYzUyeHguYwotLS0gbGludXgtMi42LjI2LXJjNi9kcml2ZXJz L2F0YS9wYXRhX21wYzUyeHguYwkyMDA4LTA3LTAzIDEzOjA2OjM1LjAwMDAwMDAwMCArMDEwMAor KysgbGludXgtMi42LjI2LXJjNi1hdGEvZHJpdmVycy9hdGEvcGF0YV9tcGM1Mnh4LmMJMjAwOC0w Ny0wMyAxNjoxNjozMi4wMDAwMDAwMDAgKzAxMDAKQEAgLTYsNiArNiw5IEBACiAgKiBDb3B5cmln aHQgKEMpIDIwMDYgU3lsdmFpbiBNdW5hdXQgPHRudEAyNDZ0TnQuY29tPgogICogQ29weXJpZ2h0 IChDKSAyMDAzIE1pcHN5cyAtIEJlbmphbWluIEhlcnJlbnNjaG1pZHQKICAqCisgKiBVRE1BIHN1 cHBvcnQgYmFzZWQgb24gcGF0Y2hlcyBieSBGcmVlc2NhbGUgKEJlcm5hcmQgS3VobiwgSm9obiBS aWdieSksCisgKiBEb21lbiBQdW5jZXIgYW5kIFRpbSBZYW1pbi4KKyAqCiAgKiBUaGlzIGZpbGUg aXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQogICogdmVyc2lvbiAyLiBUaGlzIHByb2dyYW0gaXMgbGljZW5zZWQgImFzIGlzIiB3aXRo b3V0IGFueSB3YXJyYW50eSBvZiBhbnkKICAqIGtpbmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBs aWVkLgpAQCAtMTcsMjggKzIwLDQ3IEBACiAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNs dWRlIDxsaW51eC9saWJhdGEuaD4KIAorI2luY2x1ZGUgPGFzbS9jYWNoZWZsdXNoLmg+CiAjaW5j bHVkZSA8YXNtL3R5cGVzLmg+CiAjaW5jbHVkZSA8YXNtL3Byb20uaD4KICNpbmNsdWRlIDxhc20v b2ZfcGxhdGZvcm0uaD4KICNpbmNsdWRlIDxhc20vbXBjNTJ4eC5oPgogCisjaW5jbHVkZSA8c3lz ZGV2L2Jlc3Rjb21tL2Jlc3Rjb21tLmg+CisjaW5jbHVkZSA8c3lzZGV2L2Jlc3Rjb21tL2Jlc3Rj b21tX3ByaXYuaD4KKyNpbmNsdWRlIDxzeXNkZXYvYmVzdGNvbW0vYXRhLmg+CiAKICNkZWZpbmUg RFJWX05BTUUJIm1wYzUyeHhfYXRhIgogI2RlZmluZSBEUlZfVkVSU0lPTgkiMC4xLjIiCiAKLQog LyogUHJpdmF0ZSBzdHJ1Y3R1cmVzIHVzZWQgYnkgdGhlIGRyaXZlciAqLwogc3RydWN0IG1wYzUy eHhfYXRhX3RpbWluZ3MgewogCXUzMglwaW8xOwogCXUzMglwaW8yOworCXUzMgltZG1hMTsKKwl1 MzIJbWRtYTI7CisJdTMyCXVkbWExOworCXUzMgl1ZG1hMjsKKwl1MzIJdWRtYTM7CisJdTMyCXVk bWE0OworCXUzMgl1ZG1hNTsKKwlpbnQJdXNpbmdfdWRtYTsKIH07CiAKIHN0cnVjdCBtcGM1Mnh4 X2F0YV9wcml2IHsKIAl1bnNpZ25lZCBpbnQJCQlpcGJfcGVyaW9kOwogCXN0cnVjdCBtcGM1Mnh4 X2F0YSBfX2lvbWVtICoJYXRhX3JlZ3M7CisJcGh5c19hZGRyX3QJCQlhdGFfcmVnc19wYTsKIAlp bnQJCQkJYXRhX2lycTsKIAlzdHJ1Y3QgbXBjNTJ4eF9hdGFfdGltaW5ncwl0aW1pbmdzWzJdOwog CWludAkJCQljc2VsOworCisJLyogRE1BICovCisJc3RydWN0IGJjb21fdGFzawkJKmRtYXRzazsK Kwljb25zdCBzdHJ1Y3QgdWRtYXNwZWMJCSp1ZG1hc3BlYzsKKwljb25zdCBzdHJ1Y3QgbWRtYXNw ZWMJCSptZG1hc3BlYzsKKwlpbnQgCQkJCW1wYzUyeHhfYXRhX2RtYV9sYXN0X3dyaXRlOworCWlu dAkJCQl3YWl0aW5nX2Zvcl9kbWE7CiB9OwogCiAKQEAgLTUzLDYgKzc1LDEwNyBAQCBzdGF0aWMg Y29uc3QgaW50IGF0YXNwZWNfdGFbNV0gICAgPSB7IDM1CiAKICNkZWZpbmUgQ0FMQ19DTEtDWUMo Yyx2KSAoKCgodikrKGMpLTEpLyhjKSkpCiAKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworCisvKiBB VEFQSS00IE1ETUEgc3BlY3MgKGluIGNsb2NrcykgKi8KK3N0cnVjdCBtZG1hc3BlYyB7CisJdTMy IHQwTTsKKwl1MzIgdGQ7CisJdTMyIHRoOworCXUzMiB0ajsKKwl1MzIgdGt3OworCXUzMiB0bTsK Kwl1MzIgdG47Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG1kbWFzcGVjIG1kbWFzcGVjNjZb M10gPSB7CisJeyAudDBNID0gMzIsIC50ZCA9IDE1LCAudGggPSAyLCAudGogPSAyLCAudGt3ID0g MTUsIC50bSA9IDQsIC50biA9IDEgfSwKKwl7IC50ME0gPSAxMCwgLnRkID0gNiwgIC50aCA9IDEs IC50aiA9IDEsIC50a3cgPSA0LCAgLnRtID0gMiwgLnRuID0gMSB9LAorCXsgLnQwTSA9IDgsICAu dGQgPSA1LCAgLnRoID0gMSwgLnRqID0gMSwgLnRrdyA9IDIsICAudG0gPSAyLCAudG4gPSAxIH0s Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG1kbWFzcGVjIG1kbWFzcGVjMTMyWzNdID0gewor CXsgLnQwTSA9IDY0LCAudGQgPSAyOSwgLnRoID0gMywgLnRqID0gMywgLnRrdyA9IDI5LCAudG0g PSA3LCAudG4gPSAyIH0sCisJeyAudDBNID0gMjAsIC50ZCA9IDExLCAudGggPSAyLCAudGogPSAx LCAudGt3ID0gNywgIC50bSA9IDQsIC50biA9IDEgfSwKKwl7IC50ME0gPSAxNiwgLnRkID0gMTAs IC50aCA9IDIsIC50aiA9IDEsIC50a3cgPSA0LCAgLnRtID0gNCwgLnRuID0gMSB9LAorfTsKKwor LyogQVRBUEktNCBVRE1BIHNwZWNzIChpbiBjbG9ja3MpICovCitzdHJ1Y3QgdWRtYXNwZWMgewor CXUzMiB0Y3ljOworCXUzMiB0MmN5YzsKKwl1MzIgdGRzOworCXUzMiB0ZGg7CisJdTMyIHRkdnM7 CisJdTMyIHRkdmg7CisJdTMyIHRmczsKKwl1MzIgdGxpOworCXUzMiB0bWxpOworCXUzMiB0YXo7 CisJdTMyIHR6YWg7CisJdTMyIHRlbnY7CisJdTMyIHRzcjsKKwl1MzIgdHJmczsKKwl1MzIgdHJw OworCXUzMiB0YWNrOworCXUzMiB0c3M7Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHVkbWFz cGVjIHVkbWFzcGVjNjZbNl0gPSB7CisJeyAudGN5YyA9IDgsICAudDJjeWMgPSAxNiwgLnRkcyAg PSAxLCAgLnRkaCAgPSAxLCAudGR2cyA9IDUsICAudGR2aCA9IDEsCisJICAudGZzICA9IDE2LCAu dGxpICAgPSAxMCwgLnRtbGkgPSAyLCAgLnRheiAgPSAxLCAudHphaCA9IDIsICAudGVudiA9IDIs CisJICAudHNyICA9IDMsICAudHJmcyAgPSA1LCAgLnRycCAgPSAxMSwgLnRhY2sgPSAyLCAudHNz ICA9IDQsCisJfSwKKwl7IC50Y3ljID0gNSwgIC50MmN5YyA9IDExLCAudGRzICA9IDEsICAudGRo ICA9IDEsIC50ZHZzID0gNCwgIC50ZHZoID0gMSwKKwkgIC50ZnMgID0gMTQsIC50bGkgICA9IDEw LCAudG1saSA9IDIsICAudGF6ICA9IDEsIC50emFoID0gMiwgIC50ZW52ID0gMiwKKwkgIC50c3Ig ID0gMiwgIC50cmZzICA9IDUsICAudHJwICA9IDksICAudGFjayA9IDIsIC50c3MgID0gNCwKKwl9 LAorCXsgLnRjeWMgPSA0LCAgLnQyY3ljID0gOCwgIC50ZHMgID0gMSwgIC50ZGggID0gMSwgLnRk dnMgPSAzLCAgLnRkdmggPSAxLAorCSAgLnRmcyAgPSAxMiwgLnRsaSAgID0gMTAsIC50bWxpID0g MiwgIC50YXogID0gMSwgLnR6YWggPSAyLCAgLnRlbnYgPSAyLAorCSAgLnRzciAgPSAyLCAgLnRy ZnMgID0gNCwgIC50cnAgID0gNywgIC50YWNrID0gMiwgLnRzcyAgPSA0LAorCX0sCisJeyAudGN5 YyA9IDMsICAudDJjeWMgPSA2LCAgLnRkcyAgPSAxLCAgLnRkaCAgPSAxLCAudGR2cyA9IDIsICAu dGR2aCA9IDEsCisJICAudGZzICA9IDksICAudGxpICAgPSA3LCAgLnRtbGkgPSAyLCAgLnRheiAg PSAxLCAudHphaCA9IDIsICAudGVudiA9IDIsCisJICAudHNyICA9IDIsICAudHJmcyAgPSA0LCAg LnRycCAgPSA3LCAgLnRhY2sgPSAyLCAudHNzICA9IDQsCisJfSwKKwl7IC50Y3ljID0gMiwgIC50 MmN5YyA9IDQsICAudGRzICA9IDEsICAudGRoICA9IDEsIC50ZHZzID0gMSwgIC50ZHZoID0gMSwK KwkgIC50ZnMgID0gOCwgIC50bGkgICA9IDgsICAudG1saSA9IDIsICAudGF6ICA9IDEsIC50emFo ID0gMiwgIC50ZW52ID0gMiwKKwkgIC50c3IgID0gMiwgIC50cmZzICA9IDQsICAudHJwICA9IDcs ICAudGFjayA9IDIsIC50c3MgID0gNCwKKwl9LAorCXsgLnRjeWMgPSAyLCAgLnQyY3ljID0gMiwg IC50ZHMgID0gMSwgIC50ZGggID0gMSwgLnRkdnMgPSAxLCAgLnRkdmggPSAxLAorCSAgLnRmcyAg PSA2LCAgLnRsaSAgID0gNSwgIC50bWxpID0gMiwgIC50YXogID0gMSwgLnR6YWggPSAyLCAgLnRl bnYgPSAyLAorCSAgLnRzciAgPSAyLCAgLnRyZnMgID0gNCwgIC50cnAgID0gNiwgIC50YWNrID0g MiwgLnRzcyAgPSA0LAorCX0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHVkbWFzcGVjIHVk bWFzcGVjMTMyWzZdID0geworCXsgLnRjeWMgPSAxNSwgLnQyY3ljID0gMzEsIC50ZHMgID0gMiwg IC50ZGggID0gMSwgLnRkdnMgPSAxMCwgLnRkdmggPSAxLAorCSAgLnRmcyAgPSAzMCwgLnRsaSAg ID0gMjAsIC50bWxpID0gMywgIC50YXogID0gMiwgLnR6YWggPSAzLCAgLnRlbnYgPSAzLAorCSAg LnRzciAgPSA3LCAgLnRyZnMgID0gMTAsIC50cnAgID0gMjIsIC50YWNrID0gMywgLnRzcyAgPSA3 LAorCX0sCisJeyAudGN5YyA9IDEwLCAudDJjeWMgPSAyMSwgLnRkcyAgPSAyLCAgLnRkaCAgPSAx LCAudGR2cyA9IDcsICAudGR2aCA9IDEsCisJICAudGZzICA9IDI3LCAudGxpICAgPSAyMCwgLnRt bGkgPSAzLCAgLnRheiAgPSAyLCAudHphaCA9IDMsICAudGVudiA9IDMsCisJICAudHNyICA9IDQs ICAudHJmcyAgPSAxMCwgLnRycCAgPSAxNywgLnRhY2sgPSAzLCAudHNzICA9IDcsCisJfSwKKwl7 IC50Y3ljID0gNiwgIC50MmN5YyA9IDEyLCAudGRzICA9IDEsICAudGRoICA9IDEsIC50ZHZzID0g NSwgIC50ZHZoID0gMSwKKwkgIC50ZnMgID0gMjMsIC50bGkgICA9IDIwLCAudG1saSA9IDMsICAu dGF6ICA9IDIsIC50emFoID0gMywgIC50ZW52ID0gMywKKwkgIC50c3IgID0gMywgIC50cmZzICA9 IDgsICAudHJwICA9IDE0LCAudGFjayA9IDMsIC50c3MgID0gNywKKwl9LAorCXsgLnRjeWMgPSA3 LCAgLnQyY3ljID0gMTIsIC50ZHMgID0gMSwgIC50ZGggID0gMSwgLnRkdnMgPSAzLCAgLnRkdmgg PSAxLAorCSAgLnRmcyAgPSAxNSwgLnRsaSAgID0gMTMsIC50bWxpID0gMywgIC50YXogID0gMiwg LnR6YWggPSAzLCAgLnRlbnYgPSAzLAorCSAgLnRzciAgPSAzLCAgLnRyZnMgID0gOCwgIC50cnAg ID0gMTQsIC50YWNrID0gMywgLnRzcyAgPSA3LAorCX0sCisJeyAudGN5YyA9IDIsICAudDJjeWMg PSA1LCAgLnRkcyAgPSAwLCAgLnRkaCAgPSAwLCAudGR2cyA9IDEsICAudGR2aCA9IDEsCisJICAu dGZzICA9IDE2LCAudGxpICAgPSAxNCwgLnRtbGkgPSAyLCAgLnRheiAgPSAxLCAudHphaCA9IDIs ICAudGVudiA9IDIsCisJICAudHNyICA9IDIsICAudHJmcyAgPSA3LCAgLnRycCAgPSAxMywgLnRh Y2sgPSAyLCAudHNzICA9IDYsCisJfSwKKwl7IC50Y3ljID0gMywgIC50MmN5YyA9IDYsICAudGRz ICA9IDEsICAudGRoICA9IDEsIC50ZHZzID0gMSwgIC50ZHZoID0gMSwKKwkgIC50ZnMgID0gMTIs IC50bGkgICA9IDEwLCAudG1saSA9IDMsICAudGF6ICA9IDIsIC50emFoID0gMywgIC50ZW52ID0g MywKKwkgIC50c3IgID0gMywgIC50cmZzICA9IDcsICAudHJwICA9IDEyLCAudGFjayA9IDMsIC50 c3MgID0gNywKKwl9LAorfTsKKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKIC8qIEJpdCBkZWZp bml0aW9ucyBpbnNpZGUgdGhlIHJlZ2lzdGVycyAqLwogI2RlZmluZSBNUEM1Mnh4X0FUQV9IT1NU Q09ORl9TTVIJMHg4MDAwMDAwMFVMIC8qIFN0YXRlIG1hY2hpbmUgcmVzZXQgKi8KQEAgLTY2LDYg KzE4OSw3IEBAIHN0YXRpYyBjb25zdCBpbnQgYXRhc3BlY190YVs1XSAgICA9IHsgMzUKICNkZWZp bmUgTVBDNTJ4eF9BVEFfSE9TVFNUQVRfV0VSUgkweDAxMDAwMDAwVUwgLyogV3JpdGUgRXJyb3Ig Ki8KIAogI2RlZmluZSBNUEM1Mnh4X0FUQV9GSUZPU1RBVF9FTVBUWQkweDAxIC8qIEZJRk8gRW1w dHkgKi8KKyNkZWZpbmUgTVBDNTJ4eF9BVEFfRklGT1NUQVRfRVJST1IJMHg0MCAvKiBGSUZPIEVy cm9yICovCiAKICNkZWZpbmUgTVBDNTJ4eF9BVEFfRE1BTU9ERV9XUklURQkweDAxIC8qIFdyaXRl IERNQSAqLwogI2RlZmluZSBNUEM1Mnh4X0FUQV9ETUFNT0RFX1JFQUQJMHgwMiAvKiBSZWFkIERN QSAqLwpAQCAtNzUsNiArMTk5LDggQEAgc3RhdGljIGNvbnN0IGludCBhdGFzcGVjX3RhWzVdICAg ID0geyAzNQogI2RlZmluZSBNUEM1Mnh4X0FUQV9ETUFNT0RFX0ZSCQkweDIwIC8qIEZJRk8gUmVz ZXQgKi8KICNkZWZpbmUgTVBDNTJ4eF9BVEFfRE1BTU9ERV9IVVQJCTB4NDAgLyogSG9zdCBVRE1B IGJ1cnN0IHRlcm1pbmF0ZSAqLwogCisjZGVmaW5lIE1BWF9ETUFfQlVGRkVSUyAxMjgKKyNkZWZp bmUgTUFYX0RNQV9CVUZGRVJfU0laRSAweDIwMDAwdQogCiAvKiBTdHJ1Y3R1cmUgb2YgdGhlIGhh cmR3YXJlIHJlZ2lzdGVycyAqLwogc3RydWN0IG1wYzUyeHhfYXRhIHsKQEAgLTEzMyw2ICsyNTks OSBAQCBzdHJ1Y3QgbXBjNTJ4eF9hdGEgewogCXU4ICByZXNlcnZlZDIxWzJdOwogfTsKIAorLyog QmVzdENvbW0gbG9ja2luZyAqLwordW5zaWduZWQgbG9uZyBwYXRhX21wYzUyeHhfYXRhX2RtYV9s b2NrOworc3RydWN0IGJjb21fdGFzayAqcGF0YV9tcGM1Mnh4X2F0YV9kbWFfdGFzazsKIAogLyog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ICovCiAvKiBBdXggZm5zICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTE2NSw2ICsyOTQs NDEgQEAgbXBjNTJ4eF9hdGFfY29tcHV0ZV9waW9fdGltaW5ncyhzdHJ1Y3QgbQogCXJldHVybiAw OwogfQogCitzdGF0aWMgaW50CittcGM1Mnh4X2F0YV9jb21wdXRlX21kbWFfdGltaW5ncyhzdHJ1 Y3QgbXBjNTJ4eF9hdGFfcHJpdiAqcHJpdiwgaW50IGRldiwgaW50IHNwZWVkKQoreworCXN0cnVj dCBtcGM1Mnh4X2F0YV90aW1pbmdzICp0aW1pbmcgPSAmcHJpdi0+dGltaW5nc1tkZXZdOworCWNv bnN0IHN0cnVjdCBtZG1hc3BlYyAqcyA9ICZwcml2LT5tZG1hc3BlY1tzcGVlZF07CisKKwlpZiAo c3BlZWQgPCAwIHx8IHNwZWVkID4gMikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwl0aW1pbmctPm1k bWExID0gKHMtPnQwTSA8PCAyNCkgfCAocy0+dGQgPDwgMTYpIHwgKHMtPnRrdyA8PCA4KSB8IChz LT50bSk7CisJdGltaW5nLT5tZG1hMiA9IChzLT50aCA8PCAyNCkgfCAocy0+dGogPDwgMTYpIHwg KHMtPnRuIDw8IDgpOworCXRpbWluZy0+dXNpbmdfdWRtYSA9IDA7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludAorbXBjNTJ4eF9hdGFfY29tcHV0ZV91ZG1hX3RpbWluZ3Moc3RydWN0IG1w YzUyeHhfYXRhX3ByaXYgKnByaXYsIGludCBkZXYsIGludCBzcGVlZCkKK3sKKwlzdHJ1Y3QgbXBj NTJ4eF9hdGFfdGltaW5ncyAqdGltaW5nID0gJnByaXYtPnRpbWluZ3NbZGV2XTsKKwljb25zdCBz dHJ1Y3QgdWRtYXNwZWMgKnMgPSAmcHJpdi0+dWRtYXNwZWNbc3BlZWRdOworCisJaWYgKHNwZWVk IDwgMCB8fCBzcGVlZCA+IDIpCisJCXJldHVybiAtRUlOVkFMOworCisJdGltaW5nLT51ZG1hMSA9 IChzLT50MmN5YyA8PCAyNCkgfCAocy0+dGN5YyA8PCAxNikgfCAocy0+dGRzIDw8IDgpIHwgKHMt PnRkaCk7CisJdGltaW5nLT51ZG1hMiA9IChzLT50ZHZzIDw8IDI0KSB8IChzLT50ZHZoIDw8IDE2 KSB8IChzLT50ZnMgPDwgOCkgfCAocy0+dGxpKTsKKwl0aW1pbmctPnVkbWEzID0gKHMtPnRtbGkg PDwgMjQpIHwgKHMtPnRheiA8PCAxNikgfCAocy0+dGVudiA8PCA4KSB8IChzLT50c3IpOworCXRp bWluZy0+dWRtYTQgPSAocy0+dHNzIDw8IDI0KSB8IChzLT50cmZzIDw8IDE2KSB8IChzLT50cnAg PDwgOCkgfCAocy0+dGFjayk7CisJdGltaW5nLT51ZG1hNSA9IChzLT50emFoIDw8IDI0KTsKKwl0 aW1pbmctPnVzaW5nX3VkbWEgPSAxOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkCiBt cGM1Mnh4X2F0YV9hcHBseV90aW1pbmdzKHN0cnVjdCBtcGM1Mnh4X2F0YV9wcml2ICpwcml2LCBp bnQgZGV2aWNlKQogewpAQCAtMTczLDE0ICszMzcsMTMgQEAgbXBjNTJ4eF9hdGFfYXBwbHlfdGlt aW5ncyhzdHJ1Y3QgbXBjNTJ4eAogCiAJb3V0X2JlMzIoJnJlZ3MtPnBpbzEsICB0aW1pbmctPnBp bzEpOwogCW91dF9iZTMyKCZyZWdzLT5waW8yLCAgdGltaW5nLT5waW8yKTsKLQlvdXRfYmUzMigm cmVncy0+bWRtYTEsIDApOwotCW91dF9iZTMyKCZyZWdzLT5tZG1hMiwgMCk7Ci0Jb3V0X2JlMzIo JnJlZ3MtPnVkbWExLCAwKTsKLQlvdXRfYmUzMigmcmVncy0+dWRtYTIsIDApOwotCW91dF9iZTMy KCZyZWdzLT51ZG1hMywgMCk7Ci0Jb3V0X2JlMzIoJnJlZ3MtPnVkbWE0LCAwKTsKLQlvdXRfYmUz MigmcmVncy0+dWRtYTUsIDApOwotCisJb3V0X2JlMzIoJnJlZ3MtPm1kbWExLCB0aW1pbmctPm1k bWExKTsKKwlvdXRfYmUzMigmcmVncy0+bWRtYTIsIHRpbWluZy0+bWRtYTIpOworCW91dF9iZTMy KCZyZWdzLT51ZG1hMSwgdGltaW5nLT51ZG1hMSk7CisJb3V0X2JlMzIoJnJlZ3MtPnVkbWEyLCB0 aW1pbmctPnVkbWEyKTsKKwlvdXRfYmUzMigmcmVncy0+dWRtYTMsIHRpbWluZy0+dWRtYTMpOwor CW91dF9iZTMyKCZyZWdzLT51ZG1hNCwgdGltaW5nLT51ZG1hNCk7CisJb3V0X2JlMzIoJnJlZ3Mt PnVkbWE1LCB0aW1pbmctPnVkbWE1KTsKIAlwcml2LT5jc2VsID0gZGV2aWNlOwogfQogCkBAIC0y NDUsNiArNDA4LDI5IEBAIG1wYzUyeHhfYXRhX3NldF9waW9tb2RlKHN0cnVjdCBhdGFfcG9ydCAK IAltcGM1Mnh4X2F0YV9hcHBseV90aW1pbmdzKHByaXYsIGFkZXYtPmRldm5vKTsKIH0KIHN0YXRp YyB2b2lkCittcGM1Mnh4X2F0YV9zZXRfZG1hbW9kZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1 Y3QgYXRhX2RldmljZSAqYWRldikKK3sKKwlzdHJ1Y3QgbXBjNTJ4eF9hdGFfcHJpdiAqcHJpdiA9 IGFwLT5ob3N0LT5wcml2YXRlX2RhdGE7CisJaW50IHJ2OworCisJaWYgKGFkZXYtPmRtYV9tb2Rl ID49IFhGRVJfVURNQV8wKSB7CisJCWludCBkbWEgPSBhZGV2LT5kbWFfbW9kZSAtIFhGRVJfVURN QV8wOworCQlydiA9IG1wYzUyeHhfYXRhX2NvbXB1dGVfdWRtYV90aW1pbmdzKHByaXYsIGFkZXYt PmRldm5vLCBkbWEpOworCX0gZWxzZSB7CisJCWludCBkbWEgPSBhZGV2LT5kbWFfbW9kZSAtIFhG RVJfTVdfRE1BXzA7CisJCXJ2ID0gbXBjNTJ4eF9hdGFfY29tcHV0ZV9tZG1hX3RpbWluZ3MocHJp diwgYWRldi0+ZGV2bm8sIGRtYSk7CisJfQorCisJaWYgKHJ2KSB7CisJCWRldl9hbGVydChhcC0+ ZGV2LAorCQkJIlRyeWluZyB0byBzZWxlY3QgaW52YWxpZCBETUEgbW9kZSAlZFxuIiwKKwkJCWFk ZXYtPmRtYV9tb2RlKTsKKwkJcmV0dXJuOworCX0KKworCW1wYzUyeHhfYXRhX2FwcGx5X3RpbWlu Z3MocHJpdiwgYWRldi0+ZGV2bm8pOworfQorc3RhdGljIHZvaWQKIG1wYzUyeHhfYXRhX2Rldl9z ZWxlY3Qoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50IGRldmljZSkKIHsKIAlzdHJ1 Y3QgbXBjNTJ4eF9hdGFfcHJpdiAqcHJpdiA9IGFwLT5ob3N0LT5wcml2YXRlX2RhdGE7CkBAIC0y NTUsMTYgKzQ0MSwxOTIgQEAgbXBjNTJ4eF9hdGFfZGV2X3NlbGVjdChzdHJ1Y3QgYXRhX3BvcnQg KgogCWF0YV9zZmZfZGV2X3NlbGVjdChhcCxkZXZpY2UpOwogfQogCitzdGF0aWMgaW50CittcGM1 Mnh4X2F0YV9idWlsZF9kbWF0YWJsZShzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKQoreworCXN0 cnVjdCBhdGFfcG9ydCAqYXAgPSBxYy0+YXA7CisJc3RydWN0IG1wYzUyeHhfYXRhX3ByaXYgKnBy aXYgPSBhcC0+aG9zdC0+cHJpdmF0ZV9kYXRhOworCXVuc2lnbmVkIGludCByZWFkID0gIShxYy0+ dGYuZmxhZ3MgJiBBVEFfVEZMQUdfV1JJVEUpLCBzaTsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNn OworCWludCBjb3VudCA9IDA7CisKKwlpZiAocmVhZCkKKwkJYmNvbV9hdGFfcnhfcHJlcGFyZShw cml2LT5kbWF0c2spOworCWVsc2UKKwkJYmNvbV9hdGFfdHhfcHJlcGFyZShwcml2LT5kbWF0c2sp OworCisJZm9yX2VhY2hfc2cocWMtPnNnLCBzZywgcWMtPm5fZWxlbSwgc2kpIHsKKwkJZG1hX2Fk ZHJfdCBjdXJfYWRkciA9IHNnX2RtYV9hZGRyZXNzKHNnKTsKKwkJdTMyIGN1cl9sZW4gPSBzZ19k bWFfbGVuKHNnKTsKKworCQl3aGlsZSAoY3VyX2xlbikgeworCQkJdW5zaWduZWQgaW50IHRjID0g bWluKGN1cl9sZW4sIE1BWF9ETUFfQlVGRkVSX1NJWkUpOworCQkJc3RydWN0IGJjb21fYXRhX2Jk ICpiZCA9IChzdHJ1Y3QgYmNvbV9hdGFfYmQgKikgYmNvbV9wcmVwYXJlX25leHRfYnVmZmVyKHBy aXYtPmRtYXRzayk7CisKKwkJCWlmIChyZWFkKSB7CisJCQkJYmQtPnN0YXR1cyA9IHRjOworCQkJ CWJkLT5zcmNfcGEgPSAoX19mb3JjZSB1MzIpIHByaXYtPmF0YV9yZWdzX3BhICsKKwkJCQkJb2Zm c2V0b2Yoc3RydWN0IG1wYzUyeHhfYXRhLCBmaWZvX2RhdGEpOworCQkJCWJkLT5kc3RfcGEgPSAo X19mb3JjZSB1MzIpIGN1cl9hZGRyOworCQkJfSBlbHNlIHsKKwkJCQliZC0+c3RhdHVzID0gdGM7 CisJCQkJYmQtPnNyY19wYSA9IChfX2ZvcmNlIHUzMikgY3VyX2FkZHI7CisJCQkJYmQtPmRzdF9w YSA9IChfX2ZvcmNlIHUzMikgcHJpdi0+YXRhX3JlZ3NfcGEgKworCQkJCQlvZmZzZXRvZihzdHJ1 Y3QgbXBjNTJ4eF9hdGEsIGZpZm9fZGF0YSk7CisJCQl9CisKKwkJCWJjb21fc3VibWl0X25leHRf YnVmZmVyKHByaXYtPmRtYXRzaywgTlVMTCk7CisKKwkJCWN1cl9hZGRyICs9IHRjOworCQkJY3Vy X2xlbiAtPSB0YzsKKwkJCWNvdW50Kys7CisKKwkJCWlmIChjb3VudCA+IE1BWF9ETUFfQlVGRkVS UykgeworCQkJCWRldl9hbGVydChhcC0+ZGV2LCAiZG1hIHRhYmxlIgorCQkJCQkidG9vIHNtYWxs XG4iKTsKKwkJCQlnb3RvIHVzZV9waW9faW5zdGVhZDsKKwkJCX0KKwkJfQorCX0KKwlyZXR1cm4g MTsKKworIHVzZV9waW9faW5zdGVhZDoKKwliY29tX2F0YV9yZXNldF9iZChwcml2LT5kbWF0c2sp OworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorbXBjNTJ4eF9ibWRtYV9zZXR1cChzdHJ1 Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKQoreworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBxYy0+YXA7 CisJc3RydWN0IG1wYzUyeHhfYXRhX3ByaXYgKnByaXYgPSBhcC0+aG9zdC0+cHJpdmF0ZV9kYXRh OworCXN0cnVjdCBtcGM1Mnh4X2F0YSBfX2lvbWVtICpyZWdzID0gcHJpdi0+YXRhX3JlZ3M7CisK Kwl1bnNpZ25lZCBpbnQgcmVhZCA9ICEocWMtPnRmLmZsYWdzICYgQVRBX1RGTEFHX1dSSVRFKTsK Kwl1OCBkbWFfbW9kZTsKKworCWlmICghbXBjNTJ4eF9hdGFfYnVpbGRfZG1hdGFibGUocWMpKQor CQlkZXZfYWxlcnQoYXAtPmRldiwgIiVzOiAlaSwgcmV0dXJuIDE/XG4iLAorCQkJX19mdW5jX18s IF9fTElORV9fKTsKKworCS8qIENoZWNrIEZJRk8gaXMgT0suLi4gKi8KKwlpZihpbl84KCZwcml2 LT5hdGFfcmVncy0+Zmlmb19zdGF0dXMpICYgTVBDNTJ4eF9BVEFfRklGT1NUQVRfRVJST1IpCisJ CWRldl9hbGVydChhcC0+ZGV2LCAiJXM6IEZJRk8gZXJyb3IgZGV0ZWN0ZWQ6IDB4JTAyeCFcbiIs CisJCQlfX2Z1bmNfXywgaW5fOCgmcHJpdi0+YXRhX3JlZ3MtPmZpZm9fc3RhdHVzKSk7CisKKwlp ZiAocmVhZCkgeworCQlkbWFfbW9kZSA9IE1QQzUyeHhfQVRBX0RNQU1PREVfSUUgfCBNUEM1Mnh4 X0FUQV9ETUFNT0RFX1JFQUQgfAorCQkJCU1QQzUyeHhfQVRBX0RNQU1PREVfRkU7CisKKwkJLyog U2V0dXAgRklGTyBpZiBkaXJlY3Rpb24gY2hhbmdlZCAqLworCQlpZiAocHJpdi0+bXBjNTJ4eF9h dGFfZG1hX2xhc3Rfd3JpdGUgIT0gMCkgeworCQkJcHJpdi0+bXBjNTJ4eF9hdGFfZG1hX2xhc3Rf d3JpdGUgPSAwOworCisJCQkvKiBDb25maWd1cmUgRklGTyB3aXRoIGdyYW51bGFyaXR5IHRvIDcg Ki8KKwkJCW91dF84KCZyZWdzLT5maWZvX2NvbnRyb2wsIDcpOworCQkJb3V0X2JlMTYoJnJlZ3Mt PmZpZm9fYWxhcm0sIDEyOCk7CisKKwkJCS8qIFNldCBGSUZPIFJlc2V0IGJpdCAoRlIpICovCisJ CQlvdXRfOCgmcmVncy0+ZG1hX21vZGUsIE1QQzUyeHhfQVRBX0RNQU1PREVfRlIpOworCQl9CisJ fSBlbHNlIHsKKwkJZG1hX21vZGUgPSBNUEM1Mnh4X0FUQV9ETUFNT0RFX0lFIHwgTVBDNTJ4eF9B VEFfRE1BTU9ERV9XUklURTsKKworCQkvKiBTZXR1cCBGSUZPIGlmIGRpcmVjdGlvbiBjaGFuZ2Vk ICovCisJCWlmIChwcml2LT5tcGM1Mnh4X2F0YV9kbWFfbGFzdF93cml0ZSAhPSAxKSB7CisJCQlw cml2LT5tcGM1Mnh4X2F0YV9kbWFfbGFzdF93cml0ZSA9IDE7CisKKwkJCS8qIENvbmZpZ3VyZSBG SUZPIHdpdGggZ3JhbnVsYXJpdHkgdG8gNCAqLworCQkJb3V0XzgoJnJlZ3MtPmZpZm9fY29udHJv bCwgNCk7CisJCQlvdXRfYmUxNigmcmVncy0+Zmlmb19hbGFybSwgMTI4KTsKKwkJfQorCX0KKwor CWlmIChwcml2LT50aW1pbmdzW3FjLT5kZXYtPmRldm5vXS51c2luZ191ZG1hKQorCQlkbWFfbW9k ZSB8PSBNUEM1Mnh4X0FUQV9ETUFNT0RFX1VETUE7CisKKwlvdXRfOCgmcmVncy0+ZG1hX21vZGUs IGRtYV9tb2RlKTsKKwlwcml2LT53YWl0aW5nX2Zvcl9kbWEgPSBBVEFfRE1BX0FDVElWRTsKKwor CWF0YV93YWl0X2lkbGUoYXApOworCWFwLT5vcHMtPnNmZl9leGVjX2NvbW1hbmQoYXAsICZxYy0+ dGYpOworfQorCitzdGF0aWMgdm9pZAorbXBjNTJ4eF9ibWRtYV9zdGFydChzdHJ1Y3QgYXRhX3F1 ZXVlZF9jbWQgKnFjKQoreworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBxYy0+YXA7CisJc3RydWN0 IG1wYzUyeHhfYXRhX3ByaXYgKnByaXYgPSBhcC0+aG9zdC0+cHJpdmF0ZV9kYXRhOworCisJLyog TG9jYWxCdXMgbG9jayAqLworCXdoaWxlICh0ZXN0X2FuZF9zZXRfYml0KDAsICZwYXRhX21wYzUy eHhfYXRhX2RtYV9sb2NrKSAhPSAwKQorCQk7CisKKwliY29tX3NldF90YXNrX2F1dG9fc3RhcnQo cHJpdi0+ZG1hdHNrLT50YXNrbnVtLCBwcml2LT5kbWF0c2stPnRhc2tudW0pOworCWJjb21fZW5h YmxlKHByaXYtPmRtYXRzayk7Cit9CisKK3N0YXRpYyB2b2lkCittcGM1Mnh4X2JtZG1hX3N0b3Ao c3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykKK3sKKwlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gcWMt PmFwOworCXN0cnVjdCBtcGM1Mnh4X2F0YV9wcml2ICpwcml2ID0gYXAtPmhvc3QtPnByaXZhdGVf ZGF0YTsKKworCWJjb21fZGlzYWJsZShwcml2LT5kbWF0c2spOworCWJjb21fYXRhX3Jlc2V0X2Jk KHByaXYtPmRtYXRzayk7CisKKwkvKiBMb2NhbEJ1cyB1bmxvY2sqLworCWNsZWFyX2JpdCgwLCAm cGF0YV9tcGM1Mnh4X2F0YV9kbWFfbG9jayk7CisKKwlwcml2LT53YWl0aW5nX2Zvcl9kbWEgPSAw OworCisJLyogQ2hlY2sgRklGTyBpcyBPSy4uLiAqLworCWlmKGluXzgoJnByaXYtPmF0YV9yZWdz LT5maWZvX3N0YXR1cykgJiBNUEM1Mnh4X0FUQV9GSUZPU1RBVF9FUlJPUikKKwkJZGV2X2FsZXJ0 KGFwLT5kZXYsICIlczogRklGTyBlcnJvciBkZXRlY3RlZDogMHglMDJ4IVxuIiwKKwkJCV9fZnVu Y19fLCBpbl84KCZwcml2LT5hdGFfcmVncy0+Zmlmb19zdGF0dXMpKTsKK30KKworc3RhdGljIHU4 CittcGM1Mnh4X2JtZG1hX3N0YXR1cyhzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXN0cnVjdCBt cGM1Mnh4X2F0YV9wcml2ICpwcml2ID0gYXAtPmhvc3QtPnByaXZhdGVfZGF0YTsKKworCS8qIENo ZWNrIEZJRk8gaXMgT0suLi4gKi8KKwlpZihpbl84KCZwcml2LT5hdGFfcmVncy0+Zmlmb19zdGF0 dXMpICYgTVBDNTJ4eF9BVEFfRklGT1NUQVRfRVJST1IpIHsKKwkJZGV2X2FsZXJ0KGFwLT5kZXYs ICIlczogRklGTyBlcnJvciBkZXRlY3RlZDogMHglMDJ4IVxuIiwKKwkJCV9fZnVuY19fLCBpbl84 KCZwcml2LT5hdGFfcmVncy0+Zmlmb19zdGF0dXMpKTsKKwkJcmV0dXJuIHByaXYtPndhaXRpbmdf Zm9yX2RtYSB8IEFUQV9ETUFfRVJSOworCX0KKworCXJldHVybiBwcml2LT53YWl0aW5nX2Zvcl9k bWE7Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdAorbXBjNTJ4eF9hdGFfdGFza19pcnEoaW50IGly cSwgdm9pZCAqdnByaXYpCit7CisJc3RydWN0IG1wYzUyeHhfYXRhX3ByaXYgKnByaXYgPSB2cHJp djsKKwlwcml2LT53YWl0aW5nX2Zvcl9kbWEgfD0gQVRBX0RNQV9JTlRSOworCisJcmV0dXJuIElS UV9IQU5ETEVEOworfQorCiBzdGF0aWMgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBtcGM1Mnh4 X2F0YV9zaHQgPSB7CiAJQVRBX1BJT19TSFQoRFJWX05BTUUpLAogfTsKIAogc3RhdGljIHN0cnVj dCBhdGFfcG9ydF9vcGVyYXRpb25zIG1wYzUyeHhfYXRhX3BvcnRfb3BzID0gewogCS5pbmhlcml0 cwkJPSAmYXRhX3NmZl9wb3J0X29wcywKLQkuc2ZmX2Rldl9zZWxlY3QJCT0gbXBjNTJ4eF9hdGFf ZGV2X3NlbGVjdCwKLQkuY2FibGVfZGV0ZWN0CQk9IGF0YV9jYWJsZV80MHdpcmUsCisKIAkuc2V0 X3Bpb21vZGUJCT0gbXBjNTJ4eF9hdGFfc2V0X3Bpb21vZGUsCi0JLnBvc3RfaW50ZXJuYWxfY21k CT0gQVRBX09QX05VTEwsCisJLnNldF9kbWFtb2RlCQk9IG1wYzUyeHhfYXRhX3NldF9kbWFtb2Rl LAorCS5zZmZfZGV2X3NlbGVjdAkJPSBtcGM1Mnh4X2F0YV9kZXZfc2VsZWN0LAorCisJLmJtZG1h X3NldHVwCQk9IG1wYzUyeHhfYm1kbWFfc2V0dXAsCisJLmJtZG1hX3N0YXJ0CQk9IG1wYzUyeHhf Ym1kbWFfc3RhcnQsCisJLmJtZG1hX3N0b3AJCT0gbXBjNTJ4eF9ibWRtYV9zdG9wLAorCS5ibWRt YV9zdGF0dXMJCT0gbXBjNTJ4eF9ibWRtYV9zdGF0dXMsCisKKwkucWNfcHJlcAkJPSBhdGFfbm9v cF9xY19wcmVwLAogfTsKIAogc3RhdGljIGludCBfX2RldmluaXQKQEAgLTI4MSw5ICs2NDMsMTEg QEAgbXBjNTJ4eF9hdGFfaW5pdF9vbmUoc3RydWN0IGRldmljZSAqZGV2LAogCiAJYXAgPSBob3N0 LT5wb3J0c1swXTsKIAlhcC0+ZmxhZ3MJCXw9IEFUQV9GTEFHX1NMQVZFX1BPU1M7Ci0JYXAtPnBp b19tYXNrCQk9IDB4MWY7CS8qIFVwIHRvIFBJTzQgKi8KLQlhcC0+bXdkbWFfbWFzawkJPSAweDAw OwkvKiBObyBNV0RNQSAgICovCi0JYXAtPnVkbWFfbWFzawkJPSAweDAwOwkvKiBObyBVRE1BICAg ICovCisJYXAtPnBpb19tYXNrCQk9IEFUQV9QSU80OwkvKiBVcCB0byBQSU80ICovCisjaWZkZWYg Q09ORklHX1BBVEFfTVBDNTJ4eF9ETUEKKwlhcC0+bXdkbWFfbWFzawkJPSBBVEFfTVdETUEyOwkv KiBVcCB0byBNV0RNQTIgKi8KKwlhcC0+dWRtYV9tYXNrCQk9IEFUQV9VRE1BMjsJLyogVXAgdG8g VURNQTIgKi8KKyNlbmRpZgogCWFwLT5vcHMJCQk9ICZtcGM1Mnh4X2F0YV9wb3J0X29wczsKIAlo b3N0LT5wcml2YXRlX2RhdGEJPSBwcml2OwogCkBAIC0zMzMsNyArNjk3LDcgQEAgbXBjNTJ4eF9h dGFfcHJvYmUoc3RydWN0IG9mX2RldmljZSAqb3AsIAogCWludCBhdGFfaXJxOwogCXN0cnVjdCBt cGM1Mnh4X2F0YSBfX2lvbWVtICphdGFfcmVnczsKIAlzdHJ1Y3QgbXBjNTJ4eF9hdGFfcHJpdiAq cHJpdjsKLQlpbnQgcnY7CisJaW50IHJ2LCByZXQsIHRhc2tfaXJxOwogCiAJLyogR2V0IGlwYiBm cmVxdWVuY3kgKi8KIAlpcGJfZnJlcSA9IG1wYzUyeHhfZmluZF9pcGJfZnJlcShvcC0+bm9kZSk7 CkBAIC0zODksOCArNzUzLDM0IEBAIG1wYzUyeHhfYXRhX3Byb2JlKHN0cnVjdCBvZl9kZXZpY2Ug Km9wLCAKIAogCXByaXYtPmlwYl9wZXJpb2QgPSAxMDAwMDAwMDAwIC8gKGlwYl9mcmVxIC8gMTAw MCk7CiAJcHJpdi0+YXRhX3JlZ3MgPSBhdGFfcmVnczsKKwlwcml2LT5hdGFfcmVnc19wYSA9IHJl c19tZW0uc3RhcnQ7CiAJcHJpdi0+YXRhX2lycSA9IGF0YV9pcnE7CiAJcHJpdi0+Y3NlbCA9IC0x OworCXByaXYtPm1wYzUyeHhfYXRhX2RtYV9sYXN0X3dyaXRlID0gLTE7CisKKwlpZiAoaXBiX2Zy ZXEvMTAwMDAwMCA9PSA2NikgeworCQlwcml2LT5tZG1hc3BlYyA9IG1kbWFzcGVjNjY7CisJCXBy aXYtPnVkbWFzcGVjID0gdWRtYXNwZWM2NjsKKwl9IGVsc2UgeworCQlwcml2LT5tZG1hc3BlYyA9 IG1kbWFzcGVjMTMyOworCQlwcml2LT51ZG1hc3BlYyA9IHVkbWFzcGVjMTMyOworCX0KKworCXBh dGFfbXBjNTJ4eF9hdGFfZG1hX2xvY2sgPSAwOworCXByaXYtPmRtYXRzayA9IGJjb21fYXRhX2lu aXQoTUFYX0RNQV9CVUZGRVJTLCBNQVhfRE1BX0JVRkZFUl9TSVpFKTsKKwlwYXRhX21wYzUyeHhf YXRhX2RtYV90YXNrID0gcHJpdi0+ZG1hdHNrOworCWlmICghcHJpdi0+ZG1hdHNrKSB7CisJCWRl dl9hbGVydCgmb3AtPmRldiwgIkZhaWxlZCB0byBpbml0aWFsaXplIEJlc3RDb21tIHRhc2shXG4i KTsKKwkJcnYgPSAtRU5PTUVNOworCQlnb3RvIGVycjsKKwl9CisKKwl0YXNrX2lycSA9IGJjb21f Z2V0X3Rhc2tfaXJxKHByaXYtPmRtYXRzayk7CisJcmV0ID0gcmVxdWVzdF9pcnEodGFza19pcnEs ICZtcGM1Mnh4X2F0YV90YXNrX2lycSwgSVJRRl9ESVNBQkxFRCwKKwkJCQkiQVRBIHRhc2siLCBw cml2KTsKKwlpZiAocmV0KQorCQlkZXZfYWxlcnQoJm9wLT5kZXYsICJyZXF1ZXN0X2lycSBmYWls ZWQgd2l0aDogIgorCQkJCQkiJWlcbiIsIHJldCk7CiAKIAkvKiBJbml0IHRoZSBodyAqLwogCXJ2 ID0gbXBjNTJ4eF9hdGFfaHdfaW5pdChwcml2KTsK ------=_Part_9610_21545051.1215099327122--