From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau =?iso-8859-1?Q?Monn=E9?= Subject: Re: [PATCH v2 07/15] x86: implement set value flow for MBA Date: Wed, 30 Aug 2017 09:31:04 +0100 Message-ID: <20170830083104.jwzpcducid63aeuo@MacBook-Pro-de-Roger.local> References: <1503537289-56036-1-git-send-email-yi.y.sun@linux.intel.com> <1503537289-56036-8-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dmyP3-0006oo-Qr for xen-devel@lists.xenproject.org; Wed, 30 Aug 2017 08:31:14 +0000 Content-Disposition: inline In-Reply-To: <1503537289-56036-8-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Yi Sun Cc: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, julien.grall@arm.com, mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBBdWcgMjQsIDIwMTcgYXQgMDk6MTQ6NDFBTSArMDgwMCwgWWkgU3VuIHdyb3RlOgo+ IFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBzZXQgdmFsdWUgZmxvdyBmb3IgTUJBIGluY2x1ZGluZyBp dHMgY2FsbGJhY2sKPiBmdW5jdGlvbiBhbmQgZG9tY3RsIGludGVyZmFjZS4KPiAKPiBJdCBhbHNv IGNoYW5nZXMgdGhlIG1lbWViZXJzIGluICdjb3Nfd3JpdGVfaW5mbycgdG8gdHJhbnNmZXIgdGhl Cj4gZmVhdHVyZSBhcnJheSwgZmVhdHVyZSBwcm9wZXJ0aWVzIGFycmF5IGFuZCB2YWx1ZSBhcnJh eS4gVGhlbiwgd2UKPiBjYW4gd3JpdGUgYWxsIGZlYXR1cmVzIHZhbHVlcyBvbiB0aGUgY29zIGlk IGludG8gTVNScy4KPiAKPiBCZWNhdXNlIG11bHRpcGxlIGZlYXR1cmVzIG1heSBjby1leGlzdCwg d2UgbmVlZCBoYW5kbGUgYWxsIGZlYXR1cmVzIHRvIHdyaXRlCj4gdmFsdWVzIG9mIHRoZW0gaW50 byBhIENPUyByZWdpc3RlciB3aXRoIG5ldyBDT1MgSUQuIEUuZzoKPiAxLiBMMyBDQVQgYW5kIE1C QSBjby1leGlzdC4KPiAyLiBEb20xIGFuZCBEb20yIHNoYXJlIGEgc2FtZSBDT1MgSUQgKDIpLiBU aGUgTDMgQ0FUIENCTSBvZiBEb20xIGlzIDB4MWZmLAo+ICAgIHRoZSBNQkEgVGhydGxlIG9mIERv bTEgaXMgMHhhLgo+IDMuIFVzZXIgd2FudHMgdG8gY2hhbmdlIE1CQSBUaHJ0bCBvZiBEb20xIHRv IGJlIDB4MTQuIEJlY2F1c2UgQ09TIElEIDIgaXMKPiAgICB1c2VkIGJ5IERvbTIgdG9vLCB3ZSBo YXZlIHRvIHBpY2sgYSBuZXcgQ09TIElEIDMuIFRoZSBvcmlnaW5hbCB2YWx1ZXMgb2YKPiAgICBE b20xIG9uIENPUyBJRCAzIG1heSBiZSBiZWxvdzoKCldoYXQgb3JpZ2luYWwgdmFsdWVzPyBZb3Ug c2FpZCB5b3UgcGljayBDT1MgSUQgMywgYmVjYXVzZSBJIHRoaW5rIGl0J3MKYXNzdW1lZCB0byBi ZSBlbXB0eT8gSW4gd2hpY2ggY2FzZSB0aGVyZSBhcmUgbm8gb3JpZ2luYWwgdmFsdWVzIGluIENP UwpJRCAzLgoKPiAgICAgICAgICAgIC0tLS0tLS0tLQo+ICAgICAgICAgICAgfCBDT1MgMyB8Cj4g ICAgICAgICAgICAtLS0tLS0tLS0KPiAgICBMMyBDQVQgIHwgMHg3ZmYgfAo+ICAgICAgICAgICAg LS0tLS0tLS0tCj4gICAgTUJBICAgICB8IDB4MCAgIHwKPiAgICAgICAgICAgIC0tLS0tLS0tLQo+ IDQuIEFmdGVyIHNldHRpbmcsIHRoZSBMMyBDQVQgQ0JNIHZhbHVlIG9mIERvbTEgc2hvdWxkIGJl IGtlcHQgYW5kIHRoZSBuZXcgTUJBCj4gICAgVGhydGwgaXMgc2V0LiBTbywgdGhlIHZhbHVlcyBv biBDT1MgSUQgMyBzaG91bGQgYmUgYmVsb3cuCj4gICAgICAgICAgICAtLS0tLS0tLS0KPiAgICAg ICAgICAgIHwgQ09TIDMgfAo+ICAgICAgICAgICAgLS0tLS0tLS0tCj4gICAgTDMgQ0FUICB8IDB4 MWZmIHwKPiAgICAgICAgICAgIC0tLS0tLS0tLQo+ICAgIE1CQSAgICAgfCAweDE0ICB8Cj4gICAg ICAgICAgICAtLS0tLS0tLS0KPiAKPiBTbywgd2Ugc2hvdWxkIHdyaXRlIGFsbCBmZWF0dXJlcyB2 YWx1ZXMgaW50byB0aGVpciBNU1JzLiBUaGF0IHJlcXVpcmVzIHRoZQo+IGZlYXR1cmUgYXJyYXks IGZlYXR1cmUgcHJvcGVydGllcyBhcnJheSBhbmQgdmFsdWUgYXJyYXkgYXJlIGlucHV0LgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiBh cwo+IAo+IFNpZ25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGludXguaW50ZWwuY29tPgo+ IC0tLQo+IHYyOgo+ICAgICAtIHJlbW92ZSBsaW5lYXIgbW9kZSAndGhydGxfbWF4JyBjaGVjayBp biAnbWJhX2NoZWNrX3RocnRsJyBiZWNhdXNlIGl0IGhhcwo+ICAgICAgIGJlZW4gY2hlY2tlZCBp biAnbWJhX2luaXRfZmVhdHVyZScuCj4gICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCj4g ICAgIC0gZm9yIG5vbi1saW5lYXIgbW9kZSwgY2hlY2sgaWYgJyp0aHJ0bCcgaXMgbm90IDAgaW4g J21iYV9jaGVja190aHJ0bCcuIElmCj4gICAgICAgaXQgaXMgMCwgd2UgZG8gbm90IG5lZWQgdG8g Y2hhbmdlIGl0Lgo+ICAgICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQo+ICAgICAtIG1vdmUg Y29tbWVudHMgdG8gZXhwbGFpbiBjaGFuZ2VzIG9mICdjb3Nfd3JpdGVfaW5mbycgZnJvbSBwc3Iu YyB0byBjb21taXQKPiAgICAgICBtZXNzYWdlLgo+ICAgICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQ ZW5nKQo+IC0tLQo+ICB4ZW4vYXJjaC94ODYvZG9tY3RsLmMgICAgICAgfCAgIDYgKysKPiAgeGVu L2FyY2gveDg2L3Bzci5jICAgICAgICAgIHwgMTUwICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tCj4gIHhlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaCB8ICAgMSAr Cj4gIDMgZmlsZXMgY2hhbmdlZCwgMTA5IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQo+ IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMgYi94ZW4vYXJjaC94ODYvZG9t Y3RsLmMKPiBpbmRleCA0OTM2YmNiLi4wYWU0Nzk5IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4 Ni9kb21jdGwuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwo+IEBAIC0xNDY4LDYgKzE0 NjgsMTIgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUFNSX1ZBTF9UWVBFX0wyX0NCTSk7Cj4gICAgICAgICAgICAgIGJyZWFrOwo+ICAKPiAr ICAgICAgICBjYXNlIFhFTl9ET01DVExfUFNSX01CQV9PUF9TRVRfVEhSVEw6Cj4gKyAgICAgICAg ICAgIHJldCA9IHBzcl9zZXRfdmFsKGQsIGRvbWN0bC0+dS5wc3JfYWxsb2Nfb3AudGFyZ2V0LAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21jdGwtPnUucHNyX2FsbG9jX29wLmRh dGEsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9WQUxfVFlQRV9NQkEpOwo+ ICsgICAgICAgICAgICBicmVhazsKPiArCj4gICAgICAgICAgY2FzZSBYRU5fRE9NQ1RMX1BTUl9D QVRfT1BfR0VUX0wzX0NCTToKPiAgICAgICAgICAgICAgcmV0ID0gcHNyX2dldF92YWwoZCwgZG9t Y3RsLT51LnBzcl9hbGxvY19vcC50YXJnZXQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZ2YWwzMiwgUFNSX1ZBTF9UWVBFX0wzX0NCTSk7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwo+IGluZGV4IDRhMGM5ODIuLmNlODI5NzUg MTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L3Bzci5jCj4gKysrIGIveGVuL2FyY2gveDg2L3Bz ci5jCj4gQEAgLTEzOCw2ICsxMzgsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3Bz IHsKPiAgCj4gICAgICAvKiB3cml0ZV9tc3IgaXMgdXNlZCB0byB3cml0ZSBvdXQgZmVhdHVyZSBN U1IgcmVnaXN0ZXIuICovCj4gICAgICB2b2lkICgqd3JpdGVfbXNyKSh1bnNpZ25lZCBpbnQgY29z LCB1aW50MzJfdCB2YWwsIGVudW0gcHNyX3ZhbF90eXBlIHR5cGUpOwo+ICsKPiArICAgIC8qCj4g KyAgICAgKiBjaGVja192YWwgaXMgdXNlZCB0byBjaGVjayBpZiBpbnB1dCB2YWwgZnVsZmlsbHMg U0RNIHJlcXVpcmVtZW50Lgo+ICsgICAgICogQ2hhbmdlIGl0IHRvIHZhbGlkIHZhbHVlIGlmIFNE TSBhbGxvd3MuCgpJJ20gbm90IHJlYWxseSBzdXJlIGl0J3MgYSBnb29kIGlkZWEgdG8gY2hhbmdl IHRoZSB2YWx1ZSB0byBhIHZhbGlkCm9uZSwgSU1ITyB5b3Ugc2hvdWxkIGp1c3QgY2hlY2sgYW5k IHByaW50IGFuIGVycm9yIGlmIHRoZSB2YWx1ZSBpcwppbnZhbGlkIChhbmQgcmV0dXJuIGZhbHNl IG9mIGNvdXJzZSkuCgo+ICsgICAgICovCj4gKyAgICBib29sICgqY2hlY2tfdmFsKShjb25zdCBz dHJ1Y3QgZmVhdF9ub2RlICpmZWF0LCB1bnNpZ25lZCBsb25nICp2YWwpOwo+ICB9ICpmZWF0X3By b3BzW0ZFQVRfVFlQRV9OVU1dOwo+ICAKPiAgLyoKPiBAQCAtMjc1LDI5ICsyODEsNiBAQCBzdGF0 aWMgZW51bSBwc3JfZmVhdF90eXBlIHBzcl92YWxfdHlwZV90b19mZWF0X3R5cGUoZW51bSBwc3Jf dmFsX3R5cGUgdHlwZSkKPiAgICAgIHJldHVybiBmZWF0X3R5cGU7Cj4gIH0KPiAgCj4gLXN0YXRp YyBib29sIHBzcl9jaGVja19jYm0odW5zaWduZWQgaW50IGNibV9sZW4sIHVuc2lnbmVkIGxvbmcg Y2JtKQo+IC17Cj4gLSAgICB1bnNpZ25lZCBpbnQgZmlyc3RfYml0LCB6ZXJvX2JpdDsKPiAtCj4g LSAgICAvKiBTZXQgYml0cyBzaG91bGQgb25seSBpbiB0aGUgcmFuZ2Ugb2YgWzAsIGNibV9sZW5d LiAqLwo+IC0gICAgaWYgKCBjYm0gJiAofjB1bCA8PCBjYm1fbGVuKSApCj4gLSAgICAgICAgcmV0 dXJuIGZhbHNlOwo+IC0KPiAtICAgIC8qIEF0IGxlYXN0IG9uZSBiaXQgbmVlZCB0byBiZSBzZXQu ICovCj4gLSAgICBpZiAoIGNibSA9PSAwICkKPiAtICAgICAgICByZXR1cm4gZmFsc2U7Cj4gLQo+ IC0gICAgZmlyc3RfYml0ID0gZmluZF9maXJzdF9iaXQoJmNibSwgY2JtX2xlbik7Cj4gLSAgICB6 ZXJvX2JpdCA9IGZpbmRfbmV4dF96ZXJvX2JpdCgmY2JtLCBjYm1fbGVuLCBmaXJzdF9iaXQpOwo+ IC0KPiAtICAgIC8qIFNldCBiaXRzIHNob3VsZCBiZSBjb250aWd1b3VzLiAqLwo+IC0gICAgaWYg KCB6ZXJvX2JpdCA8IGNibV9sZW4gJiYKPiAtICAgICAgICAgZmluZF9uZXh0X2JpdCgmY2JtLCBj Ym1fbGVuLCB6ZXJvX2JpdCkgPCBjYm1fbGVuICkKPiAtICAgICAgICByZXR1cm4gZmFsc2U7Cj4g LQo+IC0gICAgcmV0dXJuIHRydWU7Cj4gLX0KPiAtCj4gIC8qIEltcGxlbWVudGF0aW9uIG9mIGFs bG9jYXRpb24gZmVhdHVyZXMnIGZ1bmN0aW9ucy4gKi8KPiAgc3RhdGljIGludCBjYXRfaW5pdF9m ZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKPiBAQCAtNDMzLDYgKzQxNiwzMCBA QCBzdGF0aWMgYm9vbCBjYXRfZ2V0X2ZlYXRfaW5mbyhjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpm ZWF0LAo+ICAgICAgcmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4gK3N0YXRpYyBib29sIGNhdF9jaGVj a19jYm0oY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwgdW5zaWduZWQgbG9uZyAqY2JtKQo+ ICt7Cj4gKyAgICB1bnNpZ25lZCBpbnQgZmlyc3RfYml0LCB6ZXJvX2JpdDsKPiArICAgIHVuc2ln bmVkIGludCBjYm1fbGVuID0gZmVhdC0+Y2F0X2luZm8uY2JtX2xlbjsKPiArCj4gKyAgICAvKiBT ZXQgYml0cyBzaG91bGQgb25seSBpbiB0aGUgcmFuZ2Ugb2YgWzAsIGNibV9sZW5dLiAqLwo+ICsg ICAgaWYgKCAqY2JtICYgKH4wdWwgPDwgY2JtX2xlbikgKQo+ICsgICAgICAgIHJldHVybiBmYWxz ZTsKPiArCj4gKyAgICAvKiBBdCBsZWFzdCBvbmUgYml0IG5lZWQgdG8gYmUgc2V0LiAqLwo+ICsg ICAgaWYgKCAqY2JtID09IDAgKQo+ICsgICAgICAgIHJldHVybiBmYWxzZTsKPiArCj4gKyAgICBm aXJzdF9iaXQgPSBmaW5kX2ZpcnN0X2JpdChjYm0sIGNibV9sZW4pOwo+ICsgICAgemVyb19iaXQg PSBmaW5kX25leHRfemVyb19iaXQoY2JtLCBjYm1fbGVuLCBmaXJzdF9iaXQpOwo+ICsKPiArICAg IC8qIFNldCBiaXRzIHNob3VsZCBiZSBjb250aWd1b3VzLiAqLwo+ICsgICAgaWYgKCB6ZXJvX2Jp dCA8IGNibV9sZW4gJiYKPiArICAgICAgICAgZmluZF9uZXh0X2JpdChjYm0sIGNibV9sZW4sIHpl cm9fYml0KSA8IGNibV9sZW4gKQo+ICsgICAgICAgIHJldHVybiBmYWxzZTsKPiArCj4gKyAgICBy ZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiAgLyogTDMgQ0FUIHByb3BzICovCj4gIHN0YXRpYyB2b2lk IGwzX2NhdF93cml0ZV9tc3IodW5zaWduZWQgaW50IGNvcywgdWludDMyX3QgdmFsLAo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3ZhbF90eXBlIHR5cGUpCj4gQEAgLTQ0 Niw2ICs0NTMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgbDNfY2F0X3Byb3Bz ID0gewo+ICAgICAgLmFsdF90eXBlID0gUFNSX1ZBTF9UWVBFX1VOS05PV04sCj4gICAgICAuZ2V0 X2ZlYXRfaW5mbyA9IGNhdF9nZXRfZmVhdF9pbmZvLAo+ICAgICAgLndyaXRlX21zciA9IGwzX2Nh dF93cml0ZV9tc3IsCj4gKyAgICAuY2hlY2tfdmFsID0gY2F0X2NoZWNrX2NibSwKPiAgfTsKCk1h eWJlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgY2hlY2tfdmFsIHNob3VsZCBiZSBhIHNlcGFyYXRlIHBh dGNoPyBJdCdzCm1vc3RseSBjb2RlIG1vdmVtZW50IGFuZCBzb21lIGZpeHVwLgoKPiAgLyogTDMg Q0RQIHByb3BzICovCj4gQEAgLTQ3Niw2ICs0ODQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZl YXRfcHJvcHMgbDNfY2RwX3Byb3BzID0gewo+ICAgICAgLmFsdF90eXBlID0gUFNSX1ZBTF9UWVBF X0wzX0NCTSwKPiAgICAgIC5nZXRfZmVhdF9pbmZvID0gbDNfY2RwX2dldF9mZWF0X2luZm8sCj4g ICAgICAud3JpdGVfbXNyID0gbDNfY2RwX3dyaXRlX21zciwKPiArICAgIC5jaGVja192YWwgPSBj YXRfY2hlY2tfY2JtLAo+ICB9Owo+ICAKPiAgLyogTDIgQ0FUIHByb3BzICovCj4gQEAgLTQ5MSw2 ICs1MDAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgbDJfY2F0X3Byb3BzID0g ewo+ICAgICAgLmFsdF90eXBlID0gUFNSX1ZBTF9UWVBFX1VOS05PV04sCj4gICAgICAuZ2V0X2Zl YXRfaW5mbyA9IGNhdF9nZXRfZmVhdF9pbmZvLAo+ICAgICAgLndyaXRlX21zciA9IGwyX2NhdF93 cml0ZV9tc3IsCj4gKyAgICAuY2hlY2tfdmFsID0gY2F0X2NoZWNrX2NibSwKPiAgfTsKPiAgCj4g IC8qIE1CQSBwcm9wcyAqLwo+IEBAIC01MTQsNiArNTI0LDQwIEBAIHN0YXRpYyBib29sIG1iYV9n ZXRfZmVhdF9pbmZvKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCj4gIHN0YXRpYyB2b2lk IG1iYV93cml0ZV9tc3IodW5zaWduZWQgaW50IGNvcywgdWludDMyX3QgdmFsLAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3ZhbF90eXBlIHR5cGUpCj4gIHsKPiArICAgIHdy bXNybChNU1JfSUEzMl9QU1JfTUJBX01BU0soY29zKSwgdmFsKTsKPiArfQo+ICsKPiArc3RhdGlj IGJvb2wgbWJhX2NoZWNrX3RocnRsKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsIHVuc2ln bmVkIGxvbmcgKnRocnRsKQo+ICt7Cj4gKyAgICBpZiAoICp0aHJ0bCA+IGZlYXQtPm1iYV9pbmZv LnRocnRsX21heCApCj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOwo+ICsKPiArICAgIC8qCj4gKyAg ICAgKiBQZXIgU0RNIChjaGFwdGVyICJNZW1vcnkgQmFuZHdpZHRoIEFsbG9jYXRpb24gQ29uZmln dXJhdGlvbiIpOgo+ICsgICAgICogMS4gTGluZWFyIG1vZGU6IEluIHRoZSBsaW5lYXIgbW9kZSB0 aGUgaW5wdXQgcHJlY2lzaW9uIGlzIGRlZmluZWQKPiArICAgICAqICAgIGFzIDEwMC0oTUJBX01B WCkuIEZvciBpbnN0YW5jZSwgaWYgdGhlIE1CQV9NQVggdmFsdWUgaXMgOTAsIHRoZQo+ICsgICAg ICogICAgaW5wdXQgcHJlY2lzaW9uIGlzIDEwJS4gVmFsdWVzIG5vdCBhbiBldmVuIG11bHRpcGxl IG9mIHRoZQo+ICsgICAgICogICAgcHJlY2lzaW9uIChlLmcuLCAxMiUpIHdpbGwgYmUgcm91bmRl ZCBkb3duIChlLmcuLCB0byAxMCUgZGVsYXkKPiArICAgICAqICAgIGFwcGxpZWQpLgo+ICsgICAg ICogMi4gTm9uLWxpbmVhciBtb2RlOiBJbnB1dCBkZWxheSB2YWx1ZXMgYXJlIHBvd2Vycy1vZi10 d28gZnJvbSB6ZXJvCj4gKyAgICAgKiAgICB0byB0aGUgTUJBX01BWCB2YWx1ZSBmcm9tIENQVUlE LiBJbiB0aGlzIGNhc2UgYW55IHZhbHVlcyBub3QgYQo+ICsgICAgICogICAgcG93ZXIgb2YgdHdv IHdpbGwgYmUgcm91bmRlZCBkb3duIHRoZSBuZXh0IG5lYXJlc3QgcG93ZXIgb2YgdHdvLgo+ICsg ICAgICovCj4gKyAgICBpZiAoIGZlYXQtPm1iYV9pbmZvLmxpbmVhciApCj4gKyAgICB7Cj4gKyAg ICAgICAgdW5zaWduZWQgaW50IG1vZDsKPiArCj4gKyAgICAgICAgbW9kID0gKnRocnRsICUgKDEw MCAtIGZlYXQtPm1iYV9pbmZvLnRocnRsX21heCk7Cj4gKyAgICAgICAgKnRocnRsIC09IG1vZDsK PiArICAgIH0KPiArICAgIGVsc2UKPiArICAgIHsKPiArICAgICAgICAvKiBOb3QgcG93ZXIgb2Yg Mi4gKi8KPiArICAgICAgICBpZiAoICp0aHJ0bCAmJiAoKnRocnRsICYgKCp0aHJ0bCAtIDEpKSAp CgpUaGlzIGNhbiBiZSBqb2luZWQgd2l0aCB0aGUgZWxzZSB0byBhdm9pZCBhbm90aGVyIGluZGVu dGF0aW9uIGxldmVsOgoKZWxzZSBpZiAoICp0aHJ0bCAmJiAoKnRocnRsICYgKCp0aHJ0bCAtIDEp KSApCi4uLgoKPiArICAgICAgICAgICAgKnRocnRsID0gKnRocnRsICYgKDEgPDwgKGZsc2woKnRo cnRsKSAtIDEpKTsKPiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiAg c3RhdGljIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzIG1iYV9wcm9wcyA9IHsKPiBAQCAtNTIyLDYg KzU2Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBtYmFfcHJvcHMgPSB7Cj4g ICAgICAuYWx0X3R5cGUgPSBQU1JfVkFMX1RZUEVfVU5LTk9XTiwKPiAgICAgIC5nZXRfZmVhdF9p bmZvID0gbWJhX2dldF9mZWF0X2luZm8sCj4gICAgICAud3JpdGVfbXNyID0gbWJhX3dyaXRlX21z ciwKPiArICAgIC5jaGVja192YWwgPSBtYmFfY2hlY2tfdGhydGwsCj4gIH07Cj4gIAo+ICBzdGF0 aWMgdm9pZCBfX2luaXQgcGFyc2VfcHNyX2Jvb2woY2hhciAqcywgY2hhciAqdmFsdWUsIGNoYXIg KmZlYXR1cmUsCj4gQEAgLTk0Miw2ICs5ODcsNyBAQCBzdGF0aWMgaW50IGluc2VydF92YWxfaW50 b19hcnJheSh1aW50MzJfdCB2YWxbXSwKPiAgICAgIGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZl YXQ7Cj4gICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyAqcHJvcHM7Cj4gICAgICB1bnNpZ25l ZCBpbnQgaTsKPiArICAgIHVuc2lnbmVkIGxvbmcgY2hlY2tfdmFsID0gbmV3X3ZhbDsKPiAgICAg IGludCByZXQ7Cj4gIAo+ICAgICAgQVNTRVJUKGZlYXRfdHlwZSA8IEZFQVRfVFlQRV9OVU0pOwo+ IEBAIC05NjYsOSArMTAxMiwxMSBAQCBzdGF0aWMgaW50IGluc2VydF92YWxfaW50b19hcnJheSh1 aW50MzJfdCB2YWxbXSwKPiAgICAgIGlmICggYXJyYXlfbGVuIDwgcHJvcHMtPmNvc19udW0gKQo+ ICAgICAgICAgIHJldHVybiAtRU5PU1BDOwo+ICAKPiAtICAgIGlmICggIXBzcl9jaGVja19jYm0o ZmVhdC0+Y2F0X2luZm8uY2JtX2xlbiwgbmV3X3ZhbCkgKQo+ICsgICAgaWYgKCAhcHJvcHMtPmNo ZWNrX3ZhbChmZWF0LCAmY2hlY2tfdmFsKSApCj4gICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4g IAo+ICsgICAgbmV3X3ZhbCA9IGNoZWNrX3ZhbDsKPiArCj4gICAgICAvKgo+ICAgICAgICogVmFs dWUgc2V0dGluZyBwb3NpdGlvbiBpcyBzYW1lIGFzIGZlYXR1cmUgYXJyYXkuCj4gICAgICAgKiBG b3IgQ0RQLCB1c2VyIG1heSBzZXQgYm90aCBEQVRBIGFuZCBDT0RFIHRvIHNhbWUgdmFsdWUuIEZv ciBzdWNoIGNhc2UsCj4gQEAgLTExOTgsMjUgKzEyNDYsNDIgQEAgc3RhdGljIHVuc2lnbmVkIGlu dCBnZXRfc29ja2V0X2NwdSh1bnNpZ25lZCBpbnQgc29ja2V0KQo+ICBzdHJ1Y3QgY29zX3dyaXRl X2luZm8KPiAgewo+ICAgICAgdW5zaWduZWQgaW50IGNvczsKPiAtICAgIHN0cnVjdCBmZWF0X25v ZGUgKmZlYXR1cmU7Cj4gKyAgICBzdHJ1Y3QgZmVhdF9ub2RlICoqZmVhdHVyZXM7Cj4gICAgICBj b25zdCB1aW50MzJfdCAqdmFsOwo+IC0gICAgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgKnByb3Bz Owo+ICsgICAgdW5zaWduZWQgaW50IGFycmF5X2xlbjsKPiArICAgIGNvbnN0IHN0cnVjdCBmZWF0 X3Byb3BzICoqcHJvcHM7Cj4gIH07Cj4gIAo+ICBzdGF0aWMgdm9pZCBkb193cml0ZV9wc3JfbXNy cyh2b2lkICpkYXRhKQo+ICB7Cj4gICAgICBjb25zdCBzdHJ1Y3QgY29zX3dyaXRlX2luZm8gKmlu Zm8gPSBkYXRhOwo+IC0gICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCA9IGluZm8tPmZlYXR1cmU7 Cj4gLSAgICBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyAqcHJvcHMgPSBpbmZvLT5wcm9wczsKPiAt ICAgIHVuc2lnbmVkIGludCBpLCBjb3MgPSBpbmZvLT5jb3MsIGNvc19udW0gPSBwcm9wcy0+Y29z X251bTsKPiArICAgIHVuc2lnbmVkIGludCBpLCBqLCBpbmRleCA9IDAsIGFycmF5X2xlbiA9IGlu Zm8tPmFycmF5X2xlbiwgY29zID0gaW5mby0+Y29zOwo+ICsgICAgY29uc3QgdWludDMyX3QgKnZh bF9hcnJheSA9IGluZm8tPnZhbDsKPiAgCj4gLSAgICBmb3IgKCBpID0gMDsgaSA8IGNvc19udW07 IGkrKyApCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUoZmVhdF9wcm9wcyk7IGkr KyApCj4gICAgICB7CgppbmRleCBhbmQgaiBjYW4gYmUgZGVmaW5lZCBoZXJlLCB0aGV5IGFyZSBv bmx5IHVzZWQgaW5zaWRlIG9mIHRoaXMgZm9yCmxvb3AgQUZBSUNULgoKPiAtICAgICAgICBpZiAo IGZlYXQtPmNvc19yZWdfdmFsW2NvcyAqIGNvc19udW0gKyBpXSAhPSBpbmZvLT52YWxbaV0gKQo+ ICsgICAgICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQgPSBpbmZvLT5mZWF0dXJlc1tpXTsKPiAr ICAgICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyAqcHJvcHMgPSBpbmZvLT5wcm9wc1tpXTsK PiArICAgICAgICB1bnNpZ25lZCBpbnQgY29zX251bTsKPiArCj4gKyAgICAgICAgaWYgKCAhZmVh dCB8fCAhcHJvcHMgKQo+ICsgICAgICAgICAgICBjb250aW51ZTsKPiArCj4gKyAgICAgICAgY29z X251bSA9IHByb3BzLT5jb3NfbnVtOwo+ICsgICAgICAgIGlmICggYXJyYXlfbGVuIDwgY29zX251 bSApCj4gKyAgICAgICAgICAgIHJldHVybjsKPiArCj4gKyAgICAgICAgZm9yICggaiA9IDA7IGog PCBjb3NfbnVtOyBqKysgKQo+ICAgICAgICAgIHsKPiAtICAgICAgICAgICAgZmVhdC0+Y29zX3Jl Z192YWxbY29zICogY29zX251bSArIGldID0gaW5mby0+dmFsW2ldOwo+IC0gICAgICAgICAgICBw cm9wcy0+d3JpdGVfbXNyKGNvcywgaW5mby0+dmFsW2ldLCBwcm9wcy0+dHlwZVtpXSk7Cj4gKyAg ICAgICAgICAgIGlmICggZmVhdC0+Y29zX3JlZ192YWxbY29zICogY29zX251bSArIGpdICE9IHZh bF9hcnJheVtpbmRleCArIGpdICkKPiArICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAg ZmVhdC0+Y29zX3JlZ192YWxbY29zICogY29zX251bSArIGpdID0gdmFsX2FycmF5W2luZGV4ICsg al07Cj4gKyAgICAgICAgICAgICAgICBwcm9wcy0+d3JpdGVfbXNyKGNvcywgdmFsX2FycmF5W2lu ZGV4ICsgal0sIHByb3BzLT50eXBlW2pdKTsKPiArICAgICAgICAgICAgfQo+ICAgICAgICAgIH0K PiArCj4gKyAgICAgICAgYXJyYXlfbGVuIC09IGNvc19udW07Cj4gKyAgICAgICAgaW5kZXggKz0g Y29zX251bTsKPiAgICAgIH0KPiAgfQo+ICAKPiBAQCAtMTIyNCwzMCArMTI4OSwxOSBAQCBzdGF0 aWMgaW50IHdyaXRlX3Bzcl9tc3JzKHVuc2lnbmVkIGludCBzb2NrZXQsIHVuc2lnbmVkIGludCBj b3MsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3QgdmFsW10sIHVu c2lnbmVkIGludCBhcnJheV9sZW4sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBw c3JfZmVhdF90eXBlIGZlYXRfdHlwZSkKPiAgewo+IC0gICAgaW50IHJldDsKPiAgICAgIHN0cnVj dCBwc3Jfc29ja2V0X2luZm8gKmluZm8gPSBnZXRfc29ja2V0X2luZm8oc29ja2V0KTsKCmluZm8g c2hvdWxkIHByb2JhYmx5IGJlIGNvbnN0IGhlcmUuCgo+ICAgICAgc3RydWN0IGNvc193cml0ZV9p bmZvIGRhdGEgPQo+ICAgICAgewo+ICAgICAgICAgIC5jb3MgPSBjb3MsCj4gLSAgICAgICAgLmZl YXR1cmUgPSBpbmZvLT5mZWF0dXJlc1tmZWF0X3R5cGVdLAo+IC0gICAgICAgIC5wcm9wcyA9IGZl YXRfcHJvcHNbZmVhdF90eXBlXSwKPiArICAgICAgICAuZmVhdHVyZXMgPSBpbmZvLT5mZWF0dXJl cywKPiArICAgICAgICAudmFsID0gdmFsLAo+ICsgICAgICAgIC5hcnJheV9sZW4gPSBhcnJheV9s ZW4sCj4gKyAgICAgICAgLnByb3BzID0gZmVhdF9wcm9wcywKPiAgICAgIH07CgpBRkFJQ1QgZGF0 YSBzaG91bGQgYWxzbyBiZSBjb25zdCwgYnV0IEkgZ3Vlc3MgdGhpcyBpcyBub3QgZ29pbmcgdG8K d29yayBiZWNhdXNlIG9uX3NlbGVjdGVkX2NwdXMgZXhwZWN0cyBhIG5vbi1jb25zdCBwYXlsb2Fk PwoKVGhhbmtzLCBSb2dlci4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=