From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: Re: [PATCH] vfio: Fix endianness handling for emulated BARs Date: Thu, 19 Jun 2014 21:21:54 -0600 Message-ID: <1403234514.3707.278.camel@ul30vt.home> References: <1403091391-31780-1-git-send-email-aik@ozlabs.ru> <1403116512.3707.175.camel@ul30vt.home> <53A233E9.6030006@ozlabs.ru> <53A241F6.9010307@ozlabs.ru> <53A25D74.5000804@ozlabs.ru> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: kvm@vger.kernel.org, Nikunj A Dadhania , linux-kernel@vger.kernel.org, Alexander Graf , linuxppc-dev@lists.ozlabs.org To: Alexey Kardashevskiy Return-path: In-Reply-To: <53A25D74.5000804@ozlabs.ru> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linuxppc-dev-bounces+glppe-linuxppc-embedded-2=m.gmane.org@lists.ozlabs.org Sender: "Linuxppc-dev" List-Id: kvm.vger.kernel.org T24gVGh1LCAyMDE0LTA2LTE5IGF0IDEzOjQ4ICsxMDAwLCBBbGV4ZXkgS2FyZGFzaGV2c2tpeSB3 cm90ZToKPiBPbiAwNi8xOS8yMDE0IDExOjUwIEFNLCBBbGV4ZXkgS2FyZGFzaGV2c2tpeSB3cm90 ZToKPiA+IE9uIDA2LzE5LzIwMTQgMTA6NTAgQU0sIEFsZXhleSBLYXJkYXNoZXZza2l5IHdyb3Rl Ogo+ID4+IE9uIDA2LzE5LzIwMTQgMDQ6MzUgQU0sIEFsZXggV2lsbGlhbXNvbiB3cm90ZToKPiA+ Pj4gT24gV2VkLCAyMDE0LTA2LTE4IGF0IDIxOjM2ICsxMDAwLCBBbGV4ZXkgS2FyZGFzaGV2c2tp eSB3cm90ZToKPiA+Pj4+IFZGSU8gZXhwb3NlcyBCQVJzIHRvIHVzZXIgc3BhY2UgYXMgYSBieXRl IHN0cmVhbSBzbyB1c2Vyc3BhY2UgY2FuCj4gPj4+PiByZWFkIGl0IHVzaW5nIHByZWFkKCkvcHdy aXRlKCkuIFNpbmNlIHRoaXMgaXMgYSBieXRlIHN0cmVhbSwgVkZJTyBzaG91bGQKPiA+Pj4+IG5v dCBkbyBieXRlIHN3YXBwaW5nIGFuZCBzaW1wbHkgcmV0dXJuIHZhbHVlcyBhcyBpdCBnZXRzIHRo ZW0gZnJvbQo+ID4+Pj4gUENJIGRldmljZS4KPiA+Pj4+Cj4gPj4+PiBJbnN0ZWFkLCB0aGUgZXhp c3RpbmcgY29kZSBhc3N1bWVzIHRoYXQgYnl0ZSBzdHJlYW0gaW4gcmVhZC93cml0ZSBpcwo+ID4+ Pj4gbGl0dGxlLWVuZGlhbiBhbmQgaXQgZml4ZXMgZW5kaWFubmVzcyBmb3IgdmFsdWVzIHdoaWNo IGl0IHBhc3NlcyB0bwo+ID4+Pj4gaW9yZWFkWFgvaW93cml0ZVhYIGhlbHBlcnMuIFRoaXMgd29y a3MgZm9yIGxpdHRsZS1lbmRpYW4gYXMgUENJIGlzCj4gPj4+PiBsaXR0bGUgZW5kaWFuIGFuZCBs ZTMyX3RvX2NwdS8uLi4gYXJlIHN0dWJzLgo+ID4+Pgo+ID4+PiB2ZmlvIHJlYWQzMjoKPiA+Pj4K PiA+Pj4gdmFsID0gY3B1X3RvX2xlMzIoaW9yZWFkMzIoaW8gKyBvZmYpKTsKPiA+Pj4KPiA+Pj4g V2hlcmUgdGhlIHR5cGljYWwgeDg2IGNhc2UsIGlvcmVhZDMyIGlzOgo+ID4+Pgo+ID4+PiAjZGVm aW5lIGlvcmVhZDMyKGFkZHIpICAgICAgICAgIHJlYWRsKGFkZHIpCj4gPj4+Cj4gPj4+IGFuZCBy ZWFkbCBpczoKPiA+Pj4KPiA+Pj4gX19sZTMyX3RvX2NwdShfX3Jhd19yZWFkbChhZGRyKSk7Cj4g Pj4+Cj4gPj4+IFNvIHdlIGRvIGNhbmNlbGluZyBieXRlIHN3YXBzLCB3aGljaCBhcmUgYm90aCBu b3BzIG9uIHg4NiwgYW5kIGVuZCB1cAo+ID4+PiByZXR1cm5pbmcgZGV2aWNlIGVuZGlhbiwgd2hp Y2ggd2UgYXNzdW1lIGlzIGxpdHRsZSBlbmRpYW4uCj4gPj4+Cj4gPj4+IHZmaW8gd3JpdGUzMiBp cyBzaW1pbGFyOgo+ID4+Pgo+ID4+PiBpb3dyaXRlMzIobGUzMl90b19jcHUodmFsKSwgaW8gKyBv ZmYpOwo+ID4+Pgo+ID4+PiBUaGUgaW1wbGljaXQgY3B1X3RvX2xlMzIgb2YgaW93cml0ZTMyKCkg YW5kIG91ciBleHBsaWNpdCBzd2FwIGNhbmNlbAo+ID4+PiBvdXQsIHNvIGlucHV0IGRhdGEgaXMg ZGV2aWNlIGVuZGlhbiwgd2hpY2ggaXMgYXNzdW1lZCBsaXR0bGUuCj4gPj4+Cj4gPj4+PiBUaGlz IGFsc28gd29ya3MgZm9yIGJpZyBlbmRpYW4gYnV0IHJhdGhlciBieSBhbiBhY2NpZGVudDogaXQg cmVhZHMgNCBieXRlcwo+ID4+Pj4gZnJvbSB0aGUgc3RyZWFtIChAdmFsIGlzIGJpZyBlbmRpYW4p LCBjb252ZXJ0cyB0byBDUFUgZm9ybWF0ICh3aGljaCBzaG91bGQKPiA+Pj4+IGJlIGJpZyBlbmRp YW4pIGFzIGl0IHdhcyBsaXR0bGUgZW5kaWFuIChAdmFsIGJlY29tZXMgYWN0dWFsbHkgbGl0dGxl Cj4gPj4+PiBlbmRpYW4pIGFuZCBjYWxscyBpb3dyaXRlMzIoKSB3aGljaCBkb2VzIG5vdCBkbyBz d2FwcGluZyBvbiBiaWcgZW5kaWFuCj4gPj4+PiBzeXN0ZW0uCj4gPj4+Cj4gPj4+IFJlYWxseT8K PiA+Pj4KPiA+Pj4gSW4gYXJjaC9wb3dlcnBjL2tlcm5lbC9pb21hcC5jIGlvd3JpdGUzMigpIGlz IGp1c3QgYSB3cmFwcGVyIGFyb3VuZAo+ID4+PiB3cml0ZWwoKSwgd2hpY2ggc2VlbXMgdG8gdXNl IHRoZSBnZW5lcmljIGltcGxlbWVudGF0aW9uLCB3aGljaCBkb2VzCj4gPj4+IGluY2x1ZGUgYSBj cHVfdG9fbGUzMi4KPiA+Pgo+ID4+Cj4gPj4gT3VjaCwgd3JvbmcgY29tbWVudC4gaW93cml0ZTMy KCkgZG9lcyBzd2FwcGluZy4gTXkgYmFkLgo+ID4+Cj4gPj4KPiA+Pj4KPiA+Pj4gSSBhbHNvIHNl ZSBvdGhlciBiaWcgZW5kaWFuIGFyY2hzIGxpa2UgcGFyaXNjIGRvaW5nIGNwdV90b19sZTMyIG9u Cj4gPj4+IGlvd3JpdGUzMiwgc28gSSBkb24ndCB0aGluayB0aGlzIHN0YXRlbWVudCBpcyB0cnVl LiAgSSBpbWFnaW5lIGl0J3MKPiA+Pj4gcHJvYmFibHkgd29ya2luZyBmb3IgeW91IGJlY2F1c2Ug dGhlIHN3YXAgY2FuY2VsLgo+ID4+Pgo+ID4+Pj4gVGhpcyByZW1vdmVzIGJ5dGUgc3dhcHBpbmcg YW5kIG1ha2VzIHVzZSBpb3JlYWQzMmJlL2lvd3JpdGUzMmJlCj4gPj4+PiAoYW5kIDE2Yml0IHZl cnNpb25zKSBvbiBiaWctZW5kaWFuIHN5c3RlbXMuIFRoZSAiYmUiIGhlbHBlcnMgdGFrZQo+ID4+ Pj4gbmF0aXZlIGVuZGlhbiB2YWx1ZXMgYW5kIGRvIHN3YXBwaW5nIGF0IHRoZSBtb21lbnQgb2Yg d3JpdGluZyB0byBhIFBDSQo+ID4+Pj4gcmVnaXN0ZXIgdXNpbmcgb25lIG9mICJzdG9yZSBieXRl LXJldmVyc2VkIiBpbnN0cnVjdGlvbnMuCj4gPj4+Cj4gPj4+IFNvIG5vdyB5b3Ugd2FudCBpb3dy aXRlMzIoKSBvbiBsaXR0bGUgZW5kaWFuIGFuZCBpb3dyaXRlMzJiZSgpIG9uIGJpZwo+ID4+PiBl bmRpYW4sIHRoZSBmb3JtZXIgZG9lcyBhIGNwdV90b19sZTMyICh3aGljaCBpcyBhIG5vcCBvbiBs aXR0bGUgZW5kaWFuKQo+ID4+PiBhbmQgdGhlIGxhdHRlciBkb2VzIGEgY3B1X3RvX2JlMzIgKHdo aWNoIGlzIGEgbm9wIG9uIGJpZyBlbmRpYW4pLi4uCj4gPj4+IHNob3VsZCB3ZSBqdXN0IGJlIHVz aW5nIF9fcmF3X3dyaXRlbCgpIG9uIGJvdGg/Cj4gPj4KPiA+Pgo+ID4+IFdlIGNhbiBkbyB0aGF0 IHRvby4gVGhlIGJlYXV0eSBvZiBpb3dyaXRlMzJiZSBvbiBwcGM2NCBpcyB0aGF0IGl0IGRvZXMg bm90Cj4gPj4gc3dhcCBhbmQgd3JpdGUgc2VwYXJhdGVseSwgaXQgaXMgaW1wbGVtZW50ZWQgdmlh IHRoZSAiU3RvcmUgV29yZAo+ID4+IEJ5dGUtUmV2ZXJzZSBJbmRleGVkIFgtZm9ybSIgc2luZ2xl IGluc3RydWN0aW9uLgo+ID4+Cj4gPj4gQW5kIHNvbWUgYXJjaHMgKGRvIG5vdCBrbm93IHdoaWNo IG9uZXMpIG1heSBhZGQgbWVtb3J5IGJhcnJpZXJzIGluIHRoZWlyCj4gPj4gaW1wbGVtZW50YXRp b25zIG9mIGlvcmVhZC9pb3dyaXRlLiBfX3Jhd193cml0ZWwgaXMgdG9vIHJhdyA6KQo+ID4+Cj4g Pj4+ICBUaGVyZSBkb2Vzbid0IGFjdHVhbGx5Cj4gPj4+IHNlZW0gdG8gYmUgYW55IGNoYW5nZSBp biBiZWhhdmlvciBoZXJlLCBpdCBqdXN0IGVsaW1pbmF0ZXMgYmFjay10by1iYWNrCj4gPj4+IGJ5 dGUgc3dhcHMsIHdoaWNoIGFyZSBhIG5vcCBvbiB4ODYsIGJ1dCBub3QgcG93ZXIsIHJpZ2h0Pwo+ ID4+Cj4gPj4gRXhhY3RseS4gTm8gZGVwZW5kZW5jeSBmb3IgUUVNVS4KPiA+IAo+ID4gSG93IGFi b3V0IHRoYXQ6Cj4gPiA9PT0KPiA+IAo+ID4gVkZJTyBleHBvc2VzIEJBUnMgdG8gdXNlciBzcGFj ZSBhcyBhIGJ5dGUgc3RyZWFtIHNvIHVzZXJzcGFjZSBjYW4KPiA+IHJlYWQgaXQgdXNpbmcgcHJl YWQoKS9wd3JpdGUoKS4gU2luY2UgdGhpcyBpcyBhIGJ5dGUgc3RyZWFtLCBWRklPIHNob3VsZAo+ ID4gbm90IGRvIGJ5dGUgc3dhcHBpbmcgYW5kIHNpbXBseSByZXR1cm4gdmFsdWVzIGFzIGl0IGdl dHMgdGhlbSBmcm9tCj4gPiBQQ0kgZGV2aWNlLgo+ID4gCj4gPiBJbnN0ZWFkLCB0aGUgZXhpc3Rp bmcgY29kZSBhc3N1bWVzIHRoYXQgYnl0ZSBzdHJlYW0gaW4gcmVhZC93cml0ZSBpcwo+ID4gbGl0 dGxlLWVuZGlhbiBhbmQgaXQgZml4ZXMgZW5kaWFubmVzcyBmb3IgdmFsdWVzIHdoaWNoIGl0IHBh c3NlcyB0bwo+ID4gaW9yZWFkWFgvaW93cml0ZVhYIGhlbHBlcnMgaW4gbmF0aXZlIGZvcm1hdC4g VGhlIElPIGhlbHBlcnMgZG8gc3dhcHBpbmcKPiA+IGFnYWluLiBTaW5jZSBib3RoIGJ5dGUgc3dh cHMgYXJlIG5vcHMgb24gbGl0dGxlLWVuZGlhbiBob3N0LCB0aGlzIHdvcmtzLgo+ID4gCj4gPiBU aGlzIGFsc28gd29ya3MgZm9yIGJpZyBlbmRpYW4gYnV0IHJhdGhlciBieSBhbiBhY2NpZGVudDog aXQgcmVhZHMgNCBieXRlcwo+ID4gZnJvbSB0aGUgc3RyZWFtIChAdmFsIGlzIGJpZyBlbmRpYW4p LCBjb252ZXJ0cyB0byBDUFUgZm9ybWF0ICh3aGljaCBzaG91bGQKPiA+IGJlIGJpZyBlbmRpYW4p IGFzIGl0IHdhcyBsaXR0bGUgZW5kaWFuIChhbmQgQHZhbCBiZWNvbWVzIGFjdHVhbGx5IGxpdHRs ZQo+ID4gZW5kaWFuKSBhbmQgY2FsbHMgaW93cml0ZTMyKCkgd2hpY2ggZG9lcyBzd2FwcGluZyBv biBiaWcgZW5kaWFuCj4gPiBzeXN0ZW0gYWdhaW4uIFNvIGJ5dGUgc3dhcCBnZXRzIGNhbmNlbGxl ZCwgX19yYXdfd3JpdGVsKCkgcmVjZWl2ZXMKPiA+IGEgbmF0aXZlIHZhbHVlIGFuZCB0aGVuCj4g PiAqKHZvbGF0aWxlIHVuc2lnbmVkIGludCBfX2ZvcmNlICopUENJX0ZJWF9BRERSKGFkZHIpID0g djsKPiA+IGp1c3QgZG9lcyB0aGUgcmlnaHQgdGhpbmcuCj4gCj4gSSBhbSB3cm9uZyBoZXJlLCBz b3JyeS4gVGhpcyBpcyB3aGF0IGhhcHBlbnMgd2hlbiB5b3Ugd2F0Y2ggc29jY2VyIGJldHdlZW4K PiAyYW0gYW5kIDRhbSA6KQo+IAo+IAo+ID4gCj4gPiBUaGlzIHJlbW92ZXMgYnl0ZSBzd2FwcyBh bmQgbWFrZXMgdXNlIG9mIGlvcmVhZDMyYmUvaW93cml0ZTMyYmUKPiA+IChhbmQgMTZiaXQgdmVy c2lvbnMpIHdoaWNoIGRvIGV4cGxpY2l0IGJ5dGUgc3dhcHBpbmcgYXQgdGhlIG1vbWVudAo+ID4g b2Ygd3JpdGUgdG8gYSBQQ0kgcmVnaXN0ZXIuIFBQQzY0IHVzZXMgYSBzcGVjaWFsICJTdG9yZSBX b3JkCj4gPiBCeXRlLVJldmVyc2UgSW5kZXhlZCBYLWZvcm0iIGluc3RydWN0aW9uIHdoaWNoIGRv ZXMgc3dhcCBhbmQgc3RvcmUuCj4gCj4gTm8gc3dhcHBpbmcgaXMgZG9uZSBoZXJlIGlmIHdlIHVz ZSBpb3JlYWQzMmJlIGFzIGl0IGNhbGxzIGluX2JlMzIgYW5kIHRoYXQKPiBhbmltYWwgZG9lcyAi bHd6IiB3aGljaCBpcyBzaW1wbGUgbG9hZCBmcm9tIG1lbW9yeS4KPiAKPiBTbyBAdmFsICgxNi8z MiBiaXQgdmFyaWFibGUgb24gc3RhY2spIHdpbGwgaGF2ZSBkaWZmZXJlbnQgdmFsdWVzIG9uIExF IGFuZAo+IEJFIGJ1dCBzaW5jZSB3ZSBkbyBub3QgaGFuZGxlIGl0IHRoZSBob3N0IGFuZCBqdXN0 IG1lbWNweSBpdCB0byB0aGUgYnVmZmVyLAo+IG5vdGhpbmcgYnJlYWtzIGhlcmUuCj4gCj4gCj4g U28gaXQgc2hvdWxkIGJlIGxpa2UgdGhpczoKPiA9PT0KPiBWRklPIGV4cG9zZXMgQkFScyB0byB1 c2VyIHNwYWNlIGFzIGEgYnl0ZSBzdHJlYW0gc28gdXNlcnNwYWNlIGNhbgo+IHJlYWQgaXQgdXNp bmcgcHJlYWQoKS9wd3JpdGUoKS4gU2luY2UgdGhpcyBpcyBhIGJ5dGUgc3RyZWFtLCBWRklPIHNo b3VsZAo+IG5vdCBkbyBieXRlIHN3YXBwaW5nIGFuZCBzaW1wbHkgcmV0dXJuIHZhbHVlcyBhcyBp dCBnZXRzIHRoZW0gZnJvbQo+IFBDSSBkZXZpY2UgYW5kIGNvcHlfdG9fdXNlciB3aWxsIHNhdmUg Ynl0ZXMgaW4gdGhlIGNvcnJlY3QKPiBzYW1lIHRydWUgZm9yIHdyaXRlcy4KPiAKPiBJbnN0ZWFk LCB0aGUgZXhpc3RpbmcgY29kZSBhc3N1bWVzIHRoYXQgYnl0ZSBzdHJlYW0gaW4gcmVhZC93cml0 ZSBpcwo+IGxpdHRsZS1lbmRpYW4gYW5kIGl0IGZpeGVzIGVuZGlhbm5lc3MgZm9yIHZhbHVlcyB3 aGljaCBpdCBwYXNzZXMgdG8KPiBpb3JlYWRYWC9pb3dyaXRlWFggaGVscGVycyBpbiBuYXRpdmUg Zm9ybWF0LiBUaGUgSU8gaGVscGVycyBkbyBzd2FwcGluZwo+IGFnYWluLiBTaW5jZSBib3RoIGJ5 dGUgc3dhcHMgYXJlIG5vcHMgb24gbGl0dGxlLWVuZGlhbiBob3N0LCB0aGlzIHdvcmtzLgo+IAo+ IFRoaXMgYWxzbyB3b3JrcyBmb3IgYmlnIGVuZGlhbiBidXQgcmF0aGVyIGJ5IGFuIGFjY2lkZW50 OiBpdCByZWFkcyA0IGJ5dGVzCj4gZnJvbSB0aGUgc3RyZWFtIChAdmFsIGlzIGJpZyBlbmRpYW4p LCBjb252ZXJ0cyB0byBDUFUgZm9ybWF0ICh3aGljaCBzaG91bGQKPiBiZSBiaWcgZW5kaWFuKSBh cyBpdCB3YXMgbGl0dGxlIGVuZGlhbiAoYW5kIEB2YWwgYmVjb21lcyBhY3R1YWxseSBsaXR0bGUK PiBlbmRpYW4pIGFuZCBjYWxscyBpb3dyaXRlMzIoKSB3aGljaCBkb2VzIHN3YXBwaW5nIG9uIGJp ZyBlbmRpYW4KPiBzeXN0ZW0gYWdhaW4uIFNvIGJ5dGUgc3dhcCBpbiB0aGUgaG9zdCBnZXRzIGNh bmNlbGxlZCBhbmQgX19yYXdfd3JpdGVsKCkKPiB3cml0ZXMgdGhlIHZhbHVlIHdoaWNoIHdhcyBz d2FwcGVkIG9yaWdpbmFsbHkgYnkgdGhlIGd1ZXN0Lgo+IAo+IFRoaXMgcmVtb3ZlcyBieXRlIHN3 YXBzIGFuZCBtYWtlcyB1c2Ugb2YgaW9yZWFkMzJiZS9pb3dyaXRlMzJiZQo+IChhbmQgMTZiaXQg dmVyc2lvbnMpIHdoaWNoIGRvIG5vdCBkbyBieXRlIHN3YXAgb24gQkUgaG9zdHMuCj4gRm9yIExF IGhvc3RzLCBpb3JlYWQzMi9pb3dyaXRlMzIgYXJlIHN0aWxsIHVzZWQuCj4gCj4gPT09CgpXb3Jr aW5nIG9uIGJpZyBlbmRpYW4gYmVpbmcgYW4gYWNjaWRlbnQgbWF5IGJlIGEgbWF0dGVyIG9mIHBl cnNwZWN0aXZlLgpUaGUgY29tbWVudCByZW1haW5zIHRoYXQgdGhpcyBwYXRjaCBkb2Vzbid0IGFj dHVhbGx5IGZpeCBhbnl0aGluZyBleGNlcHQKdGhlIG92ZXJoZWFkIG9uIGJpZyBlbmRpYW4gc3lz dGVtcyBkb2luZyByZWR1bmRhbnQgYnl0ZSBzd2FwcGluZyBhbmQKbWF5YmUgdGhlIHBoaWxvc29w aHkgdGhhdCB2ZmlvIHJlZ2lvbnMgYXJlIGxpdHRsZSBlbmRpYW4uCgpJJ20gc3RpbGwgbm90IGEg ZmFuIG9mIGlvd3JpdGUgdnMgaW93cml0ZWJlLCB0aGVyZSBtdXN0IGJlIHNvbWV0aGluZyB3ZQpj YW4gdXNlIHRoYXQgZG9lc24ndCBoYXZlIGFuIGltcGxpY2l0IHN3YXAuICBDYWxsaW5nIGl0IGlv d3JpdGUqX25hdGl2ZQppcyBhbHNvIGFuIGFidXNlIG9mIHRoZSBuYW1lc3BhY2UuICBOZXh0IHRo aW5nIHdlIGtub3cgc29tZSBjb21tb24gY29kZQp3aWxsIGxlZ2l0aW1hdGVseSB1c2UgdGhhdCBu YW1lLiAgSWYgd2UgZG8gbmVlZCB0byBkZWZpbmUgYW4gYWxpYXMKKHdoaWNoIEknZCBsaWtlIHRv IGF2b2lkKSBpdCBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2UgdmZpb19pb3dyaXRlMzIuClRoYW5r cywKCkFsZXgKCj4gPiA9PT0KPiA+IAo+ID4gYW55IGJldHRlcj8KPiA+IAo+ID4gCj4gPiAKPiA+ IAo+ID4+Pj4gU3VnZ2VzdGVkLWJ5OiBCZW5qYW1pbiBIZXJyZW5zY2htaWR0IDxiZW5oQGtlcm5l bC5jcmFzaGluZy5vcmc+Cj4gPj4+PiBTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgS2FyZGFzaGV2c2tp eSA8YWlrQG96bGFicy5ydT4KPiA+Pj4+IC0tLQo+ID4+Pj4gIGRyaXZlcnMvdmZpby9wY2kvdmZp b19wY2lfcmR3ci5jIHwgMjAgKysrKysrKysrKysrKysrKy0tLS0KPiA+Pj4+ICAxIGZpbGUgY2hh bmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiA+Pj4+Cj4gPj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9yZHdyLmMgYi9kcml2ZXJzL3ZmaW8v cGNpL3ZmaW9fcGNpX3Jkd3IuYwo+ID4+Pj4gaW5kZXggMjEwZGIyNC4uZjM2M2I1YSAxMDA2NDQK PiA+Pj4+IC0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcmR3ci5jCj4gPj4+PiArKysg Yi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3Jkd3IuYwo+ID4+Pj4gQEAgLTIxLDYgKzIxLDE4 IEBACj4gPj4+PiAgCj4gPj4+PiAgI2luY2x1ZGUgInZmaW9fcGNpX3ByaXZhdGUuaCIKPiA+Pj4+ ICAKPiA+Pj4+ICsjaWZkZWYgX19CSUdfRU5ESUFOX18KPiA+Pj4+ICsjZGVmaW5lIGlvcmVhZDE2 X25hdGl2ZQkJaW9yZWFkMTZiZQo+ID4+Pj4gKyNkZWZpbmUgaW9yZWFkMzJfbmF0aXZlCQlpb3Jl YWQzMmJlCj4gPj4+PiArI2RlZmluZSBpb3dyaXRlMTZfbmF0aXZlCWlvd3JpdGUxNmJlCj4gPj4+ PiArI2RlZmluZSBpb3dyaXRlMzJfbmF0aXZlCWlvd3JpdGUzMmJlCj4gPj4+PiArI2Vsc2UKPiA+ Pj4+ICsjZGVmaW5lIGlvcmVhZDE2X25hdGl2ZQkJaW9yZWFkMTYKPiA+Pj4+ICsjZGVmaW5lIGlv cmVhZDMyX25hdGl2ZQkJaW9yZWFkMzIKPiA+Pj4+ICsjZGVmaW5lIGlvd3JpdGUxNl9uYXRpdmUJ aW93cml0ZTE2Cj4gPj4+PiArI2RlZmluZSBpb3dyaXRlMzJfbmF0aXZlCWlvd3JpdGUzMgo+ID4+ Pj4gKyNlbmRpZgo+ID4+Pj4gKwo+ID4+Pj4gIC8qCj4gPj4+PiAgICogUmVhZCBvciB3cml0ZSBm cm9tIGFuIF9faW9tZW0gcmVnaW9uIChNTUlPIG9yIEkvTyBwb3J0KSB3aXRoIGFuIGV4Y2x1ZGVk Cj4gPj4+PiAgICogcmFuZ2Ugd2hpY2ggaXMgaW5hY2Nlc3NpYmxlLiAgVGhlIGV4Y2x1ZGVkIHJh bmdlIGRyb3BzIHdyaXRlcyBhbmQgZmlsbHMKPiA+Pj4+IEBAIC01MCw5ICs2Miw5IEBAIHN0YXRp YyBzc2l6ZV90IGRvX2lvX3J3KHZvaWQgX19pb21lbSAqaW8sIGNoYXIgX191c2VyICpidWYsCj4g Pj4+PiAgCQkJCWlmIChjb3B5X2Zyb21fdXNlcigmdmFsLCBidWYsIDQpKQo+ID4+Pj4gIAkJCQkJ cmV0dXJuIC1FRkFVTFQ7Cj4gPj4+PiAgCj4gPj4+PiAtCQkJCWlvd3JpdGUzMihsZTMyX3RvX2Nw dSh2YWwpLCBpbyArIG9mZik7Cj4gPj4+PiArCQkJCWlvd3JpdGUzMl9uYXRpdmUodmFsLCBpbyAr IG9mZik7Cj4gPj4+PiAgCQkJfSBlbHNlIHsKPiA+Pj4+IC0JCQkJdmFsID0gY3B1X3RvX2xlMzIo aW9yZWFkMzIoaW8gKyBvZmYpKTsKPiA+Pj4+ICsJCQkJdmFsID0gaW9yZWFkMzJfbmF0aXZlKGlv ICsgb2ZmKTsKPiA+Pj4+ICAKPiA+Pj4+ICAJCQkJaWYgKGNvcHlfdG9fdXNlcihidWYsICZ2YWws IDQpKQo+ID4+Pj4gIAkJCQkJcmV0dXJuIC1FRkFVTFQ7Cj4gPj4+PiBAQCAtNjYsOSArNzgsOSBA QCBzdGF0aWMgc3NpemVfdCBkb19pb19ydyh2b2lkIF9faW9tZW0gKmlvLCBjaGFyIF9fdXNlciAq YnVmLAo+ID4+Pj4gIAkJCQlpZiAoY29weV9mcm9tX3VzZXIoJnZhbCwgYnVmLCAyKSkKPiA+Pj4+ ICAJCQkJCXJldHVybiAtRUZBVUxUOwo+ID4+Pj4gIAo+ID4+Pj4gLQkJCQlpb3dyaXRlMTYobGUx Nl90b19jcHUodmFsKSwgaW8gKyBvZmYpOwo+ID4+Pj4gKwkJCQlpb3dyaXRlMTZfbmF0aXZlKHZh bCwgaW8gKyBvZmYpOwo+ID4+Pj4gIAkJCX0gZWxzZSB7Cj4gPj4+PiAtCQkJCXZhbCA9IGNwdV90 b19sZTE2KGlvcmVhZDE2KGlvICsgb2ZmKSk7Cj4gPj4+PiArCQkJCXZhbCA9IGlvcmVhZDE2X25h dGl2ZShpbyArIG9mZik7Cj4gPj4+PiAgCj4gPj4+PiAgCQkJCWlmIChjb3B5X3RvX3VzZXIoYnVm LCAmdmFsLCAyKSkKPiA+Pj4+ICAJCQkJCXJldHVybiAtRUZBVUxUOwo+ID4+Pgo+ID4+Pgo+ID4+ Pgo+ID4+Cj4gPj4KPiA+IAo+ID4gCj4gCj4gCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkxpbnV4cHBjLWRldiBtYWlsaW5nIGxpc3QKTGludXhwcGMt ZGV2QGxpc3RzLm96bGFicy5vcmcKaHR0cHM6Ly9saXN0cy5vemxhYnMub3JnL2xpc3RpbmZvL2xp bnV4cHBjLWRldg==