From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [RFC XEN PATCH 11/16] tools/libacpi: load ACPI built by the device model Date: Fri, 27 Jan 2017 16:40:43 -0500 Message-ID: <20170127214042.GF18581@localhost.localdomain> References: <20161010003235.4213-1-haozhong.zhang@intel.com> <20161010003235.4213-12-haozhong.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20161010003235.4213-12-haozhong.zhang@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Haozhong Zhang Cc: Wei Liu , Andrew Cooper , Ian Jackson , xen-devel@lists.xen.org, Jan Beulich , Xiao Guangrong List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBPY3QgMTAsIDIwMTYgYXQgMDg6MzI6MzBBTSArMDgwMCwgSGFvemhvbmcgWmhhbmcg d3JvdGU6Cj4gQUNQSSB0YWJsZXMgYnVpbHQgYnkgdGhlIGRldmljZSBtb2RlbCwgd2hvc2Ugc2ln bmF0dXJlcyBkbyBub3QKPiBjb25mbGljdCB3aXRoIHRhYmxlcyBidWlsdCBieSBYZW4gKGV4Y2Vw dCBTU0RUKSwgYXJlIGxvYWRlZCBhZnRlciBBQ1BJCj4gdGFibGVzIGJ1aWx0IGJ5IFhlbi4KPiAK PiBBQ1BJIG5hbWVzcGFjZSBkZXZpY2VzIGJ1aWx0IGJ5IHRoZSBkZXZpY2UgbW9kZWwsIHdob3Nl IG5hbWVzIGRvIG5vdAo+IGNvbmZsaWN0IHdpdGggZGV2aWNlcyBidWlsdCBieSBYZW4sIGFyZSBh c3NlbWJsZWQgYW5kIHBsYWNlZCBpbiBTU0RUcwo+IGFmdGVyIEFDUEkgdGFibGVzIGJ1aWx0IGJ5 IFhlbi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBIYW96aG9uZyBaaGFuZyA8aGFvemhvbmcuemhhbmdA aW50ZWwuY29tPgo+IC0tLQo+IENjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Cj4g Q2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cj4gQ2M6IElhbiBK YWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgo+IENjOiBXZWkgTGl1IDx3ZWkubGl1 MkBjaXRyaXguY29tPgo+IC0tLQo+ICB0b29scy9maXJtd2FyZS9odm1sb2FkZXIvdXRpbC5jIHwg IDEyICsrKwo+ICB0b29scy9saWJhY3BpL2FjcGkyXzAuaCAgICAgICAgIHwgICAyICsKPiAgdG9v bHMvbGliYWNwaS9idWlsZC5jICAgICAgICAgICB8IDIxNiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4gIHRvb2xzL2xpYmFjcGkvbGliYWNwaS5oICAgICAgICAgfCAg IDUgKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDIzNSBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdp dCBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci91dGlsLmMgYi90b29scy9maXJtd2FyZS9odm1s b2FkZXIvdXRpbC5jCj4gaW5kZXggZGJhOTU0YS4uZTY1MzBjZCAxMDA2NDQKPiAtLS0gYS90b29s cy9maXJtd2FyZS9odm1sb2FkZXIvdXRpbC5jCj4gKysrIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9h ZGVyL3V0aWwuYwo+IEBAIC05OTgsNiArOTk4LDE4IEBAIHZvaWQgaHZtbG9hZGVyX2FjcGlfYnVp bGRfdGFibGVzKHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnLAo+ICAgICAgaWYgKCAhc3RybmNt cCh4ZW5zdG9yZV9yZWFkKCJwbGF0Zm9ybS9hY3BpX3M0IiwgIjEiKSwgIjEiLCAxKSAgKQo+ICAg ICAgICAgIGNvbmZpZy0+dGFibGVfZmxhZ3MgfD0gQUNQSV9IQVNfU1NEVF9TNDsKPiAgCj4gKyAg ICBzID0geGVuc3RvcmVfcmVhZChIVk1fWFNfRE1fQUNQSV9BRERSRVNTLCBOVUxMKTsKPiArICAg IGlmICggcyApCj4gKyAgICB7Cj4gKyAgICAgICAgY29uZmlnLT5kbS5hZGRyID0gc3RydG9sbChz LCBOVUxMLCAwKTsKPiArCj4gKyAgICAgICAgcyA9IHhlbnN0b3JlX3JlYWQoSFZNX1hTX0RNX0FD UElfTEVOR1RILCBOVUxMKTsKPiArICAgICAgICBpZiAoIHMgKQo+ICsgICAgICAgICAgICBjb25m aWctPmRtLmxlbmd0aCA9IHN0cnRvbGwocywgTlVMTCwgMCk7Cj4gKyAgICAgICAgZWxzZQo+ICsg ICAgICAgICAgICBjb25maWctPmRtLmFkZHIgPSAwOwo+ICsgICAgfQo+ICsKPiAgICAgIGNvbmZp Zy0+dGFibGVfZmxhZ3MgfD0gKEFDUElfSEFTX1RDUEEgfCBBQ1BJX0hBU19JT0FQSUMgfCBBQ1BJ X0hBU19XQUVUKTsKPiAgCj4gICAgICBjb25maWctPnRpc19oZHIgPSAodWludDE2X3QgKilBQ1BJ X1RJU19IRFJfQUREUkVTUzsKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGliYWNwaS9hY3BpMl8wLmgg Yi90b29scy9saWJhY3BpL2FjcGkyXzAuaAo+IGluZGV4IDc3NWViN2EuLjc0MTQ0NzAgMTAwNjQ0 Cj4gLS0tIGEvdG9vbHMvbGliYWNwaS9hY3BpMl8wLmgKPiArKysgYi90b29scy9saWJhY3BpL2Fj cGkyXzAuaAo+IEBAIC00MzAsNiArNDMwLDcgQEAgc3RydWN0IGFjcGlfMjBfc2xpdCB7Cj4gICNk ZWZpbmUgQUNQSV8yXzBfV0FFVF9TSUdOQVRVUkUgQVNDSUkzMignVycsJ0EnLCdFJywnVCcpCj4g ICNkZWZpbmUgQUNQSV8yXzBfU1JBVF9TSUdOQVRVUkUgQVNDSUkzMignUycsJ1InLCdBJywnVCcp Cj4gICNkZWZpbmUgQUNQSV8yXzBfU0xJVF9TSUdOQVRVUkUgQVNDSUkzMignUycsJ0wnLCdJJywn VCcpCj4gKyNkZWZpbmUgQUNQSV8yXzBfU1NEVF9TSUdOQVRVUkUgQVNDSUkzMignUycsJ1MnLCdE JywnVCcpCj4gIAo+ICAvKgo+ICAgKiBUYWJsZSByZXZpc2lvbiBudW1iZXJzLgo+IEBAIC00NDUs NiArNDQ2LDcgQEAgc3RydWN0IGFjcGlfMjBfc2xpdCB7Cj4gICNkZWZpbmUgQUNQSV8xXzBfRkFE VF9SRVZJU0lPTiAweDAxCj4gICNkZWZpbmUgQUNQSV8yXzBfU1JBVF9SRVZJU0lPTiAweDAxCj4g ICNkZWZpbmUgQUNQSV8yXzBfU0xJVF9SRVZJU0lPTiAweDAxCj4gKyNkZWZpbmUgQUNQSV8yXzBf U1NEVF9SRVZJU0lPTiAweDAyCj4gIAo+ICAjcHJhZ21hIHBhY2sgKCkKPiAgCj4gZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYmFjcGkvYnVpbGQuYyBiL3Rvb2xzL2xpYmFjcGkvYnVpbGQuYwo+IGluZGV4 IDQ3ZGFlMDEuLjgyOWEzNjUgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGliYWNwaS9idWlsZC5jCj4g KysrIGIvdG9vbHMvbGliYWNwaS9idWlsZC5jCj4gQEAgLTIwLDYgKzIwLDcgQEAKPiAgI2luY2x1 ZGUgInNzZHRfczQuaCIKPiAgI2luY2x1ZGUgInNzZHRfdHBtLmgiCj4gICNpbmNsdWRlICJzc2R0 X3BtLmgiCj4gKyNpbmNsdWRlICJhbWxfYnVpbGQuaCIKPiAgI2luY2x1ZGUgPHhlbi9odm0vaHZt X2luZm9fdGFibGUuaD4KPiAgI2luY2x1ZGUgPHhlbi9odm0vaHZtX3hzX3N0cmluZ3MuaD4KPiAg I2luY2x1ZGUgPHhlbi9odm0vcGFyYW1zLmg+Cj4gQEAgLTU1LDYgKzU2LDM0IEBAIHN0cnVjdCBh Y3BpX2luZm8gewo+ICAgICAgdWludDY0X3QgcGNpX2hpX21pbiwgcGNpX2hpX2xlbjsgLyogMjQs IDMyIC0gUENJIEkvTyBob2xlIGJvdW5kYXJpZXMgKi8KPiAgfTsKPiAgCj4gKyNkZWZpbmUgRE1f QUNQSV9CTE9CX1RZUEVfVEFCTEUgMCAvKiBBQ1BJIHRhYmxlICovCj4gKyNkZWZpbmUgRE1fQUNQ SV9CTE9CX1RZUEVfTlNERVYgMSAvKiBBTUwgZGVmaW5pdGlvbiBvZiBhbiBBQ1BJIG5hbWVzcGFj ZSBkZXZpY2UgKi8KPiArCj4gKy8qIEFDUEkgdGFibGVzIG9mIGZvbGxvd2luZyBzaWduYXR1cmVz IHNob3VsZCBub3QgYXBwZWFyIGluIERNIEFDUEkgKi8KCkl0IHdvdWxkIGJlIGdvb2QgdG8gaGF2 ZSBzb21lIGZvcm0gb2YgYnVpbGQgY2hlY2sgdG8gY2hlY2sgYWdhaW5zdAp0aGlzIGxpc3QuLgo+ ICtzdGF0aWMgY29uc3QgdWludDY0X3QgZG1fYWNwaV9zaWduYXR1cmVfYmxhY2tsaXN0W10gPSB7 Cj4gKyAgICBBQ1BJXzJfMF9SU0RQX1NJR05BVFVSRSwKPiArICAgIEFDUElfMl8wX0ZBQ1NfU0lH TkFUVVJFLAo+ICsgICAgQUNQSV8yXzBfRkFEVF9TSUdOQVRVUkUsCj4gKyAgICBBQ1BJXzJfMF9N QURUX1NJR05BVFVSRSwKPiArICAgIEFDUElfMl8wX1JTRFRfU0lHTkFUVVJFLAo+ICsgICAgQUNQ SV8yXzBfWFNEVF9TSUdOQVRVUkUsCj4gKyAgICBBQ1BJXzJfMF9UQ1BBX1NJR05BVFVSRSwKPiAr ICAgIEFDUElfMl8wX0hQRVRfU0lHTkFUVVJFLAo+ICsgICAgQUNQSV8yXzBfV0FFVF9TSUdOQVRV UkUsCj4gKyAgICBBQ1BJXzJfMF9TUkFUX1NJR05BVFVSRSwKPiArICAgIEFDUElfMl8wX1NMSVRf U0lHTkFUVVJFLAo+ICt9Owo+ICsKPiArLyogQUNQSSBuYW1lc3BhY2UgZGV2aWNlcyBvZiBmb2xs b3dpbmcgbmFtZXMgc2hvdWxkIG5vdCBhcHBlYXIgaW4gRE0gQUNQSSAqLwo+ICtzdGF0aWMgY29u c3QgY2hhciAqZG1fYWNwaV9kZXZuYW1lX2JsYWNrbGlzdFtdID0gewo+ICsgICAgIk1FTTAiLAo+ ICsgICAgIlBDSTAiLAo+ICsgICAgIkFDIiwKPiArICAgICJCQVQwIiwKPiArICAgICJCQVQxIiwK PiArICAgICJUUE0iLAoKLi4gYW5kIHRoaXMgb25lLgoKQnV0IEkgYW0gbm90IGV2ZW4gc3VyZSBo b3cgb25lIHdvdWxkIGRvIHRoYXQ/CgpQZXJoYXBzIGFkZCBhIGJpZyB3YXJuaW5nOgoKIk1ha2Ug c3VyZSB0byBhZGQgeW91ciB0YWJsZSBuYW1lIGlmIHlvdSB0aGlzIGNvZGUgKGxpYmFjcGkpIGlz CmNvbnN0cnVjdGluZyBpdC4gIj8KCk9yIG1heWJlIGhhdmUgc29tZSAncmVnaXN0ZXJfYWNwaV90 YWJsZScgZnVuY3Rpb24gd2hpY2ggd2lsbCBleHBhbmQKdGhpcyBibGFja2xpc3Q/Cgo+ICt9Owo+ ICsKPiAgc3RhdGljIHZvaWQgc2V0X2NoZWNrc3VtKAo+ICAgICAgdm9pZCAqdGFibGUsIHVpbnQz Ml90IGNoZWNrc3VtX29mZnNldCwgdWludDMyX3QgbGVuZ3RoKQo+ICB7Cj4gQEAgLTMzOSw2ICsz NjgsMTkwIEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3Bhc3N0aHJvdWdoX3RhYmxlcyhzdHJ1Y3Qg YWNwaV9jdHh0ICpjdHh0LAo+ICAgICAgcmV0dXJuIG5yX2FkZGVkOwo+ICB9Cj4gIAo+ICsjZGVm aW5lIEFSUkFZX1NJWkUoYSkgKHNpemVvZihhKSAvIHNpemVvZihhWzBdKSkKClRoYXQgbWF5IHdh bnQgdG8gZ28gbGliYWNwaS5oID8KPiArCj4gK3N0YXRpYyBpbnQgY2hlY2tfc2lnbmF0dXJlX2Nv bGxpc2lvbih1aW50NjRfdCBzaWcpCgpib29sCj4gK3sKPiArICAgIGludCBpOwoKdW5zaWduZWQg aW50Cgo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRtX2FjcGlfc2lnbmF0dXJl X2JsYWNrbGlzdCk7IGkrKyApCj4gKyAgICB7Cj4gKyAgICAgICAgaWYgKCBzaWcgPT0gZG1fYWNw aV9zaWduYXR1cmVfYmxhY2tsaXN0W2ldICkKPiArICAgICAgICAgICAgcmV0dXJuIDE7CgpyZXR1 cm4gdHJ1ZQoKPiArICAgIH0KPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IGNoZWNrX2Rldm5hbWVfY29sbGlzaW9uKGNvbnN0IGNoYXIgKm5hbWUpCgpib29sCj4gK3sKPiAr ICAgIGludCBpOwoKdW5zaWduZWQgaW50Cgo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9T SVpFKGRtX2FjcGlfZGV2bmFtZV9ibGFja2xpc3QpOyBpKysgKQo+ICsgICAgewo+ICsgICAgICAg IGlmICggIXN0cm5jbXAobmFtZSwgZG1fYWNwaV9kZXZuYW1lX2JsYWNrbGlzdFtpXSwgNCkgKQoK VGhhdCA0IGNvdWxkIGJlIGEgI2RlZmluZQo+ICsgICAgICAgICAgICByZXR1cm4gMTsKPiArICAg IH0KPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAqeHNfcmVh ZF9kbV9hY3BpX2Jsb2Jfa2V5KHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3Qg Y2hhciAqa2V5KQo+ICt7Cj4gKyNkZWZpbmUgRE1fQUNQSV9CTE9CX1BBVEhfTUFYX0xFTkdUSCAz MAo+ICsgICAgY2hhciBwYXRoW0RNX0FDUElfQkxPQl9QQVRIX01BWF9MRU5HVEhdOwo+ICsgICAg c25wcmludGYocGF0aCwgRE1fQUNQSV9CTE9CX1BBVEhfTUFYX0xFTkdUSCwgSFZNX1hTX0RNX0FD UElfUk9PVCIvJXMvJXMiLAo+ICsgICAgICAgICAgICAgbmFtZSwga2V5KTsKPiArICAgIHJldHVy biBjdHh0LT54c19vcHMucmVhZChjdHh0LCBwYXRoKTsKCiN1bmRlZiBETV9BUENJX0JMT0IuLi4g YnV0IHBlcmhhcHMgdGhhdCBzaG91bGQgZ28gaW4KeGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1f eHNfc3RyaW5ncy5oID8KCj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY29uc3RydWN0X2RtX3RhYmxl KHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQsCgpib29sCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMsIGludCBucl90YWJsZXMsCgp1bnNpZ25l ZCBpbnQgbnJfdGFibGVzCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv aWQgKmJsb2IsIHVpbnQzMl90IGxlbmd0aCkKPiArewo+ICsgICAgY29uc3Qgc3RydWN0IGFjcGlf aGVhZGVyICpoZWFkZXIgPSBibG9iOwo+ICsgICAgdWludDhfdCAqYnVmZmVyOwo+ICsKPiArICAg IGlmICggY2hlY2tfc2lnbmF0dXJlX2NvbGxpc2lvbihoZWFkZXItPnNpZ25hdHVyZSkgKQo+ICsg ICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgIGlmICggaGVhZGVyLT5sZW5ndGggPiBsZW5ndGgg fHwgaGVhZGVyLT5sZW5ndGggPT0gMCApCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAg YnVmZmVyID0gY3R4dC0+bWVtX29wcy5hbGxvYyhjdHh0LCBoZWFkZXItPmxlbmd0aCwgMTYpOwo+ ICsgICAgaWYgKCAhYnVmZmVyICkKPiArICAgICAgICByZXR1cm4gMDsKPiArICAgIG1lbWNweShi dWZmZXIsIGhlYWRlciwgaGVhZGVyLT5sZW5ndGgpOwo+ICsKPiArICAgIC8qIHNvbWUgZGV2aWNl IG1vZGVscyAoZS5nLiBRRU1VKSBkb2VzIG5vdCBzZXQgY2hlY2tzdW0gKi8KPiArICAgIHNldF9j aGVja3N1bShidWZmZXIsIG9mZnNldG9mKHN0cnVjdCBhY3BpX2hlYWRlciwgY2hlY2tzdW0pLAo+ ICsgICAgICAgICAgICAgICAgIGhlYWRlci0+bGVuZ3RoKTsKPiArCj4gKyAgICB0YWJsZV9wdHJz W25yX3RhYmxlcysrXSA9IGN0eHQtPm1lbV9vcHMudjJwKGN0eHQsIGJ1ZmZlcik7Cj4gKwo+ICsg ICAgcmV0dXJuIDE7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY29uc3RydWN0X2RtX25zZGV2KHN0 cnVjdCBhY3BpX2N0eHQgKmN0eHQsCgpib29sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMsIGludCBucl90YWJsZXMsCgp1bnNpZ25lZCBp bnQKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZGV2X25hbWUs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJsb2IsIHVpbnQz Ml90IGJsb2JfbGVuZ3RoKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgYWNwaV9oZWFkZXIgc3NkdCwgKmhl YWRlcjsKPiArICAgIHVpbnQ4X3QgKmJ1ZmZlcjsKPiArCj4gKyAgICBpZiAoIGNoZWNrX2Rldm5h bWVfY29sbGlzaW9uKGRldl9uYW1lKSApCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAg LyogYnVpbHQgQUNQSSBuYW1lc3BhY2UgZGV2aWNlIGZyb20gW25hbWUsIGJsb2JdICovCj4gKyAg ICBidWZmZXIgPSBhbWxfYnVpbGRfYmVnaW4oY3R4dCk7Cj4gKyAgICBhbWxfcHJlcGVuZF9ibG9i KGJ1ZmZlciwgYmxvYiwgYmxvYl9sZW5ndGgpOwo+ICsgICAgYW1sX3ByZXBlbmRfZGV2aWNlKGJ1 ZmZlciwgZGV2X25hbWUpOwo+ICsgICAgYW1sX3ByZXBlbmRfc2NvcGUoYnVmZmVyLCAiXFxfU0Ii KTsKPiArCj4gKyAgICAvKiBidWlsZCBTU0RUIGhlYWRlciAqLwo+ICsgICAgc3NkdC5zaWduYXR1 cmUgPSBBQ1BJXzJfMF9TU0RUX1NJR05BVFVSRTsKPiArICAgIHNzZHQucmV2aXNpb24gPSBBQ1BJ XzJfMF9TU0RUX1JFVklTSU9OOwo+ICsgICAgZml4ZWRfc3RyY3B5KHNzZHQub2VtX2lkLCBBQ1BJ X09FTV9JRCk7Cj4gKyAgICBmaXhlZF9zdHJjcHkoc3NkdC5vZW1fdGFibGVfaWQsIEFDUElfT0VN X1RBQkxFX0lEKTsKPiArICAgIHNzZHQub2VtX3JldmlzaW9uID0gQUNQSV9PRU1fUkVWSVNJT047 Cj4gKyAgICBzc2R0LmNyZWF0b3JfaWQgPSBBQ1BJX0NSRUFUT1JfSUQ7Cj4gKyAgICBzc2R0LmNy ZWF0b3JfcmV2aXNpb24gPSBBQ1BJX0NSRUFUT1JfUkVWSVNJT047Cj4gKwo+ICsgICAgLyogcHJl cGVuZCBTU0RUIGhlYWRlciB0byBBQ1BJIG5hbWVzcGFjZSBkZXZpY2UgKi8KPiArICAgIGFtbF9w cmVwZW5kX2Jsb2IoYnVmZmVyLCAmc3NkdCwgc2l6ZW9mKHNzZHQpKTsKPiArICAgIGhlYWRlciA9 IChzdHJ1Y3QgYWNwaV9oZWFkZXIgKikgYnVmZmVyOwo+ICsgICAgaGVhZGVyLT5sZW5ndGggPSBh bWxfYnVpbGRfZW5kKCk7Cj4gKwo+ICsgICAgLyogY2FsY3VsYXRlIGNoZWNrc3VtIG9mIFNTRFQg Ki8KPiArICAgIHNldF9jaGVja3N1bShoZWFkZXIsIG9mZnNldG9mKHN0cnVjdCBhY3BpX2hlYWRl ciwgY2hlY2tzdW0pLAo+ICsgICAgICAgICAgICAgICAgIGhlYWRlci0+bGVuZ3RoKTsKPiArCj4g KyAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9IGN0eHQtPm1lbV9vcHMudjJwKGN0eHQsIGJ1 ZmZlcik7Cj4gKwo+ICsgICAgcmV0dXJuIDE7CgpyZXR1cm4gdHJ1ZS4KPiArfQo+ICsKPiArLyoK PiArICogQWxsIEFDUEkgc3R1ZmZzIGJ1aWx0IGJ5IHRoZSBkZXZpY2UgbW9kZWwgYXJlIHBsYWNl ZCBpbiB0aGUgZ3Vlc3QKPiArICogYnVmZmVyIHdob3NlIGFkZHJlc3MgYW5kIHNpemUgYXJlIHNw ZWNpZmllZCBieSBjb25maWctPmRtLnthZGRyLCBsZW5ndGh9LAo+ICsgKiBvciBYZW5TdG9yZSBr ZXlzIEhWTV9YU19ETV9BQ1BJX3tBRERSRVNTLCBMRU5HVEh9LgoKVGhpcyBzaG91bGQgYmUgYWxz byBwcm92aWRlZCBpbgp4ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV94c19zdHJpbmdzLmgKCkVz cGVjaWFsbHkgYXMgeW91IGFyZSBpbiBlZmZlY3QgYWRkaW5nIG5ldyBrZXlzIGFuZCBhdHRyaWJ1 dGVzIHRvIGl0LgoKPiArICoKPiArICogVGhlIGRhdGEgbGF5b3V0IHdpdGhpbiB0aGUgYnVmZmVy IGlzIGZ1cnRoZXIgc3BlY2lmaWVkIGJ5IFhlblN0b3JlCj4gKyAqIGRpcmVjdG9yaWVzIHVuZGVy IEhWTV9YU19ETV9BQ1BJX1JPT1QuIEVhY2ggZGlyZWN0b3J5IHNwZWNpZmllcyBhCgpJcyBlYWNo IGRpcmVjdG9yeSB0aGUgbmFtZSBvZiB0aGUgRFNEVCBvYmplY3Q/IEluIHdoaWNoIGNhc2UgeW91 CndhbnQgdG8gc2F5IGEgYml0IGFib3V0IHRoZSBkaXJlY3RvcnkgbmFtZSBhbmQgdGhlIGxpbWl0 IChvbmx5IGZvdXIKY2hhcmFjdGVycyBsb25nKSwgZG9uJ3QgdXNlIHRoZSBvbmVzIHRoYXQgYXJl IGJ1aWx0LWluLCBldGMuLgoKQnV0IGl0IGxvb2tzIGxpa2UgaXQgY2FuIGJlIGFueXRoaW5nLiBZ b3UgZXh0cmFjdCB0aGUgbmFtZSBmcm9tCnRoZSBibG9iLgoKQnV0IHdlIHNob3VsZCBzdGlsbCBz YXkgd2hhdCB0aGUgZGlyZWN0b3J5IG5hbWVzIG91Z2h0IHRvIGJlLgoKPiArICogZGF0YSBibG9i IGFuZCBjb250YWlucyBmb2xsb3dpbmcgWGVuU3RvcmUga2V5czoKPiArICoKPiArICogLSAidHlw ZSI6Cj4gKyAqICAgKiBETV9BQ1BJX0JMT0JfVFlQRV9UQUJMRQo+ICsgKiAgICAgVGhlIGRhdGEg YmxvYiBzcGVjaWZpZWQgYnkgdGhpcyBkaXJlY3RvcnkgaXMgYW4gQUNQSSB0YWJsZS4KPiArICog ICAqIERNX0FDUElfQkxPQl9UWVBFX05TREVWCj4gKyAqICAgICBUaGUgZGF0YSBibG9iIHNwZWNp ZmllZCBieSB0aGlzIGRpcmVjdG9yeSBpcyBhbiBBQ1BJIG5hbWVzcGFjZSBkZXZpY2UuCj4gKyAq ICAgICBJdHMgbmFtZSBpcyBzcGVjaWZpZWQgYnkgdGhlIGRpcmVjdG9yeSBuYW1lLCB3aGlsZSB0 aGUgQU1MIGNvZGUgb2YgdGhlCj4gKyAqICAgICBib2R5IG9mIHRoZSBBTUwgZGV2aWNlIHN0cnVj dHVyZSBpcyBpbiB0aGUgZGF0YSBibG9iLgoKQ291bGQgdGhvc2UgYmUgc3RyaW5ncyBvbiBYZW5T dG9yZT8gU3RyaW5ncyBhcmUgbmljZS4gInRhYmxlIiBvcgoibnNkZXYiPwo+ICsgKgo+ICsgKiAt ICJsZW5ndGgiOiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoaXMgZGF0YSBibG9iLgo+ICsgKgo+ ICsgKiAtICJvZmZzZXQiOiB0aGUgb2Zmc2V0IGluIGJ5dGVzIG9mIHRoaXMgZGF0YSBibG9iIGZy b20gdGhlIGJlZ2lubmluZyBvZiBidWZmZXIKPiArICovCj4gK3N0YXRpYyBpbnQgY29uc3RydWN0 X2RtX3RhYmxlcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAoKc3RhdGljIHVuc2lnbmVkIGludAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqdGFibGVfcHRy cywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBucl90YWJsZXMsCgp1bnNp Z25lZCBpbnQgbnJfdGFibGVzCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKPiArewo+ICsgICAgY29uc3QgY2hhciAqczsKPiArICAg IGNoYXIgKipkaXI7Cj4gKyAgICB1aW50OF90IHR5cGU7Cj4gKyAgICB2b2lkICpibG9iOwo+ICsg ICAgdW5zaWduZWQgaW50IG51bSwgbGVuZ3RoLCBvZmZzZXQsIGk7Cj4gKyAgICBpbnQgbnJfYWRk ZWQgPSAwOwoKdW5zaWduZWQgaW50Cj4gKwo+ICsgICAgaWYgKCAhY29uZmlnLT5kbS5hZGRyICkK PiArICAgICAgICByZXR1cm4gMDsKPiArCj4gKyAgICBkaXIgPSBjdHh0LT54c19vcHMuZGlyZWN0 b3J5KGN0eHQsIEhWTV9YU19ETV9BQ1BJX1JPT1QsICZudW0pOwo+ICsgICAgaWYgKCAhZGlyIHx8 ICFudW0gKQo+ICsgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgIGlmICggbnVtID4gQUNQSV9N QVhfU0VDT05EQVJZX1RBQkxFUyAtIG5yX3RhYmxlcyApCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4g Kwo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBudW07IGkrKywgZGlyKysgKQo+ICsgICAgewoKWW91 IHByb2JhYmx5IHdhbnQgdG8gY2hlY2sgdGhhdCAqZGlyIGlzIG5vdCBOVUxMLiBKdXN0IGluIGNh c2UuCgo+ICsgICAgICAgIHMgPSB4c19yZWFkX2RtX2FjcGlfYmxvYl9rZXkoY3R4dCwgKmRpciwg InR5cGUiKTsKPiArICAgICAgICBpZiAoICFzICkKPiArICAgICAgICAgICAgY29udGludWU7Cj4g KyAgICAgICAgdHlwZSA9ICh1aW50OF90KXN0cnRvbGwocywgTlVMTCwgMCk7Cj4gKwo+ICsgICAg ICAgIHMgPSB4c19yZWFkX2RtX2FjcGlfYmxvYl9rZXkoY3R4dCwgKmRpciwgImxlbmd0aCIpOwo+ ICsgICAgICAgIGlmICggIXMgKQo+ICsgICAgICAgICAgICBjb250aW51ZTsKPiArICAgICAgICBs ZW5ndGggPSAodWludDMyX3Qpc3RydG9sbChzLCBOVUxMLCAwKTsKPiArCj4gKyAgICAgICAgcyA9 IHhzX3JlYWRfZG1fYWNwaV9ibG9iX2tleShjdHh0LCAqZGlyLCAib2Zmc2V0Iik7Cj4gKyAgICAg ICAgaWYgKCAhcyApCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgIG9mZnNldCA9 ICh1aW50MzJfdClzdHJ0b2xsKHMsIE5VTEwsIDApOwo+ICsKPiArICAgICAgICBibG9iID0gY3R4 dC0+bWVtX29wcy5wMnYoY3R4dCwgY29uZmlnLT5kbS5hZGRyICsgb2Zmc2V0KTsKPiArCj4gKyAg ICAgICAgc3dpdGNoICggdHlwZSApCj4gKyAgICAgICAgewo+ICsgICAgICAgIGNhc2UgRE1fQUNQ SV9CTE9CX1RZUEVfVEFCTEU6Cj4gKyAgICAgICAgICAgIG5yX2FkZGVkICs9IGNvbnN0cnVjdF9k bV90YWJsZShjdHh0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGFibGVfcHRycywgbnJfdGFibGVzICsgbnJfYWRkZWQsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBibG9iLCBsZW5ndGgpOwo+ICsgICAgICAgICAgICBi cmVhazsKPiArICAgICAgICBjYXNlIERNX0FDUElfQkxPQl9UWVBFX05TREVWOgo+ICsgICAgICAg ICAgICBucl9hZGRlZCArPSBjb25zdHJ1Y3RfZG1fbnNkZXYoY3R4dCwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX3B0cnMsIG5yX3RhYmxlcyArIG5y X2FkZGVkLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRp ciwgYmxvYiwgbGVuZ3RoKTsKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgZGVmYXVs dDoKPiArICAgICAgICAgICAgLyogc2tpcCBibG9icyBvZiB1bmtub3duIHR5cGVzICovCj4gKyAg ICAgICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICByZXR1 cm4gbnJfYWRkZWQ7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgY29uc3RydWN0X3NlY29uZGFyeV90 YWJsZXMoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICp0YWJsZV9wdHJzLAo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnLAo+IEBA IC00NjEsNiArNjc0LDkgQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rfc2Vjb25kYXJ5X3RhYmxlcyhz dHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAo+ICAgICAgbnJfdGFibGVzICs9IGNvbnN0cnVjdF9wYXNz dGhyb3VnaF90YWJsZXMoY3R4dCwgdGFibGVfcHRycywKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5yX3RhYmxlcywgY29uZmlnKTsKPiAgCj4gKyAgICAv KiBMb2FkIGFueSBhZGRpdGlvbmFsIHRhYmxlcyBwYXNzZWQgZnJvbSBkZXZpY2UgbW9kZWwgKGUu Zy4gUUVNVSkgKi8KClBlcmhhcHMgYW4gcGVyaW9kIGF0IHRoZSBlbmQgb2YgdGhlIHNlbnRlbmNl PwoKPiArICAgIG5yX3RhYmxlcyArPSBjb25zdHJ1Y3RfZG1fdGFibGVzKGN0eHQsIHRhYmxlX3B0 cnMsIG5yX3RhYmxlcywgY29uZmlnKTsKPiArCj4gICAgICB0YWJsZV9wdHJzW25yX3RhYmxlc10g PSAwOwo+ICAgICAgcmV0dXJuIG5yX3RhYmxlczsKPiAgfQo+IGRpZmYgLS1naXQgYS90b29scy9s aWJhY3BpL2xpYmFjcGkuaCBiL3Rvb2xzL2xpYmFjcGkvbGliYWNwaS5oCj4gaW5kZXggMTJjYWZk OC4uNjg0NTAyZCAxMDA2NDQKPiAtLS0gYS90b29scy9saWJhY3BpL2xpYmFjcGkuaAo+ICsrKyBi L3Rvb2xzL2xpYmFjcGkvbGliYWNwaS5oCj4gQEAgLTgyLDYgKzgyLDExIEBAIHN0cnVjdCBhY3Bp X2NvbmZpZyB7Cj4gICAgICAgICAgdWludDMyX3QgbGVuZ3RoOwo+ICAgICAgfSBwdDsKPiAgCj4g KyAgICBzdHJ1Y3Qgewo+ICsgICAgICAgIHVpbnQzMl90IGFkZHI7Cj4gKyAgICAgICAgdWludDMy X3QgbGVuZ3RoOwo+ICsgICAgfSBkbTsKPiArCj4gICAgICBzdHJ1Y3QgYWNwaV9udW1hIG51bWE7 Cj4gICAgICBjb25zdCBzdHJ1Y3QgaHZtX2luZm9fdGFibGUgKmh2bWluZm87Cj4gIAo+IC0tIAo+ IDIuMTAuMQo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4gWGVuLWRldmVsIG1haWxpbmcgbGlzdAo+IFhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cj4gaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==