From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH 38/57] ARM: new VGIC: Add PENDING registers handlers Date: Wed, 7 Mar 2018 17:21:50 +0000 Message-ID: <2c1e2a7f-1c30-00d8-d156-a591c13a6aa2@arm.com> References: <20180305160415.16760-1-andre.przywara@linaro.org> <20180305160415.16760-39-andre.przywara@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1etclH-0000DT-Rg for xen-devel@lists.xenproject.org; Wed, 07 Mar 2018 17:21:55 +0000 In-Reply-To: <20180305160415.16760-39-andre.przywara@linaro.org> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Andre Przywara , Stefano Stabellini Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org SGkgQW5kcmUsCgpPbiAwMy8wNS8yMDE4IDA0OjAzIFBNLCBBbmRyZSBQcnp5d2FyYSB3cm90ZToK PiBUaGUgcGVuZGluZyByZWdpc3RlciBoYW5kbGVycyBhcmUgc2hhcmVkIGJldHdlZW4gdGhlIHYy IGFuZCB2Mwo+IGVtdWxhdGlvbiwgc28gdGhlaXIgaW1wbGVtZW50YXRpb24gZ29lcyBpbnRvIHZn aWMtbW1pby5jLCB0byBiZSBlYXNpbHkKPiByZWZlcmVuY2VkIGZyb20gdGhlIHYzIGVtdWxhdGlv biBhcyB3ZWxsIGxhdGVyLgo+IEZvciBsZXZlbCB0cmlnZ2VyZWQgaW50ZXJydXB0cyB0aGUgcmVh bCBsaW5lIGxldmVsIGlzIHVuYWZmZWN0ZWQgYnkKPiB0aGlzIHdyaXRlLCBzbyB3ZSBrZWVwIHRo aXMgc3RhdGUgc2VwYXJhdGUgYW5kIGNvbWJpbmUgaXQgd2l0aCB0aGUKPiBkZXZpY2UncyBsZXZl bCB0byBnZXQgdGhlIGFjdHVhbCBwZW5kaW5nIHN0YXRlLgo+IEhhcmR3YXJlIG1hcHBlZCBJUlFz IG5lZWQgc29tZSBzcGVjaWFsIGhhbmRsaW5nLCBhcyB0aGVpciBoYXJkd2FyZSBzdGF0ZQo+IGhh cyB0byBiZSBjb29yZGluYXRlZCB3aXRoIHRoZSB2aXJ0dWFsIHBlbmRpbmcgYml0IHRvIGF2b2lk IGhhbmdpbmcKPiBvciBtYXNrZWQgaW50ZXJydXB0cy4KPiAKPiBUaGlzIGlzIGJhc2VkIG9uIExp bnV4IGNvbW1pdCA5NmIyOTgwMDBkYjQsIHdyaXR0ZW4gYnkgQW5kcmUgUHJ6eXdhcmEuCj4gCj4g U2lnbmVkLW9mZi1ieTogQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGxpbmFyby5vcmc+ Cj4gLS0tCj4gQ2hhbmdlbG9nIFJGQyAuLi4gdjE6Cj4gLSBwcm9wYWdhdGUgU0VUL0NMRUFSX1BF TkRJTkcgcmVxdWVzdHMgdG8gaGFyZHdhcmUKPiAKPiAgIHhlbi9hcmNoL2FybS92Z2ljL3ZnaWMt bW1pby12Mi5jIHwgICA0ICstCj4gICB4ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLW1taW8uYyAgICB8 IDEyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIHhlbi9hcmNo L2FybS92Z2ljL3ZnaWMtbW1pby5oICAgIHwgIDExICsrKysKPiAgIDMgZmlsZXMgY2hhbmdlZCwg MTM4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9h cmNoL2FybS92Z2ljL3ZnaWMtbW1pby12Mi5jIGIveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlv LXYyLmMKPiBpbmRleCAzZGQ5ODNmODg1Li5lZmRkNzMzMDFkIDEwMDY0NAo+IC0tLSBhL3hlbi9h cmNoL2FybS92Z2ljL3ZnaWMtbW1pby12Mi5jCj4gKysrIGIveGVuL2FyY2gvYXJtL3ZnaWMvdmdp Yy1tbWlvLXYyLmMKPiBAQCAtODYsMTAgKzg2LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdmdp Y19yZWdpc3Rlcl9yZWdpb24gdmdpY192Ml9kaXN0X3JlZ2lzdGVyc1tdID0gewo+ICAgICAgICAg ICB2Z2ljX21taW9fcmVhZF9lbmFibGUsIHZnaWNfbW1pb193cml0ZV9jZW5hYmxlLCAxLAo+ICAg ICAgICAgICBWR0lDX0FDQ0VTU18zMmJpdCksCj4gICAgICAgUkVHSVNURVJfREVTQ19XSVRIX0JJ VFNfUEVSX0lSUShHSUNEX0lTUEVORFIsCj4gLSAgICAgICAgdmdpY19tbWlvX3JlYWRfcmF6LCB2 Z2ljX21taW9fd3JpdGVfd2ksIDEsCj4gKyAgICAgICAgdmdpY19tbWlvX3JlYWRfcGVuZGluZywg dmdpY19tbWlvX3dyaXRlX3NwZW5kaW5nLCAxLAo+ICAgICAgICAgICBWR0lDX0FDQ0VTU18zMmJp dCksCj4gICAgICAgUkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNEX0lDUEVORFIs Cj4gLSAgICAgICAgdmdpY19tbWlvX3JlYWRfcmF6LCB2Z2ljX21taW9fd3JpdGVfd2ksIDEsCj4g KyAgICAgICAgdmdpY19tbWlvX3JlYWRfcGVuZGluZywgdmdpY19tbWlvX3dyaXRlX2NwZW5kaW5n LCAxLAo+ICAgICAgICAgICBWR0lDX0FDQ0VTU18zMmJpdCksCj4gICAgICAgUkVHSVNURVJfREVT Q19XSVRIX0JJVFNfUEVSX0lSUShHSUNEX0lTQUNUSVZFUiwKPiAgICAgICAgICAgdmdpY19tbWlv X3JlYWRfcmF6LCB2Z2ljX21taW9fd3JpdGVfd2ksIDEsCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNo L2FybS92Z2ljL3ZnaWMtbW1pby5jIGIveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLmMKPiBp bmRleCBmOGYwMjUyZWZmLi4yZTkzOWQ1ZTM5IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS92 Z2ljL3ZnaWMtbW1pby5jCj4gKysrIGIveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLmMKPiBA QCAtMTU2LDYgKzE1NiwxMzEgQEAgdm9pZCB2Z2ljX21taW9fd3JpdGVfY2VuYWJsZShzdHJ1Y3Qg dmNwdSAqdmNwdSwKPiAgICAgICB9Cj4gICB9Cj4gICAKPiArdW5zaWduZWQgbG9uZyB2Z2ljX21t aW9fcmVhZF9wZW5kaW5nKHN0cnVjdCB2Y3B1ICp2Y3B1LAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGFkZHJfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuKQo+ICt7Cj4g KyAgICB1aW50MzJfdCBpbnRpZCA9IFZHSUNfQUREUl9UT19JTlRJRChhZGRyLCAxKTsKPiArICAg IHVpbnQzMl90IHZhbHVlID0gMDsKPiArICAgIHVuc2lnbmVkIGludCBpOwo+ICsKPiArICAgIC8q IExvb3Agb3ZlciBhbGwgSVJRcyBhZmZlY3RlZCBieSB0aGlzIHJlYWQgKi8KPiArICAgIGZvciAo IGkgPSAwOyBpIDwgbGVuICogODsgaSsrICkKPiArICAgIHsKPiArICAgICAgICBzdHJ1Y3Qgdmdp Y19pcnEgKmlycSA9IHZnaWNfZ2V0X2lycSh2Y3B1LT5kb21haW4sIHZjcHUsIGludGlkICsgaSk7 Cj4gKwo+ICsgICAgICAgIGlmICggaXJxX2lzX3BlbmRpbmcoaXJxKSApCj4gKyAgICAgICAgICAg IHZhbHVlIHw9ICgxVSA8PCBpKTsKPiArCj4gKyAgICAgICAgdmdpY19wdXRfaXJxKHZjcHUtPmRv bWFpbiwgaXJxKTsKPiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gdmFsdWU7Cj4gK30KPiArCj4g K3ZvaWQgdmdpY19tbWlvX3dyaXRlX3NwZW5kaW5nKHN0cnVjdCB2Y3B1ICp2Y3B1LAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4s Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsKQo+ICt7 Cj4gKyAgICB1aW50MzJfdCBpbnRpZCA9IFZHSUNfQUREUl9UT19JTlRJRChhZGRyLCAxKTsKPiAr ICAgIHVuc2lnbmVkIGludCBpOwo+ICsgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiArICAgIGly cV9kZXNjX3QgKmRlc2M7Cj4gKwo+ICsgICAgZm9yX2VhY2hfc2V0X2JpdCggaSwgJnZhbCwgbGVu ICogOCApCj4gKyAgICB7Cj4gKyAgICAgICAgc3RydWN0IHZnaWNfaXJxICppcnEgPSB2Z2ljX2dl dF9pcnEodmNwdS0+ZG9tYWluLCB2Y3B1LCBpbnRpZCArIGkpOwo+ICsKPiArICAgICAgICBzcGlu X2xvY2tfaXJxc2F2ZSgmaXJxLT5pcnFfbG9jaywgZmxhZ3MpOwo+ICsgICAgICAgIGlycS0+cGVu ZGluZ19sYXRjaCA9IHRydWU7Cj4gKwo+ICsgICAgICAgIC8qIFRvIG9ic2VydmUgdGhlIGxvY2tp bmcgb3JkZXIsIGp1c3QgdGFrZSB0aGUgaXJxX2Rlc2MgcG9pbnRlciBoZXJlLiAqLwo+ICsgICAg ICAgIGlmICggaXJxLT5odyApCj4gKyAgICAgICAgICAgIGRlc2MgPSBpcnFfdG9fZGVzYyhpcnEt Pmh3aW50aWQpOwo+ICsgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgZGVzYyA9IE5VTEw7Cj4g Kwo+ICsgICAgICAgIHZnaWNfcXVldWVfaXJxX3VubG9jayh2Y3B1LT5kb21haW4sIGlycSwgZmxh Z3MpOwo+ICsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIFdoZW4gdGhlIFZNIHNldHMgdGhl IHBlbmRpbmcgc3RhdGUgZm9yIGEgSFcgaW50ZXJydXB0IG9uIHRoZSB2aXJ0dWFsCj4gKyAgICAg ICAgICogZGlzdHJpYnV0b3Igd2Ugc2V0IHRoZSBhY3RpdmUgc3RhdGUgb24gdGhlIHBoeXNpY2Fs IGRpc3RyaWJ1dG9yLAo+ICsgICAgICAgICAqIGJlY2F1c2UgdGhlIHZpcnR1YWwgaW50ZXJydXB0 IGNhbiBiZWNvbWUgYWN0aXZlIGFuZCB0aGVuIHRoZSBndWVzdAo+ICsgICAgICAgICAqIGNhbiBk ZWFjdGl2YXRlIGl0Lgo+ICsgICAgICAgICAqLwo+ICsgICAgICAgIGlmICggZGVzYyApCj4gKyAg ICAgICAgewo+ICsgICAgICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmZGVzYy0+bG9jaywgZmxh Z3MpOwo+ICsgICAgICAgICAgICBzcGluX2xvY2soJmlycS0+aXJxX2xvY2spOwo+ICsKPiArICAg ICAgICAgICAgLyogSXMgdGhpcyBoL3cgSVJRIHN0aWxsIGFzc2lnbmVkIHRvIHRoZSB2aXJ0dWFs IElSUT8gKi8KClNhbWUgcmVtYXJrIGFzIGZvciB0aGUgZW5hYmxlIGluIHBhdGNoICMzNy4gV2hh dCBpZiB0aGUgaC93IElSUSBoYXMgY2hhbmdlZD8KCkkgYW0gdHJ5aW5nIHRvIHRoaW5rIGluIHBv dGVudGlhbCB1c2UgY2FzZSB3aGVyZSBhIHBoeXNpY2FsIGludGVycnVwdCAKd291bGQgYmUgcmVt b3ZlZCBmcm9tIGEgZG9tYWluLiBUaGUgb25seSBvbmUgSSBjYW4gdGhpbmsgaXMgYSBpbnRlcnJ1 cHQgCnJvdXRlZCBiYWNrIHRvIHRoZSBoYXJkd2FyZSBkb21haW4gYWZ0ZXIgYSBndWVzdCBpcyBk ZXN0cm95ZWQuCgpCdXQgSSBhbSBub3QgZW50aXJlbHkgY29udmluY2VkIHRoaXMgd291bGQgd29y ayBjb3JyZWN0bHkgdG9kYXkuIE1vc3RseSAKYmVjYXVzZSB3ZSBkb24ndCBzeW5jIHRoZSB2SVJR IHN0YXRlIGJhY2sgdG8gdGhlIHBJUlEgc3RhdGUgKGUuZyBlbmFibGUsIApwZW5kaW5nLCBhY3Rp dmUpIGluIHZnaWNfY29ubmVjdF9od19pcnEuCgpUaGlzIGNvdWxkIGxlYWQgdG8gaW50ZXJlc3Rp bmcgaXNzdWUgZGVwZW5kaW5nIG9uIHRoZSB2SVJRIHN0YXRlLiBTbyBtYXkgCndlIHNob3VsZCBq dXN0IGVuZm9yY2UgdGhhdCBhIHBoeXNpY2FsIGludGVycnVwdCBpcyByb3V0ZWQgdG8gYSBkb21h aW4gCmZvciBpdHMgZnVsbCBsaWZlLiBBbnkgb3BpbmlvbnM/Cgo+ICsgICAgICAgICAgICBpZiAo IGlycS0+aHcgJiYgZGVzYy0+aXJxID09IGlycS0+aHdpbnRpZCApCj4gKyAgICAgICAgICAgICAg ICBnaWNfc2V0X2FjdGl2ZV9zdGF0ZShkZXNjLCB0cnVlKTsKPiArCj4gKyAgICAgICAgICAgIHNw aW5fdW5sb2NrKCZpcnEtPmlycV9sb2NrKTsKPiArICAgICAgICAgICAgc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmZGVzYy0+bG9jaywgZmxhZ3MpOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAg dmdpY19wdXRfaXJxKHZjcHUtPmRvbWFpbiwgaXJxKTsKPiArICAgIH0KPiArfQo+ICsKPiArdm9p ZCB2Z2ljX21taW9fd3JpdGVfY3BlbmRpbmcoc3RydWN0IHZjcHUgKnZjcHUsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbiwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YWwpCj4gK3sKPiAr ICAgIHVpbnQzMl90IGludGlkID0gVkdJQ19BRERSX1RPX0lOVElEKGFkZHIsIDEpOwo+ICsgICAg dW5zaWduZWQgaW50IGk7Cj4gKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsgICAgaXJxX2Rl c2NfdCAqZGVzYzsKPiArCj4gKyAgICBmb3JfZWFjaF9zZXRfYml0KCBpLCAmdmFsLCBsZW4gKiA4 ICkKPiArICAgIHsKPiArICAgICAgICBzdHJ1Y3QgdmdpY19pcnEgKmlycSA9IHZnaWNfZ2V0X2ly cSh2Y3B1LT5kb21haW4sIHZjcHUsIGludGlkICsgaSk7Cj4gKwo+ICsgICAgICAgIHNwaW5fbG9j a19pcnFzYXZlKCZpcnEtPmlycV9sb2NrLCBmbGFncyk7Cj4gKyAgICAgICAgaXJxLT5wZW5kaW5n X2xhdGNoID0gZmFsc2U7Cj4gKwo+ICsgICAgICAgIC8qIFRvIG9ic2VydmUgdGhlIGxvY2tpbmcg b3JkZXIsIGp1c3QgdGFrZSB0aGUgaXJxX2Rlc2MgcG9pbnRlciBoZXJlLiAqLwo+ICsgICAgICAg IGlmICggaXJxLT5odyApCj4gKyAgICAgICAgICAgIGRlc2MgPSBpcnFfdG9fZGVzYyhpcnEtPmh3 aW50aWQpOwo+ICsgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgZGVzYyA9IE5VTEw7Cj4gKwo+ ICsgICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlycS0+aXJxX2xvY2ssIGZsYWdzKTsK PiArCj4gKyAgICAgICAgLyoKPiArICAgICAgICAgKiBXZSBkb24ndCB3YW50IHRoZSBndWVzdCB0 byBlZmZlY3RpdmVseSBtYXNrIHRoZSBwaHlzaWNhbAo+ICsgICAgICAgICAqIGludGVycnVwdCBi eSBkb2luZyBhIHdyaXRlIHRvIFNQRU5EUiBmb2xsb3dlZCBieSBhIHdyaXRlIHRvCj4gKyAgICAg ICAgICogQ1BFTkRSIGZvciBIVyBpbnRlcnJ1cHRzLCBzbyB3ZSBjbGVhciB0aGUgYWN0aXZlIHN0 YXRlIG9uCj4gKyAgICAgICAgICogdGhlIHBoeXNpY2FsIHNpZGUgaWYgdGhlIHZpcnR1YWwgaW50 ZXJydXB0IGlzIG5vdCBhY3RpdmUuCj4gKyAgICAgICAgICogVGhpcyBtYXkgbGVhZCB0byB0YWtp bmcgYW4gYWRkaXRpb25hbCBpbnRlcnJ1cHQgb24gdGhlCj4gKyAgICAgICAgICogaG9zdCwgYnV0 IHRoYXQgc2hvdWxkIG5vdCBiZSBhIHByb2JsZW0gYXMgdGhlIHdvcnN0IHRoYXQKPiArICAgICAg ICAgKiBjYW4gaGFwcGVuIGlzIGFuIGFkZGl0aW9uYWwgdmdpYyBpbmplY3Rpb24uICBXZSBhbHNv IGNsZWFyCj4gKyAgICAgICAgICogdGhlIHBlbmRpbmcgc3RhdGUgdG8gbWFpbnRhaW4gcHJvcGVy IHNlbWFudGljcyBmb3IgZWRnZSBIVwo+ICsgICAgICAgICAqIGludGVycnVwdHMuCj4gKyAgICAg ICAgICovCj4gKyAgICAgICAgaWYgKCBkZXNjICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAg IHNwaW5fbG9ja19pcnFzYXZlKCZkZXNjLT5sb2NrLCBmbGFncyk7Cj4gKyAgICAgICAgICAgIHNw aW5fbG9jaygmaXJxLT5pcnFfbG9jayk7Cj4gKwo+ICsgICAgICAgICAgICAvKiBJcyB0aGlzIGgv dyBJUlEgc3RpbGwgYXNzaWduZWQgdG8gdGhlIHZpcnR1YWwgSVJRPyAqLwo+ICsgICAgICAgICAg ICBpZiAoIGlycS0+aHcgJiYgZGVzYy0+aXJxID09IGlycS0+aHdpbnRpZCApCj4gKyAgICAgICAg ICAgIHsKPiArICAgICAgICAgICAgICAgIGdpY19zZXRfcGVuZGluZ19zdGF0ZShkZXNjLCBmYWxz ZSk7Cj4gKyAgICAgICAgICAgICAgICBpZiAoIWlycS0+YWN0aXZlKQo+ICsgICAgICAgICAgICAg ICAgICAgIGdpY19zZXRfYWN0aXZlX3N0YXRlKGRlc2MsIGZhbHNlKTsKPiArICAgICAgICAgICAg fQo+ICsKPiArICAgICAgICAgICAgc3Bpbl91bmxvY2soJmlycS0+aXJxX2xvY2spOwo+ICsgICAg ICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXNjLT5sb2NrLCBmbGFncyk7Cj4gKyAg ICAgICAgfQo+ICsKPiArCj4gKyAgICAgICAgdmdpY19wdXRfaXJxKHZjcHUtPmRvbWFpbiwgaXJx KTsKPiArICAgIH0KPiArfQo+ICsKPiAgIHN0YXRpYyBpbnQgbWF0Y2hfcmVnaW9uKGNvbnN0IHZv aWQgKmtleSwgY29uc3Qgdm9pZCAqZWx0KQo+ICAgewo+ICAgICAgIGNvbnN0IHVuc2lnbmVkIGlu dCBvZmZzZXQgPSAodW5zaWduZWQgbG9uZylrZXk7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2Fy bS92Z2ljL3ZnaWMtbW1pby5oIGIveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLmgKPiBpbmRl eCAyZGRjYmJmNThkLi40NDY1ZjNiN2U1IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS92Z2lj L3ZnaWMtbW1pby5oCj4gKysrIGIveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLmgKPiBAQCAt MTA3LDYgKzEwNywxNyBAQCB2b2lkIHZnaWNfbW1pb193cml0ZV9jZW5hYmxlKHN0cnVjdCB2Y3B1 ICp2Y3B1LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90IGFkZHIsIHVu c2lnbmVkIGludCBsZW4sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgdmFsKTsKPiAgIAo+ICt1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX3BlbmRpbmco c3RydWN0IHZjcHUgKnZjcHUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwYWRkcl90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4pOwo+ICsKPiArdm9pZCB2Z2ljX21taW9f d3JpdGVfc3BlbmRpbmcoc3RydWN0IHZjcHUgKnZjcHUsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBhZGRyX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbiwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YWwpOwo+ICsKPiArdm9pZCB2Z2ljX21t aW9fd3JpdGVfY3BlbmRpbmcoc3RydWN0IHZjcHUgKnZjcHUsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhZGRyX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbiwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YWwpOwo+ICsKPiAgIHVuc2lnbmVk IGludCB2Z2ljX3YyX2luaXRfZGlzdF9pb2RldihzdHJ1Y3QgdmdpY19pb19kZXZpY2UgKmRldik7 Cj4gICAKPiAgICNlbmRpZgo+IAoKQ2hlZXJzLAoKLS0gCkp1bGllbiBHcmFsbAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==