From: Greg Kroah-Hartman Subject: [PATCH 4.9 079/116] x86/smpboot: Make logical package management more robust Date: Fri, 6 Jan 2017 22:44:01 +0100 Message-ID: <20170106213912.347392169@linuxfoundation.org> References: <20170106213908.681421800@linuxfoundation.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170106213908.681421800@linuxfoundation.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: linux-kernel@vger.kernel.org Cc: Juergen Gross , Alok Kataria , Peter Zijlstra , Greg Kroah-Hartman , "M. Vefa Bicakci" , stable@vger.kernel.org, xen-devel , "Charles (Chas) Williams" , Borislav Petkov , Boris Ostrovsky , Thomas Gleixner List-Id: xen-devel@lists.xenproject.org NC45LXN0YWJsZSByZXZpZXcgcGF0Y2guICBJZiBhbnlvbmUgaGFzIGFueSBvYmplY3Rpb25zLCBw bGVhc2UgbGV0IG1lIGtub3cuCgotLS0tLS0tLS0tLS0tLS0tLS0KCkZyb206IFRob21hcyBHbGVp eG5lciA8dGdseEBsaW51dHJvbml4LmRlPgoKY29tbWl0IDlkODVlYjkxMTlmNGVlZWI0OGU4N2Fk ZmNkNzFmNzUyNjU1NzAwZTkgdXBzdHJlYW0uCgpUaGUgbG9naWNhbCBwYWNrYWdlIG1hbmFnZW1l bnQgaGFzIHNldmVyYWwgaXNzdWVzOgoKIC0gVGhlIEFQSUMgaWRzIHByb3ZpZGVkIGJ5IEFDUEkg YXJlIG5vdCByZXF1aXJlZCB0byBiZSB0aGUgc2FtZSBhcyB0aGUKICAgaW5pdGlhbCBBUElDIGlk IHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQgYnkgQ1BVSUQuIFRoZSBBUElDIGlkcyBwcm92aWRlZAog ICBieSBBQ1BJIGFyZSB0aG9zZSB3aGljaCBhcmUgd3JpdHRlbiBieSB0aGUgQklPUyBpbnRvIHRo ZSBBUElDLiBUaGUKICAgaW5pdGlhbCBpZCBpcyBzZXQgYnkgaGFyZHdhcmUgYW5kIGNhbiBub3Qg YmUgY2hhbmdlZC4gVGhlIGhhcmR3YXJlCiAgIHByb3ZpZGVkIGlkcyBjb250YWluIHRoZSByZWFs IGhhcmR3YXJlIHBhY2thZ2UgaW5mb3JtYXRpb24uCgogICBFc3BlY2lhbGx5IEFNRCBzZXRzIHRo ZSBlZmZlY3RpdmUgQVBJQyBpZCBkaWZmZXJlbnQgZnJvbSB0aGUgaGFyZHdhcmUgaWQKICAgYXMg dGhleSBuZWVkIHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBJT0FQSUMgaWRzIHN0YXJ0aW5nIGF0 IGlkIDAuCgogICBBcyBhIGNvbnNlcXVlbmNlIHRob3NlIG1hY2hpbmVzIHRyaWdnZXIgdGhlIGN1 cnJlbnRseSBhY3RpdmUgZmlybXdhcmUKICAgYnVnIHByaW50b3V0cyBpbiBkbWVzZywgVGhlc2Ug YXJlIG9idmlvdXNseSB3cm9uZy4KCiAtIFZpcnR1YWwgbWFjaGluZXMgaGF2ZSB0aGVpciBvd24g aW50ZXJlc3Rpbmcgb2YgZW51bWVyYXRpbmcgQVBJQ3MgYW5kCiAgIHBhY2thZ2VzIHdoaWNoIGFy ZSBub3QgcmVsaWFibHkgY292ZXJlZCBieSB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbi4KClRo ZSBzaXppbmcgb2YgdGhlIG1hcHBpbmcgYXJyYXkgaGFzIGJlZW4gdHdlYWtlZCB0byBiZSBnZW5l cm91c2x5IGxhcmdlIHRvCmhhbmRsZSBzeXN0ZW1zIHdoaWNoIHByb3ZpZGUgYSB3cm9uZyBjb3Jl IGNvdW50IHdoZW4gSFQgaXMgZGlzYWJsZWQgc28gdGhlCndob2xlIG1hZ2ljIHdoaWNoIGNoZWNr cyBmb3Igc3BhY2UgaW4gdGhlIHBoeXNpY2FsIGhvdHBsdWcgY2FzZSBpcyBub3QKbmVlZGVkIGFu eW1vcmUuCgpTaW1wbGlmeSB0aGUgd2hvbGUgbWFjaGluZXJ5IGFuZCBkbyB0aGUgbWFwcGluZyB3 aGVuIHRoZSBDUFUgc3RhcnRzIGFuZCB0aGUKQ1BVSUQgZGVyaXZlZCBwaHlzaWNhbCBwYWNrYWdl IGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZS4gVGhpcyBzb2x2ZXMgdGhlCm9ic2VydmVkIHByb2Js ZW1zIG9uIEFNRCBtYWNoaW5lcyBhbmQgd29ya3MgZm9yIHRoZSB2aXJ0dWFsaXphdGlvbiBpc3N1 ZXMKYXMgd2VsbC4KClJlbW92ZSB0aGUgZXh0cmEgY2FsbCBmcm9tIFhFTiBjcHUgYnJpbmd1cCBj b2RlIGFzIGl0IGlzIG5vdCBsb25nZXIKcmVxdWlyZWQuCgpGaXhlczogZDQ5NTk3ZmQzYmM3ICgi eDg2L2NwdTogRGVhbCB3aXRoIGJyb2tlbiBmaXJtd2FyZSAoVk1XYXJlL1hFTikiKQpSZXBvcnRl ZC1hbmQtdGVzdGVkLWJ5OiBCb3Jpc2xhdiBQZXRrb3YgPGJwQHN1c2UuZGU+ClRlc3RlZC1ieTog Qm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KU2lnbmVkLW9mZi1i eTogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+CkNjOiBKdWVyZ2VuIEdyb3Nz IDxqZ3Jvc3NAc3VzZS5jb20+CkNjOiBQZXRlciBaaWpsc3RyYSA8cGV0ZXJ6QGluZnJhZGVhZC5v cmc+CkNjOiBNLiBWZWZhIEJpY2FrY2kgPG0udi5iQHJ1bmJveC5jb20+CkNjOiB4ZW4tZGV2ZWwg PHhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnPgpDYzogQ2hhcmxlcyAoQ2hhcykgV2lsbGlhbXMgPGNp d2lsbGlhQGJyb2NhZGUuY29tPgpDYzogQm9yaXNsYXYgUGV0a292IDxicEBhbGllbjguZGU+CkNj OiBBbG9rIEthdGFyaWEgPGFrYXRhcmlhQHZtd2FyZS5jb20+Ckxpbms6IGh0dHA6Ly9sa21sLmtl cm5lbC5vcmcvci9hbHBpbmUuREVCLjIuMjAuMTYxMjEyMTEwMjI2MC4zNDI5QG5hbm9zClNpZ25l ZC1vZmYtYnk6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpTaWduZWQtb2Zm LWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgoKLS0t CiBhcmNoL3g4Ni9rZXJuZWwvYXBpYy9hcGljLmMgIHwgICAxNSAtLS0tLS0tLS0tLS0KIGFyY2gv eDg2L2tlcm5lbC9jcHUvY29tbW9uLmMgfCAgIDI0ICsrKysrKy0tLS0tLS0tLS0tLS0tCiBhcmNo L3g4Ni9rZXJuZWwvc21wYm9vdC5jICAgIHwgICA1MSArKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiBhcmNoL3g4Ni94ZW4vc21wLmMgICAgICAgICAgIHwgICAgNiAt LS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCA2OSBkZWxldGlvbnMoLSkK Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9hcGljL2FwaWMuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwv YXBpYy9hcGljLmMKQEAgLTIxNTksMjEgKzIxNTksNiBAQCBpbnQgX19nZW5lcmljX3Byb2Nlc3Nv cl9pbmZvKGludCBhcGljaWQsCiAJfQogCiAJLyoKLQkgKiBUaGlzIGNhbiBoYXBwZW4gb24gcGh5 c2ljYWwgaG90cGx1Zy4gVGhlIHNhbml0eSBjaGVjayBhdCBib290IHRpbWUKLQkgKiBpcyBkb25l IGZyb20gbmF0aXZlX3NtcF9wcmVwYXJlX2NwdXMoKSBhZnRlciBudW1fcG9zc2libGVfY3B1cygp IGlzCi0JICogZXN0YWJsaXNoZWQuCi0JICovCi0JaWYgKHRvcG9sb2d5X3VwZGF0ZV9wYWNrYWdl X21hcChhcGljaWQsIGNwdSkgPCAwKSB7Ci0JCWludCB0aGlzY3B1ID0gbWF4ICsgZGlzYWJsZWRf Y3B1czsKLQotCQlwcl93YXJuaW5nKCJBUElDOiBQYWNrYWdlIGxpbWl0IHJlYWNoZWQuIFByb2Nl c3NvciAlZC8weCV4IGlnbm9yZWQuXG4iLAotCQkJICAgdGhpc2NwdSwgYXBpY2lkKTsKLQotCQlk aXNhYmxlZF9jcHVzKys7Ci0JCXJldHVybiAtRU5PU1BDOwotCX0KLQotCS8qCiAJICogVmFsaWRh dGUgdmVyc2lvbgogCSAqLwogCWlmICh2ZXJzaW9uID09IDB4MCkgewotLS0gYS9hcmNoL3g4Ni9r ZXJuZWwvY3B1L2NvbW1vbi5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmMKQEAg LTk3OSwyOSArOTc5LDIxIEBAIHN0YXRpYyB2b2lkIHg4Nl9pbml0X2NhY2hlX3FvcyhzdHJ1Y3Qg Y3AKIH0KIAogLyoKLSAqIFRoZSBwaHlzaWNhbCB0byBsb2dpY2FsIHBhY2thZ2UgaWQgbWFwcGlu ZyBpcyBpbml0aWFsaXplZCBmcm9tIHRoZQotICogYWNwaS9tcHRhYmxlcyBpbmZvcm1hdGlvbi4g TWFrZSBzdXJlIHRoYXQgQ1BVSUQgYWN0dWFsbHkgYWdyZWVzIHdpdGgKLSAqIHRoYXQuCisgKiBW YWxpZGF0ZSB0aGF0IEFDUEkvbXB0YWJsZXMgaGF2ZSB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhYm91 dCB0aGUKKyAqIGVmZmVjdGl2ZSBBUElDIGlkIGFuZCB1cGRhdGUgdGhlIHBhY2thZ2UgbWFwLgog ICovCi1zdGF0aWMgdm9pZCBzYW5pdGl6ZV9wYWNrYWdlX2lkKHN0cnVjdCBjcHVpbmZvX3g4NiAq YykKK3N0YXRpYyB2b2lkIHZhbGlkYXRlX2FwaWNfYW5kX3BhY2thZ2VfaWQoc3RydWN0IGNwdWlu Zm9feDg2ICpjKQogewogI2lmZGVmIENPTkZJR19TTVAKLQl1bnNpZ25lZCBpbnQgcGtnLCBhcGlj aWQsIGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKwl1bnNpZ25lZCBpbnQgYXBpY2lkLCBjcHUg PSBzbXBfcHJvY2Vzc29yX2lkKCk7CiAKIAlhcGljaWQgPSBhcGljLT5jcHVfcHJlc2VudF90b19h cGljaWQoY3B1KTsKLQlwa2cgPSBhcGljaWQgPj4gYm9vdF9jcHVfZGF0YS54ODZfY29yZWlkX2Jp dHM7CiAKLQlpZiAoYXBpY2lkICE9IGMtPmluaXRpYWxfYXBpY2lkKSB7Ci0JCXByX2VycihGV19C VUcgIkNQVSV1OiBBUElDIGlkIG1pc21hdGNoLiBGaXJtd2FyZTogJXggQ1BVSUQ6ICV4XG4iLAor CWlmIChhcGljaWQgIT0gYy0+YXBpY2lkKSB7CisJCXByX2VycihGV19CVUcgIkNQVSV1OiBBUElD IGlkIG1pc21hdGNoLiBGaXJtd2FyZTogJXggQVBJQzogJXhcbiIsCiAJCSAgICAgICBjcHUsIGFw aWNpZCwgYy0+aW5pdGlhbF9hcGljaWQpOwotCQljLT5pbml0aWFsX2FwaWNpZCA9IGFwaWNpZDsK IAl9Ci0JaWYgKHBrZyAhPSBjLT5waHlzX3Byb2NfaWQpIHsKLQkJcHJfZXJyKEZXX0JVRyAiQ1BV JXU6IFVzaW5nIGZpcm13YXJlIHBhY2thZ2UgaWQgJXUgaW5zdGVhZCBvZiAldVxuIiwKLQkJICAg ICAgIGNwdSwgcGtnLCBjLT5waHlzX3Byb2NfaWQpOwotCQljLT5waHlzX3Byb2NfaWQgPSBwa2c7 Ci0JfQotCWMtPmxvZ2ljYWxfcHJvY19pZCA9IHRvcG9sb2d5X3BoeXNfdG9fbG9naWNhbF9wa2co cGtnKTsKKwlCVUdfT04odG9wb2xvZ3lfdXBkYXRlX3BhY2thZ2VfbWFwKGMtPnBoeXNfcHJvY19p ZCwgY3B1KSk7CiAjZWxzZQogCWMtPmxvZ2ljYWxfcHJvY19pZCA9IDA7CiAjZW5kaWYKQEAgLTEx MzIsNyArMTEyNCw2IEBAIHN0YXRpYyB2b2lkIGlkZW50aWZ5X2NwdShzdHJ1Y3QgY3B1aW5mb18K ICNpZmRlZiBDT05GSUdfTlVNQQogCW51bWFfYWRkX2NwdShzbXBfcHJvY2Vzc29yX2lkKCkpOwog I2VuZGlmCi0Jc2FuaXRpemVfcGFja2FnZV9pZChjKTsKIH0KIAogLyoKQEAgLTExODgsNiArMTE3 OSw3IEBAIHZvaWQgaWRlbnRpZnlfc2Vjb25kYXJ5X2NwdShzdHJ1Y3QgY3B1aW4KIAllbmFibGVf c2VwX2NwdSgpOwogI2VuZGlmCiAJbXRycl9hcF9pbml0KCk7CisJdmFsaWRhdGVfYXBpY19hbmRf cGFja2FnZV9pZChjKTsKIH0KIAogc3RydWN0IG1zcl9yYW5nZSB7Ci0tLSBhL2FyY2gveDg2L2tl cm5lbC9zbXBib290LmMKKysrIGIvYXJjaC94ODYva2VybmVsL3NtcGJvb3QuYwpAQCAtMTA0LDcg KzEwNCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbWF4X3BoeXNpY2FsX3BrZ19pZAogdW5zaWdu ZWQgaW50IF9fbWF4X2xvZ2ljYWxfcGFja2FnZXMgX19yZWFkX21vc3RseTsKIEVYUE9SVF9TWU1C T0woX19tYXhfbG9naWNhbF9wYWNrYWdlcyk7CiBzdGF0aWMgdW5zaWduZWQgaW50IGxvZ2ljYWxf cGFja2FnZXMgX19yZWFkX21vc3RseTsKLXN0YXRpYyBib29sIGxvZ2ljYWxfcGFja2FnZXNfZnJv emVuIF9fcmVhZF9tb3N0bHk7CiAKIC8qIE1heGltdW0gbnVtYmVyIG9mIFNNVCB0aHJlYWRzIG9u IGFueSBvbmxpbmUgY29yZSAqLwogaW50IF9fbWF4X3NtdF90aHJlYWRzIF9fcmVhZF9tb3N0bHk7 CkBAIC0yNjMsOSArMjYyLDE0IEBAIHN0YXRpYyB2b2lkIG5vdHJhY2Ugc3RhcnRfc2Vjb25kYXJ5 KHZvaWQKIAljcHVfc3RhcnR1cF9lbnRyeShDUFVIUF9BUF9PTkxJTkVfSURMRSk7CiB9CiAKLWlu dCB0b3BvbG9neV91cGRhdGVfcGFja2FnZV9tYXAodW5zaWduZWQgaW50IGFwaWNpZCwgdW5zaWdu ZWQgaW50IGNwdSkKKy8qKgorICogdG9wb2xvZ3lfdXBkYXRlX3BhY2thZ2VfbWFwIC0gVXBkYXRl IHRoZSBwaHlzaWNhbCB0byBsb2dpY2FsIHBhY2thZ2UgbWFwCisgKiBAcGtnOglUaGUgcGh5c2lj YWwgcGFja2FnZSBpZCBhcyByZXRyaWV2ZWQgdmlhIENQVUlECisgKiBAY3B1OglUaGUgY3B1IGZv ciB3aGljaCB0aGlzIGlzIHVwZGF0ZWQKKyAqLworaW50IHRvcG9sb2d5X3VwZGF0ZV9wYWNrYWdl X21hcCh1bnNpZ25lZCBpbnQgcGtnLCB1bnNpZ25lZCBpbnQgY3B1KQogewotCXVuc2lnbmVkIGlu dCBuZXcsIHBrZyA9IGFwaWNpZCA+PiBib290X2NwdV9kYXRhLng4Nl9jb3JlaWRfYml0czsKKwl1 bnNpZ25lZCBpbnQgbmV3OwogCiAJLyogQ2FsbGVkIGZyb20gZWFybHkgYm9vdCA/ICovCiAJaWYg KCFwaHlzaWNhbF9wYWNrYWdlX21hcCkKQEAgLTI3OCwxNiArMjgyLDE3IEBAIGludCB0b3BvbG9n eV91cGRhdGVfcGFja2FnZV9tYXAodW5zaWduZWQKIAlpZiAodGVzdF9hbmRfc2V0X2JpdChwa2cs IHBoeXNpY2FsX3BhY2thZ2VfbWFwKSkKIAkJZ290byBmb3VuZDsKIAotCWlmIChsb2dpY2FsX3Bh Y2thZ2VzX2Zyb3plbikgewotCQlwaHlzaWNhbF90b19sb2dpY2FsX3BrZ1twa2ddID0gLTE7Ci0J CXByX3dhcm4oIkFQSUMoJXgpIFBhY2thZ2UgJXUgZXhjZWVkcyBsb2dpY2FsIHBhY2thZ2UgbWF4 XG4iLAotCQkJYXBpY2lkLCBwa2cpOworCWlmIChsb2dpY2FsX3BhY2thZ2VzID49IF9fbWF4X2xv Z2ljYWxfcGFja2FnZXMpIHsKKwkJcHJfd2FybigiUGFja2FnZSAldSBvZiBDUFUgJXUgZXhjZWVk cyBCSU9TIHBhY2thZ2UgZGF0YSAldS5cbiIsCisJCQlsb2dpY2FsX3BhY2thZ2VzLCBjcHUsIF9f bWF4X2xvZ2ljYWxfcGFja2FnZXMpOwogCQlyZXR1cm4gLUVOT1NQQzsKIAl9CiAKIAluZXcgPSBs b2dpY2FsX3BhY2thZ2VzKys7Ci0JcHJfaW5mbygiQVBJQygleCkgQ29udmVydGluZyBwaHlzaWNh bCAldSB0byBsb2dpY2FsIHBhY2thZ2UgJXVcbiIsCi0JCWFwaWNpZCwgcGtnLCBuZXcpOworCWlm IChuZXcgIT0gcGtnKSB7CisJCXByX2luZm8oIkNQVSAldSBDb252ZXJ0aW5nIHBoeXNpY2FsICV1 IHRvIGxvZ2ljYWwgcGFja2FnZSAldVxuIiwKKwkJCWNwdSwgcGtnLCBuZXcpOworCX0KIAlwaHlz aWNhbF90b19sb2dpY2FsX3BrZ1twa2ddID0gbmV3OwogCiBmb3VuZDoKQEAgLTMwOCw5ICszMTMs OSBAQCBpbnQgdG9wb2xvZ3lfcGh5c190b19sb2dpY2FsX3BrZyh1bnNpZ25lCiB9CiBFWFBPUlRf U1lNQk9MKHRvcG9sb2d5X3BoeXNfdG9fbG9naWNhbF9wa2cpOwogCi1zdGF0aWMgdm9pZCBfX2lu aXQgc21wX2luaXRfcGFja2FnZV9tYXAodm9pZCkKK3N0YXRpYyB2b2lkIF9faW5pdCBzbXBfaW5p dF9wYWNrYWdlX21hcChzdHJ1Y3QgY3B1aW5mb194ODYgKmMsIHVuc2lnbmVkIGludCBjcHUpCiB7 Ci0JdW5zaWduZWQgaW50IG5jcHVzLCBjcHU7CisJdW5zaWduZWQgaW50IG5jcHVzOwogCXNpemVf dCBzaXplOwogCiAJLyoKQEAgLTM1NSwyNyArMzYwLDkgQEAgc3RhdGljIHZvaWQgX19pbml0IHNt cF9pbml0X3BhY2thZ2VfbWFwKAogCXNpemUgPSBCSVRTX1RPX0xPTkdTKG1heF9waHlzaWNhbF9w a2dfaWQpICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpOwogCXBoeXNpY2FsX3BhY2thZ2VfbWFwID0g a3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKIAotCWZvcl9lYWNoX3ByZXNlbnRfY3B1KGNwdSkg ewotCQl1bnNpZ25lZCBpbnQgYXBpY2lkID0gYXBpYy0+Y3B1X3ByZXNlbnRfdG9fYXBpY2lkKGNw dSk7Ci0KLQkJaWYgKGFwaWNpZCA9PSBCQURfQVBJQ0lEIHx8ICFhcGljLT5hcGljX2lkX3ZhbGlk KGFwaWNpZCkpCi0JCQljb250aW51ZTsKLQkJaWYgKCF0b3BvbG9neV91cGRhdGVfcGFja2FnZV9t YXAoYXBpY2lkLCBjcHUpKQotCQkJY29udGludWU7Ci0JCXByX3dhcm4oIkNQVSAldSBBUElDSWQg JXggZGlzYWJsZWRcbiIsIGNwdSwgYXBpY2lkKTsKLQkJcGVyX2NwdSh4ODZfYmlvc19jcHVfYXBp Y2lkLCBjcHUpID0gQkFEX0FQSUNJRDsKLQkJc2V0X2NwdV9wb3NzaWJsZShjcHUsIGZhbHNlKTsK LQkJc2V0X2NwdV9wcmVzZW50KGNwdSwgZmFsc2UpOwotCX0KLQotCWlmIChsb2dpY2FsX3BhY2th Z2VzID4gX19tYXhfbG9naWNhbF9wYWNrYWdlcykgewotCQlwcl93YXJuKCJEZXRlY3RlZCBtb3Jl IHBhY2thZ2VzICgldSksIHRoZW4gY29tcHV0ZWQgYnkgQklPUyBkYXRhICgldSkuXG4iLAotCQkJ bG9naWNhbF9wYWNrYWdlcywgX19tYXhfbG9naWNhbF9wYWNrYWdlcyk7Ci0JCWxvZ2ljYWxfcGFj a2FnZXNfZnJvemVuID0gdHJ1ZTsKLQkJX19tYXhfbG9naWNhbF9wYWNrYWdlcyAgPSBsb2dpY2Fs X3BhY2thZ2VzOwotCX0KLQogCXByX2luZm8oIk1heCBsb2dpY2FsIHBhY2thZ2VzOiAldVxuIiwg X19tYXhfbG9naWNhbF9wYWNrYWdlcyk7CisKKwl0b3BvbG9neV91cGRhdGVfcGFja2FnZV9tYXAo Yy0+cGh5c19wcm9jX2lkLCBjcHUpOwogfQogCiB2b2lkIF9faW5pdCBzbXBfc3RvcmVfYm9vdF9j cHVfaW5mbyh2b2lkKQpAQCAtMzg1LDcgKzM3Miw3IEBAIHZvaWQgX19pbml0IHNtcF9zdG9yZV9i b290X2NwdV9pbmZvKHZvaWQKIAogCSpjID0gYm9vdF9jcHVfZGF0YTsKIAljLT5jcHVfaW5kZXgg PSBpZDsKLQlzbXBfaW5pdF9wYWNrYWdlX21hcCgpOworCXNtcF9pbml0X3BhY2thZ2VfbWFwKGMs IGlkKTsKIH0KIAogLyoKLS0tIGEvYXJjaC94ODYveGVuL3NtcC5jCisrKyBiL2FyY2gveDg2L3hl bi9zbXAuYwpAQCAtODcsMTIgKzg3LDYgQEAgc3RhdGljIHZvaWQgY3B1X2JyaW5ndXAodm9pZCkK IAljcHVfZGF0YShjcHUpLng4Nl9tYXhfY29yZXMgPSAxOwogCXNldF9jcHVfc2libGluZ19tYXAo Y3B1KTsKIAotCS8qCi0JICogaWRlbnRpZnlfY3B1KCkgbWF5IGhhdmUgc2V0IGxvZ2ljYWxfcGtn X2lkIHRvIC0xIGR1ZQotCSAqIHRvIGluY29ycmVjdCBwaHlzX3Byb2NfaWQuIExldCdzIHJlLWNv bXVwdGUgaXQuCi0JICovCi0JdG9wb2xvZ3lfdXBkYXRlX3BhY2thZ2VfbWFwKGFwaWMtPmNwdV9w cmVzZW50X3RvX2FwaWNpZChjcHUpLCBjcHUpOwotCiAJeGVuX3NldHVwX2NwdV9jbG9ja2V2ZW50 cygpOwogCiAJbm90aWZ5X2NwdV9zdGFydGluZyhjcHUpOwoKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK