From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [RFC PATCH 1/9] x86/HVM: Introduce struct hvm_pi_ops Date: Wed, 12 Oct 2016 13:01:32 -0400 Message-ID: <20161012170132.GA24195@char.us.oracle.com> References: <1474264368-4104-1-git-send-email-suravee.suthikulpanit@amd.com> <1474264368-4104-2-git-send-email-suravee.suthikulpanit@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1474264368-4104-2-git-send-email-suravee.suthikulpanit@amd.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Suravee Suthikulpanit Cc: andrew.cooper3@citrix.com, sherry.hurwitz@amd.com, jbeulich@suse.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBTZXAgMTksIDIwMTYgYXQgMTI6NTI6NDBBTSAtMDUwMCwgU3VyYXZlZSBTdXRoaWt1 bHBhbml0IHdyb3RlOgo+IFRoZSBjdXJyZW50IGZ1bmN0aW9uIHBvaW50ZXJzIGZvciBtYW5hZ2lu ZyBodm0gcG9zdGVkIGludGVycnVwdAo+IGNhbiBiZSB1c2VkIGFsc28gYnkgU1ZNIEFWSUMuIFRo ZXJlZm9yZSwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZQo+IHN0cnVjdCBodm1fcGlfb3BzIGlu IHRoZSBzdHJ1Y3QgaHZtX2RvbWFpbiB0byBob2xkIHRoZW0uCj4gCj4gU2lnbmVkLW9mZi1ieTog U3VyYXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KCllv dSBzZWVtZWQgdG8gaGF2ZSBmb3Jnb3R0ZW4gdG8gQ0MgdGhlIFZNWCBtYWludGFpbmVyczoKCklO VEVMKFIpIFZUIEZPUiBYODYgKFZULVgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCk06ICBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBp bnRlbC5jb20+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCk06ICBL ZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgClM6ICBTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCj8KClJlZ2FyZGxlc3NzIG9mIHRoYXQsIFJldmlld2VkLWJ5 OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+Cj4gLS0tCj4g IHhlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jICAgICAgICAgfCAzMiArKysrKysrKystLS0tLS0t LS0tCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oICAgfCA2MyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9o dm0uaCAgICAgIHwgIDQgKy0tCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZteC92bWNzLmgg fCA1OSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICA0IGZpbGVzIGNoYW5n ZWQsIDgxIGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCj4g aW5kZXggMjc1OWU2Zi4uODYyMDY5NyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3Zt eC92bXguYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCj4gQEAgLTIwNCwxMiAr MjA0LDEyIEBAIHZvaWQgdm14X3BpX2hvb2tzX2Fzc2lnbihzdHJ1Y3QgZG9tYWluICpkKQo+ICAg ICAgaWYgKCAhaW9tbXVfaW50cG9zdCB8fCAhaGFzX2h2bV9jb250YWluZXJfZG9tYWluKGQpICkK PiAgICAgICAgICByZXR1cm47Cj4gIAo+IC0gICAgQVNTRVJUKCFkLT5hcmNoLmh2bV9kb21haW4u dm14LnZjcHVfYmxvY2spOwo+ICsgICAgQVNTRVJUKCFkLT5hcmNoLmh2bV9kb21haW4ucGlfb3Bz LnZjcHVfYmxvY2spOwo+ICAKPiAtICAgIGQtPmFyY2guaHZtX2RvbWFpbi52bXgudmNwdV9ibG9j ayA9IHZteF92Y3B1X2Jsb2NrOwo+IC0gICAgZC0+YXJjaC5odm1fZG9tYWluLnZteC5waV9zd2l0 Y2hfZnJvbSA9IHZteF9waV9zd2l0Y2hfZnJvbTsKPiAtICAgIGQtPmFyY2guaHZtX2RvbWFpbi52 bXgucGlfc3dpdGNoX3RvID0gdm14X3BpX3N3aXRjaF90bzsKPiAtICAgIGQtPmFyY2guaHZtX2Rv bWFpbi52bXgucGlfZG9fcmVzdW1lID0gdm14X3BpX2RvX3Jlc3VtZTsKPiArICAgIGQtPmFyY2gu aHZtX2RvbWFpbi5waV9vcHMudmNwdV9ibG9jayA9IHZteF92Y3B1X2Jsb2NrOwo+ICsgICAgZC0+ YXJjaC5odm1fZG9tYWluLnBpX29wcy5waV9zd2l0Y2hfZnJvbSA9IHZteF9waV9zd2l0Y2hfZnJv bTsKPiArICAgIGQtPmFyY2guaHZtX2RvbWFpbi5waV9vcHMucGlfc3dpdGNoX3RvID0gdm14X3Bp X3N3aXRjaF90bzsKPiArICAgIGQtPmFyY2guaHZtX2RvbWFpbi5waV9vcHMucGlfZG9fcmVzdW1l ID0gdm14X3BpX2RvX3Jlc3VtZTsKPiAgfQo+ICAKPiAgLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxs ZWQgd2hlbiBwY2lkZXZzX2xvY2sgaXMgaGVsZCAqLwo+IEBAIC0yMTgsMTIgKzIxOCwxMiBAQCB2 b2lkIHZteF9waV9ob29rc19kZWFzc2lnbihzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgaWYgKCAh aW9tbXVfaW50cG9zdCB8fCAhaGFzX2h2bV9jb250YWluZXJfZG9tYWluKGQpICkKPiAgICAgICAg ICByZXR1cm47Cj4gIAo+IC0gICAgQVNTRVJUKGQtPmFyY2guaHZtX2RvbWFpbi52bXgudmNwdV9i bG9jayk7Cj4gKyAgICBBU1NFUlQoZC0+YXJjaC5odm1fZG9tYWluLnBpX29wcy52Y3B1X2Jsb2Nr KTsKPiAgCj4gLSAgICBkLT5hcmNoLmh2bV9kb21haW4udm14LnZjcHVfYmxvY2sgPSBOVUxMOwo+ IC0gICAgZC0+YXJjaC5odm1fZG9tYWluLnZteC5waV9zd2l0Y2hfZnJvbSA9IE5VTEw7Cj4gLSAg ICBkLT5hcmNoLmh2bV9kb21haW4udm14LnBpX3N3aXRjaF90byA9IE5VTEw7Cj4gLSAgICBkLT5h cmNoLmh2bV9kb21haW4udm14LnBpX2RvX3Jlc3VtZSA9IE5VTEw7Cj4gKyAgICBkLT5hcmNoLmh2 bV9kb21haW4ucGlfb3BzLnZjcHVfYmxvY2sgPSBOVUxMOwo+ICsgICAgZC0+YXJjaC5odm1fZG9t YWluLnBpX29wcy5waV9zd2l0Y2hfZnJvbSA9IE5VTEw7Cj4gKyAgICBkLT5hcmNoLmh2bV9kb21h aW4ucGlfb3BzLnBpX3N3aXRjaF90byA9IE5VTEw7Cj4gKyAgICBkLT5hcmNoLmh2bV9kb21haW4u cGlfb3BzLnBpX2RvX3Jlc3VtZSA9IE5VTEw7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgdm14X2Rv bWFpbl9pbml0aWFsaXNlKHN0cnVjdCBkb21haW4gKmQpCj4gQEAgLTkwMSw4ICs5MDEsOCBAQCBz dGF0aWMgdm9pZCB2bXhfY3R4dF9zd2l0Y2hfZnJvbShzdHJ1Y3QgdmNwdSAqdikKPiAgICAgIHZt eF9yZXN0b3JlX2hvc3RfbXNycygpOwo+ICAgICAgdm14X3NhdmVfZHIodik7Cj4gIAo+IC0gICAg aWYgKCB2LT5kb21haW4tPmFyY2guaHZtX2RvbWFpbi52bXgucGlfc3dpdGNoX2Zyb20gKQo+IC0g ICAgICAgIHYtPmRvbWFpbi0+YXJjaC5odm1fZG9tYWluLnZteC5waV9zd2l0Y2hfZnJvbSh2KTsK PiArICAgIGlmICggdi0+ZG9tYWluLT5hcmNoLmh2bV9kb21haW4ucGlfb3BzLnBpX3N3aXRjaF9m cm9tICkKPiArICAgICAgICB2LT5kb21haW4tPmFyY2guaHZtX2RvbWFpbi5waV9vcHMucGlfc3dp dGNoX2Zyb20odik7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHZteF9jdHh0X3N3aXRjaF90byhz dHJ1Y3QgdmNwdSAqdikKPiBAQCAtOTE2LDggKzkxNiw4IEBAIHN0YXRpYyB2b2lkIHZteF9jdHh0 X3N3aXRjaF90byhzdHJ1Y3QgdmNwdSAqdikKPiAgICAgIHZteF9yZXN0b3JlX2d1ZXN0X21zcnMo dik7Cj4gICAgICB2bXhfcmVzdG9yZV9kcih2KTsKPiAgCj4gLSAgICBpZiAoIHYtPmRvbWFpbi0+ YXJjaC5odm1fZG9tYWluLnZteC5waV9zd2l0Y2hfdG8gKQo+IC0gICAgICAgIHYtPmRvbWFpbi0+ YXJjaC5odm1fZG9tYWluLnZteC5waV9zd2l0Y2hfdG8odik7Cj4gKyAgICBpZiAoIHYtPmRvbWFp bi0+YXJjaC5odm1fZG9tYWluLnBpX29wcy5waV9zd2l0Y2hfdG8gKQo+ICsgICAgICAgIHYtPmRv bWFpbi0+YXJjaC5odm1fZG9tYWluLnBpX29wcy5waV9zd2l0Y2hfdG8odik7Cj4gIH0KPiAgCj4g IAo+IEBAIC0zOTE0LDggKzM5MTQsOCBAQCB2b2lkIHZteF92bWVudGVyX2hlbHBlcihjb25zdCBz dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKPiAgICAgIHN0cnVjdCBodm1fdmNwdV9hc2lkICpw X2FzaWQ7Cj4gICAgICBib29sX3QgbmVlZF9mbHVzaDsKPiAgCj4gLSAgICBpZiAoIGN1cnItPmRv bWFpbi0+YXJjaC5odm1fZG9tYWluLnZteC5waV9kb19yZXN1bWUgKQo+IC0gICAgICAgIGN1cnIt PmRvbWFpbi0+YXJjaC5odm1fZG9tYWluLnZteC5waV9kb19yZXN1bWUoY3Vycik7Cj4gKyAgICBp ZiAoIGN1cnItPmRvbWFpbi0+YXJjaC5odm1fZG9tYWluLnBpX29wcy5waV9kb19yZXN1bWUgKQo+ ICsgICAgICAgIGN1cnItPmRvbWFpbi0+YXJjaC5odm1fZG9tYWluLnBpX29wcy5waV9kb19yZXN1 bWUoY3Vycik7Cj4gIAo+ICAgICAgaWYgKCAhY3B1X2hhc192bXhfdnBpZCApCj4gICAgICAgICAg Z290byBvdXQ7Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5o IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKPiBpbmRleCBmMzRkNzg0Li43Nzk5 MjdiIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oCj4gKysr IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKPiBAQCAtNzIsNiArNzIsNjcgQEAg c3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgewo+ICAgICAgYm9vbF90ICAgICAgICAgICAgICAgICBi dWZpb3JlcV9hdG9taWM7Cj4gIH07Cj4gIAo+ICtzdHJ1Y3QgaHZtX3BpX29wcyB7Cj4gKyAgICAv Kgo+ICsgICAgICogVG8gaGFuZGxlIHBvc3RlZCBpbnRlcnJ1cHRzIGNvcnJlY3RseSwgd2UgbmVl ZCB0byBzZXQgdGhlIGZvbGxvd2luZwo+ICsgICAgICogc3RhdGU6Cj4gKyAgICAgKgo+ICsgICAg ICogKiBUaGUgUEkgbm90aWZpY2F0aW9uIHZlY3RvciAoTlYpCj4gKyAgICAgKiAqIFRoZSBQSSBu b3RpZmljYXRpb24gZGVzdGluYXRpb24gcHJvY2Vzc29yIChORFNUKQo+ICsgICAgICogKiBUaGUg UEkgInN1cHByZXNzIG5vdGlmaWNhdGlvbiIgYml0IChTTikKPiArICAgICAqICogVGhlIHZjcHUg cGkgImJsb2NrZWQiIGxpc3QKPiArICAgICAqCj4gKyAgICAgKiBJZiBhIFZNIGlzIGN1cnJlbnRs eSBydW5uaW5nLCB3ZSB3YW50IHRoZSBQSSBkZWxpdmVyZWQgdG8gdGhlIGd1ZXN0IHZjcHUKPiAr ICAgICAqIG9uIHRoZSBwcm9wZXIgcGNwdSAoTkRTVCA9IHYtPnByb2Nlc3NvciwgU04gY2xlYXIp Lgo+ICsgICAgICoKPiArICAgICAqIElmIHRoZSB2bSBpcyBibG9ja2VkLCB3ZSB3YW50IHRoZSBQ SSBkZWxpdmVyZWQgdG8gWGVuIHNvIHRoYXQgaXQgY2FuCj4gKyAgICAgKiB3YWtlIGl0IHVwICAo U04gY2xlYXIsIE5WID0gcGlfd2FrZXVwX3ZlY3RvciwgdmNwdSBvbiBibG9jayBsaXN0KS4KPiAr ICAgICAqCj4gKyAgICAgKiBJZiB0aGUgVk0gaXMgY3VycmVudGx5IGVpdGhlciBwcmVlbXB0ZWQg b3Igb2ZmbGluZSAoaS5lLiwgbm90IHJ1bm5pbmcKPiArICAgICAqIGJlY2F1c2Ugb2Ygc29tZSBy ZWFzb24gb3RoZXIgdGhhbiBibG9ja2luZyB3YWl0aW5nIGZvciBhbiBpbnRlcnJ1cHQpLAo+ICsg ICAgICogdGhlcmUncyBub3RoaW5nIFhlbiBjYW4gZG8gLS0gd2Ugd2FudCB0aGUgaW50ZXJydXB0 IHBlbmRpbmcgYml0IHNldCBpbgo+ICsgICAgICogdGhlIGd1ZXN0LCBidXQgd2UgZG9uJ3Qgd2Fu dCB0byBib3RoZXIgWGVuIHdpdGggYW4gaW50ZXJydXB0IChTTiBjbGVhcikuCj4gKyAgICAgKgo+ ICsgICAgICogVGhlcmUncyBhIGJyaWVmIHdpbmRvdyBvZiB0aW1lIGJldHdlZW4gdm14X2ludHJf YXNzaXN0KCkgYW5kIGNoZWNraW5nCj4gKyAgICAgKiBzb2Z0aXJxcyB3aGVyZSBpZiBhbiBpbnRl cnJ1cHQgY29tZXMgaW4gaXQgbWF5IGJlIGxvc3Q7IHNvIHdlIG5lZWQgWGVuCj4gKyAgICAgKiB0 byBnZXQgYW4gaW50ZXJydXB0IGFuZCByYWlzZSBhIHNvZnRpcnEgc28gdGhhdCBpdCB3aWxsIGdv IHRocm91Z2ggdGhlCj4gKyAgICAgKiB2bXhfaW50cl9hc3Npc3QoKSBwYXRoIGFnYWluIChTTiBj bGVhciwgTlYgPSBwb3N0ZWRfaW50ZXJydXB0KS4KPiArICAgICAqCj4gKyAgICAgKiBUaGUgd2F5 IHdlIGltcGxlbWVudCB0aGlzIG5vdyBpcyBieSBsb29raW5nIGF0IHdoYXQgbmVlZHMgdG8gaGFw cGVuIG9uCj4gKyAgICAgKiB0aGUgZm9sbG93aW5nIHJ1bnN0YXRlIHRyYW5zaXRpb25zOgo+ICsg ICAgICoKPiArICAgICAqIEE6IHJ1bm5hYmxlIC0+IHJ1bm5pbmcKPiArICAgICAqICAtIFNOID0g MAo+ICsgICAgICogIC0gTkRTVCA9IHYtPnByb2Nlc3Nvcgo+ICsgICAgICogQjogcnVubmluZyAt PiBydW5uYWJsZQo+ICsgICAgICogIC0gU04gPSAxCj4gKyAgICAgKiBDOiBydW5uaW5nIC0+IGJs b2NrZWQKPiArICAgICAqICAtIE5WID0gcGlfd2FrZXVwX3ZlY3Rvcgo+ICsgICAgICogIC0gQWRk IHZjcHUgdG8gYmxvY2tlZCBsaXN0Cj4gKyAgICAgKiBEOiBibG9ja2VkIC0+IHJ1bm5hYmxlCj4g KyAgICAgKiAgLSBOViA9IHBvc3RlZF9pbnRyX3ZlY3Rvcgo+ICsgICAgICogIC0gVGFrZSB2Y3B1 IG9mZiBibG9ja2VkIGxpc3QKPiArICAgICAqCj4gKyAgICAgKiBGb3IgdHJhbnNpdGlvbnMgQSBh bmQgQiwgd2UgYWRkIGhvb2tzIGludG8gdm14X2N0eHRfc3dpdGNoX3tmcm9tLHRvfQo+ICsgICAg ICogcGF0aHMuCj4gKyAgICAgKgo+ICsgICAgICogRm9yIHRyYW5zaXRpb24gQywgd2UgYWRkIGEg bmV3IGFyY2ggaG9vaywgYXJjaF92Y3B1X2Jsb2NrKCksIHdoaWNoIGlzCj4gKyAgICAgKiBjYWxs ZWQgZnJvbSB2Y3B1X2Jsb2NrKCkgYW5kIHZjcHVfZG9fcG9sbCgpLgo+ICsgICAgICoKPiArICAg ICAqIEZvciB0cmFuc2l0aW9uIEQsIHJhdGhlciB0aGFuIGFkZCBhbiBleHRyYSBhcmNoIGhvb2sg b24gdmNwdV93YWtlLCB3ZQo+ICsgICAgICogYWRkIGEgaG9vayBvbiB0aGUgdm1lbnRyeSBwYXRo IHdoaWNoIGNoZWNrcyB0byBzZWUgaWYgZWl0aGVyIG9mIHRoZSB0d28KPiArICAgICAqIGFjdGlv bnMgbmVlZCB0byBiZSB0YWtlbi4KPiArICAgICAqCj4gKyAgICAgKiBUaGVzZSBob29rcyBvbmx5 IG5lZWQgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGRvbWFpbiBpbiBxdWVzdGlvbiBhY3R1YWxseQo+ ICsgICAgICogaGFzIGEgcGh5c2ljYWwgZGV2aWNlIGFzc2lnbmVkIHRvIGl0LCBzbyB3ZSBzZXQg YW5kIGNsZWFyIHRoZSBjYWxsYmFja3MKPiArICAgICAqIGFzIGFwcHJvcHJpYXRlIHdoZW4gZGV2 aWNlIGFzc2lnbm1lbnQgY2hhbmdlcy4KPiArICAgICAqLwo+ICsgICAgdm9pZCAoKnZjcHVfYmxv Y2spIChzdHJ1Y3QgdmNwdSAqKTsKPiArICAgIHZvaWQgKCpwaV9zd2l0Y2hfZnJvbSkgKHN0cnVj dCB2Y3B1ICp2KTsKPiArICAgIHZvaWQgKCpwaV9zd2l0Y2hfdG8pIChzdHJ1Y3QgdmNwdSAqdik7 Cj4gKyAgICB2b2lkICgqcGlfZG9fcmVzdW1lKSAoc3RydWN0IHZjcHUgKnYpOwo+ICt9Owo+ICsK PiAgc3RydWN0IGh2bV9kb21haW4gewo+ICAgICAgLyogR3Vlc3QgcGFnZSByYW5nZSB1c2VkIGZv ciBub24tZGVmYXVsdCBpb3JlcSBzZXJ2ZXJzICovCj4gICAgICBzdHJ1Y3Qgewo+IEBAIC0xNDgs NiArMjA5LDggQEAgc3RydWN0IGh2bV9kb21haW4gewo+ICAgICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgbGlzdDsKPiAgICAgIH0gd3JpdGVfbWFwOwo+ICAKPiArICAgIHN0cnVjdCBodm1fcGlfb3Bz IHBpX29wczsKPiArCj4gICAgICB1bmlvbiB7Cj4gICAgICAgICAgc3RydWN0IHZteF9kb21haW4g dm14Owo+ICAgICAgICAgIHN0cnVjdCBzdm1fZG9tYWluIHN2bTsKPiBkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0u aAo+IGluZGV4IDgxYjYwZDUuLmM4MzJkOWEgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9odm0vaHZtLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaAo+IEBA IC02MjEsOCArNjIxLDggQEAgdW5zaWduZWQgbG9uZyBodm1fY3I0X2d1ZXN0X3Jlc2VydmVkX2Jp dHMoY29uc3Qgc3RydWN0IHZjcHUgKnYsIGJvb2xfdCByZXN0b3JlKTsKPiAgICAgIHN0cnVjdCB2 Y3B1ICp2XyA9ICh2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAg ICAgIHN0cnVjdCBkb21haW4gKmRfID0gdl8tPmRvbWFpbjsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKPiAgICAgIGlmICggaGFzX2h2bV9jb250YWluZXJfZG9tYWluKGRfKSAmJiAgICAg ICAgICAgICAgICAgICAgICAgIFwKPiAtICAgICAgICAgKGNwdV9oYXNfdm14ICYmIGRfLT5hcmNo Lmh2bV9kb21haW4udm14LnZjcHVfYmxvY2spICkgIFwKPiAtICAgICAgICBkXy0+YXJjaC5odm1f ZG9tYWluLnZteC52Y3B1X2Jsb2NrKHZfKTsgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAg KGRfLT5hcmNoLmh2bV9kb21haW4ucGlfb3BzLnZjcHVfYmxvY2spICkgICAgICAgICAgXAo+ICsg ICAgICAgIGRfLT5hcmNoLmh2bV9kb21haW4ucGlfb3BzLnZjcHVfYmxvY2sodl8pOyAgICAgICAg ICBcCj4gIH0pCj4gIAo+ICAjZW5kaWYgLyogX19BU01fWDg2X0hWTV9IVk1fSF9fICovCj4gZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZteC92bWNzLmggYi94ZW4vaW5jbHVk ZS9hc20teDg2L2h2bS92bXgvdm1jcy5oCj4gaW5kZXggOTk3ZjRmNS4uNGVjOGIwOCAxMDA2NDQK PiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgvdm1jcy5oCj4gKysrIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vdm14L3ZtY3MuaAo+IEBAIC03Nyw2NSArNzcsNiBAQCBzdHJ1Y3Qg dm14X2RvbWFpbiB7Cj4gICAgICB1bnNpZ25lZCBsb25nIGFwaWNfYWNjZXNzX21mbjsKPiAgICAg IC8qIFZNWF9ET01BSU5fKiAqLwo+ICAgICAgdW5zaWduZWQgaW50IHN0YXR1czsKPiAtCj4gLSAg ICAvKgo+IC0gICAgICogVG8gaGFuZGxlIHBvc3RlZCBpbnRlcnJ1cHRzIGNvcnJlY3RseSwgd2Ug bmVlZCB0byBzZXQgdGhlIGZvbGxvd2luZwo+IC0gICAgICogc3RhdGU6Cj4gLSAgICAgKgo+IC0g ICAgICogKiBUaGUgUEkgbm90aWZpY2F0aW9uIHZlY3RvciAoTlYpCj4gLSAgICAgKiAqIFRoZSBQ SSBub3RpZmljYXRpb24gZGVzdGluYXRpb24gcHJvY2Vzc29yIChORFNUKQo+IC0gICAgICogKiBU aGUgUEkgInN1cHByZXNzIG5vdGlmaWNhdGlvbiIgYml0IChTTikKPiAtICAgICAqICogVGhlIHZj cHUgcGkgImJsb2NrZWQiIGxpc3QKPiAtICAgICAqCj4gLSAgICAgKiBJZiBhIFZNIGlzIGN1cnJl bnRseSBydW5uaW5nLCB3ZSB3YW50IHRoZSBQSSBkZWxpdmVyZWQgdG8gdGhlIGd1ZXN0IHZjcHUK PiAtICAgICAqIG9uIHRoZSBwcm9wZXIgcGNwdSAoTkRTVCA9IHYtPnByb2Nlc3NvciwgU04gY2xl YXIpLgo+IC0gICAgICoKPiAtICAgICAqIElmIHRoZSB2bSBpcyBibG9ja2VkLCB3ZSB3YW50IHRo ZSBQSSBkZWxpdmVyZWQgdG8gWGVuIHNvIHRoYXQgaXQgY2FuCj4gLSAgICAgKiB3YWtlIGl0IHVw ICAoU04gY2xlYXIsIE5WID0gcGlfd2FrZXVwX3ZlY3RvciwgdmNwdSBvbiBibG9jayBsaXN0KS4K PiAtICAgICAqCj4gLSAgICAgKiBJZiB0aGUgVk0gaXMgY3VycmVudGx5IGVpdGhlciBwcmVlbXB0 ZWQgb3Igb2ZmbGluZSAoaS5lLiwgbm90IHJ1bm5pbmcKPiAtICAgICAqIGJlY2F1c2Ugb2Ygc29t ZSByZWFzb24gb3RoZXIgdGhhbiBibG9ja2luZyB3YWl0aW5nIGZvciBhbiBpbnRlcnJ1cHQpLAo+ IC0gICAgICogdGhlcmUncyBub3RoaW5nIFhlbiBjYW4gZG8gLS0gd2Ugd2FudCB0aGUgaW50ZXJy dXB0IHBlbmRpbmcgYml0IHNldCBpbgo+IC0gICAgICogdGhlIGd1ZXN0LCBidXQgd2UgZG9uJ3Qg d2FudCB0byBib3RoZXIgWGVuIHdpdGggYW4gaW50ZXJydXB0IChTTiBjbGVhcikuCj4gLSAgICAg Kgo+IC0gICAgICogVGhlcmUncyBhIGJyaWVmIHdpbmRvdyBvZiB0aW1lIGJldHdlZW4gdm14X2lu dHJfYXNzaXN0KCkgYW5kIGNoZWNraW5nCj4gLSAgICAgKiBzb2Z0aXJxcyB3aGVyZSBpZiBhbiBp bnRlcnJ1cHQgY29tZXMgaW4gaXQgbWF5IGJlIGxvc3Q7IHNvIHdlIG5lZWQgWGVuCj4gLSAgICAg KiB0byBnZXQgYW4gaW50ZXJydXB0IGFuZCByYWlzZSBhIHNvZnRpcnEgc28gdGhhdCBpdCB3aWxs IGdvIHRocm91Z2ggdGhlCj4gLSAgICAgKiB2bXhfaW50cl9hc3Npc3QoKSBwYXRoIGFnYWluIChT TiBjbGVhciwgTlYgPSBwb3N0ZWRfaW50ZXJydXB0KS4KPiAtICAgICAqCj4gLSAgICAgKiBUaGUg d2F5IHdlIGltcGxlbWVudCB0aGlzIG5vdyBpcyBieSBsb29raW5nIGF0IHdoYXQgbmVlZHMgdG8g aGFwcGVuIG9uCj4gLSAgICAgKiB0aGUgZm9sbG93aW5nIHJ1bnN0YXRlIHRyYW5zaXRpb25zOgo+ IC0gICAgICoKPiAtICAgICAqIEE6IHJ1bm5hYmxlIC0+IHJ1bm5pbmcKPiAtICAgICAqICAtIFNO ID0gMAo+IC0gICAgICogIC0gTkRTVCA9IHYtPnByb2Nlc3Nvcgo+IC0gICAgICogQjogcnVubmlu ZyAtPiBydW5uYWJsZQo+IC0gICAgICogIC0gU04gPSAxCj4gLSAgICAgKiBDOiBydW5uaW5nIC0+ IGJsb2NrZWQKPiAtICAgICAqICAtIE5WID0gcGlfd2FrZXVwX3ZlY3Rvcgo+IC0gICAgICogIC0g QWRkIHZjcHUgdG8gYmxvY2tlZCBsaXN0Cj4gLSAgICAgKiBEOiBibG9ja2VkIC0+IHJ1bm5hYmxl Cj4gLSAgICAgKiAgLSBOViA9IHBvc3RlZF9pbnRyX3ZlY3Rvcgo+IC0gICAgICogIC0gVGFrZSB2 Y3B1IG9mZiBibG9ja2VkIGxpc3QKPiAtICAgICAqCj4gLSAgICAgKiBGb3IgdHJhbnNpdGlvbnMg QSBhbmQgQiwgd2UgYWRkIGhvb2tzIGludG8gdm14X2N0eHRfc3dpdGNoX3tmcm9tLHRvfQo+IC0g ICAgICogcGF0aHMuCj4gLSAgICAgKgo+IC0gICAgICogRm9yIHRyYW5zaXRpb24gQywgd2UgYWRk IGEgbmV3IGFyY2ggaG9vaywgYXJjaF92Y3B1X2Jsb2NrKCksIHdoaWNoIGlzCj4gLSAgICAgKiBj YWxsZWQgZnJvbSB2Y3B1X2Jsb2NrKCkgYW5kIHZjcHVfZG9fcG9sbCgpLgo+IC0gICAgICoKPiAt ICAgICAqIEZvciB0cmFuc2l0aW9uIEQsIHJhdGhlciB0aGFuIGFkZCBhbiBleHRyYSBhcmNoIGhv b2sgb24gdmNwdV93YWtlLCB3ZQo+IC0gICAgICogYWRkIGEgaG9vayBvbiB0aGUgdm1lbnRyeSBw YXRoIHdoaWNoIGNoZWNrcyB0byBzZWUgaWYgZWl0aGVyIG9mIHRoZSB0d28KPiAtICAgICAqIGFj dGlvbnMgbmVlZCB0byBiZSB0YWtlbi4KPiAtICAgICAqCj4gLSAgICAgKiBUaGVzZSBob29rcyBv bmx5IG5lZWQgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGRvbWFpbiBpbiBxdWVzdGlvbiBhY3R1YWxs eQo+IC0gICAgICogaGFzIGEgcGh5c2ljYWwgZGV2aWNlIGFzc2lnbmVkIHRvIGl0LCBzbyB3ZSBz ZXQgYW5kIGNsZWFyIHRoZSBjYWxsYmFja3MKPiAtICAgICAqIGFzIGFwcHJvcHJpYXRlIHdoZW4g ZGV2aWNlIGFzc2lnbm1lbnQgY2hhbmdlcy4KPiAtICAgICAqLwo+IC0gICAgdm9pZCAoKnZjcHVf YmxvY2spIChzdHJ1Y3QgdmNwdSAqKTsKPiAtICAgIHZvaWQgKCpwaV9zd2l0Y2hfZnJvbSkgKHN0 cnVjdCB2Y3B1ICp2KTsKPiAtICAgIHZvaWQgKCpwaV9zd2l0Y2hfdG8pIChzdHJ1Y3QgdmNwdSAq dik7Cj4gLSAgICB2b2lkICgqcGlfZG9fcmVzdW1lKSAoc3RydWN0IHZjcHUgKnYpOwo+ICB9Owo+ ICAKPiAgc3RydWN0IHBpX2Rlc2Mgewo+IC0tIAo+IDEuOS4xCj4gCj4gCj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Cj4gWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiBodHRwczovL2xpc3RzLnhlbi5vcmcveGVu LWRldmVsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK