From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from wf-out-1314.google.com (wf-out-1314.google.com [209.85.200.174]) by ozlabs.org (Postfix) with ESMTP id C6E3ADDEF1 for ; Wed, 13 Aug 2008 19:07:05 +1000 (EST) Received: by wf-out-1314.google.com with SMTP id 24so5668851wfg.15 for ; Wed, 13 Aug 2008 02:07:04 -0700 (PDT) Message-ID: <792f5f410808130207t6ef3c3ddxeff0ad0debb39242@mail.gmail.com> Date: Wed, 13 Aug 2008 10:07:03 +0100 From: "Tim Yamin" Sender: plasmaroo@gmail.com To: "Grant Likely" Subject: Re: [PATCH]: [MPC5200] Add ATA DMA support In-Reply-To: <20080813061135.GH17587@secretlab.ca> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_62972_14054438.1218618423955" References: <792f5f410808120730j7b4be4f2n7a40de880178ccca@mail.gmail.com> <792f5f410808120830v311e0446kc8fddfb97d0b9ea6@mail.gmail.com> <792f5f410808122257t3711eb2lfc1e02bacade16a3@mail.gmail.com> <792f5f410808122306u478b3ere8167016ef892323@mail.gmail.com> <20080813061135.GH17587@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_62972_14054438.1218618423955 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline On Wed, Aug 13, 2008 at 7:11 AM, Grant Likely wrote: > Sounds good to me. You will get more testers that way. I can pick it > up for -next if everything else looks good. Here are the new patches; tested against 2.6.27-rc3. Thanks, Tim ------=_Part_62972_14054438.1218618423955 Content-Type: text/x-diff; name=bestcomm-ata-fixes.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fjtpxea20 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_62972_14054438.1218618423955 Content-Type: text/x-diff; name=pata_mpc52xx-add-dma.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fjtpxk7i1 Content-Disposition: attachment; filename=pata_mpc52xx-add-dma.patch VGhpcyBwYXRjaCBhZGRzIE1ETUEvVURNQSBzdXBwb3J0ICh1c2luZyBCZXN0Q29tbSBmb3IgRE1B KSBvbiB0aGUgTVBDNTIwMApwbGF0Zm9ybS4gUGF0Y2ggcmVxdWlyZXMgdGhlIEFUQSBCZXN0Q29t bSBmaXhlcyB0byBmdW5jdGlvbiBwcm9wZXJseS4KCkJhc2VkIGhlYXZpbHkgb24gcHJldmlvdXMg d29yayBieSBGcmVlc2NhbGUgKEJlcm5hcmQgS3VobiwgSm9obiBSaWdieSkKYW5kIERvbWVuIFB1 bmNlci4KClVzaW5nIGEgU2FuRGlzayBFeHRyZW1lIElWIENGIGNhcmQgSSBnZXQgcmVhZCBzcGVl ZHMgb2YgYXBwcm94aW1hdGVseQoyNi43MCBNQi9zZWMuCgpDb21tZW50cyBhbmQgdGVzdGluZyB3 b3VsZCBvZiBjb3Vyc2UgYmUgdmVyeSB3ZWxjb21lLgoKVGhhbmtzLAoKU2lnbmVkLW9mZi1ieTog VGltIFlhbWluIDxwbGFzbUByb28ubWUudWs+CgpkaWZmIC11cnAgbGludXgtMi42LjI3LXJjMy9h cmNoL3Bvd2VycGMvc3lzZGV2L2Jlc3Rjb21tL2Jlc3Rjb21tLmMgbGludXgtMi42LjI3LXJjMy1h dGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9iZXN0Y29tbS9iZXN0Y29tbS5jCi0tLSBsaW51eC0yLjYu MjctcmMzL2FyY2gvcG93ZXJwYy9zeXNkZXYvYmVzdGNvbW0vYmVzdGNvbW0uYwkyMDA4LTA0LTE3 IDAzOjQ5OjQ0LjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjI3LXJjMy1hdGEvYXJjaC9w b3dlcnBjL3N5c2Rldi9iZXN0Y29tbS9iZXN0Y29tbS5jCTIwMDgtMDctMDMgMTY6MTc6MDUuMDAw MDAwMDAwICswMTAwCkBAIC0zMzAsMTEgKzMzMCwxNiBAQCBiY29tX2VuZ2luZV9pbml0KHZvaWQp CiAJLyogSW5pdCAnYWx3YXlzJyBpbml0aWF0b3IgKi8KIAlvdXRfOCgmYmNvbV9lbmctPnJlZ3Mt PmlwcltCQ09NX0lOSVRJQVRPUl9BTFdBWVNdLCBCQ09NX0lQUl9BTFdBWVMpOwogCisJLyogSWYg QVRBIERNQSBpcyBlbmFibGVkLCBhbHdheXMgdHVybiBwcmVmZXRjaCBvZmYgKGl0IGJyZWFrcyB0 aGluZ3MpICovCisjaWZuZGVmIENPTkZJR19QQVRBX01QQzUyeHhfRE1BCiAJLyogRGlzYWJsZSBD T01NIEJ1cyBQcmVmZXRjaCBvbiB0aGUgb3JpZ2luYWwgNTIwMDsgaXQncyBicm9rZW4gKi8KIAlp ZiAoKG1mc3ByKFNQUk5fU1ZSKSAmIE1QQzUyMDBfU1ZSX01BU0spID09IE1QQzUyMDBfU1ZSKSB7 CisjZW5kaWYKIAkJcmVndmFsID0gaW5fYmUxNigmYmNvbV9lbmctPnJlZ3MtPlB0ZENudHJsKTsK IAkJb3V0X2JlMTYoJmJjb21fZW5nLT5yZWdzLT5QdGRDbnRybCwgIHJlZ3ZhbCB8IDEpOworI2lm bmRlZiBDT05GSUdfUEFUQV9NUEM1Mnh4X0RNQQogCX0KKyNlbmRpZgogCiAJLyogSW5pdCBsb2Nr ICovCiAJc3Bpbl9sb2NrX2luaXQoJmJjb21fZW5nLT5sb2NrKTsKZGlmZiAtdXJwIGxpbnV4LTIu Ni4yNy1yYzMvZHJpdmVycy9hdGEvS2NvbmZpZyBsaW51eC0yLjYuMjctcmMzLWF0YS9kcml2ZXJz L2F0YS9LY29uZmlnCi0tLSBsaW51eC0yLjYuMjctcmMzL2RyaXZlcnMvYXRhL0tjb25maWcJMjAw OC0wNy0wMyAxMzowNjozNS4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi4yNy1yYzMtYXRh L2RyaXZlcnMvYXRhL0tjb25maWcJMjAwOC0wNy0wMyAxNjoxNjozMi4wMDAwMDAwMDAgKzAxMDAK QEAgLTQ2Miw2ICs0NjIsMTUgQEAgY29uZmlnIFBBVEFfTVBDNTJ4eAogCiAJICBJZiB1bnN1cmUs IHNheSBOLgogCitjb25maWcgUEFUQV9NUEM1Mnh4X0RNQQorCWJvb2wgIkZyZWVzY2FsZSBNUEM1 Mnh4IFNvQyBpbnRlcm5hbCBJREUgRE1BIChFeHBlcmltZW50YWwpIgorCWRlcGVuZHMgb24gUEFU QV9NUEM1Mnh4CisJaGVscAorCSAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBETUEg b24gdGhlIE1QQzUyeHggU29DIFBBVEEKKwkgIGNvbnRyb2xsZXIuCisKKwkgIElmIHVuc3VyZSwg c2F5IE4uCisKIGNvbmZpZyBQQVRBX01QSUlYCiAJdHJpc3RhdGUgIkludGVsIFBBVEEgTVBJSVgg c3VwcG9ydCIKIAlkZXBlbmRzIG9uIFBDSQpkaWZmIC11cnAgbGludXgtMi42LjI3LXJjMy9kcml2 ZXJzL2F0YS9wYXRhX21wYzUyeHguYyBsaW51eC0yLjYuMjctcmMzLWF0YS9kcml2ZXJzL2F0YS9w YXRhX21wYzUyeHguYwotLS0gbGludXgtMi42LjI3LXJjMy9kcml2ZXJzL2F0YS9wYXRhX21wYzUy eHguYwkyMDA4LTA3LTAzIDEzOjA2OjM1LjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjI3 LXJjMy1hdGEvZHJpdmVycy9hdGEvcGF0YV9tcGM1Mnh4LmMJMjAwOC0wNy0wMyAxNjoxNjozMi4w MDAwMDAwMDAgKzAxMDAKQEAgLTYsNiArNiw5IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU3ls dmFpbiBNdW5hdXQgPHRudEAyNDZ0TnQuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDAzIE1pcHN5 cyAtIEJlbmphbWluIEhlcnJlbnNjaG1pZHQKICAqCisgKiBVRE1BIHN1cHBvcnQgYmFzZWQgb24g cGF0Y2hlcyBieSBGcmVlc2NhbGUgKEJlcm5hcmQgS3VobiwgSm9obiBSaWdieSksCisgKiBEb21l biBQdW5jZXIgYW5kIFRpbSBZYW1pbi4KKyAqCiAgKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICogdmVyc2lv biAyLiBUaGlzIHByb2dyYW0gaXMgbGljZW5zZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50 eSBvZiBhbnkKICAqIGtpbmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpAQCAtMTcsMjgg KzIwLDQ3IEBACiAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNsdWRlIDxsaW51eC9saWJh dGEuaD4KICNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgogCisjaW5jbHVkZSA8YXNtL2Nh Y2hlZmx1c2guaD4KICNpbmNsdWRlIDxhc20vdHlwZXMuaD4KICNpbmNsdWRlIDxhc20vcHJvbS5o PgogI2luY2x1ZGUgPGFzbS9tcGM1Mnh4Lmg+CiAKKyNpbmNsdWRlIDxzeXNkZXYvYmVzdGNvbW0v YmVzdGNvbW0uaD4KKyNpbmNsdWRlIDxzeXNkZXYvYmVzdGNvbW0vYmVzdGNvbW1fcHJpdi5oPgor I2luY2x1ZGUgPHN5c2Rldi9iZXN0Y29tbS9hdGEuaD4KIAogI2RlZmluZSBEUlZfTkFNRQkibXBj NTJ4eF9hdGEiCiAjZGVmaW5lIERSVl9WRVJTSU9OCSIwLjEuMiIKIAotCiAvKiBQcml2YXRlIHN0 cnVjdHVyZXMgdXNlZCBieSB0aGUgZHJpdmVyICovCiBzdHJ1Y3QgbXBjNTJ4eF9hdGFfdGltaW5n cyB7CiAJdTMyCXBpbzE7CiAJdTMyCXBpbzI7CisJdTMyCW1kbWExOworCXUzMgltZG1hMjsKKwl1 MzIJdWRtYTE7CisJdTMyCXVkbWEyOworCXUzMgl1ZG1hMzsKKwl1MzIJdWRtYTQ7CisJdTMyCXVk bWE1OworCWludAl1c2luZ191ZG1hOwogfTsKIAogc3RydWN0IG1wYzUyeHhfYXRhX3ByaXYgewog CXVuc2lnbmVkIGludAkJCWlwYl9wZXJpb2Q7CiAJc3RydWN0IG1wYzUyeHhfYXRhIF9faW9tZW0g KglhdGFfcmVnczsKKwlwaHlzX2FkZHJfdAkJCWF0YV9yZWdzX3BhOwogCWludAkJCQlhdGFfaXJx OwogCXN0cnVjdCBtcGM1Mnh4X2F0YV90aW1pbmdzCXRpbWluZ3NbMl07CiAJaW50CQkJCWNzZWw7 CisKKwkvKiBETUEgKi8KKwlzdHJ1Y3QgYmNvbV90YXNrCQkqZG1hdHNrOworCWNvbnN0IHN0cnVj dCB1ZG1hc3BlYwkJKnVkbWFzcGVjOworCWNvbnN0IHN0cnVjdCBtZG1hc3BlYwkJKm1kbWFzcGVj OworCWludCAJCQkJbXBjNTJ4eF9hdGFfZG1hX2xhc3Rfd3JpdGU7CisJaW50CQkJCXdhaXRpbmdf Zm9yX2RtYTsKIH07CiAKIApAQCAtNTMsNiArNzUsMTA3IEBAIHN0YXRpYyBjb25zdCBpbnQgYXRh c3BlY190YVs1XSAgICA9IHsgMzUKIAogI2RlZmluZSBDQUxDX0NMS0NZQyhjLHYpICgoKCh2KSso YyktMSkvKGMpKSkKIAorLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCisKKy8qIEFUQVBJLTQgTURNQSBz cGVjcyAoaW4gY2xvY2tzKSAqLworc3RydWN0IG1kbWFzcGVjIHsKKwl1MzIgdDBNOworCXUzMiB0 ZDsKKwl1MzIgdGg7CisJdTMyIHRqOworCXUzMiB0a3c7CisJdTMyIHRtOworCXUzMiB0bjsKK307 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWRtYXNwZWMgbWRtYXNwZWM2NlszXSA9IHsKKwl7IC50 ME0gPSAzMiwgLnRkID0gMTUsIC50aCA9IDIsIC50aiA9IDIsIC50a3cgPSAxNSwgLnRtID0gNCwg LnRuID0gMSB9LAorCXsgLnQwTSA9IDEwLCAudGQgPSA2LCAgLnRoID0gMSwgLnRqID0gMSwgLnRr dyA9IDQsICAudG0gPSAyLCAudG4gPSAxIH0sCisJeyAudDBNID0gOCwgIC50ZCA9IDUsICAudGgg PSAxLCAudGogPSAxLCAudGt3ID0gMiwgIC50bSA9IDIsIC50biA9IDEgfSwKK307CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgbWRtYXNwZWMgbWRtYXNwZWMxMzJbM10gPSB7CisJeyAudDBNID0gNjQs IC50ZCA9IDI5LCAudGggPSAzLCAudGogPSAzLCAudGt3ID0gMjksIC50bSA9IDcsIC50biA9IDIg fSwKKwl7IC50ME0gPSAyMCwgLnRkID0gMTEsIC50aCA9IDIsIC50aiA9IDEsIC50a3cgPSA3LCAg LnRtID0gNCwgLnRuID0gMSB9LAorCXsgLnQwTSA9IDE2LCAudGQgPSAxMCwgLnRoID0gMiwgLnRq ID0gMSwgLnRrdyA9IDQsICAudG0gPSA0LCAudG4gPSAxIH0sCit9OworCisvKiBBVEFQSS00IFVE TUEgc3BlY3MgKGluIGNsb2NrcykgKi8KK3N0cnVjdCB1ZG1hc3BlYyB7CisJdTMyIHRjeWM7CisJ dTMyIHQyY3ljOworCXUzMiB0ZHM7CisJdTMyIHRkaDsKKwl1MzIgdGR2czsKKwl1MzIgdGR2aDsK Kwl1MzIgdGZzOworCXUzMiB0bGk7CisJdTMyIHRtbGk7CisJdTMyIHRhejsKKwl1MzIgdHphaDsK Kwl1MzIgdGVudjsKKwl1MzIgdHNyOworCXUzMiB0cmZzOworCXUzMiB0cnA7CisJdTMyIHRhY2s7 CisJdTMyIHRzczsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdWRtYXNwZWMgdWRtYXNwZWM2 Nls2XSA9IHsKKwl7IC50Y3ljID0gOCwgIC50MmN5YyA9IDE2LCAudGRzICA9IDEsICAudGRoICA9 IDEsIC50ZHZzID0gNSwgIC50ZHZoID0gMSwKKwkgIC50ZnMgID0gMTYsIC50bGkgICA9IDEwLCAu dG1saSA9IDIsICAudGF6ICA9IDEsIC50emFoID0gMiwgIC50ZW52ID0gMiwKKwkgIC50c3IgID0g MywgIC50cmZzICA9IDUsICAudHJwICA9IDExLCAudGFjayA9IDIsIC50c3MgID0gNCwKKwl9LAor CXsgLnRjeWMgPSA1LCAgLnQyY3ljID0gMTEsIC50ZHMgID0gMSwgIC50ZGggID0gMSwgLnRkdnMg PSA0LCAgLnRkdmggPSAxLAorCSAgLnRmcyAgPSAxNCwgLnRsaSAgID0gMTAsIC50bWxpID0gMiwg IC50YXogID0gMSwgLnR6YWggPSAyLCAgLnRlbnYgPSAyLAorCSAgLnRzciAgPSAyLCAgLnRyZnMg ID0gNSwgIC50cnAgID0gOSwgIC50YWNrID0gMiwgLnRzcyAgPSA0LAorCX0sCisJeyAudGN5YyA9 IDQsICAudDJjeWMgPSA4LCAgLnRkcyAgPSAxLCAgLnRkaCAgPSAxLCAudGR2cyA9IDMsICAudGR2 aCA9IDEsCisJICAudGZzICA9IDEyLCAudGxpICAgPSAxMCwgLnRtbGkgPSAyLCAgLnRheiAgPSAx LCAudHphaCA9IDIsICAudGVudiA9IDIsCisJICAudHNyICA9IDIsICAudHJmcyAgPSA0LCAgLnRy cCAgPSA3LCAgLnRhY2sgPSAyLCAudHNzICA9IDQsCisJfSwKKwl7IC50Y3ljID0gMywgIC50MmN5 YyA9IDYsICAudGRzICA9IDEsICAudGRoICA9IDEsIC50ZHZzID0gMiwgIC50ZHZoID0gMSwKKwkg IC50ZnMgID0gOSwgIC50bGkgICA9IDcsICAudG1saSA9IDIsICAudGF6ICA9IDEsIC50emFoID0g MiwgIC50ZW52ID0gMiwKKwkgIC50c3IgID0gMiwgIC50cmZzICA9IDQsICAudHJwICA9IDcsICAu dGFjayA9IDIsIC50c3MgID0gNCwKKwl9LAorCXsgLnRjeWMgPSAyLCAgLnQyY3ljID0gNCwgIC50 ZHMgID0gMSwgIC50ZGggID0gMSwgLnRkdnMgPSAxLCAgLnRkdmggPSAxLAorCSAgLnRmcyAgPSA4 LCAgLnRsaSAgID0gOCwgIC50bWxpID0gMiwgIC50YXogID0gMSwgLnR6YWggPSAyLCAgLnRlbnYg PSAyLAorCSAgLnRzciAgPSAyLCAgLnRyZnMgID0gNCwgIC50cnAgID0gNywgIC50YWNrID0gMiwg LnRzcyAgPSA0LAorCX0sCisJeyAudGN5YyA9IDIsICAudDJjeWMgPSAyLCAgLnRkcyAgPSAxLCAg LnRkaCAgPSAxLCAudGR2cyA9IDEsICAudGR2aCA9IDEsCisJICAudGZzICA9IDYsICAudGxpICAg PSA1LCAgLnRtbGkgPSAyLCAgLnRheiAgPSAxLCAudHphaCA9IDIsICAudGVudiA9IDIsCisJICAu dHNyICA9IDIsICAudHJmcyAgPSA0LCAgLnRycCAgPSA2LCAgLnRhY2sgPSAyLCAudHNzICA9IDQs CisJfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdWRtYXNwZWMgdWRtYXNwZWMxMzJbNl0g PSB7CisJeyAudGN5YyA9IDE1LCAudDJjeWMgPSAzMSwgLnRkcyAgPSAyLCAgLnRkaCAgPSAxLCAu dGR2cyA9IDEwLCAudGR2aCA9IDEsCisJICAudGZzICA9IDMwLCAudGxpICAgPSAyMCwgLnRtbGkg PSAzLCAgLnRheiAgPSAyLCAudHphaCA9IDMsICAudGVudiA9IDMsCisJICAudHNyICA9IDcsICAu dHJmcyAgPSAxMCwgLnRycCAgPSAyMiwgLnRhY2sgPSAzLCAudHNzICA9IDcsCisJfSwKKwl7IC50 Y3ljID0gMTAsIC50MmN5YyA9IDIxLCAudGRzICA9IDIsICAudGRoICA9IDEsIC50ZHZzID0gNywg IC50ZHZoID0gMSwKKwkgIC50ZnMgID0gMjcsIC50bGkgICA9IDIwLCAudG1saSA9IDMsICAudGF6 ICA9IDIsIC50emFoID0gMywgIC50ZW52ID0gMywKKwkgIC50c3IgID0gNCwgIC50cmZzICA9IDEw LCAudHJwICA9IDE3LCAudGFjayA9IDMsIC50c3MgID0gNywKKwl9LAorCXsgLnRjeWMgPSA2LCAg LnQyY3ljID0gMTIsIC50ZHMgID0gMSwgIC50ZGggID0gMSwgLnRkdnMgPSA1LCAgLnRkdmggPSAx LAorCSAgLnRmcyAgPSAyMywgLnRsaSAgID0gMjAsIC50bWxpID0gMywgIC50YXogID0gMiwgLnR6 YWggPSAzLCAgLnRlbnYgPSAzLAorCSAgLnRzciAgPSAzLCAgLnRyZnMgID0gOCwgIC50cnAgID0g MTQsIC50YWNrID0gMywgLnRzcyAgPSA3LAorCX0sCisJeyAudGN5YyA9IDcsICAudDJjeWMgPSAx MiwgLnRkcyAgPSAxLCAgLnRkaCAgPSAxLCAudGR2cyA9IDMsICAudGR2aCA9IDEsCisJICAudGZz ICA9IDE1LCAudGxpICAgPSAxMywgLnRtbGkgPSAzLCAgLnRheiAgPSAyLCAudHphaCA9IDMsICAu dGVudiA9IDMsCisJICAudHNyICA9IDMsICAudHJmcyAgPSA4LCAgLnRycCAgPSAxNCwgLnRhY2sg PSAzLCAudHNzICA9IDcsCisJfSwKKwl7IC50Y3ljID0gMiwgIC50MmN5YyA9IDUsICAudGRzICA9 IDAsICAudGRoICA9IDAsIC50ZHZzID0gMSwgIC50ZHZoID0gMSwKKwkgIC50ZnMgID0gMTYsIC50 bGkgICA9IDE0LCAudG1saSA9IDIsICAudGF6ICA9IDEsIC50emFoID0gMiwgIC50ZW52ID0gMiwK KwkgIC50c3IgID0gMiwgIC50cmZzICA9IDcsICAudHJwICA9IDEzLCAudGFjayA9IDIsIC50c3Mg ID0gNiwKKwl9LAorCXsgLnRjeWMgPSAzLCAgLnQyY3ljID0gNiwgIC50ZHMgID0gMSwgIC50ZGgg ID0gMSwgLnRkdnMgPSAxLCAgLnRkdmggPSAxLAorCSAgLnRmcyAgPSAxMiwgLnRsaSAgID0gMTAs IC50bWxpID0gMywgIC50YXogID0gMiwgLnR6YWggPSAzLCAgLnRlbnYgPSAzLAorCSAgLnRzciAg PSAzLCAgLnRyZnMgID0gNywgIC50cnAgID0gMTIsIC50YWNrID0gMywgLnRzcyAgPSA3LAorCX0s Cit9OworCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAogLyogQml0IGRlZmluaXRpb25zIGluc2lk ZSB0aGUgcmVnaXN0ZXJzICovCiAjZGVmaW5lIE1QQzUyeHhfQVRBX0hPU1RDT05GX1NNUgkweDgw MDAwMDAwVUwgLyogU3RhdGUgbWFjaGluZSByZXNldCAqLwpAQCAtNjYsNiArMTg5LDcgQEAgc3Rh dGljIGNvbnN0IGludCBhdGFzcGVjX3RhWzVdICAgID0geyAzNQogI2RlZmluZSBNUEM1Mnh4X0FU QV9IT1NUU1RBVF9XRVJSCTB4MDEwMDAwMDBVTCAvKiBXcml0ZSBFcnJvciAqLwogCiAjZGVmaW5l IE1QQzUyeHhfQVRBX0ZJRk9TVEFUX0VNUFRZCTB4MDEgLyogRklGTyBFbXB0eSAqLworI2RlZmlu ZSBNUEM1Mnh4X0FUQV9GSUZPU1RBVF9FUlJPUgkweDQwIC8qIEZJRk8gRXJyb3IgKi8KIAogI2Rl ZmluZSBNUEM1Mnh4X0FUQV9ETUFNT0RFX1dSSVRFCTB4MDEgLyogV3JpdGUgRE1BICovCiAjZGVm aW5lIE1QQzUyeHhfQVRBX0RNQU1PREVfUkVBRAkweDAyIC8qIFJlYWQgRE1BICovCkBAIC03NSw2 ICsxOTksOCBAQCBzdGF0aWMgY29uc3QgaW50IGF0YXNwZWNfdGFbNV0gICAgPSB7IDM1CiAjZGVm aW5lIE1QQzUyeHhfQVRBX0RNQU1PREVfRlIJCTB4MjAgLyogRklGTyBSZXNldCAqLwogI2RlZmlu ZSBNUEM1Mnh4X0FUQV9ETUFNT0RFX0hVVAkJMHg0MCAvKiBIb3N0IFVETUEgYnVyc3QgdGVybWlu YXRlICovCiAKKyNkZWZpbmUgTUFYX0RNQV9CVUZGRVJTIDEyOAorI2RlZmluZSBNQVhfRE1BX0JV RkZFUl9TSVpFIDB4MjAwMDB1CiAKIC8qIFN0cnVjdHVyZSBvZiB0aGUgaGFyZHdhcmUgcmVnaXN0 ZXJzICovCiBzdHJ1Y3QgbXBjNTJ4eF9hdGEgewpAQCAtMTY1LDYgKzI5NCw0MSBAQCBtcGM1Mnh4 X2F0YV9jb21wdXRlX3Bpb190aW1pbmdzKHN0cnVjdCBtCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRp YyBpbnQKK21wYzUyeHhfYXRhX2NvbXB1dGVfbWRtYV90aW1pbmdzKHN0cnVjdCBtcGM1Mnh4X2F0 YV9wcml2ICpwcml2LCBpbnQgZGV2LCBpbnQgc3BlZWQpCit7CisJc3RydWN0IG1wYzUyeHhfYXRh X3RpbWluZ3MgKnRpbWluZyA9ICZwcml2LT50aW1pbmdzW2Rldl07CisJY29uc3Qgc3RydWN0IG1k bWFzcGVjICpzID0gJnByaXYtPm1kbWFzcGVjW3NwZWVkXTsKKworCWlmIChzcGVlZCA8IDAgfHwg c3BlZWQgPiAyKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXRpbWluZy0+bWRtYTEgPSAocy0+dDBN IDw8IDI0KSB8IChzLT50ZCA8PCAxNikgfCAocy0+dGt3IDw8IDgpIHwgKHMtPnRtKTsKKwl0aW1p bmctPm1kbWEyID0gKHMtPnRoIDw8IDI0KSB8IChzLT50aiA8PCAxNikgfCAocy0+dG4gPDwgOCk7 CisJdGltaW5nLT51c2luZ191ZG1hID0gMDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 CittcGM1Mnh4X2F0YV9jb21wdXRlX3VkbWFfdGltaW5ncyhzdHJ1Y3QgbXBjNTJ4eF9hdGFfcHJp diAqcHJpdiwgaW50IGRldiwgaW50IHNwZWVkKQoreworCXN0cnVjdCBtcGM1Mnh4X2F0YV90aW1p bmdzICp0aW1pbmcgPSAmcHJpdi0+dGltaW5nc1tkZXZdOworCWNvbnN0IHN0cnVjdCB1ZG1hc3Bl YyAqcyA9ICZwcml2LT51ZG1hc3BlY1tzcGVlZF07CisKKwlpZiAoc3BlZWQgPCAwIHx8IHNwZWVk ID4gMikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwl0aW1pbmctPnVkbWExID0gKHMtPnQyY3ljIDw8 IDI0KSB8IChzLT50Y3ljIDw8IDE2KSB8IChzLT50ZHMgPDwgOCkgfCAocy0+dGRoKTsKKwl0aW1p bmctPnVkbWEyID0gKHMtPnRkdnMgPDwgMjQpIHwgKHMtPnRkdmggPDwgMTYpIHwgKHMtPnRmcyA8 PCA4KSB8IChzLT50bGkpOworCXRpbWluZy0+dWRtYTMgPSAocy0+dG1saSA8PCAyNCkgfCAocy0+ dGF6IDw8IDE2KSB8IChzLT50ZW52IDw8IDgpIHwgKHMtPnRzcik7CisJdGltaW5nLT51ZG1hNCA9 IChzLT50c3MgPDwgMjQpIHwgKHMtPnRyZnMgPDwgMTYpIHwgKHMtPnRycCA8PCA4KSB8IChzLT50 YWNrKTsKKwl0aW1pbmctPnVkbWE1ID0gKHMtPnR6YWggPDwgMjQpOworCXRpbWluZy0+dXNpbmdf dWRtYSA9IDE7CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQKIG1wYzUyeHhfYXRhX2Fw cGx5X3RpbWluZ3Moc3RydWN0IG1wYzUyeHhfYXRhX3ByaXYgKnByaXYsIGludCBkZXZpY2UpCiB7 CkBAIC0xNzMsMTQgKzMzNywxMyBAQCBtcGM1Mnh4X2F0YV9hcHBseV90aW1pbmdzKHN0cnVjdCBt cGM1Mnh4CiAKIAlvdXRfYmUzMigmcmVncy0+cGlvMSwgIHRpbWluZy0+cGlvMSk7CiAJb3V0X2Jl MzIoJnJlZ3MtPnBpbzIsICB0aW1pbmctPnBpbzIpOwotCW91dF9iZTMyKCZyZWdzLT5tZG1hMSwg MCk7Ci0Jb3V0X2JlMzIoJnJlZ3MtPm1kbWEyLCAwKTsKLQlvdXRfYmUzMigmcmVncy0+dWRtYTEs IDApOwotCW91dF9iZTMyKCZyZWdzLT51ZG1hMiwgMCk7Ci0Jb3V0X2JlMzIoJnJlZ3MtPnVkbWEz LCAwKTsKLQlvdXRfYmUzMigmcmVncy0+dWRtYTQsIDApOwotCW91dF9iZTMyKCZyZWdzLT51ZG1h NSwgMCk7Ci0KKwlvdXRfYmUzMigmcmVncy0+bWRtYTEsIHRpbWluZy0+bWRtYTEpOworCW91dF9i ZTMyKCZyZWdzLT5tZG1hMiwgdGltaW5nLT5tZG1hMik7CisJb3V0X2JlMzIoJnJlZ3MtPnVkbWEx LCB0aW1pbmctPnVkbWExKTsKKwlvdXRfYmUzMigmcmVncy0+dWRtYTIsIHRpbWluZy0+dWRtYTIp OworCW91dF9iZTMyKCZyZWdzLT51ZG1hMywgdGltaW5nLT51ZG1hMyk7CisJb3V0X2JlMzIoJnJl Z3MtPnVkbWE0LCB0aW1pbmctPnVkbWE0KTsKKwlvdXRfYmUzMigmcmVncy0+dWRtYTUsIHRpbWlu Zy0+dWRtYTUpOwogCXByaXYtPmNzZWwgPSBkZXZpY2U7CiB9CiAKQEAgLTI0NSw2ICs0MDgsMjkg QEAgbXBjNTJ4eF9hdGFfc2V0X3Bpb21vZGUoc3RydWN0IGF0YV9wb3J0IAogCW1wYzUyeHhfYXRh X2FwcGx5X3RpbWluZ3MocHJpdiwgYWRldi0+ZGV2bm8pOwogfQogc3RhdGljIHZvaWQKK21wYzUy eHhfYXRhX3NldF9kbWFtb2RlKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNl ICphZGV2KQoreworCXN0cnVjdCBtcGM1Mnh4X2F0YV9wcml2ICpwcml2ID0gYXAtPmhvc3QtPnBy aXZhdGVfZGF0YTsKKwlpbnQgcnY7CisKKwlpZiAoYWRldi0+ZG1hX21vZGUgPj0gWEZFUl9VRE1B XzApIHsKKwkJaW50IGRtYSA9IGFkZXYtPmRtYV9tb2RlIC0gWEZFUl9VRE1BXzA7CisJCXJ2ID0g bXBjNTJ4eF9hdGFfY29tcHV0ZV91ZG1hX3RpbWluZ3MocHJpdiwgYWRldi0+ZGV2bm8sIGRtYSk7 CisJfSBlbHNlIHsKKwkJaW50IGRtYSA9IGFkZXYtPmRtYV9tb2RlIC0gWEZFUl9NV19ETUFfMDsK KwkJcnYgPSBtcGM1Mnh4X2F0YV9jb21wdXRlX21kbWFfdGltaW5ncyhwcml2LCBhZGV2LT5kZXZu bywgZG1hKTsKKwl9CisKKwlpZiAocnYpIHsKKwkJZGV2X2FsZXJ0KGFwLT5kZXYsCisJCQkiVHJ5 aW5nIHRvIHNlbGVjdCBpbnZhbGlkIERNQSBtb2RlICVkXG4iLAorCQkJYWRldi0+ZG1hX21vZGUp OworCQlyZXR1cm47CisJfQorCisJbXBjNTJ4eF9hdGFfYXBwbHlfdGltaW5ncyhwcml2LCBhZGV2 LT5kZXZubyk7Cit9CitzdGF0aWMgdm9pZAogbXBjNTJ4eF9hdGFfZGV2X3NlbGVjdChzdHJ1Y3Qg YXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgZGV2aWNlKQogewogCXN0cnVjdCBtcGM1Mnh4X2F0 YV9wcml2ICpwcml2ID0gYXAtPmhvc3QtPnByaXZhdGVfZGF0YTsKQEAgLTI1NSwxNiArNDQxLDE4 NyBAQCBtcGM1Mnh4X2F0YV9kZXZfc2VsZWN0KHN0cnVjdCBhdGFfcG9ydCAqCiAJYXRhX3NmZl9k ZXZfc2VsZWN0KGFwLGRldmljZSk7CiB9CiAKK3N0YXRpYyBpbnQKK21wYzUyeHhfYXRhX2J1aWxk X2RtYXRhYmxlKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpCit7CisJc3RydWN0IGF0YV9wb3J0 ICphcCA9IHFjLT5hcDsKKwlzdHJ1Y3QgbXBjNTJ4eF9hdGFfcHJpdiAqcHJpdiA9IGFwLT5ob3N0 LT5wcml2YXRlX2RhdGE7CisJdW5zaWduZWQgaW50IHJlYWQgPSAhKHFjLT50Zi5mbGFncyAmIEFU QV9URkxBR19XUklURSksIHNpOworCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CisJaW50IGNvdW50 ID0gMDsKKworCWlmIChyZWFkKQorCQliY29tX2F0YV9yeF9wcmVwYXJlKHByaXYtPmRtYXRzayk7 CisJZWxzZQorCQliY29tX2F0YV90eF9wcmVwYXJlKHByaXYtPmRtYXRzayk7CisKKwlmb3JfZWFj aF9zZyhxYy0+c2csIHNnLCBxYy0+bl9lbGVtLCBzaSkgeworCQlkbWFfYWRkcl90IGN1cl9hZGRy ID0gc2dfZG1hX2FkZHJlc3Moc2cpOworCQl1MzIgY3VyX2xlbiA9IHNnX2RtYV9sZW4oc2cpOwor CisJCXdoaWxlIChjdXJfbGVuKSB7CisJCQl1bnNpZ25lZCBpbnQgdGMgPSBtaW4oY3VyX2xlbiwg TUFYX0RNQV9CVUZGRVJfU0laRSk7CisJCQlzdHJ1Y3QgYmNvbV9hdGFfYmQgKmJkID0gKHN0cnVj dCBiY29tX2F0YV9iZCAqKSBiY29tX3ByZXBhcmVfbmV4dF9idWZmZXIocHJpdi0+ZG1hdHNrKTsK KworCQkJaWYgKHJlYWQpIHsKKwkJCQliZC0+c3RhdHVzID0gdGM7CisJCQkJYmQtPnNyY19wYSA9 IChfX2ZvcmNlIHUzMikgcHJpdi0+YXRhX3JlZ3NfcGEgKworCQkJCQlvZmZzZXRvZihzdHJ1Y3Qg bXBjNTJ4eF9hdGEsIGZpZm9fZGF0YSk7CisJCQkJYmQtPmRzdF9wYSA9IChfX2ZvcmNlIHUzMikg Y3VyX2FkZHI7CisJCQl9IGVsc2UgeworCQkJCWJkLT5zdGF0dXMgPSB0YzsKKwkJCQliZC0+c3Jj X3BhID0gKF9fZm9yY2UgdTMyKSBjdXJfYWRkcjsKKwkJCQliZC0+ZHN0X3BhID0gKF9fZm9yY2Ug dTMyKSBwcml2LT5hdGFfcmVnc19wYSArCisJCQkJCW9mZnNldG9mKHN0cnVjdCBtcGM1Mnh4X2F0 YSwgZmlmb19kYXRhKTsKKwkJCX0KKworCQkJYmNvbV9zdWJtaXRfbmV4dF9idWZmZXIocHJpdi0+ ZG1hdHNrLCBOVUxMKTsKKworCQkJY3VyX2FkZHIgKz0gdGM7CisJCQljdXJfbGVuIC09IHRjOwor CQkJY291bnQrKzsKKworCQkJaWYgKGNvdW50ID4gTUFYX0RNQV9CVUZGRVJTKSB7CisJCQkJZGV2 X2FsZXJ0KGFwLT5kZXYsICJkbWEgdGFibGUiCisJCQkJCSJ0b28gc21hbGxcbiIpOworCQkJCWdv dG8gdXNlX3Bpb19pbnN0ZWFkOworCQkJfQorCQl9CisJfQorCXJldHVybiAxOworCisgdXNlX3Bp b19pbnN0ZWFkOgorCWJjb21fYXRhX3Jlc2V0X2JkKHByaXYtPmRtYXRzayk7CisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyB2b2lkCittcGM1Mnh4X2JtZG1hX3NldHVwKHN0cnVjdCBhdGFfcXVldWVk X2NtZCAqcWMpCit7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IHFjLT5hcDsKKwlzdHJ1Y3QgbXBj NTJ4eF9hdGFfcHJpdiAqcHJpdiA9IGFwLT5ob3N0LT5wcml2YXRlX2RhdGE7CisJc3RydWN0IG1w YzUyeHhfYXRhIF9faW9tZW0gKnJlZ3MgPSBwcml2LT5hdGFfcmVnczsKKworCXVuc2lnbmVkIGlu dCByZWFkID0gIShxYy0+dGYuZmxhZ3MgJiBBVEFfVEZMQUdfV1JJVEUpOworCXU4IGRtYV9tb2Rl OworCisJaWYgKCFtcGM1Mnh4X2F0YV9idWlsZF9kbWF0YWJsZShxYykpCisJCWRldl9hbGVydChh cC0+ZGV2LCAiJXM6ICVpLCByZXR1cm4gMT9cbiIsCisJCQlfX2Z1bmNfXywgX19MSU5FX18pOwor CisJLyogQ2hlY2sgRklGTyBpcyBPSy4uLiAqLworCWlmKGluXzgoJnByaXYtPmF0YV9yZWdzLT5m aWZvX3N0YXR1cykgJiBNUEM1Mnh4X0FUQV9GSUZPU1RBVF9FUlJPUikKKwkJZGV2X2FsZXJ0KGFw LT5kZXYsICIlczogRklGTyBlcnJvciBkZXRlY3RlZDogMHglMDJ4IVxuIiwKKwkJCV9fZnVuY19f LCBpbl84KCZwcml2LT5hdGFfcmVncy0+Zmlmb19zdGF0dXMpKTsKKworCWlmIChyZWFkKSB7CisJ CWRtYV9tb2RlID0gTVBDNTJ4eF9BVEFfRE1BTU9ERV9JRSB8IE1QQzUyeHhfQVRBX0RNQU1PREVf UkVBRCB8CisJCQkJTVBDNTJ4eF9BVEFfRE1BTU9ERV9GRTsKKworCQkvKiBTZXR1cCBGSUZPIGlm IGRpcmVjdGlvbiBjaGFuZ2VkICovCisJCWlmIChwcml2LT5tcGM1Mnh4X2F0YV9kbWFfbGFzdF93 cml0ZSAhPSAwKSB7CisJCQlwcml2LT5tcGM1Mnh4X2F0YV9kbWFfbGFzdF93cml0ZSA9IDA7CisK KwkJCS8qIENvbmZpZ3VyZSBGSUZPIHdpdGggZ3JhbnVsYXJpdHkgdG8gNyAqLworCQkJb3V0Xzgo JnJlZ3MtPmZpZm9fY29udHJvbCwgNyk7CisJCQlvdXRfYmUxNigmcmVncy0+Zmlmb19hbGFybSwg MTI4KTsKKworCQkJLyogU2V0IEZJRk8gUmVzZXQgYml0IChGUikgKi8KKwkJCW91dF84KCZyZWdz LT5kbWFfbW9kZSwgTVBDNTJ4eF9BVEFfRE1BTU9ERV9GUik7CisJCX0KKwl9IGVsc2UgeworCQlk bWFfbW9kZSA9IE1QQzUyeHhfQVRBX0RNQU1PREVfSUUgfCBNUEM1Mnh4X0FUQV9ETUFNT0RFX1dS SVRFOworCisJCS8qIFNldHVwIEZJRk8gaWYgZGlyZWN0aW9uIGNoYW5nZWQgKi8KKwkJaWYgKHBy aXYtPm1wYzUyeHhfYXRhX2RtYV9sYXN0X3dyaXRlICE9IDEpIHsKKwkJCXByaXYtPm1wYzUyeHhf YXRhX2RtYV9sYXN0X3dyaXRlID0gMTsKKworCQkJLyogQ29uZmlndXJlIEZJRk8gd2l0aCBncmFu dWxhcml0eSB0byA0ICovCisJCQlvdXRfOCgmcmVncy0+Zmlmb19jb250cm9sLCA0KTsKKwkJCW91 dF9iZTE2KCZyZWdzLT5maWZvX2FsYXJtLCAxMjgpOworCQl9CisJfQorCisJaWYgKHByaXYtPnRp bWluZ3NbcWMtPmRldi0+ZGV2bm9dLnVzaW5nX3VkbWEpCisJCWRtYV9tb2RlIHw9IE1QQzUyeHhf QVRBX0RNQU1PREVfVURNQTsKKworCW91dF84KCZyZWdzLT5kbWFfbW9kZSwgZG1hX21vZGUpOwor CXByaXYtPndhaXRpbmdfZm9yX2RtYSA9IEFUQV9ETUFfQUNUSVZFOworCisJYXRhX3dhaXRfaWRs ZShhcCk7CisJYXAtPm9wcy0+c2ZmX2V4ZWNfY29tbWFuZChhcCwgJnFjLT50Zik7Cit9CisKK3N0 YXRpYyB2b2lkCittcGM1Mnh4X2JtZG1hX3N0YXJ0KHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMp Cit7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IHFjLT5hcDsKKwlzdHJ1Y3QgbXBjNTJ4eF9hdGFf cHJpdiAqcHJpdiA9IGFwLT5ob3N0LT5wcml2YXRlX2RhdGE7CisKKwliY29tX3NldF90YXNrX2F1 dG9fc3RhcnQocHJpdi0+ZG1hdHNrLT50YXNrbnVtLCBwcml2LT5kbWF0c2stPnRhc2tudW0pOwor CWJjb21fZW5hYmxlKHByaXYtPmRtYXRzayk7Cit9CisKK3N0YXRpYyB2b2lkCittcGM1Mnh4X2Jt ZG1hX3N0b3Aoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykKK3sKKwlzdHJ1Y3QgYXRhX3BvcnQg KmFwID0gcWMtPmFwOworCXN0cnVjdCBtcGM1Mnh4X2F0YV9wcml2ICpwcml2ID0gYXAtPmhvc3Qt PnByaXZhdGVfZGF0YTsKKworCWJjb21fZGlzYWJsZShwcml2LT5kbWF0c2spOworCWJjb21fYXRh X3Jlc2V0X2JkKHByaXYtPmRtYXRzayk7CisJcHJpdi0+d2FpdGluZ19mb3JfZG1hID0gMDsKKwor CS8qIENoZWNrIEZJRk8gaXMgT0suLi4gKi8KKwlpZihpbl84KCZwcml2LT5hdGFfcmVncy0+Zmlm b19zdGF0dXMpICYgTVBDNTJ4eF9BVEFfRklGT1NUQVRfRVJST1IpCisJCWRldl9hbGVydChhcC0+ ZGV2LCAiJXM6IEZJRk8gZXJyb3IgZGV0ZWN0ZWQ6IDB4JTAyeCFcbiIsCisJCQlfX2Z1bmNfXywg aW5fOCgmcHJpdi0+YXRhX3JlZ3MtPmZpZm9fc3RhdHVzKSk7Cit9CisKK3N0YXRpYyB1OAorbXBj NTJ4eF9ibWRtYV9zdGF0dXMoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwlzdHJ1Y3QgbXBjNTJ4 eF9hdGFfcHJpdiAqcHJpdiA9IGFwLT5ob3N0LT5wcml2YXRlX2RhdGE7CisKKwkvKiBDaGVjayBG SUZPIGlzIE9LLi4uICovCisJaWYoaW5fOCgmcHJpdi0+YXRhX3JlZ3MtPmZpZm9fc3RhdHVzKSAm IE1QQzUyeHhfQVRBX0ZJRk9TVEFUX0VSUk9SKSB7CisJCWRldl9hbGVydChhcC0+ZGV2LCAiJXM6 IEZJRk8gZXJyb3IgZGV0ZWN0ZWQ6IDB4JTAyeCFcbiIsCisJCQlfX2Z1bmNfXywgaW5fOCgmcHJp di0+YXRhX3JlZ3MtPmZpZm9fc3RhdHVzKSk7CisJCXJldHVybiBwcml2LT53YWl0aW5nX2Zvcl9k bWEgfCBBVEFfRE1BX0VSUjsKKwl9CisKKwlyZXR1cm4gcHJpdi0+d2FpdGluZ19mb3JfZG1hOwor fQorCitzdGF0aWMgaXJxcmV0dXJuX3QKK21wYzUyeHhfYXRhX3Rhc2tfaXJxKGludCBpcnEsIHZv aWQgKnZwcml2KQoreworCXN0cnVjdCBtcGM1Mnh4X2F0YV9wcml2ICpwcml2ID0gdnByaXY7CisJ d2hpbGUgKGJjb21fYnVmZmVyX2RvbmUocHJpdi0+ZG1hdHNrKSkKKwkJYmNvbV9yZXRyaWV2ZV9i dWZmZXIocHJpdi0+ZG1hdHNrLCBOVUxMLCBOVUxMKTsKKwkKKwlwcml2LT53YWl0aW5nX2Zvcl9k bWEgfD0gQVRBX0RNQV9JTlRSOworCisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCiBzdGF0aWMg c3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBtcGM1Mnh4X2F0YV9zaHQgPSB7CiAJQVRBX1BJT19T SFQoRFJWX05BTUUpLAogfTsKIAogc3RhdGljIHN0cnVjdCBhdGFfcG9ydF9vcGVyYXRpb25zIG1w YzUyeHhfYXRhX3BvcnRfb3BzID0gewogCS5pbmhlcml0cwkJPSAmYXRhX3NmZl9wb3J0X29wcywK LQkuc2ZmX2Rldl9zZWxlY3QJCT0gbXBjNTJ4eF9hdGFfZGV2X3NlbGVjdCwKLQkuY2FibGVfZGV0 ZWN0CQk9IGF0YV9jYWJsZV80MHdpcmUsCisKIAkuc2V0X3Bpb21vZGUJCT0gbXBjNTJ4eF9hdGFf c2V0X3Bpb21vZGUsCi0JLnBvc3RfaW50ZXJuYWxfY21kCT0gQVRBX09QX05VTEwsCisJLnNldF9k bWFtb2RlCQk9IG1wYzUyeHhfYXRhX3NldF9kbWFtb2RlLAorCS5zZmZfZGV2X3NlbGVjdAkJPSBt cGM1Mnh4X2F0YV9kZXZfc2VsZWN0LAorCisJLmJtZG1hX3NldHVwCQk9IG1wYzUyeHhfYm1kbWFf c2V0dXAsCisJLmJtZG1hX3N0YXJ0CQk9IG1wYzUyeHhfYm1kbWFfc3RhcnQsCisJLmJtZG1hX3N0 b3AJCT0gbXBjNTJ4eF9ibWRtYV9zdG9wLAorCS5ibWRtYV9zdGF0dXMJCT0gbXBjNTJ4eF9ibWRt YV9zdGF0dXMsCisKKwkucWNfcHJlcAkJPSBhdGFfbm9vcF9xY19wcmVwLAogfTsKIAogc3RhdGlj IGludCBfX2RldmluaXQKQEAgLTI4MSw5ICs2NDMsMTEgQEAgbXBjNTJ4eF9hdGFfaW5pdF9vbmUo c3RydWN0IGRldmljZSAqZGV2LAogCiAJYXAgPSBob3N0LT5wb3J0c1swXTsKIAlhcC0+ZmxhZ3MJ CXw9IEFUQV9GTEFHX1NMQVZFX1BPU1M7Ci0JYXAtPnBpb19tYXNrCQk9IDB4MWY7CS8qIFVwIHRv IFBJTzQgKi8KLQlhcC0+bXdkbWFfbWFzawkJPSAweDAwOwkvKiBObyBNV0RNQSAgICovCi0JYXAt PnVkbWFfbWFzawkJPSAweDAwOwkvKiBObyBVRE1BICAgICovCisJYXAtPnBpb19tYXNrCQk9IEFU QV9QSU80OwkvKiBVcCB0byBQSU80ICovCisjaWZkZWYgQ09ORklHX1BBVEFfTVBDNTJ4eF9ETUEK KwlhcC0+bXdkbWFfbWFzawkJPSBBVEFfTVdETUEyOwkvKiBVcCB0byBNV0RNQTIgKi8KKwlhcC0+ dWRtYV9tYXNrCQk9IEFUQV9VRE1BMjsJLyogVXAgdG8gVURNQTIgKi8KKyNlbmRpZgogCWFwLT5v cHMJCQk9ICZtcGM1Mnh4X2F0YV9wb3J0X29wczsKIAlob3N0LT5wcml2YXRlX2RhdGEJPSBwcml2 OwogCkBAIC0zMzMsNyArNjk3LDcgQEAgbXBjNTJ4eF9hdGFfcHJvYmUoc3RydWN0IG9mX2Rldmlj ZSAqb3AsIAogCWludCBhdGFfaXJxOwogCXN0cnVjdCBtcGM1Mnh4X2F0YSBfX2lvbWVtICphdGFf cmVnczsKIAlzdHJ1Y3QgbXBjNTJ4eF9hdGFfcHJpdiAqcHJpdjsKLQlpbnQgcnY7CisJaW50IHJ2 LCByZXQsIHRhc2tfaXJxOwogCiAJLyogR2V0IGlwYiBmcmVxdWVuY3kgKi8KIAlpcGJfZnJlcSA9 IG1wYzUyeHhfZmluZF9pcGJfZnJlcShvcC0+bm9kZSk7CkBAIC0zODksOCArNzUzLDMyIEBAIG1w YzUyeHhfYXRhX3Byb2JlKHN0cnVjdCBvZl9kZXZpY2UgKm9wLCAKIAogCXByaXYtPmlwYl9wZXJp b2QgPSAxMDAwMDAwMDAwIC8gKGlwYl9mcmVxIC8gMTAwMCk7CiAJcHJpdi0+YXRhX3JlZ3MgPSBh dGFfcmVnczsKKwlwcml2LT5hdGFfcmVnc19wYSA9IHJlc19tZW0uc3RhcnQ7CiAJcHJpdi0+YXRh X2lycSA9IGF0YV9pcnE7CiAJcHJpdi0+Y3NlbCA9IC0xOworCXByaXYtPm1wYzUyeHhfYXRhX2Rt YV9sYXN0X3dyaXRlID0gLTE7CisKKwlpZiAoaXBiX2ZyZXEvMTAwMDAwMCA9PSA2NikgeworCQlw cml2LT5tZG1hc3BlYyA9IG1kbWFzcGVjNjY7CisJCXByaXYtPnVkbWFzcGVjID0gdWRtYXNwZWM2 NjsKKwl9IGVsc2UgeworCQlwcml2LT5tZG1hc3BlYyA9IG1kbWFzcGVjMTMyOworCQlwcml2LT51 ZG1hc3BlYyA9IHVkbWFzcGVjMTMyOworCX0KKworCXByaXYtPmRtYXRzayA9IGJjb21fYXRhX2lu aXQoTUFYX0RNQV9CVUZGRVJTLCBNQVhfRE1BX0JVRkZFUl9TSVpFKTsKKwlpZiAoIXByaXYtPmRt YXRzaykgeworCQlkZXZfYWxlcnQoJm9wLT5kZXYsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBCZXN0 Q29tbSB0YXNrIVxuIik7CisJCXJ2ID0gLUVOT01FTTsKKwkJZ290byBlcnI7CisJfQorCisJdGFz a19pcnEgPSBiY29tX2dldF90YXNrX2lycShwcml2LT5kbWF0c2spOworCXJldCA9IHJlcXVlc3Rf aXJxKHRhc2tfaXJxLCAmbXBjNTJ4eF9hdGFfdGFza19pcnEsIElSUUZfRElTQUJMRUQsCisJCQkJ IkFUQSB0YXNrIiwgcHJpdik7CisJaWYgKHJldCkKKwkJZGV2X2FsZXJ0KCZvcC0+ZGV2LCAicmVx dWVzdF9pcnEgZmFpbGVkIHdpdGg6ICIKKwkJCQkJIiVpXG4iLCByZXQpOwogCiAJLyogSW5pdCB0 aGUgaHcgKi8KIAlydiA9IG1wYzUyeHhfYXRhX2h3X2luaXQocHJpdik7Cg== ------=_Part_62972_14054438.1218618423955--