From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH v2 09/27] ARM: GICv3: introduce separate pending_irq structs for LPIs Date: Wed, 22 Mar 2017 16:44:05 -0700 (PDT) Message-ID: References: <20170316112030.20419-1-andre.przywara@arm.com> <20170316112030.20419-10-andre.przywara@arm.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 1cqpvI-0000bF-Hb for xen-devel@lists.xenproject.org; Wed, 22 Mar 2017 23:44:12 +0000 In-Reply-To: <20170316112030.20419-10-andre.przywara@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andre Przywara Cc: xen-devel@lists.xenproject.org, Julien Grall , Stefano Stabellini , Shanker Donthineni , Vijay Kilari List-Id: xen-devel@lists.xenproject.org T24gVGh1LCAxNiBNYXIgMjAxNywgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4gRm9yIHRoZSBzYW1l IHJlYXNvbiB0aGF0IGFsbG9jYXRpbmcgYSBzdHJ1Y3QgaXJxX2Rlc2MgZm9yIGVhY2gKPiBwb3Nz aWJsZSBMUEkgaXMgbm90IGFuIG9wdGlvbiwgaGF2aW5nIGEgc3RydWN0IHBlbmRpbmdfaXJxIGZv ciBlYWNoIExQSQo+IGlzIGFsc28gbm90IGZlYXNpYmxlLiBIb3dldmVyIHdlIGFjdHVhbGx5IG9u bHkgbmVlZCB0aG9zZSB3aGVuIGFuCj4gaW50ZXJydXB0IGlzIG9uIGEgdkNQVSAob3IgaXMgYWJv dXQgdG8gYmUgaW5qZWN0ZWQpLgo+IE1haW50YWluIGEgbGlzdCBvZiB0aG9zZSBzdHJ1Y3RzIHRo YXQgd2UgY2FuIHVzZSBmb3IgdGhlIGxpZmVjeWNsZSBvZgo+IGEgZ3Vlc3QgTFBJLiBXZSBhbGxv Y2F0ZSBuZXcgZW50cmllcyBpZiBuZWNlc3NhcnksIGhvd2V2ZXIgcmV1c2UKPiBwcmUtb3duZWQg ZW50cmllcyB3aGVuZXZlciBwb3NzaWJsZS4KPiBJIGFkZGVkIHNvbWUgbG9ja2luZyBhcm91bmQg dGhpcyBsaXN0IGhlcmUsIGhvd2V2ZXIgbXkgZ3V0IGZlZWxpbmcgaXMKPiB0aGF0IHdlIGRvbid0 IG5lZWQgb25lIGJlY2F1c2UgdGhpcyBhIHBlci1WQ1BVIHN0cnVjdHVyZSBhbnl3YXkuCj4gSWYg c29tZW9uZSBjb3VsZCBjb25maXJtIHRoaXMsIEknZCBiZSBncmF0ZWZ1bC4KPiBUZWFjaCB0aGUg ZXhpc3RpbmcgVkdJQyBmdW5jdGlvbnMgdG8gZmluZCB0aGUgcmlnaHQgcG9pbnRlciB3aGVuIGJl aW5nCj4gZ2l2ZW4gYSB2aXJ0dWFsIExQSSBudW1iZXIuCj4gCj4gU2lnbmVkLW9mZi1ieTogQW5k cmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGFybS5jb20+CgpTdGlsbCBhbGwgcGFzdCBjb21t ZW50cyBhcmUgdW5hZGRyZXNzIDstKAoKSXQgbWFrZXMgdmVyeSBoYXJkIHRvIGNvbnRpbnVlIGRv aW5nIHJldmlld3MuIEkgYW0gc29ycnkgYnV0IEknbGwgaGF2ZQp0byBzdG9wIHJldmlld2luZyB1 bnRpbCBJIHNlZSBhIHNlcmllcyB3aXRoIG15IHBhc3QgY29tbWVudHMgYWRkcmVzc2VkLgpJIGVu Y291cmFnZSBKdWxpZW4gdG8gZG8gdGhlIHNhbWUuCgoKPiAtLS0KPiAgeGVuL2FyY2gvYXJtL2dp Yy5jICAgICAgICAgICB8ICAzICsrKwo+ICB4ZW4vYXJjaC9hcm0vdmdpYy12My5jICAgICAgIHwg IDMgKysrCj4gIHhlbi9hcmNoL2FybS92Z2ljLmMgICAgICAgICAgfCA2NCArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL2Rv bWFpbi5oIHwgIDIgKysKPiAgeGVuL2luY2x1ZGUvYXNtLWFybS92Z2ljLmggICB8IDE0ICsrKysr KysrKysKPiAgNSBmaWxlcyBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLmMgYi94ZW4vYXJjaC9hcm0vZ2lj LmMKPiBpbmRleCBhNTM0OGYyLi5iZDNjMDMyIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS9n aWMuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9naWMuYwo+IEBAIC01MDksNiArNTA5LDkgQEAgc3Rh dGljIHZvaWQgZ2ljX3VwZGF0ZV9vbmVfbHIoc3RydWN0IHZjcHUgKnYsIGludCBpKQo+ICAgICAg ICAgICAgICAgICAgc3RydWN0IHZjcHUgKnZfdGFyZ2V0ID0gdmdpY19nZXRfdGFyZ2V0X3ZjcHUo diwgaXJxKTsKPiAgICAgICAgICAgICAgICAgIGlycV9zZXRfYWZmaW5pdHkocC0+ZGVzYywgY3B1 bWFza19vZih2X3RhcmdldC0+cHJvY2Vzc29yKSk7Cj4gICAgICAgICAgICAgIH0KPiArICAgICAg ICAgICAgLyogSWYgdGhpcyB3YXMgYW4gTFBJLCBtYXJrIHRoaXMgc3RydWN0IGFzIGF2YWlsYWJs ZSBhZ2Fpbi4gKi8KPiArICAgICAgICAgICAgaWYgKCBpc19scGkocC0+aXJxKSApCj4gKyAgICAg ICAgICAgICAgICBwLT5pcnEgPSAwOwo+ICAgICAgICAgIH0KPiAgICAgIH0KPiAgfQo+IGRpZmYg LS1naXQgYS94ZW4vYXJjaC9hcm0vdmdpYy12My5jIGIveGVuL2FyY2gvYXJtL3ZnaWMtdjMuYwo+ IGluZGV4IDFmYWRiMDAuLmIwNjUzYzIgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL3ZnaWMt djMuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMKPiBAQCAtMTQyNiw2ICsxNDI2LDkg QEAgc3RhdGljIGludCB2Z2ljX3YzX3ZjcHVfaW5pdChzdHJ1Y3QgdmNwdSAqdikKPiAgICAgIGlm ICggdi0+dmNwdV9pZCA9PSBsYXN0X2NwdSB8fCAodi0+dmNwdV9pZCA9PSAoZC0+bWF4X3ZjcHVz IC0gMSkpICkKPiAgICAgICAgICB2LT5hcmNoLnZnaWMuZmxhZ3MgfD0gVkdJQ19WM19SRElTVF9M QVNUOwo+ICAKPiArICAgIHNwaW5fbG9ja19pbml0KCZ2LT5hcmNoLnZnaWMucGVuZGluZ19scGlf bGlzdF9sb2NrKTsKPiArICAgIElOSVRfTElTVF9IRUFEKCZ2LT5hcmNoLnZnaWMucGVuZGluZ19s cGlfbGlzdCk7Cj4gKwo+ICAgICAgcmV0dXJuIDA7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL3hl bi9hcmNoL2FybS92Z2ljLmMgYi94ZW4vYXJjaC9hcm0vdmdpYy5jCj4gaW5kZXggMzY0ZDVmMC4u ZTVjZmE1NCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vdmdpYy5jCj4gKysrIGIveGVuL2Fy Y2gvYXJtL3ZnaWMuYwo+IEBAIC0zMCw2ICszMCw4IEBACj4gIAo+ICAjaW5jbHVkZSA8YXNtL21t aW8uaD4KPiAgI2luY2x1ZGUgPGFzbS9naWMuaD4KPiArI2luY2x1ZGUgPGFzbS9naWNfdjNfZGVm cy5oPgo+ICsjaW5jbHVkZSA8YXNtL2dpY192M19pdHMuaD4KPiAgI2luY2x1ZGUgPGFzbS92Z2lj Lmg+Cj4gIAo+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCB2Z2ljX2lycV9yYW5rICp2Z2ljX2dldF9y YW5rKHN0cnVjdCB2Y3B1ICp2LCBpbnQgcmFuaykKPiBAQCAtNjEsNyArNjMsNyBAQCBzdHJ1Y3Qg dmdpY19pcnFfcmFuayAqdmdpY19yYW5rX2lycShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50 IGlycSkKPiAgICAgIHJldHVybiB2Z2ljX2dldF9yYW5rKHYsIHJhbmspOwo+ICB9Cj4gIAo+IC1z dGF0aWMgdm9pZCB2Z2ljX2luaXRfcGVuZGluZ19pcnEoc3RydWN0IHBlbmRpbmdfaXJxICpwLCB1 bnNpZ25lZCBpbnQgdmlycSkKPiArdm9pZCB2Z2ljX2luaXRfcGVuZGluZ19pcnEoc3RydWN0IHBl bmRpbmdfaXJxICpwLCB1bnNpZ25lZCBpbnQgdmlycSkKPiAgewo+ICAgICAgSU5JVF9MSVNUX0hF QUQoJnAtPmluZmxpZ2h0KTsKPiAgICAgIElOSVRfTElTVF9IRUFEKCZwLT5scl9xdWV1ZSk7Cj4g QEAgLTI0NCwxMCArMjQ2LDE0IEBAIHN0cnVjdCB2Y3B1ICp2Z2ljX2dldF90YXJnZXRfdmNwdShz dHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHZpcnEpCj4gIAo+ICBzdGF0aWMgaW50IHZnaWNf Z2V0X3ZpcnFfcHJpb3JpdHkoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCB2aXJxKQo+ICB7 Cj4gLSAgICBzdHJ1Y3QgdmdpY19pcnFfcmFuayAqcmFuayA9IHZnaWNfcmFua19pcnEodiwgdmly cSk7Cj4gKyAgICBzdHJ1Y3QgdmdpY19pcnFfcmFuayAqcmFuazsKPiAgICAgIHVuc2lnbmVkIGxv bmcgZmxhZ3M7Cj4gICAgICBpbnQgcHJpb3JpdHk7Cj4gIAo+ICsgICAgaWYgKCBpc19scGkodmly cSkgKQo+ICsgICAgICAgIHJldHVybiB2Z2ljX2xwaV9nZXRfcHJpb3JpdHkodi0+ZG9tYWluLCB2 aXJxKTsKPiArCj4gKyAgICByYW5rID0gdmdpY19yYW5rX2lycSh2LCB2aXJxKTsKPiAgICAgIHZn aWNfbG9ja19yYW5rKHYsIHJhbmssIGZsYWdzKTsKPiAgICAgIHByaW9yaXR5ID0gcmFuay0+cHJp b3JpdHlbdmlycSAmIElOVEVSUlVQVF9SQU5LX01BU0tdOwo+ICAgICAgdmdpY191bmxvY2tfcmFu ayh2LCByYW5rLCBmbGFncyk7Cj4gQEAgLTQ0NiwxMyArNDUyLDYzIEBAIGJvb2wgdmdpY190b19z Z2koc3RydWN0IHZjcHUgKnYsIHJlZ2lzdGVyX3Qgc2dpciwgZW51bSBnaWNfc2dpX21vZGUgaXJx bW9kZSwKPiAgICAgIHJldHVybiB0cnVlOwo+ICB9Cj4gIAo+ICsvKgo+ICsgKiBIb2xkaW5nIHN0 cnVjdCBwZW5kaW5nX2lycSdzIGZvciBlYWNoIHBvc3NpYmxlIHZpcnR1YWwgTFBJIGluIGVhY2gg ZG9tYWluCj4gKyAqIHJlcXVpcmVzIHRvbyBtdWNoIFhlbiBtZW1vcnksIGFsc28gYSBtYWxpY2lv dXMgZ3Vlc3QgY291bGQgcG90ZW50aWFsbHkKPiArICogc3BhbSBYZW4gd2l0aCBMUEkgbWFwIHJl cXVlc3RzLiBXZSBjYW5ub3QgY292ZXIgdGhvc2Ugd2l0aCAoZ3Vlc3QgYWxsb2NhdGVkKQo+ICsg KiBJVFMgbWVtb3J5LCBzbyB3ZSB1c2UgYSBkeW5hbWljIHNjaGVtZSBvZiBhbGxvY2F0aW5nIHN0 cnVjdCBwZW5kaW5nX2lycSdzCj4gKyAqIG9uIGRlbWFuZC4KPiArICovCj4gK3N0cnVjdCBwZW5k aW5nX2lycSAqbHBpX3RvX3BlbmRpbmcoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBscGks Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbGxvY2F0ZSkKPiAr ewo+ICsgICAgc3RydWN0IGxwaV9wZW5kaW5nX2lycSAqbHBpX2lycSwgKmVtcHR5ID0gTlVMTDsK PiArCj4gKyAgICBzcGluX2xvY2soJnYtPmFyY2gudmdpYy5wZW5kaW5nX2xwaV9saXN0X2xvY2sp Owo+ICsgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShscGlfaXJxLCAmdi0+YXJjaC52Z2ljLnBlbmRp bmdfbHBpX2xpc3QsIGVudHJ5KQo+ICsgICAgewo+ICsgICAgICAgIGlmICggbHBpX2lycS0+cGly cS5pcnEgPT0gbHBpICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZ2 LT5hcmNoLnZnaWMucGVuZGluZ19scGlfbGlzdF9sb2NrKTsKPiArICAgICAgICAgICAgcmV0dXJu ICZscGlfaXJxLT5waXJxOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgaWYgKCBscGlfaXJx LT5waXJxLmlycSA9PSAwICYmICFlbXB0eSApCj4gKyAgICAgICAgICAgIGVtcHR5ID0gbHBpX2ly cTsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoICFhbGxvY2F0ZSApCj4gKyAgICB7Cj4gKyAgICAg ICAgc3Bpbl91bmxvY2soJnYtPmFyY2gudmdpYy5wZW5kaW5nX2xwaV9saXN0X2xvY2spOwo+ICsg ICAgICAgIHJldHVybiBOVUxMOwo+ICsgICAgfQo+ICsKPiArICAgIGlmICggIWVtcHR5ICkKPiAr ICAgIHsKPiArICAgICAgICBlbXB0eSA9IHh6YWxsb2Moc3RydWN0IGxwaV9wZW5kaW5nX2lycSk7 Cj4gKyAgICAgICAgdmdpY19pbml0X3BlbmRpbmdfaXJxKCZlbXB0eS0+cGlycSwgbHBpKTsKPiAr ICAgICAgICBsaXN0X2FkZF90YWlsKCZlbXB0eS0+ZW50cnksICZ2LT5hcmNoLnZnaWMucGVuZGlu Z19scGlfbGlzdCk7Cj4gKyAgICB9IGVsc2UKPiArICAgIHsKPiArICAgICAgICBlbXB0eS0+cGly cS5zdGF0dXMgPSAwOwo+ICsgICAgICAgIGVtcHR5LT5waXJxLmlycSA9IGxwaTsKPiArICAgIH0K PiArCj4gKyAgICBzcGluX3VubG9jaygmdi0+YXJjaC52Z2ljLnBlbmRpbmdfbHBpX2xpc3RfbG9j ayk7Cj4gKwo+ICsgICAgcmV0dXJuICZlbXB0eS0+cGlycTsKPiArfQo+ICsKPiAgc3RydWN0IHBl bmRpbmdfaXJxICppcnFfdG9fcGVuZGluZyhzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IGly cSkKPiAgewo+ICAgICAgc3RydWN0IHBlbmRpbmdfaXJxICpuOwo+ICsKPiAgICAgIC8qIFBlbmRp bmcgaXJxcyBhbGxvY2F0aW9uIHN0cmF0ZWd5OiB0aGUgZmlyc3QgdmdpYy5ucl9zcGlzIGlycXMK PiAgICAgICAqIGFyZSB1c2VkIGZvciBTUElzOyB0aGUgcmVzdHMgYXJlIHVzZWQgZm9yIHBlciBj cHUgaXJxcyAqLwo+ICAgICAgaWYgKCBpcnEgPCAzMiApCj4gICAgICAgICAgbiA9ICZ2LT5hcmNo LnZnaWMucGVuZGluZ19pcnFzW2lycV07Cj4gKyAgICBlbHNlIGlmICggaXNfbHBpKGlycSkgKQo+ ICsgICAgICAgIG4gPSBscGlfdG9fcGVuZGluZyh2LCBpcnEsIHRydWUpOwo+ICAgICAgZWxzZQo+ ICAgICAgICAgIG4gPSAmdi0+ZG9tYWluLT5hcmNoLnZnaWMucGVuZGluZ19pcnFzW2lycSAtIDMy XTsKPiAgICAgIHJldHVybiBuOwo+IEBAIC00ODAsNyArNTM2LDcgQEAgdm9pZCB2Z2ljX2NsZWFy X3BlbmRpbmdfaXJxcyhzdHJ1Y3QgdmNwdSAqdikKPiAgdm9pZCB2Z2ljX3ZjcHVfaW5qZWN0X2ly cShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHZpcnEpCj4gIHsKPiAgICAgIHVpbnQ4X3Qg cHJpb3JpdHk7Cj4gLSAgICBzdHJ1Y3QgcGVuZGluZ19pcnEgKml0ZXIsICpuID0gaXJxX3RvX3Bl bmRpbmcodiwgdmlycSk7Cj4gKyAgICBzdHJ1Y3QgcGVuZGluZ19pcnEgKml0ZXIsICpuOwo+ICAg ICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiAgICAgIGJvb2wgcnVubmluZzsKPiAgCj4gQEAgLTQ4 OCw2ICs1NDQsOCBAQCB2b2lkIHZnaWNfdmNwdV9pbmplY3RfaXJxKHN0cnVjdCB2Y3B1ICp2LCB1 bnNpZ25lZCBpbnQgdmlycSkKPiAgCj4gICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmdi0+YXJjaC52 Z2ljLmxvY2ssIGZsYWdzKTsKPiAgCj4gKyAgICBuID0gaXJxX3RvX3BlbmRpbmcodiwgdmlycSk7 Cj4gKwo+ICAgICAgLyogdmNwdSBvZmZsaW5lICovCj4gICAgICBpZiAoIHRlc3RfYml0KF9WUEZf ZG93biwgJnYtPnBhdXNlX2ZsYWdzKSApCj4gICAgICB7Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL2FzbS1hcm0vZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCj4gaW5k ZXggMDBiOWMxYS4uZjQ0YTg0YiAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2Rv bWFpbi5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaAo+IEBAIC0yNTcsNiAr MjU3LDggQEAgc3RydWN0IGFyY2hfdmNwdQo+ICAgICAgICAgIHBhZGRyX3QgcmRpc3RfYmFzZTsK PiAgI2RlZmluZSBWR0lDX1YzX1JESVNUX0xBU1QgICgxIDw8IDApICAgICAgICAvKiBsYXN0IHZD UFUgb2YgdGhlIHJkaXN0ICovCj4gICAgICAgICAgdWludDhfdCBmbGFnczsKPiArICAgICAgICBz dHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfbHBpX2xpc3Q7Cj4gKyAgICAgICAgc3BpbmxvY2tfdCBw ZW5kaW5nX2xwaV9saXN0X2xvY2s7ICAgLyogcHJvdGVjdHMgdGhlIHBlbmRpbmdfbHBpX2xpc3Qg Ki8KPiAgICAgIH0gdmdpYzsKPiAgCj4gICAgICAvKiBUaW1lciByZWdpc3RlcnMgICovCj4gZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdmdpYy5oIGIveGVuL2luY2x1ZGUvYXNtLWFy bS92Z2ljLmgKPiBpbmRleCA0NjczMzNjLi44ZjEwOTljIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNs dWRlL2FzbS1hcm0vdmdpYy5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS92Z2ljLmgKPiBA QCAtODMsNiArODMsMTIgQEAgc3RydWN0IHBlbmRpbmdfaXJxCj4gICAgICBzdHJ1Y3QgbGlzdF9o ZWFkIGxyX3F1ZXVlOwo+ICB9Owo+ICAKPiArc3RydWN0IGxwaV9wZW5kaW5nX2lycQo+ICt7Cj4g KyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGVudHJ5Owo+ICsgICAgc3RydWN0IHBlbmRpbmdfaXJxIHBp cnE7Cj4gK307Cj4gKwo+ICAjZGVmaW5lIE5SX0lOVEVSUlVQVF9QRVJfUkFOSyAgIDMyCj4gICNk ZWZpbmUgSU5URVJSVVBUX1JBTktfTUFTSyAoTlJfSU5URVJSVVBUX1BFUl9SQU5LIC0gMSkKPiAg Cj4gQEAgLTI5NiwxMyArMzAyLDIxIEBAIGV4dGVybiBzdHJ1Y3QgdmNwdSAqdmdpY19nZXRfdGFy Z2V0X3ZjcHUoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCB2aXJxKTsKPiAgZXh0ZXJuIHZv aWQgdmdpY192Y3B1X2luamVjdF9pcnEoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCB2aXJx KTsKPiAgZXh0ZXJuIHZvaWQgdmdpY192Y3B1X2luamVjdF9zcGkoc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgaW50IHZpcnEpOwo+ICBleHRlcm4gdm9pZCB2Z2ljX2NsZWFyX3BlbmRpbmdfaXJx cyhzdHJ1Y3QgdmNwdSAqdik7Cj4gK2V4dGVybiB2b2lkIHZnaWNfaW5pdF9wZW5kaW5nX2lycShz dHJ1Y3QgcGVuZGluZ19pcnEgKnAsIHVuc2lnbmVkIGludCB2aXJxKTsKPiAgZXh0ZXJuIHN0cnVj dCBwZW5kaW5nX2lycSAqaXJxX3RvX3BlbmRpbmcoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGlu dCBpcnEpOwo+ICBleHRlcm4gc3RydWN0IHBlbmRpbmdfaXJxICpzcGlfdG9fcGVuZGluZyhzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaXJxKTsKPiArZXh0ZXJuIHN0cnVjdCBwZW5kaW5n X2lycSAqbHBpX3RvX3BlbmRpbmcoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBpcnEsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWxsb2NhdGUp Owo+ICBleHRlcm4gc3RydWN0IHZnaWNfaXJxX3JhbmsgKnZnaWNfcmFua19vZmZzZXQoc3RydWN0 IHZjcHUgKnYsIGludCBiLCBpbnQgbiwgaW50IHMpOwo+ICBleHRlcm4gc3RydWN0IHZnaWNfaXJx X3JhbmsgKnZnaWNfcmFua19pcnEoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBpcnEpOwo+ ICBleHRlcm4gYm9vbCB2Z2ljX2VtdWxhdGUoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIHVu aW9uIGhzciBoc3IpOwo+ICBleHRlcm4gdm9pZCB2Z2ljX2Rpc2FibGVfaXJxcyhzdHJ1Y3QgdmNw dSAqdiwgdWludDMyX3QgciwgaW50IG4pOwo+ICBleHRlcm4gdm9pZCB2Z2ljX2VuYWJsZV9pcnFz KHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCByLCBpbnQgbik7Cj4gKy8qIHBsYWNlaG9sZGVyIGZ1 bmN0aW9uIHVudGlsIHRoZSBwcm9wZXJ0eSB0YWJsZSBnZXRzIGludHJvZHVjZWQgKi8KPiArc3Rh dGljIGlubGluZSBpbnQgdmdpY19scGlfZ2V0X3ByaW9yaXR5KHN0cnVjdCBkb21haW4gKmQsIHVp bnQzMl90IHZscGkpCj4gK3sKPiArICAgIHJldHVybiAweGE7Cj4gK30KPiAgZXh0ZXJuIHZvaWQg cmVnaXN0ZXJfdmdpY19vcHMoc3RydWN0IGRvbWFpbiAqZCwgY29uc3Qgc3RydWN0IHZnaWNfb3Bz ICpvcHMpOwo+ICBpbnQgdmdpY192Ml9pbml0KHN0cnVjdCBkb21haW4gKmQsIGludCAqbW1pb19j b3VudCk7Cj4gIGludCB2Z2ljX3YzX2luaXQoc3RydWN0IGRvbWFpbiAqZCwgaW50ICptbWlvX2Nv dW50KTsKPiAtLSAKPiAyLjkuMAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==