From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau =?iso-8859-1?Q?Monn=E9?= Subject: Re: [PATCH V3 2/29] VIOMMU: Add vIOMMU helper functions to create, destroy vIOMMU instance Date: Wed, 18 Oct 2017 15:05:41 +0100 Message-ID: <20171018140541.75y4yhy6i2ydnm7t@dhcp-3-128.uk.xensource.com> References: <1506049330-11196-1-git-send-email-tianyu.lan@intel.com> <1506049330-11196-3-git-send-email-tianyu.lan@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: <1506049330-11196-3-git-send-email-tianyu.lan@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Lan Tianyu Cc: tim@xen.org, kevin.tian@intel.com, sstabellini@kernel.org, wei.liu2@citrix.com, konrad.wilk@oracle.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, xen-devel@lists.xen.org, jbeulich@suse.com, chao.gao@intel.com List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBTZXAgMjEsIDIwMTcgYXQgMTE6MDE6NDNQTSAtMDQwMCwgTGFuIFRpYW55dSB3cm90 ZToKPiBUaGlzIHBhdGNoIGlzIHRvIGludHJvZHVjZSBhbiBhYnN0cmFjdCBsYXllciBmb3IgYXJj aCB2SU9NTVUgaW1wbGVtZW50YXRpb24KPiB0byBkZWFsIHdpdGggcmVxdWVzdHMgZnJvbSBkb20w LiBBcmNoIHZJT01NVSBjb2RlIG5lZWRzIHRvIHByb3ZpZGUgY2FsbGJhY2sKPiB0byBkbyBjcmVh dGUgYW5kIGRlc3Ryb3kgb3BlcmF0aW9uLgo+IAo+IFNpZ25lZC1vZmYtYnk6IExhbiBUaWFueXUg PHRpYW55dS5sYW5AaW50ZWwuY29tPgo+IC0tLQo+ICBkb2NzL21pc2MveGVuLWNvbW1hbmQtbGlu ZS5tYXJrZG93biB8ICAgNyArKwo+ICB4ZW4vYXJjaC94ODYvS2NvbmZpZyAgICAgICAgICAgICAg ICB8ICAgMSArCj4gIHhlbi9jb21tb24vS2NvbmZpZyAgICAgICAgICAgICAgICAgIHwgICAzICsK PiAgeGVuL2NvbW1vbi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICB4ZW4vY29t bW9uL2RvbWFpbi5jICAgICAgICAgICAgICAgICB8ICAgNCArCj4gIHhlbi9jb21tb24vdmlvbW11 LmMgICAgICAgICAgICAgICAgIHwgMTQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwo+ICB4ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCAgICAgICAgICAgICB8ICAgOCArKwo+ICB4 ZW4vaW5jbHVkZS94ZW4vdmlvbW11LmggICAgICAgICAgICB8ICA2MyArKysrKysrKysrKysrKysr Cj4gIDggZmlsZXMgY2hhbmdlZCwgMjMxIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IHhlbi9jb21tb24vdmlvbW11LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRl L3hlbi92aW9tbXUuaAo+IAo+IGRpZmYgLS1naXQgYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGlu ZS5tYXJrZG93biBiL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCj4gaW5kZXgg OTc5N2M4ZC4uZGZkMWRiNSAxMDA2NDQKPiAtLS0gYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGlu ZS5tYXJrZG93bgo+ICsrKyBiL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCj4g QEAgLTE4MjUsMyArMTgyNSwxMCBAQCBtb2RlLgo+ICA+IERlZmF1bHQ6IGB0cnVlYAo+ICAKPiAg UGVybWl0IHVzZSBvZiB0aGUgYHhzYXZlL3hyc3RvcmAgaW5zdHJ1Y3Rpb25zLgo+ICsKPiArIyMj IHZpb21tdQo+ICs+IGA9IDxib29sZWFuPmAKPiArCj4gKz4gRGVmYXVsdDogYGZhbHNlYAo+ICsK PiArUGVybWl0IHVzZSBvZiB2aW9tbXUgaW50ZXJmYWNlIHRvIGNyZWF0ZSBhbmQgZGVzdHJveSB2 aW9tbXUgZGV2aWNlIG1vZGVsLgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvS2NvbmZpZyBi L3hlbi9hcmNoL3g4Ni9LY29uZmlnCj4gaW5kZXggMzBjMjc2OS4uMWYxZGU5NiAxMDA2NDQKPiAt LS0gYS94ZW4vYXJjaC94ODYvS2NvbmZpZwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9LY29uZmlnCj4g QEAgLTIzLDYgKzIzLDcgQEAgY29uZmlnIFg4Ngo+ICAJc2VsZWN0IEhBU19QRFgKPiAgCXNlbGVj dCBOVU1BCj4gIAlzZWxlY3QgVkdBCj4gKwlzZWxlY3QgVklPTU1VCj4gIAo+ICBjb25maWcgQVJD SF9ERUZDT05GSUcKPiAgCXN0cmluZwo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL0tjb25maWcg Yi94ZW4vY29tbW9uL0tjb25maWcKPiBpbmRleCBkYzhlODc2Li4yYWQyYzhkIDEwMDY0NAo+IC0t LSBhL3hlbi9jb21tb24vS2NvbmZpZwo+ICsrKyBiL3hlbi9jb21tb24vS2NvbmZpZwo+IEBAIC00 OSw2ICs0OSw5IEBAIGNvbmZpZyBIQVNfQ0hFQ0tQT0xJQ1kKPiAgCXN0cmluZwo+ICAJb3B0aW9u IGVudj0iWEVOX0hBU19DSEVDS1BPTElDWSIKPiAgCj4gK2NvbmZpZyBWSU9NTVUKPiArCWJvb2wK PiArCj4gIGNvbmZpZyBLRVhFQwo+ICAJYm9vbCAia2V4ZWMgc3VwcG9ydCIKPiAgCWRlZmF1bHQg eQo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL01ha2VmaWxlIGIveGVuL2NvbW1vbi9NYWtlZmls ZQo+IGluZGV4IDM5ZTI2MTQuLmRhMzJmNzEgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9NYWtl ZmlsZQo+ICsrKyBiL3hlbi9jb21tb24vTWFrZWZpbGUKPiBAQCAtNTYsNiArNTYsNyBAQCBvYmot eSArPSB0aW1lLm8KPiAgb2JqLXkgKz0gdGltZXIubwo+ICBvYmoteSArPSB0cmFjZS5vCj4gIG9i ai15ICs9IHZlcnNpb24ubwo+ICtvYmotJChDT05GSUdfVklPTU1VKSArPSB2aW9tbXUubwo+ICBv YmoteSArPSB2aXJ0dWFsX3JlZ2lvbi5vCj4gIG9iai15ICs9IHZtX2V2ZW50Lm8KPiAgb2JqLXkg Kz0gdm1hcC5vCj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZG9tYWluLmMgYi94ZW4vY29tbW9u L2RvbWFpbi5jCj4gaW5kZXggNWFlYmNmMi4uY2RiMWM5ZCAxMDA2NDQKPiAtLS0gYS94ZW4vY29t bW9uL2RvbWFpbi5jCj4gKysrIGIveGVuL2NvbW1vbi9kb21haW4uYwo+IEBAIC04MTQsNiArODE0 LDEwIEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlX2RvbWFpbl9kZXN0cm95KHN0cnVjdCByY3VfaGVh ZCAqaGVhZCkKPiAgCj4gICAgICBzY2hlZF9kZXN0cm95X2RvbWFpbihkKTsKPiAgCj4gKyNpZmRl ZiBDT05GSUdfVklPTU1VCj4gKyAgICB2aW9tbXVfZGVzdHJveV9kb21haW4oZCk7Cj4gKyNlbmRp Zgo+ICsKPiAgICAgIC8qIEZyZWUgcGFnZSB1c2VkIGJ5IHhlbiBvcHJvZmlsZSBidWZmZXIuICov Cj4gICNpZmRlZiBDT05GSUdfWEVOT1BST0YKPiAgICAgIGZyZWVfeGVub3Byb2ZfcGFnZXMoZCk7 Cj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vdmlvbW11LmMgYi94ZW4vY29tbW9uL3Zpb21tdS5j Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi42NGQ5MWU2Cj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL3hlbi9jb21tb24vdmlvbW11LmMKPiBAQCAtMCwwICsxLDE0NCBAQAo+ ICsvKgo+ICsgKiBjb21tb24vdmlvbW11LmMKPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE3 IEludGVsIENvcnBvcmF0aW9uCj4gKyAqIEF1dGhvcjogTGFuIFRpYW55dSA8dGlhbnl1LmxhbkBp bnRlbC5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cj4gKyAqIHVuZGVyIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCj4gKyAq IHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24u Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3 aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKPiArICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCj4gKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IKPiArICogbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9u ZyB3aXRoCj4gKyAqIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+Lgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KPiArI2lu Y2x1ZGUgPHhlbi9zcGlubG9jay5oPgo+ICsjaW5jbHVkZSA8eGVuL3R5cGVzLmg+Cj4gKyNpbmNs dWRlIDx4ZW4vdmlvbW11Lmg+Cj4gKwo+ICtib29sIF9fcmVhZF9tb3N0bHkgb3B0X3Zpb21tdTsK PiArYm9vbGVhbl9wYXJhbSgidmlvbW11Iiwgb3B0X3Zpb21tdSk7Cj4gKwo+ICtzdGF0aWMgREVG SU5FX1NQSU5MT0NLKHR5cGVfbGlzdF9sb2NrKTsKPiArc3RhdGljIExJU1RfSEVBRCh0eXBlX2xp c3QpOwo+ICsKPiArc3RydWN0IHZpb21tdV90eXBlIHsKPiArICAgIHVpbnQ2NF90IHR5cGU7CgpU aGUgY29tbWVudCBJJ3ZlIG1hZGUgYWJvdXQgdHlwZSBiZWluZyB1aW50NjRfdCBpbiB0aGUgb3Ro ZXIgcGF0Y2gKc3RhbmRzIGhlcmUuCgo+ICsgICAgc3RydWN0IHZpb21tdV9vcHMgKm9wczsKPiAr ICAgIHN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKPiArfTsKPiArCj4gK2ludCB2aW9tbXVfZGVzdHJv eV9kb21haW4oc3RydWN0IGRvbWFpbiAqZCkKPiArewo+ICsgICAgaW50IHJldDsKPiArCj4gKyAg ICBpZiAoICFkLT52aW9tbXUgKQo+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwoKRU5PREVWIHdv dWxkIGJlIGJldHRlci4KCj4gKwo+ICsgICAgcmV0ID0gZC0+dmlvbW11LT5vcHMtPmRlc3Ryb3ko ZC0+dmlvbW11KTsKPiArICAgIGlmICggcmV0IDwgMCApCj4gKyAgICAgICAgcmV0dXJuIHJldDsK PiArCj4gKyAgICB4ZnJlZShkLT52aW9tbXUpOwo+ICsgICAgZC0+dmlvbW11ID0gTlVMTDsKCk5l d2xpbmUgcHJlZmVyYWJseS4KCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHN0 cnVjdCB2aW9tbXVfdHlwZSAqdmlvbW11X2dldF90eXBlKHVpbnQ2NF90IHR5cGUpCj4gK3sKPiAr ICAgIHN0cnVjdCB2aW9tbXVfdHlwZSAqdmlvbW11X3R5cGUgPSBOVUxMOwo+ICsKPiArICAgIHNw aW5fbG9jaygmdHlwZV9saXN0X2xvY2spOwo+ICsgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggdmlv bW11X3R5cGUsICZ0eXBlX2xpc3QsIG5vZGUgKQo+ICsgICAgewo+ICsgICAgICAgIGlmICggdmlv bW11X3R5cGUtPnR5cGUgPT0gdHlwZSApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBzcGlu X3VubG9jaygmdHlwZV9saXN0X2xvY2spOwo+ICsgICAgICAgICAgICByZXR1cm4gdmlvbW11X3R5 cGU7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsgICAgc3Bpbl91bmxvY2soJnR5cGVfbGlzdF9s b2NrKTsKCldoeSBkbyB5b3UgbmVlZCBhIGxvY2sgaGVyZSwgYW5kIGEgbGlzdCBhdCBhbGw/CgpB RkFJQ1QgdklPTU1VIHR5cGVzIHdpbGwgbmV2ZXIgYmUgYWRkZWQgYXQgcnVudGltZS4KCj4gKwo+ ICsgICAgcmV0dXJuIE5VTEw7Cj4gK30KPiArCj4gK2ludCB2aW9tbXVfcmVnaXN0ZXJfdHlwZSh1 aW50NjRfdCB0eXBlLCBzdHJ1Y3QgdmlvbW11X29wcyAqb3BzKQo+ICt7Cj4gKyAgICBzdHJ1Y3Qg dmlvbW11X3R5cGUgKnZpb21tdV90eXBlID0gTlVMTDsKPiArCj4gKyAgICBpZiAoICF2aW9tbXVf ZW5hYmxlZCgpICkKPiArICAgICAgICByZXR1cm4gLUVOT0RFVjsKPiArCj4gKyAgICBpZiAoIHZp b21tdV9nZXRfdHlwZSh0eXBlKSApCj4gKyAgICAgICAgcmV0dXJuIC1FRVhJU1Q7Cj4gKwo+ICsg ICAgdmlvbW11X3R5cGUgPSB4emFsbG9jKHN0cnVjdCB2aW9tbXVfdHlwZSk7Cj4gKyAgICBpZiAo ICF2aW9tbXVfdHlwZSApCj4gKyAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsgICAgdmlv bW11X3R5cGUtPnR5cGUgPSB0eXBlOwo+ICsgICAgdmlvbW11X3R5cGUtPm9wcyA9IG9wczsKPiAr Cj4gKyAgICBzcGluX2xvY2soJnR5cGVfbGlzdF9sb2NrKTsKPiArICAgIGxpc3RfYWRkX3RhaWwo JnZpb21tdV90eXBlLT5ub2RlLCAmdHlwZV9saXN0KTsKPiArICAgIHNwaW5fdW5sb2NrKCZ0eXBl X2xpc3RfbG9jayk7Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KCkFzIG1lbnRpb25lZCBhYm92 ZSwgSSB0aGluayB0aGlzIHZpb21tdV9yZWdpc3Rlcl90eXBlIGhlbHBlciBjb3VsZCBiZQphdm9p ZGVkLiBJIHdvdWxkIHJhdGhlciB1c2UgYSBtYWNybyBzaW1pbGFyIHRvIFJFR0lTVEVSX1NDSEVE VUxFUiBpbgpvcmRlciB0byBwb3B1bGF0ZSBhbiBhcnJheSBhdCBsaW5rIHRpbWUsIGFuZCB0aGVu IGp1c3QgaXRlcmF0ZSBvdmVyCml0LgoKPiArCj4gK3N0YXRpYyBpbnQgdmlvbW11X2NyZWF0ZShz dHJ1Y3QgZG9tYWluICpkLCB1aW50NjRfdCB0eXBlLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDY0X3QgYmFzZV9hZGRyZXNzLCB1aW50NjRfdCBjYXBzLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDMyX3QgKnZpb21tdV9pZCkKCkknbSBxdWl0ZSBzdXJlIHRoaXMgZG9l c24ndCBjb21waWxlLCB5b3UgYXJlIGFkZGluZyBhIHN0YXRpYyBmdW5jdGlvbgpoZXJlIHRoYXQn cyBub3QgdXNlZCBhdCBhbGwgaW4gdGhpcyBwYXRjaC4gUGxlYXNlIGJlIGNhcmVmdWwgYW5kIGRv bid0CmludHJvZHVjZSBwYXRjaGVzIHRoYXQgd2lsbCBicmVhayB0aGUgYnVpbGQuCgo+ICt7Cj4g KyAgICBzdHJ1Y3QgdmlvbW11ICp2aW9tbXU7Cj4gKyAgICBzdHJ1Y3QgdmlvbW11X3R5cGUgKnZp b21tdV90eXBlID0gTlVMTDsKPiArICAgIGludCByYzsKPiArCj4gKyAgICAvKiBPbmx5IHN1cHBv cnQgb25lIHZJT01NVSBwZXIgZG9tYWluLiAqLwo+ICsgICAgaWYgKCBkLT52aW9tbXUgKQo+ICsg ICAgICAgIHJldHVybiAtRTJCSUc7Cj4gKwo+ICsgICAgdmlvbW11X3R5cGUgPSB2aW9tbXVfZ2V0 X3R5cGUodHlwZSk7Cj4gKyAgICBpZiAoICF2aW9tbXVfdHlwZSApCj4gKyAgICAgICAgcmV0dXJu IC1FSU5WQUw7Cj4gKwo+ICsgICAgaWYgKCAhdmlvbW11X3R5cGUtPm9wcyB8fCAhdmlvbW11X3R5 cGUtPm9wcy0+Y3JlYXRlICkKPiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKCkNhbiB0aGlzIHJl YWxseSBoYXBwZW4/IFdoYXQncyB0aGUgcG9pbnQgaW4gaGF2aW5nIGEgaW9tbXVfdHlwZQp3aXRo b3V0IG9wcyBvciB3aXRob3V0IHRoZSBjcmVhdGUgb3A/IEkgdGhpbmsgdGhpcyBzaG91bGQgYmUg YW4gQVNTRVJUCmluc3RlYWQuCgo+ICsKPiArICAgIHZpb21tdSA9IHh6YWxsb2Moc3RydWN0IHZp b21tdSk7Cj4gKyAgICBpZiAoICF2aW9tbXUgKQo+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ ICsKPiArICAgIHZpb21tdS0+YmFzZV9hZGRyZXNzID0gYmFzZV9hZGRyZXNzOwo+ICsgICAgdmlv bW11LT5jYXBzID0gY2FwczsKPiArICAgIHZpb21tdS0+b3BzID0gdmlvbW11X3R5cGUtPm9wczsK PiArCj4gKyAgICByYyA9IHZpb21tdS0+b3BzLT5jcmVhdGUoZCwgdmlvbW11KTsKPiArICAgIGlm ICggcmMgPCAwICkKPiArICAgIHsKPiArICAgICAgICB4ZnJlZSh2aW9tbXUpOwo+ICsgICAgICAg IHJldHVybiByYzsKPiArICAgIH0KPiArCj4gKyAgICBkLT52aW9tbXUgPSB2aW9tbXU7Cj4gKwo+ ICsgICAgLyogT25seSBzdXBwb3J0IG9uZSB2SU9NTVUgcGVyIGRvbWFpbi4gKi8KPiArICAgICp2 aW9tbXVfaWQgPSAwOwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8qCj4gKyAqIExvY2Fs IHZhcmlhYmxlczoKPiArICogbW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCj4gKyAq IGMtYmFzaWMtb2Zmc2V0OiA0Cj4gKyAqIHRhYi13aWR0aDogNAo+ICsgKiBpbmRlbnQtdGFicy1t b2RlOiBuaWwKPiArICogRW5kOgo+ICsgKi8KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVu L3NjaGVkLmggYi94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaAo+IGluZGV4IDViOGY4YzYuLjc1MGYy MzUgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKPiArKysgYi94ZW4vaW5j bHVkZS94ZW4vc2NoZWQuaAo+IEBAIC0zMyw2ICszMywxMCBAQAo+ICBERUZJTkVfWEVOX0dVRVNU X0hBTkRMRSh2Y3B1X3J1bnN0YXRlX2luZm9fY29tcGF0X3QpOwo+ICAjZW5kaWYKPiAgCj4gKyNp ZmRlZiBDT05GSUdfVklPTU1VCj4gKyNpbmNsdWRlIDx4ZW4vdmlvbW11Lmg+Cj4gKyNlbmRpZgoK SSB3b3VsZCBzdWdnZXN0IHlvdSBwbGFjZSB0aGUgQ09ORklHX1ZJT01NVSBpbnNpZGUgb2YgdGhl IGhlYWRlcgppdHNlbGYuCgo+ICsKPiAgLyoKPiAgICogU3RhdHMKPiAgICoKPiBAQCAtNDc5LDYg KzQ4MywxMCBAQCBzdHJ1Y3QgZG9tYWluCj4gICAgICByd2xvY2tfdCB2bnVtYV9yd2xvY2s7Cj4g ICAgICBzdHJ1Y3Qgdm51bWFfaW5mbyAqdm51bWE7Cj4gIAo+ICsjaWZkZWYgQ09ORklHX1ZJT01N VQo+ICsgICAgc3RydWN0IHZpb21tdSAqdmlvbW11Owo+ICsjZW5kaWYKClNob3VsZG4ndCB0aGlz IGdvIGluc2lkZSBvZiB4ODYvaHZtL2RvbWFpbi5oPyAoaHZtX2RvbWFpbikgUFYgZ3Vlc3RzCndp bGwgY2VydGFpbmx5IG5ldmVyIGJlIGFibGUgdG8gdXNlIGl0LgoKPiArCj4gICAgICAvKiBDb21t b24gbW9uaXRvciBvcHRpb25zICovCj4gICAgICBzdHJ1Y3Qgewo+ICAgICAgICAgIHVuc2lnbmVk IGludCBndWVzdF9yZXF1ZXN0X2VuYWJsZWQgICAgICAgOiAxOwo+IGRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS94ZW4vdmlvbW11LmggYi94ZW4vaW5jbHVkZS94ZW4vdmlvbW11LmgKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjYzNmEyYTMKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIveGVuL2luY2x1ZGUveGVuL3Zpb21tdS5oCj4gQEAgLTAsMCArMSw2MyBAQAo+ICsvKgo+ ICsgKiBpbmNsdWRlL3hlbi92aW9tbXUuaAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTcs IEludGVsIENvcnBvcmF0aW9uCj4gKyAqIEF1dGhvcjogTGFuIFRpYW55dSA8dGlhbnl1LmxhbkBp bnRlbC5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cj4gKyAqIHVuZGVyIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCj4gKyAq IHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24u Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3 aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKPiArICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCj4gKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IKPiArICogbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9u ZyB3aXRoCj4gKyAqIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+Lgo+ICsgKgo+ICsgKi8KPiArI2lmbmRlZiBfX1hFTl9WSU9NTVVfSF9fCj4g KyNkZWZpbmUgX19YRU5fVklPTU1VX0hfXwo+ICsKPiArc3RydWN0IHZpb21tdTsKPiArCj4gK3N0 cnVjdCB2aW9tbXVfb3BzIHsKPiArICAgIGludCAoKmNyZWF0ZSkoc3RydWN0IGRvbWFpbiAqZCwg c3RydWN0IHZpb21tdSAqdmlvbW11KTsKPiArICAgIGludCAoKmRlc3Ryb3kpKHN0cnVjdCB2aW9t bXUgKnZpb21tdSk7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgdmlvbW11IHsKPiArICAgIHVpbnQ2NF90 IGJhc2VfYWRkcmVzczsKPiArICAgIHVpbnQ2NF90IGNhcHM7Cj4gKyAgICBjb25zdCBzdHJ1Y3Qg dmlvbW11X29wcyAqb3BzOwo+ICsgICAgdm9pZCAqcHJpdjsKPiArfTsKPiArCj4gKyNpZmRlZiBD T05GSUdfVklPTU1VCgpXaHkgZG8geW91IG9ubHkgcHJvdGVjdCBjZXJ0YWluIHBhcnRzIG9mIHRo ZSBmaWxlIHdpdGgKQ09ORklHX1ZJT01NVT8KCj4gK2V4dGVybiBib29sIG9wdF92aW9tbXU7Cj4g K3N0YXRpYyBpbmxpbmUgYm9vbCB2aW9tbXVfZW5hYmxlZCh2b2lkKQo+ICt7Cj4gKyAgICByZXR1 cm4gb3B0X3Zpb21tdTsKPiArfQo+ICsKPiAraW50IHZpb21tdV9yZWdpc3Rlcl90eXBlKHVpbnQ2 NF90IHR5cGUsIHN0cnVjdCB2aW9tbXVfb3BzICpvcHMpOwo+ICtpbnQgdmlvbW11X2Rlc3Ryb3lf ZG9tYWluKHN0cnVjdCBkb21haW4gKmQpOwo+ICsjZWxzZQo+ICtzdGF0aWMgaW5saW5lIGludCB2 aW9tbXVfcmVnaXN0ZXJfdHlwZSh1aW50NjRfdCB0eXBlLCBzdHJ1Y3QgdmlvbW11X29wcyAqb3Bz KQo+ICt7Cj4gKyAgICByZXR1cm4gLUVJTlZBTDsKPiArfQoKV2h5IGRvbid0IHlvdSBhbHNvIHBy b3ZpZGUgYSBkdW1teSB2aW9tbXVfZGVzdHJveV9kb21haW4gaGVscGVyIHRvIGJlCnVzZWQgaW4g ZG9tYWluLmM/CgpUaGFua3MsIFJvZ2VyLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==