From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH for-next v2 09/10] x86/domain: move PV specific code to pv/domain.c Date: Tue, 25 Apr 2017 15:52:06 +0100 Message-ID: <9b3ffa55-de25-1e83-4503-6094de6fb14b@citrix.com> References: <20170425135211.4696-1-wei.liu2@citrix.com> <20170425135211.4696-10-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d33Ti-0007lb-GI for xen-devel@lists.xenproject.org; Tue, 25 Apr 2017 16:38:14 +0000 In-Reply-To: <20170425135211.4696-10-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Wei Liu , Xen-devel Cc: Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gMjUvMDQvMTcgMTQ6NTIsIFdlaSBMaXUgd3JvdGU6Cj4gLSBmYWlsOgo+IC0gICAgcHZfZG9t YWluX2Rlc3Ryb3koZCk7Cj4gLQo+IC0gICAgcmV0dXJuIHJjOwo+IC19Cj4gLQo+ICt2b2lkIHBh cmF2aXJ0X2N0eHRfc3dpdGNoX2Zyb20oc3RydWN0IHZjcHUgKnYpOwo+ICt2b2lkIHBhcmF2aXJ0 X2N0eHRfc3dpdGNoX3RvKHN0cnVjdCB2Y3B1ICp2KTsKPiAgaW50IGFyY2hfZG9tYWluX2NyZWF0 ZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgZG9tY3JfZmxhZ3MsCj4gICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHhlbl9hcmNoX2RvbWFpbmNvbmZpZyAqY29uZmlnKQo+ICB7 Cj4gQEAgLTE5MTksNyArMTcxNyw4IEBAIHN0YXRpYyB2b2lkIHNhdmVfc2VnbWVudHMoc3RydWN0 IHZjcHUgKnYpCj4gIAo+ICAjZGVmaW5lIHN3aXRjaF9rZXJuZWxfc3RhY2sodikgKCh2b2lkKTAp Cj4gIAo+IC1zdGF0aWMgdm9pZCBwYXJhdmlydF9jdHh0X3N3aXRjaF9mcm9tKHN0cnVjdCB2Y3B1 ICp2KQo+ICsvKiBOZWVkZWQgYnkgUFYgZ3Vlc3RzICovCj4gK3ZvaWQgcGFyYXZpcnRfY3R4dF9z d2l0Y2hfZnJvbShzdHJ1Y3QgdmNwdSAqdikKPiAgewoKQ291bGQgdGhlc2UgYmUgbW92ZWQgdXAg dG8gYXZvaWQgdGhlIGZvcndhcmQgZGVjbGFyYXRpb25zIGFib3ZlPwoKPiBkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L3B2L01ha2VmaWxlIGIveGVuL2FyY2gveDg2L3B2L01ha2VmaWxlCj4gaW5k ZXggZWE5NDU5OTQzOC4uMjczNzgyNGU4MSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvcHYv TWFrZWZpbGUKPiArKysgYi94ZW4vYXJjaC94ODYvcHYvTWFrZWZpbGUKPiBAQCAtMSwyICsxLDMg QEAKPiAgb2JqLXkgKz0gaHlwZXJjYWxsLm8KPiAgb2JqLWJpbi15ICs9IGRvbTBfYnVpbGQuaW5p dC5vCj4gK29iai15ICs9IGRvbWFpbi5vCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9k b21haW4uYyBiL3hlbi9hcmNoL3g4Ni9wdi9kb21haW4uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMDAwMC4uNTYyYzNkMDNmNQo+IC0tLSAvZGV2L251bGwKPiArKysgYi94 ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMKPiBAQCAtMCwwICsxLDIzMiBAQAo+ICsvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCj4gKyAqIGFyY2gveDg2L3B2L2RvbWFpbi5jCj4gKyAqCj4gKyAqIFBWIGRv bWFpbiBoYW5kbGluZwo+ICsgKi8KPiArCj4gKy8qCj4gKyAqICBDb3B5cmlnaHQgKEMpIDE5OTUg IExpbnVzIFRvcnZhbGRzCj4gKyAqCj4gKyAqICBQZW50aXVtIElJSSBGWFNSLCBTU0Ugc3VwcG9y dAo+ICsgKiAgR2FyZXRoIEh1Z2hlcyA8Z2FyZXRoQHZhbGludXguY29tPiwgTWF5IDIwMDAKPiAr ICovCj4gKwo+ICsjaW5jbHVkZSA8eGVuL2RvbWFpbl9wYWdlLmg+Cj4gKyNpbmNsdWRlIDx4ZW4v ZXJybm8uaD4KPiArI2luY2x1ZGUgPHhlbi9saWIuaD4KPiArI2luY2x1ZGUgPHhlbi9zY2hlZC5o Pgo+ICsKPiArc3RhdGljIHZvaWQgbm9yZXR1cm4gY29udGludWVfbm9uaWRsZV9kb21haW4oc3Ry dWN0IHZjcHUgKnYpCj4gK3sKPiArICAgIGNoZWNrX3dha2V1cF9mcm9tX3dhaXQoKTsKPiArICAg IG1hcmtfcmVnc19kaXJ0eShndWVzdF9jcHVfdXNlcl9yZWdzKCkpOwo+ICsgICAgcmVzZXRfc3Rh Y2tfYW5kX2p1bXAocmV0X2Zyb21faW50cik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgc2V0dXBf Y29tcGF0X2w0KHN0cnVjdCB2Y3B1ICp2KQo+ICt7Cj4gKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpw ZzsKPiArICAgIGw0X3BnZW50cnlfdCAqbDR0YWI7Cj4gKwo+ICsgICAgcGcgPSBhbGxvY19kb21o ZWFwX3BhZ2Uodi0+ZG9tYWluLCBNRU1GX25vX293bmVyKTsKPiArICAgIGlmICggcGcgPT0gTlVM TCApCj4gKyAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsgICAgLyogVGhpcyBwYWdlIG5l ZWRzIHRvIGxvb2sgbGlrZSBhIHBhZ2V0YWJsZSBzbyB0aGF0IGl0IGNhbiBiZSBzaGFkb3dlZCAq LwoKLgoKPiArICAgIHBnLT51LmludXNlLnR5cGVfaW5mbyA9IFBHVF9sNF9wYWdlX3RhYmxlfFBH VF92YWxpZGF0ZWR8MTsKCk1vcmUgc3BhY2VzIHBsZWFzZS4KCj4gKwo+ICsgICAgbDR0YWIgPSBf X21hcF9kb21haW5fcGFnZShwZyk7Cj4gKyAgICBjbGVhcl9wYWdlKGw0dGFiKTsKCkkga25vdyB0 aGlzIHBhdGNoIGlzIG9ubHkgY29kZSBtb3Rpb24sIGJ1dCBJIHJlYWxseSB0aGluayBpdCB3b3Vs ZCBiZQpzYWZlciB0byBkZWZlciB0aGUgdHlwZV9pbmZvIHVwZGF0ZSB1bnRpbCBhZnRlciB3ZSBo YXZlIGNsZWFyZWQgdGhlIHBhZ2UuCgo+ICsgICAgaW5pdF9ndWVzdF9sNF90YWJsZShsNHRhYiwg di0+ZG9tYWluLCAxKTsKPiArICAgIHVubWFwX2RvbWFpbl9wYWdlKGw0dGFiKTsKPiArCj4gKyAg ICB2LT5hcmNoLmd1ZXN0X3RhYmxlID0gcGFnZXRhYmxlX2Zyb21fcGFnZShwZyk7Cj4gKyAgICB2 LT5hcmNoLmd1ZXN0X3RhYmxlX3VzZXIgPSB2LT5hcmNoLmd1ZXN0X3RhYmxlOwo+ICsKPiArICAg IHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCByZWxlYXNlX2NvbXBhdF9sNChzdHJ1 Y3QgdmNwdSAqdikKPiArewo+ICsgICAgaWYgKCAhcGFnZXRhYmxlX2lzX251bGwodi0+YXJjaC5n dWVzdF90YWJsZSkgKQo+ICsgICAgICAgIGZyZWVfZG9taGVhcF9wYWdlKHBhZ2V0YWJsZV9nZXRf cGFnZSh2LT5hcmNoLmd1ZXN0X3RhYmxlKSk7Cj4gKyAgICB2LT5hcmNoLmd1ZXN0X3RhYmxlID0g cGFnZXRhYmxlX251bGwoKTsKPiArICAgIHYtPmFyY2guZ3Vlc3RfdGFibGVfdXNlciA9IHBhZ2V0 YWJsZV9udWxsKCk7Cj4gK30KPiArCj4gK2ludCBzd2l0Y2hfY29tcGF0KHN0cnVjdCBkb21haW4g KmQpCj4gK3sKPiArICAgIHN0cnVjdCB2Y3B1ICp2Owo+ICsgICAgaW50IHJjOwo+ICsKPiArICAg IGlmICggaXNfaHZtX2RvbWFpbihkKSB8fCBkLT50b3RfcGFnZXMgIT0gMCApCj4gKyAgICAgICAg cmV0dXJuIC1FQUNDRVM7Cj4gKyAgICBpZiAoIGlzX3B2XzMyYml0X2RvbWFpbihkKSApCj4gKyAg ICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgZC0+YXJjaC5oYXNfMzJiaXRfc2hpbmZvID0gMTsK PiArICAgIGlmICggaXNfcHZfZG9tYWluKGQpICkKPiArICAgICAgICBkLT5hcmNoLmlzXzMyYml0 X3B2ID0gMTsKClRoaXMgaXNfcHZfZG9tYWluKCkgaXMgcmVkdW5kYW50LiAgSSBleHBlY3QgdGhp cyB3YXMgZmFsbG91dCBmcm9tCnJpcHBpbmcgUFZIIG91dC4KCj4gKwo+ICsgICAgZm9yX2VhY2hf dmNwdSggZCwgdiApCj4gKyAgICB7Cj4gKyAgICAgICAgcmMgPSBzZXR1cF9jb21wYXRfYXJnX3hs YXQodik7Cj4gKyAgICAgICAgaWYgKCAhcmMgKQo+ICsgICAgICAgICAgICByYyA9IHNldHVwX2Nv bXBhdF9sNCh2KTsKPiArCj4gKyAgICAgICAgaWYgKCByYyApCj4gKyAgICAgICAgICAgIGdvdG8g dW5kb19hbmRfZmFpbDsKClRoaXMgaXMgb2RkIHN0cnVjdHVyaW5nLiAgQ2FyZSB0byByZWFycmFu Z2UgaXQgd2l0aCB0d28gZ290bydzLCByYXRoZXIKdGhhbiBpbnZlcnRpbmcgdGhlIGZpcnN0IHJj IGNoZWNrPwoKPiArICAgIH0KPiArCj4gKyAgICBkb21haW5fc2V0X2FsbG9jX2JpdHNpemUoZCk7 Cj4gKyAgICByZWNhbGN1bGF0ZV9jcHVpZF9wb2xpY3koZCk7Cj4gKwo+ICsgICAgZC0+YXJjaC54 ODdfZmlwX3dpZHRoID0gNDsKPiArCj4gKyAgICByZXR1cm4gMDsKPiArCj4gKyB1bmRvX2FuZF9m YWlsOgo+ICsgICAgZC0+YXJjaC5pc18zMmJpdF9wdiA9IGQtPmFyY2guaGFzXzMyYml0X3NoaW5m byA9IDA7Cj4gKyAgICBmb3JfZWFjaF92Y3B1KCBkLCB2ICkKPiArICAgIHsKPiArICAgICAgICBm cmVlX2NvbXBhdF9hcmdfeGxhdCh2KTsKPiArICAgICAgICByZWxlYXNlX2NvbXBhdF9sNCh2KTsK PiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gcmM7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcHZf Y3JlYXRlX2dkdF9sZHRfbDF0YWIoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZjcHUgKnYpCj4g K3sKPiArICAgIHJldHVybiBjcmVhdGVfcGVyZG9tYWluX21hcHBpbmcoZCwgR0RUX1ZJUlRfU1RB UlQodiksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPDwgR0RUX0xE VF9WQ1BVX1NISUZULAoKVGhpcyBzaG91bGQgYmUgMXUsIHdoZW4gaW50cm9kdWNlZCBpbiBwYXRj aCAxLgoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+YXJjaC5wdl9k b21haW4uZ2R0X2xkdF9sMXRhYiwgTlVMTCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHB2X2Rl c3Ryb3lfZ2R0X2xkdF9sMXRhYihzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdikKPiAr ewo+ICsgICAgZGVzdHJveV9wZXJkb21haW5fbWFwcGluZyhkLCBHRFRfVklSVF9TVEFSVCh2KSwg MSA8PCBHRFRfTERUX1ZDUFVfU0hJRlQpOwo+ICt9Cj4gKwo+ICt2b2lkIHB2X3ZjcHVfZGVzdHJv eShzdHJ1Y3QgdmNwdSAqdikKPiArewo+ICsgICAgaWYgKCBpc19wdl8zMmJpdF92Y3B1KHYpICkK PiArICAgIHsKPiArICAgICAgICBmcmVlX2NvbXBhdF9hcmdfeGxhdCh2KTsKPiArICAgICAgICBy ZWxlYXNlX2NvbXBhdF9sNCh2KTsKPiArICAgIH0KPiArCj4gKyAgICBwdl9kZXN0cm95X2dkdF9s ZHRfbDF0YWIodi0+ZG9tYWluLCB2KTsKPiArICAgIHhmcmVlKHYtPmFyY2gucHZfdmNwdS50cmFw X2N0eHQpOwo+ICsgICAgdi0+YXJjaC5wdl92Y3B1LnRyYXBfY3R4dCA9IE5VTEw7Cj4gK30KPiAr Cj4gK2ludCBwdl92Y3B1X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUgKnYpCj4gK3sKPiArICAgIHN0 cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47Cj4gKyAgICBpbnQgcmM7Cj4gKwo+ICsgICAgQVNT RVJUKCFpc19pZGxlX2RvbWFpbihkKSk7Cj4gKwo+ICsgICAgc3Bpbl9sb2NrX2luaXQoJnYtPmFy Y2gucHZfdmNwdS5zaGFkb3dfbGR0X2xvY2spOwo+ICsKPiArICAgIHJjID0gcHZfY3JlYXRlX2dk dF9sZHRfbDF0YWIoZCwgdik7Cj4gKyAgICBpZiAoIHJjICkKPiArICAgICAgICBnb3RvIGRvbmU7 Cj4gKwo+ICsgICAgQlVJTERfQlVHX09OKE5SX1ZFQ1RPUlMgKiBzaXplb2YoKnYtPmFyY2gucHZf dmNwdS50cmFwX2N0eHQpID4KPiArICAgICAgICAgICAgICAgICBQQUdFX1NJWkUpOwo+ICsgICAg di0+YXJjaC5wdl92Y3B1LnRyYXBfY3R4dCA9IHh6YWxsb2NfYXJyYXkoc3RydWN0IHRyYXBfaW5m bywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5SX1ZF Q1RPUlMpOwo+ICsgICAgaWYgKCAhdi0+YXJjaC5wdl92Y3B1LnRyYXBfY3R4dCApCj4gKyAgICB7 Cj4gKyAgICAgICAgcmMgPSAtRU5PTUVNOwo+ICsgICAgICAgIGdvdG8gZG9uZTsKPiArICAgIH0K PiArCj4gKyAgICAvKiBQViBndWVzdHMgYnkgZGVmYXVsdCBoYXZlIGEgMTAwSHogdGlja2VyLiAq Lwo+ICsgICAgdi0+cGVyaW9kaWNfcGVyaW9kID0gTUlMTElTRUNTKDEwKTsKPiArCj4gKyAgICB2 LT5hcmNoLnB2X3ZjcHUuY3RybHJlZ1s0XSA9IHJlYWxfY3I0X3RvX3B2X2d1ZXN0X2NyNChtbXVf Y3I0X2ZlYXR1cmVzKTsKPiArCj4gKyAgICBpZiAoIGlzX3B2XzMyYml0X2RvbWFpbihkKSApCj4g KyAgICB7Cj4gKyAgICAgICAgaWYgKCAocmMgPSBzZXR1cF9jb21wYXRfYXJnX3hsYXQodikpICkK PiArICAgICAgICAgICAgZ290byBkb25lOwo+ICsKPiArICAgICAgICBpZiAoIChyYyA9IHNldHVw X2NvbXBhdF9sNCh2KSkgKQo+ICsgICAgICAgICAgICBnb3RvIGRvbmU7Cj4gKyAgICB9CgpOb3cg dGhlIGNvZGUgaXMgc3BsaXQgYXBhcnQgbGlrZSB0aGlzLCB0aGlzIGNvbnN0cnVjdCBsb29rcyBz dXNwaWNpb3VzLiAKSSBzdXBwb3NlIGl0IHByb2JhYmx5IGNvcGVzIHdpdGggdGhlIHRvb2xzdGFj ayB1c2luZwpYRU5fRE9NQ1RMX3NldF9hZGRyZXNzX3NpemUgYW5kIFhFTl9ET01DVExfbWF4X3Zj cHVzIGluIGVpdGhlciBvcmRlci4KCj4gKwo+ICsgZG9uZToKPiArICAgIGlmICggcmMgKQo+ICsg ICAgICAgIHB2X3ZjcHVfZGVzdHJveSh2KTsKPiArICAgIHJldHVybiByYzsKPiArfQo+ICsKPiAr dm9pZCBwdl9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKQo+ICt7Cj4gKyAgICBkZXN0 cm95X3BlcmRvbWFpbl9tYXBwaW5nKGQsIEdEVF9MRFRfVklSVF9TVEFSVCwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0RUX0xEVF9NQllURVMgPDwgKDIwIC0gUEFHRV9TSElGVCkp Owo+ICsgICAgeGZyZWUoZC0+YXJjaC5wdl9kb21haW4uY3B1aWRtYXNrcyk7Cj4gKyAgICBkLT5h cmNoLnB2X2RvbWFpbi5jcHVpZG1hc2tzID0gTlVMTDsKPiArICAgIGZyZWVfeGVuaGVhcF9wYWdl KGQtPmFyY2gucHZfZG9tYWluLmdkdF9sZHRfbDF0YWIpOwo+ICsgICAgZC0+YXJjaC5wdl9kb21h aW4uZ2R0X2xkdF9sMXRhYiA9IE5VTEw7Cj4gK30KPiArCj4gKwo+ICtleHRlcm4gdm9pZCBwYXJh dmlydF9jdHh0X3N3aXRjaF9mcm9tKHN0cnVjdCB2Y3B1ICp2KTsKPiArZXh0ZXJuIHZvaWQgcGFy YXZpcnRfY3R4dF9zd2l0Y2hfdG8oc3RydWN0IHZjcHUgKnYpOwo+ICsKPiAraW50IHB2X2RvbWFp bl9pbml0aWFsaXNlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBkb21jcl9mbGFncywK PiArICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4ZW5fYXJjaF9kb21haW5jb25maWcg KmNvbmZpZykKPiArewo+ICsgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmNoX2NzdyBwdl9jc3cg PSB7Cj4gKyAgICAgICAgLmZyb20gPSBwYXJhdmlydF9jdHh0X3N3aXRjaF9mcm9tLAo+ICsgICAg ICAgIC50byAgID0gcGFyYXZpcnRfY3R4dF9zd2l0Y2hfdG8sCj4gKyAgICAgICAgLnRhaWwgPSBj b250aW51ZV9ub25pZGxlX2RvbWFpbiwKPiArICAgIH07Cj4gKyAgICBpbnQgcmMgPSAtRU5PTUVN Owo+ICsKPiArICAgIGQtPmFyY2gucHZfZG9tYWluLmdkdF9sZHRfbDF0YWIgPQo+ICsgICAgICAg IGFsbG9jX3hlbmhlYXBfcGFnZXMoMCwgTUVNRl9ub2RlKGRvbWFpbl90b19ub2RlKGQpKSk7Cj4g KyAgICBpZiAoICFkLT5hcmNoLnB2X2RvbWFpbi5nZHRfbGR0X2wxdGFiICkKPiArICAgICAgICBn b3RvIGZhaWw7Cj4gKyAgICBjbGVhcl9wYWdlKGQtPmFyY2gucHZfZG9tYWluLmdkdF9sZHRfbDF0 YWIpOwo+ICsKPiArICAgIGlmICggbGV2ZWxsaW5nX2NhcHMgJiB+TENBUF9mYXVsdGluZyApCj4g KyAgICB7Cj4gKyAgICAgICAgZC0+YXJjaC5wdl9kb21haW4uY3B1aWRtYXNrcyA9IHhtYWxsb2Mo c3RydWN0IGNwdWlkbWFza3MpOwo+ICsgICAgICAgIGlmICggIWQtPmFyY2gucHZfZG9tYWluLmNw dWlkbWFza3MgKQo+ICsgICAgICAgICAgICBnb3RvIGZhaWw7Cj4gKyAgICAgICAgKmQtPmFyY2gu cHZfZG9tYWluLmNwdWlkbWFza3MgPSBjcHVpZG1hc2tfZGVmYXVsdHM7Cj4gKyAgICB9Cj4gKwo+ ICsgICAgcmMgPSBjcmVhdGVfcGVyZG9tYWluX21hcHBpbmcoZCwgR0RUX0xEVF9WSVJUX1NUQVJU LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RUX0xEVF9NQllURVMgPDwg KDIwIC0gUEFHRV9TSElGVCksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO VUxMLCBOVUxMKTsKPiArICAgIGlmICggcmMgKQo+ICsgICAgICAgIGdvdG8gZmFpbDsKPiArCj4g KyAgICBkLT5hcmNoLmN0eHRfc3dpdGNoID0gJnB2X2NzdzsKPiArCj4gKyAgICAvKiA2NC1iaXQg UFYgZ3Vlc3QgYnkgZGVmYXVsdC4gKi8KPiArICAgIGQtPmFyY2guaXNfMzJiaXRfcHYgPSBkLT5h cmNoLmhhc18zMmJpdF9zaGluZm8gPSAwOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICsKPiArICBm YWlsOgo+ICsgICAgcHZfZG9tYWluX2Rlc3Ryb3koZCk7Cj4gKwo+ICsgICAgcmV0dXJuIHJjOwo+ ICt9Cj4gKwo+ICsvKgo+ICsgKiBMb2NhbCB2YXJpYWJsZXM6Cj4gKyAqIG1vZGU6IEMKPiArICog Yy1maWxlLXN0eWxlOiAiQlNEIgo+ICsgKiBjLWJhc2ljLW9mZnNldDogNAo+ICsgKiB0YWItd2lk dGg6IDQKPiArICogaW5kZW50LXRhYnMtbW9kZTogbmlsCj4gKyAqIEVuZDoKPiArICovCj4gZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHYvZG9tYWluLmggYi94ZW4vaW5jbHVkZS9h c20teDg2L3B2L2RvbWFpbi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw MDAwLi42Mjg4YWUyNGRmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvcHYvZG9tYWluLmgKPiBAQCAtMCwwICsxLDMwIEBACj4gKy8qCj4gKyAqIHB2L2RvbWFpbi5o Cj4gKyAqCj4gKyAqIFBWIGd1ZXN0IGludGVyZmFjZSBkZWZpbml0aW9ucwo+ICsgKgo+ICsgKiBD b3B5cmlnaHQgKEMpIDIwMTcgV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KPiArICoKPiAr ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSwgdmVyc2lvbiAyLCBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Cj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K PiArICovCj4gKwo+ICsjaWZuZGVmIF9fWDg2X1BWX0RPTUFJTl9IX18KPiArI2RlZmluZSBfX1g4 Nl9QVl9ET01BSU5fSF9fCj4gKwoKI2lmZGVmIENPTkZJR19QVgoKPiArdm9pZCBwdl92Y3B1X2Rl c3Ryb3koc3RydWN0IHZjcHUgKnYpOwo+ICtpbnQgcHZfdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2 Y3B1ICp2KTsKPiArdm9pZCBwdl9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKTsKPiAr aW50IHB2X2RvbWFpbl9pbml0aWFsaXNlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBk b21jcl9mbGFncywKPiArICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4ZW5fYXJjaF9k b21haW5jb25maWcgKmNvbmZpZyk7CgojZWxzZQoKc3RhdGljIGlubGluZSB2b2lkIHB2X3ZjcHVf ZGVzdHJveShzdHJ1Y3QgdmNwdSAqdikge307CnN0YXRpYyBpbmxpbmUgaW50IHB2X3ZjcHVfaW5p dGlhbGlzZShzdHJ1Y3QgdmNwdSAqdikgeyByZXR1cm4KLUVPUE5PVFNVUFA7IH07CnN0YXRpYyBp bmxpbmUgdm9pZCBwdl9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKSB7fTsKc3RhdGlj IGlubGluZSBpbnQgcHZfZG9tYWluX2luaXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgaW50CmRvbWNyX2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCB4ZW5fYXJjaF9kb21haW5jb25maWcKKmNvbmZpZykgeyByZXR1cm4gLUVPUE5PVFNV UFA7IH0KCiNlbmRpZgoKUGxlYXNlIGNhbiB3ZSB0cnkgdG8gbWFrZSBuZXcgY29kZSBjb21wYXRp YmxlIHdpdGggZXZlbnR1YWxseSB0dXJuaW5nCm9mZiBDT05GSUdfUFYgYW5kIENPTkZJR19IVk0u Cgp+QW5kcmV3Cgo+ICsKPiArI2VuZGlmCS8qIF9fWDg2X1BWX0RPTUFJTl9IX18gKi8KCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK