From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 36/51] drm/amd/powerplay: Add CG and PG support for tonga Date: Thu, 12 Nov 2015 01:18:26 -0500 Message-ID: <1447309121-2480-37-git-send-email-alexander.deucher@amd.com> References: <1447309121-2480-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qg0-f47.google.com (mail-qg0-f47.google.com [209.85.192.47]) by gabe.freedesktop.org (Postfix) with ESMTPS id C600F7A12C for ; Wed, 11 Nov 2015 22:19:22 -0800 (PST) Received: by qgea14 with SMTP id a14so40617673qge.0 for ; Wed, 11 Nov 2015 22:19:22 -0800 (PST) In-Reply-To: <1447309121-2480-1-git-send-email-alexander.deucher@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Rex Zhu List-Id: dri-devel@lists.freedesktop.org RnJvbTogUmV4IFpodSA8UmV4LlpodUBhbWQuY29tPgoKSW1wbGVtZW50IGNsb2NrIGFuZCBwb3dl ciBnYXRpbmcgc3VwcG9ydCBmb3IgdG9uZ2EuICBPbiBUb25nYQp0aGlzIGlzIGhhbmRsZXMgYnkg dGhlIFNNVSByYXRoZXIgdGhhbiBkaXJlY3QgcmVnaXN0ZXIgc2V0dGluZ3MKaW4gdGhlIGRyaXZl ci4KClNpZ25lZC1vZmYtYnk6IFJleCBaaHUgPFJleC5aaHVAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6 IEphbW15IFpob3UgPEphbW15Llpob3VAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IEFsZXggRGV1Y2hl ciA8YWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9od21nci9NYWtlZmlsZSAgICAgICB8ICAgMiArLQogLi4uL2FtZC9wb3dlcnBsYXkv aHdtZ3IvdG9uZ2FfY2xvY2twb3dlcmdhdGluZy5jICAgfCAzNTAgKysrKysrKysrKysrKysrKysr KysrCiAuLi4vYW1kL3Bvd2VycGxheS9od21nci90b25nYV9jbG9ja3Bvd2VyZ2F0aW5nLmggICB8 ICAzNiArKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3RvbmdhX2h3bWdy LmMgIHwgIDYzICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3Rvbmdh X2h3bWdyLmggIHwgICA0ICsKIDUgZmlsZXMgY2hhbmdlZCwgNDQwIGluc2VydGlvbnMoKyksIDE1 IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L2h3bWdyL3RvbmdhX2Nsb2NrcG93ZXJnYXRpbmcuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3RvbmdhX2Nsb2NrcG93ZXJnYXRp bmcuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL01h a2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvTWFrZWZpbGUKaW5k ZXggYzc4ZTM4Yy4uNmYzODgxMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dl cnBsYXkvaHdtZ3IvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkv aHdtZ3IvTWFrZWZpbGUKQEAgLTcsNyArNyw3IEBAIEhBUkRXQVJFX01HUiA9IGh3bWdyLm8gcHJv Y2Vzc3BwdGFibGVzLm8gZnVuY3Rpb250YWJsZXMubyBcCiAgICAgICAgICAgICAgICBjel9jbG9j a3Bvd2VyZ2F0aW5nLm8gXAogCSAgICAgICB0b25nYV9wcm9jZXNzcHB0YWJsZXMubyBwcGF0b21j dHJsLm8gXAogICAgICAgICAgICAgICAgdG9uZ2FfaHdtZ3IubyAJcHBwY2llbGFuZXMubyBcCi0g ICAgICAgICAgICAgICBmaWppX3Bvd2VydHVuZS5vIGZpamlfaHdtZ3IubworICAgICAgICAgICAg ICAgZmlqaV9wb3dlcnR1bmUubyBmaWppX2h3bWdyLm8gdG9uZ2FfY2xvY2twb3dlcmdhdGluZy5v CiAKIEFNRF9QUF9IV01HUiA9ICQoYWRkcHJlZml4ICQoQU1EX1BQX1BBVEgpL2h3bWdyLywkKEhB UkRXQVJFX01HUikpCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5 L2h3bWdyL3RvbmdhX2Nsb2NrcG93ZXJnYXRpbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L2h3bWdyL3RvbmdhX2Nsb2NrcG93ZXJnYXRpbmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5lNThkMDM4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvdG9uZ2FfY2xvY2twb3dlcmdhdGluZy5jCkBAIC0wLDAg KzEsMzUwIEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywg SW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlS SUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElO R1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaW5jbHVkZSAiaHdtZ3IuaCIKKyNpbmNs dWRlICJ0b25nYV9jbG9ja3Bvd2VyZ2F0aW5nLmgiCisjaW5jbHVkZSAidG9uZ2FfcHBzbWMuaCIK KyNpbmNsdWRlICJ0b25nYV9od21nci5oIgorCitpbnQgdG9uZ2FfcGhtX3Bvd2VyZG93bl91dmQo c3RydWN0IHBwX2h3bWdyICpod21ncikKK3sKKwlpZiAocGhtX2NmX3dhbnRfdXZkX3Bvd2VyX2dh dGluZyhod21ncikpCisJCXJldHVybiBzbXVtX3NlbmRfbXNnX3RvX3NtYyhod21nci0+c211bWdy LAorCQkJCQkJICAgICBQUFNNQ19NU0dfVVZEUG93ZXJPRkYpOworCXJldHVybiAwOworfQorCitp bnQgdG9uZ2FfcGhtX3Bvd2VydXBfdXZkKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCit7CisJaWYg KHBobV9jZl93YW50X3V2ZF9wb3dlcl9nYXRpbmcoaHdtZ3IpKSB7CisJCWlmIChwaG1fY2FwX2Vu YWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAorCQkJCSAgUEhN X1BsYXRmb3JtQ2Fwc19VVkREeW5hbWljUG93ZXJHYXRpbmcpKSB7CisJCQlyZXR1cm4gc211bV9z ZW5kX21zZ190b19zbWNfd2l0aF9wYXJhbWV0ZXIoaHdtZ3ItPnNtdW1nciwKKwkJCQkJCQkJUFBT TUNfTVNHX1VWRFBvd2VyT04sIDEpOworCQl9IGVsc2UgeworCQkJcmV0dXJuIHNtdW1fc2VuZF9t c2dfdG9fc21jX3dpdGhfcGFyYW1ldGVyKGh3bWdyLT5zbXVtZ3IsCisJCQkJCQkJCVBQU01DX01T R19VVkRQb3dlck9OLCAwKTsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCitpbnQgdG9uZ2Ff cGhtX3Bvd2VyZG93bl92Y2Uoc3RydWN0IHBwX2h3bWdyICpod21ncikKK3sKKwlpZiAocGhtX2Nm X3dhbnRfdmNlX3Bvd2VyX2dhdGluZyhod21ncikpCisJCXJldHVybiBzbXVtX3NlbmRfbXNnX3Rv X3NtYyhod21nci0+c211bWdyLAorCQkJCQkJICBQUFNNQ19NU0dfVkNFUG93ZXJPRkYpOworCXJl dHVybiAwOworfQorCitpbnQgdG9uZ2FfcGhtX3Bvd2VydXBfdmNlKHN0cnVjdCBwcF9od21nciAq aHdtZ3IpCit7CisJaWYgKHBobV9jZl93YW50X3ZjZV9wb3dlcl9nYXRpbmcoaHdtZ3IpKQorCQly ZXR1cm4gc211bV9zZW5kX21zZ190b19zbWMoaHdtZ3ItPnNtdW1nciwKKwkJCQkJCSAgUFBTTUNf TVNHX1ZDRVBvd2VyT04pOworCXJldHVybiAwOworfQorCitpbnQgdG9uZ2FfcGhtX3NldF9hc2lj X2Jsb2NrX2dhdGluZyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBlbnVtIFBITV9Bc2ljQmxvY2sg YmxvY2ssIGVudW0gUEhNX0Nsb2NrR2F0ZVNldHRpbmcgZ2F0aW5nKQoreworCWludCByZXQgPSAw OworCisJc3dpdGNoIChibG9jaykgeworCWNhc2UgUEhNX0FzaWNCbG9ja19VVkRfTVZDOgorCWNh c2UgUEhNX0FzaWNCbG9ja19VVkQ6CisJY2FzZSBQSE1fQXNpY0Jsb2NrX1VWRF9IRDoKKwljYXNl IFBITV9Bc2ljQmxvY2tfVVZEX1NEOgorCQlpZiAoZ2F0aW5nID09IFBITV9DbG9ja0dhdGVTZXR0 aW5nX1N0YXRpY09mZikKKwkJCXJldCA9IHRvbmdhX3BobV9wb3dlcmRvd25fdXZkKGh3bWdyKTsK KwkJZWxzZQorCQkJcmV0ID0gdG9uZ2FfcGhtX3Bvd2VydXBfdXZkKGh3bWdyKTsKKwkJYnJlYWs7 CisJY2FzZSBQSE1fQXNpY0Jsb2NrX0dGWDoKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisKKwly ZXR1cm4gcmV0OworfQorCitpbnQgdG9uZ2FfcGhtX2Rpc2FibGVfY2xvY2tfcG93ZXJfZ2F0aW5n KHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCit7CisJc3RydWN0IHRvbmdhX2h3bWdyICpkYXRhID0g KHN0cnVjdCB0b25nYV9od21nciAqKShod21nci0+YmFja2VuZCk7CisKKwlkYXRhLT51dmRfcG93 ZXJfZ2F0ZWQgPSBmYWxzZTsKKwlkYXRhLT52Y2VfcG93ZXJfZ2F0ZWQgPSBmYWxzZTsKKworCXRv bmdhX3BobV9wb3dlcnVwX3V2ZChod21ncik7CisJdG9uZ2FfcGhtX3Bvd2VydXBfdmNlKGh3bWdy KTsKKworCXJldHVybiAwOworfQorCitpbnQgdG9uZ2FfcGhtX3Bvd2VyZ2F0ZV91dmQoc3RydWN0 IHBwX2h3bWdyICpod21nciwgYm9vbCBiZ2F0ZSkKK3sKKwlzdHJ1Y3QgdG9uZ2FfaHdtZ3IgKmRh dGEgPSAoc3RydWN0IHRvbmdhX2h3bWdyICopKGh3bWdyLT5iYWNrZW5kKTsKKworCWlmIChkYXRh LT51dmRfcG93ZXJfZ2F0ZWQgPT0gYmdhdGUpCisJCXJldHVybiAwOworCisJZGF0YS0+dXZkX3Bv d2VyX2dhdGVkID0gYmdhdGU7CisKKwlpZiAoYmdhdGUpIHsKKwkJY2dzX3NldF9jbG9ja2dhdGlu Z19zdGF0ZShod21nci0+ZGV2aWNlLAorCQkJCQkJQU1EX0lQX0JMT0NLX1RZUEVfVVZELAorCQkJ CQkJQU1EX0NHX1NUQVRFX1VOR0FURSk7CisJCWNnc19zZXRfcG93ZXJnYXRpbmdfc3RhdGUoaHdt Z3ItPmRldmljZSwKKwkJCQkJCUFNRF9JUF9CTE9DS19UWVBFX1VWRCwKKwkJCQkJCUFNRF9QR19T VEFURV9HQVRFKTsKKwkJdG9uZ2FfdXBkYXRlX3V2ZF9kcG0oaHdtZ3IsIHRydWUpOworCQl0b25n YV9waG1fcG93ZXJkb3duX3V2ZChod21ncik7CisJfSBlbHNlIHsKKwkJdG9uZ2FfcGhtX3Bvd2Vy dXBfdXZkKGh3bWdyKTsKKwkJY2dzX3NldF9wb3dlcmdhdGluZ19zdGF0ZShod21nci0+ZGV2aWNl LAorCQkJCQkJQU1EX0lQX0JMT0NLX1RZUEVfVVZELAorCQkJCQkJQU1EX1BHX1NUQVRFX1VOR0FU RSk7CisJCWNnc19zZXRfY2xvY2tnYXRpbmdfc3RhdGUoaHdtZ3ItPmRldmljZSwKKwkJCQkJCUFN RF9JUF9CTE9DS19UWVBFX1VWRCwKKwkJCQkJCUFNRF9QR19TVEFURV9HQVRFKTsKKworCQl0b25n YV91cGRhdGVfdXZkX2RwbShod21nciwgZmFsc2UpOworCX0KKworCXJldHVybiAwOworfQorCitp bnQgdG9uZ2FfcGhtX3Bvd2VyZ2F0ZV92Y2Uoc3RydWN0IHBwX2h3bWdyICpod21nciwgYm9vbCBi Z2F0ZSkKK3sKKwlzdHJ1Y3QgdG9uZ2FfaHdtZ3IgKmRhdGEgPSAoc3RydWN0IHRvbmdhX2h3bWdy ICopKGh3bWdyLT5iYWNrZW5kKTsKKwlzdHJ1Y3QgcGhtX3NldF9wb3dlcl9zdGF0ZV9pbnB1dCBz dGF0ZXM7CisJY29uc3Qgc3RydWN0IHBwX3Bvd2VyX3N0YXRlICAqcGN1cnJlbnQ7CisJc3RydWN0 IHBwX3Bvd2VyX3N0YXRlICAqcmVxdWVzdGVkOworCisJcGN1cnJlbnQgPSBod21nci0+Y3VycmVu dF9wczsKKwlyZXF1ZXN0ZWQgPSBod21nci0+cmVxdWVzdF9wczsKKworCXN0YXRlcy5wY3VycmVu dF9zdGF0ZSA9ICYocGN1cnJlbnQtPmhhcmR3YXJlKTsKKwlzdGF0ZXMucG5ld19zdGF0ZSA9ICYo cmVxdWVzdGVkLT5oYXJkd2FyZSk7CisKKwlpZiAocGhtX2NmX3dhbnRfdmNlX3Bvd2VyX2dhdGlu Zyhod21ncikpIHsKKwkJaWYgKGRhdGEtPnZjZV9wb3dlcl9nYXRlZCAhPSBiZ2F0ZSkgeworCQkJ aWYgKGJnYXRlKSB7CisJCQkJY2dzX3NldF9jbG9ja2dhdGluZ19zdGF0ZSgKKwkJCQkJCQlod21n ci0+ZGV2aWNlLAorCQkJCQkJCUFNRF9JUF9CTE9DS19UWVBFX1ZDRSwKKwkJCQkJCQlBTURfQ0df U1RBVEVfVU5HQVRFKTsKKwkJCQljZ3Nfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlKAorCQkJCQkJCWh3 bWdyLT5kZXZpY2UsCisJCQkJCQkJQU1EX0lQX0JMT0NLX1RZUEVfVkNFLAorCQkJCQkJCUFNRF9Q R19TVEFURV9HQVRFKTsKKwkJCQl0b25nYV9lbmFibGVfZGlzYWJsZV92Y2VfZHBtKGh3bWdyLCBm YWxzZSk7CisJCQkJZGF0YS0+dmNlX3Bvd2VyX2dhdGVkID0gdHJ1ZTsKKwkJCX0gZWxzZSB7CisJ CQkJdG9uZ2FfcGhtX3Bvd2VydXBfdmNlKGh3bWdyKTsKKwkJCQlkYXRhLT52Y2VfcG93ZXJfZ2F0 ZWQgPSBmYWxzZTsKKwkJCQljZ3Nfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlKAorCQkJCQkJCWh3bWdy LT5kZXZpY2UsCisJCQkJCQkJQU1EX0lQX0JMT0NLX1RZUEVfVkNFLAorCQkJCQkJCUFNRF9QR19T VEFURV9VTkdBVEUpOworCQkJCWNnc19zZXRfY2xvY2tnYXRpbmdfc3RhdGUoCisJCQkJCQkJaHdt Z3ItPmRldmljZSwKKwkJCQkJCQlBTURfSVBfQkxPQ0tfVFlQRV9WQ0UsCisJCQkJCQkJQU1EX1BH X1NUQVRFX0dBVEUpOworCisJCQkJdG9uZ2FfdXBkYXRlX3ZjZV9kcG0oaHdtZ3IsICZzdGF0ZXMp OworCQkJCXRvbmdhX2VuYWJsZV9kaXNhYmxlX3ZjZV9kcG0oaHdtZ3IsIHRydWUpOworCQkJCXJl dHVybiAwOworCQkJfQorCQl9CisJfSBlbHNlIHsKKwkJdG9uZ2FfdXBkYXRlX3ZjZV9kcG0oaHdt Z3IsICZzdGF0ZXMpOworCQl0b25nYV9lbmFibGVfZGlzYWJsZV92Y2VfZHBtKGh3bWdyLCB0cnVl KTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKCFkYXRhLT52Y2VfcG93ZXJfZ2F0ZWQpCisJCXRv bmdhX3VwZGF0ZV92Y2VfZHBtKGh3bWdyLCAmc3RhdGVzKTsKKworCXJldHVybiAwOworfQorCitp bnQgdG9uZ2FfcGhtX3VwZGF0ZV9jbG9ja19nYXRpbmdzKHN0cnVjdCBwcF9od21nciAqaHdtZ3Is CisJCQkJCWNvbnN0IHVpbnQzMl90ICptc2dfaWQpCit7CisJUFBTTUNfTXNnIG1zZzsKKwl1aW50 MzJfdCB2YWx1ZTsKKworCXN3aXRjaCAoKCptc2dfaWQgJiBQUF9HUk9VUF9NQVNLKSA+PiBQUF9H Uk9VUF9TSElGVCkgeworCWNhc2UgUFBfR1JPVVBfR0ZYOgorCQlzd2l0Y2ggKCgqbXNnX2lkICYg UFBfQkxPQ0tfTUFTSykgPj4gUFBfQkxPQ0tfU0hJRlQpIHsKKwkJY2FzZSBQUF9CTE9DS19HRlhf Q0c6CisJCQlpZiAoUFBfU1RBVEVfU1VQUE9SVF9DRyAmICptc2dfaWQpIHsKKwkJCQltc2cgPSAo KCptc2dfaWQgJiBQUF9TVEFURV9NQVNLKSAmIFBQX1NUQVRFX0NHKQorCQkJCSAgPyBQUFNNQ19N U0dfRW5hYmxlQ2xvY2tHYXRpbmdGZWF0dXJlCisJCQkJICA6IFBQU01DX01TR19EaXNhYmxlQ2xv Y2tHYXRpbmdGZWF0dXJlOworCQkJCXZhbHVlID0gQ0dfR0ZYX0NHQ0dfTUFTSzsKKworCQkJCWlm ICgwICE9IHNtdW1fc2VuZF9tc2dfdG9fc21jX3dpdGhfcGFyYW1ldGVyKGh3bWdyLT5zbXVtZ3Is IG1zZywgdmFsdWUpKQorCQkJCQlyZXR1cm4gLTE7CisJCQl9CisJCQlpZiAoUFBfU1RBVEVfU1VQ UE9SVF9MUyAmICptc2dfaWQpIHsKKwkJCQltc2cgPSAoKm1zZ19pZCAmIFBQX1NUQVRFX01BU0sp ICYgUFBfU1RBVEVfTFMKKwkJCQkJPyBQUFNNQ19NU0dfRW5hYmxlQ2xvY2tHYXRpbmdGZWF0dXJl CisJCQkJCTogUFBTTUNfTVNHX0Rpc2FibGVDbG9ja0dhdGluZ0ZlYXR1cmU7CisJCQkJdmFsdWUg PSBDR19HRlhfQ0dMU19NQVNLOworCisJCQkJaWYgKDAgIT0gc211bV9zZW5kX21zZ190b19zbWNf d2l0aF9wYXJhbWV0ZXIoaHdtZ3ItPnNtdW1nciwgbXNnLCB2YWx1ZSkpCisJCQkJCXJldHVybiAt MTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgUFBfQkxPQ0tfR0ZYX01HOgorCQkJLyogRm9y IEdGWCBNR0NHLCB0aGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50IG9uZXM7CisJCQkgKiBDUEYsIFJM QywgYW5kIGFsbCBvdGhlcnMuICBDUEYgTUdDRyB3aWxsIG5vdCBiZSB1c2VkIGZvciBUb25nYS4K KwkJCSAqIEZvciBHRlggTUdMUywgVG9uZ2Egd2lsbCBub3Qgc3VwcG9ydCBpdC4KKwkJCSAqICov CisJCQlpZiAoUFBfU1RBVEVfU1VQUE9SVF9DRyAmICptc2dfaWQpIHsKKwkJCQltc2cgPSAoKCpt c2dfaWQgJiBQUF9TVEFURV9NQVNLKSAmIFBQX1NUQVRFX0NHKQorCQkJCT8gUFBTTUNfTVNHX0Vu YWJsZUNsb2NrR2F0aW5nRmVhdHVyZQorCQkJCTogUFBTTUNfTVNHX0Rpc2FibGVDbG9ja0dhdGlu Z0ZlYXR1cmU7CisJCQkJdmFsdWUgPSAoQ0dfUkxDX01HQ0dfTUFTSyB8IENHX0dGWF9PVEhFUlNf TUdDR19NQVNLKTsKKworCQkJCWlmICgwICE9IHNtdW1fc2VuZF9tc2dfdG9fc21jX3dpdGhfcGFy YW1ldGVyKGh3bWdyLT5zbXVtZ3IsIG1zZywgdmFsdWUpKQorCQkJCQlyZXR1cm4gLTE7CisJCQl9 CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJcmV0dXJuIC0xOworCQl9CisJCWJyZWFrOwor CisJY2FzZSBQUF9HUk9VUF9TWVM6CisJCXN3aXRjaCAoKCptc2dfaWQgJiBQUF9CTE9DS19NQVNL KSA+PiBQUF9CTE9DS19TSElGVCkgeworCQljYXNlIFBQX0JMT0NLX1NZU19CSUY6CisJCQlpZiAo UFBfU1RBVEVfU1VQUE9SVF9MUyAmICptc2dfaWQpIHsKKwkJCQltc2cgPSAoKm1zZ19pZCAmIFBQ X1NUQVRFX01BU0spICYgUFBfU1RBVEVfTFMKKwkJCQk/IFBQU01DX01TR19FbmFibGVDbG9ja0dh dGluZ0ZlYXR1cmUKKwkJCQk6IFBQU01DX01TR19EaXNhYmxlQ2xvY2tHYXRpbmdGZWF0dXJlOwor CQkJCXZhbHVlID0gQ0dfU1lTX0JJRl9NR0xTX01BU0s7CisKKwkJCQlpZiAoMCAhPSBzbXVtX3Nl bmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcihod21nci0+c211bWdyLCBtc2csIHZhbHVlKSkK KwkJCQkJcmV0dXJuIC0xOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBQUF9CTE9DS19TWVNf TUM6CisJCQlpZiAoUFBfU1RBVEVfU1VQUE9SVF9DRyAmICptc2dfaWQpIHsKKwkJCQltc2cgPSAo KCptc2dfaWQgJiBQUF9TVEFURV9NQVNLKSAmIFBQX1NUQVRFX0NHKQorCQkJCT8gUFBTTUNfTVNH X0VuYWJsZUNsb2NrR2F0aW5nRmVhdHVyZQorCQkJCTogUFBTTUNfTVNHX0Rpc2FibGVDbG9ja0dh dGluZ0ZlYXR1cmU7CisJCQkJdmFsdWUgPSBDR19TWVNfTUNfTUdDR19NQVNLOworCisJCQkJaWYg KDAgIT0gc211bV9zZW5kX21zZ190b19zbWNfd2l0aF9wYXJhbWV0ZXIoaHdtZ3ItPnNtdW1nciwg bXNnLCB2YWx1ZSkpCisJCQkJCXJldHVybiAtMTsKKwkJCX0KKworCQkJaWYgKFBQX1NUQVRFX1NV UFBPUlRfTFMgJiAqbXNnX2lkKSB7CisJCQkJbXNnID0gKCptc2dfaWQgJiBQUF9TVEFURV9NQVNL KSAmIFBQX1NUQVRFX0xTCisJCQkJPyBQUFNNQ19NU0dfRW5hYmxlQ2xvY2tHYXRpbmdGZWF0dXJl CisJCQkJOiBQUFNNQ19NU0dfRGlzYWJsZUNsb2NrR2F0aW5nRmVhdHVyZTsKKwkJCQl2YWx1ZSA9 IENHX1NZU19NQ19NR0xTX01BU0s7CisKKwkJCQlpZiAoMCAhPSBzbXVtX3NlbmRfbXNnX3RvX3Nt Y193aXRoX3BhcmFtZXRlcihod21nci0+c211bWdyLCBtc2csIHZhbHVlKSkKKwkJCQkJcmV0dXJu IC0xOworCisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFBQX0JMT0NLX1NZU19IRFA6CisJCQlp ZiAoUFBfU1RBVEVfU1VQUE9SVF9DRyAmICptc2dfaWQpIHsKKwkJCQltc2cgPSAoKCptc2dfaWQg JiBQUF9TVEFURV9NQVNLKSAmIFBQX1NUQVRFX0NHKQorCQkJCQk/IFBQU01DX01TR19FbmFibGVD bG9ja0dhdGluZ0ZlYXR1cmUKKwkJCQkJOiBQUFNNQ19NU0dfRGlzYWJsZUNsb2NrR2F0aW5nRmVh dHVyZTsKKwkJCQl2YWx1ZSA9IENHX1NZU19IRFBfTUdDR19NQVNLOworCisJCQkJaWYgKDAgIT0g c211bV9zZW5kX21zZ190b19zbWNfd2l0aF9wYXJhbWV0ZXIoaHdtZ3ItPnNtdW1nciwgbXNnLCB2 YWx1ZSkpCisJCQkJCXJldHVybiAtMTsKKwkJCX0KKworCQkJaWYgKFBQX1NUQVRFX1NVUFBPUlRf TFMgJiAqbXNnX2lkKSB7CisJCQkJbXNnID0gKCptc2dfaWQgJiBQUF9TVEFURV9NQVNLKSAmIFBQ X1NUQVRFX0xTCisJCQkJCT8gUFBTTUNfTVNHX0VuYWJsZUNsb2NrR2F0aW5nRmVhdHVyZQorCQkJ CQk6IFBQU01DX01TR19EaXNhYmxlQ2xvY2tHYXRpbmdGZWF0dXJlOworCisJCQkJdmFsdWUgPSBD R19TWVNfSERQX01HTFNfTUFTSzsKKworCQkJCWlmICgwICE9IHNtdW1fc2VuZF9tc2dfdG9fc21j X3dpdGhfcGFyYW1ldGVyKGh3bWdyLT5zbXVtZ3IsIG1zZywgdmFsdWUpKQorCQkJCQlyZXR1cm4g LTE7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFBQX0JMT0NLX1NZU19TRE1BOgorCQkJaWYg KFBQX1NUQVRFX1NVUFBPUlRfQ0cgJiAqbXNnX2lkKSB7CisJCQkJbXNnID0gKCgqbXNnX2lkICYg UFBfU1RBVEVfTUFTSykgJiBQUF9TVEFURV9DRykKKwkJCQk/IFBQU01DX01TR19FbmFibGVDbG9j a0dhdGluZ0ZlYXR1cmUKKwkJCQk6IFBQU01DX01TR19EaXNhYmxlQ2xvY2tHYXRpbmdGZWF0dXJl OworCQkJCXZhbHVlID0gQ0dfU1lTX1NETUFfTUdDR19NQVNLOworCisJCQkJaWYgKDAgIT0gc211 bV9zZW5kX21zZ190b19zbWNfd2l0aF9wYXJhbWV0ZXIoaHdtZ3ItPnNtdW1nciwgbXNnLCB2YWx1 ZSkpCisJCQkJCXJldHVybiAtMTsKKwkJCX0KKworCQkJaWYgKFBQX1NUQVRFX1NVUFBPUlRfTFMg JiAqbXNnX2lkKSB7CisJCQkJbXNnID0gKCptc2dfaWQgJiBQUF9TVEFURV9NQVNLKSAmIFBQX1NU QVRFX0xTCisJCQkJPyBQUFNNQ19NU0dfRW5hYmxlQ2xvY2tHYXRpbmdGZWF0dXJlCisJCQkJOiBQ UFNNQ19NU0dfRGlzYWJsZUNsb2NrR2F0aW5nRmVhdHVyZTsKKworCQkJCXZhbHVlID0gQ0dfU1lT X1NETUFfTUdMU19NQVNLOworCisJCQkJaWYgKDAgIT0gc211bV9zZW5kX21zZ190b19zbWNfd2l0 aF9wYXJhbWV0ZXIoaHdtZ3ItPnNtdW1nciwgbXNnLCB2YWx1ZSkpCisJCQkJCXJldHVybiAtMTsK KwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgUFBfQkxPQ0tfU1lTX1JPTToKKwkJCWlmIChQUF9T VEFURV9TVVBQT1JUX0NHICYgKm1zZ19pZCkgeworCQkJCW1zZyA9ICgoKm1zZ19pZCAmIFBQX1NU QVRFX01BU0spICYgUFBfU1RBVEVfQ0cpCisJCQkJPyBQUFNNQ19NU0dfRW5hYmxlQ2xvY2tHYXRp bmdGZWF0dXJlCisJCQkJOiBQUFNNQ19NU0dfRGlzYWJsZUNsb2NrR2F0aW5nRmVhdHVyZTsKKwkJ CQl2YWx1ZSA9IENHX1NZU19ST01fTUFTSzsKKworCQkJCWlmICgwICE9IHNtdW1fc2VuZF9tc2df dG9fc21jX3dpdGhfcGFyYW1ldGVyKGh3bWdyLT5zbXVtZ3IsIG1zZywgdmFsdWUpKQorCQkJCQly ZXR1cm4gLTE7CisJCQl9CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJcmV0dXJuIC0xOwor CisJCX0KKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlyZXR1cm4gLTE7CisKKwl9CisKKwlyZXR1 cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdy L3RvbmdhX2Nsb2NrcG93ZXJnYXRpbmcuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5 L2h3bWdyL3RvbmdhX2Nsb2NrcG93ZXJnYXRpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi44YmMzOGNiCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9wb3dlcnBsYXkvaHdtZ3IvdG9uZ2FfY2xvY2twb3dlcmdhdGluZy5oCkBAIC0wLDAgKzEsMzYg QEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhP TERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IK KyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBU SEUgU09GVFdBUkUuCisgKgorICovCisKKyNpZm5kZWYgX1RPTkdBX0NMT0NLX1BPV0VSX0dBVElO R19IXworI2RlZmluZSBfVE9OR0FfQ0xPQ0tfUE9XRVJfR0FUSU5HX0hfCisKKyNpbmNsdWRlICJ0 b25nYV9od21nci5oIgorI2luY2x1ZGUgInBwX2FzaWNibG9ja3MuaCIKKworZXh0ZXJuIGludCB0 b25nYV9waG1fc2V0X2FzaWNfYmxvY2tfZ2F0aW5nKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIGVu dW0gUEhNX0FzaWNCbG9jayBibG9jaywgZW51bSBQSE1fQ2xvY2tHYXRlU2V0dGluZyBnYXRpbmcp OworZXh0ZXJuIGludCB0b25nYV9waG1fcG93ZXJnYXRlX3ZjZShzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyLCBib29sIGJnYXRlKTsKK2V4dGVybiBpbnQgdG9uZ2FfcGhtX3Bvd2VyZ2F0ZV91dmQoc3Ry dWN0IHBwX2h3bWdyICpod21nciwgYm9vbCBiZ2F0ZSk7CitleHRlcm4gaW50IHRvbmdhX3BobV9w b3dlcmRvd25fdXZkKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpOworZXh0ZXJuIGludCB0b25nYV9w aG1fZGlzYWJsZV9jbG9ja19wb3dlcl9nYXRpbmcoc3RydWN0IHBwX2h3bWdyICpod21ncik7Citl eHRlcm4gaW50IHRvbmdhX3BobV91cGRhdGVfY2xvY2tfZ2F0aW5ncyhzdHJ1Y3QgcHBfaHdtZ3Ig Kmh3bWdyLCBjb25zdCB1aW50MzJfdCAqbXNnX2lkKTsKKyNlbmRpZiAvKiBfVE9OR0FfQ0xPQ0tf UE9XRVJfR0FUSU5HX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2Vy cGxheS9od21nci90b25nYV9od21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkv aHdtZ3IvdG9uZ2FfaHdtZ3IuYwppbmRleCBmZThiMzE1Li45YTdkZTFmIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci90b25nYV9od21nci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3RvbmdhX2h3bWdyLmMKQEAgLTM5LDYg KzM5LDcgQEAKICNpbmNsdWRlICJ0b25nYV9keW5fZGVmYXVsdHMuaCIKICNpbmNsdWRlICJzbXVt Z3IuaCIKICNpbmNsdWRlICJ0b25nYV9zbXVtZ3IuaCIKKyNpbmNsdWRlICJ0b25nYV9jbG9ja3Bv d2VyZ2F0aW5nLmgiCiAKICNpbmNsdWRlICJzbXUvc211XzdfMV8yX2QuaCIKICNpbmNsdWRlICJz bXUvc211XzdfMV8yX3NoX21hc2suaCIKQEAgLTU0ODgsMTQgKzU0ODksNDcgQEAgc3RhdGljIGlu dCB0b25nYV9nZW5lcmF0ZV9kcG1fbGV2ZWxfZW5hYmxlX21hc2soc3RydWN0IHBwX2h3bWdyICpo d21nciwgY29uc3Qgdm8KIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCB0b25nYV9lbmFibGVf ZGlzYWJsZV92Y2VfZHBtKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIGJvb2wgZW5hYmxlKQoraW50 IHRvbmdhX2VuYWJsZV9kaXNhYmxlX3ZjZV9kcG0oc3RydWN0IHBwX2h3bWdyICpod21nciwgYm9v bCBlbmFibGUpCiB7Ci0JcmV0dXJuIHNtdW1fc2VuZF9tc2dfdG9fc21jKGh3bWdyLT5zbXVtZ3Is IGVuYWJsZT8KKwlyZXR1cm4gc211bV9zZW5kX21zZ190b19zbWMoaHdtZ3ItPnNtdW1nciwgZW5h YmxlID8KIAkJCQkgIChQUFNNQ19Nc2cpUFBTTUNfTVNHX1ZDRURQTV9FbmFibGUgOgogCQkJCSAg KFBQU01DX01zZylQUFNNQ19NU0dfVkNFRFBNX0Rpc2FibGUpOwogfQogCi1zdGF0aWMgaW50IHRv bmdhX3VwZGF0ZV92Y2VfZHBtKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIGNvbnN0IHZvaWQgKmlu cHV0KQoraW50IHRvbmdhX2VuYWJsZV9kaXNhYmxlX3V2ZF9kcG0oc3RydWN0IHBwX2h3bWdyICpo d21nciwgYm9vbCBlbmFibGUpCit7CisJcmV0dXJuIHNtdW1fc2VuZF9tc2dfdG9fc21jKGh3bWdy LT5zbXVtZ3IsIGVuYWJsZSA/CisJCQkJICAoUFBTTUNfTXNnKVBQU01DX01TR19VVkREUE1fRW5h YmxlIDoKKwkJCQkgIChQUFNNQ19Nc2cpUFBTTUNfTVNHX1VWRERQTV9EaXNhYmxlKTsKK30KKwor aW50IHRvbmdhX3VwZGF0ZV91dmRfZHBtKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIGJvb2wgYmdh dGUpCit7CisJc3RydWN0IHRvbmdhX2h3bWdyICpkYXRhID0gKHN0cnVjdCB0b25nYV9od21nciAq KShod21nci0+YmFja2VuZCk7CisJdWludDMyX3QgbW1fYm9vdF9sZXZlbF9vZmZzZXQsIG1tX2Jv b3RfbGV2ZWxfdmFsdWU7CisJc3RydWN0IHBobV9wcHRfdjFfaW5mb3JtYXRpb24gKnB0YWJsZV9p bmZvcm1hdGlvbiA9IChzdHJ1Y3QgcGhtX3BwdF92MV9pbmZvcm1hdGlvbiAqKShod21nci0+cHB0 YWJsZSk7CisKKwlpZiAoIWJnYXRlKSB7CisJCWRhdGEtPnNtY19zdGF0ZV90YWJsZS5VdmRCb290 TGV2ZWwgPSAodWludDhfdCkgKHB0YWJsZV9pbmZvcm1hdGlvbi0+bW1fZGVwX3RhYmxlLT5jb3Vu dCAtIDEpOworCQltbV9ib290X2xldmVsX29mZnNldCA9IGRhdGEtPmRwbV90YWJsZV9zdGFydCAr IG9mZnNldG9mKFNNVTcyX0Rpc2NyZXRlX0RwbVRhYmxlLCBVdmRCb290TGV2ZWwpOworCQltbV9i b290X2xldmVsX29mZnNldCAvPSA0OworCQltbV9ib290X2xldmVsX29mZnNldCAqPSA0OworCQlt bV9ib290X2xldmVsX3ZhbHVlID0gY2dzX3JlYWRfaW5kX3JlZ2lzdGVyKGh3bWdyLT5kZXZpY2Us IENHU19JTkRfUkVHX19TTUMsIG1tX2Jvb3RfbGV2ZWxfb2Zmc2V0KTsKKwkJbW1fYm9vdF9sZXZl bF92YWx1ZSAmPSAweDAwRkZGRkZGOworCQltbV9ib290X2xldmVsX3ZhbHVlIHw9IGRhdGEtPnNt Y19zdGF0ZV90YWJsZS5VdmRCb290TGV2ZWwgPDwgMjQ7CisJCWNnc193cml0ZV9pbmRfcmVnaXN0 ZXIoaHdtZ3ItPmRldmljZSwgQ0dTX0lORF9SRUdfX1NNQywgbW1fYm9vdF9sZXZlbF9vZmZzZXQs IG1tX2Jvb3RfbGV2ZWxfdmFsdWUpOworCisJCWlmICghcGhtX2NhcF9lbmFibGVkKGh3bWdyLT5w bGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywgUEhNX1BsYXRmb3JtQ2Fwc19VVkREUE0p IHx8CisJCSAgICBwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxh dGZvcm1DYXBzLCBQSE1fUGxhdGZvcm1DYXBzX1N0YWJsZVBTdGF0ZSkpCisJCQlzbXVtX3NlbmRf bXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcihod21nci0+c211bWdyLAorCQkJCQkJUFBTTUNfTVNH X1VWRERQTV9TZXRFbmFibGVkTWFzaywKKwkJCQkJCSh1aW50MzJfdCkoMSA8PCBkYXRhLT5zbWNf c3RhdGVfdGFibGUuVXZkQm9vdExldmVsKSk7CisJfQorCisJcmV0dXJuIHRvbmdhX2VuYWJsZV9k aXNhYmxlX3V2ZF9kcG0oaHdtZ3IsICFiZ2F0ZSk7Cit9CisKK2ludCB0b25nYV91cGRhdGVfdmNl X2RwbShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBjb25zdCB2b2lkICppbnB1dCkKIHsKIAljb25z dCBzdHJ1Y3QgcGhtX3NldF9wb3dlcl9zdGF0ZV9pbnB1dCAqc3RhdGVzID0gKGNvbnN0IHN0cnVj dCBwaG1fc2V0X3Bvd2VyX3N0YXRlX2lucHV0ICopaW5wdXQ7CiAJc3RydWN0IHRvbmdhX2h3bWdy ICpkYXRhID0gKHN0cnVjdCB0b25nYV9od21nciAqKShod21nci0+YmFja2VuZCk7CkBAIC01NTA1 LDggKzU1MzksNyBAQCBzdGF0aWMgaW50IHRvbmdhX3VwZGF0ZV92Y2VfZHBtKHN0cnVjdCBwcF9o d21nciAqaHdtZ3IsIGNvbnN0IHZvaWQgKmlucHV0KQogCXVpbnQzMl90IG1tX2Jvb3RfbGV2ZWxf b2Zmc2V0LCBtbV9ib290X2xldmVsX3ZhbHVlOwogCXN0cnVjdCBwaG1fcHB0X3YxX2luZm9ybWF0 aW9uICpwcHRhYmxlX2luZm8gPSAoc3RydWN0IHBobV9wcHRfdjFfaW5mb3JtYXRpb24gKikoaHdt Z3ItPnBwdGFibGUpOwogCi0JaWYodG9uZ2FfbnBzLT52Y2VfY2xvY2tzLkVWQ0xLID4wICYmCi0J KHRvbmdhX2NwcyA9PSBOVUxMIHx8IHRvbmdhX2Nwcy0+dmNlX2Nsb2Nrcy5FVkNMSyA9PSAwKSkg eworCWlmICh0b25nYV9ucHMtPnZjZV9jbG9ja3MuRVZDTEsgPiAwICYmICh0b25nYV9jcHMgPT0g TlVMTCB8fCB0b25nYV9jcHMtPnZjZV9jbG9ja3MuRVZDTEsgPT0gMCkpIHsKIAkJZGF0YS0+c21j X3N0YXRlX3RhYmxlLlZjZUJvb3RMZXZlbCA9ICh1aW50OF90KSAocHB0YWJsZV9pbmZvLT5tbV9k ZXBfdGFibGUtPmNvdW50IC0gMSk7CiAKIAkJbW1fYm9vdF9sZXZlbF9vZmZzZXQgPSBkYXRhLT5k cG1fdGFibGVfc3RhcnQgKyBvZmZzZXRvZihTTVU3Ml9EaXNjcmV0ZV9EcG1UYWJsZSwgVmNlQm9v dExldmVsKTsKQEAgLTU1MTcsMTYgKzU1NTAsMTQgQEAgc3RhdGljIGludCB0b25nYV91cGRhdGVf dmNlX2RwbShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBjb25zdCB2b2lkICppbnB1dCkKIAkJbW1f Ym9vdF9sZXZlbF92YWx1ZSB8PSBkYXRhLT5zbWNfc3RhdGVfdGFibGUuVmNlQm9vdExldmVsIDw8 IDE2OwogCQljZ3Nfd3JpdGVfaW5kX3JlZ2lzdGVyKGh3bWdyLT5kZXZpY2UsIENHU19JTkRfUkVH X19TTUMsIG1tX2Jvb3RfbGV2ZWxfb2Zmc2V0LCBtbV9ib290X2xldmVsX3ZhbHVlKTsKIAotCQlp ZiAocGhtX2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2Fw cywgUEhNX1BsYXRmb3JtQ2Fwc19TdGFibGVQU3RhdGUpKSB7Ci0JCQkJc211bV9zZW5kX21zZ190 b19zbWNfd2l0aF9wYXJhbWV0ZXIoCi0JCQkJCQkJICAgaHdtZ3ItPnNtdW1nciwKLQkJCShQUFNN Q19Nc2cpKFBQU01DX01TR19WQ0VEUE1fU2V0RW5hYmxlZE1hc2spLAotCQkJKHVpbnQzMl90KTEg PDwgZGF0YS0+c21jX3N0YXRlX3RhYmxlLlZjZUJvb3RMZXZlbCk7CisJCWlmIChwaG1fY2FwX2Vu YWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLCBQSE1fUGxhdGZv cm1DYXBzX1N0YWJsZVBTdGF0ZSkpCisJCQlzbXVtX3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFt ZXRlcihod21nci0+c211bWdyLAorCQkJCQlQUFNNQ19NU0dfVkNFRFBNX1NldEVuYWJsZWRNYXNr LAorCQkJCSh1aW50MzJfdCkoMSA8PCBkYXRhLT5zbWNfc3RhdGVfdGFibGUuVmNlQm9vdExldmVs KSk7CiAKLQkJCXRvbmdhX2VuYWJsZV9kaXNhYmxlX3ZjZV9kcG0oaHdtZ3IsIHRydWUpOwotCQl9 IGVsc2UgaWYgKHRvbmdhX25wcy0+dmNlX2Nsb2Nrcy5FVkNMSyA9PSAwICYmIHRvbmdhX2NwcyAh PSBOVUxMICYmIHRvbmdhX2Nwcy0+dmNlX2Nsb2Nrcy5FVkNMSyA+IDApCi0JCQl0b25nYV9lbmFi bGVfZGlzYWJsZV92Y2VfZHBtKGh3bWdyLCBmYWxzZSk7Ci0JfQorCQl0b25nYV9lbmFibGVfZGlz YWJsZV92Y2VfZHBtKGh3bWdyLCB0cnVlKTsKKwl9IGVsc2UgaWYgKHRvbmdhX25wcy0+dmNlX2Ns b2Nrcy5FVkNMSyA9PSAwICYmIHRvbmdhX2NwcyAhPSBOVUxMICYmIHRvbmdhX2Nwcy0+dmNlX2Ns b2Nrcy5FVkNMSyA+IDApCisJCXRvbmdhX2VuYWJsZV9kaXNhYmxlX3ZjZV9kcG0oaHdtZ3IsIGZh bHNlKTsKIAogCXJldHVybiAwOwogfQpAQCAtNTc4Myw2ICs1ODE0LDEwIEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgcHBfaHdtZ3JfZnVuYyB0b25nYV9od21ncl9mdW5jcyA9IHsKIAkuZ2V0X3BwX3Rh YmxlX2VudHJ5ID0gdG9uZ2FfZ2V0X3BwX3RhYmxlX2VudHJ5LAogCS5nZXRfbnVtX29mX3BwX3Rh YmxlX2VudHJpZXMgPSB0b25nYV9nZXRfbnVtYmVyX29mX3Bvd2VycGxheV90YWJsZV9lbnRyaWVz LAogCS5wcmludF9jdXJyZW50X3BlcmZvcmNlX2xldmVsID0gdG9uZ2FfcHJpbnRfY3VycmVudF9w ZXJmb3JjZV9sZXZlbCwKKwkucG93ZXJkb3duX3V2ZCA9IHRvbmdhX3BobV9wb3dlcmRvd25fdXZk LAorCS5wb3dlcmdhdGVfdXZkID0gdG9uZ2FfcGhtX3Bvd2VyZ2F0ZV91dmQsCisJLnBvd2VyZ2F0 ZV92Y2UgPSB0b25nYV9waG1fcG93ZXJnYXRlX3ZjZSwKKwkuZGlzYWJsZV9jbG9ja19wb3dlcl9n YXRpbmcgPSB0b25nYV9waG1fZGlzYWJsZV9jbG9ja19wb3dlcl9nYXRpbmcsCiAJLm5vdGlmeV9z bWNfZGlzcGxheV9jb25maWdfYWZ0ZXJfcHNfYWRqdXN0bWVudCA9IHRvbmdhX25vdGlmeV9zbWNf ZGlzcGxheV9jb25maWdfYWZ0ZXJfcHNfYWRqdXN0bWVudCwKIAkuZGlzcGxheV9jb25maWdfY2hh bmdlZCA9IHRvbmdhX2Rpc3BsYXlfY29uZmlndXJhdGlvbl9jaGFuZ2VkX3Rhc2ssCiB9OwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvdG9uZ2FfaHdtZ3Iu aCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3RvbmdhX2h3bWdyLmgKaW5k ZXggZDAwNzcwNi4uYzNhYzk2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dl cnBsYXkvaHdtZ3IvdG9uZ2FfaHdtZ3IuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2Vy cGxheS9od21nci90b25nYV9od21nci5oCkBAIC00MjIsNiArNDIyLDEwIEBAIHR5cGVkZWYgc3Ry dWN0IHRvbmdhX2h3bWdyIHRvbmdhX2h3bWdyOwogI2RlZmluZSBDT05WRVJUX0ZST01fSE9TVF9U T19TTUNfVVMoWCkgKChYKSA9IFBQX0hPU1RfVE9fU01DX1VTKFgpKQogCiBpbnQgdG9uZ2FfaHdt Z3JfaW5pdChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKK2ludCB0b25nYV91cGRhdGVfdmNlX2Rw bShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBjb25zdCB2b2lkICppbnB1dCk7CitpbnQgdG9uZ2Ff dXBkYXRlX3V2ZF9kcG0oc3RydWN0IHBwX2h3bWdyICpod21nciwgYm9vbCBiZ2F0ZSk7CitpbnQg dG9uZ2FfZW5hYmxlX2Rpc2FibGVfdXZkX2RwbShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBib29s IGVuYWJsZSk7CitpbnQgdG9uZ2FfZW5hYmxlX2Rpc2FibGVfdmNlX2RwbShzdHJ1Y3QgcHBfaHdt Z3IgKmh3bWdyLCBib29sIGVuYWJsZSk7CiAKICNlbmRpZgogCi0tIAoxLjguMy4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=