From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v8 04/11] x86/hvm/ioreq: defer mapping gfns until they are actually requsted Date: Fri, 29 Sep 2017 15:51:50 +0100 Message-ID: <20170929145157.30180-5-paul.durrant@citrix.com> References: <20170929145157.30180-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dxwe5-00010m-RD for xen-devel@lists.xenproject.org; Fri, 29 Sep 2017 14:52:05 +0000 In-Reply-To: <20170929145157.30180-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org QSBzdWJzZXF1ZW50IHBhdGNoIHdpbGwgaW50cm9kdWNlIGEgbmV3IHNjaGVtZSB0byBhbGxvdyBh biBlbXVsYXRvciB0bwptYXAgaW9yZXEgc2VydmVyIHBhZ2VzIGRpcmVjdGx5IGZyb20gWGVuIHJh dGhlciB0aGFuIHRoZSBndWVzdCBQMk0uCgpUaGlzIHBhdGNoIGxheXMgdGhlIGdyb3VuZHdvcmsg Zm9yIHRoYXQgY2hhbmdlIGJ5IGRlZmVycmluZyBtYXBwaW5nIG9mCmdmbnMgdW50aWwgdGhlaXIg dmFsdWVzIGFyZSByZXF1ZXN0ZWQgYnkgYW4gZW11bGF0b3IuIFRvIHRoYXQgZW5kLCB0aGUKcGFk IGZpZWxkIG9mIHRoZSB4ZW5fZG1fb3BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvIHN0cnVjdHVyZSBp cyByZS1wdXJwb3NlZAp0byBhIGZsYWdzIGZpZWxkIGFuZCBuZXcgZmxhZywgWEVOX0RNT1Bfbm9f Z2ZucywgZGVmaW5lZCB3aGljaCBtb2RpZmllcyB0aGUKYmVoYXZpb3VyIG9mIFhFTl9ETU9QX2dl dF9pb3JlcV9zZXJ2ZXJfaW5mbyB0byBhbGxvdyB0aGUgY2FsbGVyIHRvIGF2b2lkCnJlcXVlc3Rp bmcgdGhlIGdmbiB2YWx1ZXMuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVy cmFudEBjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1 QGNpdHJpeC5jb20+CkFja2VkLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0K Q2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogQW5kcmV3IENv b3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAgPEdlb3Jn ZS5EdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNv bT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ2M6 IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IFRpbSBEZWVn YW4gPHRpbUB4ZW4ub3JnPgoKdjg6CiAtIEZvciBzYWZldHkgbWFrZSBhbGwgb2YgdGhlIHBvaW50 ZXJzIHBhc3NlZCB0bwogICBodm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKCkgb3B0aW9uYWwuCiAt IFNocmluayBidWZpb3JlcV9oYW5kbGluZyBkb3duIHRvIGEgdWludDhfdC4KCnYzOgogLSBVcGRh dGVkIGluIHJlc3BvbnNlIHRvIHJldmlldyBjb21tZW50cyBmcm9tIFdlaSBhbmQgUm9nZXIuCiAt IEFkZGVkIGEgSEFORExFX0JVRklPUkVRIG1hY3JvIHRvIG1ha2UgdGhlIGNvZGUgbmVhdGVyLgog LSBUaGlzIHBhdGNoIG5vIGxvbmdlciBpbnRyb2R1Y2VzIGEgc2VjdXJpdHkgdnVsbmVyYWJpbGl0 eSBzaW5jZSB0aGVyZQogICBpcyBub3cgYW4gZXhwbGljaXQgbGltaXQgb24gdGhlIG51bWJlciBv ZiBpb3JlcSBzZXJ2ZXJzIHRoYXQgbWF5IGJlCiAgIGNyZWF0ZWQgZm9yIGFueSBvbmUgZG9tYWlu LgotLS0KIHRvb2xzL2xpYnMvZGV2aWNlbW9kZWwvY29yZS5jICAgICAgICAgICAgICAgICAgIHwg IDggKysrKysKIHRvb2xzL2xpYnMvZGV2aWNlbW9kZWwvaW5jbHVkZS94ZW5kZXZpY2Vtb2RlbC5o IHwgIDYgKystLQogeGVuL2FyY2gveDg2L2h2bS9kbS5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgOSArKystLQogeGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jICAgICAgICAgICAgICAgICAg ICAgICAgfCA0NyArKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2 L2h2bS9kb21haW4uaCAgICAgICAgICAgICAgICB8ICAyICstCiB4ZW4vaW5jbHVkZS9wdWJsaWMv aHZtL2RtX29wLmggICAgICAgICAgICAgICAgICB8IDMyICsrKysrKysrKystLS0tLS0tCiA2IGZp bGVzIGNoYW5nZWQsIDYzIGluc2VydGlvbnMoKyksIDQxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnMvZGV2aWNlbW9kZWwvY29yZS5jIGIvdG9vbHMvbGlicy9kZXZpY2Vtb2Rl bC9jb3JlLmMKaW5kZXggMGYyYzFhNzkxZi4uOTFjNjlkMTAzYiAxMDA2NDQKLS0tIGEvdG9vbHMv bGlicy9kZXZpY2Vtb2RlbC9jb3JlLmMKKysrIGIvdG9vbHMvbGlicy9kZXZpY2Vtb2RlbC9jb3Jl LmMKQEAgLTE4OCw2ICsxODgsMTQgQEAgaW50IHhlbmRldmljZW1vZGVsX2dldF9pb3JlcV9zZXJ2 ZXJfaW5mbygKIAogICAgIGRhdGEtPmlkID0gaWQ7CiAKKyAgICAvKgorICAgICAqIElmIHRoZSBj YWxsZXIgaXMgbm90IHJlcXVlc3RpbmcgZ2ZuIHZhbHVlcyB0aGVuIGluc3RydWN0IHRoZQorICAg ICAqIGh5cGVyY2FsbCBub3QgdG8gcmV0cmlldmUgdGhlbSBhcyB0aGlzIG1heSBjYXVzZSB0aGVt IHRvIGJlCisgICAgICogbWFwcGVkLgorICAgICAqLworICAgIGlmICghaW9yZXFfZ2ZuICYmICFi dWZpb3JlcV9nZm4pCisgICAgICAgIGRhdGEtPmZsYWdzIHw9IFhFTl9ETU9QX25vX2dmbnM7CisK ICAgICByYyA9IHhlbmRldmljZW1vZGVsX29wKGRtb2QsIGRvbWlkLCAxLCAmb3AsIHNpemVvZihv cCkpOwogICAgIGlmIChyYykKICAgICAgICAgcmV0dXJuIHJjOwpkaWZmIC0tZ2l0IGEvdG9vbHMv bGlicy9kZXZpY2Vtb2RlbC9pbmNsdWRlL3hlbmRldmljZW1vZGVsLmggYi90b29scy9saWJzL2Rl dmljZW1vZGVsL2luY2x1ZGUveGVuZGV2aWNlbW9kZWwuaAppbmRleCAxMzIxNmRiMDRhLi5kNzNh NzZkYTM1IDEwMDY0NAotLS0gYS90b29scy9saWJzL2RldmljZW1vZGVsL2luY2x1ZGUveGVuZGV2 aWNlbW9kZWwuaAorKysgYi90b29scy9saWJzL2RldmljZW1vZGVsL2luY2x1ZGUveGVuZGV2aWNl bW9kZWwuaApAQCAtNjEsMTEgKzYxLDExIEBAIGludCB4ZW5kZXZpY2Vtb2RlbF9jcmVhdGVfaW9y ZXFfc2VydmVyKAogICogQHBhcm0gZG9taWQgdGhlIGRvbWFpbiBpZCB0byBiZSBzZXJ2aWNlZAog ICogQHBhcm0gaWQgdGhlIElPUkVRIFNlcnZlciBpZC4KICAqIEBwYXJtIGlvcmVxX2dmbiBwb2lu dGVyIHRvIGEgeGVuX3Bmbl90IHRvIHJlY2VpdmUgdGhlIHN5bmNocm9ub3VzIGlvcmVxCi0gKiAg ICAgICAgICAgICAgICAgIGdmbgorICogICAgICAgICAgICAgICAgICBnZm4uIChNYXkgYmUgTlVM TCBpZiBub3QgcmVxdWlyZWQpCiAgKiBAcGFybSBidWZpb3JlcV9nZm4gcG9pbnRlciB0byBhIHhl bl9wZm5fdCB0byByZWNlaXZlIHRoZSBidWZmZXJlZCBpb3JlcQotICogICAgICAgICAgICAgICAg ICAgIGdmbgorICogICAgICAgICAgICAgICAgICAgIGdmbi4gKE1heSBiZSBOVUxMIGlmIG5vdCBy ZXF1aXJlZCkKICAqIEBwYXJtIGJ1ZmlvcmVxX3BvcnQgcG9pbnRlciB0byBhIGV2dGNobl9wb3J0 X3QgdG8gcmVjZWl2ZSB0aGUgYnVmZmVyZWQKLSAqICAgICAgICAgICAgICAgICAgICAgaW9yZXEg ZXZlbnQgY2hhbm5lbAorICogICAgICAgICAgICAgICAgICAgICBpb3JlcSBldmVudCBjaGFubmVs LiAoTWF5IGJlIE5VTEwgaWYgbm90IHJlcXVpcmVkKQogICogQHJldHVybiAwIG9uIHN1Y2Nlc3Ms IC0xIG9uIGZhaWx1cmUuCiAgKi8KIGludCB4ZW5kZXZpY2Vtb2RlbF9nZXRfaW9yZXFfc2VydmVy X2luZm8oCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2RtLmMgYi94ZW4vYXJjaC94ODYv aHZtL2RtLmMKaW5kZXggOWNmNTNiNTUxYy4uMjJmYTViNTFlMyAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L2h2bS9kbS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZG0uYwpAQCAtNDE2LDE2ICs0 MTYsMTkgQEAgc3RhdGljIGludCBkbV9vcChjb25zdCBzdHJ1Y3QgZG1vcF9hcmdzICpvcF9hcmdz KQogICAgIHsKICAgICAgICAgc3RydWN0IHhlbl9kbV9vcF9nZXRfaW9yZXFfc2VydmVyX2luZm8g KmRhdGEgPQogICAgICAgICAgICAgJm9wLnUuZ2V0X2lvcmVxX3NlcnZlcl9pbmZvOworICAgICAg ICBjb25zdCB1aW50MTZfdCB2YWxpZF9mbGFncyA9IFhFTl9ETU9QX25vX2dmbnM7CiAKICAgICAg ICAgY29uc3Rfb3AgPSBmYWxzZTsKIAogICAgICAgICByYyA9IC1FSU5WQUw7Ci0gICAgICAgIGlm ICggZGF0YS0+cGFkICkKKyAgICAgICAgaWYgKCBkYXRhLT5mbGFncyAmIH52YWxpZF9mbGFncyAp CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICByYyA9IGh2bV9nZXRfaW9yZXFfc2VydmVy X2luZm8oZCwgZGF0YS0+aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmZGF0YS0+aW9yZXFfZ2ZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmRhdGEtPmJ1ZmlvcmVxX2dmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChkYXRhLT5mbGFncyAmIFhFTl9ETU9QX25vX2dmbnMpID8KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgOiAmZGF0YS0+aW9yZXFfZ2ZuLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGEtPmZsYWdzICYgWEVOX0RNT1Bf bm9fZ2ZucykgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCA6 ICZkYXRhLT5idWZpb3JlcV9nZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmZGF0YS0+YnVmaW9yZXFfcG9ydCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEu YwppbmRleCA0M2I3NTdiNWI3Li5kNjhkN2QwYzFmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv aHZtL2lvcmVxLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCkBAIC0zNjMsNiArMzYz LDkgQEAgc3RhdGljIHZvaWQgaHZtX3VwZGF0ZV9pb3JlcV9ldnRjaG4oc3RydWN0IGh2bV9pb3Jl cV9zZXJ2ZXIgKnMsCiAgICAgfQogfQogCisjZGVmaW5lIEhBTkRMRV9CVUZJT1JFUShzKSBcCisg ICAgKHMtPmJ1ZmlvcmVxX2hhbmRsaW5nICE9IEhWTV9JT1JFUVNSVl9CVUZJT1JFUV9PRkYpCisK IHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9hZGRfdmNwdShzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlciAqcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmNw dSAqdikKIHsKQEAgLTM4NCw3ICszODcsNyBAQCBzdGF0aWMgaW50IGh2bV9pb3JlcV9zZXJ2ZXJf YWRkX3ZjcHUoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAKICAgICBzdi0+aW9yZXFfZXZ0 Y2huID0gcmM7CiAKLSAgICBpZiAoIHYtPnZjcHVfaWQgPT0gMCAmJiBzLT5idWZpb3JlcS52YSAh PSBOVUxMICkKKyAgICBpZiAoIHYtPnZjcHVfaWQgPT0gMCAmJiBIQU5ETEVfQlVGSU9SRVEocykg KQogICAgIHsKICAgICAgICAgc3RydWN0IGRvbWFpbiAqZCA9IHMtPmRvbWFpbjsKIApAQCAtNDM1 LDcgKzQzOCw3IEBAIHN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfcmVtb3ZlX3ZjcHUoc3Ry dWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAKICAgICAgICAgbGlzdF9kZWwoJnN2LT5saXN0X2Vu dHJ5KTsKIAotICAgICAgICBpZiAoIHYtPnZjcHVfaWQgPT0gMCAmJiBzLT5idWZpb3JlcS52YSAh PSBOVUxMICkKKyAgICAgICAgaWYgKCB2LT52Y3B1X2lkID09IDAgJiYgSEFORExFX0JVRklPUkVR KHMpICkKICAgICAgICAgICAgIGZyZWVfeGVuX2V2ZW50X2NoYW5uZWwodi0+ZG9tYWluLCBzLT5i dWZpb3JlcV9ldnRjaG4pOwogCiAgICAgICAgIGZyZWVfeGVuX2V2ZW50X2NoYW5uZWwodi0+ZG9t YWluLCBzdi0+aW9yZXFfZXZ0Y2huKTsKQEAgLTQ2Miw3ICs0NjUsNyBAQCBzdGF0aWMgdm9pZCBo dm1faW9yZXFfc2VydmVyX3JlbW92ZV9hbGxfdmNwdXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIg KnMpCiAKICAgICAgICAgbGlzdF9kZWwoJnN2LT5saXN0X2VudHJ5KTsKIAotICAgICAgICBpZiAo IHYtPnZjcHVfaWQgPT0gMCAmJiBzLT5idWZpb3JlcS52YSAhPSBOVUxMICkKKyAgICAgICAgaWYg KCB2LT52Y3B1X2lkID09IDAgJiYgSEFORExFX0JVRklPUkVRKHMpICkKICAgICAgICAgICAgIGZy ZWVfeGVuX2V2ZW50X2NoYW5uZWwodi0+ZG9tYWluLCBzLT5idWZpb3JlcV9ldnRjaG4pOwogCiAg ICAgICAgIGZyZWVfeGVuX2V2ZW50X2NoYW5uZWwodi0+ZG9tYWluLCBzdi0+aW9yZXFfZXZ0Y2hu KTsKQEAgLTQ3MywxNCArNDc2LDEzIEBAIHN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfcmVt b3ZlX2FsbF92Y3B1cyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcykKICAgICBzcGluX3VubG9j aygmcy0+bG9jayk7CiB9CiAKLXN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9tYXBfcGFnZXMo c3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgaGFuZGxlX2J1ZmlvcmVxKQorc3RhdGljIGludCBodm1faW9yZXFfc2Vy dmVyX21hcF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcykKIHsKICAgICBpbnQgcmM7 CiAKICAgICByYyA9IGh2bV9tYXBfaW9yZXFfZ2ZuKHMsIGZhbHNlKTsKIAotICAgIGlmICggIXJj ICYmIGhhbmRsZV9idWZpb3JlcSApCisgICAgaWYgKCAhcmMgJiYgSEFORExFX0JVRklPUkVRKHMp ICkKICAgICAgICAgcmMgPSBodm1fbWFwX2lvcmVxX2dmbihzLCB0cnVlKTsKIAogICAgIGlmICgg cmMgKQpAQCAtNjEwLDEzICs2MTIsNyBAQCBzdGF0aWMgaW50IGh2bV9pb3JlcV9zZXJ2ZXJfaW5p dChzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAgICBpZiAoIHJjICkKICAgICAgICAgcmV0 dXJuIHJjOwogCi0gICAgaWYgKCBidWZpb3JlcV9oYW5kbGluZyA9PSBIVk1fSU9SRVFTUlZfQlVG SU9SRVFfQVRPTUlDICkKLSAgICAgICAgcy0+YnVmaW9yZXFfYXRvbWljID0gdHJ1ZTsKLQotICAg IHJjID0gaHZtX2lvcmVxX3NlcnZlcl9tYXBfcGFnZXMoCi0gICAgICAgICAgICAgcywgYnVmaW9y ZXFfaGFuZGxpbmcgIT0gSFZNX0lPUkVRU1JWX0JVRklPUkVRX09GRik7Ci0gICAgaWYgKCByYyAp Ci0gICAgICAgIGdvdG8gZmFpbF9tYXA7CisgICAgcy0+YnVmaW9yZXFfaGFuZGxpbmcgPSBidWZp b3JlcV9oYW5kbGluZzsKIAogICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkKICAgICB7CkBAIC02 MzEsOSArNjI3LDYgQEAgc3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX2luaXQoc3RydWN0IGh2 bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgaHZtX2lvcmVxX3NlcnZlcl9yZW1vdmVfYWxsX3ZjcHVz KHMpOwogICAgIGh2bV9pb3JlcV9zZXJ2ZXJfdW5tYXBfcGFnZXMocyk7CiAKLSBmYWlsX21hcDoK LSAgICBodm1faW9yZXFfc2VydmVyX2ZyZWVfcmFuZ2VzZXRzKHMpOwotCiAgICAgcmV0dXJuIHJj OwogfQogCkBAIC03NzAsMTIgKzc2MywyMyBAQCBpbnQgaHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5m byhzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogCiAgICAgQVNTRVJUKCFJU19ERUZB VUxUKHMpKTsKIAotICAgICppb3JlcV9nZm4gPSBnZm5feChzLT5pb3JlcS5nZm4pOworICAgIGlm ICggaW9yZXFfZ2ZuIHx8IGJ1ZmlvcmVxX2dmbiApCisgICAgeworICAgICAgICByYyA9IGh2bV9p b3JlcV9zZXJ2ZXJfbWFwX3BhZ2VzKHMpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAg IGdvdG8gb3V0OworICAgIH0KIAotICAgIGlmICggcy0+YnVmaW9yZXEudmEgIT0gTlVMTCApCisg ICAgaWYgKCBpb3JlcV9nZm4gKQorICAgICAgICAqaW9yZXFfZ2ZuID0gZ2ZuX3gocy0+aW9yZXEu Z2ZuKTsKKworICAgIGlmICggSEFORExFX0JVRklPUkVRKHMpICkKICAgICB7Ci0gICAgICAgICpi dWZpb3JlcV9nZm4gPSBnZm5feChzLT5idWZpb3JlcS5nZm4pOwotICAgICAgICAqYnVmaW9yZXFf cG9ydCA9IHMtPmJ1ZmlvcmVxX2V2dGNobjsKKyAgICAgICAgaWYgKCBidWZpb3JlcV9nZm4gKQor ICAgICAgICAgICAgKmJ1ZmlvcmVxX2dmbiA9IGdmbl94KHMtPmJ1ZmlvcmVxLmdmbik7CisKKyAg ICAgICAgaWYgKCBidWZpb3JlcV9wb3J0ICkKKyAgICAgICAgICAgICpidWZpb3JlcV9wb3J0ID0g cy0+YnVmaW9yZXFfZXZ0Y2huOwogICAgIH0KIAogICAgIHJjID0gMDsKQEAgLTEyODgsNyArMTI5 Miw4IEBAIHN0YXRpYyBpbnQgaHZtX3NlbmRfYnVmZmVyZWRfaW9yZXEoc3RydWN0IGh2bV9pb3Jl cV9zZXJ2ZXIgKnMsIGlvcmVxX3QgKnApCiAgICAgcGctPnB0cnMud3JpdGVfcG9pbnRlciArPSBx dyA/IDIgOiAxOwogCiAgICAgLyogQ2Fub25pY2FsaXplIHJlYWQvd3JpdGUgcG9pbnRlcnMgdG8g cHJldmVudCB0aGVpciBvdmVyZmxvdy4gKi8KLSAgICB3aGlsZSAoIHMtPmJ1ZmlvcmVxX2F0b21p YyAmJiBxdysrIDwgSU9SRVFfQlVGRkVSX1NMT1RfTlVNICYmCisgICAgd2hpbGUgKCAocy0+YnVm aW9yZXFfaGFuZGxpbmcgPT0gSFZNX0lPUkVRU1JWX0JVRklPUkVRX0FUT01JQykgJiYKKyAgICAg ICAgICAgIHF3KysgPCBJT1JFUV9CVUZGRVJfU0xPVF9OVU0gJiYKICAgICAgICAgICAgIHBnLT5w dHJzLnJlYWRfcG9pbnRlciA+PSBJT1JFUV9CVUZGRVJfU0xPVF9OVU0gKQogICAgIHsKICAgICAg ICAgdW5pb24gYnVmaW9yZXFfcG9pbnRlcnMgb2xkID0gcGctPnB0cnMsIG5ldzsKZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni9odm0vZG9tYWluLmgKaW5kZXggM2JkOWM1ZDdjMC4uOGI3OThlZTRlOSAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni9odm0vZG9tYWluLmgKQEAgLTY5LDcgKzY5LDcgQEAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIg ewogICAgIGV2dGNobl9wb3J0X3QgICAgICAgICAgYnVmaW9yZXFfZXZ0Y2huOwogICAgIHN0cnVj dCByYW5nZXNldCAgICAgICAgKnJhbmdlW05SX0lPX1JBTkdFX1RZUEVTXTsKICAgICBib29sICAg ICAgICAgICAgICAgICAgIGVuYWJsZWQ7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICAgICBidWZp b3JlcV9hdG9taWM7CisgICAgdWludDhfdCAgICAgICAgICAgICAgICBidWZpb3JlcV9oYW5kbGlu ZzsKIH07CiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmgg Yi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmgKaW5kZXggNmJiYWI1ZmNhMy4uOTY3N2Jk NzRlNyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCisrKyBiL3hl bi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaApAQCAtNzksMjggKzc5LDM0IEBAIHN0cnVjdCB4 ZW5fZG1fb3BfY3JlYXRlX2lvcmVxX3NlcnZlciB7CiAgKiBYRU5fRE1PUF9nZXRfaW9yZXFfc2Vy dmVyX2luZm86IEdldCBhbGwgdGhlIGluZm9ybWF0aW9uIG5lY2Vzc2FyeSB0bwogICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3MgSU9SRVEgU2VydmVyIDxpZD4uCiAgKgot ICogVGhlIGVtdWxhdG9yIG5lZWRzIHRvIG1hcCB0aGUgc3luY2hyb25vdXMgaW9yZXEgc3RydWN0 dXJlcyBhbmQgYnVmZmVyZWQKLSAqIGlvcmVxIHJpbmcgKGlmIGl0IGV4aXN0cykgdGhhdCBYZW4g dXNlcyB0byByZXF1ZXN0IGVtdWxhdGlvbi4gVGhlc2UgYXJlCi0gKiBob3N0ZWQgaW4gdGhlIHRh cmdldCBkb21haW4ncyBnbWZucyA8aW9yZXFfZ2ZuPiBhbmQgPGJ1ZmlvcmVxX2dmbj4KLSAqIHJl c3BlY3RpdmVseS4gSW4gYWRkaXRpb24sIGlmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMgaGFuZGxpbmcg YnVmZmVyZWQKLSAqIGVtdWxhdGlvbiByZXF1ZXN0cywgdGhlIGVtdWxhdG9yIG5lZWRzIHRvIGJp bmQgdG8gZXZlbnQgY2hhbm5lbAotICogPGJ1ZmlvcmVxX3BvcnQ+IHRvIGxpc3RlbiBmb3IgdGhl bS4gKFRoZSBldmVudCBjaGFubmVscyB1c2VkIGZvcgotICogc3luY2hyb25vdXMgZW11bGF0aW9u IHJlcXVlc3RzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIHBlci1DUFUgaW9yZXEKLSAqIHN0cnVjdHVy ZXMgaW4gPGlvcmVxX2dmbj4pLgotICogSWYgdGhlIElPUkVRIFNlcnZlciBpcyBub3QgaGFuZGxp bmcgYnVmZmVyZWQgZW11bGF0aW9uIHJlcXVlc3RzIHRoZW4gdGhlCi0gKiB2YWx1ZXMgaGFuZGVk IGJhY2sgaW4gPGJ1ZmlvcmVxX2dmbj4gYW5kIDxidWZpb3JlcV9wb3J0PiB3aWxsIGJvdGggYmUg MC4KKyAqIElmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMgaGFuZGxpbmcgYnVmZmVyZWQgZW11bGF0aW9u IHJlcXVlc3RzLCB0aGUKKyAqIGVtdWxhdG9yIG5lZWRzIHRvIGJpbmQgdG8gZXZlbnQgY2hhbm5l bCA8YnVmaW9yZXFfcG9ydD4gdG8gbGlzdGVuIGZvcgorICogdGhlbS4gKFRoZSBldmVudCBjaGFu bmVscyB1c2VkIGZvciBzeW5jaHJvbm91cyBlbXVsYXRpb24gcmVxdWVzdHMgYXJlCisgKiBzcGVj aWZpZWQgaW4gdGhlIHBlci1DUFUgaW9yZXEgc3RydWN0dXJlcykuCisgKiBJbiBhZGRpdGlvbiwg aWYgdGhlIFhFTk1FTV9hY3F1aXJlX3Jlc291cmNlIG1lbW9yeSBvcCBjYW5ub3QgYmUgdXNlZCwK KyAqIHRoZSBlbXVsYXRvciB3aWxsIG5lZWQgdG8gbWFwIHRoZSBzeW5jaHJvbm91cyBpb3JlcSBz dHJ1Y3R1cmVzIGFuZAorICogYnVmZmVyZWQgaW9yZXEgcmluZyAoaWYgaXQgZXhpc3RzKSBmcm9t IGd1ZXN0IG1lbW9yeS4gSWYgPGZsYWdzPiBkb2VzCisgKiBub3QgY29udGFpbiBYRU5fRE1PUF9u b19nZm5zIHRoZW4gdGhlc2UgcGFnZXMgd2lsbCBiZSBtYWRlIGF2YWlsYWJsZSBhbmQKKyAqIHRo ZSBmcmFtZSBudW1iZXJzIHBhc3NlZCBiYWNrIGluIGdmbnMgPGlvcmVxX2dmbj4gYW5kIDxidWZp b3JlcV9nZm4+CisgKiByZXNwZWN0aXZlbHkuIChJZiB0aGUgSU9SRVEgU2VydmVyIGlzIG5vdCBo YW5kbGluZyBidWZmZXJlZCBlbXVsYXRpb24KKyAqIG9ubHkgPGlvcmVxX2dmbj4gd2lsbCBiZSB2 YWxpZCkuCiAgKi8KICNkZWZpbmUgWEVOX0RNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvIDIKIAog c3RydWN0IHhlbl9kbV9vcF9nZXRfaW9yZXFfc2VydmVyX2luZm8gewogICAgIC8qIElOIC0gc2Vy dmVyIGlkICovCiAgICAgaW9zZXJ2aWRfdCBpZDsKLSAgICB1aW50MTZfdCBwYWQ7CisgICAgLyog SU4gLSBmbGFncyAqLworICAgIHVpbnQxNl90IGZsYWdzOworCisjZGVmaW5lIF9YRU5fRE1PUF9u b19nZm5zIDAKKyNkZWZpbmUgWEVOX0RNT1Bfbm9fZ2ZucyAoMXUgPDwgX1hFTl9ETU9QX25vX2dm bnMpCisKICAgICAvKiBPVVQgLSBidWZmZXJlZCBpb3JlcSBwb3J0ICovCiAgICAgZXZ0Y2huX3Bv cnRfdCBidWZpb3JlcV9wb3J0OwotICAgIC8qIE9VVCAtIHN5bmMgaW9yZXEgZ2ZuICovCisgICAg LyogT1VUIC0gc3luYyBpb3JlcSBnZm4gKHNlZSBibG9jayBjb21tZW50IGFib3ZlKSAqLwogICAg IHVpbnQ2NF9hbGlnbmVkX3QgaW9yZXFfZ2ZuOwotICAgIC8qIE9VVCAtIGJ1ZmZlcmVkIGlvcmVx IGdmbiAqLworICAgIC8qIE9VVCAtIGJ1ZmZlcmVkIGlvcmVxIGdmbiAoc2VlIGJsb2NrIGNvbW1l bnQgYWJvdmUpKi8KICAgICB1aW50NjRfYWxpZ25lZF90IGJ1ZmlvcmVxX2dmbjsKIH07CiAKLS0g CjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9s aXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=