From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: Re: [RFC PATCH 1/8] x86/domctl: introduce a pair of hypercall to set and get cpu topology Date: Tue, 9 Jan 2018 17:06:06 +0800 Message-ID: <20180109090604.GA249902@op-computing> References: <1515384090-175916-1-git-send-email-chao.gao@intel.com> <1515384090-175916-2-git-send-email-chao.gao@intel.com> <76d0f6f4-cb12-c4e6-bc9e-e80a581d82c8@tycho.nsa.gov> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <76d0f6f4-cb12-c4e6-bc9e-e80a581d82c8@tycho.nsa.gov> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Daniel De Graaf Cc: Stefano Stabellini , Wei Liu , George Dunlap , Ian Jackson , Tim Deegan , xen-devel@lists.xen.org, Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBKYW4gMDgsIDIwMTggYXQgMDE6MTQ6NDRQTSAtMDUwMCwgRGFuaWVsIERlIEdyYWFm IHdyb3RlOgo+T24gMDEvMDcvMjAxOCAxMTowMSBQTSwgQ2hhbyBHYW8gd3JvdGU6Cj4+IERlZmlu ZSBpbnRlcmZhY2UsIHN0cnVjdHVyZXMgYW5kIGh5cGVyY2FsbHMgZm9yIHRvb2xzdGFjayB0byBi dWlsZAo+PiBjcHUgdG9wb2xvZ3kgYW5kIGZvciBndWVzdCB0aGF0IHdpbGwgcmV0cmlldmUgaXQg WzFdLgo+PiBUd28gc3Vib3AgaHlwZXJjYWxscyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2g6Cj4+ IFhFTl9ET01DVExfc2V0X2NwdV90b3BvbG9neSB0byBkZWZpbmUgY3B1IHRvcG9sb2d5IGluZm9y bWF0aW9uIHBlciBkb21haW4KPj4gYW5kIFhFTk1FTV9nZXRfY3B1X3RvcG9sb2d5IHRvIHJldHJp ZXZlIGNwdSB0b3BvbG9neSBpbmZvcm1hdGlvbi4KPj4gCj4+IFsxXTogZHVyaW5nIGd1ZXN0IGNy ZWF0aW9uLCB0aG9zZSBpbmZvcm1hdGlvbiBoZWxwcyBodm1sb2FkZXIgdG8gYnVpbGQgQUNQSS4K Pj4gCj4+IFNpZ25lZC1vZmYtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+Cj4KPldo ZW4gYWRkaW5nIG5ldyBYU00gY29udHJvbHMgZm9yIHVzZSBieSBkZXZpY2UgbW9kZWxzLCB5b3Ug YWxzbwo+bmVlZCB0byBhZGQgdGhlIHBlcm1pc3Npb25zIHRvIHRoZSBkZXZpY2VfbW9kZWwgbWFj cm8gZGVmaW5lZCBpbgo+dG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMveGVuLmlmLiAgSWYgZG9t YWlucyBuZWVkIHRvIGNhbGwgdGhpcwo+ZnVuY3Rpb24gb24gdGhlbXNlbHZlcyAoaXMgdGhpcyBv bmx5IHRydWUgZm9yIGdldD8pLCB5b3Ugd2lsbCBhbHNvCj5uZWVkIHRvIGFkZCBpdCB0byBkZWNs YXJlX2RvbWFpbl9jb21tb24uCj4KCkhpLCBEYW5pZWwuCgpZZXMuIFhFTk1FTV9nZXRfY3B1X3Rv cG9sb2d5IHdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBkb21haW4gaXRzZWxmLgpBbmQgQm90aCBnZXQg YW5kIHNldCB3aWxsIGJlIGNhbGxlZCBieSBkb20wIHdoZW4gY3JlYXRpbmcgb25lIGRvbWFpbi4K U28gSSBuZWVkOgoxLiBhZGQgKnNldCogYW5kICpnZXQqIHRvIGNyZWF0ZV9kb21haW5fY29tbW9u LgoyLiBhZGQgKnNldCogdG8gZGVjbGFyZV9kb21haW5fY29tbW9uLgoKSXMgaXQgcmlnaHQ/CgpU aGFua3MKQ2hhbwoKPj4gLS0tCj4+ICAgeGVuL2FyY2gveDg2L2RvbWN0bC5jICAgICAgICAgICAg ICAgfCAyNyArKysrKysrKysrKysrKysrKysrKysrCj4+ICAgeGVuL2FyY2gveDg2L2h2bS9odm0u YyAgICAgICAgICAgICAgfCAgNyArKysrKysKPj4gICB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAg ICAgICAgICAgICB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4g ICB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaCAgICB8IDE1ICsrKysrKysrKysrKysK Pj4gICB4ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmggICAgICAgICB8IDIyICsrKysrKysrKysr KysrKysrKwo+PiAgIHhlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaCAgICAgICAgIHwgMjcgKysr KysrKysrKysrKysrKysrKysrLQo+PiAgIHhlbi9pbmNsdWRlL3hzbS9kdW1teS5oICAgICAgICAg ICAgIHwgIDYgKysrKysKPj4gICB4ZW4veHNtL2R1bW15LmMgICAgICAgICAgICAgICAgICAgICB8 ICAxICsKPj4gICB4ZW4veHNtL2ZsYXNrL2hvb2tzLmMgICAgICAgICAgICAgICB8IDEwICsrKysr KysrKwo+PiAgIHhlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzIHwgIDQgKysrKwo+ PiAgIDEwIGZpbGVzIGNoYW5nZWQsIDE2MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4+ IAo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWN0bC5jIGIveGVuL2FyY2gveDg2L2Rv bWN0bC5jCj4+IGluZGV4IDM2YWIyMzUuLjRlMWJiZDUgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9hcmNo L3g4Ni9kb21jdGwuYwo+PiArKysgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMKPj4gQEAgLTM0Nyw2 ICszNDcsMjkgQEAgdm9pZCBhcmNoX2dldF9kb21haW5faW5mbyhjb25zdCBzdHJ1Y3QgZG9tYWlu ICpkLAo+PiAgICAgICAgICAgaW5mby0+ZmxhZ3MgfD0gWEVOX0RPTUlORl9oYXA7Cj4+ICAgfQo+ PiArc3RhdGljIGludCBhcmNoX3NldF9jcHVfdG9wb2xvZ3koc3RydWN0IGRvbWFpbiAqZCwKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4ZW5fZG9tY3RsX2NwdV90 b3BvbG9neSAqdG9wb2xvZ3kpCj4+ICt7Cj4+ICsgICAgaWYgKCAhaXNfaHZtX2RvbWFpbihkKSB8 fAo+PiArICAgICAgICAgIXRvcG9sb2d5LT5zaXplIHx8IHRvcG9sb2d5LT5zaXplID4gSFZNX01B WF9WQ1BVUyApCj4+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsgICAgaWYgKCAh ZC0+YXJjaC5odm1fZG9tYWluLmFwaWNfaWQgKQo+PiArICAgICAgICBkLT5hcmNoLmh2bV9kb21h aW4uYXBpY19pZCA9IHhtYWxsb2NfYXJyYXkodWludDMyX3QsIHRvcG9sb2d5LT5zaXplKTsKPj4g Kwo+PiArICAgIGlmICggIWQtPmFyY2guaHZtX2RvbWFpbi5hcGljX2lkICkKPj4gKyAgICAgICAg cmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gKyAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdChkLT5hcmNo Lmh2bV9kb21haW4uYXBpY19pZCwgdG9wb2xvZ3ktPnRpZCwKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICB0b3BvbG9neS0+c2l6ZSkgKQo+PiArICAgICAgICByZXR1cm4gLUVGQVVMVDsKPj4g Kwo+PiArICAgIGQtPmFyY2guaHZtX2RvbWFpbi5hcGljX2lkX3NpemUgPSB0b3BvbG9neS0+c2l6 ZTsKPj4gKyAgICBkLT5hcmNoLmh2bV9kb21haW4uY29yZV9wZXJfc29ja2V0ID0gdG9wb2xvZ3kt PmNvcmVfcGVyX3NvY2tldDsKPj4gKyAgICBkLT5hcmNoLmh2bV9kb21haW4udGhyZWFkX3Blcl9j b3JlID0gdG9wb2xvZ3ktPnRocmVhZF9wZXJfY29yZTsKPj4gKyAgICByZXR1cm4gMDsKPj4gK30K Pj4gKwo+PiAgICNkZWZpbmUgTUFYX0lPUE9SVFMgMHgxMDAwMAo+PiAgIGxvbmcgYXJjaF9kb19k b21jdGwoCj4+IEBAIC0xNTU1LDYgKzE1NzgsMTAgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgKPj4g ICAgICAgICAgIHJlY2FsY3VsYXRlX2NwdWlkX3BvbGljeShkKTsKPj4gICAgICAgICAgIGJyZWFr Owo+PiArICAgIGNhc2UgWEVOX0RPTUNUTF9zZXRfY3B1X3RvcG9sb2d5Ogo+PiArICAgICAgICBy ZXQgPSBhcmNoX3NldF9jcHVfdG9wb2xvZ3koZCwgJmRvbWN0bC0+dS5jcHVfdG9wb2xvZ3kpOwo+ PiArICAgICAgICBicmVhazsKPj4gKwo+PiAgICAgICBkZWZhdWx0Ogo+PiAgICAgICAgICAgcmV0 ID0gaW9tbXVfZG9fZG9tY3RsKGRvbWN0bCwgZCwgdV9kb21jdGwpOwo+PiAgICAgICAgICAgYnJl YWs7Cj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2 L2h2bS9odm0uYwo+PiBpbmRleCA3MWZkZGZkLi5iM2IzMjI0IDEwMDY0NAo+PiAtLS0gYS94ZW4v YXJjaC94ODYvaHZtL2h2bS5jCj4+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPj4gQEAg LTE1MDksNiArMTUwOSwxMyBAQCBpbnQgaHZtX3ZjcHVfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAq dikKPj4gICAgICAgaW50IHJjOwo+PiAgICAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWlu Owo+PiArICAgIGlmICggdi0+dmNwdV9pZCA+IGQtPmFyY2guaHZtX2RvbWFpbi5hcGljX2lkX3Np emUgKQo+PiArICAgIHsKPj4gKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgImQlZHYlZCdzIGFw aWMgaWQgaXNuJ3Qgc2V0LlxuIiwKPj4gKyAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgdi0+ dmNwdV9pZCk7Cj4+ICsgICAgICAgIHJldHVybiAtRU5PRU5UOwo+PiArICAgIH0KPj4gKwo+PiAg ICAgICBodm1fYXNpZF9mbHVzaF92Y3B1KHYpOwo+PiAgICAgICBzcGluX2xvY2tfaW5pdCgmdi0+ YXJjaC5odm1fdmNwdS50bV9sb2NrKTsKPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5j IGIveGVuL2FyY2gveDg2L21tLmMKPj4gaW5kZXggYTU2Zjg3NS4uYjkwZTY2MyAxMDA2NDQKPj4g LS0tIGEveGVuL2FyY2gveDg2L21tLmMKPj4gKysrIGIveGVuL2FyY2gveDg2L21tLmMKPj4gQEAg LTQ0MTMsNiArNDQxMyw1MSBAQCBsb25nIGFyY2hfbWVtb3J5X29wKHVuc2lnbmVkIGxvbmcgY21k LCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKPj4gICAgICAgICAgIHJldHVybiBy YzsKPj4gICAgICAgfQo+PiArICAgIGNhc2UgWEVOTUVNX2dldF9jcHVfdG9wb2xvZ3k6Cj4+ICsg ICAgewo+PiArICAgICAgICBzdHJ1Y3QgZG9tYWluICpkOwo+PiArICAgICAgICBzdHJ1Y3QgeGVu X2NwdV90b3BvbG9neV9pbmZvIHRvcG9sb2d5Owo+PiArCj4+ICsgICAgICAgIGlmICggY29weV9m cm9tX2d1ZXN0KCZ0b3BvbG9neSwgYXJnLCAxKSApCj4+ICsgICAgICAgICAgICByZXR1cm4gLUVG QVVMVDsKPj4gKwo+PiArICAgICAgICBpZiAoIHRvcG9sb2d5LnBhZCB8fCB0b3BvbG9neS5wYWQy ICkKPj4gKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsgICAgICAgIGlmICgg KGQgPSByY3VfbG9ja19kb21haW5fYnlfYW55X2lkKHRvcG9sb2d5LmRvbWlkKSkgPT0gTlVMTCAp Cj4+ICsgICAgICAgICAgICByZXR1cm4gLUVTUkNIOwo+PiArCj4+ICsgICAgICAgIHJjID0geHNt X2dldF9jcHVfdG9wb2xvZ3koWFNNX1RBUkdFVCwgZCk7Cj4+ICsgICAgICAgIGlmICggcmMgKQo+ PiArICAgICAgICAgICAgZ290byBnZXRfY3B1X3RvcG9sb2d5X2ZhaWxlZDsKPj4gKwo+PiArICAg ICAgICByYyA9IC1FT1BOT1RTVVBQOwo+PiArICAgICAgICBpZiAoICFpc19odm1fZG9tYWluKGQp IHx8ICFkLT5hcmNoLmh2bV9kb21haW4uYXBpY19pZCApCj4+ICsgICAgICAgICAgICBnb3RvIGdl dF9jcHVfdG9wb2xvZ3lfZmFpbGVkOwo+PiArCj4+ICsgICAgICAgIC8qIGFsbG93IHRoZSBzaXpl IHRvIGJlIHplcm8gZm9yIHVzZXJzIHdobyBkb24ndCBjYXJlIGFwaWNfaWQgKi8KPj4gKyAgICAg ICAgaWYgKCB0b3BvbG9neS5zaXplICkKPj4gKyAgICAgICAgewo+PiArICAgICAgICAgICAgcmMg PSAtRTJCSUc7Cj4+ICsgICAgICAgICAgICBpZiAoIHRvcG9sb2d5LnNpemUgIT0gZC0+YXJjaC5o dm1fZG9tYWluLmFwaWNfaWRfc2l6ZSApCj4+ICsgICAgICAgICAgICAgICAgZ290byBnZXRfY3B1 X3RvcG9sb2d5X2ZhaWxlZDsKPj4gKwo+PiArICAgICAgICAgICAgcmMgPSAtRUZBVUxUOwo+PiAr ICAgICAgICAgICAgaWYgKCBjb3B5X3RvX2d1ZXN0KHRvcG9sb2d5LnRpZC5oLCBkLT5hcmNoLmh2 bV9kb21haW4uYXBpY19pZCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3Bv bG9neS5zaXplKSApCj4+ICsgICAgICAgICAgICAgICAgZ290byBnZXRfY3B1X3RvcG9sb2d5X2Zh aWxlZDsKPj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAgIHRvcG9sb2d5LmNvcmVfcGVyX3Nv Y2tldCA9IGQtPmFyY2guaHZtX2RvbWFpbi5jb3JlX3Blcl9zb2NrZXQ7Cj4+ICsgICAgICAgIHRv cG9sb2d5LnRocmVhZF9wZXJfY29yZSA9IGQtPmFyY2guaHZtX2RvbWFpbi50aHJlYWRfcGVyX2Nv cmU7Cj4+ICsKPj4gKyAgICAgICAgcmMgPSBfX2NvcHlfdG9fZ3Vlc3QoYXJnLCAmdG9wb2xvZ3ks IDEpID8gLUVGQVVMVCA6IDA7Cj4+ICsKPj4gKyBnZXRfY3B1X3RvcG9sb2d5X2ZhaWxlZDoKPj4g KyAgICAgICAgcmN1X3VubG9ja19kb21haW4oZCk7Cj4+ICsgICAgICAgIHJldHVybiByYzsKPj4g KyAgICB9Cj4+ICsKPj4gICAgICAgZGVmYXVsdDoKPj4gICAgICAgICAgIHJldHVybiBzdWJhcmNo X21lbW9yeV9vcChjbWQsIGFyZyk7Cj4+ICAgICAgIH0KPj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWlu LmgKPj4gaW5kZXggN2YxMjhjMC4uNTAxZWQ5OSAxMDA2NDQKPj4gLS0tIGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vZG9tYWluLmgKPj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9t YWluLmgKPj4gQEAgLTE5Niw2ICsxOTYsMjEgQEAgc3RydWN0IGh2bV9kb21haW4gewo+PiAgICAg ICAgICAgc3RydWN0IHZteF9kb21haW4gdm14Owo+PiAgICAgICAgICAgc3RydWN0IHN2bV9kb21h aW4gc3ZtOwo+PiAgICAgICB9Owo+PiArCj4+ICsgICAgLyoKPj4gKyAgICAgKiBhbiBhcnJheSBv ZiBhcGljX2lkLCB3aGljaCBpcyB1bmlxdWUgYW5kIGNhbiBiZSB1c2VkIHRvIGV4dHJhY3QKPj4g KyAgICAgKiBzb2NrZXQgSUQsIGNvcmUgSUQgYW5kIHRocmVhZCBJRAo+PiArICAgICAqLwo+PiAr ICAgIHVpbnQzMl90ICphcGljX2lkOwo+PiArICAgIHVpbnQzMl90IGFwaWNfaWRfc2l6ZTsKPj4g Kwo+PiArICAgIC8qCj4+ICsgICAgICogcmVwb3J0cyB0aGUgbnVtYmVyIG9mIGNvcmUvdGhyZWFk IGluIGEgc29ja2V0L2NvcmUsIGRldGVybWluaW5nIHRoZQo+PiArICAgICAqIHJpZ2h0LXNoaWZ0 IHZhbHVlIHRvIGV4dHJhY3Qge2NvcmUvdGhyZWFkfSBJRCBmcm9tIGFwaWNfaWQgKGRlZmluZWQK Pj4gKyAgICAgKiBhYm92ZSkuCj4+ICsgICAgICovCj4+ICsgICAgdWludDhfdCBjb3JlX3Blcl9z b2NrZXQ7Cj4+ICsgICAgdWludDhfdCB0aHJlYWRfcGVyX2NvcmU7Cj4+ICAgfTsKPj4gICAjZGVm aW5lIGhhcF9lbmFibGVkKGQpICAoKGQpLT5hcmNoLmh2bV9kb21haW4uaGFwX2VuYWJsZWQpCj4+ IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmggYi94ZW4vaW5jbHVkZS9w dWJsaWMvZG9tY3RsLmgKPj4gaW5kZXggOWFlNzI5NTkuLjk5MzkyYjcgMTAwNjQ0Cj4+IC0tLSBh L3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaAo+PiArKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMv ZG9tY3RsLmgKPj4gQEAgLTExMDksNiArMTEwOSwyNiBAQCBzdHJ1Y3QgeGVuX2RvbWN0bF92dWFy dF9vcCB7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KPj4gICB9Owo+ PiArLyogWEVOX0RPTUNUTF9zZXRfY3B1X3RvcG9sb2d5ICovCj4+ICtzdHJ1Y3QgeGVuX2RvbWN0 bF9jcHVfdG9wb2xvZ3kgewo+PiArICAgIC8qIElOIC0gc2l6ZSBvZiAndG9wb2xvZ3knIGFycmF5 ICovCj4+ICsgICAgdWludDMyX3Qgc2l6ZTsKPj4gKyAgICAvKiBJTiAtIHRoZSBudW1iZXIgb2Yg Y29yZSBpbiB0aGUgc2FtZSBzb2NrZXQgKi8KPj4gKyAgICB1aW50OF90IGNvcmVfcGVyX3NvY2tl dDsKPj4gKyAgICAvKiBJTiAtIHRoZSBudW1iZXIgb2YgdGhyZWFkIGluIHRoZSBzYW1lIGNvcmUg Ki8KPj4gKyAgICB1aW50OF90IHRocmVhZF9wZXJfY29yZTsKPj4gKyAgICAvKiBJTiAtIHNob3Vs ZCBiZSAwICovCj4+ICsgICAgdWludDhfdCBwYWRbMl07Cj4+ICsgICAgLyoKPj4gKyAgICAgKiBJ TiAtIGFuIGFycmF5IG9mIHRvcG9sb2d5IElEICh0aWQpLCB3aGljaCBpcyB1c2VkIHRvIGNvbXB1 dGUgYSBnaXZlbgo+PiArICAgICAqIHZjcHUncyBjb3JlIGlkIGFuZCB0aHJlYWQgaWQuIEZvciB4 ODYsIHRvcG9sb2d5IElEIGlzIHRoZSBBUElDIElELAo+PiArICAgICAqIHdoaWNoIGlzIHN5c3Rl bS1sZXZlbCB1bmlxdWUuCj4+ICsgICAgICovCj4+ICsgICAgWEVOX0dVRVNUX0hBTkRMRV82NCh1 aW50MzIpIHRpZDsKPj4gK307Cj4+ICt0eXBlZGVmIHN0cnVjdCB4ZW5fZG9tY3RsX2NwdV90b3Bv bG9neSB4ZW5fZG9tY3RsX2NwdV90b3BvbG9neTsKPj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExF KHhlbl9kb21jdGxfY3B1X3RvcG9sb2d5KTsKPj4gKwo+PiAgIHN0cnVjdCB4ZW5fZG9tY3RsIHsK Pj4gICAgICAgdWludDMyX3QgY21kOwo+PiAgICNkZWZpbmUgWEVOX0RPTUNUTF9jcmVhdGVkb21h aW4gICAgICAgICAgICAgICAgICAgMQo+PiBAQCAtMTE4OCw2ICsxMjA4LDcgQEAgc3RydWN0IHhl bl9kb21jdGwgewo+PiAgICNkZWZpbmUgWEVOX0RPTUNUTF9zb2Z0X3Jlc2V0ICAgICAgICAgICAg ICAgICAgICA3OQo+PiAgICNkZWZpbmUgWEVOX0RPTUNUTF9zZXRfZ250dGFiX2xpbWl0cyAgICAg ICAgICAgICA4MAo+PiAgICNkZWZpbmUgWEVOX0RPTUNUTF92dWFydF9vcCAgICAgICAgICAgICAg ICAgICAgICA4MQo+PiArI2RlZmluZSBYRU5fRE9NQ1RMX3NldF9jcHVfdG9wb2xvZ3kgICAgICAg ICAgICAgIDgyCj4+ICAgI2RlZmluZSBYRU5fRE9NQ1RMX2dkYnN4X2d1ZXN0bWVtaW8gICAgICAg ICAgICAxMDAwCj4+ICAgI2RlZmluZSBYRU5fRE9NQ1RMX2dkYnN4X3BhdXNldmNwdSAgICAgICAg ICAgICAxMDAxCj4+ICAgI2RlZmluZSBYRU5fRE9NQ1RMX2dkYnN4X3VucGF1c2V2Y3B1ICAgICAg ICAgICAxMDAyCj4+IEBAIC0xMjUyLDYgKzEyNzMsNyBAQCBzdHJ1Y3QgeGVuX2RvbWN0bCB7Cj4+ ICAgICAgICAgICBzdHJ1Y3QgeGVuX2RvbWN0bF9wc3JfYWxsb2MgICAgICAgICBwc3JfYWxsb2M7 Cj4+ICAgICAgICAgICBzdHJ1Y3QgeGVuX2RvbWN0bF9zZXRfZ250dGFiX2xpbWl0cyBzZXRfZ250 dGFiX2xpbWl0czsKPj4gICAgICAgICAgIHN0cnVjdCB4ZW5fZG9tY3RsX3Z1YXJ0X29wICAgICAg ICAgIHZ1YXJ0X29wOwo+PiArICAgICAgICBzdHJ1Y3QgeGVuX2RvbWN0bF9jcHVfdG9wb2xvZ3kg ICAgICBjcHVfdG9wb2xvZ3k7Cj4+ICAgICAgICAgICB1aW50OF90ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwYWRbMTI4XTsKPj4gICAgICAgfSB1Owo+PiAgIH07Cj4+IGRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5 LmgKPj4gaW5kZXggMjkzODZkZi4uYTZiY2M2NCAxMDA2NDQKPj4gLS0tIGEveGVuL2luY2x1ZGUv cHVibGljL21lbW9yeS5oCj4+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaAo+PiBA QCAtNjUwLDcgKzY1MCwzMiBAQCBzdHJ1Y3QgeGVuX3ZudW1hX3RvcG9sb2d5X2luZm8gewo+PiAg IHR5cGVkZWYgc3RydWN0IHhlbl92bnVtYV90b3BvbG9neV9pbmZvIHhlbl92bnVtYV90b3BvbG9n eV9pbmZvX3Q7Cj4+ICAgREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3ZudW1hX3RvcG9sb2d5 X2luZm9fdCk7Cj4+IC0vKiBOZXh0IGF2YWlsYWJsZSBzdWJvcCBudW1iZXIgaXMgMjggKi8KPj4g Ky8qCj4+ICsgKiBYRU5NRU1fZ2V0X2NwdV90b3BvbG9neSBpcyB1c2VkIGJ5IGd1ZXN0IHRvIGFj cXVpcmUgdmNwdSB0b3BvbG9neSBmcm9tCj4+ICsgKiBoeXBlcnZpc29yLgo+PiArICovCj4+ICsj ZGVmaW5lIFhFTk1FTV9nZXRfY3B1X3RvcG9sb2d5ICAgICAyOAo+PiArCj4+ICtzdHJ1Y3QgeGVu X2NwdV90b3BvbG9neV9pbmZvIHsKPj4gKyAgICAvKiBJTiAqLwo+PiArICAgIGRvbWlkX3QgZG9t aWQ7Cj4+ICsgICAgdWludDE2X3QgcGFkOwo+PiArCj4+ICsgICAgLyogSU4vT1VUICovCj4+ICsg ICAgdWludDMyX3Qgc2l6ZTsKPj4gKwo+PiArICAgIC8qIE9VVCAqLwo+PiArICAgIHVpbnQ4X3Qg Y29yZV9wZXJfc29ja2V0Owo+PiArICAgIHVpbnQ4X3QgdGhyZWFkX3Blcl9jb3JlOwo+PiArICAg IHVpbnQxNl90IHBhZDI7Cj4+ICsKPj4gKyAgICB1bmlvbiB7Cj4+ICsgICAgICAgIFhFTl9HVUVT VF9IQU5ETEUodWludDMyKSBoOwo+PiArICAgICAgICB1aW50NjRfdCBwYWQ7Cj4+ICsgICAgfSB0 aWQ7Cj4+ICt9Owo+PiArdHlwZWRlZiBzdHJ1Y3QgeGVuX2NwdV90b3BvbG9neV9pbmZvIHhlbl9j cHVfdG9wb2xvZ3lfaW5mb190Owo+PiArREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2NwdV90 b3BvbG9neV9pbmZvX3QpOwo+PiAgICNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfTUVNT1JZX0hfXyAq Lwo+PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveHNtL2R1bW15LmggYi94ZW4vaW5jbHVkZS94 c20vZHVtbXkuaAo+PiBpbmRleCBkNmRkYWRjLi4zYWM1OWM3IDEwMDY0NAo+PiAtLS0gYS94ZW4v aW5jbHVkZS94c20vZHVtbXkuaAo+PiArKysgYi94ZW4vaW5jbHVkZS94c20vZHVtbXkuaAo+PiBA QCAtMzMwLDYgKzMzMCwxMiBAQCBzdGF0aWMgWFNNX0lOTElORSBpbnQgeHNtX2dldF92bnVtYWlu Zm8oWFNNX0RFRkFVTFRfQVJHIHN0cnVjdCBkb21haW4gKmQpCj4+ICAgICAgIHJldHVybiB4c21f ZGVmYXVsdF9hY3Rpb24oYWN0aW9uLCBjdXJyZW50LT5kb21haW4sIGQpOwo+PiAgIH0KPj4gK3N0 YXRpYyBYU01fSU5MSU5FIGludCB4c21fZ2V0X2NwdV90b3BvbG9neShYU01fREVGQVVMVF9BUkcg c3RydWN0IGRvbWFpbiAqZCkKPj4gK3sKPj4gKyAgICBYU01fQVNTRVJUX0FDVElPTihYU01fVEFS R0VUKTsKPj4gKyAgICByZXR1cm4geHNtX2RlZmF1bHRfYWN0aW9uKGFjdGlvbiwgY3VycmVudC0+ ZG9tYWluLCBkKTsKPj4gK30KPj4gKwo+PiAgICNpZiBkZWZpbmVkKENPTkZJR19IQVNfUEFTU1RI Uk9VR0gpICYmIGRlZmluZWQoQ09ORklHX0hBU19QQ0kpCj4+ICAgc3RhdGljIFhTTV9JTkxJTkUg aW50IHhzbV9nZXRfZGV2aWNlX2dyb3VwKFhTTV9ERUZBVUxUX0FSRyB1aW50MzJfdCBtYWNoaW5l X2JkZikKPj4gICB7Cj4+IGRpZmYgLS1naXQgYS94ZW4veHNtL2R1bW15LmMgYi94ZW4veHNtL2R1 bW15LmMKPj4gaW5kZXggNDc5YjEwMy4uOThlYjg2ZiAxMDA2NDQKPj4gLS0tIGEveGVuL3hzbS9k dW1teS5jCj4+ICsrKyBiL3hlbi94c20vZHVtbXkuYwo+PiBAQCAtODgsNiArODgsNyBAQCB2b2lk IF9faW5pdCB4c21fZml4dXBfb3BzIChzdHJ1Y3QgeHNtX29wZXJhdGlvbnMgKm9wcykKPj4gICAg ICAgc2V0X3RvX2R1bW15X2lmX251bGwob3BzLCBpb21lbV9tYXBwaW5nKTsKPj4gICAgICAgc2V0 X3RvX2R1bW15X2lmX251bGwob3BzLCBwY2lfY29uZmlnX3Blcm1pc3Npb24pOwo+PiAgICAgICBz ZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIGdldF92bnVtYWluZm8pOwo+PiArICAgIHNldF90b19k dW1teV9pZl9udWxsKG9wcywgZ2V0X2NwdV90b3BvbG9neSk7Cj4+ICAgI2lmIGRlZmluZWQoQ09O RklHX0hBU19QQVNTVEhST1VHSCkgJiYgZGVmaW5lZChDT05GSUdfSEFTX1BDSSkKPj4gICAgICAg c2V0X3RvX2R1bW15X2lmX251bGwob3BzLCBnZXRfZGV2aWNlX2dyb3VwKTsKPj4gZGlmZiAtLWdp dCBhL3hlbi94c20vZmxhc2svaG9va3MuYyBiL3hlbi94c20vZmxhc2svaG9va3MuYwo+PiBpbmRl eCAxOWNlYWNmLi4yOWVlMWUxIDEwMDY0NAo+PiAtLS0gYS94ZW4veHNtL2ZsYXNrL2hvb2tzLmMK Pj4gKysrIGIveGVuL3hzbS9mbGFzay9ob29rcy5jCj4+IEBAIC00MjcsNiArNDI3LDExIEBAIHN0 YXRpYyBpbnQgZmxhc2tfZ2V0X3ZudW1haW5mbyhzdHJ1Y3QgZG9tYWluICpkKQo+PiAgICAgICBy ZXR1cm4gY3VycmVudF9oYXNfcGVybShkLCBTRUNDTEFTU19ET01BSU4yLCBET01BSU4yX19HRVRf Vk5VTUFJTkZPKTsKPj4gICB9Cj4+ICtzdGF0aWMgaW50IGZsYXNrX2dldF9jcHVfdG9wb2xvZ3ko c3RydWN0IGRvbWFpbiAqZCkKPj4gK3sKPj4gKyAgICByZXR1cm4gY3VycmVudF9oYXNfcGVybShk LCBTRUNDTEFTU19ET01BSU4yLCBET01BSU4yX19HRVRfQ1BVX1RPUE9MT0dZKTsKPj4gK30KPj4g Kwo+PiAgIHN0YXRpYyBpbnQgZmxhc2tfY29uc29sZV9pbyhzdHJ1Y3QgZG9tYWluICpkLCBpbnQg Y21kKQo+PiAgIHsKPj4gICAgICAgdTMyIHBlcm07Cj4+IEBAIC03NTIsNiArNzU3LDkgQEAgc3Rh dGljIGludCBmbGFza19kb21jdGwoc3RydWN0IGRvbWFpbiAqZCwgaW50IGNtZCkKPj4gICAgICAg Y2FzZSBYRU5fRE9NQ1RMX3NldF9nbnR0YWJfbGltaXRzOgo+PiAgICAgICAgICAgcmV0dXJuIGN1 cnJlbnRfaGFzX3Blcm0oZCwgU0VDQ0xBU1NfRE9NQUlOMiwgRE9NQUlOMl9fU0VUX0dOVFRBQl9M SU1JVFMpOwo+PiArICAgIGNhc2UgWEVOX0RPTUNUTF9zZXRfY3B1X3RvcG9sb2d5Ogo+PiArICAg ICAgICByZXR1cm4gY3VycmVudF9oYXNfcGVybShkLCBTRUNDTEFTU19ET01BSU4yLCBET01BSU4y X19TRVRfQ1BVX1RPUE9MT0dZKTsKPj4gKwo+PiAgICAgICBkZWZhdWx0Ogo+PiAgICAgICAgICAg cmV0dXJuIGF2Y191bmtub3duX3Blcm1pc3Npb24oImRvbWN0bCIsIGNtZCk7Cj4+ICAgICAgIH0K Pj4gQEAgLTE4MDAsNiArMTgwOCw4IEBAIHN0YXRpYyBzdHJ1Y3QgeHNtX29wZXJhdGlvbnMgZmxh c2tfb3BzID0gewo+PiAgICAgICAuZG9feHNtX29wID0gZG9fZmxhc2tfb3AsCj4+ICAgICAgIC5n ZXRfdm51bWFpbmZvID0gZmxhc2tfZ2V0X3ZudW1haW5mbywKPj4gKyAgICAuZ2V0X2NwdV90b3Bv bG9neSA9IGZsYXNrX2dldF9jcHVfdG9wb2xvZ3ksCj4+ICsKPj4gICAgICAgLnZtX2V2ZW50X2Nv bnRyb2wgPSBmbGFza192bV9ldmVudF9jb250cm9sLAo+PiAgICNpZmRlZiBDT05GSUdfSEFTX01F TV9BQ0NFU1MKPj4gZGlmZiAtLWdpdCBhL3hlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0 b3JzIGIveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMKPj4gaW5kZXggZDBhMWVj NS4uZTUzMWVjMCAxMDA2NDQKPj4gLS0tIGEveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3Zl Y3RvcnMKPj4gKysrIGIveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMKPj4gQEAg LTI1MCw2ICsyNTAsMTAgQEAgY2xhc3MgZG9tYWluMgo+PiAgICAgICBwc3JfYWxsb2MKPj4gICAj IFhFTl9ET01DVExfc2V0X2dudHRhYl9saW1pdHMKPj4gICAgICAgc2V0X2dudHRhYl9saW1pdHMK Pj4gKyMgWEVOX0RPTUNUTF9zZXRfY3B1X3RvcG9sb2d5Cj4+ICsgICAgc2V0X2NwdV90b3BvbG9n eQo+PiArIyBYRU5NRU1fZ2V0X2NwdV90b3BvbG9neQo+PiArICAgIGdldF9jcHVfdG9wb2xvZ3kK Pj4gICB9Cj4+ICAgIyBTaW1pbGFyIHRvIGNsYXNzIGRvbWFpbiwgYnV0IHByaW1hcmlseSBjb250 YWlucyBkb21jdGxzIHJlbGF0ZWQgdG8gSFZNIGRvbWFpbnMKPj4gCj4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v cmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=