From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4935FC32753 for ; Fri, 2 Aug 2019 15:58:22 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1D25F21726 for ; Fri, 2 Aug 2019 15:58:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1D25F21726 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1htZwX-0005xT-ES; Fri, 02 Aug 2019 15:58:09 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1htZwV-0005vs-JV for xen-devel@lists.xenproject.org; Fri, 02 Aug 2019 15:58:07 +0000 X-Inumbo-ID: 4f42198a-b53e-11e9-9f66-bfeb907b07a4 Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 4f42198a-b53e-11e9-9f66-bfeb907b07a4; Fri, 02 Aug 2019 15:58:03 +0000 (UTC) Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=anthony.perard@citrix.com; spf=Pass smtp.mailfrom=anthony.perard@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa6.hc3370-68.iphmx.com: no sender authenticity information available from domain of anthony.perard@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa6.hc3370-68.iphmx.com: domain of anthony.perard@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ~all" Received-SPF: None (esa6.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: N/1+5RGIHt0R9CTfuy+zTQP3BJ3FEFis3qiIUWqOhgv6OV/26UgNFtt2Qx1NmGDoW3/TIscFWu GE92YkzOD8jPL23D/h9HuJPpGav+VZfEtzW2zLyzIg0uMNQ34Y8UlxCdXS/MokZcO2VyJBl+/L 8BRRvezczTpw6mXJUHl9LIIMPgWHzwe1nkTjQYbSRaPDcpPWd2ZbZkze7jEV+vuyfH1HNgMYm5 /aPizX/a+7u6JcjhKfZIPfPC2NTgK0xbXeRgPUISfjU2JpzaGIzM4BpqCLP1UszF016hq0p7pH Etc= X-SBRS: 2.7 X-MesageID: 3931669 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.64,338,1559534400"; d="scan'208";a="3931669" From: Anthony PERARD To: Date: Fri, 2 Aug 2019 16:36:00 +0100 Message-ID: <20190802153606.32061-30-anthony.perard@citrix.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190802153606.32061-1-anthony.perard@citrix.com> References: <20190802153606.32061-1-anthony.perard@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 29/35] libxl_pci: Use libxl__ao_device with pci_remove X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , Ian Jackson , Wei Liu Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" VGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBvZiB1c2luZyBhc3luY2hyb25vdXMgb3BlcmF0aW9uIHRv IGNvbW11bmljYXRlCndpdGggUUVNVSB2aWEgUU1QIChsaWJ4bF9fZXZfcW1wKS4KClNpZ25lZC1v ZmYtYnk6IEFudGhvbnkgUEVSQVJEIDxhbnRob255LnBlcmFyZEBjaXRyaXguY29tPgotLS0KIHRv b2xzL2xpYnhsL2xpYnhsX2RvbWFpbi5jICAgfCAgNDkgKysrKysrLS0KIHRvb2xzL2xpYnhsL2xp YnhsX2ludGVybmFsLmggfCAgIDYgKy0KIHRvb2xzL2xpYnhsL2xpYnhsX3BjaS5jICAgICAgfCAy MjEgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwg MjEwIGluc2VydGlvbnMoKyksIDY2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhsL2xpYnhsX2RvbWFpbi5jIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tYWluLmMKaW5kZXggZjNj MzlmYTg2Zi4uY2Q3MTkwMDM1MCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfZG9tYWlu LmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tYWluLmMKQEAgLTExMDQsNiArMTEwNCw5IEBA IHN0YXRpYyB2b2lkIGRlc3Ryb3lfZmluaXNoX2NoZWNrKGxpYnhsX19lZ2MgKmVnYywKIH0KIAog LyogQ2FsbGJhY2tzIGZvciBsaWJ4bF9fZGVzdHJveV9kb21pZCAqLworc3RhdGljIHZvaWQgZGVz dHJveV9kb21pZF9wY2lfZG9uZShsaWJ4bF9fZWdjICplZ2MsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpYnhsX19tdWx0aWRldiAqbXVsdGlkZXYsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCByYyk7CiBzdGF0aWMgdm9pZCBkbV9kZXN0cm95X2Ni KGxpYnhsX19lZ2MgKmVnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2Rlc3Ry b3lfZGV2aWNlbW9kZWxfc3RhdGUgKmRkbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCByYyk7CkBAIC0xMTIwLDggKzExMjMsNyBAQCB2b2lkIGxpYnhsX19kZXN0cm95X2RvbWlkKGxp YnhsX19lZ2MgKmVnYywgbGlieGxfX2Rlc3Ryb3lfZG9taWRfc3RhdGUgKmRpcykKIHsKICAgICBT VEFURV9BT19HQyhkaXMtPmFvKTsKICAgICB1aW50MzJfdCBkb21pZCA9IGRpcy0+ZG9taWQ7Ci0g ICAgaW50IHJjLCBkbV9wcmVzZW50OwotICAgIGludCByOworICAgIGludCByYzsKIAogICAgIGxp YnhsX19ldl9jaGlsZF9pbml0KCZkaXMtPmRlc3Ryb3llcik7CiAKQEAgLTExMzUsNiArMTEzNyw0 MSBAQCB2b2lkIGxpYnhsX19kZXN0cm95X2RvbWlkKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2Rl c3Ryb3lfZG9taWRfc3RhdGUgKmRpcykKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCisgICAg bGlieGxfX211bHRpZGV2X2JlZ2luKGFvLCAmZGlzLT5tdWx0aWRldik7CisgICAgZGlzLT5tdWx0 aWRldi5jYWxsYmFjayA9IGRlc3Ryb3lfZG9taWRfcGNpX2RvbmU7CisgICAgbGlieGxfX2Rldmlj ZV9wY2lfZGVzdHJveV9hbGwoZWdjLCBkb21pZCwgJmRpcy0+bXVsdGlkZXYpOworICAgIGxpYnhs X19tdWx0aWRldl9wcmVwYXJlZChlZ2MsICZkaXMtPm11bHRpZGV2LCAwKTsKKyAgICByZXR1cm47 CisKK291dDoKKyAgICBhc3NlcnQocmMpOworICAgIGRpcy0+Y2FsbGJhY2soZWdjLCBkaXMsIHJj KTsKK30KKworc3RhdGljIHZvaWQgZGVzdHJveV9kb21pZF9wY2lfZG9uZShsaWJ4bF9fZWdjICpl Z2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19tdWx0aWRldiAq bXVsdGlkZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByYykKK3sK KyAgICBTVEFURV9BT19HQyhtdWx0aWRldi0+YW8pOworICAgIGxpYnhsX19kZXN0cm95X2RvbWlk X3N0YXRlICpkaXMgPQorICAgICAgICBDT05UQUlORVJfT0YobXVsdGlkZXYsICpkaXMsIG11bHRp ZGV2KTsKKyAgICBpbnQgZG1fcHJlc2VudDsKKyAgICBpbnQgcjsKKworICAgIC8qIENvbnZlbmll bmNlIGFsaWFzZXMgKi8KKyAgICBsaWJ4bF9kb21pZCBkb21pZCA9IGRpcy0+ZG9taWQ7CisKKyAg ICBpZiAocmMpIHsKKyAgICAgICAgTE9HRChFUlJPUiwgZG9taWQsICJQY2kgc2h1dGRvd24gZmFp bGVkIik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHIgPSB4Y19kb21haW5fcGF1 c2UoQ1RYLT54Y2gsIGRvbWlkKTsKKyAgICBpZiAociA8IDApIHsKKyAgICAgICAgTE9HRVZEKEVS Uk9SLCByLCBkb21pZCwgInhjX2RvbWFpbl9wYXVzZSBmYWlsZWQiKTsKKyAgICAgICAgcmMgPSBF UlJPUl9GQUlMOworICAgIH0KKwogICAgIHN3aXRjaCAobGlieGxfX2RvbWFpbl90eXBlKGdjLCBk b21pZCkpIHsKICAgICBjYXNlIExJQlhMX0RPTUFJTl9UWVBFX0hWTToKICAgICAgICAgaWYgKGxp YnhsX2dldF9zdHViZG9tX2lkKENUWCwgZG9taWQpKSB7CkBAIC0xMTUzLDE0ICsxMTkwLDYgQEAg dm9pZCBsaWJ4bF9fZGVzdHJveV9kb21pZChsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19kZXN0cm95 X2RvbWlkX3N0YXRlICpkaXMpCiAgICAgICAgIGFib3J0KCk7CiAgICAgfQogCi0gICAgaWYgKGxp YnhsX19kZXZpY2VfcGNpX2Rlc3Ryb3lfYWxsKGdjLCBkb21pZCkgPCAwKQotICAgICAgICBMT0dE KEVSUk9SLCBkb21pZCwgIlBjaSBzaHV0ZG93biBmYWlsZWQiKTsKLSAgICByID0geGNfZG9tYWlu X3BhdXNlKENUWC0+eGNoLCBkb21pZCk7Ci0gICAgaWYgKHIgPCAwKSB7Ci0gICAgICAgIExPR0VW RChFUlJPUiwgciwgZG9taWQsICJ4Y19kb21haW5fcGF1c2UgZmFpbGVkIik7Ci0gICAgICAgIHJj ID0gRVJST1JfRkFJTDsKLSAgICB9Ci0KICAgICBpZiAoZG1fcHJlc2VudCkgewogICAgICAgICBk aXMtPmRkbXMuYW8gPSBhbzsKICAgICAgICAgZGlzLT5kZG1zLmRvbWlkID0gZG9taWQ7CmRpZmYg LS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oIGIvdG9vbHMvbGlieGwvbGlieGxf aW50ZXJuYWwuaAppbmRleCAyNzdlMzIyZTA5Li5jYTNkM2M3MDkwIDEwMDY0NAotLS0gYS90b29s cy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFs LmgKQEAgLTE5OSw2ICsxOTksNyBAQCB0eXBlZGVmIHN0cnVjdCBsaWJ4bF9fY2FyZWZkIGxpYnhs X19jYXJlZmQ7CiB0eXBlZGVmIHN0cnVjdCBsaWJ4bF9fZXZfbG9jayBsaWJ4bF9fZXZfbG9jazsK IHR5cGVkZWYgc3RydWN0IGxpYnhsX19kbV9yZXN1bWVfc3RhdGUgbGlieGxfX2RtX3Jlc3VtZV9z dGF0ZTsKIHR5cGVkZWYgc3RydWN0IGxpYnhsX19hb19kZXZpY2UgbGlieGxfX2FvX2RldmljZTsK K3R5cGVkZWYgc3RydWN0IGxpYnhsX19tdWx0aWRldiBsaWJ4bF9fbXVsdGlkZXY7CiAKIHR5cGVk ZWYgc3RydWN0IGxpYnhsX19kb21haW5fY3JlYXRlX3N0YXRlIGxpYnhsX19kb21haW5fY3JlYXRl X3N0YXRlOwogdHlwZWRlZiB2b2lkIGxpYnhsX19kb21haW5fY3JlYXRlX2NiKHN0cnVjdCBsaWJ4 bF9fZWdjICplZ2MsCkBAIC0xNTk2LDcgKzE1OTcsOCBAQCBfaGlkZGVuIGludCBsaWJ4bF9fcGNp X3RvcG9sb2d5X2luaXQobGlieGxfX2djICpnYywKIF9oaWRkZW4gdm9pZCBsaWJ4bF9fZGV2aWNl X3BjaV9hZGQobGlieGxfX2VnYyAqZWdjLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3BjaSAqcGNpZGV2LCBib29sIHN0YXJ0 aW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fYW9fZGV2aWNl ICphb2Rldik7Ci1faGlkZGVuIGludCBsaWJ4bF9fZGV2aWNlX3BjaV9kZXN0cm95X2FsbChsaWJ4 bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCk7CitfaGlkZGVuIHZvaWQgbGlieGxfX2RldmljZV9w Y2lfZGVzdHJveV9hbGwobGlieGxfX2VnYyAqZWdjLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fbXVsdGlkZXYgKik7CiBf aGlkZGVuIGJvb2wgbGlieGxfX2lzX2lnZF92Z2FfcGFzc3RocnUobGlieGxfX2djICpnYywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9kb21haW5f Y29uZmlnICpkX2NvbmZpZyk7CiAKQEAgLTI1NzIsNyArMjU3NCw2IEBAIF9oaWRkZW4gdm9pZCBs aWJ4bF9fa2lsbChsaWJ4bF9fZ2MgKmdjLCBwaWRfdCBwaWQsIGludCBzaWcsIGNvbnN0IGNoYXIg KndoYXQpOwogCiAvKi0tLS0tIGRldmljZSBhZGRpdGlvbi9yZW1vdmFsIC0tLS0tKi8KIAotdHlw ZWRlZiBzdHJ1Y3QgbGlieGxfX211bHRpZGV2IGxpYnhsX19tdWx0aWRldjsKIHR5cGVkZWYgdm9p ZCBsaWJ4bF9fZGV2aWNlX2NhbGxiYWNrKGxpYnhsX19lZ2MqLCBsaWJ4bF9fYW9fZGV2aWNlKik7 CiAKIC8qIFRoaXMgZnVuY3Rpb25zIHNldHMgdGhlIG5lY2Vzc2FyeSBsaWJ4bF9fYW9fZGV2aWNl IHN0cnVjdCB2YWx1ZXMgdG8gdXNlCkBAIC0zOTE5LDYgKzM5MjAsNyBAQCBzdHJ1Y3QgbGlieGxf X2Rlc3Ryb3lfZG9taWRfc3RhdGUgewogICAgIGxpYnhsX19kZXN0cm95X2RldmljZW1vZGVsX3N0 YXRlIGRkbXM7CiAgICAgbGlieGxfX2V2X2NoaWxkIGRlc3Ryb3llcjsKICAgICBib29sIHNvZnRf cmVzZXQ7CisgICAgbGlieGxfX211bHRpZGV2IG11bHRpZGV2OwogfTsKIAogc3RydWN0IGxpYnhs X19kb21haW5fZGVzdHJveV9zdGF0ZSB7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9w Y2kuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3BjaS5jCmluZGV4IDM0NzdmM2FiYTYuLmE1ZjcwMGYw YmYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3BjaS5jCisrKyBiL3Rvb2xzL2xpYnhs L2xpYnhsX3BjaS5jCkBAIC0xNzMwLDI0ICsxNzMwLDQ3IEBAIHN0YXRpYyBpbnQgcWVtdV9wY2lf cmVtb3ZlX3hlbnN0b3JlKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAgIHJldHVy biAwOwogfQogCi1zdGF0aWMgaW50IGxpYnhsX19kZXZpY2VfcGNpX3JlbW92ZV9jb21tb24obGli eGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3BjaSAqcGNpZGV2LCBpbnQgZm9yY2UpOwotCi1z dGF0aWMgaW50IGRvX3BjaV9yZW1vdmUobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlX3BjaSAqcGNpZGV2LCBpbnQgZm9y Y2UpCit0eXBlZGVmIHN0cnVjdCBwY2lfcmVtb3ZlX3N0YXRlIHsKKyAgICBsaWJ4bF9fYW9fZGV2 aWNlICphb2RldjsKKyAgICBsaWJ4bF9kb21pZCBkb21pZDsKKyAgICBsaWJ4bF9kZXZpY2VfcGNp ICpwY2lkZXY7CisgICAgYm9vbCBmb3JjZTsKKyAgICBib29sIGh2bTsKKyAgICB1bnNpZ25lZCBp bnQgb3JpZ192ZGV2OworICAgIHVuc2lnbmVkIGludCBwZnVuY19tYXNrOworICAgIGludCBuZXh0 X2Z1bmM7CisgICAgbGlieGxfX2FvX2RldmljZSBzdHViZG9tX2FvZGV2OworfSBwY2lfcmVtb3Zl X3N0YXRlOworCitzdGF0aWMgdm9pZCBsaWJ4bF9fZGV2aWNlX3BjaV9yZW1vdmVfY29tbW9uKGxp YnhsX19lZ2MgKmVnYywKKyAgICB1aW50MzJfdCBkb21pZCwgbGlieGxfZGV2aWNlX3BjaSAqcGNp ZGV2LCBib29sIGZvcmNlLAorICAgIGxpYnhsX19hb19kZXZpY2UgKmFvZGV2KTsKK3N0YXRpYyB2 b2lkIGRldmljZV9wY2lfcmVtb3ZlX2NvbW1vbl9uZXh0KGxpYnhsX19lZ2MgKmVnYywKKyAgICBw Y2lfcmVtb3ZlX3N0YXRlICpwcnMsIGludCByYyk7CitzdGF0aWMgdm9pZCBwY2lfcmVtb3ZlX2Rl dGF0Y2hlZChsaWJ4bF9fZWdjICplZ2MsCisgICAgcGNpX3JlbW92ZV9zdGF0ZSAqcHJzLCBpbnQg cmMpOworc3RhdGljIHZvaWQgcGNpX3JlbW92ZV9zdHViZG9tX2RvbmUobGlieGxfX2VnYyAqZWdj LAorICAgIGxpYnhsX19hb19kZXZpY2UgKmFvZGV2KTsKK3N0YXRpYyB2b2lkIHBjaV9yZW1vdmVf ZG9uZShsaWJ4bF9fZWdjICplZ2MsCisgICAgcGNpX3JlbW92ZV9zdGF0ZSAqcHJzLCBpbnQgcmMp OworCitzdGF0aWMgdm9pZCBkb19wY2lfcmVtb3ZlKGxpYnhsX19lZ2MgKmVnYywgdWludDMyX3Qg ZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV9wY2kgKnBjaWRl diwgaW50IGZvcmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwY2lfcmVtb3ZlX3N0YXRl ICpwcnMpCiB7CisgICAgU1RBVEVfQU9fR0MocHJzLT5hb2Rldi0+YW8pOwogICAgIGxpYnhsX2N0 eCAqY3R4ID0gbGlieGxfX2djX293bmVyKGdjKTsKICAgICBsaWJ4bF9kZXZpY2VfcGNpICphc3Np Z25lZDsKICAgICBsaWJ4bF9kb21haW5fdHlwZSB0eXBlID0gbGlieGxfX2RvbWFpbl90eXBlKGdj LCBkb21pZCk7Ci0gICAgaW50IGh2bSA9IDAsIHJjLCBudW07Ci0gICAgaW50IHN0dWJkb21pZCA9 IDA7CisgICAgaW50IHJjLCBudW07CiAgICAgdWludDMyX3QgZG9tYWluaWQgPSBkb21pZDsKLSAg ICBib29sIGlzc3R1YmRvbSA9IGxpYnhsX2lzX3N0dWJkb20oY3R4LCBkb21pZCwgJmRvbWFpbmlk KTsKLQogCiAgICAgYXNzaWduZWQgPSBsaWJ4bF9kZXZpY2VfcGNpX2xpc3QoY3R4LCBkb21pZCwg Jm51bSk7Ci0gICAgaWYgKCBhc3NpZ25lZCA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIEVSUk9S X0ZBSUw7CisgICAgaWYgKGFzc2lnbmVkID09IE5VTEwpIHsKKyAgICAgICAgcmMgPSBFUlJPUl9G QUlMOworICAgICAgICBnb3RvIG91dF9mYWlsOworICAgIH0KKyAgICBsaWJ4bF9fcHRyX2FkZChn YywgYXNzaWduZWQpOwogCiAgICAgcmMgPSBFUlJPUl9JTlZBTDsKICAgICBpZiAoICFpc19wY2lk ZXZfaW5fYXJyYXkoYXNzaWduZWQsIG51bSwgcGNpZGV2LT5kb21haW4sCkBAIC0xNzU4LDcgKzE3 ODEsNyBAQCBzdGF0aWMgaW50IGRvX3BjaV9yZW1vdmUobGlieGxfX2djICpnYywgdWludDMyX3Qg ZG9taWQsCiAKICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgaWYgKHR5cGUgPT0gTElCWExfRE9N QUlOX1RZUEVfSFZNKSB7Ci0gICAgICAgIGh2bSA9IDE7CisgICAgICAgIHBycy0+aHZtID0gdHJ1 ZTsKICAgICAgICAgc3dpdGNoIChsaWJ4bF9fZGV2aWNlX21vZGVsX3ZlcnNpb25fcnVubmluZyhn YywgZG9taWQpKSB7CiAgICAgICAgIGNhc2UgTElCWExfREVWSUNFX01PREVMX1ZFUlNJT05fUUVN VV9YRU5fVFJBRElUSU9OQUw6CiAgICAgICAgICAgICBpZiAobGlieGxfX3dhaXRfZm9yX2Rldmlj ZV9tb2RlbF9kZXByZWNhdGVkKGdjLCBkb21pZCwKQEAgLTE4MjEsNyArMTg0NCw3IEBAIHN0YXRp YyBpbnQgZG9fcGNpX3JlbW92ZShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICAg ICAgZiA9IGZvcGVuKHN5c2ZzX3BhdGgsICJyIik7CiAgICAgICAgIGlmIChmID09IE5VTEwpIHsK ICAgICAgICAgICAgIExPR0VEKEVSUk9SLCBkb21haW5pZCwgIkNvdWxkbid0IG9wZW4gJXMiLCBz eXNmc19wYXRoKTsKLSAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgZ290byBza2lw X2lycTsKICAgICAgICAgfQogICAgICAgICBpZiAoKGZzY2FuZihmLCAiJXUiLCAmaXJxKSA9PSAx KSAmJiBpcnEpIHsKICAgICAgICAgICAgIHJjID0geGNfcGh5c2Rldl91bm1hcF9waXJxKGN0eC0+ eGNoLCBkb21pZCwgaXJxKTsKQEAgLTE4MzUsNTIgKzE4NTgsMTM0IEBAIHN0YXRpYyBpbnQgZG9f cGNpX3JlbW92ZShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgfQogICAg ICAgICBmY2xvc2UoZik7CiAgICAgfQotb3V0Ogorc2tpcF9pcnE6CisgICAgcmMgPSAwOworb3V0 X2ZhaWw6CisgICAgcGNpX3JlbW92ZV9kZXRhdGNoZWQoZWdjLCBwcnMsIHJjKTsKK30KKworc3Rh dGljIHZvaWQgcGNpX3JlbW92ZV9kZXRhdGNoZWQobGlieGxfX2VnYyAqZWdjLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGNpX3JlbW92ZV9zdGF0ZSAqcHJzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJjKQoreworICAgIFNUQVRFX0FPX0dDKHBycy0+ YW9kZXYtPmFvKTsKKyAgICBpbnQgc3R1YmRvbWlkID0gMDsKKyAgICB1aW50MzJfdCBkb21haW5p ZCA9IHBycy0+ZG9taWQ7CisgICAgYm9vbCBpc3N0dWJkb207CisKKyAgICAvKiBDb252ZW5pZW5j ZSBhbGlhc2VzICovCisgICAgbGlieGxfZGV2aWNlX3BjaSAqY29uc3QgcGNpZGV2ID0gcHJzLT5w Y2lkZXY7CisgICAgbGlieGxfZG9taWQgZG9taWQgPSBwcnMtPmRvbWlkOworCisgICAgaWYgKHJj KSBnb3RvIG91dDsKKworICAgIGlzc3R1YmRvbSA9IGxpYnhsX2lzX3N0dWJkb20oQ1RYLCBkb21p ZCwgJmRvbWFpbmlkKTsKKwogICAgIC8qIGRvbid0IGRvIG11bHRpcGxlIHJlc2V0cyB3aGlsZSBz b21lIGZ1bmN0aW9ucyBhcmUgc3RpbGwgcGFzc2VkIHRocm91Z2ggKi8KICAgICBpZiAoIChwY2lk ZXYtPnZkZXZmbiAmIDB4NykgPT0gMCApIHsKICAgICAgICAgbGlieGxfX2RldmljZV9wY2lfcmVz ZXQoZ2MsIHBjaWRldi0+ZG9tYWluLCBwY2lkZXYtPmJ1cywgcGNpZGV2LT5kZXYsIHBjaWRldi0+ ZnVuYyk7CiAgICAgfQogCiAgICAgaWYgKCFpc3N0dWJkb20pIHsKLSAgICAgICAgcmMgPSB4Y19k ZWFzc2lnbl9kZXZpY2UoY3R4LT54Y2gsIGRvbWlkLCBwY2lkZXZfZW5jb2RlX2JkZihwY2lkZXYp KTsKLSAgICAgICAgaWYgKHJjIDwgMCAmJiAoaHZtIHx8IGVycm5vICE9IEVOT1NZUykpCisgICAg ICAgIHJjID0geGNfZGVhc3NpZ25fZGV2aWNlKENUWC0+eGNoLCBkb21pZCwgcGNpZGV2X2VuY29k ZV9iZGYocGNpZGV2KSk7CisgICAgICAgIGlmIChyYyA8IDAgJiYgKHBycy0+aHZtIHx8IGVycm5v ICE9IEVOT1NZUykpCiAgICAgICAgICAgICBMT0dFRChFUlJPUiwgZG9tYWluaWQsICJ4Y19kZWFz c2lnbl9kZXZpY2UgZmFpbGVkIik7CiAgICAgfQogCi0gICAgc3R1YmRvbWlkID0gbGlieGxfZ2V0 X3N0dWJkb21faWQoY3R4LCBkb21pZCk7CisgICAgc3R1YmRvbWlkID0gbGlieGxfZ2V0X3N0dWJk b21faWQoQ1RYLCBkb21pZCk7CiAgICAgaWYgKHN0dWJkb21pZCAhPSAwKSB7Ci0gICAgICAgIGxp YnhsX2RldmljZV9wY2kgcGNpZGV2X3MgPSAqcGNpZGV2OwotICAgICAgICBsaWJ4bF9fZGV2aWNl X3BjaV9yZW1vdmVfY29tbW9uKGdjLCBzdHViZG9taWQsICZwY2lkZXZfcywgZm9yY2UpOwotICAg IH0KKyAgICAgICAgbGlieGxfZGV2aWNlX3BjaSAqcGNpZGV2X3M7CisgICAgICAgIGxpYnhsX19h b19kZXZpY2UgKmNvbnN0IHN0dWJkb21fYW9kZXYgPSAmcHJzLT5zdHViZG9tX2FvZGV2OworCisg ICAgICAgIEdDTkVXKHBjaWRldl9zKTsKKyAgICAgICAgbGlieGxfZGV2aWNlX3BjaV9pbml0KHBj aWRldl9zKTsKKyAgICAgICAgbGlieGxfZGV2aWNlX3BjaV9jb3B5KENUWCwgcGNpZGV2X3MsIHBj aWRldik7CiAKLSAgICBsaWJ4bF9fZGV2aWNlX3BjaV9yZW1vdmVfeGVuc3RvcmUoZ2MsIGRvbWlk LCBwY2lkZXYpOworICAgICAgICBsaWJ4bF9fcHJlcGFyZV9hb19kZXZpY2UoYW8sIHN0dWJkb21f YW9kZXYpOworICAgICAgICBzdHViZG9tX2FvZGV2LT5hY3Rpb24gPSBMSUJYTF9fREVWSUNFX0FD VElPTl9SRU1PVkU7CisgICAgICAgIHN0dWJkb21fYW9kZXYtPmNhbGxiYWNrID0gcGNpX3JlbW92 ZV9zdHViZG9tX2RvbmU7CisgICAgICAgIHN0dWJkb21fYW9kZXYtPnVwZGF0ZV9qc29uID0gcHJz LT5hb2Rldi0+dXBkYXRlX2pzb247CisgICAgICAgIGxpYnhsX19kZXZpY2VfcGNpX3JlbW92ZV9j b21tb24oZWdjLCBzdHViZG9taWQsIHBjaWRldl9zLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBycy0+Zm9yY2UsIHN0dWJkb21fYW9kZXYpOworICAgICAgICByZXR1 cm47CisgICAgfQogCiAgICAgcmMgPSAwOwotb3V0X2ZhaWw6Ci0gICAgZnJlZShhc3NpZ25lZCk7 Ci0gICAgcmV0dXJuIHJjOworb3V0OgorICAgIHBjaV9yZW1vdmVfZG9uZShlZ2MsIHBycywgcmMp OworfQorCitzdGF0aWMgdm9pZCBwY2lfcmVtb3ZlX3N0dWJkb21fZG9uZShsaWJ4bF9fZWdjICpl Z2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fYW9fZGV2aWNl ICphb2RldikKK3sKKyAgICBwY2lfcmVtb3ZlX3N0YXRlICpwcnMgPSBDT05UQUlORVJfT0YoYW9k ZXYsICpwcnMsIHN0dWJkb21fYW9kZXYpOwogCisgICAgcGNpX3JlbW92ZV9kb25lKGVnYywgcHJz LCAwKTsKIH0KIAotc3RhdGljIGludCBsaWJ4bF9fZGV2aWNlX3BjaV9yZW1vdmVfY29tbW9uKGxp YnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV9wY2kgKnBjaWRldiwgaW50IGZvcmNlKQorc3Rh dGljIHZvaWQgcGNpX3JlbW92ZV9kb25lKGxpYnhsX19lZ2MgKmVnYywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwY2lfcmVtb3ZlX3N0YXRlICpwcnMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IHJjKQogewotICAgIHVuc2lnbmVkIGludCBvcmlnX3ZkZXYsIHBmdW5jX21h c2s7Ci0gICAgaW50IGksIHJjOworICAgIEVHQ19HQzsKIAotICAgIG9yaWdfdmRldiA9IHBjaWRl di0+dmRldmZuICYgfjdVOworICAgIGlmIChyYykgZ290byBvdXQ7CisKKyAgICBsaWJ4bF9fZGV2 aWNlX3BjaV9yZW1vdmVfeGVuc3RvcmUoZ2MsIHBycy0+ZG9taWQsIHBycy0+cGNpZGV2KTsKK291 dDoKKyAgICBkZXZpY2VfcGNpX3JlbW92ZV9jb21tb25fbmV4dChlZ2MsIHBycywgcmMpOworfQor CitzdGF0aWMgdm9pZCBsaWJ4bF9fZGV2aWNlX3BjaV9yZW1vdmVfY29tbW9uKGxpYnhsX19lZ2Mg KmVnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp YnhsX2RldmljZV9wY2kgKnBjaWRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9vbCBmb3JjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfX2FvX2RldmljZSAqYW9kZXYpCit7CisgICAgU1RBVEVfQU9fR0Mo YW9kZXYtPmFvKTsKKyAgICBpbnQgcmM7CisgICAgcGNpX3JlbW92ZV9zdGF0ZSAqcHJzOworCisg ICAgR0NORVcocHJzKTsKKyAgICBwcnMtPmFvZGV2ID0gYW9kZXY7CisgICAgcHJzLT5kb21pZCA9 IGRvbWlkOworICAgIHBycy0+cGNpZGV2ID0gcGNpZGV2OworICAgIHBycy0+Zm9yY2UgPSBmb3Jj ZTsKKworICAgIHBycy0+b3JpZ192ZGV2ID0gcGNpZGV2LT52ZGV2Zm4gJiB+N1U7CiAKICAgICBp ZiAoIHBjaWRldi0+dmZ1bmNfbWFzayA9PSBMSUJYTF9QQ0lfRlVOQ19BTEwgKSB7Ci0gICAgICAg IGlmICggcGNpX211bHRpZnVuY3Rpb25fY2hlY2soZ2MsIHBjaWRldiwgJnBmdW5jX21hc2spICkg eworICAgICAgICBpZiAoIHBjaV9tdWx0aWZ1bmN0aW9uX2NoZWNrKGdjLCBwY2lkZXYsICZwcnMt PnBmdW5jX21hc2spICkgewogICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICAg ICAgZ290byBvdXQ7CiAgICAgICAgIH0KLSAgICAgICAgcGNpZGV2LT52ZnVuY19tYXNrICY9IHBm dW5jX21hc2s7CisgICAgICAgIHBjaWRldi0+dmZ1bmNfbWFzayAmPSBwcnMtPnBmdW5jX21hc2s7 CiAgICAgfWVsc2V7Ci0gICAgICAgIHBmdW5jX21hc2sgPSAoMSA8PCBwY2lkZXYtPmZ1bmMpOwor ICAgICAgICBwcnMtPnBmdW5jX21hc2sgPSAoMSA8PCBwY2lkZXYtPmZ1bmMpOwogICAgIH0KIAot ICAgIGZvcihyYyA9IDAsIGkgPSA3OyBpID49IDA7IC0taSkgeworICAgIHJjID0gMDsKKyAgICBw cnMtPm5leHRfZnVuYyA9IDc7CitvdXQ6CisgICAgZGV2aWNlX3BjaV9yZW1vdmVfY29tbW9uX25l eHQoZWdjLCBwcnMsIHJjKTsKK30KKworc3RhdGljIHZvaWQgZGV2aWNlX3BjaV9yZW1vdmVfY29t bW9uX25leHQobGlieGxfX2VnYyAqZWdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGNpX3JlbW92ZV9zdGF0ZSAqcHJzLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHJjKQoreworICAgIC8qIENvbnZlbmllbmNlIGFsaWFz ZXMgKi8KKyAgICBsaWJ4bF9kb21pZCBkb21pZCA9IHBycy0+ZG9taWQ7CisgICAgbGlieGxfZGV2 aWNlX3BjaSAqY29uc3QgcGNpZGV2ID0gcHJzLT5wY2lkZXY7CisgICAgbGlieGxfX2FvX2Rldmlj ZSAqY29uc3QgYW9kZXYgPSBwcnMtPmFvZGV2OworICAgIGNvbnN0IHVuc2lnbmVkIGludCBwZnVu Y19tYXNrID0gcHJzLT5wZnVuY19tYXNrOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBvcmlnX3Zk ZXYgPSBwcnMtPm9yaWdfdmRldjsKKworICAgIGlmIChyYykgZ290byBvdXQ7CisKKyAgICB3aGls ZSAocHJzLT5uZXh0X2Z1bmMgPj0gMCkgeworICAgICAgICBjb25zdCBpbnQgaSA9IHBycy0+bmV4 dF9mdW5jOworICAgICAgICBwcnMtPm5leHRfZnVuYy0tOwogICAgICAgICBpZiAoICgxIDw8IGkp ICYgcGZ1bmNfbWFzayApIHsKICAgICAgICAgICAgIGlmICggcGNpZGV2LT52ZnVuY19tYXNrID09 IHBmdW5jX21hc2sgKSB7CiAgICAgICAgICAgICAgICAgcGNpZGV2LT5mdW5jID0gaTsKQEAgLTE4 ODgsMTMgKzE5OTMsMTUgQEAgc3RhdGljIGludCBsaWJ4bF9fZGV2aWNlX3BjaV9yZW1vdmVfY29t bW9uKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgfWVsc2V7CiAg ICAgICAgICAgICAgICAgcGNpZGV2LT52ZGV2Zm4gPSBvcmlnX3ZkZXY7CiAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICBpZiAoIGRvX3BjaV9yZW1vdmUoZ2MsIGRvbWlkLCBwY2lkZXYsIGZvcmNl KSApCi0gICAgICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgICAgICAgICAgZG9fcGNp X3JlbW92ZShlZ2MsIGRvbWlkLCBwY2lkZXYsIHBycy0+Zm9yY2UsIHBycyk7CisgICAgICAgICAg ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKKyAgICByYyA9IDA7CiBvdXQ6Ci0gICAgcmV0 dXJuIHJjOworICAgIGFvZGV2LT5yYyA9IHJjOworICAgIGFvZGV2LT5jYWxsYmFjayhlZ2MsIGFv ZGV2KTsKIH0KIAogaW50IGxpYnhsX2RldmljZV9wY2lfcmVtb3ZlKGxpYnhsX2N0eCAqY3R4LCB1 aW50MzJfdCBkb21pZCwKQEAgLTE5MDMsMTEgKzIwMTAsMTQgQEAgaW50IGxpYnhsX2RldmljZV9w Y2lfcmVtb3ZlKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKIAogewogICAgIEFPX0NS RUFURShjdHgsIGRvbWlkLCBhb19ob3cpOwotICAgIGludCByYzsKLQotICAgIHJjID0gbGlieGxf X2RldmljZV9wY2lfcmVtb3ZlX2NvbW1vbihnYywgZG9taWQsIHBjaWRldiwgMCk7CisgICAgbGli eGxfX2FvX2RldmljZSAqYW9kZXY7CiAKLSAgICBsaWJ4bF9fYW9fY29tcGxldGUoZWdjLCBhbywg cmMpOworICAgIEdDTkVXKGFvZGV2KTsKKyAgICBsaWJ4bF9fcHJlcGFyZV9hb19kZXZpY2UoYW8s IGFvZGV2KTsKKyAgICBhb2Rldi0+YWN0aW9uID0gTElCWExfX0RFVklDRV9BQ1RJT05fUkVNT1ZF OworICAgIGFvZGV2LT5jYWxsYmFjayA9IGRldmljZV9hZGRybV9hb2NvbXBsZXRlOworICAgIGFv ZGV2LT51cGRhdGVfanNvbiA9IHRydWU7CisgICAgbGlieGxfX2RldmljZV9wY2lfcmVtb3ZlX2Nv bW1vbihlZ2MsIGRvbWlkLCBwY2lkZXYsIGZhbHNlLCBhb2Rldik7CiAgICAgcmV0dXJuIEFPX0lO UFJPR1JFU1M7CiB9CiAKQEAgLTE5MTYsMTEgKzIwMjYsMTQgQEAgaW50IGxpYnhsX2RldmljZV9w Y2lfZGVzdHJveShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2FzeW5jb3BfaG93ICphb19ob3cpCiB7CiAgICAg QU9fQ1JFQVRFKGN0eCwgZG9taWQsIGFvX2hvdyk7Ci0gICAgaW50IHJjOwotCi0gICAgcmMgPSBs aWJ4bF9fZGV2aWNlX3BjaV9yZW1vdmVfY29tbW9uKGdjLCBkb21pZCwgcGNpZGV2LCAxKTsKKyAg ICBsaWJ4bF9fYW9fZGV2aWNlICphb2RldjsKIAotICAgIGxpYnhsX19hb19jb21wbGV0ZShlZ2Ms IGFvLCByYyk7CisgICAgR0NORVcoYW9kZXYpOworICAgIGxpYnhsX19wcmVwYXJlX2FvX2Rldmlj ZShhbywgYW9kZXYpOworICAgIGFvZGV2LT5hY3Rpb24gPSBMSUJYTF9fREVWSUNFX0FDVElPTl9S RU1PVkU7CisgICAgYW9kZXYtPmNhbGxiYWNrID0gZGV2aWNlX2FkZHJtX2FvY29tcGxldGU7Cisg ICAgYW9kZXYtPnVwZGF0ZV9qc29uID0gdHJ1ZTsKKyAgICBsaWJ4bF9fZGV2aWNlX3BjaV9yZW1v dmVfY29tbW9uKGVnYywgZG9taWQsIHBjaWRldiwgdHJ1ZSwgYW9kZXYpOwogICAgIHJldHVybiBB T19JTlBST0dSRVNTOwogfQogCkBAIC0yMDA0LDI3ICsyMTE3LDI3IEBAIGxpYnhsX2RldmljZV9w Y2kgKmxpYnhsX2RldmljZV9wY2lfbGlzdChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQs IGludCAqbnVtCiAgICAgcmV0dXJuIHBjaWRldnM7CiB9CiAKLWludCBsaWJ4bF9fZGV2aWNlX3Bj aV9kZXN0cm95X2FsbChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCkKK3ZvaWQgbGlieGxf X2RldmljZV9wY2lfZGVzdHJveV9hbGwobGlieGxfX2VnYyAqZWdjLCB1aW50MzJfdCBkb21pZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX211bHRpZGV2ICptdWx0 aWRldikKIHsKLSAgICBsaWJ4bF9jdHggKmN0eCA9IGxpYnhsX19nY19vd25lcihnYyk7CisgICAg U1RBVEVfQU9fR0MobXVsdGlkZXYtPmFvKTsKICAgICBsaWJ4bF9kZXZpY2VfcGNpICpwY2lkZXZz OwotICAgIGludCBudW0sIGksIHJjID0gMDsKKyAgICBpbnQgbnVtLCBpOwogCi0gICAgcGNpZGV2 cyA9IGxpYnhsX2RldmljZV9wY2lfbGlzdChjdHgsIGRvbWlkLCAmbnVtKTsKKyAgICBwY2lkZXZz ID0gbGlieGxfZGV2aWNlX3BjaV9saXN0KENUWCwgZG9taWQsICZudW0pOwogICAgIGlmICggcGNp ZGV2cyA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKKyAgICBs aWJ4bF9fcHRyX2FkZChnYywgcGNpZGV2cyk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtOyBp KyspIHsKICAgICAgICAgLyogRm9yY2UgcmVtb3ZlIG9uIHNodXRkb3duIHNpbmNlLCBvbiBIVk0s IHFlbXUgd2lsbCBub3QgYWx3YXlzCiAgICAgICAgICAqIHJlc3BvbmQgdG8gU0NJIGludGVycnVw dCBiZWNhdXNlIHRoZSBndWVzdCBrZXJuZWwgaGFzIHNodXQgZG93biB0aGUKICAgICAgICAgICog ZGV2aWNlcyBieSB0aGUgdGltZSB3ZSBldmVuIGdldCBoZXJlIQogICAgICAgICAgKi8KLSAgICAg ICAgaWYgKGxpYnhsX19kZXZpY2VfcGNpX3JlbW92ZV9jb21tb24oZ2MsIGRvbWlkLCBwY2lkZXZz ICsgaSwgMSkgPCAwKQotICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgICAgICBsaWJ4 bF9fYW9fZGV2aWNlICphb2RldiA9IGxpYnhsX19tdWx0aWRldl9wcmVwYXJlKG11bHRpZGV2KTsK KyAgICAgICAgbGlieGxfX2RldmljZV9wY2lfcmVtb3ZlX2NvbW1vbihlZ2MsIGRvbWlkLCBwY2lk ZXZzICsgaSwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh b2Rldik7CiAgICAgfQotCi0gICAgZnJlZShwY2lkZXZzKTsKLSAgICByZXR1cm4gcmM7CiB9CiAK IGludCBsaWJ4bF9fZ3JhbnRfdmdhX2lvbWVtX3Blcm1pc3Npb24obGlieGxfX2djICpnYywgY29u c3QgdWludDMyX3QgZG9taWQsCi0tIApBbnRob255IFBFUkFSRAoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv bWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=