From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v16 04/11] x86/hvm/ioreq: defer mapping gfns until they are actually requsted Date: Fri, 15 Dec 2017 10:41:44 +0000 Message-ID: <20171215104151.29754-5-paul.durrant@citrix.com> References: <20171215104151.29754-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ePnRw-00065x-9O for xen-devel@lists.xenproject.org; Fri, 15 Dec 2017 10:42:40 +0000 In-Reply-To: <20171215104151.29754-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Paul Durrant , Chao Gao List-Id: xen-devel@lists.xenproject.org QSBzdWJzZXF1ZW50IHBhdGNoIHdpbGwgaW50cm9kdWNlIGEgbmV3IHNjaGVtZSB0byBhbGxvdyBh biBlbXVsYXRvciB0bwptYXAgaW9yZXEgc2VydmVyIHBhZ2VzIGRpcmVjdGx5IGZyb20gWGVuIHJh dGhlciB0aGFuIHRoZSBndWVzdCBQMk0uCgpUaGlzIHBhdGNoIGxheXMgdGhlIGdyb3VuZHdvcmsg Zm9yIHRoYXQgY2hhbmdlIGJ5IGRlZmVycmluZyBtYXBwaW5nIG9mCmdmbnMgdW50aWwgdGhlaXIg dmFsdWVzIGFyZSByZXF1ZXN0ZWQgYnkgYW4gZW11bGF0b3IuIFRvIHRoYXQgZW5kLCB0aGUKcGFk IGZpZWxkIG9mIHRoZSB4ZW5fZG1fb3BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvIHN0cnVjdHVyZSBp cyByZS1wdXJwb3NlZAp0byBhIGZsYWdzIGZpZWxkIGFuZCBuZXcgZmxhZywgWEVOX0RNT1Bfbm9f Z2ZucywgZGVmaW5lZCB3aGljaCBtb2RpZmllcyB0aGUKYmVoYXZpb3VyIG9mIFhFTl9ETU9QX2dl dF9pb3JlcV9zZXJ2ZXJfaW5mbyB0byBhbGxvdyB0aGUgY2FsbGVyIHRvIGF2b2lkCnJlcXVlc3Rp bmcgdGhlIGdmbiB2YWx1ZXMuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVy cmFudEBjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1 QGNpdHJpeC5jb20+CkFja2VkLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpSZXZp ZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KQ2M6IElhbiBKYWNr c29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3 LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAZXUu Y2l0cml4LmNvbT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xl LmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6 IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNv bT4KCnYxNjoKIC0gTGVhdmUgY2FsbCB0byBtYXAgcGFnZXMgaW4gaHZtX2lvcmVxX3NlcnZlcl9p bml0KCkgZm9yIGRlZmF1bHQgaW9yZXEKICAgc2VydmVyIGluc3RhbmNlLCBhcyBwb2ludGVkIG91 dCBieSBDaGFvIChjYy1lZCkuIFRoaXMgaXMgc21hbGwgYW5kCiAgIG9idmlvdXMgY2hhbmdlIHdo aWNoIHJlZHVjZXMgdGhlIHNpemUgb2YgdGhlIHBhdGNoLCBzbyBJIGhhdmUgbGVmdAogICBleGlz dGVudCBSLWJzIGFuZCBBLWJzIGluIHBsYWNlLgoKdjg6CiAtIEZvciBzYWZldHkgbWFrZSBhbGwg b2YgdGhlIHBvaW50ZXJzIHBhc3NlZCB0bwogICBodm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKCkg b3B0aW9uYWwuCiAtIFNocmluayBidWZpb3JlcV9oYW5kbGluZyBkb3duIHRvIGEgdWludDhfdC4K CnYzOgogLSBVcGRhdGVkIGluIHJlc3BvbnNlIHRvIHJldmlldyBjb21tZW50cyBmcm9tIFdlaSBh bmQgUm9nZXIuCiAtIEFkZGVkIGEgSEFORExFX0JVRklPUkVRIG1hY3JvIHRvIG1ha2UgdGhlIGNv ZGUgbmVhdGVyLgogLSBUaGlzIHBhdGNoIG5vIGxvbmdlciBpbnRyb2R1Y2VzIGEgc2VjdXJpdHkg dnVsbmVyYWJpbGl0eSBzaW5jZSB0aGVyZQogICBpcyBub3cgYW4gZXhwbGljaXQgbGltaXQgb24g dGhlIG51bWJlciBvZiBpb3JlcSBzZXJ2ZXJzIHRoYXQgbWF5IGJlCiAgIGNyZWF0ZWQgZm9yIGFu eSBvbmUgZG9tYWluLgotLS0KIHRvb2xzL2xpYnMvZGV2aWNlbW9kZWwvY29yZS5jICAgICAgICAg ICAgICAgICAgIHwgIDggKysrKwogdG9vbHMvbGlicy9kZXZpY2Vtb2RlbC9pbmNsdWRlL3hlbmRl dmljZW1vZGVsLmggfCAgNiArLS0KIHhlbi9hcmNoL3g4Ni9odm0vZG0uYyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDkgKysrLS0KIHhlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyAgICAgICAg ICAgICAgICAgICAgICAgIHwgNDkgKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogeGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmggICAgICAgICAgICAgICAgfCAgMiArLQogeGVuL2luY2x1 ZGUvcHVibGljL2h2bS9kbV9vcC5oICAgICAgICAgICAgICAgICAgfCAzMiArKysrKysrKystLS0t LS0tCiA2IGZpbGVzIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZGV2aWNlbW9kZWwvY29yZS5jIGIvdG9vbHMvbGlicy9k ZXZpY2Vtb2RlbC9jb3JlLmMKaW5kZXggMzU1YjdkZWMxOC4uZGYyYThhMGZlNyAxMDA2NDQKLS0t IGEvdG9vbHMvbGlicy9kZXZpY2Vtb2RlbC9jb3JlLmMKKysrIGIvdG9vbHMvbGlicy9kZXZpY2Vt b2RlbC9jb3JlLmMKQEAgLTIwNCw2ICsyMDQsMTQgQEAgaW50IHhlbmRldmljZW1vZGVsX2dldF9p b3JlcV9zZXJ2ZXJfaW5mbygKIAogICAgIGRhdGEtPmlkID0gaWQ7CiAKKyAgICAvKgorICAgICAq IElmIHRoZSBjYWxsZXIgaXMgbm90IHJlcXVlc3RpbmcgZ2ZuIHZhbHVlcyB0aGVuIGluc3RydWN0 IHRoZQorICAgICAqIGh5cGVyY2FsbCBub3QgdG8gcmV0cmlldmUgdGhlbSBhcyB0aGlzIG1heSBj YXVzZSB0aGVtIHRvIGJlCisgICAgICogbWFwcGVkLgorICAgICAqLworICAgIGlmICghaW9yZXFf Z2ZuICYmICFidWZpb3JlcV9nZm4pCisgICAgICAgIGRhdGEtPmZsYWdzIHw9IFhFTl9ETU9QX25v X2dmbnM7CisKICAgICByYyA9IHhlbmRldmljZW1vZGVsX29wKGRtb2QsIGRvbWlkLCAxLCAmb3As IHNpemVvZihvcCkpOwogICAgIGlmIChyYykKICAgICAgICAgcmV0dXJuIHJjOwpkaWZmIC0tZ2l0 IGEvdG9vbHMvbGlicy9kZXZpY2Vtb2RlbC9pbmNsdWRlL3hlbmRldmljZW1vZGVsLmggYi90b29s cy9saWJzL2RldmljZW1vZGVsL2luY2x1ZGUveGVuZGV2aWNlbW9kZWwuaAppbmRleCBkZGEwYmM3 Njk1Li5mZmZlZTNhNGEwIDEwMDY0NAotLS0gYS90b29scy9saWJzL2RldmljZW1vZGVsL2luY2x1 ZGUveGVuZGV2aWNlbW9kZWwuaAorKysgYi90b29scy9saWJzL2RldmljZW1vZGVsL2luY2x1ZGUv eGVuZGV2aWNlbW9kZWwuaApAQCAtNjEsMTEgKzYxLDExIEBAIGludCB4ZW5kZXZpY2Vtb2RlbF9j cmVhdGVfaW9yZXFfc2VydmVyKAogICogQHBhcm0gZG9taWQgdGhlIGRvbWFpbiBpZCB0byBiZSBz ZXJ2aWNlZAogICogQHBhcm0gaWQgdGhlIElPUkVRIFNlcnZlciBpZC4KICAqIEBwYXJtIGlvcmVx X2dmbiBwb2ludGVyIHRvIGEgeGVuX3Bmbl90IHRvIHJlY2VpdmUgdGhlIHN5bmNocm9ub3VzIGlv cmVxCi0gKiAgICAgICAgICAgICAgICAgIGdmbgorICogICAgICAgICAgICAgICAgICBnZm4uIChN YXkgYmUgTlVMTCBpZiBub3QgcmVxdWlyZWQpCiAgKiBAcGFybSBidWZpb3JlcV9nZm4gcG9pbnRl ciB0byBhIHhlbl9wZm5fdCB0byByZWNlaXZlIHRoZSBidWZmZXJlZCBpb3JlcQotICogICAgICAg ICAgICAgICAgICAgIGdmbgorICogICAgICAgICAgICAgICAgICAgIGdmbi4gKE1heSBiZSBOVUxM IGlmIG5vdCByZXF1aXJlZCkKICAqIEBwYXJtIGJ1ZmlvcmVxX3BvcnQgcG9pbnRlciB0byBhIGV2 dGNobl9wb3J0X3QgdG8gcmVjZWl2ZSB0aGUgYnVmZmVyZWQKLSAqICAgICAgICAgICAgICAgICAg ICAgaW9yZXEgZXZlbnQgY2hhbm5lbAorICogICAgICAgICAgICAgICAgICAgICBpb3JlcSBldmVu dCBjaGFubmVsLiAoTWF5IGJlIE5VTEwgaWYgbm90IHJlcXVpcmVkKQogICogQHJldHVybiAwIG9u IHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUuCiAgKi8KIGludCB4ZW5kZXZpY2Vtb2RlbF9nZXRfaW9y ZXFfc2VydmVyX2luZm8oCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2RtLmMgYi94ZW4v YXJjaC94ODYvaHZtL2RtLmMKaW5kZXggYTc4N2Y0MzczNy4uM2M2MTdiZDc1NCAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L2h2bS9kbS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZG0uYwpAQCAt NDE2LDE2ICs0MTYsMTkgQEAgc3RhdGljIGludCBkbV9vcChjb25zdCBzdHJ1Y3QgZG1vcF9hcmdz ICpvcF9hcmdzKQogICAgIHsKICAgICAgICAgc3RydWN0IHhlbl9kbV9vcF9nZXRfaW9yZXFfc2Vy dmVyX2luZm8gKmRhdGEgPQogICAgICAgICAgICAgJm9wLnUuZ2V0X2lvcmVxX3NlcnZlcl9pbmZv OworICAgICAgICBjb25zdCB1aW50MTZfdCB2YWxpZF9mbGFncyA9IFhFTl9ETU9QX25vX2dmbnM7 CiAKICAgICAgICAgY29uc3Rfb3AgPSBmYWxzZTsKIAogICAgICAgICByYyA9IC1FSU5WQUw7Ci0g ICAgICAgIGlmICggZGF0YS0+cGFkICkKKyAgICAgICAgaWYgKCBkYXRhLT5mbGFncyAmIH52YWxp ZF9mbGFncyApCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICByYyA9IGh2bV9nZXRfaW9y ZXFfc2VydmVyX2luZm8oZCwgZGF0YS0+aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmZGF0YS0+aW9yZXFfZ2ZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmRhdGEtPmJ1ZmlvcmVxX2dmbiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChkYXRhLT5mbGFncyAmIFhFTl9ETU9QX25vX2dmbnMpID8KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgOiAmZGF0YS0+aW9yZXFfZ2Zu LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGEtPmZsYWdzICYg WEVOX0RNT1Bfbm9fZ2ZucykgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCA6ICZkYXRhLT5idWZpb3JlcV9nZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmZGF0YS0+YnVmaW9yZXFfcG9ydCk7CiAgICAgICAgIGJyZWFrOwogICAg IH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBiL3hlbi9hcmNoL3g4Ni9o dm0vaW9yZXEuYwppbmRleCBmOTEzZWQzMWZhLi5hMDE1MDA2YjllIDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvaHZtL2lvcmVxLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCkBAIC0z NTAsNiArMzUwLDkgQEAgc3RhdGljIHZvaWQgaHZtX3VwZGF0ZV9pb3JlcV9ldnRjaG4oc3RydWN0 IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgfQogfQogCisjZGVmaW5lIEhBTkRMRV9CVUZJT1JF UShzKSBcCisgICAgKChzKS0+YnVmaW9yZXFfaGFuZGxpbmcgIT0gSFZNX0lPUkVRU1JWX0JVRklP UkVRX09GRikKKwogc3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX2FkZF92Y3B1KHN0cnVjdCBo dm1faW9yZXFfc2VydmVyICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCB2Y3B1ICp2KQogewpAQCAtMzcxLDcgKzM3NCw3IEBAIHN0YXRpYyBpbnQgaHZtX2lv cmVxX3NlcnZlcl9hZGRfdmNwdShzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKIAogICAgIHN2 LT5pb3JlcV9ldnRjaG4gPSByYzsKIAotICAgIGlmICggdi0+dmNwdV9pZCA9PSAwICYmIHMtPmJ1 ZmlvcmVxLnZhICE9IE5VTEwgKQorICAgIGlmICggdi0+dmNwdV9pZCA9PSAwICYmIEhBTkRMRV9C VUZJT1JFUShzKSApCiAgICAgewogICAgICAgICBzdHJ1Y3QgZG9tYWluICpkID0gcy0+ZG9tYWlu OwogCkBAIC00MjIsNyArNDI1LDcgQEAgc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9yZW1v dmVfdmNwdShzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKIAogICAgICAgICBsaXN0X2RlbCgm c3YtPmxpc3RfZW50cnkpOwogCi0gICAgICAgIGlmICggdi0+dmNwdV9pZCA9PSAwICYmIHMtPmJ1 ZmlvcmVxLnZhICE9IE5VTEwgKQorICAgICAgICBpZiAoIHYtPnZjcHVfaWQgPT0gMCAmJiBIQU5E TEVfQlVGSU9SRVEocykgKQogICAgICAgICAgICAgZnJlZV94ZW5fZXZlbnRfY2hhbm5lbCh2LT5k b21haW4sIHMtPmJ1ZmlvcmVxX2V2dGNobik7CiAKICAgICAgICAgZnJlZV94ZW5fZXZlbnRfY2hh bm5lbCh2LT5kb21haW4sIHN2LT5pb3JlcV9ldnRjaG4pOwpAQCAtNDQ5LDcgKzQ1Miw3IEBAIHN0 YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfcmVtb3ZlX2FsbF92Y3B1cyhzdHJ1Y3QgaHZtX2lv cmVxX3NlcnZlciAqcykKIAogICAgICAgICBsaXN0X2RlbCgmc3YtPmxpc3RfZW50cnkpOwogCi0g ICAgICAgIGlmICggdi0+dmNwdV9pZCA9PSAwICYmIHMtPmJ1ZmlvcmVxLnZhICE9IE5VTEwgKQor ICAgICAgICBpZiAoIHYtPnZjcHVfaWQgPT0gMCAmJiBIQU5ETEVfQlVGSU9SRVEocykgKQogICAg ICAgICAgICAgZnJlZV94ZW5fZXZlbnRfY2hhbm5lbCh2LT5kb21haW4sIHMtPmJ1ZmlvcmVxX2V2 dGNobik7CiAKICAgICAgICAgZnJlZV94ZW5fZXZlbnRfY2hhbm5lbCh2LT5kb21haW4sIHN2LT5p b3JlcV9ldnRjaG4pOwpAQCAtNDYwLDE0ICs0NjMsMTMgQEAgc3RhdGljIHZvaWQgaHZtX2lvcmVx X3NlcnZlcl9yZW1vdmVfYWxsX3ZjcHVzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQogICAg IHNwaW5fdW5sb2NrKCZzLT5sb2NrKTsKIH0KIAotc3RhdGljIGludCBodm1faW9yZXFfc2VydmVy X21hcF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYW5kbGVfYnVmaW9yZXEpCitzdGF0aWMgaW50IGh2 bV9pb3JlcV9zZXJ2ZXJfbWFwX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQogewog ICAgIGludCByYzsKIAogICAgIHJjID0gaHZtX21hcF9pb3JlcV9nZm4ocywgZmFsc2UpOwogCi0g ICAgaWYgKCAhcmMgJiYgaGFuZGxlX2J1ZmlvcmVxICkKKyAgICBpZiAoICFyYyAmJiBIQU5ETEVf QlVGSU9SRVEocykgKQogICAgICAgICByYyA9IGh2bV9tYXBfaW9yZXFfZ2ZuKHMsIHRydWUpOwog CiAgICAgaWYgKCByYyApCkBAIC01OTcsMTMgKzU5OSwxNCBAQCBzdGF0aWMgaW50IGh2bV9pb3Jl cV9zZXJ2ZXJfaW5pdChzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAgICBpZiAoIHJjICkK ICAgICAgICAgcmV0dXJuIHJjOwogCi0gICAgaWYgKCBidWZpb3JlcV9oYW5kbGluZyA9PSBIVk1f SU9SRVFTUlZfQlVGSU9SRVFfQVRPTUlDICkKLSAgICAgICAgcy0+YnVmaW9yZXFfYXRvbWljID0g dHJ1ZTsKKyAgICBzLT5idWZpb3JlcV9oYW5kbGluZyA9IGJ1ZmlvcmVxX2hhbmRsaW5nOwogCi0g ICAgcmMgPSBodm1faW9yZXFfc2VydmVyX21hcF9wYWdlcygKLSAgICAgICAgICAgICBzLCBidWZp b3JlcV9oYW5kbGluZyAhPSBIVk1fSU9SRVFTUlZfQlVGSU9SRVFfT0ZGKTsKLSAgICBpZiAoIHJj ICkKLSAgICAgICAgZ290byBmYWlsX21hcDsKKyAgICBpZiAoIGlkID09IERFRkFVTFRfSU9TRVJW SUQgKQorICAgIHsKKyAgICAgICAgcmMgPSBodm1faW9yZXFfc2VydmVyX21hcF9wYWdlcyhzKTsK KyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBnb3RvIGZhaWxfbWFwOworICAgIH0KIAog ICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkKICAgICB7CkBAIC03NTcsMTIgKzc2MCwyMyBAQCBp bnQgaHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyhzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90 IGlkLAogCiAgICAgQVNTRVJUKCFJU19ERUZBVUxUKHMpKTsKIAotICAgICppb3JlcV9nZm4gPSBn Zm5feChzLT5pb3JlcS5nZm4pOworICAgIGlmICggaW9yZXFfZ2ZuIHx8IGJ1ZmlvcmVxX2dmbiAp CisgICAgeworICAgICAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfbWFwX3BhZ2VzKHMpOworICAg ICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgIH0KIAotICAgIGlmICgg cy0+YnVmaW9yZXEudmEgIT0gTlVMTCApCisgICAgaWYgKCBpb3JlcV9nZm4gKQorICAgICAgICAq aW9yZXFfZ2ZuID0gZ2ZuX3gocy0+aW9yZXEuZ2ZuKTsKKworICAgIGlmICggSEFORExFX0JVRklP UkVRKHMpICkKICAgICB7Ci0gICAgICAgICpidWZpb3JlcV9nZm4gPSBnZm5feChzLT5idWZpb3Jl cS5nZm4pOwotICAgICAgICAqYnVmaW9yZXFfcG9ydCA9IHMtPmJ1ZmlvcmVxX2V2dGNobjsKKyAg ICAgICAgaWYgKCBidWZpb3JlcV9nZm4gKQorICAgICAgICAgICAgKmJ1ZmlvcmVxX2dmbiA9IGdm bl94KHMtPmJ1ZmlvcmVxLmdmbik7CisKKyAgICAgICAgaWYgKCBidWZpb3JlcV9wb3J0ICkKKyAg ICAgICAgICAgICpidWZpb3JlcV9wb3J0ID0gcy0+YnVmaW9yZXFfZXZ0Y2huOwogICAgIH0KIAog ICAgIHJjID0gMDsKQEAgLTEyNjgsNyArMTI4Miw4IEBAIHN0YXRpYyBpbnQgaHZtX3NlbmRfYnVm ZmVyZWRfaW9yZXEoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsIGlvcmVxX3QgKnApCiAgICAg cGctPnB0cnMud3JpdGVfcG9pbnRlciArPSBxdyA/IDIgOiAxOwogCiAgICAgLyogQ2Fub25pY2Fs aXplIHJlYWQvd3JpdGUgcG9pbnRlcnMgdG8gcHJldmVudCB0aGVpciBvdmVyZmxvdy4gKi8KLSAg ICB3aGlsZSAoIHMtPmJ1ZmlvcmVxX2F0b21pYyAmJiBxdysrIDwgSU9SRVFfQlVGRkVSX1NMT1Rf TlVNICYmCisgICAgd2hpbGUgKCAocy0+YnVmaW9yZXFfaGFuZGxpbmcgPT0gSFZNX0lPUkVRU1JW X0JVRklPUkVRX0FUT01JQykgJiYKKyAgICAgICAgICAgIHF3KysgPCBJT1JFUV9CVUZGRVJfU0xP VF9OVU0gJiYKICAgICAgICAgICAgIHBnLT5wdHJzLnJlYWRfcG9pbnRlciA+PSBJT1JFUV9CVUZG RVJfU0xPVF9OVU0gKQogICAgIHsKICAgICAgICAgdW5pb24gYnVmaW9yZXFfcG9pbnRlcnMgb2xk ID0gcGctPnB0cnMsIG5ldzsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2Rv bWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKaW5kZXggM2JkOWM1ZDdj MC4uOGI3OThlZTRlOSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWlu LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKQEAgLTY5LDcgKzY5LDcg QEAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgewogICAgIGV2dGNobl9wb3J0X3QgICAgICAgICAg YnVmaW9yZXFfZXZ0Y2huOwogICAgIHN0cnVjdCByYW5nZXNldCAgICAgICAgKnJhbmdlW05SX0lP X1JBTkdFX1RZUEVTXTsKICAgICBib29sICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ7Ci0gICAg Ym9vbCAgICAgICAgICAgICAgICAgICBidWZpb3JlcV9hdG9taWM7CisgICAgdWludDhfdCAgICAg ICAgICAgICAgICBidWZpb3JlcV9oYW5kbGluZzsKIH07CiAKIC8qCmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29w LmgKaW5kZXggZTE3MzA4NTc1YS4uMTNiMzczN2MyZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUv cHVibGljL2h2bS9kbV9vcC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaApA QCAtNzksMjggKzc5LDM0IEBAIHN0cnVjdCB4ZW5fZG1fb3BfY3JlYXRlX2lvcmVxX3NlcnZlciB7 CiAgKiBYRU5fRE1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm86IEdldCBhbGwgdGhlIGluZm9ybWF0 aW9uIG5lY2Vzc2FyeSB0bwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nl c3MgSU9SRVEgU2VydmVyIDxpZD4uCiAgKgotICogVGhlIGVtdWxhdG9yIG5lZWRzIHRvIG1hcCB0 aGUgc3luY2hyb25vdXMgaW9yZXEgc3RydWN0dXJlcyBhbmQgYnVmZmVyZWQKLSAqIGlvcmVxIHJp bmcgKGlmIGl0IGV4aXN0cykgdGhhdCBYZW4gdXNlcyB0byByZXF1ZXN0IGVtdWxhdGlvbi4gVGhl c2UgYXJlCi0gKiBob3N0ZWQgaW4gdGhlIHRhcmdldCBkb21haW4ncyBnbWZucyA8aW9yZXFfZ2Zu PiBhbmQgPGJ1ZmlvcmVxX2dmbj4KLSAqIHJlc3BlY3RpdmVseS4gSW4gYWRkaXRpb24sIGlmIHRo ZSBJT1JFUSBTZXJ2ZXIgaXMgaGFuZGxpbmcgYnVmZmVyZWQKLSAqIGVtdWxhdGlvbiByZXF1ZXN0 cywgdGhlIGVtdWxhdG9yIG5lZWRzIHRvIGJpbmQgdG8gZXZlbnQgY2hhbm5lbAotICogPGJ1Zmlv cmVxX3BvcnQ+IHRvIGxpc3RlbiBmb3IgdGhlbS4gKFRoZSBldmVudCBjaGFubmVscyB1c2VkIGZv cgotICogc3luY2hyb25vdXMgZW11bGF0aW9uIHJlcXVlc3RzIGFyZSBzcGVjaWZpZWQgaW4gdGhl IHBlci1DUFUgaW9yZXEKLSAqIHN0cnVjdHVyZXMgaW4gPGlvcmVxX2dmbj4pLgotICogSWYgdGhl IElPUkVRIFNlcnZlciBpcyBub3QgaGFuZGxpbmcgYnVmZmVyZWQgZW11bGF0aW9uIHJlcXVlc3Rz IHRoZW4gdGhlCi0gKiB2YWx1ZXMgaGFuZGVkIGJhY2sgaW4gPGJ1ZmlvcmVxX2dmbj4gYW5kIDxi dWZpb3JlcV9wb3J0PiB3aWxsIGJvdGggYmUgMC4KKyAqIElmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMg aGFuZGxpbmcgYnVmZmVyZWQgZW11bGF0aW9uIHJlcXVlc3RzLCB0aGUKKyAqIGVtdWxhdG9yIG5l ZWRzIHRvIGJpbmQgdG8gZXZlbnQgY2hhbm5lbCA8YnVmaW9yZXFfcG9ydD4gdG8gbGlzdGVuIGZv cgorICogdGhlbS4gKFRoZSBldmVudCBjaGFubmVscyB1c2VkIGZvciBzeW5jaHJvbm91cyBlbXVs YXRpb24gcmVxdWVzdHMgYXJlCisgKiBzcGVjaWZpZWQgaW4gdGhlIHBlci1DUFUgaW9yZXEgc3Ry dWN0dXJlcykuCisgKiBJbiBhZGRpdGlvbiwgaWYgdGhlIFhFTk1FTV9hY3F1aXJlX3Jlc291cmNl IG1lbW9yeSBvcCBjYW5ub3QgYmUgdXNlZCwKKyAqIHRoZSBlbXVsYXRvciB3aWxsIG5lZWQgdG8g bWFwIHRoZSBzeW5jaHJvbm91cyBpb3JlcSBzdHJ1Y3R1cmVzIGFuZAorICogYnVmZmVyZWQgaW9y ZXEgcmluZyAoaWYgaXQgZXhpc3RzKSBmcm9tIGd1ZXN0IG1lbW9yeS4gSWYgPGZsYWdzPiBkb2Vz CisgKiBub3QgY29udGFpbiBYRU5fRE1PUF9ub19nZm5zIHRoZW4gdGhlc2UgcGFnZXMgd2lsbCBi ZSBtYWRlIGF2YWlsYWJsZSBhbmQKKyAqIHRoZSBmcmFtZSBudW1iZXJzIHBhc3NlZCBiYWNrIGlu IGdmbnMgPGlvcmVxX2dmbj4gYW5kIDxidWZpb3JlcV9nZm4+CisgKiByZXNwZWN0aXZlbHkuIChJ ZiB0aGUgSU9SRVEgU2VydmVyIGlzIG5vdCBoYW5kbGluZyBidWZmZXJlZCBlbXVsYXRpb24KKyAq IG9ubHkgPGlvcmVxX2dmbj4gd2lsbCBiZSB2YWxpZCkuCiAgKi8KICNkZWZpbmUgWEVOX0RNT1Bf Z2V0X2lvcmVxX3NlcnZlcl9pbmZvIDIKIAogc3RydWN0IHhlbl9kbV9vcF9nZXRfaW9yZXFfc2Vy dmVyX2luZm8gewogICAgIC8qIElOIC0gc2VydmVyIGlkICovCiAgICAgaW9zZXJ2aWRfdCBpZDsK LSAgICB1aW50MTZfdCBwYWQ7CisgICAgLyogSU4gLSBmbGFncyAqLworICAgIHVpbnQxNl90IGZs YWdzOworCisjZGVmaW5lIF9YRU5fRE1PUF9ub19nZm5zIDAKKyNkZWZpbmUgWEVOX0RNT1Bfbm9f Z2ZucyAoMXUgPDwgX1hFTl9ETU9QX25vX2dmbnMpCisKICAgICAvKiBPVVQgLSBidWZmZXJlZCBp b3JlcSBwb3J0ICovCiAgICAgZXZ0Y2huX3BvcnRfdCBidWZpb3JlcV9wb3J0OwotICAgIC8qIE9V VCAtIHN5bmMgaW9yZXEgZ2ZuICovCisgICAgLyogT1VUIC0gc3luYyBpb3JlcSBnZm4gKHNlZSBi bG9jayBjb21tZW50IGFib3ZlKSAqLwogICAgIHVpbnQ2NF9hbGlnbmVkX3QgaW9yZXFfZ2ZuOwot ICAgIC8qIE9VVCAtIGJ1ZmZlcmVkIGlvcmVxIGdmbiAqLworICAgIC8qIE9VVCAtIGJ1ZmZlcmVk IGlvcmVxIGdmbiAoc2VlIGJsb2NrIGNvbW1lbnQgYWJvdmUpKi8KICAgICB1aW50NjRfYWxpZ25l ZF90IGJ1ZmlvcmVxX2dmbjsKIH07CiAKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp bG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=