From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH v3 05/26] ARM: GICv3 ITS: introduce ITS command handling Date: Fri, 31 Mar 2017 16:16:13 -0700 (PDT) Message-ID: References: <20170331180525.30038-1-andre.przywara@arm.com> <20170331180525.30038-6-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 1cu5mH-0007W2-Cl for xen-devel@lists.xenproject.org; Fri, 31 Mar 2017 23:16:21 +0000 In-Reply-To: <20170331180525.30038-6-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 T24gRnJpLCAzMSBNYXIgMjAxNywgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4gVG8gYmUgYWJsZSB0 byBlYXNpbHkgc2VuZCBjb21tYW5kcyB0byB0aGUgSVRTLCBjcmVhdGUgdGhlIHJlc3BlY3RpdmUK PiB3cmFwcGVyIGZ1bmN0aW9ucywgd2hpY2ggdGFrZSBjYXJlIG9mIHRoZSByaW5nIGJ1ZmZlci4K PiBUaGUgZmlyc3QgdHdvIGNvbW1hbmRzIHdlIGltcGxlbWVudCBwcm92aWRlIG1ldGhvZHMgdG8g bWFwIGEgY29sbGVjdGlvbgo+IHRvIGEgcmVkaXN0cmlidXRvciAoYWthIGhvc3QgY29yZSkgYW5k IHRvIGZsdXNoIHRoZSBjb21tYW5kIHF1ZXVlIChTWU5DKS4KPiBTdGFydCB1c2luZyB0aGVzZSBj b21tYW5kcyBmb3IgbWFwcGluZyBvbmUgY29sbGVjdGlvbiB0byBlYWNoIGhvc3QgQ1BVLgo+IAo+ IFNpZ25lZC1vZmYtYnk6IEFuZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5d2FyYUBhcm0uY29tPgoK UGxlYXNlIGFkZHJlc3MgSnVsaWVuJ3MgY29tbWVudHMuIEluIHBhcnRpY3VsYXIsIGNtZF9sb2Nr IG5lZWRzIHRvIGJlCmluaXRpYWxpemVkIGhlcmUuCgoKPiAtLS0KPiAgeGVuL2FyY2gvYXJtL2dp Yy12My1pdHMuYyAgICAgICAgIHwgMTgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCj4gIHhlbi9hcmNoL2FybS9naWMtdjMtbHBpLmMgICAgICAgICB8ICAyMiArKysrKwo+ ICB4ZW4vYXJjaC9hcm0vZ2ljLXYzLmMgICAgICAgICAgICAgfCAgMjUgKysrKystCj4gIHhlbi9p bmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2RlZnMuaCB8ICAgMiArCj4gIHhlbi9pbmNsdWRlL2FzbS1h cm0vZ2ljX3YzX2l0cy5oICB8ICAzOCArKysrKysrKwo+ICA1IGZpbGVzIGNoYW5nZWQsIDI2NyBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9h cm0vZ2ljLXYzLWl0cy5jIGIveGVuL2FyY2gvYXJtL2dpYy12My1pdHMuYwo+IGluZGV4IDlhODY3 NjkuLjFhYzU5OGYgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL2dpYy12My1pdHMuYwo+ICsr KyBiL3hlbi9hcmNoL2FybS9naWMtdjMtaXRzLmMKPiBAQCAtMTksMTEgKzE5LDE0IEBACj4gICAq Lwo+ICAKPiAgI2luY2x1ZGUgPHhlbi9saWIuaD4KPiArI2luY2x1ZGUgPHhlbi9kZWxheS5oPgo+ ICAjaW5jbHVkZSA8eGVuL21tLmg+Cj4gICNpbmNsdWRlIDx4ZW4vc2l6ZXMuaD4KPiArI2luY2x1 ZGUgPGFzbS9naWMuaD4KPiAgI2luY2x1ZGUgPGFzbS9naWNfdjNfZGVmcy5oPgo+ICAjaW5jbHVk ZSA8YXNtL2dpY192M19pdHMuaD4KPiAgI2luY2x1ZGUgPGFzbS9pby5oPgo+ICsjaW5jbHVkZSA8 YXNtL3BhZ2UuaD4KPiAgCj4gICNkZWZpbmUgSVRTX0NNRF9RVUVVRV9TWiAgICAgICAgICAgICAg ICBTWl8xTQo+ICAKPiBAQCAtMzQsNiArMzcsMTQ3IEBAIGJvb2wgZ2ljdjNfaXRzX2hvc3RfaGFz X2l0cyh2b2lkKQo+ICAgICAgcmV0dXJuICFsaXN0X2VtcHR5KCZob3N0X2l0c19saXN0KTsKPiAg fQo+ICAKPiArI2RlZmluZSBCVUZQVFJfTUFTSyAgICAgICAgICAgICAgICAgICAgIEdFTk1BU0tf VUxMKDE5LCA1KQo+ICtzdGF0aWMgaW50IGl0c19zZW5kX2NvbW1hbmQoc3RydWN0IGhvc3RfaXRz ICpod19pdHMsIGNvbnN0IHZvaWQgKml0c19jbWQpCj4gK3sKPiArICAgIC8qIFNvbWUgc21hbGwg Z3JhY2UgcGVyaW9kIGluIGNhc2UgdGhlIGNvbW1hbmQgcXVldWUgaXMgY29uZ2VzdGVkLiAqLwo+ ICsgICAgc190aW1lX3QgZGVhZGxpbmUgPSBOT1coKSArIE1JTExJU0VDUygxKTsKPiArICAgIHVp bnQ2NF90IHJlYWRwLCB3cml0ZXA7Cj4gKyAgICBpbnQgcmV0ID0gLUVCVVNZOwo+ICsKPiArICAg IC8qIE5vIElUUyBjb21tYW5kcyBmcm9tIGFuIGludGVycnVwdCBoYW5kbGVyIChhdCB0aGUgbW9t ZW50KS4gKi8KPiArICAgIEFTU0VSVCghaW5faXJxKCkpOwo+ICsKPiArICAgIHNwaW5fbG9jaygm aHdfaXRzLT5jbWRfbG9jayk7Cj4gKwo+ICsgICAgZG8gewo+ICsgICAgICAgIHJlYWRwID0gcmVh ZHFfcmVsYXhlZChod19pdHMtPml0c19iYXNlICsgR0lUU19DUkVBRFIpICYgQlVGUFRSX01BU0s7 Cj4gKyAgICAgICAgd3JpdGVwID0gcmVhZHFfcmVsYXhlZChod19pdHMtPml0c19iYXNlICsgR0lU U19DV1JJVEVSKSAmIEJVRlBUUl9NQVNLOwo+ICsKPiArICAgICAgICBpZiAoICgod3JpdGVwICsg SVRTX0NNRF9TSVpFKSAlIElUU19DTURfUVVFVUVfU1opICE9IHJlYWRwICkKPiArICAgICAgICB7 Cj4gKyAgICAgICAgICAgIHJldCA9IDA7Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAg IH0KPiArCj4gKyAgICAgICAgLyoKPiArICAgICAgICAgKiBJZiB0aGUgY29tbWFuZCBxdWV1ZSBp cyBmdWxsLCB3YWl0IGZvciBhIGJpdCBpbiB0aGUgaG9wZSBpdCBkcmFpbnMKPiArICAgICAgICAg KiBiZWZvcmUgZ2l2aW5nIHVwLgo+ICsgICAgICAgICAqLwo+ICsgICAgICAgIHNwaW5fdW5sb2Nr KCZod19pdHMtPmNtZF9sb2NrKTsKPiArICAgICAgICBjcHVfcmVsYXgoKTsKPiArICAgICAgICB1 ZGVsYXkoMSk7Cj4gKyAgICAgICAgc3Bpbl9sb2NrKCZod19pdHMtPmNtZF9sb2NrKTsKPiArICAg IH0gd2hpbGUgKCBOT1coKSA8PSBkZWFkbGluZSApOwo+ICsKPiArICAgIGlmICggcmV0ICkKPiAr ICAgIHsKPiArICAgICAgICBzcGluX3VubG9jaygmaHdfaXRzLT5jbWRfbG9jayk7Cj4gKyAgICAg ICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HICJJVFM6IGNvbW1hbmQgcXVldWUgZnVsbC5cbiIpOwo+ ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICB9Cj4gKwo+ICsgICAgbWVtY3B5KGh3X2l0cy0+ Y21kX2J1ZiArIHdyaXRlcCwgaXRzX2NtZCwgSVRTX0NNRF9TSVpFKTsKPiArICAgIGlmICggaHdf aXRzLT5mbGFncyAmIEhPU1RfSVRTX0ZMVVNIX0NNRF9RVUVVRSApCj4gKyAgICAgICAgY2xlYW5f YW5kX2ludmFsaWRhdGVfZGNhY2hlX3ZhX3JhbmdlKGh3X2l0cy0+Y21kX2J1ZiArIHdyaXRlcCwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVRTX0NNRF9T SVpFKTsKPiArICAgIGVsc2UKPiArICAgICAgICBkc2IoaXNoc3QpOwo+ICsKPiArICAgIHdyaXRl cCA9ICh3cml0ZXAgKyBJVFNfQ01EX1NJWkUpICUgSVRTX0NNRF9RVUVVRV9TWjsKPiArICAgIHdy aXRlcV9yZWxheGVkKHdyaXRlcCAmIEJVRlBUUl9NQVNLLCBod19pdHMtPml0c19iYXNlICsgR0lU U19DV1JJVEVSKTsKPiArCj4gKyAgICBzcGluX3VubG9jaygmaHdfaXRzLT5jbWRfbG9jayk7Cj4g Kwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8qIFdhaXQgZm9yIGFuIElUUyB0byBmaW5p c2ggcHJvY2Vzc2luZyBhbGwgY29tbWFuZHMuICovCj4gK3N0YXRpYyBpbnQgZ2ljdjNfaXRzX3dh aXRfY29tbWFuZHMoc3RydWN0IGhvc3RfaXRzICpod19pdHMpCj4gK3sKPiArICAgIC8qIERlZmlu ZSBhbiB1cHBlciBsaW1pdCBmb3Igb3VyIHdhaXQgdGltZS4gKi8KPiArICAgIHNfdGltZV90IGRl YWRsaW5lID0gTk9XKCkgKyBNSUxMSVNFQ1MoMTAwKTsKPiArICAgIHVpbnQ2NF90IHJlYWRwLCB3 cml0ZXA7Cj4gKwo+ICsgICAgZG8gewo+ICsgICAgICAgIHNwaW5fbG9jaygmaHdfaXRzLT5jbWRf bG9jayk7Cj4gKyAgICAgICAgcmVhZHAgPSByZWFkcV9yZWxheGVkKGh3X2l0cy0+aXRzX2Jhc2Ug KyBHSVRTX0NSRUFEUikgJiBCVUZQVFJfTUFTSzsKPiArICAgICAgICB3cml0ZXAgPSByZWFkcV9y ZWxheGVkKGh3X2l0cy0+aXRzX2Jhc2UgKyBHSVRTX0NXUklURVIpICYgQlVGUFRSX01BU0s7Cj4g KyAgICAgICAgc3Bpbl91bmxvY2soJmh3X2l0cy0+Y21kX2xvY2spOwo+ICsKPiArICAgICAgICBp ZiAoIHJlYWRwID09IHdyaXRlcCApCj4gKyAgICAgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAg ICAgICBjcHVfcmVsYXgoKTsKPiArICAgICAgICB1ZGVsYXkoMSk7Cj4gKyAgICB9IHdoaWxlICgg Tk9XKCkgPD0gZGVhZGxpbmUgKTsKPiArCj4gKyAgICByZXR1cm4gLUVUSU1FRE9VVDsKPiArfQo+ ICsKPiArc3RhdGljIHVpbnQ2NF90IGVuY29kZV9yZGJhc2Uoc3RydWN0IGhvc3RfaXRzICpod19p dHMsIHVuc2lnbmVkIGludCBjcHUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQ2NF90IHJlZykKPiArewo+ICsgICAgcmVnICY9IH5HRU5NQVNLX1VMTCg1MSwgMTYpOwo+ICsK PiArICAgIHJlZyB8PSBnaWN2M19nZXRfcmVkaXN0X2FkZHJlc3MoY3B1LCBod19pdHMtPmZsYWdz ICYgSE9TVF9JVFNfVVNFU19QVEEpOwo+ICsKPiArICAgIHJldHVybiByZWc7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgaXRzX3NlbmRfY21kX3N5bmMoc3RydWN0IGhvc3RfaXRzICppdHMsIHVuc2ln bmVkIGludCBjcHUpCj4gK3sKPiArICAgIHVpbnQ2NF90IGNtZFs0XTsKPiArCj4gKyAgICBjbWRb MF0gPSBHSVRTX0NNRF9TWU5DOwo+ICsgICAgY21kWzFdID0gMHgwMDsKPiArICAgIGNtZFsyXSA9 IGVuY29kZV9yZGJhc2UoaXRzLCBjcHUsIDB4MCk7Cj4gKyAgICBjbWRbM10gPSAweDAwOwo+ICsK PiArICAgIHJldHVybiBpdHNfc2VuZF9jb21tYW5kKGl0cywgY21kKTsKPiArfQo+ICsKPiArc3Rh dGljIGludCBpdHNfc2VuZF9jbWRfbWFwYyhzdHJ1Y3QgaG9zdF9pdHMgKml0cywgdWludDMyX3Qg Y29sbGVjdGlvbl9pZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgY3B1KQo+ICt7Cj4gKyAgICB1aW50NjRfdCBjbWRbNF07Cj4gKwo+ICsgICAgY21kWzBdID0g R0lUU19DTURfTUFQQzsKPiArICAgIGNtZFsxXSA9IDB4MDA7Cj4gKyAgICBjbWRbMl0gPSBlbmNv ZGVfcmRiYXNlKGl0cywgY3B1LCBjb2xsZWN0aW9uX2lkKTsKPiArICAgIGNtZFsyXSB8PSBHSVRT X1ZBTElEX0JJVDsKPiArICAgIGNtZFszXSA9IDB4MDA7Cj4gKwo+ICsgICAgcmV0dXJuIGl0c19z ZW5kX2NvbW1hbmQoaXRzLCBjbWQpOwo+ICt9Cj4gKwo+ICsvKiBTZXQgdXAgdGhlICgxOjEpIGNv bGxlY3Rpb24gbWFwcGluZyBmb3IgdGhlIGdpdmVuIGhvc3QgQ1BVLiAqLwo+ICtpbnQgZ2ljdjNf aXRzX3NldHVwX2NvbGxlY3Rpb24odW5zaWduZWQgaW50IGNwdSkKPiArewo+ICsgICAgc3RydWN0 IGhvc3RfaXRzICppdHM7Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAgIGxpc3RfZm9yX2VhY2hf ZW50cnkoaXRzLCAmaG9zdF9pdHNfbGlzdCwgZW50cnkpCj4gKyAgICB7Cj4gKyAgICAgICAgaWYg KCAhaXRzLT5jbWRfYnVmICkKPiArICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAg IHJldCA9IGl0c19zZW5kX2NtZF9tYXBjKGl0cywgY3B1LCBjcHUpOwo+ICsgICAgICAgIGlmICgg cmV0ICkKPiArICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICAgICAgcmV0ID0gaXRz X3NlbmRfY21kX3N5bmMoaXRzLCBjcHUpOwo+ICsgICAgICAgIGlmICggcmV0ICkKPiArICAgICAg ICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICAgICAgcmV0ID0gZ2ljdjNfaXRzX3dhaXRfY29t bWFuZHMoaXRzKTsKPiArICAgICAgICBpZiAoIHJldCApCj4gKyAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gICNkZWZpbmUgQkFT RVJfQVRUUl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK PiAgICAgICAgICAoKDB4M1VMIDw8IEdJVFNfQkFTRVJfU0hBUkVBQklMSVRZX1NISUZUKSAgICAg ICAgICAgICAgIHwgXAo+ICAgICAgICAgICAoMHg3VUwgPDwgR0lUU19CQVNFUl9PVVRFUl9DQUNI RUFCSUxJVFlfU0hJRlQpICAgICAgICAgfCBcCj4gQEAgLTE3OCw2ICszMjIsMzggQEAgcmV0cnk6 Cj4gICAgICByZXR1cm4gLUVJTlZBTDsKPiAgfQo+ICAKPiArLyoKPiArICogQmVmb3JlIGFuIElU UyBnZXRzIGluaXRpYWxpemVkLCBpdCBzaG91bGQgYmUgaW4gYSBxdWllc2NlbnQgc3RhdGUsIHdo ZXJlCj4gKyAqIGFsbCBvdXRzdGFuZGluZyBjb21tYW5kcyBhbmQgdHJhbnNhY3Rpb25zIGhhdmUg ZmluaXNoZWQuCj4gKyAqIFNvIGlmIHRoZSBJVFMgaXMgYWxyZWFkeSBlbmFibGVkLCB0dXJuIGl0 IG9mZiBhbmQgd2FpdCBmb3IgYWxsIG91dHN0YW5kaW5nCj4gKyAqIG9wZXJhdGlvbnMgdG8gZ2V0 IHByb2Nlc3NlZCBieSBwb2xsaW5nIHRoZSBRVUlFU0NFTlQgYml0Lgo+ICsgKi8KPiArc3RhdGlj IGludCBnaWN2M19kaXNhYmxlX2l0cyhzdHJ1Y3QgaG9zdF9pdHMgKmh3X2l0cykKPiArewo+ICsg ICAgdWludDMyX3QgcmVnOwo+ICsgICAgLyogQSBzaW1pbGFyIGdlbmVyb3VzIHdhaXQgbGltaXQg YXMgd2UgdXNlIGZvciB0aGUgY29tbWFuZCBxdWV1ZSB3YWl0LiAqLwo+ICsgICAgc190aW1lX3Qg ZGVhZGxpbmUgPSBOT1coKSArIE1JTExJU0VDUygxMDApOwo+ICsKPiArICAgIHJlZyA9IHJlYWRs X3JlbGF4ZWQoaHdfaXRzLT5pdHNfYmFzZSArIEdJVFNfQ1RMUik7Cj4gKyAgICBpZiAoICEocmVn ICYgR0lUU19DVExSX0VOQUJMRSkgJiYgKHJlZyAmIEdJVFNfQ1RMUl9RVUlFU0NFTlQpICkKPiAr ICAgICAgICByZXR1cm4gMDsKPiArCj4gKyAgICB3cml0ZWxfcmVsYXhlZChyZWcgJiB+R0lUU19D VExSX0VOQUJMRSwgaHdfaXRzLT5pdHNfYmFzZSArIEdJVFNfQ1RMUik7Cj4gKwo+ICsgICAgZG8g ewo+ICsgICAgICAgIHJlZyA9IHJlYWRsX3JlbGF4ZWQoaHdfaXRzLT5pdHNfYmFzZSArIEdJVFNf Q1RMUik7Cj4gKyAgICAgICAgaWYgKCByZWcgJiBHSVRTX0NUTFJfUVVJRVNDRU5UICkKPiArICAg ICAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgICAgIGNwdV9yZWxheCgpOwo+ICsgICAgICAg IHVkZWxheSgxKTsKPiArICAgIH0gd2hpbGUgKCBOT1coKSA8PSBkZWFkbGluZSApOwo+ICsKPiAr ICAgIGRwcmludGsoWEVOTE9HX0VSUiwgIklUUyBub3QgcXVpZXNjZW50LlxuIik7Cj4gKwo+ICsg ICAgcmV0dXJuIC1FVElNRURPVVQ7Cj4gK30KPiArCj4gIC8qIEFsbG93IGEgdXNlciB0byBsaW1p dCB0aGUgbnVtYmVyIG9mIGRldmljZXMuICovCj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQgbWF4X2l0 c19kZXZpY2VfYml0cyA9IDMyOwo+ICBpbnRlZ2VyX3BhcmFtKCJtYXhfaXRzX2RldmljZV9iaXRz IiwgbWF4X2l0c19kZXZpY2VfYml0cyk7Cj4gQEAgLTE5MSw5ICszNjcsMTUgQEAgc3RhdGljIGlu dCBnaWN2M19pdHNfaW5pdF9zaW5nbGVfaXRzKHN0cnVjdCBob3N0X2l0cyAqaHdfaXRzKQo+ICAg ICAgaWYgKCAhaHdfaXRzLT5pdHNfYmFzZSApCj4gICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4g IAo+ICsgICAgcmV0ID0gZ2ljdjNfZGlzYWJsZV9pdHMoaHdfaXRzKTsKPiArICAgIGlmICggcmV0 ICkKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiAgICAgIHJlZyA9IHJlYWRxX3JlbGF4ZWQo aHdfaXRzLT5pdHNfYmFzZSArIEdJVFNfVFlQRVIpOwo+ICAgICAgaHdfaXRzLT5kZXZpZF9iaXRz ID0gR0lUU19UWVBFUl9ERVZJQ0VfSURfQklUUyhyZWcpOwo+ICAgICAgaHdfaXRzLT5kZXZpZF9i aXRzID0gbWluKGh3X2l0cy0+ZGV2aWRfYml0cywgbWF4X2l0c19kZXZpY2VfYml0cyk7Cj4gKyAg ICBpZiAoIHJlZyAmIEdJVFNfVFlQRVJfUFRBICkKPiArICAgICAgICBod19pdHMtPmZsYWdzIHw9 IEhPU1RfSVRTX1VTRVNfUFRBOwo+ICAKPiAgICAgIGZvciAoIGkgPSAwOyBpIDwgR0lUU19CQVNF Ul9OUl9SRUdTOyBpKysgKQo+ICAgICAgewo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2lj LXYzLWxwaS5jIGIveGVuL2FyY2gvYXJtL2dpYy12My1scGkuYwo+IGluZGV4IDc3ZjYwMDkuLmQ4 NWQ2M2QgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL2dpYy12My1scGkuYwo+ICsrKyBiL3hl bi9hcmNoL2FybS9naWMtdjMtbHBpLmMKPiBAQCAtNDMsNiArNDMsOCBAQCBzdGF0aWMgc3RydWN0 IHsKPiAgfSBscGlfZGF0YTsKPiAgCj4gIHN0cnVjdCBscGlfcmVkaXN0X2RhdGEgewo+ICsgICAg cGFkZHJfdCAgICAgICAgICAgICByZWRpc3RfYWRkcjsKPiArICAgIHVuc2lnbmVkIGludCAgICAg ICAgcmVkaXN0X2lkOwo+ICAgICAgdm9pZCAgICAgICAgICAgICAgICAqcGVuZGluZ190YWJsZTsK PiAgfTsKPiAgCj4gQEAgLTUwLDYgKzUyLDI2IEBAIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1 Y3QgbHBpX3JlZGlzdF9kYXRhLCBscGlfcmVkaXN0KTsKPiAgCj4gICNkZWZpbmUgTUFYX1BIWVNf TFBJUyAgIChscGlfZGF0YS5ucl9ob3N0X2xwaXMgLSBMUElfT0ZGU0VUKQo+ICAKPiArLyogU3Rv cmVzIHRoaXMgcmVkaXN0cmlidXRvcidzIHBoeXNpY2FsIGFkZHJlc3MgYW5kIElEIGluIGEgcGVy LUNQVSB2YXJpYWJsZSAqLwo+ICt2b2lkIGdpY3YzX3NldF9yZWRpc3RfYWRkcmVzcyhwYWRkcl90 IGFkZHJlc3MsIHVuc2lnbmVkIGludCByZWRpc3RfaWQpCj4gK3sKPiArICAgIHRoaXNfY3B1KGxw aV9yZWRpc3QpLnJlZGlzdF9hZGRyID0gYWRkcmVzczsKPiArICAgIHRoaXNfY3B1KGxwaV9yZWRp c3QpLnJlZGlzdF9pZCA9IHJlZGlzdF9pZDsKPiArfQo+ICsKPiArLyoKPiArICogUmV0dXJucyBh IHJlZGlzdHJpYnV0b3IncyBJRCAoZWl0aGVyIGFzIGFuIGFkZHJlc3Mgb3IgYXMgYW4gSUQpLgo+ ICsgKiBUaGlzIG11c3QgYmUgKGFuZCBpcykgY2FsbGVkIG9ubHkgYWZ0ZXIgaXQgaGFzIGJlZW4g c2V0dXAgYnkgdGhlIGFib3ZlCj4gKyAqIGZ1bmN0aW9uLgo+ICsgKi8KPiArdWludDY0X3QgZ2lj djNfZ2V0X3JlZGlzdF9hZGRyZXNzKHVuc2lnbmVkIGludCBjcHUsIGJvb2wgdXNlX3B0YSkKPiAr ewo+ICsgICAgaWYgKCB1c2VfcHRhICkKPiArICAgICAgICByZXR1cm4gcGVyX2NwdShscGlfcmVk aXN0LCBjcHUpLnJlZGlzdF9hZGRyICYgR0VOTUFTS19VTEwoNTEsIDE2KTsKPiArICAgIGVsc2UK PiArICAgICAgICByZXR1cm4gcGVyX2NwdShscGlfcmVkaXN0LCBjcHUpLnJlZGlzdF9pZCA8PCAx NjsKPiArfQo+ICsKPiAgc3RhdGljIGludCBnaWN2M19scGlfYWxsb2NhdGVfcGVuZHRhYmxlKHVp bnQ2NF90ICpyZWcpCj4gIHsKPiAgICAgIHVpbnQ2NF90IHZhbDsKPiBkaWZmIC0tZ2l0IGEveGVu L2FyY2gvYXJtL2dpYy12My5jIGIveGVuL2FyY2gvYXJtL2dpYy12My5jCj4gaW5kZXggYjg0YmM0 MC4uMGUyMWNiMiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMKPiArKysgYi94 ZW4vYXJjaC9hcm0vZ2ljLXYzLmMKPiBAQCAtNjY2LDcgKzY2NiwyMSBAQCBzdGF0aWMgaW50IF9f aW5pdCBnaWN2M19wb3B1bGF0ZV9yZGlzdCh2b2lkKQo+ICAKPiAgICAgICAgICAgICAgICAgIGlm ICggdHlwZXIgJiBHSUNSX1RZUEVSX1BMUElTICkKPiAgICAgICAgICAgICAgICAgIHsKPiAtICAg ICAgICAgICAgICAgICAgICBpbnQgcmV0Owo+ICsgICAgICAgICAgICAgICAgICAgIHBhZGRyX3Qg cmRpc3RfYWRkcjsKPiArICAgICAgICAgICAgICAgICAgICBpbnQgcHJvY251bSwgcmV0Owo+ICsK PiArICAgICAgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAgICAgICAqIFRoZSBJ VFMgcmVmZXJzIHRvIHJlZGlzdHJpYnV0b3JzIGVpdGhlciBieSB0aGVpciBwaHlzaWNhbAo+ICsg ICAgICAgICAgICAgICAgICAgICAqIGFkZHJlc3Mgb3IgYnkgdGhlaXIgSUQuIERldGVybWluZSB0 aG9zZSB0d28gdmFsdWVzIGFuZAo+ICsgICAgICAgICAgICAgICAgICAgICAqIGxldCB0aGUgSVRT IGNvZGUgc3RvcmUgdGhlbSBpbiBwZXIgaG9zdCBDUFUgdmFyaWFibGVzIHRvCj4gKyAgICAgICAg ICAgICAgICAgICAgICogbGF0ZXIgYmUgYWJsZSB0byBhZGRyZXNzIHRob3NlIHJlZGlzdHJpYnV0 b3JzLgo+ICsgICAgICAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgICAgICAgIHJk aXN0X2FkZHIgPSBnaWN2My5yZGlzdF9yZWdpb25zW2ldLmJhc2U7Cj4gKyAgICAgICAgICAgICAg ICAgICAgcmRpc3RfYWRkciArPSBwdHIgLSBnaWN2My5yZGlzdF9yZWdpb25zW2ldLm1hcF9iYXNl Owo+ICsgICAgICAgICAgICAgICAgICAgIHByb2NudW0gPSAodHlwZXIgJiBHSUNSX1RZUEVSX1BS T0NfTlVNX01BU0spOwo+ICsgICAgICAgICAgICAgICAgICAgIHByb2NudW0gPj49IEdJQ1JfVFlQ RVJfUFJPQ19OVU1fU0hJRlQ7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgIGdpY3YzX3NldF9y ZWRpc3RfYWRkcmVzcyhyZGlzdF9hZGRyLCBwcm9jbnVtKTsKPiAgCj4gICAgICAgICAgICAgICAg ICAgICAgcmV0ID0gZ2ljdjNfbHBpX2luaXRfcmRpc3QocHRyKTsKPiAgICAgICAgICAgICAgICAg ICAgICBpZiAoIHJldCAmJiByZXQgIT0gLUVOT0RFViApCj4gQEAgLTcwNSw3ICs3MTksNyBAQCBz dGF0aWMgaW50IF9faW5pdCBnaWN2M19wb3B1bGF0ZV9yZGlzdCh2b2lkKQo+ICAKPiAgc3RhdGlj IGludCBnaWN2M19jcHVfaW5pdCh2b2lkKQo+ICB7Cj4gLSAgICBpbnQgaTsKPiArICAgIGludCBp LCByZXQ7Cj4gICAgICB1aW50MzJfdCBwcmlvcml0eTsKPiAgCj4gICAgICAvKiBSZWdpc3RlciBv dXJzZWx2ZXMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgd29ybGQgKi8KPiBAQCAtNzE1LDYgKzcyOSwx MyBAQCBzdGF0aWMgaW50IGdpY3YzX2NwdV9pbml0KHZvaWQpCj4gICAgICBpZiAoIGdpY3YzX2Vu YWJsZV9yZWRpc3QoKSApCj4gICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4gIAo+ICsgICAgaWYg KCBnaWN2M19pdHNfaG9zdF9oYXNfaXRzKCkgKQo+ICsgICAgewo+ICsgICAgICAgIHJldCA9IGdp Y3YzX2l0c19zZXR1cF9jb2xsZWN0aW9uKHNtcF9wcm9jZXNzb3JfaWQoKSk7Cj4gKyAgICAgICAg aWYgKCByZXQgKQo+ICsgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgfQo+ICsKPiAgICAg IC8qIFNldCBwcmlvcml0eSBvbiBQUEkgYW5kIFNHSSBpbnRlcnJ1cHRzICovCj4gICAgICBwcmlv cml0eSA9IChHSUNfUFJJX0lQSSA8PCAyNCB8IEdJQ19QUklfSVBJIDw8IDE2IHwgR0lDX1BSSV9J UEkgPDwgOCB8Cj4gICAgICAgICAgICAgICAgICBHSUNfUFJJX0lQSSk7Cj4gZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2RlZnMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0v Z2ljX3YzX2RlZnMuaAo+IGluZGV4IDdjZGViYzUuLmIwMWI2ZWQgMTAwNjQ0Cj4gLS0tIGEveGVu L2luY2x1ZGUvYXNtLWFybS9naWNfdjNfZGVmcy5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFy bS9naWNfdjNfZGVmcy5oCj4gQEAgLTEwMyw2ICsxMDMsOCBAQAo+ICAjZGVmaW5lIEdJQ1JfVFlQ RVJfUExQSVMgICAgICAgICAgICAgKDFVIDw8IDApCj4gICNkZWZpbmUgR0lDUl9UWVBFUl9WTFBJ UyAgICAgICAgICAgICAoMVUgPDwgMSkKPiAgI2RlZmluZSBHSUNSX1RZUEVSX0xBU1QgICAgICAg ICAgICAgICgxVSA8PCA0KQo+ICsjZGVmaW5lIEdJQ1JfVFlQRVJfUFJPQ19OVU1fU0hJRlQgICAg OAo+ICsjZGVmaW5lIEdJQ1JfVFlQRVJfUFJPQ19OVU1fTUFTSyAgICAgKDB4ZmZmZiA8PCBHSUNS X1RZUEVSX1BST0NfTlVNX1NISUZUKQo+ICAKPiAgLyogRm9yIHNwZWNpZnlpbmcgdGhlIGlubmVy IGNhY2hlYWJpbGl0eSB0eXBlIG9ubHkgKi8KPiAgI2RlZmluZSBHSUNfQkFTRVJfQ0FDSEVfbkNu QiAgICAgICAgIDBVTEwKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNf aXRzLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMuaAo+IGluZGV4IGYyMTE2MmEu LjRjMmFlMWMgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmgK PiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMuaAo+IEBAIC00MiwxMCArNDIs MTIgQEAKPiAgI2RlZmluZSBHSVRTX0NUTFJfUVVJRVNDRU5UICAgICAgICAgICAgIEJJVCgzMSkK PiAgI2RlZmluZSBHSVRTX0NUTFJfRU5BQkxFICAgICAgICAgICAgICAgIEJJVCgwKQo+ICAKPiAr I2RlZmluZSBHSVRTX1RZUEVSX1BUQSAgICAgICAgICAgICAgICAgIEJJVF9VTEwoMTkpCj4gICNk ZWZpbmUgR0lUU19UWVBFUl9ERVZJRFNfU0hJRlQgICAgICAgICAxMwo+ICAjZGVmaW5lIEdJVFNf VFlQRVJfREVWSURTX01BU0sgICAgICAgICAgKDB4MWZVTCA8PCBHSVRTX1RZUEVSX0RFVklEU19T SElGVCkKPiAgI2RlZmluZSBHSVRTX1RZUEVSX0RFVklDRV9JRF9CSVRTKHIpICAgICgoKHIgJiBH SVRTX1RZUEVSX0RFVklEU19NQVNLKSA+PiBcCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0lUU19UWVBFUl9ERVZJRFNfU0hJRlQpICsgMSkKPiArI2Rl ZmluZSBHSVRTX1RZUEVSX0lEQklUU19TSElGVCAgICAgICAgIDgKPiAgCj4gICNkZWZpbmUgR0lU U19JSURSX1ZBTFVFICAgICAgICAgICAgICAgICAweDM0Ywo+ICAKPiBAQCAtNzYsOSArNzgsMjYg QEAKPiAgCj4gICNkZWZpbmUgR0lUU19DQkFTRVJfU0laRV9NQVNLICAgICAgICAgICAweGZmCj4g IAo+ICsvKiBJVFMgY29tbWFuZCBkZWZpbml0aW9ucyAqLwo+ICsjZGVmaW5lIElUU19DTURfU0la RSAgICAgICAgICAgICAgICAgICAgMzIKPiArCj4gKyNkZWZpbmUgR0lUU19DTURfTU9WSSAgICAg ICAgICAgICAgICAgICAweDAxCj4gKyNkZWZpbmUgR0lUU19DTURfSU5UICAgICAgICAgICAgICAg ICAgICAweDAzCj4gKyNkZWZpbmUgR0lUU19DTURfQ0xFQVIgICAgICAgICAgICAgICAgICAweDA0 Cj4gKyNkZWZpbmUgR0lUU19DTURfU1lOQyAgICAgICAgICAgICAgICAgICAweDA1Cj4gKyNkZWZp bmUgR0lUU19DTURfTUFQRCAgICAgICAgICAgICAgICAgICAweDA4Cj4gKyNkZWZpbmUgR0lUU19D TURfTUFQQyAgICAgICAgICAgICAgICAgICAweDA5Cj4gKyNkZWZpbmUgR0lUU19DTURfTUFQVEkg ICAgICAgICAgICAgICAgICAweDBhCj4gKyNkZWZpbmUgR0lUU19DTURfTUFQSSAgICAgICAgICAg ICAgICAgICAweDBiCj4gKyNkZWZpbmUgR0lUU19DTURfSU5WICAgICAgICAgICAgICAgICAgICAw eDBjCj4gKyNkZWZpbmUgR0lUU19DTURfSU5WQUxMICAgICAgICAgICAgICAgICAweDBkCj4gKyNk ZWZpbmUgR0lUU19DTURfTU9WQUxMICAgICAgICAgICAgICAgICAweDBlCj4gKyNkZWZpbmUgR0lU U19DTURfRElTQ0FSRCAgICAgICAgICAgICAgICAweDBmCj4gKwo+ICAjaW5jbHVkZSA8eGVuL2Rl dmljZV90cmVlLmg+Cj4gIAo+ICAjZGVmaW5lIEhPU1RfSVRTX0ZMVVNIX0NNRF9RVUVVRSAgICAg ICAgKDFVIDw8IDApCj4gKyNkZWZpbmUgSE9TVF9JVFNfVVNFU19QVEEgICAgICAgICAgICAgICAo MVUgPDwgMSkKPiAgCj4gIC8qIGRhdGEgc3RydWN0dXJlIGZvciBlYWNoIGhhcmR3YXJlIElUUyAq Lwo+ICBzdHJ1Y3QgaG9zdF9pdHMgewo+IEBAIC04OCw2ICsxMDcsNyBAQCBzdHJ1Y3QgaG9zdF9p dHMgewo+ICAgICAgcGFkZHJfdCBzaXplOwo+ICAgICAgdm9pZCBfX2lvbWVtICppdHNfYmFzZTsK PiAgICAgIHVuc2lnbmVkIGludCBkZXZpZF9iaXRzOwo+ICsgICAgc3BpbmxvY2tfdCBjbWRfbG9j azsKPiAgICAgIHZvaWQgKmNtZF9idWY7Cj4gICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Cj4gIH07 Cj4gQEAgLTEwOCw2ICsxMjgsMTMgQEAgaW50IGdpY3YzX2xwaV9pbml0X3JkaXN0KHZvaWQgX19p b21lbSAqIHJkaXN0X2Jhc2UpOwo+ICBpbnQgZ2ljdjNfbHBpX2luaXRfaG9zdF9scGlzKHVuc2ln bmVkIGludCBucl9scGlzKTsKPiAgaW50IGdpY3YzX2l0c19pbml0KHZvaWQpOwo+ICAKPiArLyog U3RvcmUgdGhlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIElEIGZvciBlYWNoIHJlZGlzdHJpYnV0b3Ig YXMgcmVhZCBmcm9tIERULiAqLwo+ICt2b2lkIGdpY3YzX3NldF9yZWRpc3RfYWRkcmVzcyhwYWRk cl90IGFkZHJlc3MsIHVuc2lnbmVkIGludCByZWRpc3RfaWQpOwo+ICt1aW50NjRfdCBnaWN2M19n ZXRfcmVkaXN0X2FkZHJlc3ModW5zaWduZWQgaW50IGNwdSwgYm9vbCB1c2VfcHRhKTsKPiArCj4g Ky8qIE1hcCBhIGNvbGxlY3Rpb24gZm9yIHRoaXMgaG9zdCBDUFUgdG8gZWFjaCBob3N0IElUUy4g Ki8KPiAraW50IGdpY3YzX2l0c19zZXR1cF9jb2xsZWN0aW9uKHVuc2lnbmVkIGludCBjcHUpOwo+ ICsKPiAgI2Vsc2UKPiAgCj4gIHN0YXRpYyBMSVNUX0hFQUQoaG9zdF9pdHNfbGlzdCk7Cj4gQEAg LTEzNSw2ICsxNjIsMTcgQEAgc3RhdGljIGlubGluZSBpbnQgZ2ljdjNfaXRzX2luaXQodm9pZCkK PiAgewo+ICAgICAgcmV0dXJuIDA7Cj4gIH0KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBnaWN2 M19zZXRfcmVkaXN0X2FkZHJlc3MocGFkZHJfdCBhZGRyZXNzLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByZWRpc3RfaWQpCj4gK3sK PiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgZ2ljdjNfaXRzX3NldHVwX2NvbGxlY3Rpb24o dW5zaWduZWQgaW50IGNwdSkKPiArewo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gICNlbmRp ZiAvKiBDT05GSUdfSEFTX0lUUyAqLwo+ICAKPiAgI2VuZGlmCj4gLS0gCj4gMi45LjAKPiAKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=