From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: Re: [RFC PATCH 05/24] ARM: GICv3 ITS: introduce ITS command handling Date: Tue, 31 Jan 2017 09:10:25 +0000 Message-ID: <6a5d8602-13bc-9a61-59a9-252170721761@arm.com> References: <20160928182457.12433-1-andre.przywara@arm.com> <20160928182457.12433-6-andre.przywara@arm.com> <5adbf128-1c4f-6701-bd50-a7edd14e4654@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 1cYUQy-0008GL-7Q for xen-devel@lists.xenproject.org; Tue, 31 Jan 2017 09:09:04 +0000 In-Reply-To: <5adbf128-1c4f-6701-bd50-a7edd14e4654@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall , Stefano Stabellini Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org SGkgSnVsaWVuLAoKKGZvcmdvdCB0byBoaXQgdGhlIFNlbmQgYnV0dG9uIHllc3RlcmRheSAuLi4p CgpqdXN0IGdvaW5nIG92ZXIgdGhlIHJldmlldyBjb21tZW50cyBhZ2FpbiBhbmQgZm91bmQgc29t ZSBsZWZ0b3ZlcnMuCkkgZml4ZWQvYWRkcmVzc2VkIGFsbCBjb21tZW50cyBvZiB5b3VycyB0aGF0 IEkgZG9uJ3QgZXhwbGljaXRseSByZWZlciB0bwpoZXJlLgoKLi4uCgpPbiAwMi8xMS8xNiAxNTow NSwgSnVsaWVuIEdyYWxsIHdyb3RlOgo+IEhpIEFuZHJlLAo+IAo+IE9uIDI4LzA5LzE2IDE5OjI0 LCBBbmRyZSBQcnp5d2FyYSB3cm90ZToKPj4gVG8gYmUgYWJsZSB0byBlYXNpbHkgc2VuZCBjb21t YW5kcyB0byB0aGUgSVRTLCBjcmVhdGUgdGhlIHJlc3BlY3RpdmUKPj4gd3JhcHBlciBmdW5jdGlv bnMsIHdoaWNoIHRha2UgY2FyZSBvZiB0aGUgcmluZyBidWZmZXIuCj4+IFRoZSBmaXJzdCB0d28g Y29tbWFuZHMgd2UgaW1wbGVtZW50IHByb3ZpZGUgbWV0aG9kcyB0byBtYXAgYSBjb2xsZWN0aW9u Cj4+IHRvIGEgcmVkaXN0cmlidXRvciAoYWthIGhvc3QgY29yZSkgYW5kIHRvIGZsdXNoIHRoZSBj b21tYW5kIHF1ZXVlIChTWU5DKS4KPj4gU3RhcnQgdXNpbmcgdGhlc2UgY29tbWFuZHMgZm9yIG1h cHBpbmcgb25lIGNvbGxlY3Rpb24gdG8gZWFjaCBob3N0IENQVS4KPj4KPj4gU2lnbmVkLW9mZi1i eTogQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGFybS5jb20+Cj4+IC0tLQo+PiAgeGVu L2FyY2gvYXJtL2dpYy1pdHMuYyAgICAgICAgfCAxMDEKPj4gKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4+ICB4ZW4vYXJjaC9hcm0vZ2ljLXYzLmMgICAgICAgICB8 ICAxNyArKysrKysrCj4+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy1pdHMuaCB8ICAzMiArKysr KysrKysrKysrCj4+ICAzIGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCspCj4+Cj4+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLWl0cy5jIGIveGVuL2FyY2gvYXJtL2dpYy1pdHMu Ywo+PiBpbmRleCBjOGE3YTdlLi44ODM5N2JjIDEwMDY0NAo+PiAtLS0gYS94ZW4vYXJjaC9hcm0v Z2ljLWl0cy5jCj4+ICsrKyBiL3hlbi9hcmNoL2FybS9naWMtaXRzLmMKPj4gQEAgLTMzLDYgKzMz LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgewo+PiAgICAgIGludCBob3N0X2xwaV9iaXRzOwo+PiAgfSBs cGlfZGF0YTsKPj4KPj4gKy8qIFBoeXNpY2FsIHJlZGlzdHJpYnV0b3IgYWRkcmVzcyAqLwo+PiAr c3RhdGljIERFRklORV9QRVJfQ1BVKHVpbnQ2NF90LCByZGlzdF9hZGRyKTsKPiAKPiBUaGUgdHlw ZSBzaG91bGQgYmUgcGFkZHJfdC4KPiAKPj4gKy8qIFJlZGlzdHJpYnV0b3IgSUQgKi8KPj4gK3N0 YXRpYyBERUZJTkVfUEVSX0NQVSh1aW50NjRfdCwgcmRpc3RfaWQpOwo+PiAgLyogUGVuZGluZyB0 YWJsZSBmb3IgZWFjaCByZWRpc3RyaWJ1dG9yICovCj4+ICBzdGF0aWMgREVGSU5FX1BFUl9DUFUo dm9pZCAqLCBwZW5kaW5nX3RhYmxlKTsKPj4KPj4gQEAgLTQwLDYgKzQ0LDg2IEBAIHN0YXRpYyBE RUZJTkVfUEVSX0NQVSh2b2lkICosIHBlbmRpbmdfdGFibGUpOwo+PiAgICAgICAgICBtaW5fdCh1 bnNpZ25lZCBpbnQsIGxwaV9kYXRhLmhvc3RfbHBpX2JpdHMsCj4+IENPTkZJR19IT1NUX0xQSV9C SVRTKQo+PiAgI2RlZmluZSBNQVhfSE9TVF9MUElTICAgKEJJVChNQVhfSE9TVF9MUElfQklUUykg LSA4MTkyKQo+Pgo+PiArI2RlZmluZSBJVFNfQ09NTUFORF9TSVpFICAgICAgICAzMgo+PiArCj4+ ICtzdGF0aWMgaW50IGl0c19zZW5kX2NvbW1hbmQoc3RydWN0IGhvc3RfaXRzICpod19pdHMsIHZv aWQgKml0c19jbWQpCj4gCj4gVGhlIGl0c19jbWQgY291bGQgYmUgY29uc3QgYXMgeW91IGRvbid0 IG1vZGlmeSBpdC4KPiAKPj4gK3sKPj4gKyAgICBpbnQgcmVhZHAsIHdyaXRlcDsKPiAKPiBQbGVh c2UgdXNlIHVpbnQzMl90IChvciBtYXliZSB1aW50NjRfdCkgaGVyZS4KPiAKPj4gKwo+PiArICAg IHNwaW5fbG9jaygmaHdfaXRzLT5jbWRfbG9jayk7Cj4+ICsKPj4gKyAgICByZWFkcCA9IHJlYWRs X3JlbGF4ZWQoaHdfaXRzLT5pdHNfYmFzZSArIEdJVFNfQ1JFQURSKSAmCj4+IEdFTk1BU0soMTks IDUpOwo+PiArICAgIHdyaXRlcCA9IHJlYWRsX3JlbGF4ZWQoaHdfaXRzLT5pdHNfYmFzZSArIEdJ VFNfQ1dSSVRFUikgJgo+PiBHRU5NQVNLKDE5LCA1KTsKPiAKPiBQbGVhc2UgaW50cm9kdWNlIGEg ZGVmaW5lIGZvciB0aGUgR0VOTUFTSygxOSwgNSkgcmF0aGVyIHRoYW4gaGFyZGNvZGluZwo+IGl0 IGluIG11bHRpcGxlIHBsYWNlLgo+IAo+PiArCj4+ICsgICAgaWYgKCAoKHdyaXRlcCArIElUU19D T01NQU5EX1NJWkUpICUgUEFHRV9TSVpFKSA9PSByZWFkcCApCj4+ICsgICAgewo+PiArICAgICAg ICBzcGluX3VubG9jaygmaHdfaXRzLT5jbWRfbG9jayk7Cj4+ICsgICAgICAgIHJldHVybiAtRUJV U1k7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgbWVtY3B5KGh3X2l0cy0+Y21kX2J1ZiArIHdyaXRl cCwgaXRzX2NtZCwgSVRTX0NPTU1BTkRfU0laRSk7Cj4+ICsgICAgX19mbHVzaF9kY2FjaGVfYXJl YShod19pdHMtPmNtZF9idWYgKyB3cml0ZXAsIElUU19DT01NQU5EX1NJWkUpOwo+IAo+IFdoeSB0 aGUgZmx1c2ggaGVyZT8gRnJvbSBwYXRjaCAjNCwgdGhlIEdJQyBoYXMgYmVlbiBjb25maWd1cmVk IHRvIGJlCj4gYWJsZSB0byBzbm9vcCB0aGUgY2FjaGUuIFNvIGEgZHNiKGlzaCkgd291bGQgYmUg ZW5vdWdoIGhlcmUuCj4gCj4+ICsgICAgd3JpdGVwID0gKHdyaXRlcCArIElUU19DT01NQU5EX1NJ WkUpICUgUEFHRV9TSVpFOwo+PiArCj4+ICsgICAgd3JpdGVxX3JlbGF4ZWQod3JpdGVwICYgR0VO TUFTSygxOSwgNSksIGh3X2l0cy0+aXRzX2Jhc2UgKwo+PiBHSVRTX0NXUklURVIpOwo+PiArCj4+ ICsgICAgc3Bpbl91bmxvY2soJmh3X2l0cy0+Y21kX2xvY2spOwo+PiArCj4+ICsgICAgcmV0dXJu IDA7Cj4gCj4gVGhpcyBmdW5jdGlvbiByZXR1cm4gZWl0aGVyIC1FQlVTWSBvciAwLiBXb3VsZCBu b3QgaXQgYmUgYmV0dGVyIHRvCj4gcmV0dXJuIGEgYm9vbCBpbnN0ZWFkPwoKSSdkIHJhdGhlciBr ZWVwIHRoaXMgaW4gbGluZSB3aXRoIHRoZSBnZW5lcmFsIFVOSVgvTGludXggd2F5IG9mCnJldHVy bmluZyBhbiBpbnQsIHdpdGggMCBvbiBzdWNjZXNzIGFuZCBhIG5lZ2F0aXZlIGVycm9yIG51bWJl ciBvbgpmYWlsdXJlLiBUaGlzIGFsbG93cyBlYXNpZXIgZml4aW5nIHdoZW4gd2UgaW50cm9kdWNl IG1vcmUgZXJyb3IgaGFuZGxpbmcKaW4gdGhlIGZ1dHVyZSAoU0Vycm9ycz8pLgpTbyBjYWxsZXJz IGp1c3QgcGFzcyBvbiB0aGUgcmV0dXJuIHZhbHVlIGFuZCBpdCdzIHVwIHRvIHRoZSBsZWFmCmZ1 bmN0aW9ucyB0byBjb21lIHVwIHdpdGggdGhlIHByb3BlciBlcnJvciB2YWx1ZS4KCj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyB1aW50NjRfdCBlbmNvZGVfcmRiYXNlKHN0cnVjdCBob3N0X2l0cyAqaHdf aXRzLCBpbnQgY3B1LAo+PiB1aW50NjRfdCByZWcpCj4+ICt7Cj4+ICsgICAgcmVnICY9IH5HRU5N QVNLKDUxLCAxNik7Cj4+ICsKPj4gKyAgICBpZiAoIGh3X2l0cy0+cHRhICkKPj4gKyAgICAgICAg cmVnIHw9IHBlcl9jcHUocmRpc3RfYWRkciwgY3B1KSAmIEdFTk1BU0soNTEsIDE2KTsKPj4gKyAg ICBlbHNlCj4+ICsgICAgICAgIHJlZyB8PSBwZXJfY3B1KHJkaXN0X2lkLCBjcHUpIDw8IDE2Owo+ IAo+IEkgd291bGQgcHJlZmVyIGlmIHdlIHNldHVwIHRoZSB0YXJnZXQgYWRkcmVzcyBhdCBpbml0 aWFsaXplIHBlci1jcHUKPiByYXRoZXIgdGhhbiBkb2luZyBpdCBldmVyeSB0aW1lIHdlIHNlbmQg YSBzeW5jIGNvbW1hbmQgKG9yIGVsc2UpLgoKSSBiZWxpZXZlIHdlIGNhbid0IGRvIGVhc2lseSwg YmVjYXVzZSB0aGUgUFRBIGJpdCBpcyBwZXIgSVRTLCBub3QgcGVyCnJlZGlzdHJpYnV0b3IuIEkg c2VlIHRoYXQgaXQncyByYXRoZXIgdW5saWtlbHkgdGhhdCB3ZSBoYXZlIElUU2VzIHdpdGgKZGlm ZmVyZW50IFBUQSBiaXQgc2V0dGluZ3MgaW4gb25lIHN5c3RlbSwgYnV0IGFyY2hpdGVjdHVyYWxs eSBpdCdzIHBvc3NpYmxlLgoKPj4gKwo+PiArICAgIHJldHVybiByZWc7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBpbnQgaXRzX3NlbmRfY21kX3N5bmMoc3RydWN0IGhvc3RfaXRzICppdHMsIGludCBj cHUpCj4+ICt7Cj4+ICsgICAgdWludDY0X3QgY21kWzRdOwo+PiArCj4+ICsgICAgY21kWzBdID0g R0lUU19DTURfU1lOQzsKPj4gKyAgICBjbWRbMV0gPSAweDAwOwo+PiArICAgIGNtZFsyXSA9IGVu Y29kZV9yZGJhc2UoaXRzLCBjcHUsIDB4MCk7Cj4+ICsgICAgY21kWzNdID0gMHgwMDsKPj4gKwo+ PiArICAgIHJldHVybiBpdHNfc2VuZF9jb21tYW5kKGl0cywgY21kKTsKPj4gK30KPj4gKwo+PiAr c3RhdGljIGludCBpdHNfc2VuZF9jbWRfbWFwYyhzdHJ1Y3QgaG9zdF9pdHMgKml0cywgaW50IGNv bGxlY3Rpb25faWQsCj4+IGludCBjcHUpCj4+ICt7Cj4+ICsgICAgdWludDY0X3QgY21kWzRdOwo+ PiArCj4+ICsgICAgY21kWzBdID0gR0lUU19DTURfTUFQQzsKPj4gKyAgICBjbWRbMV0gPSAweDAw Owo+PiArICAgIGNtZFsyXSA9IGVuY29kZV9yZGJhc2UoaXRzLCBjcHUsIChjb2xsZWN0aW9uX2lk ICYgR0VOTUFTSygxNSwgMCkpCj4+IHwgQklUKDYzKSk7Cj4+ICsgICAgY21kWzNdID0gMHgwMDsK Pj4gKwo+PiArICAgIHJldHVybiBpdHNfc2VuZF9jb21tYW5kKGl0cywgY21kKTsKPj4gK30KPj4g Kwo+PiArLyogU2V0IHVwIHRoZSAoMToxKSBjb2xsZWN0aW9uIG1hcHBpbmcgZm9yIHRoZSBnaXZl biBob3N0IENQVS4gKi8KPj4gK3ZvaWQgZ2ljdjNfaXRzX3NldHVwX2NvbGxlY3Rpb24oaW50IGNw dSkKPj4gK3sKPj4gKyAgICBzdHJ1Y3QgaG9zdF9pdHMgKml0czsKPj4gKwo+PiArICAgIGxpc3Rf Zm9yX2VhY2hfZW50cnkoaXRzLCAmaG9zdF9pdHNfbGlzdCwgZW50cnkpCj4+ICsgICAgewo+PiAr ICAgICAgICAvKiBPbmx5IHNlbmQgY29tbWFuZHMgdG8gSVRTIHRoYXQgaGF2ZSBiZWVuIGluaXRp YWxpemVkCj4+IGFscmVhZHkuICovCj4+ICsgICAgICAgIGlmICggIWl0cy0+Y21kX2J1ZiApCj4+ ICsgICAgICAgICAgICBjb250aW51ZTsKPj4gKwo+PiArICAgICAgICBpdHNfc2VuZF9jbWRfbWFw YyhpdHMsIGNwdSwgY3B1KTsKPj4gKyAgICAgICAgaXRzX3NlbmRfY21kX3N5bmMoaXRzLCBjcHUp Owo+IAo+IExvb2tpbmcgYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGl0c19zZW5kX2NtZF8qLCB0 aGUgZnVuY3Rpb25zIG1heQo+IHJldHVybiBhbiBlcnJvciBpZiB0aGUgY29tbWFuZCBxdWV1ZSBp cyBmdWxsLiBIb3dldmVyIHlvdSBkb24ndCBjaGVjawo+IHRoZSByZXR1cm4sIGFuZCBjb250aW51 ZSBhcyBpdCB3YXMgZmluZS4gV2Ugd2lsbCBnZXQgaW4gdHJvdWJsZSBtdWNoIGxhdGVyLgo+IAo+ IEZ1cnRoZXJtb3JlLCBzZW5kaW5nIHRoZSBTWU5DIGNvbW1hbmQgZG9lcyBub3QgbWVhbmluZyB0 aGUgSVRTIGhhcwo+IGV4ZWN1dGVkIHRoZSBjb21tYW5kLiBZb3UgaGF2ZSB0byBlbnN1cmUgdGhh dCBHSVRTX0NSRUFEUiA9PQo+IEdJVFNfQ1dSSVRFUiBhbmQgSSBkaWRuJ3QgZmluZCB0aGlzIGNv ZGUgd2l0aGluIHRoaXMgc2VyaWVzLgoKT3JpZ2luYWxseSBJIGRpZG4ndCBjYXJlIHNvIG11Y2gg YWJvdXQgaGFuZGxpbmcgSVRTIGNvbW1hbmQgcXVldWUKZXJyb3JzLCBiZWNhdXNlIHRyYWRpdGlv bmFsbHkgd2UgY291bGRuJ3QgZG8gdG9vIG11Y2ggYWJvdXQgdGhlbSwgc2luY2UKdGhlcmUgaXMg bm8gZ29vZCB3YXkgb2YgY29tbXVuaWNhdGluZyBmYWlsdXJlIGJhY2sgdG8gdGhlIGd1ZXN0LiBC dXQKc2luY2Ugd2Ugbm93IG9ubHkgaXNzdWUgY29tbWFuZHMgb3V0c2lkZSBvZiBhIG5vbi1Eb20w IGd1ZXN0IGNvbnRleHQsIEkKYWRkZWQgdGhlIGVycm9yIGhhbmRsaW5nIHlvdSBzdWdnZXN0ZWQg YW5kIHBhc3MgYW55IGVycm9yIHVwIHRoZSBjYWxsIGNoYWluLgoKPiAKPj4gKyAgICB9Cj4+ICt9 Cj4+ICsKPj4gICNkZWZpbmUgQkFTRVJfQVRUUl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKPj4gICAgICAgICAgKCgweDNVTCA8PCBHSVRTX0JBU0VSX1NI QVJFQUJJTElUWV9TSElGVCkgICAgICAgICAgICAgICB8IFwKPj4gICAgICAgICAgICgweDdVTCA8 PCBHSVRTX0JBU0VSX09VVEVSX0NBQ0hFQUJJTElUWV9TSElGVCkgICAgICAgICB8IFwKPj4gQEAg LTE0Nyw2ICsyMzEsMTMgQEAgaW50IGdpY3YzX2l0c19pbml0KHN0cnVjdCBob3N0X2l0cyAqaHdf aXRzKQo+PiAgICAgIGlmICggIWh3X2l0cy0+aXRzX2Jhc2UgKQo+PiAgICAgICAgICByZXR1cm4g LUVOT01FTTsKPj4KPj4gKyAgICAvKiBNYWtlIHN1cmUgdGhlIElUUyBpcyBkaXNhYmxlZCBiZWZv cmUgcHJvZ3JhbW1pbmcgdGhlIEJBU0UKPj4gcmVnaXN0ZXJzLiAqLwo+PiArICAgIHJlZyA9IHJl YWRsX3JlbGF4ZWQoaHdfaXRzLT5pdHNfYmFzZSArIEdJVFNfQ1RMUik7Cj4+ICsgICAgd3JpdGVs X3JlbGF4ZWQocmVnICYgfkdJVFNfQ1RMUl9FTkFCTEUsIGh3X2l0cy0+aXRzX2Jhc2UgKwo+PiBH SVRTX0NUTFIpOwo+IAo+IFRoZSBzcGVjICg2LjIuMSBpbiBJSEkgMDA2OUMpIHJlcXVpcmVzIHRo ZSBJVFMgdG8gYmUgZGlzYWJsZWQgYW5kCj4gcXVpZXNjZW50IGJlZm9yZSBwcm9ncmFtbWluZyB0 aGUgQkFTRSByZWdpc3RlcnMuIFNvIEkgZG9uJ3QgdGhpbmsgdGhpcwo+IGNoZWNrIGlzIGVub3Vn aCBoZXJlLgo+IAo+PiArCj4+ICsgICAgcmVnID0gcmVhZHFfcmVsYXhlZChod19pdHMtPml0c19i YXNlICsgR0lUU19UWVBFUik7Cj4+ICsgICAgaHdfaXRzLT5wdGEgPSByZWcgJiBHSVRTX1RZUEVS X1BUQTsKPj4gKwo+PiAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCj4+ICAgICAgewo+PiAg ICAgICAgICB2b2lkIF9faW9tZW0gKmJhc2VyZWcgPSBod19pdHMtPml0c19iYXNlICsgR0lUU19C QVNFUjAgKyBpICogODsKPj4gQEAgLTE3NCw5ICsyNjUsMTggQEAgaW50IGdpY3YzX2l0c19pbml0 KHN0cnVjdCBob3N0X2l0cyAqaHdfaXRzKQo+PiAgICAgIGlmICggSVNfRVJSKGh3X2l0cy0+Y21k X2J1ZikgKQo+PiAgICAgICAgICByZXR1cm4gUFRSX0VSUihod19pdHMtPmNtZF9idWYpOwo+Pgo+ PiArICAgIGl0c19zZW5kX2NtZF9tYXBjKGh3X2l0cywgc21wX3Byb2Nlc3Nvcl9pZCgpLCBzbXBf cHJvY2Vzc29yX2lkKCkpOwo+PiArICAgIGl0c19zZW5kX2NtZF9zeW5jKGh3X2l0cywgc21wX3By b2Nlc3Nvcl9pZCgpKTsKPiAKPiBTZWUgbXkgY29tbWVudHMgb24gdGhlIHByZXZpb3VzIGl0c19z ZW5kXyogZnVuY3Rpb25zCj4gCj4+ICsKPj4gICAgICByZXR1cm4gMDsKPj4gIH0KPj4KPj4gK3Zv aWQgZ2ljdjNfc2V0X3JlZGlzdF9hZGRyKHBhZGRyX3QgYWRkcmVzcywgaW50IHJlZGlzdF9pZCkK PiAKPiBUaGUgc2Vjb25kIHBhcmFtZXRlciBzaG91bGQgcHJvYmFibHkgYmUgdW5zaWduZWQsIG1h eWJlIHVpbnQ2NF90PwoKV2VsbCwgdGhlIHByb2Nlc3NvciBJRCBpcyBhIDE2LWJpdCB2YWx1ZSBh bmQgbmljZWx5IGFsaWducyB3aXRoIFhlbidzClZDUFVJRHMsIHdoaWNoIGFyZSBkZWNsYXJlZCBh cyAiaW50IiBpbiBzdHJ1Y3QgdmNwdS4KU28gSSdkIHJhdGhlciBrZWVwIGl0IGFzIGludCBoZXJl LgoKPj4gK3sKPj4gKyAgICB0aGlzX2NwdShyZGlzdF9hZGRyKSA9IGFkZHJlc3M7Cj4+ICsgICAg dGhpc19jcHUocmRpc3RfaWQpID0gcmVkaXN0X2lkOwo+PiArfQo+PiArCj4+ICB1aW50NjRfdCBn aWN2M19scGlfYWxsb2NhdGVfcGVuZHRhYmxlKHZvaWQpCj4+ICB7Cj4+ICAgICAgdWludDY0X3Qg cmVnLCBhdHRyOwo+PiBAQCAtMjY1LDYgKzM2NSw3IEBAIHZvaWQgZ2ljdjNfaXRzX2R0X2luaXQo Y29uc3Qgc3RydWN0IGR0X2RldmljZV9ub2RlCj4+ICpub2RlKQo+PiAgICAgICAgICBpdHNfZGF0 YS0+YWRkciA9IGFkZHI7Cj4+ICAgICAgICAgIGl0c19kYXRhLT5zaXplID0gc2l6ZTsKPj4gICAg ICAgICAgaXRzX2RhdGEtPmR0X25vZGUgPSBpdHM7Cj4+ICsgICAgICAgIHNwaW5fbG9ja19pbml0 KCZpdHNfZGF0YS0+Y21kX2xvY2spOwo+Pgo+PiAgICAgICAgICBwcmludGsoIkdJQ3YzOiBGb3Vu ZCBJVFMgQDB4JWx4XG4iLCBhZGRyKTsKPj4KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9n aWMtdjMuYyBiL3hlbi9hcmNoL2FybS9naWMtdjMuYwo+PiBpbmRleCA1Y2Y0NjE4Li5iOTM4N2Ez IDEwMDY0NAo+PiAtLS0gYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMKPj4gKysrIGIveGVuL2FyY2gv YXJtL2dpYy12My5jCj4+IEBAIC02MzgsNiArNjM4LDggQEAgc3RhdGljIHZvaWQgZ2ljdjNfcmRp c3RfaW5pdF9scGlzKHZvaWQgX19pb21lbSAqCj4+IHJkaXN0X2Jhc2UpCj4+ICAgICAgdGFibGVf cmVnID0gZ2ljdjNfbHBpX2dldF9wcm9wdGFibGUoKTsKPj4gICAgICBpZiAoIHRhYmxlX3JlZyAp Cj4+ICAgICAgICAgIHdyaXRlcV9yZWxheGVkKHRhYmxlX3JlZywgcmRpc3RfYmFzZSArIEdJQ1Jf UFJPUEJBU0VSKTsKPj4gKwo+PiArICAgIGdpY3YzX2l0c19zZXR1cF9jb2xsZWN0aW9uKHNtcF9w cm9jZXNzb3JfaWQoKSk7Cj4+ICB9Cj4+Cj4+ICBzdGF0aWMgaW50IF9faW5pdCBnaWN2M19wb3B1 bGF0ZV9yZGlzdCh2b2lkKQo+PiBAQCAtNjg0LDcgKzY4NiwyMiBAQCBzdGF0aWMgaW50IF9faW5p dCBnaWN2M19wb3B1bGF0ZV9yZGlzdCh2b2lkKQo+PiAgICAgICAgICAgICAgICAgIHRoaXNfY3B1 KHJiYXNlKSA9IHB0cjsKPj4KPj4gICAgICAgICAgICAgICAgICBpZiAoIHR5cGVyICYgR0lDUl9U WVBFUl9QTFBJUyApCj4+ICsgICAgICAgICAgICAgICAgewo+PiArICAgICAgICAgICAgICAgICAg ICBwYWRkcl90IHJkaXN0X2FkZHI7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAgICAgcmRpc3Rf YWRkciA9IGdpY3YzLnJkaXN0X3JlZ2lvbnNbaV0uYmFzZTsKPj4gKyAgICAgICAgICAgICAgICAg ICAgcmRpc3RfYWRkciArPSBwdHIgLSBnaWN2My5yZGlzdF9yZWdpb25zW2ldLm1hcF9iYXNlOwo+ PiArCj4+ICsgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBJVFMgcmVmZXJzIHRvIHJlZGlzdHJp YnV0b3JzIGVpdGhlciBieQo+PiB0aGVpciBwaHlzaWNhbAo+IAo+IENvZGluZyBzdHlsZToKPiAK PiAvKgo+ICAqIEZvbwoKT2gsIHJpZ2h0LCBJIHRoaW5rIEkgY29waWVkIHRoaXMgY29tbWVudGlu ZyBzdHlsZSB3cm9uZ2x5IGZyb20gc29tZQpvdGhlciBYZW4gVkdJQyBjb2RlLiBGaXhlZCB0aGF0 IG5vdy4KCkNoZWVycywKQW5kcmUuCgo+PiArICAgICAgICAgICAgICAgICAgICAgKiBhZGRyZXNz IG9yIGJ5IHRoZWlyIElELiBEZXRlcm1pbmUgdGhvc2UgdHdvCj4+IHZhbHVlcyBhbmQKPj4gKyAg ICAgICAgICAgICAgICAgICAgICogbGV0IHRoZSBJVFMgY29kZSBzdG9yZSB0aGVtIGluIHBlciBo b3N0IENQVQo+PiB2YXJpYWJsZXMgdG8KPj4gKyAgICAgICAgICAgICAgICAgICAgICogbGF0ZXIg YmUgYWJsZSB0byBhZGRyZXNzIHRob3NlIHJlZGlzdHJpYnV0b3JzLgo+PiArICAgICAgICAgICAg ICAgICAgICAgKi8KPj4gKyAgICAgICAgICAgICAgICAgICAgZ2ljdjNfc2V0X3JlZGlzdF9hZGRy KHJkaXN0X2FkZHIsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAodHlwZXIgPj4gOCkgJiBHRU5NQVNLKDE1LAo+PiAwKSk7Cj4gCj4gUGxlYXNlIGF2b2lkIGhh cmRjb2RpbmcgbWFzayBhbmQgdXNlIGEgZGVmaW5lLgo+IAo+PiArCj4+ICAgICAgICAgICAgICAg ICAgICAgIGdpY3YzX3JkaXN0X2luaXRfbHBpcyhwdHIpOwo+PiArICAgICAgICAgICAgICAgIH0K Pj4KPj4gICAgICAgICAgICAgICAgICBwcmludGsoIkdJQ3YzOiBDUFUlZDogRm91bmQgcmVkaXN0 cmlidXRvciBpbiByZWdpb24KPj4gJWQgQCVwXG4iLAo+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgc21wX3Byb2Nlc3Nvcl9pZCgpLCBpLCBwdHIpOwo+PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLWFybS9naWMtaXRzLmgKPj4gYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy1pdHMuaAo+ PiBpbmRleCBiMmEwMDNmLi5iNDlkMjc0IDEwMDY0NAo+PiAtLS0gYS94ZW4vaW5jbHVkZS9hc20t YXJtL2dpYy1pdHMuaAo+PiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy1pdHMuaAo+PiBA QCAtMzcsNiArMzcsNyBAQAo+Pgo+PiAgLyogUmVnaXN0ZXIgYml0cyAqLwo+PiAgI2RlZmluZSBH SVRTX0NUTFJfRU5BQkxFICAgICAweDEKPj4gKyNkZWZpbmUgR0lUU19UWVBFUl9QVEEgICAgICAg QklUKDE5KQo+PiAgI2RlZmluZSBHSVRTX0lJRFJfVkFMVUUgICAgICAweDM0Ywo+Pgo+PiAgI2Rl ZmluZSBHSVRTX0JBU0VSX1ZBTElEICAgICAgICAgICAgICAgIEJJVCg2MykKPj4gQEAgLTU5LDYg KzYwLDIyIEBACj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMx VUwgPDwKPj4gR0lUU19CQVNFUl9FTlRSWV9TSVpFX1NISUZUKSB8XAo+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdJVFNfQkFTRVJfSU5ESVJFQ1QpCj4+Cj4+ICsv KiBJVFMgY29tbWFuZCBkZWZpbml0aW9ucyAqLwo+PiArI2RlZmluZSBJVFNfQ01EX1NJWkUgICAg ICAgICAgICAgICAgICAgIDMyCj4+ICsKPj4gKyNkZWZpbmUgR0lUU19DTURfTU9WSSAgICAgICAg ICAgICAgICAgICAweDAxCj4+ICsjZGVmaW5lIEdJVFNfQ01EX0lOVCAgICAgICAgICAgICAgICAg ICAgMHgwMwo+PiArI2RlZmluZSBHSVRTX0NNRF9DTEVBUiAgICAgICAgICAgICAgICAgIDB4MDQK Pj4gKyNkZWZpbmUgR0lUU19DTURfU1lOQyAgICAgICAgICAgICAgICAgICAweDA1Cj4+ICsjZGVm aW5lIEdJVFNfQ01EX01BUEQgICAgICAgICAgICAgICAgICAgMHgwOAo+PiArI2RlZmluZSBHSVRT X0NNRF9NQVBDICAgICAgICAgICAgICAgICAgIDB4MDkKPj4gKyNkZWZpbmUgR0lUU19DTURfTUFQ VEkgICAgICAgICAgICAgICAgICAweDBhCj4+ICsjZGVmaW5lIEdJVFNfQ01EX01BUEkgICAgICAg ICAgICAgICAgICAgMHgwYgo+PiArI2RlZmluZSBHSVRTX0NNRF9JTlYgICAgICAgICAgICAgICAg ICAgIDB4MGMKPj4gKyNkZWZpbmUgR0lUU19DTURfSU5WQUxMICAgICAgICAgICAgICAgICAweDBk Cj4+ICsjZGVmaW5lIEdJVFNfQ01EX01PVkFMTCAgICAgICAgICAgICAgICAgMHgwZQo+PiArI2Rl ZmluZSBHSVRTX0NNRF9ESVNDQVJEICAgICAgICAgICAgICAgIDB4MGYKPj4gKwo+PiAgI2lmbmRl ZiBfX0FTU0VNQkxZX18KPj4gICNpbmNsdWRlIDx4ZW4vZGV2aWNlX3RyZWUuaD4KPj4KPj4gQEAg LTY5LDcgKzg2LDkgQEAgc3RydWN0IGhvc3RfaXRzIHsKPj4gICAgICBwYWRkcl90IGFkZHI7Cj4+ ICAgICAgcGFkZHJfdCBzaXplOwo+PiAgICAgIHZvaWQgX19pb21lbSAqaXRzX2Jhc2U7Cj4+ICsg ICAgc3BpbmxvY2tfdCBjbWRfbG9jazsKPj4gICAgICB2b2lkICpjbWRfYnVmOwo+PiArICAgIGJv b2wgcHRhOwo+PiAgfTsKPj4KPj4gIGV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGhvc3RfaXRzX2xp c3Q7Cj4+IEBAIC04OSw2ICsxMDgsMTIgQEAgdWludDY0X3QgZ2ljdjNfbHBpX2FsbG9jYXRlX3Bl bmR0YWJsZSh2b2lkKTsKPj4gIGludCBnaWN2M19scGlfaW5pdF9ob3N0X2xwaXMoaW50IG5yX2xw aXMpOwo+PiAgaW50IGdpY3YzX2l0c19pbml0KHN0cnVjdCBob3N0X2l0cyAqaHdfaXRzKTsKPj4K Pj4gKy8qIFNldCB0aGUgcGh5c2ljYWwgYWRkcmVzcyBhbmQgSUQgZm9yIGVhY2ggcmVkaXN0cmli dXRvciBhcyByZWFkCj4+IGZyb20gRFQuICovCj4+ICt2b2lkIGdpY3YzX3NldF9yZWRpc3RfYWRk cihwYWRkcl90IGFkZHJlc3MsIGludCByZWRpc3RfaWQpOwo+PiArCj4+ICsvKiBNYXAgYSBjb2xs ZWN0aW9uIGZvciB0aGlzIGhvc3QgQ1BVIHRvIGVhY2ggaG9zdCBJVFMuICovCj4+ICt2b2lkIGdp Y3YzX2l0c19zZXR1cF9jb2xsZWN0aW9uKGludCBjcHUpOwo+PiArCj4+ICAjZWxzZQo+Pgo+PiAg c3RhdGljIGlubGluZSB2b2lkIGdpY3YzX2l0c19kdF9pbml0KGNvbnN0IHN0cnVjdCBkdF9kZXZp Y2Vfbm9kZSAqbm9kZSkKPj4gQEAgLTExMCw2ICsxMzUsMTMgQEAgc3RhdGljIGlubGluZSBpbnQg Z2ljdjNfaXRzX2luaXQoc3RydWN0IGhvc3RfaXRzCj4+ICpod19pdHMpCj4+ICB7Cj4+ICAgICAg cmV0dXJuIDA7Cj4+ICB9Cj4gCj4gTmV3bGluZSBoZXJlCj4gCj4+ICtzdGF0aWMgaW5saW5lIHZv aWQgZ2ljdjNfc2V0X3JlZGlzdF9hZGRyKHBhZGRyX3QgYWRkcmVzcywgaW50IHJlZGlzdF9pZCkK Pj4gK3sKPj4gK30KPiAKPiBEaXR0bwo+IAo+PiArc3RhdGljIGlubGluZSB2b2lkIGdpY3YzX2l0 c19zZXR1cF9jb2xsZWN0aW9uKGludCBjcHUpCj4+ICt7Cj4+ICt9Cj4+ICsKPj4gICNlbmRpZiAv KiBDT05GSUdfSEFTX0lUUyAqLwo+Pgo+PiAgI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwo+Pgo+ IAo+IFJlZ2FyZHMsCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK