From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH 10/18] xen/arm: Implement GIC suspend/resume functions (gicv2 only) Date: Tue, 13 Nov 2018 15:41:43 -0800 (PST) Message-ID: References: <1542022244-22977-1-git-send-email-mirela.simonovic@aggios.com> <1542022244-22977-11-git-send-email-mirela.simonovic@aggios.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1542022244-22977-11-git-send-email-mirela.simonovic@aggios.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Mirela Simonovic Cc: Stefano Stabellini , xen-devel@lists.xen.org, dm@aggios.com, saeed.nowshadi@xilinx.com, Julien Grall , xen-devel@lists.xenproject.org, stefano.stabellini@xilinx.com List-Id: xen-devel@lists.xenproject.org T24gTW9uLCAxMiBOb3YgMjAxOCwgTWlyZWxhIFNpbW9ub3ZpYyB3cm90ZToKPiBTeXN0ZW0gc3Vz cGVuZCBtYXkgbGVhZCB0byBhIHN0YXRlIHdoZXJlIEdJQyB3b3VsZCBiZSBwb3dlcmVkIGRvd24u Cj4gVGhlcmVmb3JlLCBYZW4gc2hvdWxkIHNhdmUvcmVzdG9yZSB0aGUgY29udGV4dCBvZiBHSUMg b24gc3VzcGVuZC9yZXN1bWUuCj4gTm90ZSB0aGF0IHRoZSBjb250ZXh0IGNvbnNpc3RzIG9mIHN0 YXRlcyBvZiByZWdpc3RlcnMgd2hpY2ggYXJlCj4gY29udHJvbGxlZCBieSB0aGUgaHlwZXJ2aXNv ci4gT3RoZXIgR0lDIHJlZ2lzdGVycyB3aGljaCBhcmUgYWNjZXNzaWJsZQo+IGJ5IGd1ZXN0cyBh cmUgc2F2ZWQvcmVzdG9yZWQgb24gY29udGV4dCBzd2l0Y2guCj4gVGVzdGVkIG9uIFhpbGlueCBV bHRyYXNjYWxlKyBNUFNvQyB3aXRoIChhbmQgd2l0aG91dCkgcG93ZXJpbmcgZG93bgo+IHRoZSBH SUMuCj4gCj4gU2lnbmVkLW9mZi1ieTogTWlyZWxhIFNpbW9ub3ZpYyA8bWlyZWxhLnNpbW9ub3Zp Y0BhZ2dpb3MuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFNhZWVkIE5vd3NoYWRpIDxzYWVlZC5ub3dz aGFkaUB4aWxpbnguY29tPgo+IC0tLQo+ICB4ZW4vYXJjaC9hcm0vZ2ljLXYyLmMgICAgIHwgMTQ3 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgeGVuL2Fy Y2gvYXJtL2dpYy5jICAgICAgICB8ICAyNyArKysrKysrKysKPiAgeGVuL2luY2x1ZGUvYXNtLWFy bS9naWMuaCB8ICAgOCArKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAxODIgaW5zZXJ0aW9ucygrKQo+ IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLXYyLmMgYi94ZW4vYXJjaC9hcm0vZ2lj LXYyLmMKPiBpbmRleCBlN2ViMDFmMzBhLi5iYjUyYjY0ZWNiIDEwMDY0NAo+IC0tLSBhL3hlbi9h cmNoL2FybS9naWMtdjIuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9naWMtdjIuYwo+IEBAIC0xMjMs NiArMTIzLDI1IEBAIHN0YXRpYyBERUZJTkVfUEVSX0NQVSh1OCwgZ2ljX2NwdV9pZCk7Cj4gIC8q IE1heGltdW0gY3B1IGludGVyZmFjZSBwZXIgR0lDICovCj4gICNkZWZpbmUgTlJfR0lDX0NQVV9J RiA4Cj4gIAo+ICsvKiBHSUN2MiByZWdpc3RlcnMgdG8gYmUgc2F2ZWQvcmVzdG9yZWQgb24gc3lz dGVtIHN1c3BlbmQvcmVzdW1lICovCj4gK3N0cnVjdCBnaWN2Ml9jb250ZXh0IHsKPiArICAgIC8q IEdJQ0MgY29udGV4dCAqLwo+ICsgICAgdWludDMyX3QgZ2ljY19jdGxyOwo+ICsgICAgdWludDMy X3QgZ2ljY19wbXI7Cj4gKyAgICB1aW50MzJfdCBnaWNjX2JwcjsKPiArICAgIC8qIEdJQ0QgY29u dGV4dCAqLwo+ICsgICAgdWludDMyX3QgZ2ljZF9jdGxyOwo+ICsgICAgdWludDMyX3QgKmdpY2Rf aXNlbmFibGVyOwo+ICsgICAgdWludDMyX3QgKmdpY2RfaXNhY3RpdmVyOwo+ICsgICAgdWludDMy X3QgKmdpY2RfaXByaW9yaXR5cjsKPiArICAgIHVpbnQzMl90ICpnaWNkX2l0YXJnZXRzcjsKPiAr ICAgIHVpbnQzMl90ICpnaWNkX2ljZmdyOwo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBnaWN2 Ml9jb250ZXh0IGdpY3YyX2NvbnRleHQ7Cj4gKwo+ICtzdGF0aWMgdm9pZCBnaWN2Ml9hbGxvY19j b250ZXh0KHN0cnVjdCBnaWN2Ml9jb250ZXh0ICpnYyk7Cj4gKwo+ICBzdGF0aWMgaW5saW5lIHZv aWQgd3JpdGViX2dpY2QodWludDhfdCB2YWwsIHVuc2lnbmVkIGludCBvZmZzZXQpCj4gIHsKPiAg ICAgIHdyaXRlYl9yZWxheGVkKHZhbCwgZ2ljdjIubWFwX2RiYXNlICsgb2Zmc2V0KTsKPiBAQCAt MTMxMCw2ICsxMzI5LDkgQEAgc3RhdGljIGludCBfX2luaXQgZ2ljdjJfaW5pdCh2b2lkKQo+ICAK PiAgICAgIHNwaW5fdW5sb2NrKCZnaWN2Mi5sb2NrKTsKPiAgCj4gKyAgICAvKiBBbGxvY2F0ZSBt ZW1vcnkgdG8gYmUgdXNlZCBmb3Igc2F2aW5nIEdJQyBjb250ZXh0IGR1cmluZyB0aGUgc3VzcGVu ZCAqLwo+ICsgICAgZ2ljdjJfYWxsb2NfY29udGV4dCgmZ2ljdjJfY29udGV4dCk7CgpQbGVhc2Ug Y2hlY2sgZm9yIHRoZSByZXR1cm4gb2YgZ2ljdjJfYWxsb2NfY29udGV4dCBhbmQgcmV0dXJuIGVy cm9yCmFjY29yZGluZ2x5LgoKCj4gICAgICByZXR1cm4gMDsKPiAgfQo+ICAKPiBAQCAtMTMxOSw2 ICsxMzQxLDEyOSBAQCBzdGF0aWMgdm9pZCBnaWN2Ml9kb19MUEkodW5zaWduZWQgaW50IGxwaSkK PiAgICAgIEJVRygpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBnaWN2Ml9hbGxvY19jb250ZXh0 KHN0cnVjdCBnaWN2Ml9jb250ZXh0ICpnYykKPiArewo+ICsgICAgdWludDMyX3QgbiA9IGdpY3Yy X2luZm8ubnJfbGluZXM7Cj4gKwo+ICsgICAgZ2MtPmdpY2RfaXNlbmFibGVyID0geHphbGxvY19h cnJheSh1aW50MzJfdCwgRElWX1JPVU5EX1VQKG4sIDMyKSk7Cj4gKyAgICBpZiAoICFnYy0+Z2lj ZF9pc2VuYWJsZXIgKQo+ICsgICAgICAgIHJldHVybjsKCkkgd291bGQgcmV0dXJuIGVycm9yIGFu ZCByZXR1cm4gZXJyb3IgYWxzbyBiZWxvdyBmb3IgYWxsIHRoZSBvdGhlcgpzaW1pbGFyIGNhc2Vz LgoKCj4gKyAgICBnYy0+Z2ljZF9pc2FjdGl2ZXIgPSB4emFsbG9jX2FycmF5KHVpbnQzMl90LCBE SVZfUk9VTkRfVVAobiwgMzIpKTsKPiArICAgIGlmICggIWdjLT5naWNkX2lzYWN0aXZlciApCj4g KyAgICAgICAgZ290byBmcmVlX2dpY2RfaXNlbmFibGVyOwo+ICsKPiArICAgIGdjLT5naWNkX2l0 YXJnZXRzciA9IHh6YWxsb2NfYXJyYXkodWludDMyX3QsIERJVl9ST1VORF9VUChuLCA0KSk7Cj4g KyAgICBpZiAoICFnYy0+Z2ljZF9pdGFyZ2V0c3IgKQo+ICsgICAgICAgIGdvdG8gZnJlZV9naWNk X2lzYWN0aXZlcjsKPiArCj4gKyAgICBnYy0+Z2ljZF9pcHJpb3JpdHlyID0geHphbGxvY19hcnJh eSh1aW50MzJfdCwgRElWX1JPVU5EX1VQKG4sIDQpKTsKPiArICAgIGlmICggIWdjLT5naWNkX2lw cmlvcml0eXIgKQo+ICsgICAgICAgIGdvdG8gZnJlZV9naWNkX2l0YXJnZXRzcjsKPiArCj4gKyAg ICBnYy0+Z2ljZF9pY2ZnciA9IHh6YWxsb2NfYXJyYXkodWludDMyX3QsIERJVl9ST1VORF9VUChu LCAxNikpOwo+ICsgICAgaWYgKCBnYy0+Z2ljZF9pY2ZnciApCj4gKyAgICAgICAgcmV0dXJuOwo+ ICsKPiArICAgIHhmcmVlKGdjLT5naWNkX2lwcmlvcml0eXIpOwo+ICsKPiArZnJlZV9naWNkX2l0 YXJnZXRzcjoKCllvdSBjYW4gaGF2ZSBqdXN0IG9uZSBsYWJlbCB0aGF0IGZyZWVzIGV2ZXJ5dGhp bmcsIGFzIHlvdSBjYW4gcmVseSBvbgp4ZnJlZSB3b3JraW5nIGZpbmUgKGRvaW5nIG5vdGhpbmcp IGZvciBOVUxMIHBvaW50ZXJzLgoKCj4gKyAgICB4ZnJlZShnYy0+Z2ljZF9pdGFyZ2V0c3IpOwo+ ICsKPiArZnJlZV9naWNkX2lzYWN0aXZlcjoKPiArICAgIHhmcmVlKGdjLT5naWNkX2lzYWN0aXZl cik7Cj4gKwo+ICtmcmVlX2dpY2RfaXNlbmFibGVyOgo+ICsgICAgeGZyZWUoZ2MtPmdpY2RfaXNl bmFibGVyKTsKPiArICAgIGdjLT5naWNkX2lzZW5hYmxlciA9IE5VTEw7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgZ2ljdjJfc3VzcGVuZCh2b2lkKQo+ICt7Cj4gKyAgICBpbnQgaTsKPiArCj4gKyAg ICAvKiBTYXZlIEdJQ0MgY29uZmlndXJhdGlvbiAqLwo+ICsgICAgZ2ljdjJfY29udGV4dC5naWNj X2N0bHIgPSByZWFkbF9naWNjKEdJQ0NfQ1RMUik7Cj4gKyAgICBnaWN2Ml9jb250ZXh0LmdpY2Nf cG1yID0gcmVhZGxfZ2ljYyhHSUNDX1BNUik7Cj4gKyAgICBnaWN2Ml9jb250ZXh0LmdpY2NfYnBy ID0gcmVhZGxfZ2ljYyhHSUNDX0JQUik7Cj4gKwo+ICsgICAgLyogSWYgZ2ljdjJfYWxsb2NfY29u dGV4dCgpIGhhc24ndCBhbGxvY2F0ZWQgbWVtb3J5LCByZXR1cm4gKi8KPiArICAgIGlmICggIWdp Y3YyX2NvbnRleHQuZ2ljZF9pc2VuYWJsZXIgKQo+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwoK SWYgeW91IGFyZSBnb2luZyB0byBjaGVjayBmb3IgdGhpcywgdGhlbiBwbGVhc2UgY2hlY2sgZm9y IGFsbCB0aGUgb3RoZXJzCmFzIHdlbGwgKGdpY2RfaXNhY3RpdmVyLCBnaWNkX2lwcmlvcml0eXIs IGV0Yy4pIEJ1dCBpZiB5b3UgZm9sbG93IG15Cm90aGVyIHN1Z2dlc3Rpb24gdG8gcmV0dXJuIGVy cm9yIGlmIHdlIGZhaWwgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGF0CmluaXQsIHRoZW4gdGhpcyBj YW4gYmVjb21lIGFuIEFTU0VSVC4gQWxzbywgQVNTRVJUUyBvciBjaGVja3Mgc2hvdWxkIGJlCmF0 IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGlzIGZ1bmN0aW9uLgoKCj4gKyAgICAvKiBTYXZlIEdJ Q0QgY29uZmlndXJhdGlvbiAqLwo+ICsgICAgZ2ljdjJfY29udGV4dC5naWNkX2N0bHIgPSByZWFk bF9naWNkKEdJQ0RfQ1RMUik7Cj4gKwo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBESVZfUk9VTkRf VVAoZ2ljdjJfaW5mby5ucl9saW5lcywgMzIpOyBpKysgKQo+ICsgICAgICAgIGdpY3YyX2NvbnRl eHQuZ2ljZF9pc2VuYWJsZXJbaV0gPSByZWFkbF9naWNkKEdJQ0RfSVNFTkFCTEVSICsgaSAqIDQp Owo+ICsKPiArICAgIGZvciAoIGkgPSAwOyBpIDwgRElWX1JPVU5EX1VQKGdpY3YyX2luZm8ubnJf bGluZXMsIDMyKTsgaSsrICkKPiArICAgICAgICBnaWN2Ml9jb250ZXh0LmdpY2RfaXNhY3RpdmVy W2ldID0gcmVhZGxfZ2ljZChHSUNEX0lTQUNUSVZFUiArIGkgKiA0KTsKPiArCj4gKyAgICBmb3Ig KCBpID0gMDsgaSA8IERJVl9ST1VORF9VUChnaWN2Ml9pbmZvLm5yX2xpbmVzLCA0KTsgaSsrICkK PiArICAgICAgICBnaWN2Ml9jb250ZXh0LmdpY2RfaXByaW9yaXR5cltpXSA9IHJlYWRsX2dpY2Qo R0lDRF9JUFJJT1JJVFlSICsgaSAqIDQpOwo+ICsKPiArICAgIGZvciAoIGkgPSAwOyBpIDwgRElW X1JPVU5EX1VQKGdpY3YyX2luZm8ubnJfbGluZXMsIDQpOyBpKysgKQo+ICsgICAgICAgIGdpY3Yy X2NvbnRleHQuZ2ljZF9pdGFyZ2V0c3JbaV0gPSByZWFkbF9naWNkKEdJQ0RfSVRBUkdFVFNSICsg aSAqIDQpOwo+ICsKPiArICAgIGZvciAoIGkgPSAwOyBpIDwgRElWX1JPVU5EX1VQKGdpY3YyX2lu Zm8ubnJfbGluZXMsIDE2KTsgaSsrICkKPiArICAgICAgICBnaWN2Ml9jb250ZXh0LmdpY2RfaWNm Z3JbaV0gPSByZWFkbF9naWNkKEdJQ0RfSUNGR1IgKyBpICogNCk7CgpUZWNobmljYWxseSwgR0lD RF9JQ0ZHUiBkb2Vzbid0IG5lZWQgdG8gYmUgc2F2ZWQgYmVjYXVzZSBpdCBjb3VsZCBiZQplbnRp cmVseSByZWNvbnN0cnVjdGVkIGZyb20gdGhlIGluZm9ybWF0aW9ucyB3ZSBoYXZlLCBidXQgSSBp bWFnaW5lIGl0CmNvdWxkIGJlIGRpZmZpY3VsdCB0byBjYWxsIHRoZSByaWdodCBzZXQgb2Ygcm91 dGVfaXJxX3RvX2d1ZXN0L3hlbiBjYWxscwphdCByZXN1bWUgdGltZSwgc28gSSB0aGluayBpdCBp cyBPSy4KCgo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGdpY3YyX3Jl c3VtZSh2b2lkKQo+ICt7Cj4gKyAgICBpbnQgaTsKPiArCj4gKyAgICBBU1NFUlQoZ2ljdjJfY29u dGV4dC5naWNkX2lzZW5hYmxlcik7Cj4gKyAgICBBU1NFUlQoZ2ljdjJfY29udGV4dC5naWNkX2lz YWN0aXZlcik7Cj4gKyAgICBBU1NFUlQoZ2ljdjJfY29udGV4dC5naWNkX2lwcmlvcml0eXIpOwo+ ICsgICAgQVNTRVJUKGdpY3YyX2NvbnRleHQuZ2ljZF9pdGFyZ2V0c3IpOwo+ICsgICAgQVNTRVJU KGdpY3YyX2NvbnRleHQuZ2ljZF9pY2Zncik7Cj4gKwo+ICsgICAgLyogRGlzYWJsZSBDUFUgaW50 ZXJmYWNlIGFuZCBkaXN0cmlidXRvciAqLwo+ICsgICAgd3JpdGVsX2dpY2MoMCwgR0lDQ19DVExS KTsKPiArICAgIHdyaXRlbF9naWNkKDAsIEdJQ0RfQ1RMUik7Cj4gKyAgICBpc2IoKTsKPiArCj4g KyAgICAvKiBSZXN0b3JlIEdJQ0QgY29uZmlndXJhdGlvbiAqLwo+ICsgICAgZm9yICggaSA9IDA7 IGkgPCBESVZfUk9VTkRfVVAoZ2ljdjJfaW5mby5ucl9saW5lcywgMzIpOyBpKysgKQo+ICsgICAg ICAgIHdyaXRlbF9naWNkKDB4ZmZmZmZmZmYsIEdJQ0RfSUNFTkFCTEVSICsgaSAqIDQpOwo+ICsK PiArICAgIGZvciAoIGkgPSAwOyBpIDwgRElWX1JPVU5EX1VQKGdpY3YyX2luZm8ubnJfbGluZXMs IDMyKTsgaSsrICkKPiArICAgICAgICB3cml0ZWxfZ2ljZChnaWN2Ml9jb250ZXh0LmdpY2RfaXNl bmFibGVyW2ldLCBHSUNEX0lTRU5BQkxFUiArIGkgKiA0KTsKPiArCj4gKyAgICBmb3IgKCBpID0g MDsgaSA8IERJVl9ST1VORF9VUChnaWN2Ml9pbmZvLm5yX2xpbmVzLCAzMik7IGkrKyApCj4gKyAg ICAgICAgd3JpdGVsX2dpY2QoMHhmZmZmZmZmZiwgR0lDRF9JQ0FDVElWRVIgKyBpICogNCk7Cj4g Kwo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBESVZfUk9VTkRfVVAoZ2ljdjJfaW5mby5ucl9saW5l cywgMzIpOyBpKysgKQo+ICsgICAgICAgIHdyaXRlbF9naWNkKGdpY3YyX2NvbnRleHQuZ2ljZF9p c2FjdGl2ZXJbaV0sIEdJQ0RfSVNBQ1RJVkVSICsgaSAqIDQpOwo+ICsKPiArICAgIGZvciAoIGkg PSAwOyBpIDwgRElWX1JPVU5EX1VQKGdpY3YyX2luZm8ubnJfbGluZXMsIDQpOyBpKysgKQo+ICsg ICAgICAgIHdyaXRlbF9naWNkKGdpY3YyX2NvbnRleHQuZ2ljZF9pcHJpb3JpdHlyW2ldLCBHSUNE X0lQUklPUklUWVIgKyBpICogNCk7Cj4gKwo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBESVZfUk9V TkRfVVAoZ2ljdjJfaW5mby5ucl9saW5lcywgNCk7IGkrKyApCj4gKyAgICAgICAgd3JpdGVsX2dp Y2QoZ2ljdjJfY29udGV4dC5naWNkX2l0YXJnZXRzcltpXSwgR0lDRF9JVEFSR0VUU1IgKyBpICog NCk7Cj4gKwo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBESVZfUk9VTkRfVVAoZ2ljdjJfaW5mby5u cl9saW5lcywgMTYpOyBpKysgKQo+ICsgICAgICAgIHdyaXRlbF9naWNkKGdpY3YyX2NvbnRleHQu Z2ljZF9pY2ZncltpXSwgR0lDRF9JQ0ZHUiArIGkgKiA0KTsKPiArCj4gKyAgICAvKiBNYWtlIHN1 cmUgYWxsIHJlZ2lzdGVycyBhcmUgcmVzdG9yZWQgYW5kIGVuYWJsZSBkaXN0cmlidXRvciAqLwo+ ICsgICAgaXNiKCk7Cj4gKyAgICB3cml0ZWxfZ2ljZChnaWN2Ml9jb250ZXh0LmdpY2RfY3RsciB8 IEdJQ0RfQ1RMX0VOQUJMRSwgR0lDRF9DVExSKTsKPiArCj4gKyAgICAvKiBSZXN0b3JlIEdJQyBD UFUgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gKi8KPiArICAgIHdyaXRlbF9naWNjKGdpY3YyX2Nv bnRleHQuZ2ljY19wbXIsIEdJQ0NfUE1SKTsKPiArICAgIHdyaXRlbF9naWNjKGdpY3YyX2NvbnRl eHQuZ2ljY19icHIsIEdJQ0NfQlBSKTsKPiArICAgIGlzYigpOwoKSSBkb24ndCB0aGluayB3ZSBu ZWVkIGFsbCB0aGVzZSBpc2IoKSdzIGluIHRoaXMgZnVuY3Rpb24uIE1heWJlIG9ubHkgb25lCmF0 IHRoZSBlbmQsIGJ1dCBwcm9iYWJseSBub3QgZXZlbiB0aGF0LiBKdWxpZW4sIHdoYXQgZG8geW91 IHRoaW5rPwoKCj4gKyAgICAvKiBFbmFibGUgR0lDIENQVSBpbnRlcmZhY2UgKi8KPiArICAgIHdy aXRlbF9naWNjKGdpY3YyX2NvbnRleHQuZ2ljY19jdGxyIHwgR0lDQ19DVExfRU5BQkxFIHwgR0lD Q19DVExfRU9JLAo+ICsgICAgICAgICAgICAgICAgR0lDQ19DVExSKTsKPiArICAgIGlzYigpOwo+ ICt9Cj4gKwo+ICBjb25zdCBzdGF0aWMgc3RydWN0IGdpY19od19vcGVyYXRpb25zIGdpY3YyX29w cyA9IHsKPiAgICAgIC5pbmZvICAgICAgICAgICAgICAgID0gJmdpY3YyX2luZm8sCj4gICAgICAu aW5pdCAgICAgICAgICAgICAgICA9IGdpY3YyX2luaXQsCj4gQEAgLTEzNTEsNiArMTQ5Niw4IEBA IGNvbnN0IHN0YXRpYyBzdHJ1Y3QgZ2ljX2h3X29wZXJhdGlvbnMgZ2ljdjJfb3BzID0gewo+ICAg ICAgLm1hcF9od2RvbV9leHRyYV9tYXBwaW5ncyA9IGdpY3YyX21hcF9od2Rvd25fZXh0cmFfbWFw cGluZ3MsCj4gICAgICAuaW9tZW1fZGVueV9hY2Nlc3MgICA9IGdpY3YyX2lvbWVtX2RlbnlfYWNj ZXNzLAo+ICAgICAgLmRvX0xQSSAgICAgICAgICAgICAgPSBnaWN2Ml9kb19MUEksCj4gKyAgICAu c3VzcGVuZCAgICAgICAgICAgICA9IGdpY3YyX3N1c3BlbmQsCj4gKyAgICAucmVzdW1lICAgICAg ICAgICAgICA9IGdpY3YyX3Jlc3VtZSwKPiAgfTsKPiAgCj4gIC8qIFNldCB1cCB0aGUgR0lDICov Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9naWMuYyBiL3hlbi9hcmNoL2FybS9naWMuYwo+ IGluZGV4IGU1MjRhZDU4M2QuLjZlOThmNDM2OTEgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJt L2dpYy5jCj4gKysrIGIveGVuL2FyY2gvYXJtL2dpYy5jCj4gQEAgLTQ2NCw2ICs0NjQsMzMgQEAg aW50IGdpY19pb21lbV9kZW55X2FjY2Vzcyhjb25zdCBzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAg cmV0dXJuIGdpY19od19vcHMtPmlvbWVtX2RlbnlfYWNjZXNzKGQpOwo+ICB9Cj4gIAo+ICtpbnQg Z2ljX3N1c3BlbmQodm9pZCkKPiArewo+ICsgICAgLyogTXVzdCBiZSBjYWxsZWQgYnkgYm9vdCBD UFUjMCB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQgKi8KPiArICAgIEFTU0VSVCghbG9jYWxfaXJx X2lzX2VuYWJsZWQoKSk7Cj4gKyAgICBBU1NFUlQoIXNtcF9wcm9jZXNzb3JfaWQoKSk7Cj4gKwo+ ICsgICAgaWYgKCAhZ2ljX2h3X29wcy0+c3VzcGVuZCB8fCAhZ2ljX2h3X29wcy0+cmVzdW1lICkK PiArICAgICAgICByZXR1cm4gLUVOT1NZUzsKPiArCj4gKyAgICBnaWNfaHdfb3BzLT5zdXNwZW5k KCk7CgpTaG91bGQgcmV0dXJuIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBzdXNwZW5kKCkgY2Fs bC4KCgo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3ZvaWQgZ2ljX3Jlc3VtZSh2b2lkKQo+ ICt7Cj4gKyAgICAvKgo+ICsgICAgICogTXVzdCBiZSBjYWxsZWQgYnkgYm9vdCBDUFUjMCB3aXRo IGludGVycnVwdHMgZGlzYWJsZWQgYWZ0ZXIgZ2ljX3N1c3BlbmQKPiArICAgICAqIGhhcyByZXR1 cm5lZCBzdWNjZXNzZnVsbHkuCj4gKyAgICAgKi8KPiArICAgIEFTU0VSVCghbG9jYWxfaXJxX2lz X2VuYWJsZWQoKSk7Cj4gKyAgICBBU1NFUlQoIXNtcF9wcm9jZXNzb3JfaWQoKSk7Cj4gKyAgICBB U1NFUlQoZ2ljX2h3X29wcy0+cmVzdW1lKTsKPiArCj4gKyAgICBnaWNfaHdfb3BzLT5yZXN1bWUo KTsKPiArfQo+ICsKPiAgc3RhdGljIGludCBjcHVfZ2ljX2NhbGxiYWNrKHN0cnVjdCBub3RpZmll cl9ibG9jayAqbmZiLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBhY3Rpb24sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpoY3B1KQo+IGRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy5oIGIveGVuL2luY2x1ZGUvYXNtLWFy bS9naWMuaAo+IGluZGV4IDIyZmExMjJlNTIuLjQ2MDY2Y2FhYzggMTAwNjQ0Cj4gLS0tIGEveGVu L2luY2x1ZGUvYXNtLWFybS9naWMuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLmgK PiBAQCAtMjc3LDYgKzI3NywxMCBAQCBleHRlcm4gaW50IGdpY3Zfc2V0dXAoc3RydWN0IGRvbWFp biAqZCk7Cj4gIGV4dGVybiB2b2lkIGdpY19zYXZlX3N0YXRlKHN0cnVjdCB2Y3B1ICp2KTsKPiAg ZXh0ZXJuIHZvaWQgZ2ljX3Jlc3RvcmVfc3RhdGUoc3RydWN0IHZjcHUgKnYpOwo+ICAKPiArLyog U3VzcGVuZC9yZXN1bWUgKi8KPiArZXh0ZXJuIGludCBnaWNfc3VzcGVuZCh2b2lkKTsKPiArZXh0 ZXJuIHZvaWQgZ2ljX3Jlc3VtZSh2b2lkKTsKPiArCj4gIC8qIFNHSSAoQUtBIElQSXMpICovCj4g IGVudW0gZ2ljX3NnaSB7Cj4gICAgICBHSUNfU0dJX0VWRU5UX0NIRUNLID0gMCwKPiBAQCAtMzkw LDYgKzM5NCwxMCBAQCBzdHJ1Y3QgZ2ljX2h3X29wZXJhdGlvbnMgewo+ICAgICAgaW50ICgqaW9t ZW1fZGVueV9hY2Nlc3MpKGNvbnN0IHN0cnVjdCBkb21haW4gKmQpOwo+ICAgICAgLyogSGFuZGxl IExQSXMsIHdoaWNoIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZyAqLwo+ICAgICAgdm9pZCAoKmRv X0xQSSkodW5zaWduZWQgaW50IGxwaSk7Cj4gKyAgICAvKiBTYXZlIEdJQyBjb25maWd1cmF0aW9u IGR1ZSB0byB0aGUgc3lzdGVtIHN1c3BlbmQgKi8KPiArICAgIGludCAoKnN1c3BlbmQpKHZvaWQp Owo+ICsgICAgLyogUmVzdG9yZSBHSUMgY29uZmlndXJhdGlvbiBkdWUgdG8gdGhlIHN5c3RlbSBy ZXN1bWUgKi8KPiArICAgIHZvaWQgKCpyZXN1bWUpKHZvaWQpOwo+ICB9Owo+ICAKPiAgZXh0ZXJu IGNvbnN0IHN0cnVjdCBnaWNfaHdfb3BlcmF0aW9ucyAqZ2ljX2h3X29wczsKPiAtLSAKPiAyLjEz LjAKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=