From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 23/51] drm/amd/powerplay: update atomctrl for fiji Date: Thu, 12 Nov 2015 01:18:13 -0500 Message-ID: <1447309121-2480-24-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-f51.google.com (mail-qg0-f51.google.com [209.85.192.51]) by gabe.freedesktop.org (Postfix) with ESMTPS id 530377A08A for ; Wed, 11 Nov 2015 22:19:16 -0800 (PST) Received: by qgad10 with SMTP id d10so40911828qga.3 for ; Wed, 11 Nov 2015 22:19:15 -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: Eric Huang List-Id: dri-devel@lists.freedesktop.org RnJvbTogRXJpYyBIdWFuZyA8SmluSHVpRXJpYy5IdWFuZ0BhbWQuY29tPgoKQWRkIHNvbWUgbmV3 IGZ1bmN0aW9ucyB0byBzdXBwb3J0IEZpamkuICBTcGxpdCBvdXQKZnJvbSB0aGUgcHJldmlvdXMg cGF0Y2guCgpSZXZpZXdlZC1ieTogSmFtbXkgWmhvdSA8SmFtbXkuWmhvdUBhbWQuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBFcmljIEh1YW5nIDxKaW5IdWlFcmljLkh1YW5nQGFtZC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvcHBhdG9tY3RybC5jICB8IDQ4OSArKysr KysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9w cGF0b21jdHJsLmggIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdy L3RvbmdhX2h3bWdyLmMgfCAgMTAgKy0KIDMgZmlsZXMgY2hhbmdlZCwgNDk2IGluc2VydGlvbnMo KyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dl cnBsYXkvaHdtZ3IvcHBhdG9tY3RybC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkv aHdtZ3IvcHBhdG9tY3RybC5jCmluZGV4IDlhZjJmNTkuLjhiNDdlYTAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3BwYXRvbWN0cmwuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9wcGF0b21jdHJsLmMKQEAgLTI4LDYgKzI4 LDggQEAKICNpbmNsdWRlICJhdG9tYmlvcy5oIgogI2luY2x1ZGUgImNnc19jb21tb24uaCIKICNp bmNsdWRlICJwcF9kZWJ1Zy5oIgorI2luY2x1ZGUgInBwZXZ2bWF0aC5oIgorCiAjZGVmaW5lIE1F TV9JRF9NQVNLICAgICAgICAgICAweGZmMDAwMDAwCiAjZGVmaW5lIE1FTV9JRF9TSElGVCAgICAg ICAgICAyNAogI2RlZmluZSBDTE9DS19SQU5HRV9NQVNLICAgICAgMHgwMGZmZmZmZgpAQCAtOTQs NyArOTYsNyBAQCBzdGF0aWMgaW50IGF0b21jdHJsX3JldHJpZXZlX2FjX3RpbWluZygKICAqIFZC SU9TIHNldCBlbmQgb2YgbWVtb3J5IGNsb2NrIEFDIHRpbWluZyByZWdpc3RlcnMgYnkgdWNQcmVS ZWdEYXRhTGVuZ3RoIGJpdDYgPSAxCiAgKiBAcGFyYW0gICAgcmVnX2Jsb2NrIHRoZSBhZGRyZXNz IEFUT01fSU5JVF9SRUdfQkxPQ0sKICAqIEBwYXJhbSAgICB0YWJsZSB0aGUgYWRkcmVzcyBvZiBN Q1JlZ1RhYmxlCi0gKiBAcmV0dXJuICAgUFBfUmVzdWx0X09LCisgKiBAcmV0dXJuICAgMAogICov CiBzdGF0aWMgaW50IGF0b21jdHJsX3NldF9tY19yZWdfYWRkcmVzc190YWJsZSgKIAkJQVRPTV9J TklUX1JFR19CTE9DSyAqcmVnX2Jsb2NrLApAQCAtMjg2LDYgKzI4OCwzMSBAQCBpbnQgYXRvbWN0 cmxfZ2V0X21lbW9yeV9wbGxfZGl2aWRlcnNfc2koCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoq IGF0b21jdHJsX2dldF9tZW1vcnlfcGxsX2RpdmlkZXJzX3ZpKCkuCisgKgorICogQHBhcmFtIGh3 bWdyICAgICAgICAgICAgICAgICBpbnB1dCBwYXJhbWV0ZXI6IHBvaW50ZXIgdG8gSHdNZ3IKKyAq IEBwYXJhbSBjbG9ja192YWx1ZSAgICAgICAgICAgICBpbnB1dCBwYXJhbWV0ZXI6IG1lbW9yeSBj bG9jaworICogQHBhcmFtIGRpdmlkZXJzICAgICAgICAgICAgICAgb3V0cHV0IHBhcmFtZXRlcjog bWVtb3J5IFBMTCBkaXZpZGVycworICovCitpbnQgYXRvbWN0cmxfZ2V0X21lbW9yeV9wbGxfZGl2 aWRlcnNfdmkoc3RydWN0IHBwX2h3bWdyICpod21nciwKKwkJdWludDMyX3QgY2xvY2tfdmFsdWUs IHBwX2F0b21jdHJsX21lbW9yeV9jbG9ja19wYXJhbSAqbXBsbF9wYXJhbSkKK3sKKwlDT01QVVRF X01FTU9SWV9DTE9DS19QQVJBTV9QQVJBTUVURVJTX1YyXzIgbXBsbF9wYXJhbWV0ZXJzOworCWlu dCByZXN1bHQ7CisKKwltcGxsX3BhcmFtZXRlcnMudWxDbG9jay51bENsb2NrID0gKHVpbnQzMl90 KWNsb2NrX3ZhbHVlOworCisJcmVzdWx0ID0gY2dzX2F0b21fZXhlY19jbWRfdGFibGUoaHdtZ3It PmRldmljZSwKKwkJCUdldEluZGV4SW50b01hc3RlclRhYmxlKENPTU1BTkQsIENvbXB1dGVNZW1v cnlDbG9ja1BhcmFtKSwKKwkJCSZtcGxsX3BhcmFtZXRlcnMpOworCisJaWYgKCFyZXN1bHQpCisJ CW1wbGxfcGFyYW0tPm1wbGxfcG9zdF9kaXZpZGVyID0KKwkJCQkodWludDMyX3QpbXBsbF9wYXJh bWV0ZXJzLnVsQ2xvY2sudWNQb3N0RGl2OworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogaW50IGF0 b21jdHJsX2dldF9lbmdpbmVfcGxsX2RpdmlkZXJzX3ZpKAogCQlzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyLAogCQl1aW50MzJfdCBjbG9ja192YWx1ZSwKQEAgLTM4Nyw3ICs0MTQsNyBAQCB1aW50MzJf dCBhdG9tY3RybF9nZXRfcmVmZXJlbmNlX2Nsb2NrKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiB9 CiAKIC8qKgotICogUmV0dXJucyAwIGlmIHRoZSBnaXZlbiB2b2x0YWdlIHR5cGUgaXMgY29udHJv bGxlZCBieSBHUElPIHBpbnMuCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHZvbHRhZ2Ug dHlwZSBpcyBjb250cm9sbGVkIGJ5IEdQSU8gcGlucy4KICAqIHZvbHRhZ2VfdHlwZSBpcyBvbmUg b2YgU0VUX1ZPTFRBR0VfVFlQRV9BU0lDX1ZEREMsCiAgKiBTRVRfVk9MVEFHRV9UWVBFX0FTSUNf TVZEREMsIFNFVF9WT0xUQUdFX1RZUEVfQVNJQ19NVkREUS4KICAqIHZvbHRhZ2VfbW9kZSBpcyBv bmUgb2YgQVRPTV9TRVRfVk9MVEFHRSwgQVRPTV9TRVRfVk9MVEFHRV9QSEFTRQpAQCAtNDAyLDEw ICs0MjksMTAgQEAgYm9vbCBhdG9tY3RybF9pc192b2x0YWdlX2NvbnRyb2xlZF9ieV9ncGlvX3Yz KAogCWJvb2wgcmV0OwogCiAJUFBfQVNTRVJUX1dJVEhfQ09ERSgoTlVMTCAhPSB2b2x0YWdlX2lu Zm8pLAotCQkJIkNvdWxkIG5vdCBmaW5kIFZvbHRhZ2UgVGFibGUgaW4gQklPUy4iLCByZXR1cm4g LTE7KTsKKwkJCSJDb3VsZCBub3QgZmluZCBWb2x0YWdlIFRhYmxlIGluIEJJT1MuIiwgcmV0dXJu IGZhbHNlOyk7CiAKIAlyZXQgPSAoTlVMTCAhPSBhdG9tY3RybF9sb29rdXBfdm9sdGFnZV90eXBl X3YzCi0JCQkodm9sdGFnZV9pbmZvLCB2b2x0YWdlX3R5cGUsIHZvbHRhZ2VfbW9kZSkpID8gMCA6 IDE7CisJCQkodm9sdGFnZV9pbmZvLCB2b2x0YWdlX3R5cGUsIHZvbHRhZ2VfbW9kZSkpID8gdHJ1 ZSA6IGZhbHNlOwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTUyNSw2ICs1NTIsNDQxIEBAIGJvb2wg YXRvbWN0cmxfZ2V0X3BwX2Fzc2lnbl9waW4oCiAJcmV0dXJuIGJSZXQ7CiB9CiAKK2ludCBhdG9t Y3RybF9jYWxjdWxhdGVfdm9sdGFnZV9ldnZfb25fc2NsaygKKwkJc3RydWN0IHBwX2h3bWdyICpo d21nciwKKwkJdWludDhfdCB2b2x0YWdlX3R5cGUsCisJCXVpbnQzMl90IHNjbGssCisJCXVpbnQx Nl90IHZpcnR1YWxfdm9sdGFnZV9JZCwKKwkJdWludDE2X3QgKnZvbHRhZ2UsCisJCXVpbnQxNl90 IGRwbV9sZXZlbCwKKwkJYm9vbCBkZWJ1ZykKK3sKKwlBVE9NX0FTSUNfUFJPRklMSU5HX0lORk9f VjNfNCAqZ2V0QVNJQ1Byb2ZpbGluZ0luZm87CisKKwlFRlVTRV9MSU5FQVJfRlVOQ19QQVJBTSBz Uk9fZnVzZTsKKwlFRlVTRV9MSU5FQVJfRlVOQ19QQVJBTSBzQ0FDbV9mdXNlOworCUVGVVNFX0xJ TkVBUl9GVU5DX1BBUkFNIHNDQUNiX2Z1c2U7CisJRUZVU0VfTE9HSVNUSUNfRlVOQ19QQVJBTSBz S3RfQmV0YV9mdXNlOworCUVGVVNFX0xPR0lTVElDX0ZVTkNfUEFSQU0gc0t2X21fZnVzZTsKKwlF RlVTRV9MT0dJU1RJQ19GVU5DX1BBUkFNIHNLdl9iX2Z1c2U7CisJRUZVU0VfSU5QVVRfUEFSQU1F VEVSIHNJbnB1dF9GdXNlVmFsdWVzOworCVJFQURfRUZVU0VfVkFMVUVfUEFSQU1FVEVSIHNPdXRw dXRfRnVzZVZhbHVlczsKKworCXVpbnQzMl90IHVsX1JPX2Z1c2VkLCB1bF9DQUNiX2Z1c2VkLCB1 bF9DQUNtX2Z1c2VkLCB1bF9LdF9CZXRhX2Z1c2VkLCB1bF9Ldl9tX2Z1c2VkLCB1bF9Ldl9iX2Z1 c2VkOworCWZJbnQgZlNNX0EwLCBmU01fQTEsIGZTTV9BMiwgZlNNX0EzLCBmU01fQTQsIGZTTV9B NSwgZlNNX0E2LCBmU01fQTc7CisJZkludCBmTWFyZ2luX1JPX2EsIGZNYXJnaW5fUk9fYiwgZk1h cmdpbl9ST19jLCBmTWFyZ2luX2ZpeGVkLCBmTWFyZ2luX0ZNQVhfbWVhbiwgZk1hcmdpbl9QbGF0 X21lYW4sIGZNYXJnaW5fRk1BWF9zaWdtYSwgZk1hcmdpbl9QbGF0X3NpZ21hLCBmTWFyZ2luX0RD X3NpZ21hOworCWZJbnQgZkxrZ19GVCwgcmVwZWF0OworCWZJbnQgZk1pY3JvX0ZNQVgsIGZNaWNy b19DUiwgZlNpZ21hX0ZNQVgsIGZTaWdtYV9DUiwgZlNpZ21hX0RDLCBmRENfU0NMSywgZlNxdWFy ZWRfU2lnbWFfREMsIGZTcXVhcmVkX1NpZ21hX0NSLCBmU3F1YXJlZF9TaWdtYV9GTUFYOworCWZJ bnQgZlJMTF9Mb2FkTGluZSwgZlBvd2VyRFBNeCwgZkRlcmF0ZVREUCwgZlZERENfYmFzZSwgZkFf VGVybSwgZkNfVGVybSwgZkJfVGVybSwgZlJPX0RDX21hcmdpbjsKKwlmSW50IGZST19mdXNlZCwg ZkNBQ21fZnVzZWQsIGZDQUNiX2Z1c2VkLCBmS3ZfbV9mdXNlZCwgZkt2X2JfZnVzZWQsIGZLdF9C ZXRhX2Z1c2VkLCBmRlRfTGtnX1YwTk9STTsKKwlmSW50IGZTY2xrX21hcmdpbiwgZlNjbGssIGZF VlZfVjsKKwlmSW50IGZWX21pbiwgZlZfbWF4LCBmVF9wcm9kLCBmTEtHX0ZhY3RvciwgZlRfRlQs IGZWX0ZULCBmVl94LCBmVERQX1Bvd2VyLCBmVERQX1Bvd2VyX3JpZ2h0LCBmVERQX1Bvd2VyX2xl ZnQsIGZURFBfQ3VycmVudCwgZlZfTkw7CisJdWludDMyX3QgdWxfRlRfTGtnX1YwTk9STTsKKwlm SW50IGZMbl9NYXhEaXZNaW4sIGZNaW4sIGZBdmVyYWdlLCBmUmFuZ2U7CisJZkludCBmUm9vdHNb Ml07CisJZkludCBmU3RlcFNpemUgPSBHZXRTY2FsZWRGcmFjdGlvbig2MjUsIDEwMDAwMCk7CisK KwlpbnQgcmVzdWx0OworCisJZ2V0QVNJQ1Byb2ZpbGluZ0luZm8gPSAoQVRPTV9BU0lDX1BST0ZJ TElOR19JTkZPX1YzXzQgKikKKwkJCWNnc19hdG9tX2dldF9kYXRhX3RhYmxlKGh3bWdyLT5kZXZp Y2UsCisJCQkJCUdldEluZGV4SW50b01hc3RlclRhYmxlKERBVEEsIEFTSUNfUHJvZmlsaW5nSW5m byksCisJCQkJCU5VTEwsIE5VTEwsIE5VTEwpOworCisJaWYgKCFnZXRBU0lDUHJvZmlsaW5nSW5m bykKKwkJcmV0dXJuIC0xOworCisJaWYoZ2V0QVNJQ1Byb2ZpbGluZ0luZm8tPmFzSGVhZGVyLnVj VGFibGVGb3JtYXRSZXZpc2lvbiA8IDMgfHwKKwkJCShnZXRBU0lDUHJvZmlsaW5nSW5mby0+YXNI ZWFkZXIudWNUYWJsZUZvcm1hdFJldmlzaW9uID09IDMgJiYKKwkJCWdldEFTSUNQcm9maWxpbmdJ bmZvLT5hc0hlYWRlci51Y1RhYmxlQ29udGVudFJldmlzaW9uIDwgNCkpCisJCXJldHVybiAtMTsK KworCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKwkgKkdFVFRJTkcgTVVMVEktU1RFUCBQQVJBTUVURVJTIFJFTEFURUQgVE8gQ1VS UkVOVCBEUE0gTEVWRUwKKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICovCisJZlJMTF9Mb2FkTGluZSA9IERpdmlkZShnZXRB U0lDUHJvZmlsaW5nSW5mby0+dWxMb2FkTGluZVNsb3AsIDEwMDApOworCisJc3dpdGNoIChkcG1f bGV2ZWwpIHsKKwljYXNlIDE6CisJCWZQb3dlckRQTXggPSBDb252ZXJ0X1VMT05HX1RvRnJhY3Rp b24oZ2V0QVNJQ1Byb2ZpbGluZ0luZm8tPnVzUG93ZXJEcG0xKTsKKwkJZkRlcmF0ZVREUCA9IEdl dFNjYWxlZEZyYWN0aW9uKGdldEFTSUNQcm9maWxpbmdJbmZvLT51bFRkcERlcmF0ZURQTTEsIDEw MDApOworCQlicmVhazsKKwljYXNlIDI6CisJCWZQb3dlckRQTXggPSBDb252ZXJ0X1VMT05HX1Rv RnJhY3Rpb24oZ2V0QVNJQ1Byb2ZpbGluZ0luZm8tPnVzUG93ZXJEcG0yKTsKKwkJZkRlcmF0ZVRE UCA9IEdldFNjYWxlZEZyYWN0aW9uKGdldEFTSUNQcm9maWxpbmdJbmZvLT51bFRkcERlcmF0ZURQ TTIsIDEwMDApOworCQlicmVhazsKKwljYXNlIDM6CisJCWZQb3dlckRQTXggPSBDb252ZXJ0X1VM T05HX1RvRnJhY3Rpb24oZ2V0QVNJQ1Byb2ZpbGluZ0luZm8tPnVzUG93ZXJEcG0zKTsKKwkJZkRl cmF0ZVREUCA9IEdldFNjYWxlZEZyYWN0aW9uKGdldEFTSUNQcm9maWxpbmdJbmZvLT51bFRkcERl cmF0ZURQTTMsIDEwMDApOworCQlicmVhazsKKwljYXNlIDQ6CisJCWZQb3dlckRQTXggPSBDb252 ZXJ0X1VMT05HX1RvRnJhY3Rpb24oZ2V0QVNJQ1Byb2ZpbGluZ0luZm8tPnVzUG93ZXJEcG00KTsK KwkJZkRlcmF0ZVREUCA9IEdldFNjYWxlZEZyYWN0aW9uKGdldEFTSUNQcm9maWxpbmdJbmZvLT51 bFRkcERlcmF0ZURQTTQsIDEwMDApOworCQlicmVhazsKKwljYXNlIDU6CisJCWZQb3dlckRQTXgg PSBDb252ZXJ0X1VMT05HX1RvRnJhY3Rpb24oZ2V0QVNJQ1Byb2ZpbGluZ0luZm8tPnVzUG93ZXJE cG01KTsKKwkJZkRlcmF0ZVREUCA9IEdldFNjYWxlZEZyYWN0aW9uKGdldEFTSUNQcm9maWxpbmdJ bmZvLT51bFRkcERlcmF0ZURQTTUsIDEwMDApOworCQlicmVhazsKKwljYXNlIDY6CisJCWZQb3dl ckRQTXggPSBDb252ZXJ0X1VMT05HX1RvRnJhY3Rpb24oZ2V0QVNJQ1Byb2ZpbGluZ0luZm8tPnVz UG93ZXJEcG02KTsKKwkJZkRlcmF0ZVREUCA9IEdldFNjYWxlZEZyYWN0aW9uKGdldEFTSUNQcm9m aWxpbmdJbmZvLT51bFRkcERlcmF0ZURQTTYsIDEwMDApOworCQlicmVhazsKKwljYXNlIDc6CisJ CWZQb3dlckRQTXggPSBDb252ZXJ0X1VMT05HX1RvRnJhY3Rpb24oZ2V0QVNJQ1Byb2ZpbGluZ0lu Zm8tPnVzUG93ZXJEcG03KTsKKwkJZkRlcmF0ZVREUCA9IEdldFNjYWxlZEZyYWN0aW9uKGdldEFT SUNQcm9maWxpbmdJbmZvLT51bFRkcERlcmF0ZURQTTcsIDEwMDApOworCQlicmVhazsKKwlkZWZh dWx0OgorCQlwcmludGsoS0VSTl9FUlIgIkRQTSBMZXZlbCBub3Qgc3VwcG9ydGVkXG4iKTsKKwkJ ZlBvd2VyRFBNeCA9IENvbnZlcnRfVUxPTkdfVG9GcmFjdGlvbigxKTsKKwkJZkRlcmF0ZVREUCA9 IEdldFNjYWxlZEZyYWN0aW9uKGdldEFTSUNQcm9maWxpbmdJbmZvLT51bFRkcERlcmF0ZURQTTAs IDEwMDApOworCX0KKworCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAqIERFQ09ESU5H IEZVU0UgVkFMVUVTCisJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICovCisJLypEZWNv ZGUgUk9fRnVzZWQqLworCXNST19mdXNlID0gZ2V0QVNJQ1Byb2ZpbGluZ0luZm8tPnNSb0Z1c2U7 CisKKwlzSW5wdXRfRnVzZVZhbHVlcy51c0VmdXNlSW5kZXggPSBzUk9fZnVzZS51c0VmdXNlSW5k ZXg7CisJc0lucHV0X0Z1c2VWYWx1ZXMudWNCaXRTaGlmdCA9IHNST19mdXNlLnVjRWZ1c2VCaXRM U0I7CisJc0lucHV0X0Z1c2VWYWx1ZXMudWNCaXRMZW5ndGggPSBzUk9fZnVzZS51Y0VmdXNlTGVu Z3RoOworCisJc091dHB1dF9GdXNlVmFsdWVzLnNFZnVzZSA9IHNJbnB1dF9GdXNlVmFsdWVzOwor CisJcmVzdWx0ID0gY2dzX2F0b21fZXhlY19jbWRfdGFibGUoaHdtZ3ItPmRldmljZSwKKwkJCUdl dEluZGV4SW50b01hc3RlclRhYmxlKENPTU1BTkQsIFJlYWRFZnVzZVZhbHVlKSwKKwkJCSZzT3V0 cHV0X0Z1c2VWYWx1ZXMpOworCisJaWYgKHJlc3VsdCkKKwkJcmV0dXJuIHJlc3VsdDsKKworCS8q IEZpbmFsbHksIHRoZSBhY3R1YWwgZnVzZSB2YWx1ZSAqLworCXVsX1JPX2Z1c2VkID0gc091dHB1 dF9GdXNlVmFsdWVzLnVsRWZ1c2VWYWx1ZTsKKwlmTWluID0gR2V0U2NhbGVkRnJhY3Rpb24oc1JP X2Z1c2UudWxFZnVzZU1pbiwgMSk7CisJZlJhbmdlID0gR2V0U2NhbGVkRnJhY3Rpb24oc1JPX2Z1 c2UudWxFZnVzZUVuY29kZVJhbmdlLCAxKTsKKwlmUk9fZnVzZWQgPSBmRGVjb2RlTGluZWFyRnVz ZSh1bF9ST19mdXNlZCwgZk1pbiwgZlJhbmdlLCBzUk9fZnVzZS51Y0VmdXNlTGVuZ3RoKTsKKwor CXNDQUNtX2Z1c2UgPSBnZXRBU0lDUHJvZmlsaW5nSW5mby0+c0NBQ207CisKKwlzSW5wdXRfRnVz ZVZhbHVlcy51c0VmdXNlSW5kZXggPSBzQ0FDbV9mdXNlLnVzRWZ1c2VJbmRleDsKKwlzSW5wdXRf RnVzZVZhbHVlcy51Y0JpdFNoaWZ0ID0gc0NBQ21fZnVzZS51Y0VmdXNlQml0TFNCOworCXNJbnB1 dF9GdXNlVmFsdWVzLnVjQml0TGVuZ3RoID0gc0NBQ21fZnVzZS51Y0VmdXNlTGVuZ3RoOworCisJ c091dHB1dF9GdXNlVmFsdWVzLnNFZnVzZSA9IHNJbnB1dF9GdXNlVmFsdWVzOworCisJcmVzdWx0 ID0gY2dzX2F0b21fZXhlY19jbWRfdGFibGUoaHdtZ3ItPmRldmljZSwKKwkJCUdldEluZGV4SW50 b01hc3RlclRhYmxlKENPTU1BTkQsIFJlYWRFZnVzZVZhbHVlKSwKKwkJCSZzT3V0cHV0X0Z1c2VW YWx1ZXMpOworCisJaWYgKHJlc3VsdCkKKwkJcmV0dXJuIHJlc3VsdDsKKworCXVsX0NBQ21fZnVz ZWQgPSBzT3V0cHV0X0Z1c2VWYWx1ZXMudWxFZnVzZVZhbHVlOworCWZNaW4gPSBHZXRTY2FsZWRG cmFjdGlvbihzQ0FDbV9mdXNlLnVsRWZ1c2VNaW4sIDEwMDApOworCWZSYW5nZSA9IEdldFNjYWxl ZEZyYWN0aW9uKHNDQUNtX2Z1c2UudWxFZnVzZUVuY29kZVJhbmdlLCAxMDAwKTsKKworCWZDQUNt X2Z1c2VkID0gZkRlY29kZUxpbmVhckZ1c2UodWxfQ0FDbV9mdXNlZCwgZk1pbiwgZlJhbmdlLCBz Q0FDbV9mdXNlLnVjRWZ1c2VMZW5ndGgpOworCisJc0NBQ2JfZnVzZSA9IGdldEFTSUNQcm9maWxp bmdJbmZvLT5zQ0FDYjsKKworCXNJbnB1dF9GdXNlVmFsdWVzLnVzRWZ1c2VJbmRleCA9IHNDQUNi X2Z1c2UudXNFZnVzZUluZGV4OworCXNJbnB1dF9GdXNlVmFsdWVzLnVjQml0U2hpZnQgPSBzQ0FD Yl9mdXNlLnVjRWZ1c2VCaXRMU0I7CisJc0lucHV0X0Z1c2VWYWx1ZXMudWNCaXRMZW5ndGggPSBz Q0FDYl9mdXNlLnVjRWZ1c2VMZW5ndGg7CisJc091dHB1dF9GdXNlVmFsdWVzLnNFZnVzZSA9IHNJ bnB1dF9GdXNlVmFsdWVzOworCisJcmVzdWx0ID0gY2dzX2F0b21fZXhlY19jbWRfdGFibGUoaHdt Z3ItPmRldmljZSwKKwkJCUdldEluZGV4SW50b01hc3RlclRhYmxlKENPTU1BTkQsIFJlYWRFZnVz ZVZhbHVlKSwKKwkJCSZzT3V0cHV0X0Z1c2VWYWx1ZXMpOworCisJaWYgKHJlc3VsdCkKKwkJcmV0 dXJuIHJlc3VsdDsKKworCXVsX0NBQ2JfZnVzZWQgPSBzT3V0cHV0X0Z1c2VWYWx1ZXMudWxFZnVz ZVZhbHVlOworCWZNaW4gPSBHZXRTY2FsZWRGcmFjdGlvbihzQ0FDYl9mdXNlLnVsRWZ1c2VNaW4s IDEwMDApOworCWZSYW5nZSA9IEdldFNjYWxlZEZyYWN0aW9uKHNDQUNiX2Z1c2UudWxFZnVzZUVu Y29kZVJhbmdlLCAxMDAwKTsKKworCWZDQUNiX2Z1c2VkID0gZkRlY29kZUxpbmVhckZ1c2UodWxf Q0FDYl9mdXNlZCwgZk1pbiwgZlJhbmdlLCBzQ0FDYl9mdXNlLnVjRWZ1c2VMZW5ndGgpOworCisJ c0t0X0JldGFfZnVzZSA9IGdldEFTSUNQcm9maWxpbmdJbmZvLT5zS3RfYjsKKworCXNJbnB1dF9G dXNlVmFsdWVzLnVzRWZ1c2VJbmRleCA9IHNLdF9CZXRhX2Z1c2UudXNFZnVzZUluZGV4OworCXNJ bnB1dF9GdXNlVmFsdWVzLnVjQml0U2hpZnQgPSBzS3RfQmV0YV9mdXNlLnVjRWZ1c2VCaXRMU0I7 CisJc0lucHV0X0Z1c2VWYWx1ZXMudWNCaXRMZW5ndGggPSBzS3RfQmV0YV9mdXNlLnVjRWZ1c2VM ZW5ndGg7CisKKwlzT3V0cHV0X0Z1c2VWYWx1ZXMuc0VmdXNlID0gc0lucHV0X0Z1c2VWYWx1ZXM7 CisKKwlyZXN1bHQgPSBjZ3NfYXRvbV9leGVjX2NtZF90YWJsZShod21nci0+ZGV2aWNlLAorCQkJ R2V0SW5kZXhJbnRvTWFzdGVyVGFibGUoQ09NTUFORCwgUmVhZEVmdXNlVmFsdWUpLAorCQkJJnNP dXRwdXRfRnVzZVZhbHVlcyk7CisKKwlpZiAocmVzdWx0KQorCQlyZXR1cm4gcmVzdWx0OworCisJ dWxfS3RfQmV0YV9mdXNlZCA9IHNPdXRwdXRfRnVzZVZhbHVlcy51bEVmdXNlVmFsdWU7CisJZkF2 ZXJhZ2UgPSBHZXRTY2FsZWRGcmFjdGlvbihzS3RfQmV0YV9mdXNlLnVsRWZ1c2VFbmNvZGVBdmVy YWdlLCAxMDAwKTsKKwlmUmFuZ2UgPSBHZXRTY2FsZWRGcmFjdGlvbihzS3RfQmV0YV9mdXNlLnVs RWZ1c2VFbmNvZGVSYW5nZSwgMTAwMCk7CisKKwlmS3RfQmV0YV9mdXNlZCA9IGZEZWNvZGVMb2dp c3RpY0Z1c2UodWxfS3RfQmV0YV9mdXNlZCwKKwkJCWZBdmVyYWdlLCBmUmFuZ2UsIHNLdF9CZXRh X2Z1c2UudWNFZnVzZUxlbmd0aCk7CisKKwlzS3ZfbV9mdXNlID0gZ2V0QVNJQ1Byb2ZpbGluZ0lu Zm8tPnNLdl9tOworCisJc0lucHV0X0Z1c2VWYWx1ZXMudXNFZnVzZUluZGV4ID0gc0t2X21fZnVz ZS51c0VmdXNlSW5kZXg7CisJc0lucHV0X0Z1c2VWYWx1ZXMudWNCaXRTaGlmdCA9IHNLdl9tX2Z1 c2UudWNFZnVzZUJpdExTQjsKKwlzSW5wdXRfRnVzZVZhbHVlcy51Y0JpdExlbmd0aCA9IHNLdl9t X2Z1c2UudWNFZnVzZUxlbmd0aDsKKworCXNPdXRwdXRfRnVzZVZhbHVlcy5zRWZ1c2UgPSBzSW5w dXRfRnVzZVZhbHVlczsKKworCXJlc3VsdCA9IGNnc19hdG9tX2V4ZWNfY21kX3RhYmxlKGh3bWdy LT5kZXZpY2UsCisJCQlHZXRJbmRleEludG9NYXN0ZXJUYWJsZShDT01NQU5ELCBSZWFkRWZ1c2VW YWx1ZSksCisJCQkmc091dHB1dF9GdXNlVmFsdWVzKTsKKwlpZiAocmVzdWx0KQorCQlyZXR1cm4g cmVzdWx0OworCisJdWxfS3ZfbV9mdXNlZCA9IHNPdXRwdXRfRnVzZVZhbHVlcy51bEVmdXNlVmFs dWU7CisJZkF2ZXJhZ2UgPSBHZXRTY2FsZWRGcmFjdGlvbihzS3ZfbV9mdXNlLnVsRWZ1c2VFbmNv ZGVBdmVyYWdlLCAxMDAwKTsKKwlmUmFuZ2UgPSBHZXRTY2FsZWRGcmFjdGlvbigoc0t2X21fZnVz ZS51bEVmdXNlRW5jb2RlUmFuZ2UgJiAweDdmZmZmZmZmKSwgMTAwMCk7CisJZlJhbmdlID0gZk11 bHRpcGx5KGZSYW5nZSwgQ29udmVydFRvRnJhY3Rpb24oLTEpKTsKKworCWZLdl9tX2Z1c2VkID0g ZkRlY29kZUxvZ2lzdGljRnVzZSh1bF9Ldl9tX2Z1c2VkLAorCQkJZkF2ZXJhZ2UsIGZSYW5nZSwg c0t2X21fZnVzZS51Y0VmdXNlTGVuZ3RoKTsKKworCXNLdl9iX2Z1c2UgPSBnZXRBU0lDUHJvZmls aW5nSW5mby0+c0t2X2I7CisKKwlzSW5wdXRfRnVzZVZhbHVlcy51c0VmdXNlSW5kZXggPSBzS3Zf Yl9mdXNlLnVzRWZ1c2VJbmRleDsKKwlzSW5wdXRfRnVzZVZhbHVlcy51Y0JpdFNoaWZ0ID0gc0t2 X2JfZnVzZS51Y0VmdXNlQml0TFNCOworCXNJbnB1dF9GdXNlVmFsdWVzLnVjQml0TGVuZ3RoID0g c0t2X2JfZnVzZS51Y0VmdXNlTGVuZ3RoOworCXNPdXRwdXRfRnVzZVZhbHVlcy5zRWZ1c2UgPSBz SW5wdXRfRnVzZVZhbHVlczsKKworCXJlc3VsdCA9IGNnc19hdG9tX2V4ZWNfY21kX3RhYmxlKGh3 bWdyLT5kZXZpY2UsCisJCQlHZXRJbmRleEludG9NYXN0ZXJUYWJsZShDT01NQU5ELCBSZWFkRWZ1 c2VWYWx1ZSksCisJCQkmc091dHB1dF9GdXNlVmFsdWVzKTsKKworCWlmIChyZXN1bHQpCisJCXJl dHVybiByZXN1bHQ7CisKKwl1bF9Ldl9iX2Z1c2VkID0gc091dHB1dF9GdXNlVmFsdWVzLnVsRWZ1 c2VWYWx1ZTsKKwlmQXZlcmFnZSA9IEdldFNjYWxlZEZyYWN0aW9uKHNLdl9iX2Z1c2UudWxFZnVz ZUVuY29kZUF2ZXJhZ2UsIDEwMDApOworCWZSYW5nZSA9IEdldFNjYWxlZEZyYWN0aW9uKHNLdl9i X2Z1c2UudWxFZnVzZUVuY29kZVJhbmdlLCAxMDAwKTsKKworCWZLdl9iX2Z1c2VkID0gZkRlY29k ZUxvZ2lzdGljRnVzZSh1bF9Ldl9iX2Z1c2VkLAorCQkJZkF2ZXJhZ2UsIGZSYW5nZSwgc0t2X2Jf ZnVzZS51Y0VmdXNlTGVuZ3RoKTsKKworCS8qIERlY29kaW5nIHRoZSBMZWFrYWdlIC0gTm8gc3Bl Y2lhbCBzdHJ1Y3QgY29udGFpbmVyICovCisJLyoKKwkgKiB1c0xrZ0V1c2VJbmRleD01NgorCSAq IHVjTGtnRWZ1c2VCaXRMU0I9NgorCSAqIHVjTGtnRWZ1c2VMZW5ndGg9MTAKKwkgKiB1bExrZ0Vu Y29kZUxuX01heERpdk1pbj02OTA3NworCSAqIHVsTGtnRW5jb2RlTWF4PTEwMDAwMDAKKwkgKiB1 bExrZ0VuY29kZU1pbj0xMDAwCisJICogdWxFZnVzZUxvZ2lzdGljQWxwaGE9MTMKKwkgKi8KKwor CXNJbnB1dF9GdXNlVmFsdWVzLnVzRWZ1c2VJbmRleCA9IGdldEFTSUNQcm9maWxpbmdJbmZvLT51 c0xrZ0V1c2VJbmRleDsKKwlzSW5wdXRfRnVzZVZhbHVlcy51Y0JpdFNoaWZ0ID0gZ2V0QVNJQ1By b2ZpbGluZ0luZm8tPnVjTGtnRWZ1c2VCaXRMU0I7CisJc0lucHV0X0Z1c2VWYWx1ZXMudWNCaXRM ZW5ndGggPSBnZXRBU0lDUHJvZmlsaW5nSW5mby0+dWNMa2dFZnVzZUxlbmd0aDsKKworCXNPdXRw dXRfRnVzZVZhbHVlcy5zRWZ1c2UgPSBzSW5wdXRfRnVzZVZhbHVlczsKKworCXJlc3VsdCA9IGNn c19hdG9tX2V4ZWNfY21kX3RhYmxlKGh3bWdyLT5kZXZpY2UsCisJCQlHZXRJbmRleEludG9NYXN0 ZXJUYWJsZShDT01NQU5ELCBSZWFkRWZ1c2VWYWx1ZSksCisJCQkmc091dHB1dF9GdXNlVmFsdWVz KTsKKworCWlmIChyZXN1bHQpCisJCXJldHVybiByZXN1bHQ7CisKKwl1bF9GVF9Ma2dfVjBOT1JN ID0gc091dHB1dF9GdXNlVmFsdWVzLnVsRWZ1c2VWYWx1ZTsKKwlmTG5fTWF4RGl2TWluID0gR2V0 U2NhbGVkRnJhY3Rpb24oZ2V0QVNJQ1Byb2ZpbGluZ0luZm8tPnVsTGtnRW5jb2RlTG5fTWF4RGl2 TWluLCAxMDAwMCk7CisJZk1pbiA9IEdldFNjYWxlZEZyYWN0aW9uKGdldEFTSUNQcm9maWxpbmdJ bmZvLT51bExrZ0VuY29kZU1pbiwgMTAwMDApOworCisJZkZUX0xrZ19WME5PUk0gPSBmRGVjb2Rl TGVha2FnZUlEKHVsX0ZUX0xrZ19WME5PUk0sCisJCQlmTG5fTWF4RGl2TWluLCBmTWluLCBnZXRB U0lDUHJvZmlsaW5nSW5mby0+dWNMa2dFZnVzZUxlbmd0aCk7CisJZkxrZ19GVCA9IGZGVF9Ma2df VjBOT1JNOworCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisJICogUEFSVCAyIC0gR3JhYmJpbmcgYWxsIHJlcXVpcmVkIHZhbHVlcworCSAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAqLworCWZTTV9BMCA9IGZNdWx0 aXBseShHZXRTY2FsZWRGcmFjdGlvbihnZXRBU0lDUHJvZmlsaW5nSW5mby0+dWxTTV9BMCwgMTAw MDAwMCksCisJCQlDb252ZXJ0VG9GcmFjdGlvbih1UG93KC0xLCBnZXRBU0lDUHJvZmlsaW5nSW5m by0+dWNTTV9BMF9zaWduKSkpOworCWZTTV9BMSA9IGZNdWx0aXBseShHZXRTY2FsZWRGcmFjdGlv bihnZXRBU0lDUHJvZmlsaW5nSW5mby0+dWxTTV9BMSwgMTAwMDAwMCksCisJCQlDb252ZXJ0VG9G cmFjdGlvbih1UG93KC0xLCBnZXRBU0lDUHJvZmlsaW5nSW5mby0+dWNTTV9BMV9zaWduKSkpOwor CWZTTV9BMiA9IGZNdWx0aXBseShHZXRTY2FsZWRGcmFjdGlvbihnZXRBU0lDUHJvZmlsaW5nSW5m by0+dWxTTV9BMiwgMTAwMDAwKSwKKwkJCUNvbnZlcnRUb0ZyYWN0aW9uKHVQb3coLTEsIGdldEFT SUNQcm9maWxpbmdJbmZvLT51Y1NNX0EyX3NpZ24pKSk7CisJZlNNX0EzID0gZk11bHRpcGx5KEdl dFNjYWxlZEZyYWN0aW9uKGdldEFTSUNQcm9maWxpbmdJbmZvLT51bFNNX0EzLCAxMDAwMDAwKSwK KwkJCUNvbnZlcnRUb0ZyYWN0aW9uKHVQb3coLTEsIGdldEFTSUNQcm9maWxpbmdJbmZvLT51Y1NN X0EzX3NpZ24pKSk7CisJZlNNX0E0ID0gZk11bHRpcGx5KEdldFNjYWxlZEZyYWN0aW9uKGdldEFT SUNQcm9maWxpbmdJbmZvLT51bFNNX0E0LCAxMDAwMDAwKSwKKwkJCUNvbnZlcnRUb0ZyYWN0aW9u KHVQb3coLTEsIGdldEFTSUNQcm9maWxpbmdJbmZvLT51Y1NNX0E0X3NpZ24pKSk7CisJZlNNX0E1 ID0gZk11bHRpcGx5KEdldFNjYWxlZEZyYWN0aW9uKGdldEFTSUNQcm9maWxpbmdJbmZvLT51bFNN X0E1LCAxMDAwKSwKKwkJCUNvbnZlcnRUb0ZyYWN0aW9uKHVQb3coLTEsIGdldEFTSUNQcm9maWxp bmdJbmZvLT51Y1NNX0E1X3NpZ24pKSk7CisJZlNNX0E2ID0gZk11bHRpcGx5KEdldFNjYWxlZEZy YWN0aW9uKGdldEFTSUNQcm9maWxpbmdJbmZvLT51bFNNX0E2LCAxMDAwKSwKKwkJCUNvbnZlcnRU b0ZyYWN0aW9uKHVQb3coLTEsIGdldEFTSUNQcm9maWxpbmdJbmZvLT51Y1NNX0E2X3NpZ24pKSk7 CisJZlNNX0E3ID0gZk11bHRpcGx5KEdldFNjYWxlZEZyYWN0aW9uKGdldEFTSUNQcm9maWxpbmdJ bmZvLT51bFNNX0E3LCAxMDAwKSwKKwkJCUNvbnZlcnRUb0ZyYWN0aW9uKHVQb3coLTEsIGdldEFT SUNQcm9maWxpbmdJbmZvLT51Y1NNX0E3X3NpZ24pKSk7CisKKwlmTWFyZ2luX1JPX2EgPSBDb252 ZXJ0VG9GcmFjdGlvbihnZXRBU0lDUHJvZmlsaW5nSW5mby0+dWxNYXJnaW5fUk9fYSk7CisJZk1h cmdpbl9ST19iID0gQ29udmVydFRvRnJhY3Rpb24oZ2V0QVNJQ1Byb2ZpbGluZ0luZm8tPnVsTWFy Z2luX1JPX2IpOworCWZNYXJnaW5fUk9fYyA9IENvbnZlcnRUb0ZyYWN0aW9uKGdldEFTSUNQcm9m aWxpbmdJbmZvLT51bE1hcmdpbl9ST19jKTsKKworCWZNYXJnaW5fZml4ZWQgPSBDb252ZXJ0VG9G cmFjdGlvbihnZXRBU0lDUHJvZmlsaW5nSW5mby0+dWxNYXJnaW5fZml4ZWQpOworCisJZk1hcmdp bl9GTUFYX21lYW4gPSBHZXRTY2FsZWRGcmFjdGlvbigKKwkJCWdldEFTSUNQcm9maWxpbmdJbmZv LT51bE1hcmdpbl9GbWF4X21lYW4sIDEwMDAwKTsKKwlmTWFyZ2luX1BsYXRfbWVhbiA9IEdldFNj YWxlZEZyYWN0aW9uKAorCQkJZ2V0QVNJQ1Byb2ZpbGluZ0luZm8tPnVsTWFyZ2luX3BsYXRfbWVh biwgMTAwMDApOworCWZNYXJnaW5fRk1BWF9zaWdtYSA9IEdldFNjYWxlZEZyYWN0aW9uKAorCQkJ Z2V0QVNJQ1Byb2ZpbGluZ0luZm8tPnVsTWFyZ2luX0ZtYXhfc2lnbWEsIDEwMDAwKTsKKwlmTWFy Z2luX1BsYXRfc2lnbWEgPSBHZXRTY2FsZWRGcmFjdGlvbigKKwkJCWdldEFTSUNQcm9maWxpbmdJ bmZvLT51bE1hcmdpbl9wbGF0X3NpZ21hLCAxMDAwMCk7CisKKwlmTWFyZ2luX0RDX3NpZ21hID0g R2V0U2NhbGVkRnJhY3Rpb24oCisJCQlnZXRBU0lDUHJvZmlsaW5nSW5mby0+dWxNYXJnaW5fRENf c2lnbWEsIDEwMCk7CisJZk1hcmdpbl9EQ19zaWdtYSA9IGZEaXZpZGUoZk1hcmdpbl9EQ19zaWdt YSwgQ29udmVydFRvRnJhY3Rpb24oMTAwMCkpOworCisJZkNBQ21fZnVzZWQgPSBmRGl2aWRlKGZD QUNtX2Z1c2VkLCBDb252ZXJ0VG9GcmFjdGlvbigxMDApKTsKKwlmQ0FDYl9mdXNlZCA9IGZEaXZp ZGUoZkNBQ2JfZnVzZWQsIENvbnZlcnRUb0ZyYWN0aW9uKDEwMCkpOworCWZLdF9CZXRhX2Z1c2Vk ID0gZkRpdmlkZShmS3RfQmV0YV9mdXNlZCwgQ29udmVydFRvRnJhY3Rpb24oMTAwKSk7CisJZkt2 X21fZnVzZWQgPSAgZk5lZ2F0ZShmRGl2aWRlKGZLdl9tX2Z1c2VkLCBDb252ZXJ0VG9GcmFjdGlv bigxMDApKSk7CisJZkt2X2JfZnVzZWQgPSBmRGl2aWRlKGZLdl9iX2Z1c2VkLCBDb252ZXJ0VG9G cmFjdGlvbigxMCkpOworCisJZlNjbGsgPSBHZXRTY2FsZWRGcmFjdGlvbihzY2xrLCAxMDApOwor CisJZlZfbWF4ID0gZkRpdmlkZShHZXRTY2FsZWRGcmFjdGlvbigKKwkJCWdldEFTSUNQcm9maWxp bmdJbmZvLT51bE1heFZkZGMsIDEwMDApLCBDb252ZXJ0VG9GcmFjdGlvbig0KSk7CisJZlRfcHJv ZCA9IEdldFNjYWxlZEZyYWN0aW9uKGdldEFTSUNQcm9maWxpbmdJbmZvLT51bEJvYXJkQ29yZVRl bXAsIDEwKTsKKwlmTEtHX0ZhY3RvciA9IEdldFNjYWxlZEZyYWN0aW9uKGdldEFTSUNQcm9maWxp bmdJbmZvLT51bEV2dkxrZ0ZhY3RvciwgMTAwKTsKKwlmVF9GVCA9IEdldFNjYWxlZEZyYWN0aW9u KGdldEFTSUNQcm9maWxpbmdJbmZvLT51bExlYWthZ2VUZW1wLCAxMCk7CisJZlZfRlQgPSBmRGl2 aWRlKEdldFNjYWxlZEZyYWN0aW9uKAorCQkJZ2V0QVNJQ1Byb2ZpbGluZ0luZm8tPnVsTGVha2Fn ZVZvbHRhZ2UsIDEwMDApLCBDb252ZXJ0VG9GcmFjdGlvbig0KSk7CisJZlZfbWluID0gZkRpdmlk ZShHZXRTY2FsZWRGcmFjdGlvbigKKwkJCWdldEFTSUNQcm9maWxpbmdJbmZvLT51bE1pblZkZGMs IDEwMDApLCBDb252ZXJ0VG9GcmFjdGlvbig0KSk7CisKKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisJICogUEFSVCAzCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAqLworCisJZkFf VGVybSA9IGZBZGQoZk1hcmdpbl9ST19hLCBmQWRkKGZNdWx0aXBseShmU01fQTQsZlNjbGspLCBm U01fQTUpKTsKKwlmQl9UZXJtID0gZkFkZChmQWRkKGZNdWx0aXBseShmU01fQTIsIGZTY2xrKSwg ZlNNX0E2KSwgZk1hcmdpbl9ST19iKTsKKwlmQ19UZXJtID0gZkFkZChmTWFyZ2luX1JPX2MsCisJ CQlmQWRkKGZNdWx0aXBseShmU01fQTAsZkxrZ19GVCksCisJCQlmQWRkKGZNdWx0aXBseShmU01f QTEsIGZNdWx0aXBseShmTGtnX0ZULGZTY2xrKSksCisJCQlmQWRkKGZNdWx0aXBseShmU01fQTMs IGZTY2xrKSwKKwkJCWZTdWJ0cmFjdChmU01fQTcsZlJPX2Z1c2VkKSkpKSk7CisKKwlmVkREQ19i YXNlID0gZlN1YnRyYWN0KGZST19mdXNlZCwKKwkJCWZTdWJ0cmFjdChmTWFyZ2luX1JPX2MsCisJ CQkJCWZTdWJ0cmFjdChmU01fQTMsIGZNdWx0aXBseShmU01fQTEsIGZTY2xrKSkpKTsKKwlmVkRE Q19iYXNlID0gZkRpdmlkZShmVkREQ19iYXNlLCBmQWRkKGZNdWx0aXBseShmU01fQTAsZlNjbGsp LCBmU01fQTIpKTsKKworCXJlcGVhdCA9IGZTdWJ0cmFjdChmVkREQ19iYXNlLAorCQkJZkRpdmlk ZShmTWFyZ2luX0RDX3NpZ21hLCBDb252ZXJ0VG9GcmFjdGlvbigxMDAwKSkpOworCisJZlJPX0RD X21hcmdpbiA9IGZBZGQoZk11bHRpcGx5KGZNYXJnaW5fUk9fYSwKKwkJCWZHZXRTcXVhcmUocmVw ZWF0KSksCisJCQlmQWRkKGZNdWx0aXBseShmTWFyZ2luX1JPX2IsIHJlcGVhdCksCisJCQlmTWFy Z2luX1JPX2MpKTsKKworCWZEQ19TQ0xLID0gZlN1YnRyYWN0KGZST19mdXNlZCwKKwkJCWZTdWJ0 cmFjdChmUk9fRENfbWFyZ2luLAorCQkJZlN1YnRyYWN0KGZTTV9BMywKKwkJCWZNdWx0aXBseShm U01fQTIsIHJlcGVhdCkpKSk7CisJZkRDX1NDTEsgPSBmRGl2aWRlKGZEQ19TQ0xLLCBmQWRkKGZN dWx0aXBseShmU01fQTAscmVwZWF0KSwgZlNNX0ExKSk7CisKKwlmU2lnbWFfREMgPSBmU3VidHJh Y3QoZlNjbGssIGZEQ19TQ0xLKTsKKworCWZNaWNyb19GTUFYID0gZk11bHRpcGx5KGZTY2xrLCBm TWFyZ2luX0ZNQVhfbWVhbik7CisJZk1pY3JvX0NSID0gZk11bHRpcGx5KGZTY2xrLCBmTWFyZ2lu X1BsYXRfbWVhbik7CisJZlNpZ21hX0ZNQVggPSBmTXVsdGlwbHkoZlNjbGssIGZNYXJnaW5fRk1B WF9zaWdtYSk7CisJZlNpZ21hX0NSID0gZk11bHRpcGx5KGZTY2xrLCBmTWFyZ2luX1BsYXRfc2ln bWEpOworCisJZlNxdWFyZWRfU2lnbWFfREMgPSBmR2V0U3F1YXJlKGZTaWdtYV9EQyk7CisJZlNx dWFyZWRfU2lnbWFfQ1IgPSBmR2V0U3F1YXJlKGZTaWdtYV9DUik7CisJZlNxdWFyZWRfU2lnbWFf Rk1BWCA9IGZHZXRTcXVhcmUoZlNpZ21hX0ZNQVgpOworCisJZlNjbGtfbWFyZ2luID0gZkFkZChm TWljcm9fRk1BWCwKKwkJCWZBZGQoZk1pY3JvX0NSLAorCQkJZkFkZChmTWFyZ2luX2ZpeGVkLAor CQkJZlNxcnQoZkFkZChmU3F1YXJlZF9TaWdtYV9GTUFYLAorCQkJZkFkZChmU3F1YXJlZF9TaWdt YV9EQywgZlNxdWFyZWRfU2lnbWFfQ1IpKSkpKSk7CisJLyoKKwkgZkFfVGVybSA9IGZTTV9BNCAq IChmU2NsayArIGZTY2xrX21hcmdpbikgKyBmU01fQTU7CisJIGZCX1Rlcm0gPSBmU01fQTIgKiAo ZlNjbGsgKyBmU2Nsa19tYXJnaW4pICsgZlNNX0E2OworCSBmQ19UZXJtID0gZlJPX0RDX21hcmdp biArIGZTTV9BMCAqIGZMa2dfRlQgKyBmU01fQTEgKiBmTGtnX0ZUICogKGZTY2xrICsgZlNjbGtf bWFyZ2luKSArIGZTTV9BMyAqIChmU2NsayArIGZTY2xrX21hcmdpbikgKyBmU01fQTcgLSBmUk9f ZnVzZWQ7CisJICovCisKKwlmQV9UZXJtID0gZkFkZChmTXVsdGlwbHkoZlNNX0E0LCBmQWRkKGZT Y2xrLCBmU2Nsa19tYXJnaW4pKSwgZlNNX0E1KTsKKwlmQl9UZXJtID0gZkFkZChmTXVsdGlwbHko ZlNNX0EyLCBmQWRkKGZTY2xrLCBmU2Nsa19tYXJnaW4pKSwgZlNNX0E2KTsKKwlmQ19UZXJtID0g ZkFkZChmUk9fRENfbWFyZ2luLAorCQkJZkFkZChmTXVsdGlwbHkoZlNNX0EwLCBmTGtnX0ZUKSwK KwkJCWZBZGQoZk11bHRpcGx5KGZNdWx0aXBseShmU01fQTEsIGZMa2dfRlQpLAorCQkJZkFkZChm U2NsaywgZlNjbGtfbWFyZ2luKSksCisJCQlmQWRkKGZNdWx0aXBseShmU01fQTMsCisJCQlmQWRk KGZTY2xrLCBmU2Nsa19tYXJnaW4pKSwKKwkJCWZTdWJ0cmFjdChmU01fQTcsIGZST19mdXNlZCkp KSkpOworCisJU29sdmVRdWFkcmFjdGljRXFuKGZBX1Rlcm0sIGZCX1Rlcm0sIGZDX1Rlcm0sIGZS b290cyk7CisKKwlpZiAoR3JlYXRlclRoYW4oZlJvb3RzWzBdLCBmUm9vdHNbMV0pKQorCQlmRVZW X1YgPSBmUm9vdHNbMV07CisJZWxzZQorCQlmRVZWX1YgPSBmUm9vdHNbMF07CisKKwlpZiAoR3Jl YXRlclRoYW4oZlZfbWluLCBmRVZWX1YpKQorCQlmRVZWX1YgPSBmVl9taW47CisJZWxzZSBpZiAo R3JlYXRlclRoYW4oZkVWVl9WLCBmVl9tYXgpKQorCQlmRVZWX1YgPSBmU3VidHJhY3QoZlZfbWF4 LCBmU3RlcFNpemUpOworCisJZkVWVl9WID0gZlJvdW5kVXBCeVN0ZXBTaXplKGZFVlZfViwgZlN0 ZXBTaXplLCAwKTsKKworCS8qLS0tLS0tLS0tLS0tLS0tLS0KKwkgKiBQQVJUIDQKKwkgKi0tLS0t LS0tLS0tLS0tLS0tCisJICovCisKKwlmVl94ID0gZlZfbWluOworCisJd2hpbGUgKEdyZWF0ZXJU aGFuKGZBZGQoZlZfbWF4LCBmU3RlcFNpemUpLCBmVl94KSkgeworCQlmVERQX1Bvd2VyX2xlZnQg PSBmTXVsdGlwbHkoZk11bHRpcGx5KGZNdWx0aXBseShmQWRkKAorCQkJCWZNdWx0aXBseShmQ0FD bV9mdXNlZCwgZlZfeCksIGZDQUNiX2Z1c2VkKSwgZlNjbGspLAorCQkJCWZHZXRTcXVhcmUoZlZf eCkpLCBmRGVyYXRlVERQKTsKKworCQlmVERQX1Bvd2VyX3JpZ2h0ID0gZk11bHRpcGx5KGZGVF9M a2dfVjBOT1JNLCBmTXVsdGlwbHkoZkxLR19GYWN0b3IsCisJCQkJZk11bHRpcGx5KGZFeHBvbmVu dGlhbChmTXVsdGlwbHkoZkFkZChmTXVsdGlwbHkoZkt2X21fZnVzZWQsCisJCQkJZlRfcHJvZCks IGZLdl9iX2Z1c2VkKSwgZlZfeCkpLCBmVl94KSkpOworCQlmVERQX1Bvd2VyX3JpZ2h0ID0gZk11 bHRpcGx5KGZURFBfUG93ZXJfcmlnaHQsIGZFeHBvbmVudGlhbChmTXVsdGlwbHkoCisJCQkJZkt0 X0JldGFfZnVzZWQsIGZUX3Byb2QpKSk7CisJCWZURFBfUG93ZXJfcmlnaHQgPSBmRGl2aWRlKGZU RFBfUG93ZXJfcmlnaHQsIGZFeHBvbmVudGlhbChmTXVsdGlwbHkoCisJCQkJZkFkZChmTXVsdGlw bHkoZkt2X21fZnVzZWQsIGZUX3Byb2QpLCBmS3ZfYl9mdXNlZCksIGZWX0ZUKSkpOworCQlmVERQ X1Bvd2VyX3JpZ2h0ID0gZkRpdmlkZShmVERQX1Bvd2VyX3JpZ2h0LCBmRXhwb25lbnRpYWwoZk11 bHRpcGx5KAorCQkJCWZLdF9CZXRhX2Z1c2VkLCBmVF9GVCkpKTsKKworCQlmVERQX1Bvd2VyID0g ZkFkZChmVERQX1Bvd2VyX2xlZnQsIGZURFBfUG93ZXJfcmlnaHQpOworCisJCWZURFBfQ3VycmVu dCA9IGZEaXZpZGUoZlREUF9Qb3dlciwgZlZfeCk7CisKKwkJZlZfTkwgPSBmQWRkKGZWX3gsIGZE aXZpZGUoZk11bHRpcGx5KGZURFBfQ3VycmVudCwgZlJMTF9Mb2FkTGluZSksCisJCQkJQ29udmVy dFRvRnJhY3Rpb24oMTApKSk7CisKKwkJZlZfTkwgPSBmUm91bmRVcEJ5U3RlcFNpemUoZlZfTkws IGZTdGVwU2l6ZSwgMCk7CisKKwkJaWYgKEdyZWF0ZXJUaGFuKGZWX21heCwgZlZfTkwpICYmCisJ CQkoR3JlYXRlclRoYW4oZlZfTkwsZkVWVl9WKSB8fAorCQkJRXF1YWwoZlZfTkwsIGZFVlZfVikp KSB7CisJCQlmVl9OTCA9IGZNdWx0aXBseShmVl9OTCwgQ29udmVydFRvRnJhY3Rpb24oMTAwMCkp OworCisJCQkqdm9sdGFnZSA9ICh1aW50MTZfdClmVl9OTC5wYXJ0aWFsLnJlYWw7CisJCQlicmVh azsKKwkJfSBlbHNlCisJCQlmVl94ID0gZkFkZChmVl94LCBmU3RlcFNpemUpOworCX0KKworCXJl dHVybiByZXN1bHQ7Cit9CisKIC8qKiBhdG9tY3RybF9nZXRfdm9sdGFnZV9ldnZfb25fc2NsayBn ZXRzIHZvbHRhZ2UgdmlhIGNhbGwgdG8gQVRPTSBDT01NQU5EIHRhYmxlLgogICogQHBhcmFtIGh3 bWdyICAgICAgICAgICAgICAgCWlucHV0OiBwb2ludGVyIHRvIGh3TWFuYWdlcgogICogQHBhcmFt IHZvbHRhZ2VfdHlwZSAgICAgICAgICAgIGlucHV0OiB0eXBlIG9mIEVWViB2b2x0YWdlIFZEREMg b3IgVkRER0ZYCkBAIC03MDEsNCArMTE2MywyMyBAQCBpbnQgYXRvbWN0cmxfZ2V0X2VuZ2luZV9j bG9ja19zcHJlYWRfc3BlY3RydW0oCiAJCQlBU0lDX0lOVEVSTkFMX0VOR0lORV9TUywgZW5naW5l X2Nsb2NrLCBzc0luZm8pOwogfQogCitpbnQgYXRvbWN0cmxfcmVhZF9lZnVzZSh2b2lkICpkZXZp Y2UsIHVpbnQxNl90IHN0YXJ0X2luZGV4LAorCQl1aW50MTZfdCBlbmRfaW5kZXgsIHVpbnQzMl90 IG1hc2ssIHVpbnQzMl90ICplZnVzZSkKK3sKKwlpbnQgcmVzdWx0OworCVJFQURfRUZVU0VfVkFM VUVfUEFSQU1FVEVSIGVmdXNlX3BhcmFtOworCisJZWZ1c2VfcGFyYW0uc0VmdXNlLnVzRWZ1c2VJ bmRleCA9IChzdGFydF9pbmRleCAvIDMyKSAqIDQ7CisJZWZ1c2VfcGFyYW0uc0VmdXNlLnVjQml0 U2hpZnQgPSAodWludDhfdCkKKwkJCShzdGFydF9pbmRleCAtICgoc3RhcnRfaW5kZXggLyAzMikg KiAzMikpOworCWVmdXNlX3BhcmFtLnNFZnVzZS51Y0JpdExlbmd0aCAgPSAodWludDhfdCkKKwkJ CSgoZW5kX2luZGV4IC0gc3RhcnRfaW5kZXgpICsgMSk7CiAKKwlyZXN1bHQgPSBjZ3NfYXRvbV9l eGVjX2NtZF90YWJsZShkZXZpY2UsCisJCQlHZXRJbmRleEludG9NYXN0ZXJUYWJsZShDT01NQU5E LCBSZWFkRWZ1c2VWYWx1ZSksCisJCQkmZWZ1c2VfcGFyYW0pOworCWlmICghcmVzdWx0KQorCQkq ZWZ1c2UgPSBlZnVzZV9wYXJhbS51bEVmdXNlVmFsdWUgJiBtYXNrOworCisJcmV0dXJuIHJlc3Vs dDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3Bw YXRvbWN0cmwuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3BwYXRvbWN0 cmwuaAppbmRleCAyM2RhNDM2Li5iNWJhMzcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL3Bvd2VycGxheS9od21nci9wcGF0b21jdHJsLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9wb3dlcnBsYXkvaHdtZ3IvcHBhdG9tY3RybC5oCkBAIC0yMzEsNiArMjMxLDEyIEBAIGV4dGVy biBpbnQgYXRvbWN0cmxfZ2V0X2VuZ2luZV9wbGxfZGl2aWRlcnNfdmkoc3RydWN0IHBwX2h3bWdy ICpod21nciwgdWludDMyX3QKIGV4dGVybiBpbnQgYXRvbWN0cmxfZ2V0X2Rmc19wbGxfZGl2aWRl cnNfdmkoc3RydWN0IHBwX2h3bWdyICpod21nciwgdWludDMyX3QgY2xvY2tfdmFsdWUsIHBwX2F0 b21jdHJsX2Nsb2NrX2RpdmlkZXJzX3ZpICpkaXZpZGVycyk7CiBleHRlcm4gYm9vbCBhdG9tY3Ry bF9pc192b2x0YWdlX2NvbnRyb2xlZF9ieV9ncGlvX3YzKHN0cnVjdCBwcF9od21nciAqaHdtZ3Is IHVpbnQ4X3Qgdm9sdGFnZV90eXBlLCB1aW50OF90IHZvbHRhZ2VfbW9kZSk7CiBleHRlcm4gaW50 IGF0b21jdHJsX2dldF92b2x0YWdlX3RhYmxlX3YzKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVp bnQ4X3Qgdm9sdGFnZV90eXBlLCB1aW50OF90IHZvbHRhZ2VfbW9kZSwgcHBfYXRvbWN0cmxfdm9s dGFnZV90YWJsZSAqdm9sdGFnZV90YWJsZSk7CitleHRlcm4gaW50IGF0b21jdHJsX2dldF9tZW1v cnlfcGxsX2RpdmlkZXJzX3ZpKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCisJCXVpbnQzMl90IGNs b2NrX3ZhbHVlLCBwcF9hdG9tY3RybF9tZW1vcnlfY2xvY2tfcGFyYW0gKm1wbGxfcGFyYW0pOwor ZXh0ZXJuIGludCBhdG9tY3RybF9yZWFkX2VmdXNlKHZvaWQgKmRldmljZSwgdWludDE2X3Qgc3Rh cnRfaW5kZXgsCisJCXVpbnQxNl90IGVuZF9pbmRleCwgdWludDMyX3QgbWFzaywgdWludDMyX3Qg KmVmdXNlKTsKK2V4dGVybiBpbnQgYXRvbWN0cmxfY2FsY3VsYXRlX3ZvbHRhZ2VfZXZ2X29uX3Nj bGsoc3RydWN0IHBwX2h3bWdyICpod21nciwgdWludDhfdCB2b2x0YWdlX3R5cGUsCisJCXVpbnQz Ml90IHNjbGssIHVpbnQxNl90IHZpcnR1YWxfdm9sdGFnZV9JZCwgdWludDE2X3QgKnZvbHRhZ2Us IHVpbnQxNl90IGRwbV9sZXZlbCwgYm9vbCBkZWJ1Zyk7CiAKIAogI2VuZGlmCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci90b25nYV9od21nci5jIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvdG9uZ2FfaHdtZ3IuYwppbmRleCAwZmVi MWE4Li4xYTAyYzdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9o d21nci90b25nYV9od21nci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3 bWdyL3RvbmdhX2h3bWdyLmMKQEAgLTQ1MDcsMTQgKzQ1MDcsMTQgQEAgaW50IHRvbmdhX2h3bWdy X2JhY2tlbmRfaW5pdChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCWRhdGEtPnZkZF9nZnhfY29u dHJvbCA9IFRPTkdBX1ZPTFRBR0VfQ09OVFJPTF9OT05FOwogCWRhdGEtPm12ZGRfY29udHJvbCA9 IFRPTkdBX1ZPTFRBR0VfQ09OVFJPTF9OT05FOwogCi0JaWYgKDAgPT0gYXRvbWN0cmxfaXNfdm9s dGFnZV9jb250cm9sZWRfYnlfZ3Bpb192Myhod21nciwKKwlpZiAoYXRvbWN0cmxfaXNfdm9sdGFn ZV9jb250cm9sZWRfYnlfZ3Bpb192Myhod21nciwKIAkJCQlWT0xUQUdFX1RZUEVfVkREQywgVk9M VEFHRV9PQkpfU1ZJRDIpKSB7CiAJCWRhdGEtPnZvbHRhZ2VfY29udHJvbCA9IFRPTkdBX1ZPTFRB R0VfQ09OVFJPTF9CWV9TVklEMjsKIAl9CiAKIAlpZiAocGhtX2NhcF9lbmFibGVkKGh3bWdyLT5w bGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywKIAkJCVBITV9QbGF0Zm9ybUNhcHNfQ29u dHJvbFZEREdGWCkpIHsKLQkJaWYgKDAgPT0gYXRvbWN0cmxfaXNfdm9sdGFnZV9jb250cm9sZWRf YnlfZ3Bpb192Myhod21nciwKKwkJaWYgKGF0b21jdHJsX2lzX3ZvbHRhZ2VfY29udHJvbGVkX2J5 X2dwaW9fdjMoaHdtZ3IsCiAJCQlWT0xUQUdFX1RZUEVfVkRER0ZYLCBWT0xUQUdFX09CSl9TVklE MikpIHsKIAkJCWRhdGEtPnZkZF9nZnhfY29udHJvbCA9IFRPTkdBX1ZPTFRBR0VfQ09OVFJPTF9C WV9TVklEMjsKIAkJfQpAQCAtNDUyNyw3ICs0NTI3LDcgQEAgaW50IHRvbmdhX2h3bWdyX2JhY2tl bmRfaW5pdChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCiAJaWYgKHBobV9jYXBfZW5hYmxlZCho d21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsCiAJCQlQSE1fUGxhdGZvcm1D YXBzX0VuYWJsZU1WRERDb250cm9sKSkgewotCQlpZiAoMCA9PSBhdG9tY3RybF9pc192b2x0YWdl X2NvbnRyb2xlZF9ieV9ncGlvX3YzKGh3bWdyLAorCQlpZiAoYXRvbWN0cmxfaXNfdm9sdGFnZV9j b250cm9sZWRfYnlfZ3Bpb192Myhod21nciwKIAkJCQkJVk9MVEFHRV9UWVBFX01WRERDLCBWT0xU QUdFX09CSl9HUElPX0xVVCkpIHsKIAkJCWRhdGEtPm12ZGRfY29udHJvbCA9IFRPTkdBX1ZPTFRB R0VfQ09OVFJPTF9CWV9HUElPOwogCQl9CkBAIC00NTQwLDEwICs0NTQwLDEwIEBAIGludCB0b25n YV9od21ncl9iYWNrZW5kX2luaXQoc3RydWN0IHBwX2h3bWdyICpod21ncikKIAogCWlmIChwaG1f Y2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAogCQkJ UEhNX1BsYXRmb3JtQ2Fwc19Db250cm9sVkREQ0kpKSB7Ci0JCWlmICgwID09IGF0b21jdHJsX2lz X3ZvbHRhZ2VfY29udHJvbGVkX2J5X2dwaW9fdjMoaHdtZ3IsCisJCWlmIChhdG9tY3RybF9pc192 b2x0YWdlX2NvbnRyb2xlZF9ieV9ncGlvX3YzKGh3bWdyLAogCQkJCQlWT0xUQUdFX1RZUEVfVkRE Q0ksIFZPTFRBR0VfT0JKX0dQSU9fTFVUKSkKIAkJCWRhdGEtPnZkZF9jaV9jb250cm9sID0gVE9O R0FfVk9MVEFHRV9DT05UUk9MX0JZX0dQSU87Ci0JCWVsc2UgaWYgKDAgPT0gYXRvbWN0cmxfaXNf dm9sdGFnZV9jb250cm9sZWRfYnlfZ3Bpb192Myhod21nciwKKwkJZWxzZSBpZiAoYXRvbWN0cmxf aXNfdm9sdGFnZV9jb250cm9sZWRfYnlfZ3Bpb192Myhod21nciwKIAkJCQkJCVZPTFRBR0VfVFlQ RV9WRERDSSwgVk9MVEFHRV9PQkpfU1ZJRDIpKQogCQkJZGF0YS0+dmRkX2NpX2NvbnRyb2wgPSBU T05HQV9WT0xUQUdFX0NPTlRST0xfQllfU1ZJRDI7CiAJfQotLSAKMS44LjMuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK