From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v4 3/4] VT-d PI: restrict the vcpu number on a given pcpu Date: Fri, 7 Jul 2017 14:48:59 +0800 Message-ID: <1499410140-8003-4-git-send-email-chao.gao@intel.com> References: <1499410140-8003-1-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1499410140-8003-1-git-send-email-chao.gao@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Andrew Cooper , Kevin Tian , Jun Nakajima , Jan Beulich , Chao Gao List-Id: xen-devel@lists.xenproject.org Q3VycmVudGx5LCBhIGJsb2NrZWQgdkNQVSBpcyBwdXQgaW4gaXRzIHBDUFUncyBwaSBibG9ja2lu ZyBsaXN0LiBJZgp0b28gbWFueSB2Q1BVcyBhcmUgYmxvY2tlZCBvbiBhIGdpdmVuIHBDUFUsIGl0 IHdpbGwgaW5jdXIgdGhhdCB0aGUgbGlzdApncm93cyB0b28gbG9uZy4gQWZ0ZXIgYSBzaW1wbGUg YW5hbHlzaXMsIHRoZXJlIGFyZSAzMmsgZG9tYWlucyBhbmQKMTI4IHZjcHUgcGVyIGRvbWFpbiwg dGh1cyBhYm91dCA0TSB2Q1BVcyBtYXkgYmUgYmxvY2tlZCBpbiBvbmUgcENQVSdzClBJIGJsb2Nr aW5nIGxpc3QuIFdoZW4gYSB3YWtldXAgaW50ZXJydXB0IGFycml2ZXMsIHRoZSBsaXN0IGlzCnRy YXZlcnNlZCB0byBmaW5kIHNvbWUgc3BlY2lmaWMgdkNQVXMgdG8gd2FrZSB0aGVtIHVwLiBUaGlz IHRyYXZlcnNhbCBpbgp0aGF0IGNhc2Ugd291bGQgY29uc3VtZSBtdWNoIHRpbWUuCgpUbyBtaXRp Z2F0ZSB0aGlzIGlzc3VlLCB0aGlzIHBhdGNoIGxpbWl0cyB0aGUgbnVtYmVyIG9mIHZDUFVzIHRy YWNrZWQgb24gYQpnaXZlbiBwQ1BVJ3MgYmxvY2tpbmcgbGlzdCwgdGFraW5nIGZhY3RvcnMgc3Vj aCBhcyBwZXJmb21hbmNlIG9mIGNvbW1vbiBjYXNlLApjdXJyZW50IGh2bSB2Q1BVIGNvdW50IGFu ZCBjdXJyZW50IHBDUFUgY291bnQgaW50byBjb25zaWRlcmF0aW9uLiBXaXRoIHRoaXMKbWV0aG9k LCBmb3IgdGhlIGNvbW1vbiBjYXNlLCBpdCB3b3JrcyBmYXN0IGFuZCBmb3Igc29tZSBleHRyZW1l IGNhc2VzLCB0aGUKbGlzdCBsZW5ndGggaXMgdW5kZXIgY29udHJvbC4KCldpdGggdGhpcyBwYXRj aCwgd2hlbiBhIHZjcHUgaXMgdG8gYmUgYmxvY2tlZCwgd2UgY2hlY2sgd2hldGhlciB0aGUgcGkK YmxvY2tpbmcgbGlzdCdzIGxlbmd0aCBvZiB0aGUgcGNwdSB3aGVyZSB0aGUgdmNwdSBpcyBydW5u aW5nIGV4Y2VlZHMKdGhlIGxpbWl0IHdoaWNoIGlzIHRoZSBhdmVyYWdlIHZjcHVzIHBlciBwY3B1 IHJhdGlvIHBsdXMgYSBjb25zdGFudC4KSWYgbm8sIHRoZSB2Y3B1IGlzIGFkZGVkIHRvIHRoaXMg cGNwdSdzIHBpIGJsb2NraW5nIGxpc3QuIE90aGVyd2lzZSwKYW5vdGhlciBvbmxpbmUgcGNwdSBp cyBjaG9zZW4gdG8gYWNjZXB0IHRoZSB2Y3B1LgoKU2lnbmVkLW9mZi1ieTogQ2hhbyBHYW8gPGNo YW8uZ2FvQGludGVsLmNvbT4KLS0tCnY0OgogLSB1c2UgYSBuZXcgbG9jayB0byBhdm9pZCBhZGRp bmcgYSBibG9ja2VkIHZjcHUgdG8gYSBvZmZsaW5lIHBjcHUncyBibG9ja2luZwogbGlzdC4KCi0t LQogeGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgfCAxMzYgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMo KyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Zt eC5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKaW5kZXggZWNkNjQ4NS4uMDRlOWFhNiAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKKysrIGIveGVuL2FyY2gveDg2 L2h2bS92bXgvdm14LmMKQEAgLTk1LDIyICs5NSw5MSBAQCBzdGF0aWMgREVGSU5FX1BFUl9DUFUo c3RydWN0IHZteF9waV9ibG9ja2luZ192Y3B1LCB2bXhfcGlfYmxvY2tpbmcpOwogdWludDhfdCBf X3JlYWRfbW9zdGx5IHBvc3RlZF9pbnRyX3ZlY3RvcjsKIHN0YXRpYyB1aW50OF90IF9fcmVhZF9t b3N0bHkgcGlfd2FrZXVwX3ZlY3RvcjsKIAorLyoKKyAqIFByb3RlY3QgY3JpdGljYWwgc2VjdGlv bnMgdG8gYXZvaWQgYWRkaW5nIGEgYmxvY2tlZCB2Y3B1IHRvIGEgZGVzdHJveWVkCisgKiBibG9j a2luZyBsaXN0LgorICovCitzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHJlbW90ZV9wYmxfb3BlcmF0 aW9uKTsKKworI2RlZmluZSByZW1vdGVfcGJsX29wZXJhdGlvbl9iZWdpbihmbGFncykgICAgICAg ICAgICAgICAgICAgXAorKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgIHNwaW5fbG9ja19pcnFzYXZlKCZyZW1vdGVfcGJsX29w ZXJhdGlvbiwgZmxhZ3MpOyAgICAgICAgXAorfSkKKworI2RlZmluZSByZW1vdGVfcGJsX29wZXJh dGlvbl9kb25lKGZsYWdzKSAgICAgICAgICAgICAgICAgICAgXAorKHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnJlbW90ZV9wYmxfb3BlcmF0aW9uLCBmbGFncyk7ICAgXAorfSkKKwog dm9pZCB2bXhfcGlfcGVyX2NwdV9pbml0KHVuc2lnbmVkIGludCBjcHUpCiB7CiAgICAgSU5JVF9M SVNUX0hFQUQoJnBlcl9jcHUodm14X3BpX2Jsb2NraW5nLCBjcHUpLmxpc3QpOwogICAgIHNwaW5f bG9ja19pbml0KCZwZXJfY3B1KHZteF9waV9ibG9ja2luZywgY3B1KS5sb2NrKTsKIH0KIAorLyoK KyAqIEJ5IGRlZmF1bHQsIHRoZSBsb2NhbCBwY3B1IChtZWFucyB0aGUgb25lIHRoZSB2Y3B1IGlz IGN1cnJlbnRseSBydW5uaW5nIG9uKQorICogaXMgY2hvc2VuIGFzIHRoZSBkZXN0aW5hdGlvbiBv ZiB3YWtldXAgaW50ZXJydXB0LiBCdXQgaWYgdGhlIHZjcHUgbnVtYmVyIG9mCisgKiB0aGUgcGNw dSBleGNlZWRzIGEgbGltaXQsIGFub3RoZXIgcGNwdSBpcyBjaG9zZW4gdW50aWwgd2UgZmluZCBh IHN1aXRhYmxlCisgKiBvbmUuCisgKgorICogQ3VycmVudGx5LCBjaG9vc2UgKHZfdG90L3BfdG90 KSArIEsgYXMgdGhlIGxpbWl0IG9mIHZjcHUgY291bnQsIHdoZXJlCisgKiB2X3RvdCBpcyB0aGUg dG90YWwgbnVtYmVyIG9mIGh2bSB2Y3B1cyBvbiB0aGUgc3lzdGVtLCBwX3RvdCBpcyB0aGUgdG90 YWwKKyAqIG51bWJlciBvZiBwY3B1cyBpbiB0aGUgc3lzdGVtLCBhbmQgSyBpcyBhIGZpeGVkIG51 bWJlci4gQW4gZXhwZXJtZW50IG9uIGEKKyAqIHNreWxha2Ugc2VydmVyIHdoaWNoIGhhcyAxMTIg Y3B1cyBhbmQgNjRHIG1lbW9yeSBzaG93cyB0aGUgbWF4aW11bSB0aW1lIHRvCisgKiB3YWtldXAg YSB2Y3B1IGZyb20gYSAxMjgtZW50cnkgYmxvY2tpbmcgbGlzdCB0YWtlcyBhYm91dCAyMnVzLCB3 aGljaCBpcworICogdG9sZXJhYmxlLiBTbyBjaG9vc2UgMTI4IGFzIHRoZSBmaXhlZCBudW1iZXIg Sy4KKyAqCisgKiBUaGlzIHBvbGljeSBtYWtlcyBzdXJlOgorICogMSkgZm9yIGNvbW1vbiBjYXNl cywgdGhlIGxpbWl0IHdvbid0IGJlIHJlYWNoZWQgYW5kIHRoZSBsb2NhbCBwY3B1IGlzIHVzZWQK KyAqIHdoaWNoIGlzIGJlbmVmaWNpYWwgdG8gcGVyZm9ybWFuY2UgKGF0IGxlYXN0LCBhdm9pZCBh biBJUEkgd2hlbiB1bmJsb2NraW5nCisgKiB2Y3B1KS4KKyAqIDIpIGZvciB0aGUgd29yc3QgY2Fz ZSwgdGhlIGJsb2NraW5nIGxpc3QgbGVuZ3RoIHNjYWxlcyB3aXRoIHRoZSB2Y3B1IGNvdW50Cisg KiBkaXZpZGVkIGJ5IHRoZSBwY3B1IGNvdW50LgorICovCisjZGVmaW5lIFBJX0xJU1RfRklYRURf TlVNIDEyOAorI2RlZmluZSBQSV9MSVNUX0xJTUlUICAgICAoYXRvbWljX3JlYWQoJm51bV9odm1f dmNwdXMpIC8gbnVtX29ubGluZV9jcHVzKCkgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBQSV9MSVNUX0ZJWEVEX05VTSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBwaV9vdmVyX2xpbWl0KGlu dCBjcHUpCit7CisgICAgcmV0dXJuIHBlcl9jcHUodm14X3BpX2Jsb2NraW5nLCBjcHUpLmNvdW50 ZXIgPiBQSV9MSVNUX0xJTUlUOworfQorCiBzdGF0aWMgdm9pZCB2bXhfdmNwdV9ibG9jayhzdHJ1 Y3QgdmNwdSAqdikKIHsKLSAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwotICAgIHVuc2lnbmVkIGlu dCBkZXN0OworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3NbMl07CisgICAgdW5zaWduZWQgaW50IGRl c3QsIHBpX2NwdTsKICAgICBzcGlubG9ja190ICpvbGRfbG9jazsKLSAgICBzcGlubG9ja190ICpw aV9ibG9ja2luZ19saXN0X2xvY2sgPQotCQkmcGVyX2NwdSh2bXhfcGlfYmxvY2tpbmcsIHYtPnBy b2Nlc3NvcikubG9jazsKICAgICBzdHJ1Y3QgcGlfZGVzYyAqcGlfZGVzYyA9ICZ2LT5hcmNoLmh2 bV92bXgucGlfZGVzYzsKKyAgICBzcGlubG9ja190ICpwaV9ibG9ja2luZ19saXN0X2xvY2s7Cisg ICAgYm9vbCBpbl9yZW1vdGVfb3BlcmF0aW9uID0gZmFsc2U7CisKKyAgICBwaV9jcHUgPSB2LT5w cm9jZXNzb3I7CisKKyAgICBpZiAoIHVubGlrZWx5KHBpX292ZXJfbGltaXQocGlfY3B1KSkgKQor ICAgIHsKKyAgICAgICAgcmVtb3RlX3BibF9vcGVyYXRpb25fYmVnaW4oZmxhZ3NbMF0pOworICAg ICAgICBpbl9yZW1vdGVfb3BlcmF0aW9uID0gdHJ1ZTsKKyAgICAgICAgd2hpbGUgKHRydWUpCisg ICAgICAgIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBPbmxpbmUgcENQVSdzIGJs b2NraW5nIGxpc3QgaXMgYWx3YXlzIHVzYWJsZSBmb3IgaXQgaXMKKyAgICAgICAgICAgICAqIGRl c3Ryb3llZCBhZnRlciBjbGVhcmluZyB0aGUgYml0IG9mIGNwdV9vbmxpbmVfbWFwLgorICAgICAg ICAgICAgICovCisgICAgICAgICAgICBwaV9jcHUgPSBjcHVtYXNrX2N5Y2xlKHBpX2NwdSwgJmNw dV9vbmxpbmVfbWFwKTsKKyAgICAgICAgICAgIHBpX2Jsb2NraW5nX2xpc3RfbG9jayA9ICZwZXJf Y3B1KHZteF9waV9ibG9ja2luZywgcGlfY3B1KS5sb2NrOworICAgICAgICAgICAgc3Bpbl9sb2Nr X2lycXNhdmUocGlfYmxvY2tpbmdfbGlzdF9sb2NrLCBmbGFnc1sxXSk7CisgICAgICAgICAgICBp ZiAoICFwaV9vdmVyX2xpbWl0KHBpX2NwdSkgKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShwaV9ibG9ja2luZ19saXN0X2xvY2ssIGZs YWdzWzFdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBwaV9i bG9ja2luZ19saXN0X2xvY2sgPSAmcGVyX2NwdSh2bXhfcGlfYmxvY2tpbmcsIHBpX2NwdSkubG9j azsKKyAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUocGlfYmxvY2tpbmdfbGlzdF9sb2NrLCBmbGFn c1sxXSk7CisgICAgfQogCi0gICAgc3Bpbl9sb2NrX2lycXNhdmUocGlfYmxvY2tpbmdfbGlzdF9s b2NrLCBmbGFncyk7CiAgICAgb2xkX2xvY2sgPSBjbXB4Y2hnKCZ2LT5hcmNoLmh2bV92bXgucGlf YmxvY2tpbmcubG9jaywgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgcGlfYmxvY2tpbmdf bGlzdF9sb2NrKTsKIApAQCAtMTIzLDggKzE5MiwxMCBAQCBzdGF0aWMgdm9pZCB2bXhfdmNwdV9i bG9jayhzdHJ1Y3QgdmNwdSAqdikKIAogICAgIHBlcl9jcHUodm14X3BpX2Jsb2NraW5nLCB2LT5w cm9jZXNzb3IpLmNvdW50ZXIrKzsKICAgICBsaXN0X2FkZF90YWlsKCZ2LT5hcmNoLmh2bV92bXgu cGlfYmxvY2tpbmcubGlzdCwKLSAgICAgICAgICAgICAgICAgICZwZXJfY3B1KHZteF9waV9ibG9j a2luZywgdi0+cHJvY2Vzc29yKS5saXN0KTsKLSAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKHBp X2Jsb2NraW5nX2xpc3RfbG9jaywgZmxhZ3MpOworICAgICAgICAgICAgICAgICAgJnBlcl9jcHUo dm14X3BpX2Jsb2NraW5nLCBwaV9jcHUpLmxpc3QpOworICAgIHNwaW5fdW5sb2NrX2lycXJlc3Rv cmUocGlfYmxvY2tpbmdfbGlzdF9sb2NrLCBmbGFnc1sxXSk7CisgICAgaWYgKCB1bmxpa2VseShp bl9yZW1vdGVfb3BlcmF0aW9uKSApCisgICAgICAgIHJlbW90ZV9wYmxfb3BlcmF0aW9uX2RvbmUo ZmxhZ3NbMF0pOwogCiAgICAgQVNTRVJUKCFwaV90ZXN0X3NuKHBpX2Rlc2MpKTsKIApAQCAtMTMy LDYgKzIwMywxOSBAQCBzdGF0aWMgdm9pZCB2bXhfdmNwdV9ibG9jayhzdHJ1Y3QgdmNwdSAqdikK IAogICAgIEFTU0VSVChwaV9kZXNjLT5uZHN0ID09CiAgICAgICAgICAgICh4MmFwaWNfZW5hYmxl ZCA/IGRlc3QgOiBNQVNLX0lOU1IoZGVzdCwgUElfeEFQSUNfTkRTVF9NQVNLKSkpOworICAgIGlm ICggdW5saWtlbHkocGlfY3B1ICE9IHYtPnByb2Nlc3NvcikgKQorICAgIHsKKyAgICAgICAgLyoK KyAgICAgICAgICogVGhlIHZjcHUgaXMgcHV0IHRvIGFub3RoZXIgcENQVSdzIGJsb2NraW5nIGxp c3QuIENoYW5nZSAnTkRTVCcKKyAgICAgICAgICogZmllbGQgdG8gdGhhdCBwQ1BVIHRvIG1ha2Ug c3VyZSBpdCBjYW4gd2FrZSB1cCB0aGUgdmNwdSB3aGVuIGFuCisgICAgICAgICAqIGludGVycnVw dCBhcnJpdmVzLiBUaGUgJ05EU1QnIGZpZWxkIHdpbGwgYmUgc2V0IHRvIHRoZSBwQ1BVIHdoaWNo CisgICAgICAgICAqIHRoZSB2Y3B1IGlzIHJ1bm5pbmcgb24gZHVyaW5nIFZNLUVudHJ5LCBzZWVp bmcKKyAgICAgICAgICogdm14X3BpX3VuYmxvY2tfdmNwdSgpLgorICAgICAgICAgKi8KKyAgICAg ICAgZGVzdCA9IGNwdV9waHlzaWNhbF9pZChwaV9jcHUpOworICAgICAgICB3cml0ZV9hdG9taWMo JnBpX2Rlc2MtPm5kc3QsCisgICAgICAgICAgICAgICAgICB4MmFwaWNfZW5hYmxlZCA/IGRlc3Qg OiBNQVNLX0lOU1IoZGVzdCwgUElfeEFQSUNfTkRTVF9NQVNLKSk7CisgICAgfQogCiAgICAgd3Jp dGVfYXRvbWljKCZwaV9kZXNjLT5udiwgcGlfd2FrZXVwX3ZlY3Rvcik7CiB9CkBAIC0xNjIsMTMg KzI0NiwxNyBAQCBzdGF0aWMgdm9pZCB2bXhfcGlfdW5ibG9ja192Y3B1KHN0cnVjdCB2Y3B1ICp2 KQogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgc3BpbmxvY2tfdCAqcGlfYmxvY2tpbmdf bGlzdF9sb2NrOwogICAgIHN0cnVjdCBwaV9kZXNjICpwaV9kZXNjID0gJnYtPmFyY2guaHZtX3Zt eC5waV9kZXNjOworICAgIHVuc2lnbmVkIGludCBkZXN0ID0gY3B1X3BoeXNpY2FsX2lkKHYtPnBy b2Nlc3Nvcik7CiAKICAgICAvKgotICAgICAqIFNldCAnTlYnIGZpZWxkIGJhY2sgdG8gcG9zdGVk X2ludHJfdmVjdG9yLCBzbyB0aGUKLSAgICAgKiBQb3N0ZWQtSW50ZXJydXB0cyBjYW4gYmUgZGVs aXZlcmVkIHRvIHRoZSB2Q1BVIHdoZW4KLSAgICAgKiBpdCBpcyBydW5uaW5nIGluIG5vbi1yb290 IG1vZGUuCisgICAgICogU2V0ICdOVicgZmllbGQgYmFjayB0byBwb3N0ZWRfaW50cl92ZWN0b3Ig YW5kICdORFNUJyBmaWVsZCB0byB0aGUgcENQVQorICAgICAqIHdoZXJlIHRoZSB2Y3B1IGlzIHJ1 bm5pbmcgKGZvciB0aGlzIGZpZWxkIG1heSBub3cgcG9pbnQgdG8gYW5vdGhlcgorICAgICAqIHBD UFUpLCBzbyB0aGUgUG9zdGVkLUludGVycnVwdHMgY2FuIGJlIGRlbGl2ZXJlZCB0byB0aGUgdkNQ VSB3aGVuIGl0CisgICAgICogaXMgcnVubmluZyBpbiBub24tcm9vdCBtb2RlLgogICAgICAqLwog ICAgIHdyaXRlX2F0b21pYygmcGlfZGVzYy0+bnYsIHBvc3RlZF9pbnRyX3ZlY3Rvcik7CisgICAg d3JpdGVfYXRvbWljKCZwaV9kZXNjLT5uZHN0LAorICAgICAgICAgICAgICAgICB4MmFwaWNfZW5h YmxlZCA/IGRlc3QgOiBNQVNLX0lOU1IoZGVzdCwgUElfeEFQSUNfTkRTVF9NQVNLKSk7CiAKICAg ICBwaV9ibG9ja2luZ19saXN0X2xvY2sgPSB2LT5hcmNoLmh2bV92bXgucGlfYmxvY2tpbmcubG9j azsKIApAQCAtMjE1LDEzICszMDMsOCBAQCB2b2lkIHZteF9waV9kZXNjX2ZpeHVwKHVuc2lnbmVk IGludCBjcHUpCiAgICAgaWYgKCAhaW9tbXVfaW50cG9zdCApCiAgICAgICAgIHJldHVybjsKIAot ICAgIC8qCi0gICAgICogV2UgYXJlIGluIHRoZSBjb250ZXh0IG9mIENQVV9ERUFEIG9yIENQVV9V UF9DQU5DRUxFRCBub3RpZmljYXRpb24sCi0gICAgICogYW5kIGl0IGlzIGltcG9zc2libGUgZm9y IGEgc2Vjb25kIENQVSBnbyBkb3duIGluIHBhcmFsbGVsLiBTbyB3ZQotICAgICAqIGNhbiBzYWZl bHkgYWNxdWlyZSB0aGUgb2xkIGNwdSdzIGxvY2sgYW5kIHRoZW4gYWNxdWlyZSB0aGUgbmV3X2Nw dSdzCi0gICAgICogbG9jayBhZnRlciB0aGF0LgotICAgICAqLwotICAgIHNwaW5fbG9ja19pcnFz YXZlKG9sZF9sb2NrLCBmbGFncyk7CisgICAgcmVtb3RlX3BibF9vcGVyYXRpb25fYmVnaW4oZmxh Z3MpOworICAgIHNwaW5fbG9jayhvbGRfbG9jayk7CiAKICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUodm14LCB0bXAsIGJsb2NrZWRfdmNwdXMsIHBpX2Jsb2NraW5nLmxpc3QpCiAgICAgewpA QCAtMjQ1LDE2ICszMjgsMjQgQEAgdm9pZCB2bXhfcGlfZGVzY19maXh1cCh1bnNpZ25lZCBpbnQg Y3B1KQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgeworICAgICAgICAgICAgbmV3 X2NwdSA9IGNwdTsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBXZSBuZWVkIHRvIGZp bmQgYW4gb25saW5lIGNwdSBhcyB0aGUgTkRTVCBvZiB0aGUgUEkgZGVzY3JpcHRvciwgaXQKICAg ICAgICAgICAgICAqIGRvZXNuJ3QgbWF0dGVyIHdoZXRoZXIgaXQgaXMgd2l0aGluIHRoZSBjcHVw b29sIG9mIHRoZSBkb21haW4gb3IKICAgICAgICAgICAgICAqIG5vdC4gQXMgbG9uZyBhcyBpdCBp cyBvbmxpbmUsIHRoZSB2Q1BVIHdpbGwgYmUgd29rZW4gdXAgb25jZSB0aGUKLSAgICAgICAgICAg ICAqIG5vdGlmaWNhdGlvbiBldmVudCBhcnJpdmVzLgorICAgICAgICAgICAgICogbm90aWZpY2F0 aW9uIGV2ZW50IGFycml2ZXMuIFRocm91Z2ggYSB3aGlsZS1sb29wIHRvIGZpbmQgYQorICAgICAg ICAgICAgICogdGFyZ2V0IHBDUFUgd2hvc2UgUEkgQmxvY2tpbmcgTGlzdCdzIGxlbmd0aCBpc24n dCBvdmVyIHRoZSBsaW1pdC4KICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgbmV3X2NwdSA9 IGNwdW1hc2tfYW55KCZjcHVfb25saW5lX21hcCk7Ci0gICAgICAgICAgICBuZXdfbG9jayA9ICZw ZXJfY3B1KHZteF9waV9ibG9ja2luZywgbmV3X2NwdSkubG9jazsKKyAgICAgICAgICAgIHdoaWxl ICh0cnVlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG5ld19jcHUgPSBjcHVtYXNr X2N5Y2xlKG5ld19jcHUsICZjcHVfb25saW5lX21hcCk7CisgICAgICAgICAgICAgICAgbmV3X2xv Y2sgPSAmcGVyX2NwdSh2bXhfcGlfYmxvY2tpbmcsIG5ld19jcHUpLmxvY2s7CiAKLSAgICAgICAg ICAgIHNwaW5fbG9jayhuZXdfbG9jayk7CisgICAgICAgICAgICAgICAgc3Bpbl9sb2NrKG5ld19s b2NrKTsKKyAgICAgICAgICAgICAgICBpZiAoICFwaV9vdmVyX2xpbWl0KG5ld19jcHUpICkKKyAg ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2sobmV3 X2xvY2spOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBBU1NFUlQodm14LT5waV9ibG9j a2luZy5sb2NrID09IG9sZF9sb2NrKTsKIApAQCAtMjc0LDcgKzM2NSw4IEBAIHZvaWQgdm14X3Bp X2Rlc2NfZml4dXAodW5zaWduZWQgaW50IGNwdSkKICAgICAgICAgcGlfY2xlYXJfc24oJnZteC0+ cGlfZGVzYyk7CiAgICAgfQogCi0gICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShvbGRfbG9jaywg ZmxhZ3MpOworICAgIHNwaW5fdW5sb2NrKG9sZF9sb2NrKTsKKyAgICByZW1vdGVfcGJsX29wZXJh dGlvbl9kb25lKGZsYWdzKTsKIH0KIAogLyoKLS0gCjEuOC4zLjEKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK