From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Natarajan, Janakarajan" Subject: Re: [PATCH v2 04/10] x86/HVM/SVM: Add AVIC initialization code Date: Mon, 21 May 2018 13:41:34 -0500 Message-ID: References: <20180507210753.2280-1-Janakarajan.Natarajan@amd.com> <20180507210753.2280-5-Janakarajan.Natarajan@amd.com> <5AFC4E6302000078001C357F@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fKpkm-0004lt-2S for xen-devel@lists.xenproject.org; Mon, 21 May 2018 18:41:52 +0000 In-Reply-To: <5AFC4E6302000078001C357F@prv1-mh.provo.novell.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Jan Beulich , Janakarajan Natarajan Cc: Kevin Tian , Stefano Stabellini , Wei Liu , Jun Nakajima , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Suravee Suthikulpanit , xen-devel , Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org T24gNS8xNi8yMDE4IDEwOjI5IEFNLCBKYW4gQmV1bGljaCB3cm90ZToKPj4+PiBPbiAwNy4wNS4x OCBhdCAyMzowNywgPEphbmFrYXJhamFuLk5hdGFyYWphbkBhbWQuY29tPiB3cm90ZToKPj4gLS0t IC9kZXYvbnVsbAo+PiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9hdmljLmMKPj4gQEAgLTAs MCArMSwxOTAgQEAKPj4gKy8qCj4+ICsgKiBhdmljLmM6IGltcGxlbWVudHMgQU1EIEFkdmFuY2Vk IFZpcnR1YWwgSW50ZXJydXB0IENvbnRyb2xsZXIgKEFWSUMpIHN1cHBvcnQKPj4gKyAqIENvcHly aWdodCAoYykgMjAxOCwgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgo+PiArICoKPj4gKyAq IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5IGl0Cj4+ICsgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAo+PiArICogdmVyc2lvbiAyLCBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPj4gKyAqCj4+ICsgKiBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1 dCBXSVRIT1VUCj4+ICsgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKPj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKPj4g KyAqIG1vcmUgZGV0YWlscy4KPj4gKyAqCj4+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCj4+ICsg KiB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KPj4gKyAqLwo+PiArCj4+ICsjaW5jbHVkZSA8eGVuL2RvbWFpbl9wYWdlLmg+Cj4+ICsjaW5j bHVkZSA8eGVuL3NjaGVkLmg+Cj4+ICsjaW5jbHVkZSA8eGVuL3N0ZGJvb2wuaD4KPj4gKyNpbmNs dWRlIDxhc20vYWNwaS5oPgo+PiArI2luY2x1ZGUgPGFzbS9hcGljZGVmLmg+Cj4+ICsjaW5jbHVk ZSA8YXNtL2F0b21pYy5oPgo+PiArI2luY2x1ZGUgPGFzbS9ldmVudC5oPgo+PiArI2luY2x1ZGUg PGFzbS9odm0vZW11bGF0ZS5oPgo+PiArI2luY2x1ZGUgPGFzbS9odm0vbmVzdGVkaHZtLmg+Cj4+ ICsjaW5jbHVkZSA8YXNtL2h2bS9zdXBwb3J0Lmg+Cj4+ICsjaW5jbHVkZSA8YXNtL2h2bS9zdm0v YXZpYy5oPgo+PiArI2luY2x1ZGUgPGFzbS9odm0vdmxhcGljLmg+Cj4+ICsjaW5jbHVkZSA8YXNt L3AybS5oPgo+PiArI2luY2x1ZGUgPGFzbS9wYWdlLmg+Cj4gQXJlIGFsbCBvZiB0aGVzZSByZWFs bHkgbmVlZGVkPyBGb3IgZXhhbXBsZSwgeGVuL3N0ZGJvb2wuaCBpc24ndCBjb21tb25seQo+IGlu Y2x1ZGVkIGJ5IG5vbi1oZWFkZXIgZmlsZXMsIGJ1dCBpcyBpbnN0ZWFkIG9idGFpbmVkIGZyb20g eGVuL3R5cGVzLmguIFRoYXQKPiBoZWFkZXIsIGluIHR1cm4sIGlzIHJhcmVseSByZXF1aXJlZCB0 byBiZSBpbmNsdWRlZCBleHBsaWNpdGx5IGJ5IG5vbi1oZWFkZXJzCj4gYmVjYXVzZSBhbG1vc3Qg ZXZlcnkgaGVhZGVyIGFscmVhZHkgaW5jbHVkZXMgaXQgYW55d2F5Lgo+Cj4gSW4gc29tZSBjYXNl cyBJJ20gYWxzbyBub3QgY29udmluY2VkIHlvdSByZWFsbHkgbWVhbiBhc20vIChyYXRoZXIgdGhh bgo+IHhlbi8pLgo+Cj4+ICsvKiBOb3RlOiBDdXJyZW50IG1heCBpbmRleCBhbGxvd2VkIGZvciBw aHlzaWNhbCBBUElDIElEIHRhYmxlIGlzIDI1NS4gKi8KPj4gKyNkZWZpbmUgQVZJQ19QSFlfQVBJ Q19JRF9NQVggICAgR0VUX3hBUElDX0lEKEFQSUNfSURfTUFTSykKPiBJIHRoaW5rIGl0IHdhcyBw b2ludGVkIG91dCBiZWZvcmUgdGhhdCAibWF4IiBnZW5lcmFsbHkgbWVhbnMgdGhlIGxhc3QgdmFs aWQKPiB2YWx1ZSwgcmF0aGVyIHRoYW4gdGhlIGZpcnN0IGludmFsaWQgb25lLgo+Cj4+ICsvKgo+ PiArICogTm90ZToKPj4gKyAqIEN1cnJlbnRseSwgc3ZtLWF2aWMgbW9kZSBpcyBub3Qgc3VwcG9y dGVkIHdpdGggbmVzdGVkIHZpcnR1YWxpemF0aW9uLgo+PiArICogVGhlcmVmb3JlLCBpdCBpcyBu b3QgeWV0IGN1cnJlbnRseSBlbmFibGVkIGJ5IGRlZmF1bHQuIE9uY2UgdGhlIHN1cHBvcnQKPj4g KyAqIGlzIGluLXBsYWNlLCB0aGlzIHNob3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQuCj4+ICsg Ki8KPj4gK2Jvb2wgc3ZtX2F2aWMgPSBmYWxzZTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IGNoYXIg X19zZWN0aW9uKCIuYnNzLnBhZ2VfYWxpZ25lZC5jb25zdCIpIF9fYWxpZ25lZChQQUdFX1NJWkUp Cj4+ICsgICAgYXZpY19iYWNraW5nX3BhZ2VbUEFHRV9TSVpFXTsKPiBTbyBub3RoaW5nIGV2ZXIg d3JpdGVzIHRvIHRoaXMgcGFnZT8gSSB0aGluayBpdCB3b3VsZCBiZSBtaXNsZWFkaW5nIGlmIENQ VSBzaWRlCj4gd3JpdGVzIHdlcmUgcG9zc2libGUsIHlldCB0aGlzIHdhcyBtYXJrZWQgY29uc3Qu CgoKQVZJQyBoYXJkd2FyZSB1c2VzIHRoaXMgcGFnZSB0byBsb29rIGF0IHBlcm1pc3Npb24gYml0 cy4gQUZBSUssIG5vdGhpbmcgCndyaXRlcyB0byB0aGlzIHBhZ2UuCgoKPgo+IEFsc28gLSBkb2Vz IHRoaXMgcmVhbGx5IG5lZWQgYWxsb2NhdGluZyBzdGF0aWNhbGx5IChyYXRoZXIgdGhhbiBqdXN0 IG9uIHN5c3RlbXMKPiBhY3R1YWxseSBuZWVkaW5nIGl0KT8KCgpJJ20gbm90IGF3YXJlIG9mIHN5 c3RlbXMgdGhhdCBkb24ndCBoYXZlIHBlcm1pc3Npb24gYml0cy4KCgo+Cj4+ICtzdGF0aWMgc3Ry dWN0IGF2aWNfcGh5c2ljYWxfaWRfZW50cnkqCj4+ICthdmljX2dldF9waHlzaWNhbF9pZF9lbnRy eShzdHJ1Y3Qgc3ZtX2RvbWFpbiAqZCwgdW5zaWduZWQgaW50IGluZGV4KQo+IEkgdGhpbmsgdGhl IGZpcnN0IHBhcmFtZXRlciBjb3VsZCBiZSBjb25zdC4KPgo+PiAraW50IHN2bV9hdmljX2RvbV9p bml0KHN0cnVjdCBkb21haW4gKmQpCj4+ICt7Cj4+ICsgICAgaW50IHJldCA9IDA7Cj4+ICsgICAg c3RydWN0IHBhZ2VfaW5mbyAqcGc7Cj4+ICsKPj4gKyAgICBpZiAoICFzdm1fYXZpYyB8fCAhaGFz X3ZsYXBpYyhkKSApCj4+ICsgICAgICAgIHJldHVybiAwOwo+PiArCj4+ICsgICAgLyoKPj4gKyAg ICAgKiBOb3RlOgo+PiArICAgICAqIEFWSUMgaGFyZHdhcmUgd2Fsa3MgdGhlIG5lc3RlZCBwYWdl IHRhYmxlIHRvIGNoZWNrIHBlcm1pc3Npb25zLAo+PiArICAgICAqIGJ1dCBkb2VzIG5vdCB1c2Ug dGhlIFNQQSBhZGRyZXNzIHNwZWNpZmllZCBpbiB0aGUgbGVhZiBwYWdlCj4+ICsgICAgICogdGFi bGUgZW50cnkgc2luY2UgaXQgdXNlcyAgYWRkcmVzcyBpbiB0aGUgQVZJQ19CQUNLSU5HX1BBR0Ug cG9pbnRlcgo+PiArICAgICAqIGZpZWxkIG9mIHRoZSBWTUNCLiBUaGVyZWZvcmUsIHdlIHNldCB1 cCBhIGR1bW15IHBhZ2UgZm9yIEFQSUMuCj4+ICsgICAgICovCj4+ICsgICAgc2V0X21taW9fcDJt X2VudHJ5KGQsIHBhZGRyX3RvX3BmbihBUElDX0RFRkFVTFRfUEhZU19CQVNFKSwKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgX21mbih2aXJ0X3RvX21mbihhdmljX2JhY2tpbmdfcGFnZSkpLCBQ QUdFX09SREVSXzRLLAo+PiArICAgICAgICAgICAgICAgICAgICAgICBwMm1fYWNjZXNzX3J3KTsK Pj4gKwo+PiArICAgIC8qIEluaXQgQVZJQyBsb2dpY2FsIEFQSUMgSUQgdGFibGUgKi8KPj4gKyAg ICBwZyA9IGFsbG9jX2RvbWhlYXBfcGFnZShkLCBNRU1GX25vX293bmVyKTsKPiBEbyB5b3UgcmVh bGx5IG1lYW4gZCBoZXJlIChhbmQgYmVsb3cpIHJhdGhlciB0aGFuIE5VTEw/CgoKV291bGRuJ3Qg dGhlIGxvZ2ljYWwgYW5kIHBoeXNpY2FsIEFQSUMgSUQgdGFibGUgcGFnZXMgYmUgY29ubmVjdGVk IHRvIAp0aGUgZG9tYWluIGFuZCBpdHMgaGVhcD8KCgo+Cj4+ICsgICAgaWYgKCAhcGcgKQo+PiAr ICAgIHsKPj4gKyAgICAgICAgcmV0ID0gLUVOT01FTTsKPj4gKyAgICAgICAgZ290byBlcnJfb3V0 Owo+PiArICAgIH0KPj4gKyAgICBjbGVhcl9kb21haW5fcGFnZShwYWdlX3RvX21mbihwZykpOwo+ PiArICAgIGQtPmFyY2guaHZtX2RvbWFpbi5zdm0uYXZpY19sb2dpY2FsX2lkX3RhYmxlX3BnID0g cGc7Cj4+ICsgICAgZC0+YXJjaC5odm1fZG9tYWluLnN2bS5hdmljX2xvZ2ljYWxfaWRfdGFibGUg PSBfX21hcF9kb21haW5fcGFnZV9nbG9iYWwocGcpOwo+IEkgdGhpbmsgSSBoYXZlIHNhaWQgYmVm b3JlIHRoYXQgSSBkb24ndCB0aGluayB5b3UgbmVlZCB0byBzdG9yZSBib3RoCj4gdmlydHVhbCBh bmQgcGh5c2ljYWwgYWRkcmVzcyBoZXJlLCB1bmxlc3MgYm90aCBhcmUgdXNlZCBmcmVxdWVudGx5 Lgo+IFlvdSBlc3RhYmxpc2hpbmcgYSBnbG9iYWwgbWFwcGluZyBzdWdnZXN0cyB0byBtZSB0aGF0 IGl0J3MgdGhlCj4gdmlydHVhbCBhZGRyZXNzIHlvdSB3YW50IHRvIHN0b3JlIChNRk4gYW5kIGhl bmNlIHN0cnVjdCBwYWdlX2luZm8KPiBjYW4gYmUgZGVyaXZlZCBmcm9tIHRoZSBtYXBwaW5nIHZp YSBkb21haW5fcGFnZV9tYXBfdG9fbWZuKCksCj4gbGlrZSB5b3UgYWxyZWFkeSBkbyBmdXJ0aGVy IGRvd24pLgoKT2theS4KCgo+Cj4+ICtib29sIHN2bV9hdmljX3ZjcHVfZW5hYmxlZChjb25zdCBz dHJ1Y3QgdmNwdSAqdikKPj4gK3sKPj4gKyAgICBjb25zdCBzdHJ1Y3QgYXJjaF9zdm1fc3RydWN0 ICpzID0gJnYtPmFyY2guaHZtX3N2bTsKPj4gKyAgICBjb25zdCBzdHJ1Y3Qgdm1jYl9zdHJ1Y3Qg KnZtY2IgPSBzLT52bWNiOwo+PiArCj4+ICsgICAgcmV0dXJuIHZtY2ItPl92aW50ci5maWVsZHMu YXZpY19lbmFibGU7Cj4gUGxlYXNlIGRvbid0IHVzZSBleGNlc3MgbG9jYWwgdmFyaWFibGVzIChi b3RoIG9mIHRoZW0gYXJlIHVzZWQganVzdCBvbmNlLAo+IGFuZCBJJ20gc3VyZSB5b3UgY291bGQg Z2V0IGF3YXkgd2l0aCBqdXN0IG9uZSBvZiB0aGUgdHdvIFtvciBub25lIGF0IGFsbF0KPiB3aXRo b3V0IGJyZWFraW5nIHRoZSBsaW5lIGxlbmd0aCBsaW1pdCkuCj4KPiBBbHNvIHNob3VsZG4ndCB0 aGlzIGJlIHZtY2JfZ2V0X3ZpbnRyKCk/CgpZZXMuIFRoYXQgc2hvdWxkIGJlIHZtY2JfZ2V0X3Zp bnRyKCkuCgoKPgo+PiAraW50IHN2bV9hdmljX2luaXRfdm1jYihzdHJ1Y3QgdmNwdSAqdikKPj4g K3sKPj4gKyAgICB1MzIgYXBpY19pZDsKPj4gKyAgICBzdHJ1Y3QgYXJjaF9zdm1fc3RydWN0ICpz ID0gJnYtPmFyY2guaHZtX3N2bTsKPj4gKyAgICBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IgPSBz LT52bWNiOwo+PiArICAgIHN0cnVjdCBzdm1fZG9tYWluICpkID0gJnYtPmRvbWFpbi0+YXJjaC5o dm1fZG9tYWluLnN2bTsKPj4gKyAgICBjb25zdCBzdHJ1Y3QgdmxhcGljICp2bGFwaWMgPSB2Y3B1 X3ZsYXBpYyh2KTsKPj4gKyAgICBzdHJ1Y3QgYXZpY19waHlzaWNhbF9pZF9lbnRyeSAqZW50cnk7 Cj4+ICsKPj4gKyAgICBpZiAoICFzdm1fYXZpYyB8fCAhaGFzX3ZsYXBpYyh2LT5kb21haW4pICkK Pj4gKyAgICAgICAgcmV0dXJuIDA7Cj4+ICsKPj4gKyAgICBpZiAoICF2bGFwaWMgfHwgIXZsYXBp Yy0+cmVnc19wYWdlICkKPj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gKyAgICBh cGljX2lkID0gdmxhcGljX3JlZ19yZWFkKHZjcHVfdmxhcGljKHYpLCBBUElDX0lEKTsKPiBXaHkg Y2FuJ3QgdGhpcyBiZSB2bGFwaWNfZ2V0X3JlZygpPwo+Cj4+ICsgICAgcy0+YXZpY19sYXN0X3Bo eV9pZCA9IGF2aWNfZ2V0X3BoeXNpY2FsX2lkX2VudHJ5KGQsIEdFVF94QVBJQ19JRChhcGljX2lk KSk7Cj4gWW91IGRvbid0IGFwcGVhciB0byByZWFkIHRoaXMgdmFsdWUgb3V0c2lkZSBvZiB0aGlz IGZ1bmN0aW9uLiBQbGVhc2Ugc3RvcmUKPiB2YWx1ZXMgaW4gc3RydWN0IGRvbWFpbiAvIHN0cnVj dCB2Y3B1IG9ubHkgaWYgeW91IGluIGZhY3QgcmVhZCB0aGVtLCBhbmQKPiBpZiB0aGVpciBjYWxj dWxhdGlvbiBpc24ndCB0cml2aWFsLgo+Cj4gSSBhbHNvIGRvbid0IGFwcGVhciB0byB1bmRlcnN0 YW5kIHRoZSBwdXJwb3NlIG9mIHRoZSAibGFzdCIgaW4gdGhlIG5hbWUuCgpJIGNhbiByZW1vdmUg dGhpcyBmcm9tIHRoZSBzdHJ1Y3QuCgoKPgo+PiArICAgIGlmICggIXMtPmF2aWNfbGFzdF9waHlf aWQgKQo+PiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArICAgIHZtY2ItPmF2aWNf YmtfcGdfcGEgPSBwYWdlX3RvX21hZGRyKHZsYXBpYy0+cmVnc19wYWdlKTsKPj4gKyAgICB2bWNi LT5hdmljX2xvZ2ljYWxfaWRfdGFibGVfcGEgPSBtZm5fdG9fbWFkZHIoZG9tYWluX3BhZ2VfbWFw X3RvX21mbihkLT5hdmljX2xvZ2ljYWxfaWRfdGFibGUpKTsKPj4gKyAgICB2bWNiLT5hdmljX3Bo eXNpY2FsX2lkX3RhYmxlX3BhID0gbWZuX3RvX21hZGRyKGRvbWFpbl9wYWdlX21hcF90b19tZm4o ZC0+YXZpY19waHlzaWNhbF9pZF90YWJsZSkpOwo+PiArCj4+ICsgICAgLyogU2V0IFBoeXNpY2Fs IElEIFRhYmxlIFBvaW50ZXIgWzc6MF0gdG8gbWF4IGFwaWMgaWQgb2YgdGhlIGRvbWFpbiAqLwo+ PiArICAgIHZtY2ItPmF2aWNfcGh5c2ljYWxfaWRfdGFibGVfcGEgfD0gKHYtPmRvbWFpbi0+bWF4 X3ZjcHVzICogMikgJiAweEZGOwo+PiArCj4+ICsgICAgZW50cnkgPSBzLT5hdmljX2xhc3RfcGh5 X2lkOwo+PiArICAgIGVudHJ5LT5ia19wZ19wdHJfbWZuID0gKHZtY2ItPmF2aWNfYmtfcGdfcGEp ID4+IFBBR0VfU0hJRlQ7Cj4gUGxlYXNlIGRvbid0IG9wZW4tY29kZSBwYWRkcl90b19wZm4oKSAv IG1hZGRyX3RvX21mbigpLgo+Cj4+IEBAIC0yMTUsNiArMjE2LDggQEAgc3RhdGljIGludCBjb25z dHJ1Y3Rfdm1jYihzdHJ1Y3QgdmNwdSAqdikKPj4gICAgICAgICAgICAgICB2bWNiLT5fcGF1c2Vf ZmlsdGVyX3RocmVzaCA9IFNWTV9QQVVTRVRIUkVTSF9JTklUOwo+PiAgICAgICB9Cj4+ICAgCj4+ ICsgICAgc3ZtX2F2aWNfaW5pdF92bWNiKHYpOwo+IFRoaXMgZnVuY3Rpb24gbWF5IGZhaWwuCj4K Pj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bGFwaWMuYwo+PiArKysgYi94ZW4vYXJjaC94ODYv aHZtL3ZsYXBpYy5jCj4+IEBAIC0xNTk3LDYgKzE1OTcsMTAgQEAgaW50IHZsYXBpY19pbml0KHN0 cnVjdCB2Y3B1ICp2KQo+PiAgIAo+PiAgICAgICBpZiAodmxhcGljLT5yZWdzX3BhZ2UgPT0gTlVM TCkKPj4gICAgICAgewo+PiArICAgICAgICAvKgo+PiArICAgICAgICAgKiBTVk0gQVZJQyBkZXBl bmRzIG9uIHRoZSB2bGFwaWMtPnJlZ3NfcGFnZSBiZWluZyBhIGZ1bGwKPj4gKyAgICAgICAgICog cGFnZSBhbGxvY2F0aW9uIGFzIGl0IGlzIGFsc28gdXNlZCBmb3IgdkFQSUMgYmFja2luZyBwYWdl Lgo+PiArICAgICAgICAgKi8KPj4gICAgICAgICAgIHZsYXBpYy0+cmVnc19wYWdlID0gYWxsb2Nf ZG9taGVhcF9wYWdlKHYtPmRvbWFpbiwgTUVNRl9ub19vd25lcik7Cj4gSSdtIG5vdCBjb252aW5j ZWQgb2YgdGhlIHV0aWxpdHkgb2YgdGhpcyBjb21tZW50IC0gaWlyYyB0aGUgc2FtZSBpcyB0cnVl IG9uIHRoZQo+IFZNWCBzaWRlIChhbmQgdGhlcmUgd2FzIG5vIHNpbWlsYXIgY29tbWVudCBhZGRl ZCBoZXJlIGF0IHRoZSB0aW1lKS4KPgo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3hlbi9pbmNs dWRlL2FzbS14ODYvaHZtL3N2bS9hdmljLmgKPj4gQEAgLTAsMCArMSwzOSBAQAo+PiArI2lmbmRl ZiBfU1ZNX0FWSUNfSF8KPj4gKyNkZWZpbmUgX1NWTV9BVklDX0hfCj4+ICsKPj4gKyNpbmNsdWRl IDx4ZW4vY29tcGlsZXIuaD4KPiBZb3UgbWVhbiB4ZW4vdHlwZXMuaCBoZXJlLCBvciBlbHNlIC4u Lgo+Cj4+ICtlbnVtIGF2aWNfaW5jbXBfaXBpX2Vycl9jb2RlIHsKPj4gKyAgICBBVklDX0lOQ01Q X0lQSV9FUlJfSU5WQUxJRF9JTlRfVFlQRSwKPj4gKyAgICBBVklDX0lOQ01QX0lQSV9FUlJfVEFS R0VUX05PVF9SVU4sCj4+ICsgICAgQVZJQ19JTkNNUF9JUElfRVJSX0lOVl9UQVJHRVQsCj4+ICsg ICAgQVZJQ19JTkNNUF9JUElfRVJSX0lOVl9CS19QQUdFLAo+PiArfTsKPj4gKwo+PiArdHlwZWRl ZiB1bmlvbiBhdmljX2xvZ2ljYWxfaWRfZW50cnkgewo+PiArICAgIHUzMiByYXc7Cj4gLi4uIHUz MiAod2hpY2ggcmVhbGx5IHNob3VsZCBiZSB1aW50MzJfdCAtIHBsZWFzZSByZXBsYWNlIHRob3Vn aG91dCB0aGUgc2VyaWVzKQo+IG1heSBub3QgYmUgYXZhaWxhYmxlIGhlcmUuCgpPa2F5LiBJIGNh biBjaGFuZ2UgaXQuCgpUaGFua3MsCkphbmFrCgo+Cj4+ICsgICAgc3RydWN0IF9fcGFja2VkIHsK Pj4gKyAgICAgICAgdTMyIGd1ZXN0X3BoeV9hcGljX2lkIDogODsKPj4gKyAgICAgICAgdTMyIHJl cyAgICAgICAgICAgICAgIDogMjM7Cj4+ICsgICAgICAgIHUzMiB2YWxpZCAgICAgICAgICAgICA6 IDE7Cj4+ICsgICAgfTsKPj4gK30gYXZpY19sb2dpY2FsX2lkX2VudHJ5X3Q7Cj4+ICsKPj4gK3N0 cnVjdCBfX3BhY2tlZCBhdmljX3BoeXNpY2FsX2lkX2VudHJ5IHsKPj4gKyAgICAgICAgdTY0IGhv c3RfcGh5X2FwaWNfaWQgIDogODsKPj4gKyAgICAgICAgdTY0IHJlczEgICAgICAgICAgICAgIDog NDsKPj4gKyAgICAgICAgdTY0IGJrX3BnX3B0cl9tZm4gICAgIDogNDA7Cj4+ICsgICAgICAgIHU2 NCByZXMyICAgICAgICAgICAgICA6IDEwOwo+PiArICAgICAgICB1NjQgaXNfcnVubmluZyAgICAg ICAgOiAxOwo+PiArICAgICAgICB1NjQgdmFsaWQgICAgICAgICAgICAgOiAxOwo+PiArfTsKPj4g Kwo+PiArZXh0ZXJuIGJvb2wgc3ZtX2F2aWM7Cj4+ICsKPj4gK2ludCBzdm1fYXZpY19kb21faW5p dChzdHJ1Y3QgZG9tYWluICpkKTsKPj4gK3ZvaWQgc3ZtX2F2aWNfZG9tX2Rlc3Ryb3koc3RydWN0 IGRvbWFpbiAqZCk7Cj4+ICsKPj4gK2Jvb2wgc3ZtX2F2aWNfdmNwdV9lbmFibGVkKGNvbnN0IHN0 cnVjdCB2Y3B1ICp2KTsKPj4gK2ludCBzdm1fYXZpY19pbml0X3ZtY2Ioc3RydWN0IHZjcHUgKnYp Owo+IFRoZXNlIGRlY2xhcmF0aW9ucyBldmVuIG5lZWQgeGVuL3NjaGVkLmggaW4gcGxhY2Ugb2Yg KG9yIHRvZ2V0aGVyIHdpdGgpCj4geGVuL3R5cGVzLmguCj4KPiBKYW4KPgoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj dC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=