From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 14/51] drm/amd/powerplay: add CG and PG support for carrizo Date: Thu, 12 Nov 2015 01:18:04 -0500 Message-ID: <1447309121-2480-15-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-qk0-f171.google.com (mail-qk0-f171.google.com [209.85.220.171]) by gabe.freedesktop.org (Postfix) with ESMTPS id CE8247A092 for ; Wed, 11 Nov 2015 22:19:08 -0800 (PST) Received: by qkas77 with SMTP id s77so20226410qka.0 for ; Wed, 11 Nov 2015 22:19:08 -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 RnJvbTogUmV4IFpodSA8UmV4LlpodUBhbWQuY29tPgoKVGhpcyBhZGRzIGNsb2NrIGFuZCBwb3dl cmdhdGluZyBzdXBwb3J0IGZvciBDWi4KCnYyOiBzcXVhc2ggaW4gZml4ZXMKClNpZ25lZC1vZmYt Ynk6IFJleCBaaHUgPFJleC5aaHVAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IEphbW15IFpob3UgPEph bW15Llpob3VAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRl dWNoZXJAYW1kLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9N YWtlZmlsZSAgICAgICB8ICAgMyArLQogLi4uL2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2N6X2Ns b2NrcG93ZXJnYXRpbmcuYyAgfCAyNTIgKysrKysrKysrKwogLi4uL2RybS9hbWQvcG93ZXJwbGF5 L2h3bWdyL2N6X2Nsb2NrcG93ZXJnYXRpbmcuaCAgfCAgMzcgKysKIGRyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L2h3bWdyL2N6X2h3bWdyLmMgICAgIHwgNTIxICsrKysrKysrKysrKysrKysr KysrLQogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvY3pfaHdtZ3IuaCAgICAg fCAgMTIgKy0KIC4uLi9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvaGFyZHdhcmVtYW5hZ2Vy LmMgIHwgIDg5ICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2h3bWdy LmMgICAgICAgIHwgIDEwICsKIC4uLi9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2hhcmR3YXJl bWFuYWdlci5oICAgIHwgIDUzICsrLQogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5j L2h3bWdyLmggICAgICAgICAgfCAgNDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5 L2luYy9wcF9hc2ljYmxvY2tzLmggIHwgIDQ3ICsrCiAxMCBmaWxlcyBjaGFuZ2VkLCAxMDU4IGlu c2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2N6X2Nsb2NrcG93ZXJnYXRpbmcuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2N6X2Nsb2Nr cG93ZXJnYXRpbmcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L2luYy9wcF9hc2ljYmxvY2tzLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL3Bvd2VycGxheS9od21nci9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJw bGF5L2h3bWdyL01ha2VmaWxlCmluZGV4IDIyZDM4M2UuLjQ2Y2M0OTQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL01ha2VmaWxlCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL01ha2VmaWxlCkBAIC0zLDcgKzMsOCBAQAogIyBJ dCBwcm92aWRlcyB0aGUgaGFyZHdhcmUgbWFuYWdlbWVudCBzZXJ2aWNlcyBmb3IgdGhlIGRyaXZl ci4KIAogSEFSRFdBUkVfTUdSID0gaHdtZ3IubyBwcm9jZXNzcHB0YWJsZXMubyBmdW5jdGlvbnRh Ymxlcy5vIFwKLQkgICAgICAgaGFyZHdhcmVtYW5hZ2VyLm8gcHBfYWNwaS5vIGN6X2h3bWdyLm8K KwkgICAgICAgaGFyZHdhcmVtYW5hZ2VyLm8gcHBfYWNwaS5vIGN6X2h3bWdyLm8gXAorICAgICAg ICAgICAgICAgY3pfY2xvY2twb3dlcmdhdGluZy5vCiAKIEFNRF9QUF9IV01HUiA9ICQoYWRkcHJl Zml4ICQoQU1EX1BQX1BBVEgpL2h3bWdyLywkKEhBUkRXQVJFX01HUikpCiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2N6X2Nsb2NrcG93ZXJnYXRpbmcu YyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2N6X2Nsb2NrcG93ZXJnYXRp bmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDc3MDA4Ci0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvY3pfY2xvY2tw b3dlcmdhdGluZy5jCkBAIC0wLDAgKzEsMjUyIEBACisvKgorICogQ29weXJpZ2h0IDIwMTUgQWR2 YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4K KyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgor ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVO VCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcg RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT RSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaW5j bHVkZSAiaHdtZ3IuaCIKKyNpbmNsdWRlICJjel9jbG9ja3Bvd2VyZ2F0aW5nLmgiCisjaW5jbHVk ZSAiY3pfcHBzbWMuaCIKKworLyogUGh5SUQgLT4gU3RhdHVzIE1hcHBpbmcgaW4gRERJX1BIWV9H RU5fU1RBVFVTCisgICAgMCAgICBHRlgwTCAoMzowKSwgICAgICAgICAgICAgICAgICAoMjc6MjQp LAorICAgIDEgICAgR0ZYMEggKDc6NCksICAgICAgICAgICAgICAgICAgKDMxOjI4KSwKKyAgICAy ICAgIEdGWDFMICgzOjApLCAgICAgICAgICAgICAgICAgICgxOToxNiksCisgICAgMyAgICBHRlgx SCAoNzo0KSwgICAgICAgICAgICAgICAgICAoMjM6MjApLAorICAgIDQgICAgRERJTCAgICgzOjAp LCAgICAgICAgICAgICAgICAgICAoMTE6IDgpLAorICAgIDUgICAgRERJSCAgKDc6NCksICAgICAg ICAgICAgICAgICAgICgxNToxMiksCisgICAgNiAgICBEREkyTCAoMzowKSwgICAgICAgICAgICAg ICAgICAgKCAzOiAwKSwKKyAgICA3ICAgIERESTJIICg3OjQpLCAgICAgICAgICAgICAgICAgICAo IDc6IDQpLAorKi8KKyNkZWZpbmUgRERJX1BIWV9HRU5fU1RBVFVTX1ZBTChwaHlJRCkgICAoMSA8 PCAoKDMgLSAoKHBoeUlEICYgMHgwNykvMikpKjggKyAocGh5SUQgJiAweDAxKSo0KSkKKyNkZWZp bmUgSVNfUEhZX0lEX1VTRURfQllfUExMKFBoeUlEKSAgICAoKCgweEYzICYgKDEgPDwgUGh5SUQp KSAmIDB4RkYpID8gdHJ1ZSA6IGZhbHNlKQorCisKK2ludCBjel9waG1fc2V0X2FzaWNfYmxvY2tf Z2F0aW5nKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIGVudW0gUEhNX0FzaWNCbG9jayBibG9jaywg ZW51bSBQSE1fQ2xvY2tHYXRlU2V0dGluZyBnYXRpbmcpCit7CisJaW50IHJldCA9IDA7CisKKwlz d2l0Y2ggKGJsb2NrKSB7CisJY2FzZSBQSE1fQXNpY0Jsb2NrX1VWRF9NVkM6CisJY2FzZSBQSE1f QXNpY0Jsb2NrX1VWRDoKKwljYXNlIFBITV9Bc2ljQmxvY2tfVVZEX0hEOgorCWNhc2UgUEhNX0Fz aWNCbG9ja19VVkRfU0Q6CisJCWlmIChnYXRpbmcgPT0gUEhNX0Nsb2NrR2F0ZVNldHRpbmdfU3Rh dGljT2ZmKQorCQkJcmV0ID0gY3pfZHBtX3Bvd2VyZG93bl91dmQoaHdtZ3IpOworCQllbHNlCisJ CQlyZXQgPSBjel9kcG1fcG93ZXJ1cF91dmQoaHdtZ3IpOworCQlicmVhazsKKwljYXNlIFBITV9B c2ljQmxvY2tfR0ZYOgorCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKworCXJldHVybiByZXQ7Cit9 CisKKworYm9vbCBjel9waG1faXNfc2FmZV9mb3JfYXNpY19ibG9jayhzdHJ1Y3QgcHBfaHdtZ3Ig Kmh3bWdyLCBjb25zdCBzdHJ1Y3QgcHBfaHdfcG93ZXJfc3RhdGUgKnN0YXRlLCBlbnVtIFBITV9B c2ljQmxvY2sgYmxvY2spCit7CisJcmV0dXJuIHRydWU7Cit9CisKKworaW50IGN6X3BobV9lbmFi bGVfZGlzYWJsZV9nZnhfcG93ZXJfZ2F0aW5nKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIGJvb2wg ZW5hYmxlKQoreworCXJldHVybiAwOworfQorCitpbnQgY3pfcGhtX3NtdV9wb3dlcl91cF9kb3du X3BjaWUoc3RydWN0IHBwX2h3bWdyICpod21nciwgdWludDMyX3QgdGFyZ2V0LCBib29sIHVwLCB1 aW50MzJfdCBhcmdzKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30KKworaW50IGN6X3Bo bV9pbml0aWFsaXplX2Rpc3BsYXlfcGh5X2FjY2VzcyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBi b29sIGluaXRpYWxpemUsIGJvb2wgYWNjZXNzaHcpCit7CisJLyogVE9ETyAqLworCXJldHVybiAw OworfQorCitpbnQgY3pfcGhtX2dldF9kaXNwbGF5X3BoeV9hY2Nlc3NfaW5mbyhzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30KKworaW50IGN6X3Bo bV9nYXRlX3VudXNlZF9kaXNwbGF5X3BoeXMoc3RydWN0IHBwX2h3bWdyICpod21ncikKK3sKKwkv KiBUT0RPICovCisJcmV0dXJuIDA7Cit9CisKK2ludCBjel9waG1fdW5nYXRlX2FsbF9kaXNwbGF5 X3BoeXMoc3RydWN0IHBwX2h3bWdyICpod21ncikKK3sKKwkvKiBUT0RPICovCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgY3pfdGZfdXZkX3Bvd2VyX2dhdGluZ19pbml0aWFsaXplKHN0cnVj dCBwcF9od21nciAqaHdtZ3IsIHZvaWQgKnBJbnB1dCwgdm9pZCAqcE91dHB1dCwgdm9pZCAqcFN0 b3JhZ2UsIGludCBSZXN1bHQpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY3pfdGZf dmNlX3Bvd2VyX2dhdGluZ19pbml0aWFsaXplKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHZvaWQg KnBJbnB1dCwgdm9pZCAqcE91dHB1dCwgdm9pZCAqcFN0b3JhZ2UsIGludCBSZXN1bHQpCit7CisJ cmV0dXJuIDA7Cit9CisKK2ludCBjel9lbmFibGVfZGlzYWJsZV91dmRfZHBtKHN0cnVjdCBwcF9o d21nciAqaHdtZ3IsIGJvb2wgZW5hYmxlKQoreworCXN0cnVjdCBjel9od21nciAqY3pfaHdtZ3Ig PSAoc3RydWN0IGN6X2h3bWdyICopKGh3bWdyLT5iYWNrZW5kKTsKKwl1aW50MzJfdCBkcG1fZmVh dHVyZXMgPSAwOworCisJaWYgKGVuYWJsZSAmJgorCQlwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBs YXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAorCQkJCSAgUEhNX1BsYXRmb3JtQ2Fwc19V VkREUE0pKSB7CisJCWN6X2h3bWdyLT5kcG1fZmxhZ3MgfD0gRFBNRmxhZ3NfVVZEX0VuYWJsZWQ7 CisJCWRwbV9mZWF0dXJlcyB8PSBVVkRfRFBNX01BU0s7CisJCXNtdW1fc2VuZF9tc2dfdG9fc21j X3dpdGhfcGFyYW1ldGVyKGh3bWdyLT5zbXVtZ3IsCisJCQkgICAgUFBTTUNfTVNHX0VuYWJsZUFs bFNtdUZlYXR1cmVzLCBkcG1fZmVhdHVyZXMpOworCX0gZWxzZSB7CisJCWRwbV9mZWF0dXJlcyB8 PSBVVkRfRFBNX01BU0s7CisJCWN6X2h3bWdyLT5kcG1fZmxhZ3MgJj0gfkRQTUZsYWdzX1VWRF9F bmFibGVkOworCQlzbXVtX3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcihod21nci0+c211 bWdyLAorCQkJICAgUFBTTUNfTVNHX0Rpc2FibGVBbGxTbXVGZWF0dXJlcywgZHBtX2ZlYXR1cmVz KTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2ludCBjel9lbmFibGVfZGlzYWJsZV92Y2VfZHBtKHN0 cnVjdCBwcF9od21nciAqaHdtZ3IsIGJvb2wgZW5hYmxlKQoreworCXN0cnVjdCBjel9od21nciAq Y3pfaHdtZ3IgPSAoc3RydWN0IGN6X2h3bWdyICopKGh3bWdyLT5iYWNrZW5kKTsKKwl1aW50MzJf dCBkcG1fZmVhdHVyZXMgPSAwOworCisJaWYgKGVuYWJsZSAmJiBwaG1fY2FwX2VuYWJsZWQoCisJ CQkJaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAorCQkJCVBITV9QbGF0 Zm9ybUNhcHNfVkNFRFBNKSkgeworCQljel9od21nci0+ZHBtX2ZsYWdzIHw9IERQTUZsYWdzX1ZD RV9FbmFibGVkOworCQlkcG1fZmVhdHVyZXMgfD0gVkNFX0RQTV9NQVNLOworCQlzbXVtX3NlbmRf bXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcihod21nci0+c211bWdyLAorCQkJICAgIFBQU01DX01T R19FbmFibGVBbGxTbXVGZWF0dXJlcywgZHBtX2ZlYXR1cmVzKTsKKwl9IGVsc2UgeworCQlkcG1f ZmVhdHVyZXMgfD0gVkNFX0RQTV9NQVNLOworCQljel9od21nci0+ZHBtX2ZsYWdzICY9IH5EUE1G bGFnc19WQ0VfRW5hYmxlZDsKKwkJc211bV9zZW5kX21zZ190b19zbWNfd2l0aF9wYXJhbWV0ZXIo aHdtZ3ItPnNtdW1nciwKKwkJCSAgIFBQU01DX01TR19EaXNhYmxlQWxsU211RmVhdHVyZXMsIGRw bV9mZWF0dXJlcyk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKworaW50IGN6X2RwbV9wb3dlcmdh dGVfdXZkKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIGJvb2wgYmdhdGUpCit7CisJc3RydWN0IGN6 X2h3bWdyICpjel9od21nciA9IChzdHJ1Y3QgY3pfaHdtZ3IgKikoaHdtZ3ItPmJhY2tlbmQpOwor CisJaWYgKGN6X2h3bWdyLT51dmRfcG93ZXJfZ2F0ZWQgPT0gYmdhdGUpCisJCXJldHVybiAwOwor CisJY3pfaHdtZ3ItPnV2ZF9wb3dlcl9nYXRlZCA9IGJnYXRlOworCisJaWYgKGJnYXRlKSB7CisJ CWNnc19zZXRfY2xvY2tnYXRpbmdfc3RhdGUoaHdtZ3ItPmRldmljZSwKKwkJCQkJCUFNRF9JUF9C TE9DS19UWVBFX1VWRCwKKwkJCQkJCUFNRF9DR19TVEFURV9VTkdBVEUpOworCQljZ3Nfc2V0X3Bv d2VyZ2F0aW5nX3N0YXRlKGh3bWdyLT5kZXZpY2UsCisJCQkJCQlBTURfSVBfQkxPQ0tfVFlQRV9V VkQsCisJCQkJCQlBTURfUEdfU1RBVEVfR0FURSk7CisJCWN6X2RwbV91cGRhdGVfdXZkX2RwbSho d21nciwgdHJ1ZSk7CisJCWN6X2RwbV9wb3dlcmRvd25fdXZkKGh3bWdyKTsKKwl9IGVsc2Ugewor CQljel9kcG1fcG93ZXJ1cF91dmQoaHdtZ3IpOworCQljZ3Nfc2V0X2Nsb2NrZ2F0aW5nX3N0YXRl KGh3bWdyLT5kZXZpY2UsCisJCQkJCQlBTURfSVBfQkxPQ0tfVFlQRV9VVkQsCisJCQkJCQlBTURf UEdfU1RBVEVfR0FURSk7CisJCWNnc19zZXRfcG93ZXJnYXRpbmdfc3RhdGUoaHdtZ3ItPmRldmlj ZSwKKwkJCQkJCUFNRF9JUF9CTE9DS19UWVBFX1VWRCwKKwkJCQkJCUFNRF9DR19TVEFURV9VTkdB VEUpOworCQljel9kcG1fdXBkYXRlX3V2ZF9kcG0oaHdtZ3IsIGZhbHNlKTsKKwl9CisKKwlyZXR1 cm4gMDsKK30KKworaW50IGN6X2RwbV9wb3dlcmdhdGVfdmNlKHN0cnVjdCBwcF9od21nciAqaHdt Z3IsIGJvb2wgYmdhdGUpCit7CisJc3RydWN0IGN6X2h3bWdyICpjel9od21nciA9IChzdHJ1Y3Qg Y3pfaHdtZ3IgKikoaHdtZ3ItPmJhY2tlbmQpOworCisJaWYgKHBobV9jYXBfZW5hYmxlZChod21n ci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsCisJCQkJCVBITV9QbGF0Zm9ybUNh cHNfVkNFUG93ZXJHYXRpbmcpKSB7CisJCWlmIChjel9od21nci0+dmNlX3Bvd2VyX2dhdGVkICE9 IGJnYXRlKSB7CisJCQlpZiAoYmdhdGUpIHsKKwkJCQljZ3Nfc2V0X2Nsb2NrZ2F0aW5nX3N0YXRl KAorCQkJCQkJCWh3bWdyLT5kZXZpY2UsCisJCQkJCQkJQU1EX0lQX0JMT0NLX1RZUEVfVkNFLAor CQkJCQkJCUFNRF9DR19TVEFURV9VTkdBVEUpOworCQkJCWNnc19zZXRfcG93ZXJnYXRpbmdfc3Rh dGUoCisJCQkJCQkJaHdtZ3ItPmRldmljZSwKKwkJCQkJCQlBTURfSVBfQkxPQ0tfVFlQRV9WQ0Us CisJCQkJCQkJQU1EX1BHX1NUQVRFX0dBVEUpOworCQkJCWN6X2VuYWJsZV9kaXNhYmxlX3ZjZV9k cG0oaHdtZ3IsIGZhbHNlKTsKKwkJCS8qIFRPRE86IHRvIGZpZ3VyZSBvdXQgd2h5IHZjZSBjYW4n dCBiZSBwb3dlcm9mZiovCisJCQkJY3pfaHdtZ3ItPnZjZV9wb3dlcl9nYXRlZCA9IHRydWU7CisJ CQl9IGVsc2UgeworCQkJCWN6X2RwbV9wb3dlcnVwX3ZjZShod21ncik7CisJCQkJY3pfaHdtZ3It PnZjZV9wb3dlcl9nYXRlZCA9IGZhbHNlOworCQkJCWNnc19zZXRfY2xvY2tnYXRpbmdfc3RhdGUo CisJCQkJCQkJaHdtZ3ItPmRldmljZSwKKwkJCQkJCQlBTURfSVBfQkxPQ0tfVFlQRV9WQ0UsCisJ CQkJCQkJQU1EX1BHX1NUQVRFX0dBVEUpOworCQkJCWNnc19zZXRfcG93ZXJnYXRpbmdfc3RhdGUo CisJCQkJCQkJaHdtZ3ItPmRldmljZSwKKwkJCQkJCQlBTURfSVBfQkxPQ0tfVFlQRV9WQ0UsCisJ CQkJCQkJQU1EX0NHX1NUQVRFX1VOR0FURSk7CisJCQkJY3pfZHBtX3VwZGF0ZV92Y2VfZHBtKGh3 bWdyKTsKKwkJCQljel9lbmFibGVfZGlzYWJsZV92Y2VfZHBtKGh3bWdyLCB0cnVlKTsKKwkJCQly ZXR1cm4gMDsKKwkJCX0KKwkJfQorCX0gZWxzZSB7CisJCWN6X2RwbV91cGRhdGVfdmNlX2RwbSho d21ncik7CisJCWN6X2VuYWJsZV9kaXNhYmxlX3ZjZV9kcG0oaHdtZ3IsIHRydWUpOworCQlyZXR1 cm4gMDsKKwl9CisKKwlpZiAoIWN6X2h3bWdyLT52Y2VfcG93ZXJfZ2F0ZWQpCisJCWN6X2RwbV91 cGRhdGVfdmNlX2RwbShod21ncik7CisKKwlyZXR1cm4gMDsKK30KKworCitzdGF0aWMgc3RydWN0 IHBobV9tYXN0ZXJfdGFibGVfaXRlbSBjel9lbmFibGVfY2xvY2tfcG93ZXJfZ2F0aW5nc19saXN0 W10gPSB7CisJLyp3ZSBkb24ndCBuZWVkIGFuIGV4aXQgdGFibGUgaGVyZSwgYmVjYXVzZSB0aGVy ZSBpcyBvbmx5IEQzIGNvbGQgb24gS3YqLworCXsgcGhtX2NmX3dhbnRfdXZkX3Bvd2VyX2dhdGlu ZywgY3pfdGZfdXZkX3Bvd2VyX2dhdGluZ19pbml0aWFsaXplIH0sCisJeyBwaG1fY2Zfd2FudF92 Y2VfcG93ZXJfZ2F0aW5nLCBjel90Zl92Y2VfcG93ZXJfZ2F0aW5nX2luaXRpYWxpemUgfSwKKwkv KiB0byBkbyB7IE5VTEwsIGN6X3RmX3hkbWFfcG93ZXJfZ2F0aW5nX2VuYWJsZSB9LCAqLworCXsg TlVMTCwgTlVMTCB9Cit9OworCitzdHJ1Y3QgcGhtX21hc3Rlcl90YWJsZV9oZWFkZXIgY3pfcGht X2VuYWJsZV9jbG9ja19wb3dlcl9nYXRpbmdzX21hc3RlciA9IHsKKwkwLAorCVBITV9NYXN0ZXJU YWJsZUZsYWdfTm9uZSwKKwljel9lbmFibGVfY2xvY2tfcG93ZXJfZ2F0aW5nc19saXN0Cit9Owpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvY3pfY2xvY2tw b3dlcmdhdGluZy5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvY3pfY2xv Y2twb3dlcmdhdGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYmMw NTcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21n ci9jel9jbG9ja3Bvd2VyZ2F0aW5nLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdo dCAyMDE1IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu Y2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBT b2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5H IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAg SU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihT KSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisg KiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisg Ki8KKworI2lmbmRlZiBfQ1pfQ0xPQ0tfUE9XRVJfR0FUSU5HX0hfCisjZGVmaW5lIF9DWl9DTE9D S19QT1dFUl9HQVRJTkdfSF8KKworI2luY2x1ZGUgImN6X2h3bWdyLmgiCisjaW5jbHVkZSAicHBf YXNpY2Jsb2Nrcy5oIgorCitleHRlcm4gaW50IGN6X3BobV9zZXRfYXNpY19ibG9ja19nYXRpbmco c3RydWN0IHBwX2h3bWdyICpod21nciwgZW51bSBQSE1fQXNpY0Jsb2NrIGJsb2NrLCBlbnVtIFBI TV9DbG9ja0dhdGVTZXR0aW5nIGdhdGluZyk7CitleHRlcm4gc3RydWN0IHBobV9tYXN0ZXJfdGFi bGVfaGVhZGVyIGN6X3BobV9lbmFibGVfY2xvY2tfcG93ZXJfZ2F0aW5nc19tYXN0ZXI7CitleHRl cm4gc3RydWN0IHBobV9tYXN0ZXJfdGFibGVfaGVhZGVyIGN6X3BobV9kaXNhYmxlX2Nsb2NrX3Bv d2VyX2dhdGluZ3NfbWFzdGVyOworZXh0ZXJuIGludCBjel9kcG1fcG93ZXJnYXRlX3ZjZShzdHJ1 Y3QgcHBfaHdtZ3IgKmh3bWdyLCBib29sIGJnYXRlKTsKK2V4dGVybiBpbnQgY3pfZHBtX3Bvd2Vy Z2F0ZV91dmQoc3RydWN0IHBwX2h3bWdyICpod21nciwgYm9vbCBiZ2F0ZSk7CitleHRlcm4gaW50 IGN6X2VuYWJsZV9kaXNhYmxlX3ZjZV9kcG0oc3RydWN0IHBwX2h3bWdyICpod21nciwgYm9vbCBl bmFibGUpOworZXh0ZXJuIGludCBjel9lbmFibGVfZGlzYWJsZV91dmRfZHBtKHN0cnVjdCBwcF9o d21nciAqaHdtZ3IsIGJvb2wgZW5hYmxlKTsKKyNlbmRpZiAvKiBfQ1pfQ0xPQ0tfUE9XRVJfR0FU SU5HX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21n ci9jel9od21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvY3pfaHdt Z3IuYwppbmRleCAwYzQ5NTA1Li5lMTg3YjNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL3Bvd2VycGxheS9od21nci9jel9od21nci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv cG93ZXJwbGF5L2h3bWdyL2N6X2h3bWdyLmMKQEAgLTI4LDEyICsyOCwyMyBAQAogI2luY2x1ZGUg InByb2Nlc3NwcHRhYmxlcy5oIgogI2luY2x1ZGUgImNnc19jb21tb24uaCIKICNpbmNsdWRlICJz bXUvc211XzhfMF9kLmgiCisjaW5jbHVkZSAic211OF9mdXNpb24uaCIKKyNpbmNsdWRlICJzbXUv c211XzhfMF9zaF9tYXNrLmgiCiAjaW5jbHVkZSAic211bWdyLmgiCiAjaW5jbHVkZSAiaHdtZ3Iu aCIKICNpbmNsdWRlICJoYXJkd2FyZW1hbmFnZXIuaCIKICNpbmNsdWRlICJjel9wcHNtYy5oIgog I2luY2x1ZGUgImN6X2h3bWdyLmgiCiAjaW5jbHVkZSAicG93ZXJfc3RhdGUuaCIKKyNpbmNsdWRl ICJjel9jbG9ja3Bvd2VyZ2F0aW5nLmgiCisKKworI2RlZmluZSBpeFNNVVNWSV9OQl9DVVJSRU5U VklEIDB4RDgyMzAwNDQKKyNkZWZpbmUgQ1VSUkVOVF9OQl9WSURfTUFTSyAweGZmMDAwMDAwCisj ZGVmaW5lIENVUlJFTlRfTkJfVklEX19TSElGVCAyNAorI2RlZmluZSBpeFNNVVNWSV9HRlhfQ1VS UkVOVFZJRCAgMHhEODIzMDA0OAorI2RlZmluZSBDVVJSRU5UX0dGWF9WSURfTUFTSyAweGZmMDAw MDAwCisjZGVmaW5lIENVUlJFTlRfR0ZYX1ZJRF9fU0hJRlQgMjQKIAogc3RhdGljIGNvbnN0IHVu c2lnbmVkIGxvbmcgUGh3Q3pfTWFnaWMgPSAodW5zaWduZWQgbG9uZykgUEhNX0N6X01hZ2ljOwog CkBAIC00NSw2ICs1Niw0NiBAQCBzdGF0aWMgc3RydWN0IGN6X3Bvd2VyX3N0YXRlICpjYXN0X1Bo d0N6UG93ZXJTdGF0ZShzdHJ1Y3QgcHBfaHdfcG93ZXJfc3RhdGUgKmh3XwogCXJldHVybiAoc3Ry dWN0IGN6X3Bvd2VyX3N0YXRlICopaHdfcHM7CiB9CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY3pf cG93ZXJfc3RhdGUgKmNhc3RfY29uc3RfUGh3Q3pQb3dlclN0YXRlKAorCQkJCWNvbnN0IHN0cnVj dCBwcF9od19wb3dlcl9zdGF0ZSAqaHdfcHMpCit7CisJaWYgKFBod0N6X01hZ2ljICE9IGh3X3Bz LT5tYWdpYykKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gKHN0cnVjdCBjel9wb3dlcl9zdGF0 ZSAqKWh3X3BzOworfQorCit1aW50MzJfdCBjel9nZXRfZWNsa19sZXZlbChzdHJ1Y3QgcHBfaHdt Z3IgKmh3bWdyLAorCQkJCQl1aW50MzJfdCBjbG9jaywgdWludDMyX3QgbXNnKQoreworCWludCBp ID0gMDsKKwlzdHJ1Y3QgcGhtX3ZjZV9jbG9ja192b2x0YWdlX2RlcGVuZGVuY3lfdGFibGUgKnB0 YWJsZSA9CisJCWh3bWdyLT5keW5fc3RhdGUudmNlX2Nsb2NsX3ZvbHRhZ2VfZGVwZW5kZW5jeV90 YWJsZTsKKworCXN3aXRjaCAobXNnKSB7CisJY2FzZSBQUFNNQ19NU0dfU2V0RWNsa1NvZnRNaW46 CisJY2FzZSBQUFNNQ19NU0dfU2V0RWNsa0hhcmRNaW46CisJCWZvciAoaSA9IDA7IGkgPCAoaW50 KXB0YWJsZS0+Y291bnQ7IGkrKykgeworCQkJaWYgKGNsb2NrIDw9IHB0YWJsZS0+ZW50cmllc1tp XS5lY2NsaykKKwkJCQlicmVhazsKKwkJfQorCQlicmVhazsKKworCWNhc2UgUFBTTUNfTVNHX1Nl dEVjbGtTb2Z0TWF4OgorCWNhc2UgUFBTTUNfTVNHX1NldEVjbGtIYXJkTWF4OgorCQlmb3IgKGkg PSBwdGFibGUtPmNvdW50IC0gMTsgaSA+PSAwOyBpLS0pIHsKKwkJCWlmIChjbG9jayA+PSBwdGFi bGUtPmVudHJpZXNbaV0uZWNjbGspCisJCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisKKwlkZWZh dWx0OgorCQlicmVhazsKKwl9CisKKwlyZXR1cm4gaTsKK30KKwogc3RhdGljIHVpbnQzMl90IGN6 X2dldF9zY2xrX2xldmVsKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCiAJCQkJdWludDMyX3QgY2xv Y2ssIHVpbnQzMl90IG1zZykKIHsKQEAgLTc1LDYgKzEyNiwzNyBAQCBzdGF0aWMgdWludDMyX3Qg Y3pfZ2V0X3NjbGtfbGV2ZWwoc3RydWN0IHBwX2h3bWdyICpod21nciwKIAlyZXR1cm4gaTsKIH0K IAorc3RhdGljIHVpbnQzMl90IGN6X2dldF91dmRfbGV2ZWwoc3RydWN0IHBwX2h3bWdyICpod21n ciwKKwkJCQkJdWludDMyX3QgY2xvY2ssIHVpbnQzMl90IG1zZykKK3sKKwlpbnQgaSA9IDA7CisJ c3RydWN0IHBobV91dmRfY2xvY2tfdm9sdGFnZV9kZXBlbmRlbmN5X3RhYmxlICpwdGFibGUgPQor CQlod21nci0+ZHluX3N0YXRlLnV2ZF9jbG9jbF92b2x0YWdlX2RlcGVuZGVuY3lfdGFibGU7CisK Kwlzd2l0Y2ggKG1zZykgeworCWNhc2UgUFBTTUNfTVNHX1NldFV2ZFNvZnRNaW46CisJY2FzZSBQ UFNNQ19NU0dfU2V0VXZkSGFyZE1pbjoKKwkJZm9yIChpID0gMDsgaSA8IChpbnQpcHRhYmxlLT5j b3VudDsgaSsrKSB7CisJCQlpZiAoY2xvY2sgPD0gcHRhYmxlLT5lbnRyaWVzW2ldLnZjbGspCisJ CQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisKKwljYXNlIFBQU01DX01TR19TZXRVdmRTb2Z0TWF4 OgorCWNhc2UgUFBTTUNfTVNHX1NldFV2ZEhhcmRNYXg6CisJCWZvciAoaSA9IHB0YWJsZS0+Y291 bnQgLSAxOyBpID49IDA7IGktLSkgeworCQkJaWYgKGNsb2NrID49IHB0YWJsZS0+ZW50cmllc1tp XS52Y2xrKQorCQkJCWJyZWFrOworCQl9CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJYnJlYWs7 CisJfQorCisJcmV0dXJuIGk7Cit9CisKIHN0YXRpYyB1aW50MzJfdCBjel9nZXRfbWF4X3NjbGtf bGV2ZWwoc3RydWN0IHBwX2h3bWdyICpod21ncikKIHsKIAlzdHJ1Y3QgY3pfaHdtZ3IgKmN6X2h3 bWdyID0gKHN0cnVjdCBjel9od21nciAqKShod21nci0+YmFja2VuZCk7CkBAIC01MDQsNiArNTg2 LDE3NSBAQCBzdGF0aWMgaW50IGN6X3RmX2luaXRfc2Nsa190aHJlc2hvbGQoc3RydWN0IHBwX2h3 bWdyICpod21nciwgdm9pZCAqaW5wdXQsCiAKIAlyZXR1cm4gMDsKIH0KK3N0YXRpYyBpbnQgY3pf dGZfdXBkYXRlX3NjbGtfbGltaXQoc3RydWN0IHBwX2h3bWdyICpod21nciwKKwkJCQkJdm9pZCAq aW5wdXQsIHZvaWQgKm91dHB1dCwKKwkJCQkJdm9pZCAqc3RvcmFnZSwgaW50IHJlc3VsdCkKK3sK KwlzdHJ1Y3QgY3pfaHdtZ3IgKmN6X2h3bWdyID0gKHN0cnVjdCBjel9od21nciAqKShod21nci0+ YmFja2VuZCk7CisJc3RydWN0IHBobV9jbG9ja192b2x0YWdlX2RlcGVuZGVuY3lfdGFibGUgKnRh YmxlID0KKwkJCQkJaHdtZ3ItPmR5bl9zdGF0ZS52ZGRjX2RlcGVuZGVuY3lfb25fc2NsazsKKwor CXVuc2lnbmVkIGxvbmcgY2xvY2sgPSAwOworCXVuc2lnbmVkIGxvbmcgbGV2ZWw7CisJdW5zaWdu ZWQgbG9uZyBzdGFibGVfcHN0YXRlX3NjbGs7CisJc3RydWN0IFBQX0Nsb2NrcyBjbG9ja3M7CisJ dW5zaWduZWQgbG9uZyBwZXJjZW50YWdlOworCisJY3pfaHdtZ3ItPnNjbGtfZHBtLnNvZnRfbWlu X2NsayA9IHRhYmxlLT5lbnRyaWVzWzBdLmNsazsKKwlsZXZlbCA9IGN6X2dldF9tYXhfc2Nsa19s ZXZlbChod21ncikgLSAxOworCisJaWYgKGxldmVsIDwgdGFibGUtPmNvdW50KQorCQljel9od21n ci0+c2Nsa19kcG0uc29mdF9tYXhfY2xrICA9IHRhYmxlLT5lbnRyaWVzW2xldmVsXS5jbGs7CisJ ZWxzZQorCQljel9od21nci0+c2Nsa19kcG0uc29mdF9tYXhfY2xrICA9IHRhYmxlLT5lbnRyaWVz W3RhYmxlLT5jb3VudCAtIDFdLmNsazsKKworCS8qUEVDSV9HZXRNaW5DbG9ja1NldHRpbmdzKHBI d01nci0+cFBFQ0ksICZjbG9ja3MpOyovCisJY2xvY2sgPSBjbG9ja3MuZW5naW5lQ2xvY2s7CisK KwlpZiAoY3pfaHdtZ3ItPnNjbGtfZHBtLmhhcmRfbWluX2NsayAhPSBjbG9jaykgeworCQljel9o d21nci0+c2Nsa19kcG0uaGFyZF9taW5fY2xrID0gY2xvY2s7CisKKwkJc211bV9zZW5kX21zZ190 b19zbWNfd2l0aF9wYXJhbWV0ZXIoaHdtZ3ItPnNtdW1nciwKKwkJCQkJCVBQU01DX01TR19TZXRT Y2xrSGFyZE1pbiwKKwkJCQkJCSBjel9nZXRfc2Nsa19sZXZlbChod21nciwKKwkJCQkJY3pfaHdt Z3ItPnNjbGtfZHBtLmhhcmRfbWluX2NsaywKKwkJCQkJICAgICBQUFNNQ19NU0dfU2V0U2Nsa0hh cmRNaW4pKTsKKwl9CisKKwljbG9jayA9IGN6X2h3bWdyLT5zY2xrX2RwbS5zb2Z0X21pbl9jbGs7 CisKKwkvKiB1cGRhdGUgbWluaW11bSBjbG9ja3MgZm9yIFN0YWJsZSBQLVN0YXRlIGZlYXR1cmUg Ki8KKwlpZiAocGhtX2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRm b3JtQ2FwcywKKwkJCQkgICAgIFBITV9QbGF0Zm9ybUNhcHNfU3RhYmxlUFN0YXRlKSkgeworCQlw ZXJjZW50YWdlID0gNzU7CisJCS8qU2NsayAtIGNhbGN1bGF0ZSBzY2xrIHZhbHVlIGJhc2VkIG9u IHBlcmNlbnRhZ2UgYW5kIGZpbmQgRkxPT1Igc2NsayBmcm9tIFZkZGNEZXBlbmRlbmN5T25TQ0xL IHRhYmxlICAqLworCQlzdGFibGVfcHN0YXRlX3NjbGsgPSAoaHdtZ3ItPmR5bl9zdGF0ZS5tYXhf Y2xvY2tfdm9sdGFnZV9vbl9hYy5tY2xrICoKKwkJCQkJcGVyY2VudGFnZSkgLyAxMDA7CisKKwkJ aWYgKGNsb2NrIDwgc3RhYmxlX3BzdGF0ZV9zY2xrKQorCQkJY2xvY2sgPSBzdGFibGVfcHN0YXRl X3NjbGs7CisJfSBlbHNlIHsKKwkJaWYgKGNsb2NrIDwgaHdtZ3ItPmdmeF9hcmJpdGVyLnNjbGsp CisJCQljbG9jayA9IGh3bWdyLT5nZnhfYXJiaXRlci5zY2xrOworCX0KKworCWlmIChjel9od21n ci0+c2Nsa19kcG0uc29mdF9taW5fY2xrICE9IGNsb2NrKSB7CisJCWN6X2h3bWdyLT5zY2xrX2Rw bS5zb2Z0X21pbl9jbGsgPSBjbG9jazsKKwkJc211bV9zZW5kX21zZ190b19zbWNfd2l0aF9wYXJh bWV0ZXIoaHdtZ3ItPnNtdW1nciwKKwkJCQkJCVBQU01DX01TR19TZXRTY2xrU29mdE1pbiwKKwkJ CQkJCWN6X2dldF9zY2xrX2xldmVsKGh3bWdyLAorCQkJCQljel9od21nci0+c2Nsa19kcG0uc29m dF9taW5fY2xrLAorCQkJCQkgICAgIFBQU01DX01TR19TZXRTY2xrU29mdE1pbikpOworCX0KKwor CWlmIChwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1D YXBzLAorCQkJCSAgICBQSE1fUGxhdGZvcm1DYXBzX1N0YWJsZVBTdGF0ZSkgJiYKKwkJCSBjel9o d21nci0+c2Nsa19kcG0uc29mdF9tYXhfY2xrICE9IGNsb2NrKSB7CisJCWN6X2h3bWdyLT5zY2xr X2RwbS5zb2Z0X21heF9jbGsgPSBjbG9jazsKKwkJc211bV9zZW5kX21zZ190b19zbWNfd2l0aF9w YXJhbWV0ZXIoaHdtZ3ItPnNtdW1nciwKKwkJCQkJCVBQU01DX01TR19TZXRTY2xrU29mdE1heCwK KwkJCQkJCWN6X2dldF9zY2xrX2xldmVsKGh3bWdyLAorCQkJCQljel9od21nci0+c2Nsa19kcG0u c29mdF9tYXhfY2xrLAorCQkJCQlQUFNNQ19NU0dfU2V0U2Nsa1NvZnRNYXgpKTsKKwl9CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjel90Zl9zZXRfZGVlcF9zbGVlcF9zY2xrX3RocmVz aG9sZChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLAorCQkJCQl2b2lkICppbnB1dCwgdm9pZCAqb3V0 cHV0LAorCQkJCQl2b2lkICpzdG9yYWdlLCBpbnQgcmVzdWx0KQoreworCWlmIChwaG1fY2FwX2Vu YWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAorCQkJCSAgICBQ SE1fUGxhdGZvcm1DYXBzX1NjbGtEZWVwU2xlZXApKSB7CisJCS8qIFRPIERPIGdldCBmcm9tIGRh bCBQRUNJX0dldE1pbkNsb2NrU2V0dGluZ3MocEh3TWdyLT5wUEVDSSwgJmNsb2Nrcyk7ICovCisJ CXNtdW1fc2VuZF9tc2dfdG9fc21jX3dpdGhfcGFyYW1ldGVyKGh3bWdyLT5zbXVtZ3IsCisJCQkJ CSAgUFBTTUNfTVNHX1NldE1pbkRlZXBTbGVlcFNjbGssCisJCQkJCQlDWl9NSU5fREVFUF9TTEVF UF9TQ0xLKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjel90Zl9zZXRfd2F0 ZXJtYXJrX3RocmVzaG9sZChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLAorCQkJCQl2b2lkICppbnB1 dCwgdm9pZCAqb3V0cHV0LAorCQkJCQl2b2lkICpzdG9yYWdlLCBpbnQgcmVzdWx0KQoreworCXN0 cnVjdCBjel9od21nciAqY3pfaHdtZ3IgPQorCQkJCSAgKHN0cnVjdCBjel9od21nciAqKShod21n ci0+YmFja2VuZCk7CisKKwlzbXVtX3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcihod21n ci0+c211bWdyLAorCQkJCQlQUFNNQ19NU0dfU2V0V2F0ZXJtYXJrRnJlcXVlbmN5LAorCQkJCSAg ICAgIGN6X2h3bWdyLT5zY2xrX2RwbS5zb2Z0X21heF9jbGspOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgY3pfdGZfc2V0X2VuYWJsZWRfbGV2ZWxzKHN0cnVjdCBwcF9od21nciAqaHdt Z3IsCisJCQkJCXZvaWQgKmlucHV0LCB2b2lkICpvdXRwdXQsCisJCQkJCXZvaWQgKnN0b3JhZ2Us IGludCByZXN1bHQpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY3pfdGZfZW5hYmxl X25iX2RwbShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLAorCQkJCQl2b2lkICppbnB1dCwgdm9pZCAq b3V0cHV0LAorCQkJCQl2b2lkICpzdG9yYWdlLCBpbnQgcmVzdWx0KQoreworCWludCByZXQgPSAw OworCXN0cnVjdCBjel9od21nciAqY3pfaHdtZ3IgPQorCQkJCSAgKHN0cnVjdCBjel9od21nciAq KShod21nci0+YmFja2VuZCk7CisJdW5zaWduZWQgbG9uZyBkcG1fZmVhdHVyZXMgPSAwOworCisJ aWYgKCFjel9od21nci0+aXNfbmJfZHBtX2VuYWJsZWQgJiYKKwkJY3pfaHdtZ3ItPmlzX25iX2Rw bV9lbmFibGVkX2J5X2RyaXZlcikgewkJLyogYWxzbyBkZXBlbmQgb24gZGFsIE5CUFN0YXRlRGlz YWJsZVJlcXVpcmVkICovCisJCWRwbV9mZWF0dXJlcyB8PSBOQl9EUE1fTUFTSzsKKwkJcmV0ID0g c211bV9zZW5kX21zZ190b19zbWNfd2l0aF9wYXJhbWV0ZXIoCisJCQkJCQkJICAgICBod21nci0+ c211bWdyLAorCQkJCQkgUFBTTUNfTVNHX0VuYWJsZUFsbFNtdUZlYXR1cmVzLAorCQkJCQkJCSAg ICAgZHBtX2ZlYXR1cmVzKTsKKwkJaWYgKHJldCA9PSAwKQorCQkJY3pfaHdtZ3ItPmlzX25iX2Rw bV9lbmFibGVkID0gdHJ1ZTsKKwl9CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBjel90 Zl91cGRhdGVfbG93X21lbV9wc3RhdGUoc3RydWN0IHBwX2h3bWdyICpod21nciwKKwkJCQkJdm9p ZCAqaW5wdXQsIHZvaWQgKm91dHB1dCwKKwkJCQkJdm9pZCAqc3RvcmFnZSwgaW50IHJlc3VsdCkK K3sKKworCXN0cnVjdCBjel9od21nciAqY3pfaHdtZ3IgPQorCQkJCSAgKHN0cnVjdCBjel9od21n ciAqKShod21nci0+YmFja2VuZCk7CisJY29uc3Qgc3RydWN0IHBobV9zZXRfcG93ZXJfc3RhdGVf aW5wdXQgKnN0YXRlcyA9IChzdHJ1Y3QgcGhtX3NldF9wb3dlcl9zdGF0ZV9pbnB1dCAqKWlucHV0 OworCWNvbnN0IHN0cnVjdCBjel9wb3dlcl9zdGF0ZSAqcG5ld19zdGF0ZSA9IGNhc3RfY29uc3Rf UGh3Q3pQb3dlclN0YXRlKHN0YXRlcy0+cG5ld19zdGF0ZSk7CisKKwlpZiAoY3pfaHdtZ3ItPnN5 c19pbmZvLm5iX2RwbV9lbmFibGUpIHsKKwkJaWYgKHBuZXdfc3RhdGUtPmFjdGlvbiA9PSBGT1JD RV9ISUdIKQorCQkJc211bV9zZW5kX21zZ190b19zbWMoaHdtZ3ItPnNtdW1nciwKKwkJCQkgICAg UFBTTUNfTVNHX0Rpc2FibGVMb3dNZW1vcnlQc3RhdGUpOworCQllbHNlCisJCQlzbXVtX3NlbmRf bXNnX3RvX3NtYyhod21nci0+c211bWdyLAorCQkJCSAgICAgUFBTTUNfTVNHX0VuYWJsZUxvd01l bW9yeVBzdGF0ZSk7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHBobV9tYXN0 ZXJfdGFibGVfaXRlbSBjel9zZXRfcG93ZXJfc3RhdGVfbGlzdFtdID0geworCXtOVUxMLCBjel90 Zl91cGRhdGVfc2Nsa19saW1pdH0sCisJe05VTEwsIGN6X3RmX3NldF9kZWVwX3NsZWVwX3NjbGtf dGhyZXNob2xkfSwKKwl7TlVMTCwgY3pfdGZfc2V0X3dhdGVybWFya190aHJlc2hvbGR9LAorCXtO VUxMLCBjel90Zl9zZXRfZW5hYmxlZF9sZXZlbHN9LAorCXtOVUxMLCBjel90Zl9lbmFibGVfbmJf ZHBtfSwKKwl7TlVMTCwgY3pfdGZfdXBkYXRlX2xvd19tZW1fcHN0YXRlfSwKKwl7TlVMTCwgTlVM TH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgcGhtX21hc3Rlcl90YWJsZV9oZWFkZXIgY3pfc2V0X3Bv d2VyX3N0YXRlX21hc3RlciA9IHsKKwkwLAorCVBITV9NYXN0ZXJUYWJsZUZsYWdfTm9uZSwKKwlj el9zZXRfcG93ZXJfc3RhdGVfbGlzdAorfTsKIAogc3RhdGljIHN0cnVjdCBwaG1fbWFzdGVyX3Rh YmxlX2l0ZW0gY3pfc2V0dXBfYXNpY19saXN0W10gPSB7CiAJe05VTEwsIGN6X3RmX3Jlc2V0X2Fj dGl2ZV9wcm9jZXNzX21hc2t9LApAQCAtNjQ5LDYgKzkwMCw1NiBAQCBzdGF0aWMgc3RydWN0IHBo bV9tYXN0ZXJfdGFibGVfaGVhZGVyIGN6X2VuYWJsZV9kcG1fbWFzdGVyID0gewogCWN6X2VuYWJs ZV9kcG1fbGlzdAogfTsKIAorc3RhdGljIGludCBjel9hcHBseV9zdGF0ZV9hZGp1c3RfcnVsZXMo c3RydWN0IHBwX2h3bWdyICpod21nciwKKwkJCQlzdHJ1Y3QgcHBfcG93ZXJfc3RhdGUgICpwcmVx dWVzdF9wcywKKwkJCWNvbnN0IHN0cnVjdCBwcF9wb3dlcl9zdGF0ZSAqcGN1cnJlbnRfcHMpCit7 CisJc3RydWN0IGN6X3Bvd2VyX3N0YXRlICpjel9wcyA9CisJCQkJY2FzdF9QaHdDelBvd2VyU3Rh dGUoJnByZXF1ZXN0X3BzLT5oYXJkd2FyZSk7CisKKwljb25zdCBzdHJ1Y3QgY3pfcG93ZXJfc3Rh dGUgKmN6X2N1cnJlbnRfcHMgPQorCQkJCWNhc3RfY29uc3RfUGh3Q3pQb3dlclN0YXRlKCZwY3Vy cmVudF9wcy0+aGFyZHdhcmUpOworCisJc3RydWN0IGN6X2h3bWdyICpjel9od21nciA9IChzdHJ1 Y3QgY3pfaHdtZ3IgKikoaHdtZ3ItPmJhY2tlbmQpOworCXN0cnVjdCBQUF9DbG9ja3MgY2xvY2tz OworCWJvb2wgZm9yY2VfaGlnaDsKKwl1bnNpZ25lZCBsb25nICBudW1fb2ZfYWN0aXZlX2Rpc3Bs YXlzID0gNDsKKworCWN6X3BzLT5ldmNsayA9IGh3bWdyLT52Y2VfYXJiaXRlci5ldmNsazsKKwlj el9wcy0+ZWNjbGsgPSBod21nci0+dmNlX2FyYml0ZXIuZWNjbGs7CisKKwljel9wcy0+bmVlZF9k ZnNfYnlwYXNzID0gdHJ1ZTsKKworCWN6X2h3bWdyLT52aWRlb19zdGFydCA9IChod21nci0+dXZk X2FyYml0ZXIudmNsayAhPSAwIHx8IGh3bWdyLT51dmRfYXJiaXRlci5kY2xrICE9IDAgfHwKKwkJ CQlod21nci0+dmNlX2FyYml0ZXIuZXZjbGsgIT0gMCB8fCBod21nci0+dmNlX2FyYml0ZXIuZWNj bGsgIT0gMCk7CisKKwljel9od21nci0+YmF0dGVyeV9zdGF0ZSA9IChQUF9TdGF0ZVVJTGFiZWxf QmF0dGVyeSA9PSBwcmVxdWVzdF9wcy0+Y2xhc3NpZmljYXRpb24udWlfbGFiZWwpOworCisJLyog dG8gZG8gUEVDSV9HZXRNaW5DbG9ja1NldHRpbmdzKHBId01nci0+cFBFQ0ksICZjbG9ja3MpOyAq LworCS8qIFBFQ0lfR2V0TnVtYmVyT2ZBY3RpdmVEaXNwbGF5cyhwSHdNZ3ItPnBQRUNJLCAmbnVt T2ZBY3RpdmVEaXNwbGF5cyk7ICovCisJaWYgKHBobV9jYXBfZW5hYmxlZChod21nci0+cGxhdGZv cm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsIFBITV9QbGF0Zm9ybUNhcHNfU3RhYmxlUFN0YXRl KSkKKwkJY2xvY2tzLm1lbW9yeUNsb2NrID0gaHdtZ3ItPmR5bl9zdGF0ZS5tYXhfY2xvY2tfdm9s dGFnZV9vbl9hYy5tY2xrOworCWVsc2UKKwkJY2xvY2tzLm1lbW9yeUNsb2NrID0gMDsKKworCWlm IChjbG9ja3MubWVtb3J5Q2xvY2sgPCBod21nci0+Z2Z4X2FyYml0ZXIubWNsaykKKwkJY2xvY2tz Lm1lbW9yeUNsb2NrID0gaHdtZ3ItPmdmeF9hcmJpdGVyLm1jbGs7CisKKwlmb3JjZV9oaWdoID0g KGNsb2Nrcy5tZW1vcnlDbG9jayA+IGN6X2h3bWdyLT5zeXNfaW5mby5uYnBfbWVtb3J5X2Nsb2Nr W0NaX05VTV9OQlBNRU1PUllDTE9DSyAtIDFdKQorCQkJfHwgKG51bV9vZl9hY3RpdmVfZGlzcGxh eXMgPj0gMyk7CisKKwljel9wcy0+YWN0aW9uID0gY3pfY3VycmVudF9wcy0+YWN0aW9uOworCisJ aWYgKChmb3JjZV9oaWdoID09IGZhbHNlKSAmJiAoY3pfcHMtPmFjdGlvbiA9PSBGT1JDRV9ISUdI KSkKKwkJY3pfcHMtPmFjdGlvbiA9IENBTkNFTF9GT1JDRV9ISUdIOworCWVsc2UgaWYgKChmb3Jj ZV9oaWdoID09IHRydWUpICYmIChjel9wcy0+YWN0aW9uICE9IEZPUkNFX0hJR0gpKQorCQljel9w cy0+YWN0aW9uID0gRk9SQ0VfSElHSDsKKwllbHNlCisJCWN6X3BzLT5hY3Rpb24gPSBET19OT1RI SU5HOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgY3pfaHdtZ3JfYmFja2VuZF9pbml0 KHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiB7CiAJaW50IHJlc3VsdCA9IDA7CkBAIC02NzYsMTAg Kzk3NywyOCBAQCBzdGF0aWMgaW50IGN6X2h3bWdyX2JhY2tlbmRfaW5pdChzdHJ1Y3QgcHBfaHdt Z3IgKmh3bWdyKQogCiAJcmVzdWx0ID0gcGhtX2NvbnN0cnVjdF90YWJsZShod21nciwgJmN6X2Rp c2FibGVfZHBtX21hc3RlciwKIAkJCQkmKGh3bWdyLT5kaXNhYmxlX2R5bmFtaWNfc3RhdGVfbWFu YWdlbWVudCkpOwotCisJaWYgKHJlc3VsdCAhPSAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAiWyBw b3dlcnBsYXkgXSBGYWlsIHRvIGRpc2FibGVfZHluYW1pY19zdGF0ZVxuIik7CisJCXJldHVybiBy ZXN1bHQ7CisJfQogCXJlc3VsdCA9IHBobV9jb25zdHJ1Y3RfdGFibGUoaHdtZ3IsICZjel9lbmFi bGVfZHBtX21hc3RlciwKIAkJCQkmKGh3bWdyLT5lbmFibGVfZHluYW1pY19zdGF0ZV9tYW5hZ2Vt ZW50KSk7CisJaWYgKHJlc3VsdCAhPSAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAiWyBwb3dlcnBs YXkgXSBGYWlsIHRvIGVuYWJsZV9keW5hbWljX3N0YXRlXG4iKTsKKwkJcmV0dXJuIHJlc3VsdDsK Kwl9CisJcmVzdWx0ID0gcGhtX2NvbnN0cnVjdF90YWJsZShod21nciwgJmN6X3NldF9wb3dlcl9z dGF0ZV9tYXN0ZXIsCisJCQkJJihod21nci0+c2V0X3Bvd2VyX3N0YXRlKSk7CisJaWYgKHJlc3Vs dCAhPSAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAiWyBwb3dlcnBsYXkgXSBGYWlsIHRvIGNvbnN0 cnVjdCBzZXRfcG93ZXJfc3RhdGVcbiIpOworCQlyZXR1cm4gcmVzdWx0OworCX0KIAorCXJlc3Vs dCA9IHBobV9jb25zdHJ1Y3RfdGFibGUoaHdtZ3IsICZjel9waG1fZW5hYmxlX2Nsb2NrX3Bvd2Vy X2dhdGluZ3NfbWFzdGVyLCAmKGh3bWdyLT5lbmFibGVfY2xvY2tfcG93ZXJfZ2F0aW5ncykpOwor CWlmIChyZXN1bHQgIT0gMCkgeworCQlwcmludGsoS0VSTl9FUlIgIlsgcG93ZXJwbGF5IF0gRmFp bCB0byBjb25zdHJ1Y3QgZW5hYmxlX2Nsb2NrX3Bvd2VyX2dhdGluZ3NcbiIpOworCQlyZXR1cm4g cmVzdWx0OworCX0KIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC03OTMsNiArMTExMiwxMzggQEAg c3RhdGljIGludCBjel9kcG1fZm9yY2VfZHBtX2xldmVsKHN0cnVjdCBwcF9od21nciAqaHdtZ3Is CiAJcmV0dXJuIHJldDsKIH0KIAoraW50IGN6X2RwbV9wb3dlcmRvd25fdXZkKHN0cnVjdCBwcF9o d21nciAqaHdtZ3IpCit7CisJaWYgKHBobV9jYXBfZW5hYmxlZChod21nci0+cGxhdGZvcm1fZGVz Y3JpcHRvci5wbGF0Zm9ybUNhcHMsCisJCQkJCSBQSE1fUGxhdGZvcm1DYXBzX1VWRFBvd2VyR2F0 aW5nKSkKKwkJcmV0dXJuIHNtdW1fc2VuZF9tc2dfdG9fc21jKGh3bWdyLT5zbXVtZ3IsCisJCQkJ CQkgICAgIFBQU01DX01TR19VVkRQb3dlck9GRik7CisJcmV0dXJuIDA7Cit9CisKK2ludCBjel9k cG1fcG93ZXJ1cF91dmQoc3RydWN0IHBwX2h3bWdyICpod21ncikKK3sKKwlpZiAocGhtX2NhcF9l bmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywKKwkJCQkJIFBI TV9QbGF0Zm9ybUNhcHNfVVZEUG93ZXJHYXRpbmcpKSB7CisJCWlmIChwaG1fY2FwX2VuYWJsZWQo aHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAorCQkJCSAgUEhNX1BsYXRm b3JtQ2Fwc19VVkREeW5hbWljUG93ZXJHYXRpbmcpKSB7CisJCQlyZXR1cm4gc211bV9zZW5kX21z Z190b19zbWNfd2l0aF9wYXJhbWV0ZXIoCisJCQkJCQkJCWh3bWdyLT5zbXVtZ3IsCisJCQkJCQkg ICBQUFNNQ19NU0dfVVZEUG93ZXJPTiwgMSk7CisJCX0gZWxzZSB7CisJCQlyZXR1cm4gc211bV9z ZW5kX21zZ190b19zbWNfd2l0aF9wYXJhbWV0ZXIoCisJCQkJCQkJCWh3bWdyLT5zbXVtZ3IsCisJ CQkJCQkgICBQUFNNQ19NU0dfVVZEUG93ZXJPTiwgMCk7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsK K30KKworaW50IGN6X2RwbV91cGRhdGVfdXZkX2RwbShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBi b29sIGJnYXRlKQoreworCXN0cnVjdCBjel9od21nciAqY3pfaHdtZ3IgPSAoc3RydWN0IGN6X2h3 bWdyICopKGh3bWdyLT5iYWNrZW5kKTsKKwlzdHJ1Y3QgcGhtX3V2ZF9jbG9ja192b2x0YWdlX2Rl cGVuZGVuY3lfdGFibGUgKnB0YWJsZSA9CisJCWh3bWdyLT5keW5fc3RhdGUudXZkX2Nsb2NsX3Zv bHRhZ2VfZGVwZW5kZW5jeV90YWJsZTsKKworCWlmICghYmdhdGUpIHsKKwkJLyogU3RhYmxlIFBz dGF0ZSBpcyBlbmFibGVkIGFuZCB3ZSBuZWVkIHRvIHNldCB0aGUgVVZEIERQTSB0byBoaWdoZXN0 IGxldmVsICovCisJCWlmIChwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0 b3IucGxhdGZvcm1DYXBzLAorCQkJCQkgUEhNX1BsYXRmb3JtQ2Fwc19TdGFibGVQU3RhdGUpKSB7 CisJCQljel9od21nci0+dXZkX2RwbS5oYXJkX21pbl9jbGsgPQorCQkJCSAgIHB0YWJsZS0+ZW50 cmllc1twdGFibGUtPmNvdW50IC0gMV0udmNsazsKKworCQkJc211bV9zZW5kX21zZ190b19zbWNf d2l0aF9wYXJhbWV0ZXIoaHdtZ3ItPnNtdW1nciwKKwkJCQkJCSAgICAgUFBTTUNfTVNHX1NldFV2 ZEhhcmRNaW4sCisJCQkJCQkgICAgICBjel9nZXRfdXZkX2xldmVsKGh3bWdyLAorCQkJCQkgICAg IGN6X2h3bWdyLT51dmRfZHBtLmhhcmRfbWluX2NsaywKKwkJCQkJCSAgIFBQU01DX01TR19TZXRV dmRIYXJkTWluKSk7CisKKwkJCWN6X2VuYWJsZV9kaXNhYmxlX3V2ZF9kcG0oaHdtZ3IsIHRydWUp OworCQl9IGVsc2UKKwkJCWN6X2VuYWJsZV9kaXNhYmxlX3V2ZF9kcG0oaHdtZ3IsIHRydWUpOwor CX0gZWxzZQorCQljel9lbmFibGVfZGlzYWJsZV91dmRfZHBtKGh3bWdyLCBmYWxzZSk7CisKKwly ZXR1cm4gMDsKK30KKworaW50ICBjel9kcG1fdXBkYXRlX3ZjZV9kcG0oc3RydWN0IHBwX2h3bWdy ICpod21ncikKK3sKKwlzdHJ1Y3QgY3pfaHdtZ3IgKmN6X2h3bWdyID0gKHN0cnVjdCBjel9od21n ciAqKShod21nci0+YmFja2VuZCk7CisJc3RydWN0IHBobV92Y2VfY2xvY2tfdm9sdGFnZV9kZXBl bmRlbmN5X3RhYmxlICpwdGFibGUgPQorCQlod21nci0+ZHluX3N0YXRlLnZjZV9jbG9jbF92b2x0 YWdlX2RlcGVuZGVuY3lfdGFibGU7CisKKwkvKiBTdGFibGUgUHN0YXRlIGlzIGVuYWJsZWQgYW5k IHdlIG5lZWQgdG8gc2V0IHRoZSBWQ0UgRFBNIHRvIGhpZ2hlc3QgbGV2ZWwgKi8KKwlpZiAocGht X2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywKKwkJ CQkJIFBITV9QbGF0Zm9ybUNhcHNfU3RhYmxlUFN0YXRlKSkgeworCQljel9od21nci0+dmNlX2Rw bS5oYXJkX21pbl9jbGsgPQorCQkJCSAgcHRhYmxlLT5lbnRyaWVzW3B0YWJsZS0+Y291bnQgLSAx XS5lY2NsazsKKworCQlzbXVtX3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcihod21nci0+ c211bWdyLAorCQkJCQlQUFNNQ19NU0dfU2V0RWNsa0hhcmRNaW4sCisJCQkJCWN6X2dldF9lY2xr X2xldmVsKGh3bWdyLAorCQkJCQkgICAgIGN6X2h3bWdyLT52Y2VfZHBtLmhhcmRfbWluX2NsaywK KwkJCQkJCVBQU01DX01TR19TZXRFY2xrSGFyZE1pbikpOworCX0gZWxzZSB7CisJCS8qRVBSIyA0 MTkyMjAgLUhXIGxpbWl0YXRpb24gdG8gdG8gKi8KKwkJY3pfaHdtZ3ItPnZjZV9kcG0uaGFyZF9t aW5fY2xrID0gaHdtZ3ItPnZjZV9hcmJpdGVyLmVjY2xrOworCQlzbXVtX3NlbmRfbXNnX3RvX3Nt Y193aXRoX3BhcmFtZXRlcihod21nci0+c211bWdyLAorCQkJCQkgICAgUFBTTUNfTVNHX1NldEVj bGtIYXJkTWluLAorCQkJCQkgICAgY3pfZ2V0X2VjbGtfbGV2ZWwoaHdtZ3IsCisJCQkJICAgICBj el9od21nci0+dmNlX2RwbS5oYXJkX21pbl9jbGssCisJCQkJCSAgUFBTTUNfTVNHX1NldEVjbGtI YXJkTWluKSk7CisKKwl9CisJcmV0dXJuIDA7Cit9CisKK2ludCBjel9kcG1fcG93ZXJkb3duX3Zj ZShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQoreworCWlmIChwaG1fY2FwX2VuYWJsZWQoaHdtZ3It PnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAorCQkJCQkgUEhNX1BsYXRmb3JtQ2Fw c19WQ0VQb3dlckdhdGluZykpCisJCXJldHVybiBzbXVtX3NlbmRfbXNnX3RvX3NtYyhod21nci0+ c211bWdyLAorCQkJCQkJICAgICBQUFNNQ19NU0dfVkNFUG93ZXJPRkYpOworCXJldHVybiAwOwor fQorCitpbnQgY3pfZHBtX3Bvd2VydXBfdmNlKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCit7CisJ aWYgKHBobV9jYXBfZW5hYmxlZChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNh cHMsCisJCQkJCSBQSE1fUGxhdGZvcm1DYXBzX1ZDRVBvd2VyR2F0aW5nKSkKKwkJcmV0dXJuIHNt dW1fc2VuZF9tc2dfdG9fc21jKGh3bWdyLT5zbXVtZ3IsCisJCQkJCQkgICAgIFBQU01DX01TR19W Q0VQb3dlck9OKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjel9kcG1fZ2V0X21jbGso c3RydWN0IHBwX2h3bWdyICpod21nciwgYm9vbCBsb3cpCit7CisJc3RydWN0IGN6X2h3bWdyICpj el9od21nciA9IChzdHJ1Y3QgY3pfaHdtZ3IgKikoaHdtZ3ItPmJhY2tlbmQpOworCisJcmV0dXJu IGN6X2h3bWdyLT5zeXNfaW5mby5ib290dXBfdW1hX2Nsb2NrOworfQorCitzdGF0aWMgaW50IGN6 X2RwbV9nZXRfc2NsayhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBib29sIGxvdykKK3sKKwlzdHJ1 Y3QgcHBfcG93ZXJfc3RhdGUgICpwczsKKwlzdHJ1Y3QgY3pfcG93ZXJfc3RhdGUgICpjel9wczsK KworCWlmIChod21nciA9PSBOVUxMKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXBzID0gaHdtZ3It PnJlcXVlc3RfcHM7CisKKwlpZiAocHMgPT0gTlVMTCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlj el9wcyA9IGNhc3RfUGh3Q3pQb3dlclN0YXRlKCZwcy0+aGFyZHdhcmUpOworCisJaWYgKGxvdykK KwkJcmV0dXJuIGN6X3BzLT5sZXZlbHNbMF0uZW5naW5lQ2xvY2s7CisJZWxzZQorCQlyZXR1cm4g Y3pfcHMtPmxldmVsc1tjel9wcy0+bGV2ZWwtMV0uZW5naW5lQ2xvY2s7Cit9CisKIHN0YXRpYyBp bnQgY3pfZHBtX3BhdGNoX2Jvb3Rfc3RhdGUoc3RydWN0IHBwX2h3bWdyICpod21nciwKIAkJCQkJ c3RydWN0IHBwX2h3X3Bvd2VyX3N0YXRlICpod19wcykKIHsKQEAgLTg3MSwxNSArMTMyMiw4MyBA QCBpbnQgY3pfZ2V0X3Bvd2VyX3N0YXRlX3NpemUoc3RydWN0IHBwX2h3bWdyICpod21ncikKIAly ZXR1cm4gc2l6ZW9mKHN0cnVjdCBjel9wb3dlcl9zdGF0ZSk7CiB9CiAKK3N0YXRpYyB2b2lkCitj el9wcmludF9jdXJyZW50X3BlcmZvcmNlX2xldmVsKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHN0 cnVjdCBzZXFfZmlsZSAqbSkKK3sKKwlzdHJ1Y3QgY3pfaHdtZ3IgKmN6X2h3bWdyID0gKHN0cnVj dCBjel9od21nciAqKShod21nci0+YmFja2VuZCk7CisKKwlzdHJ1Y3QgcGhtX2Nsb2NrX3ZvbHRh Z2VfZGVwZW5kZW5jeV90YWJsZSAqdGFibGUgPQorCQkJCWh3bWdyLT5keW5fc3RhdGUudmRkY19k ZXBlbmRlbmN5X29uX3NjbGs7CisKKwlzdHJ1Y3QgcGhtX3ZjZV9jbG9ja192b2x0YWdlX2RlcGVu ZGVuY3lfdGFibGUgKnZjZV90YWJsZSA9CisJCWh3bWdyLT5keW5fc3RhdGUudmNlX2Nsb2NsX3Zv bHRhZ2VfZGVwZW5kZW5jeV90YWJsZTsKKworCXN0cnVjdCBwaG1fdXZkX2Nsb2NrX3ZvbHRhZ2Vf ZGVwZW5kZW5jeV90YWJsZSAqdXZkX3RhYmxlID0KKwkJaHdtZ3ItPmR5bl9zdGF0ZS51dmRfY2xv Y2xfdm9sdGFnZV9kZXBlbmRlbmN5X3RhYmxlOworCisJdWludDMyX3Qgc2Nsa19pbmRleCA9IFBI TV9HRVRfRklFTEQoY2dzX3JlYWRfaW5kX3JlZ2lzdGVyKGh3bWdyLT5kZXZpY2UsIENHU19JTkRf UkVHX19TTUMsIGl4VEFSR0VUX0FORF9DVVJSRU5UX1BST0ZJTEVfSU5ERVgpLAorCQkJCQlUQVJH RVRfQU5EX0NVUlJFTlRfUFJPRklMRV9JTkRFWCwgQ1VSUl9TQ0xLX0lOREVYKTsKKwl1aW50MzJf dCB1dmRfaW5kZXggPSBQSE1fR0VUX0ZJRUxEKGNnc19yZWFkX2luZF9yZWdpc3Rlcihod21nci0+ ZGV2aWNlLCBDR1NfSU5EX1JFR19fU01DLCBpeFRBUkdFVF9BTkRfQ1VSUkVOVF9QUk9GSUxFX0lO REVYXzIpLAorCQkJCQlUQVJHRVRfQU5EX0NVUlJFTlRfUFJPRklMRV9JTkRFWF8yLCBDVVJSX1VW RF9JTkRFWCk7CisJdWludDMyX3QgdmNlX2luZGV4ID0gUEhNX0dFVF9GSUVMRChjZ3NfcmVhZF9p bmRfcmVnaXN0ZXIoaHdtZ3ItPmRldmljZSwgQ0dTX0lORF9SRUdfX1NNQywgaXhUQVJHRVRfQU5E X0NVUlJFTlRfUFJPRklMRV9JTkRFWF8yKSwKKwkJCQkJVEFSR0VUX0FORF9DVVJSRU5UX1BST0ZJ TEVfSU5ERVhfMiwgQ1VSUl9WQ0VfSU5ERVgpOworCisJdWludDMyX3Qgc2NsaywgdmNsaywgZGNs aywgZWNjbGssIHRtcDsKKwl1aW50MTZfdCB2ZGRuYiwgdmRkZ2Z4OworCisJaWYgKHNjbGtfaW5k ZXggPj0gTlVNX1NDTEtfTEVWRUxTKSB7CisJCXNlcV9wcmludGYobSwgIlxuIGludmFsaWQgc2Ns ayBkcG0gcHJvZmlsZSAlZFxuIiwgc2Nsa19pbmRleCk7CisJfSBlbHNlIHsKKwkJc2NsayA9IHRh YmxlLT5lbnRyaWVzW3NjbGtfaW5kZXhdLmNsazsKKwkJc2VxX3ByaW50ZihtLCAiXG4gaW5kZXg6 ICV1IHNjbGs6ICV1IE1IelxuIiwgc2Nsa19pbmRleCwgc2Nsay8xMDApOworCX0KKworCXRtcCA9 IChjZ3NfcmVhZF9pbmRfcmVnaXN0ZXIoaHdtZ3ItPmRldmljZSwgQ0dTX0lORF9SRUdfX1NNQywg aXhTTVVTVklfTkJfQ1VSUkVOVFZJRCkgJgorCQlDVVJSRU5UX05CX1ZJRF9NQVNLKSA+PiBDVVJS RU5UX05CX1ZJRF9fU0hJRlQ7CisJdmRkbmIgPSBjel9jb252ZXJ0XzhCaXRfaW5kZXhfdG9fdm9s dGFnZShod21nciwgdG1wKTsKKwl0bXAgPSAoY2dzX3JlYWRfaW5kX3JlZ2lzdGVyKGh3bWdyLT5k ZXZpY2UsIENHU19JTkRfUkVHX19TTUMsIGl4U01VU1ZJX0dGWF9DVVJSRU5UVklEKSAmCisJCUNV UlJFTlRfR0ZYX1ZJRF9NQVNLKSA+PiBDVVJSRU5UX0dGWF9WSURfX1NISUZUOworCXZkZGdmeCA9 IGN6X2NvbnZlcnRfOEJpdF9pbmRleF90b192b2x0YWdlKGh3bWdyLCAodTE2KXRtcCk7CisJc2Vx X3ByaW50ZihtLCAiXG4gdmRkbmI6ICV1IHZkZGdmeDogJXVcbiIsIHZkZG5iLCB2ZGRnZngpOwor CisJc2VxX3ByaW50ZihtLCAiXG4gdXZkICAgICVzYWJsZWRcbiIsIGN6X2h3bWdyLT51dmRfcG93 ZXJfZ2F0ZWQgPyAiZGlzIiA6ICJlbiIpOworCWlmICghY3pfaHdtZ3ItPnV2ZF9wb3dlcl9nYXRl ZCkgeworCQlpZiAodXZkX2luZGV4ID49IENaX01BWF9IQVJEV0FSRV9QT1dFUkxFVkVMUykgewor CQkJc2VxX3ByaW50ZihtLCAiXG4gaW52YWxpZCB1dmQgZHBtIGxldmVsICVkXG4iLCB1dmRfaW5k ZXgpOworCQl9IGVsc2UgeworCQkJdmNsayA9IHV2ZF90YWJsZS0+ZW50cmllc1t1dmRfaW5kZXhd LnZjbGs7CisJCQlkY2xrID0gdXZkX3RhYmxlLT5lbnRyaWVzW3V2ZF9pbmRleF0uZGNsazsKKwkJ CXNlcV9wcmludGYobSwgIlxuIGluZGV4OiAldSB1dmQgdmNsazogJXUgTUh6IGRjbGs6ICV1IE1I elxuIiwgdXZkX2luZGV4LCB2Y2xrLzEwMCwgZGNsay8xMDApOworCQl9CisJfQorCisJc2VxX3By aW50ZihtLCAiXG4gdmNlICAgICVzYWJsZWRcbiIsIGN6X2h3bWdyLT52Y2VfcG93ZXJfZ2F0ZWQg PyAiZGlzIiA6ICJlbiIpOworCWlmICghY3pfaHdtZ3ItPnZjZV9wb3dlcl9nYXRlZCkgeworCQlp ZiAodmNlX2luZGV4ID49IENaX01BWF9IQVJEV0FSRV9QT1dFUkxFVkVMUykgeworCQkJc2VxX3By aW50ZihtLCAiXG4gaW52YWxpZCB2Y2UgZHBtIGxldmVsICVkXG4iLCB2Y2VfaW5kZXgpOworCQl9 IGVsc2UgeworCQkJZWNjbGsgPSB2Y2VfdGFibGUtPmVudHJpZXNbdmNlX2luZGV4XS5lY2NsazsK KwkJCXNlcV9wcmludGYobSwgIlxuIGluZGV4OiAldSB2Y2UgZWNjbGs6ICV1IE1IelxuIiwgdmNl X2luZGV4LCBlY2Nsay8xMDApOworCQl9CisJfQorfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IHBw X2h3bWdyX2Z1bmMgY3pfaHdtZ3JfZnVuY3MgPSB7CiAJLmJhY2tlbmRfaW5pdCA9IGN6X2h3bWdy X2JhY2tlbmRfaW5pdCwKIAkuYmFja2VuZF9maW5pID0gY3pfaHdtZ3JfYmFja2VuZF9maW5pLAog CS5hc2ljX3NldHVwID0gTlVMTCwKKwkuYXBwbHlfc3RhdGVfYWRqdXN0X3J1bGVzID0gY3pfYXBw bHlfc3RhdGVfYWRqdXN0X3J1bGVzLAogCS5mb3JjZV9kcG1fbGV2ZWwgPSBjel9kcG1fZm9yY2Vf ZHBtX2xldmVsLAogCS5nZXRfcG93ZXJfc3RhdGVfc2l6ZSA9IGN6X2dldF9wb3dlcl9zdGF0ZV9z aXplLAorCS5wb3dlcmRvd25fdXZkID0gY3pfZHBtX3Bvd2VyZG93bl91dmQsCisJLnBvd2VyZ2F0 ZV91dmQgPSBjel9kcG1fcG93ZXJnYXRlX3V2ZCwKKwkucG93ZXJnYXRlX3ZjZSA9IGN6X2RwbV9w b3dlcmdhdGVfdmNlLAorCS5nZXRfbWNsayA9IGN6X2RwbV9nZXRfbWNsaywKKwkuZ2V0X3NjbGsg PSBjel9kcG1fZ2V0X3NjbGssCiAJLnBhdGNoX2Jvb3Rfc3RhdGUgPSBjel9kcG1fcGF0Y2hfYm9v dF9zdGF0ZSwKIAkuZ2V0X3BwX3RhYmxlX2VudHJ5ID0gY3pfZHBtX2dldF9wcF90YWJsZV9lbnRy eSwKIAkuZ2V0X251bV9vZl9wcF90YWJsZV9lbnRyaWVzID0gY3pfZHBtX2dldF9udW1fb2ZfcHBf dGFibGVfZW50cmllcywKKwkucHJpbnRfY3VycmVudF9wZXJmb3JjZV9sZXZlbCA9IGN6X3ByaW50 X2N1cnJlbnRfcGVyZm9yY2VfbGV2ZWwsCiB9OwogCiBpbnQgY3pfaHdtZ3JfaW5pdChzdHJ1Y3Qg cHBfaHdtZ3IgKmh3bWdyKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBs YXkvaHdtZ3IvY3pfaHdtZ3IuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdy L2N6X2h3bWdyLmgKaW5kZXggMDU4NDlmZC4uNzBiMGU1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvY3pfaHdtZ3IuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL3Bvd2VycGxheS9od21nci9jel9od21nci5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVm aW5lIENaX0FUX0RGTFQgICAgICAgICAgICAgICAgICAgICAzMAogI2RlZmluZSBDWl9NQVhfSEFS RFdBUkVfUE9XRVJMRVZFTFMgICAgOAogI2RlZmluZSBQUENaX1ZPVElOR1JJR0hUU0NMSUVOVFNf REZMVDAgICAweDNGRkZDMTAyCisjZGVmaW5lIENaX01JTl9ERUVQX1NMRUVQX1NDTEsgICAgICAg ICA4MDAKIAogLyogQ2Fycml6byBkZXZpY2UgSURzICovCiAjZGVmaW5lIERFVklDRV9JRF9DWl85 ODcwICAgICAgICAgICAgIDB4OTg3MApAQCAtMTk4LDYgKzE5OSw5IEBAIHN0cnVjdCBjel9od21n ciB7CiAJc3RydWN0IGN6X3N5c19pbmZvIHN5c19pbmZvOwogCiAJc3RydWN0IGN6X3Bvd2VyX2xl dmVsIGJvb3RfcG93ZXJfbGV2ZWw7CisJc3RydWN0IGN6X3Bvd2VyX3N0YXRlICpjel9jdXJyZW50 X3BzOworCXN0cnVjdCBjel9wb3dlcl9zdGF0ZSAqY3pfcmVxdWVzdGVkX3BzOworCiAJdWludDMy X3QgbWdjZ19jZ3R0X2xvY2FsMDsKIAl1aW50MzJfdCBtZ2NnX2NndHRfbG9jYWwxOwogCkBAIC0y OTksMTEgKzMwMywxNSBAQCBzdHJ1Y3QgY3pfaHdtZ3IgewogCiAJdWludDMyX3QgbWF4X3NjbGtf bGV2ZWw7CiAJdWludDMyX3QgbnVtX29mX2Nsa19lbnRyaWVzOwotCXN0cnVjdCBjel9wb3dlcl9z dGF0ZSAqY3pfcHM7CiB9OwogCiBzdHJ1Y3QgcHBfaHdtZ3I7CiAKIGludCBjel9od21ncl9pbml0 KHN0cnVjdCBwcF9od21nciAqaHdtZ3IpOwotCitpbnQgY3pfZHBtX3Bvd2VyZG93bl91dmQoc3Ry dWN0IHBwX2h3bWdyICpod21ncik7CitpbnQgY3pfZHBtX3Bvd2VydXBfdXZkKHN0cnVjdCBwcF9o d21nciAqaHdtZ3IpOworaW50IGN6X2RwbV9wb3dlcmRvd25fdmNlKHN0cnVjdCBwcF9od21nciAq aHdtZ3IpOworaW50IGN6X2RwbV9wb3dlcnVwX3ZjZShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsK K2ludCBjel9kcG1fdXBkYXRlX3V2ZF9kcG0oc3RydWN0IHBwX2h3bWdyICpod21nciwgYm9vbCBi Z2F0ZSk7CitpbnQgIGN6X2RwbV91cGRhdGVfdmNlX2RwbShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdy KTsKICNlbmRpZiAvKiBfQ1pfSFdNR1JfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvcG93ZXJwbGF5L2h3bWdyL2hhcmR3YXJlbWFuYWdlci5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9wb3dlcnBsYXkvaHdtZ3IvaGFyZHdhcmVtYW5hZ2VyLmMKaW5kZXggNzMxN2U0My4uYWVj OWY2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvaGFy ZHdhcmVtYW5hZ2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3Iv aGFyZHdhcmVtYW5hZ2VyLmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlIDxsaW51eC9lcnJu by5oPgogI2luY2x1ZGUgImh3bWdyLmgiCiAjaW5jbHVkZSAiaGFyZHdhcmVtYW5hZ2VyLmgiCisj aW5jbHVkZSAicG93ZXJfc3RhdGUuaCIKICNpbmNsdWRlICJwcF9hY3BpLmgiCiAjaW5jbHVkZSAi YW1kX2FjcGkuaCIKIApAQCAtNTUsNiArNTYsMTcgQEAgdm9pZCBwaG1faW5pdF9keW5hbWljX2Nh cHMoc3RydWN0IHBwX2h3bWdyICpod21ncikKIAkJcGhtX2NhcF9zZXQoaHdtZ3ItPnBsYXRmb3Jt X2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLCBQSE1fUGxhdGZvcm1DYXBzX1BDSUVQZXJmb3JtYW5j ZVJlcXVlc3QpOwogfQogCitib29sIHBobV9pc19od19hY2Nlc3NfYmxvY2tlZChzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyKQoreworCXJldHVybiBod21nci0+YmxvY2tfaHdfYWNjZXNzOworfQorCitp bnQgcGhtX2Jsb2NrX2h3X2FjY2VzcyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBib29sIGJsb2Nr KQoreworCWh3bWdyLT5ibG9ja19od19hY2Nlc3MgPSBibG9jazsKKwlyZXR1cm4gMDsKK30KKwog aW50IHBobV9zZXR1cF9hc2ljKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiB7CiAJaWYgKHBobV9j YXBfZW5hYmxlZChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsCkBAIC02 MiwxMyArNzQsMzMgQEAgaW50IHBobV9zZXR1cF9hc2ljKHN0cnVjdCBwcF9od21nciAqaHdtZ3Ip CiAJCWlmIChOVUxMICE9IGh3bWdyLT5od21ncl9mdW5jLT5hc2ljX3NldHVwKQogCQkJcmV0dXJu IGh3bWdyLT5od21ncl9mdW5jLT5hc2ljX3NldHVwKGh3bWdyKTsKIAl9IGVsc2UgewotCQlyZXR1 cm4gcGhtX2Rpc3BhdGNoX3RhYmxlIChod21nciwgJihod21nci0+c2V0dXBfYXNpYyksCisJCXJl dHVybiBwaG1fZGlzcGF0Y2hfdGFibGUoaHdtZ3IsICYoaHdtZ3ItPnNldHVwX2FzaWMpLAogCQkJ CQkgIE5VTEwsIE5VTEwpOwogCX0KIAogCXJldHVybiAwOwogfQogCitpbnQgcGhtX3NldF9wb3dl cl9zdGF0ZShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLAorCQkgICAgY29uc3Qgc3RydWN0IHBwX2h3 X3Bvd2VyX3N0YXRlICpwY3VycmVudF9zdGF0ZSwKKwkJICAgIGNvbnN0IHN0cnVjdCBwcF9od19w b3dlcl9zdGF0ZSAqcG5ld19wb3dlcl9zdGF0ZSkKK3sKKwlzdHJ1Y3QgcGhtX3NldF9wb3dlcl9z dGF0ZV9pbnB1dCBzdGF0ZXM7CisKKwlzdGF0ZXMucGN1cnJlbnRfc3RhdGUgPSBwY3VycmVudF9z dGF0ZTsKKwlzdGF0ZXMucG5ld19zdGF0ZSA9IHBuZXdfcG93ZXJfc3RhdGU7CisKKwlpZiAocGht X2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywKKwkJ UEhNX1BsYXRmb3JtQ2Fwc19UYWJsZWxlc3NIYXJkd2FyZUludGVyZmFjZSkpIHsKKwkJaWYgKE5V TEwgIT0gaHdtZ3ItPmh3bWdyX2Z1bmMtPnBvd2VyX3N0YXRlX3NldCkKKwkJCXJldHVybiBod21n ci0+aHdtZ3JfZnVuYy0+cG93ZXJfc3RhdGVfc2V0KGh3bWdyLCAmc3RhdGVzKTsKKwl9IGVsc2Ug eworCQlyZXR1cm4gcGhtX2Rpc3BhdGNoX3RhYmxlKGh3bWdyLCAmKGh3bWdyLT5zZXRfcG93ZXJf c3RhdGUpLCAmc3RhdGVzLCBOVUxMKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwogaW50IHBobV9l bmFibGVfZHluYW1pY19zdGF0ZV9tYW5hZ2VtZW50KHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiB7 CiAJaWYgKHBobV9jYXBfZW5hYmxlZChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9y bUNhcHMsCkBAIC03Niw5ICsxMDgsNjIgQEAgaW50IHBobV9lbmFibGVfZHluYW1pY19zdGF0ZV9t YW5hZ2VtZW50KHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiAJCWlmIChOVUxMICE9IGh3bWdyLT5o d21ncl9mdW5jLT5keW5hbWljX3N0YXRlX21hbmFnZW1lbnRfZW5hYmxlKQogCQkJcmV0dXJuIGh3 bWdyLT5od21ncl9mdW5jLT5keW5hbWljX3N0YXRlX21hbmFnZW1lbnRfZW5hYmxlKGh3bWdyKTsK IAl9IGVsc2UgewotCQlyZXR1cm4gcGhtX2Rpc3BhdGNoX3RhYmxlIChod21nciwKKwkJcmV0dXJu IHBobV9kaXNwYXRjaF90YWJsZShod21nciwKIAkJCQkmKGh3bWdyLT5lbmFibGVfZHluYW1pY19z dGF0ZV9tYW5hZ2VtZW50KSwKIAkJCQlOVUxMLCBOVUxMKTsKIAl9CiAJcmV0dXJuIDA7CiB9CisK K2ludCBwaG1fZm9yY2VfZHBtX2xldmVscyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBlbnVtIGFt ZF9kcG1fZm9yY2VkX2xldmVsIGxldmVsKQoreworCWlmIChod21nci0+aHdtZ3JfZnVuYy0+Zm9y Y2VfZHBtX2xldmVsICE9IE5VTEwpCisJCXJldHVybiBod21nci0+aHdtZ3JfZnVuYy0+Zm9yY2Vf ZHBtX2xldmVsKGh3bWdyLCBsZXZlbCk7CisKKwlyZXR1cm4gMDsKK30KKworaW50IHBobV9hcHBs eV9zdGF0ZV9hZGp1c3RfcnVsZXMoc3RydWN0IHBwX2h3bWdyICpod21nciwKKwkJCQkgICBzdHJ1 Y3QgcHBfcG93ZXJfc3RhdGUgKmFkanVzdGVkX3BzLAorCQkJICAgICBjb25zdCBzdHJ1Y3QgcHBf cG93ZXJfc3RhdGUgKmN1cnJlbnRfcHMpCit7CisJaWYgKGh3bWdyLT5od21ncl9mdW5jLT5hcHBs eV9zdGF0ZV9hZGp1c3RfcnVsZXMgIT0gTlVMTCkKKwkJcmV0dXJuIGh3bWdyLT5od21ncl9mdW5j LT5hcHBseV9zdGF0ZV9hZGp1c3RfcnVsZXMoCisJCQkJCQkJCQlod21nciwKKwkJCQkJCQkJIGFk anVzdGVkX3BzLAorCQkJCQkJCQkgY3VycmVudF9wcyk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBw aG1fcG93ZXJkb3duX3V2ZChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQoreworCWlmIChod21nci0+ aHdtZ3JfZnVuYy0+cG93ZXJkb3duX3V2ZCAhPSBOVUxMKQorCQlyZXR1cm4gaHdtZ3ItPmh3bWdy X2Z1bmMtPnBvd2VyZG93bl91dmQoaHdtZ3IpOworCXJldHVybiAwOworfQorCitpbnQgcGhtX3Bv d2VyZ2F0ZV91dmQoc3RydWN0IHBwX2h3bWdyICpod21nciwgYm9vbCBnYXRlKQoreworCWlmICho d21nci0+aHdtZ3JfZnVuYy0+cG93ZXJnYXRlX3V2ZCAhPSBOVUxMKQorCQlyZXR1cm4gaHdtZ3It Pmh3bWdyX2Z1bmMtPnBvd2VyZ2F0ZV91dmQoaHdtZ3IsIGdhdGUpOworCXJldHVybiAwOworfQor CitpbnQgcGhtX3Bvd2VyZ2F0ZV92Y2Uoc3RydWN0IHBwX2h3bWdyICpod21nciwgYm9vbCBnYXRl KQoreworCWlmIChod21nci0+aHdtZ3JfZnVuYy0+cG93ZXJnYXRlX3ZjZSAhPSBOVUxMKQorCQly ZXR1cm4gaHdtZ3ItPmh3bWdyX2Z1bmMtPnBvd2VyZ2F0ZV92Y2UoaHdtZ3IsIGdhdGUpOworCXJl dHVybiAwOworfQorCitpbnQgcGhtX2VuYWJsZV9jbG9ja19wb3dlcl9nYXRpbmdzKHN0cnVjdCBw cF9od21nciAqaHdtZ3IpCit7CisJaWYgKHBobV9jYXBfZW5hYmxlZChod21nci0+cGxhdGZvcm1f ZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsCisJCVBITV9QbGF0Zm9ybUNhcHNfVGFibGVsZXNzSGFy ZHdhcmVJbnRlcmZhY2UpKSB7CisJCWlmIChOVUxMICE9IGh3bWdyLT5od21ncl9mdW5jLT5lbmFi bGVfY2xvY2tfcG93ZXJfZ2F0aW5nKQorCQkJcmV0dXJuIGh3bWdyLT5od21ncl9mdW5jLT5lbmFi bGVfY2xvY2tfcG93ZXJfZ2F0aW5nKGh3bWdyKTsKKwl9IGVsc2UgeworCQlyZXR1cm4gcGhtX2Rp c3BhdGNoX3RhYmxlKGh3bWdyLCAmKGh3bWdyLT5lbmFibGVfY2xvY2tfcG93ZXJfZ2F0aW5ncyks IE5VTEwsIE5VTEwpOworCX0KKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2h3bWdyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9od21nci9od21nci5jCmluZGV4IGUyNmRmOTAuLjVkMWJhOTAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2h3bWdyLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvaHdtZ3IuYwpAQCAtMjAxLDMgKzIwMSwxMyBA QCB2b2lkIHBobV93YWl0X2Zvcl9pbmRpcmVjdF9yZWdpc3Rlcl91bmVxdWFsKHN0cnVjdCBwcF9o d21nciAqaHdtZ3IsCiAJcGhtX3dhaXRfZm9yX3JlZ2lzdGVyX3VuZXF1YWwoaHdtZ3IsIGluZGly ZWN0X3BvcnQgKyAxLAogCQkJCSAgICAgIHZhbHVlLCBtYXNrKTsKIH0KKworYm9vbCBwaG1fY2Zf d2FudF91dmRfcG93ZXJfZ2F0aW5nKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCit7CisJcmV0dXJu IHBobV9jYXBfZW5hYmxlZChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMs IFBITV9QbGF0Zm9ybUNhcHNfVVZEUG93ZXJHYXRpbmcpOworfQorCitib29sIHBobV9jZl93YW50 X3ZjZV9wb3dlcl9nYXRpbmcoc3RydWN0IHBwX2h3bWdyICpod21ncikKK3sKKwlyZXR1cm4gcGht X2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywgUEhN X1BsYXRmb3JtQ2Fwc19WQ0VQb3dlckdhdGluZyk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvaGFyZHdhcmVtYW5hZ2VyLmggYi9kcml2ZXJzL2dwdS9k cm0vYW1kL3Bvd2VycGxheS9pbmMvaGFyZHdhcmVtYW5hZ2VyLmgKaW5kZXggMjZlMTI1Ni4uYTY5 YjM3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2hhcmR3 YXJlbWFuYWdlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9oYXJk d2FyZW1hbmFnZXIuaApAQCAtMjMsNyArMjMsMTIgQEAKICNpZm5kZWYgX0hBUkRXQVJFX01BTkFH RVJfSF8KICNkZWZpbmUgX0hBUkRXQVJFX01BTkFHRVJfSF8KIAorCisKIHN0cnVjdCBwcF9od21n cjsKK3N0cnVjdCBwcF9od19wb3dlcl9zdGF0ZTsKK3N0cnVjdCBwcF9wb3dlcl9zdGF0ZTsKK2Vu dW0gYW1kX2RwbV9mb3JjZWRfbGV2ZWw7CiAKIC8qIEF1dG9tYXRpYyBQb3dlciBTdGF0ZSBUaHJv dHRsaW5nICovCiBlbnVtIFBITV9BdXRvVGhyb3R0bGVTb3VyY2UKQEAgLTIwNiw2ICsyMTEsMjQg QEAgc3RydWN0IHBwX2h3X2Rlc2NyaXB0b3IgewogCXVpbnQzMl90IGh3X2NhcHNbUEhNX01BWF9O VU1fQ0FQU19VTE9OR19FTlRSSUVTXTsKIH07CiAKK2VudW0gUEhNX1BlcmZvcm1hbmNlTGV2ZWxE ZXNpZ25hdGlvbiB7CisJUEhNX1BlcmZvcm1hbmNlTGV2ZWxEZXNpZ25hdGlvbl9BY3Rpdml0eSwK KwlQSE1fUGVyZm9ybWFuY2VMZXZlbERlc2lnbmF0aW9uX1Bvd2VyQ29udGFpbm1lbnQKK307CisK K3R5cGVkZWYgZW51bSBQSE1fUGVyZm9ybWFuY2VMZXZlbERlc2lnbmF0aW9uIFBITV9QZXJmb3Jt YW5jZUxldmVsRGVzaWduYXRpb247CisKK3N0cnVjdCBQSE1fUGVyZm9ybWFuY2VMZXZlbCB7CisJ dWludDMyX3QgICAgY29yZUNsb2NrOworCXVpbnQzMl90ICAgIG1lbW9yeV9jbG9jazsKKwl1aW50 MzJfdCAgdmRkYzsKKwl1aW50MzJfdCAgdmRkY2k7CisJdWludDMyX3QgICAgbm9uTG9jYWxNZW1v cnlGcmVxOworCXVpbnQzMl90IG5vbkxvY2FsTWVtb3J5V2lkdGg7Cit9OworCit0eXBlZGVmIHN0 cnVjdCBQSE1fUGVyZm9ybWFuY2VMZXZlbCBQSE1fUGVyZm9ybWFuY2VMZXZlbDsKKwogLyogRnVu Y3Rpb24gZm9yIHNldHRpbmcgYSBwbGF0Zm9ybSBjYXAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBw aG1fY2FwX3NldCh1aW50MzJfdCAqY2FwcywKIAkJCWVudW0gcGhtX3BsYXRmb3JtX2NhcHMgYykK QEAgLTIyNiw2ICsyNDksMjAgQEAgc3RhdGljIGlubGluZSBib29sIHBobV9jYXBfZW5hYmxlZChj b25zdCB1aW50MzJfdCAqY2FwcywgZW51bSBwaG1fcGxhdGZvcm1fY2FwcwogCQkgICgxVUwgPDwg KGMgJiAoUEhNX01BWF9OVU1fQ0FQU19CSVRTX1BFUl9GSUVMRCAtIDEpKSkpKTsKIH0KIAorI2Rl ZmluZSBQUF9QQ0lFR2VuSW52YWxpZCAgMHhmZmZmCitlbnVtIFBQX1BDSUVHZW4geworCVBQX1BD SUVHZW4xID0gMCwgICAgICAgICAgICAgICAgLyogUENJRSAxLjAgLSBUcmFuc2ZlciByYXRlIG9m IDIuNSBHVC9zICovCisJUFBfUENJRUdlbjIsICAgICAgICAgICAgICAgICAgICAvKlBDSUUgMi4w IC0gVHJhbnNmZXIgcmF0ZSBvZiA1LjAgR1QvcyAqLworCVBQX1BDSUVHZW4zICAgICAgICAgICAg ICAgICAgICAgLypQQ0lFIDMuMCAtIFRyYW5zZmVyIHJhdGUgb2YgOC4wIEdUL3MgKi8KK307CisK K3R5cGVkZWYgZW51bSBQUF9QQ0lFR2VuIFBQX1BDSUVHZW47CisKKyNkZWZpbmUgUFBfTWluX1BD SUVHZW4gICAgIFBQX1BDSUVHZW4xCisjZGVmaW5lIFBQX01heF9QQ0lFR2VuICAgICBQUF9QQ0lF R2VuMworI2RlZmluZSBQUF9NaW5fUENJRUxhbmUgICAgMQorI2RlZmluZSBQUF9NYXhfUENJRUxh bmUgICAgMzIKKwogZW51bSBwaG1fY2xvY2tfVHlwZSB7CiAJUEhNX0Rpc3BDbG9jayA9IDEsCiAJ UEhNX1NDbG9jaywKQEAgLTI3Myw4ICszMTAsMjIgQEAgc3RydWN0IHBobV9jbG9ja3MgewogCXVp bnQzMl90IG51bV9vZl9lbnRyaWVzOwogCXVpbnQzMl90IGNsb2NrW01BWF9OVU1fQ0xPQ0tTXTsK IH07Ci0KK2V4dGVybiBpbnQgcGhtX2VuYWJsZV9jbG9ja19wb3dlcl9nYXRpbmdzKHN0cnVjdCBw cF9od21nciAqaHdtZ3IpOworZXh0ZXJuIGludCBwaG1fcG93ZXJnYXRlX3V2ZChzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyLCBib29sIGdhdGUpOworZXh0ZXJuIGludCBwaG1fcG93ZXJnYXRlX3ZjZShz dHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBib29sIGdhdGUpOworZXh0ZXJuIGludCBwaG1fcG93ZXJk b3duX3V2ZChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKIGV4dGVybiBpbnQgcGhtX3NldHVwX2Fz aWMoc3RydWN0IHBwX2h3bWdyICpod21ncik7CiBleHRlcm4gaW50IHBobV9lbmFibGVfZHluYW1p Y19zdGF0ZV9tYW5hZ2VtZW50KHN0cnVjdCBwcF9od21nciAqaHdtZ3IpOwogZXh0ZXJuIHZvaWQg cGhtX2luaXRfZHluYW1pY19jYXBzKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpOworZXh0ZXJuIGJv b2wgcGhtX2lzX2h3X2FjY2Vzc19ibG9ja2VkKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpOworZXh0 ZXJuIGludCBwaG1fYmxvY2tfaHdfYWNjZXNzKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIGJvb2wg YmxvY2spOworZXh0ZXJuIGludCBwaG1fc2V0X3Bvd2VyX3N0YXRlKHN0cnVjdCBwcF9od21nciAq aHdtZ3IsCisJCSAgICBjb25zdCBzdHJ1Y3QgcHBfaHdfcG93ZXJfc3RhdGUgKnBjdXJyZW50X3N0 YXRlLAorCQkgY29uc3Qgc3RydWN0IHBwX2h3X3Bvd2VyX3N0YXRlICpwbmV3X3Bvd2VyX3N0YXRl KTsKKworZXh0ZXJuIGludCBwaG1fYXBwbHlfc3RhdGVfYWRqdXN0X3J1bGVzKHN0cnVjdCBwcF9o d21nciAqaHdtZ3IsCisJCQkJICAgc3RydWN0IHBwX3Bvd2VyX3N0YXRlICphZGp1c3RlZF9wcywK KwkJCSAgICAgY29uc3Qgc3RydWN0IHBwX3Bvd2VyX3N0YXRlICpjdXJyZW50X3BzKTsKKworZXh0 ZXJuIGludCBwaG1fZm9yY2VfZHBtX2xldmVscyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBlbnVt IGFtZF9kcG1fZm9yY2VkX2xldmVsIGxldmVsKTsKICNlbmRpZiAvKiBfSEFSRFdBUkVfTUFOQUdF Ul9IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2h3 bWdyLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvaHdtZ3IuaAppbmRleCAw N2ZiYTQxLi4xOGI1YWIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxh eS9pbmMvaHdtZ3IuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvaHdt Z3IuaApAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBfSFdNR1JfSF8KICNkZWZpbmUgX0hXTUdS X0hfCiAKKyNpbmNsdWRlIDxsaW51eC9zZXFfZmlsZS5oPgogI2luY2x1ZGUgImFtZF9wb3dlcnBs YXkuaCIKICNpbmNsdWRlICJwcF9pbnN0YW5jZS5oIgogI2luY2x1ZGUgImhhcmR3YXJlbWFuYWdl ci5oIgpAQCAtODUsNiArODYsMTEgQEAgdHlwZWRlZiBpbnQgKCpwaG1fdGFibGVfZnVuY3Rpb24p KHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHZvaWQgKmlucHV0LAogCiB0eXBlZGVmIGJvb2wgKCpw aG1fY2hlY2tfZnVuY3Rpb24pKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpOwogCitzdHJ1Y3QgcGht X3NldF9wb3dlcl9zdGF0ZV9pbnB1dCB7CisJY29uc3Qgc3RydWN0IHBwX2h3X3Bvd2VyX3N0YXRl ICpwY3VycmVudF9zdGF0ZTsKKwljb25zdCBzdHJ1Y3QgcHBfaHdfcG93ZXJfc3RhdGUgKnBuZXdf c3RhdGU7Cit9OworCiBzdHJ1Y3QgcGhtX2FjcF9hcmJpdGVyIHsKIAl1aW50MzJfdCBhY3BjbGs7 CiB9OwpAQCAtMjUyLDExICsyNTgsMzQgQEAgc3RydWN0IHBwX2h3bWdyX2Z1bmMgewogCWludCAo KmJhY2tlbmRfZmluaSkoc3RydWN0IHBwX2h3bWdyICpod19tZ3IpOwogCWludCAoKmFzaWNfc2V0 dXApKHN0cnVjdCBwcF9od21nciAqaHdfbWdyKTsKIAlpbnQgKCpnZXRfcG93ZXJfc3RhdGVfc2l6 ZSkoc3RydWN0IHBwX2h3bWdyICpod19tZ3IpOwotCWludCAoKmZvcmNlX2RwbV9sZXZlbCkoc3Ry dWN0IHBwX2h3bWdyICpod19tZ3IsIGVudW0gYW1kX2RwbV9mb3JjZWRfbGV2ZWwgbGV2ZWwpOwot CWludCAoKmR5bmFtaWNfc3RhdGVfbWFuYWdlbWVudF9lbmFibGUpKHN0cnVjdCBwcF9od21nciAq aHdfbWdyKTsKLQlpbnQgKCpwYXRjaF9ib290X3N0YXRlKShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdy LCBzdHJ1Y3QgcHBfaHdfcG93ZXJfc3RhdGUgKmh3X3BzKTsKLQlpbnQgKCpnZXRfcHBfdGFibGVf ZW50cnkpKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCBwcF9w b3dlcl9zdGF0ZSAqKTsKKworCWludCAoKmFwcGx5X3N0YXRlX2FkanVzdF9ydWxlcykoc3RydWN0 IHBwX2h3bWdyICpod21nciwKKwkJCQlzdHJ1Y3QgcHBfcG93ZXJfc3RhdGUgICpwcmVxdWVzdF9w cywKKwkJCWNvbnN0IHN0cnVjdCBwcF9wb3dlcl9zdGF0ZSAqcGN1cnJlbnRfcHMpOworCisJaW50 ICgqZm9yY2VfZHBtX2xldmVsKShzdHJ1Y3QgcHBfaHdtZ3IgKmh3X21nciwKKwkJCQkJZW51bSBh bWRfZHBtX2ZvcmNlZF9sZXZlbCBsZXZlbCk7CisKKwlpbnQgKCpkeW5hbWljX3N0YXRlX21hbmFn ZW1lbnRfZW5hYmxlKSgKKwkJCQkJCXN0cnVjdCBwcF9od21nciAqaHdfbWdyKTsKKworCWludCAo KnBhdGNoX2Jvb3Rfc3RhdGUpKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCisJCQkJICAgICBzdHJ1 Y3QgcHBfaHdfcG93ZXJfc3RhdGUgKmh3X3BzKTsKKworCWludCAoKmdldF9wcF90YWJsZV9lbnRy eSkoc3RydWN0IHBwX2h3bWdyICpod21nciwKKwkJCSAgICB1bnNpZ25lZCBsb25nLCBzdHJ1Y3Qg cHBfcG93ZXJfc3RhdGUgKik7CisKIAlpbnQgKCpnZXRfbnVtX29mX3BwX3RhYmxlX2VudHJpZXMp KHN0cnVjdCBwcF9od21nciAqaHdtZ3IpOworCWludCAoKnBvd2VyZG93bl91dmQpKHN0cnVjdCBw cF9od21nciAqaHdtZ3IpOworCWludCAoKnBvd2VyZ2F0ZV92Y2UpKHN0cnVjdCBwcF9od21nciAq aHdtZ3IsIGJvb2wgYmdhdGUpOworCWludCAoKnBvd2VyZ2F0ZV91dmQpKHN0cnVjdCBwcF9od21n ciAqaHdtZ3IsIGJvb2wgYmdhdGUpOworCWludCAoKmdldF9tY2xrKShzdHJ1Y3QgcHBfaHdtZ3Ig Kmh3bWdyLCBib29sIGxvdyk7CisJaW50ICgqZ2V0X3NjbGspKHN0cnVjdCBwcF9od21nciAqaHdt Z3IsIGJvb2wgbG93KTsKKwlpbnQgKCpwb3dlcl9zdGF0ZV9zZXQpKHN0cnVjdCBwcF9od21nciAq aHdtZ3IsCisJCQkJCQljb25zdCB2b2lkICpzdGF0ZSk7CisJdm9pZCAoKnByaW50X2N1cnJlbnRf cGVyZm9yY2VfbGV2ZWwpKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCisJCQkJCQkJc3RydWN0IHNl cV9maWxlICptKTsKKwlpbnQgKCplbmFibGVfY2xvY2tfcG93ZXJfZ2F0aW5nKShzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyKTsKIH07CiAKIHN0cnVjdCBwcF90YWJsZV9mdW5jIHsKQEAgLTQxNiw3ICs0 NDUsNyBAQCBzdHJ1Y3QgcHBfaHdtZ3IgewogCXN0cnVjdCBwcF9zbXVtZ3IgKnNtdW1ncjsKIAlj b25zdCB2b2lkICpzb2Z0X3BwX3RhYmxlOwogCWVudW0gYW1kX2RwbV9mb3JjZWRfbGV2ZWwgZHBt X2xldmVsOwotCisJYm9vbCBibG9ja19od19hY2Nlc3M7CiAJc3RydWN0IHBobV9nZnhfYXJiaXRl ciBnZnhfYXJiaXRlcjsKIAlzdHJ1Y3QgcGhtX2FjcF9hcmJpdGVyIGFjcF9hcmJpdGVyOwogCXN0 cnVjdCBwaG1fdXZkX2FyYml0ZXIgdXZkX2FyYml0ZXI7CkBAIC00MzAsNiArNDU5LDggQEAgc3Ry dWN0IHBwX2h3bWdyIHsKIAlzdHJ1Y3QgcGhtX3J1bnRpbWVfdGFibGVfaGVhZGVyIHNldHVwX2Fz aWM7CiAJc3RydWN0IHBobV9ydW50aW1lX3RhYmxlX2hlYWRlciBkaXNhYmxlX2R5bmFtaWNfc3Rh dGVfbWFuYWdlbWVudDsKIAlzdHJ1Y3QgcGhtX3J1bnRpbWVfdGFibGVfaGVhZGVyIGVuYWJsZV9k eW5hbWljX3N0YXRlX21hbmFnZW1lbnQ7CisJc3RydWN0IHBobV9ydW50aW1lX3RhYmxlX2hlYWRl ciBzZXRfcG93ZXJfc3RhdGU7CisJc3RydWN0IHBobV9ydW50aW1lX3RhYmxlX2hlYWRlciBlbmFi bGVfY2xvY2tfcG93ZXJfZ2F0aW5nczsKIAljb25zdCBzdHJ1Y3QgcHBfaHdtZ3JfZnVuYyAqaHdt Z3JfZnVuYzsKIAljb25zdCBzdHJ1Y3QgcHBfdGFibGVfZnVuYyAqcHB0YWJsZV9mdW5jOwogCXN0 cnVjdCBwcF9wb3dlcl9zdGF0ZSAgICAqcHM7CkBAIC00NzEsNiArNTAyLDExIEBAIGV4dGVybiB2 b2lkIHBobV93YWl0X2Zvcl9pbmRpcmVjdF9yZWdpc3Rlcl91bmVxdWFsKAogCQkJCXVpbnQzMl90 IHZhbHVlLAogCQkJCXVpbnQzMl90IG1hc2spOwogCitib29sIHBobV9jZl93YW50X3V2ZF9wb3dl cl9nYXRpbmcoc3RydWN0IHBwX2h3bWdyICpod21ncik7Citib29sIHBobV9jZl93YW50X3ZjZV9w b3dlcl9nYXRpbmcoc3RydWN0IHBwX2h3bWdyICpod21ncik7CisKKyNkZWZpbmUgUEhNX0VOVElS RV9SRUdJU1RFUl9NQVNLIDB4RkZGRkZGRkZVCisKICNkZWZpbmUgUEhNX0ZJRUxEX1NISUZUKHJl ZywgZmllbGQpIHJlZyMjX18jI2ZpZWxkIyNfX1NISUZUCiAjZGVmaW5lIFBITV9GSUVMRF9NQVNL KHJlZywgZmllbGQpIHJlZyMjX18jI2ZpZWxkIyNfTUFTSwogCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvcHBfYXNpY2Jsb2Nrcy5oIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9wb3dlcnBsYXkvaW5jL3BwX2FzaWNibG9ja3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4wYzE1OTNlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9wb3dlcnBsYXkvaW5jL3BwX2FzaWNibG9ja3MuaApAQCAtMCwwICsxLDQ3IEBACisv KgorICogQ29weXJpZ2h0IDIwMTUgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAq IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cisg KgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y dGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIo UykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBP VEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNP RlRXQVJFLgorICoKKyAqLworI2lmbmRlZiBQUF9BU0lDQkxPQ0tTX0gKKyNkZWZpbmUgUFBfQVNJ Q0JMT0NLU19ICisKKworZW51bSBQSE1fQXNpY0Jsb2NrIHsKKwlQSE1fQXNpY0Jsb2NrX0dGWCwK KwlQSE1fQXNpY0Jsb2NrX1VWRF9NVkMsCisJUEhNX0FzaWNCbG9ja19VVkQsCisJUEhNX0FzaWNC bG9ja19VVkRfSEQsCisJUEhNX0FzaWNCbG9ja19VVkRfU0QsCisJUEhNX0FzaWNCbG9ja19Db3Vu dAorfTsKKworZW51bSBQSE1fQ2xvY2tHYXRlU2V0dGluZyB7CisJUEhNX0Nsb2NrR2F0ZVNldHRp bmdfU3RhdGljT24sCisJUEhNX0Nsb2NrR2F0ZVNldHRpbmdfU3RhdGljT2ZmLAorCVBITV9DbG9j a0dhdGVTZXR0aW5nX0R5bmFtaWMKK307CisKK3N0cnVjdCBwaG1fYXNpY19ibG9ja3MgeworCWJv b2wgZ2Z4IDogMTsKKwlib29sIHV2ZCA6IDE7Cit9OworCisjZW5kaWYKLS0gCjEuOC4zLjEKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==