From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [RFC PATCH 25/49] ARM: new VGIC: Add GICv2 world switch backend Date: Tue, 13 Feb 2018 14:31:19 +0000 Message-ID: References: <20180209143937.28866-1-andre.przywara@linaro.org> <20180209143937.28866-26-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 all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1elbcG-0002Me-NP for xen-devel@lists.xenproject.org; Tue, 13 Feb 2018 14:31:28 +0000 In-Reply-To: <20180209143937.28866-26-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 , xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org SGksCgpPbiAwOS8wMi8xOCAxNDozOSwgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4gUHJvY2Vzc2lu ZyBtYWludGVuYW5jZSBpbnRlcnJ1cHRzIGFuZCBhY2Nlc3NpbmcgdGhlIGxpc3QgcmVnaXN0ZXJz Cj4gYXJlIGRlcGVuZGVudCBvbiB0aGUgaG9zdCdzIEdJQyB2ZXJzaW9uLgo+IEludHJvZHVjZSB2 Z2ljLXYyLmMgdG8gY29udGFpbiBHSUN2MiBzcGVjaWZpYyBmdW5jdGlvbnMuCj4gSW1wbGVtZW50 IHRoZSBHSUN2MiBzcGVjaWZpYyBjb2RlIGZvciBzeW5jaW5nIHRoZSBlbXVsYXRpb24gc3RhdGUK PiBpbnRvIHRoZSBWR0lDIHJlZ2lzdGVycy4KPiBUaGlzIGFsc28gYWRkcyB0aGUgaG9vayB0byBs ZXQgWGVuIHNldHVwIHRoZSBob3N0IEdJQyBhZGRyZXNzZXMuCj4gCj4gVGhpcyBpcyBiYXNlZCBv biBMaW51eCBjb21taXQgMTQwYjA4NmRkMTk3LCB3cml0dGVuIGJ5IE1hcmMgWnluZ2llci4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBQcnp5d2FyYSA8YW5kcmUucHJ6eXdhcmFAbGluYXJvLm9y Zz4KPiAtLS0KPiAgIHhlbi9hcmNoL2FybS92Z2ljL3ZnaWMtdjIuYyB8IDI2MSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgeGVuL2FyY2gvYXJtL3ZnaWMv dmdpYy5jICAgIHwgIDIwICsrKysKPiAgIHhlbi9hcmNoL2FybS92Z2ljL3ZnaWMuaCAgICB8ICAg OCArKwo+ICAgMyBmaWxlcyBjaGFuZ2VkLCAyODkgaW5zZXJ0aW9ucygrKQo+ICAgY3JlYXRlIG1v ZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS92Z2ljL3ZnaWMtdjIuYwo+IAo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLXYyLmMgYi94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLXYyLmMK PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLjEwZmM0NjdmZmEKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy12Mi5jCj4gQEAgLTAs MCArMSwyNjEgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFSTSBMdGQu Cj4gKyAqIEltcG9ydGVkIGZyb20gTGludXggKCJuZXciIEtWTSBWR0lDKSBhbmQgaGVhdmlseSBh ZGFwdGVkIHRvIFhlbi4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKPiAr ICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqCj4gKyAq IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCj4gKyAqIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+Lgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxhc20vYXJtX3ZnaWMuaD4KPiArI2luY2x1 ZGUgPGFzbS9idWcuaD4KPiArI2luY2x1ZGUgPGFzbS9pby5oPgo+ICsjaW5jbHVkZSA8eGVuL3Nj aGVkLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vc2l6ZXMuaD4KPiArCj4gKyNpbmNsdWRlICJ2Z2ljLmgi Cj4gKwo+ICsjZGVmaW5lIEdJQ0hfRUxSU1IwICAgICAgICAgICAgICAgICAgICAgMHgzMAo+ICsj ZGVmaW5lIEdJQ0hfRUxSU1IxICAgICAgICAgICAgICAgICAgICAgMHgzNAo+ICsjZGVmaW5lIEdJ Q0hfTFIwICAgICAgICAgICAgICAgICAgICAgICAgMHgxMDAKPiArCj4gKyNkZWZpbmUgR0lDSF9M Ul9WSVJUVUFMSUQgICAgICAgICAgICAgICAoMHgzZmYgPDwgMCkKPiArI2RlZmluZSBHSUNIX0xS X1BIWVNJRF9DUFVJRF9TSElGVCAgICAgICgxMCkKPiArI2RlZmluZSBHSUNIX0xSX1BIWVNJRF9D UFVJRCAgICAgICAgICAgICgweDNmZiA8PCBHSUNIX0xSX1BIWVNJRF9DUFVJRF9TSElGVCkKPiAr I2RlZmluZSBHSUNIX0xSX1BSSU9SSVRZX1NISUZUICAgICAgICAgIDIzCj4gKyNkZWZpbmUgR0lD SF9MUl9TVEFURSAgICAgICAgICAgICAgICAgICAoMyA8PCAyOCkKPiArI2RlZmluZSBHSUNIX0xS X1BFTkRJTkdfQklUICAgICAgICAgICAgICgxIDw8IDI4KQo+ICsjZGVmaW5lIEdJQ0hfTFJfQUNU SVZFX0JJVCAgICAgICAgICAgICAgKDEgPDwgMjkpCj4gKyNkZWZpbmUgR0lDSF9MUl9FT0kgICAg ICAgICAgICAgICAgICAgICAoMSA8PCAxOSkKPiArI2RlZmluZSBHSUNIX0xSX0hXICAgICAgICAg ICAgICAgICAgICAgICgxIDw8IDMxKQoKQ2FuIHdlIGRlZmluZSB0aGVtIGluIGVpdGhlciBpbiBn aWMuaCBvciBhIG5ldyBoZWFkZXIgZ2ljLXYyLmg/Cgo+ICsKPiArc3RhdGljIHN0cnVjdCB7Cj4g KyAgICBib29sIGVuYWJsZWQ7Cj4gKyAgICBwYWRkcl90IGRiYXNlOyAgICAgICAgICAvKiBEaXN0 cmlidXRvciBpbnRlcmZhY2UgYWRkcmVzcyAqLwo+ICsgICAgcGFkZHJfdCBjYmFzZTsgICAgICAg ICAgLyogQ1BVIGludGVyZmFjZSBhZGRyZXNzICYgc2l6ZSAqLwo+ICsgICAgcGFkZHJfdCBjc2l6 ZTsKPiArICAgIHBhZGRyX3QgdmJhc2U7ICAgICAgICAgIC8qIFZpcnR1YWwgQ1BVIGludGVyZmFj ZSBhZGRyZXNzICovCj4gKyAgICB2b2lkIF9faW9tZW0gKmhiYXNlOyAgICAgICAgLyogSHlwZXJ2 aXNvciBjb250cm9sIGludGVyZmFjZSAqLwo+ICsKPiArICAgIC8qIE9mZnNldCB0byBhZGQgdG8g Z2V0IGFuIDhrQiBjb250aWd1b3VzIHJlZ2lvbiBpZiBHSUMgaXMgYWxpYXNlZCAqLwo+ICsgICAg dWludDMyX3QgYWxpYXNlZF9vZmZzZXQ7Cj4gK30gZ2ljX3YyX2h3X2RhdGE7Cj4gKwo+ICt2b2lk IHZnaWNfdjJfc2V0dXBfaHcocGFkZHJfdCBkYmFzZSwgcGFkZHJfdCBjYmFzZSwgcGFkZHJfdCBj c2l6ZSwKPiArICAgICAgICAgICAgICBwYWRkcl90IHZiYXNlLCB2b2lkIF9faW9tZW0gKmhiYXNl LAo+ICsgICAgICAgICAgICAgIHVpbnQzMl90IGFsaWFzZWRfb2Zmc2V0KQo+ICt7Cj4gKyAgICBn aWNfdjJfaHdfZGF0YS5lbmFibGVkID0gdHJ1ZTsKPiArICAgIGdpY192Ml9od19kYXRhLmRiYXNl ID0gZGJhc2U7Cj4gKyAgICBnaWNfdjJfaHdfZGF0YS5jYmFzZSA9IGNiYXNlOwo+ICsgICAgZ2lj X3YyX2h3X2RhdGEuY3NpemUgPSBjc2l6ZTsKPiArICAgIGdpY192Ml9od19kYXRhLnZiYXNlID0g dmJhc2U7Cj4gKyAgICBnaWNfdjJfaHdfZGF0YS5oYmFzZSA9IGhiYXNlOwo+ICsgICAgZ2ljX3Yy X2h3X2RhdGEuYWxpYXNlZF9vZmZzZXQgPSBhbGlhc2VkX29mZnNldDsKPiArfQo+ICsKPiArdm9p ZCB2Z2ljX3YyX3NldF91bmRlcmZsb3coc3RydWN0IHZjcHUgKnZjcHUpCj4gK3sKPiArICAgIGdp Y19od19vcHMtPnVwZGF0ZV9oY3Jfc3RhdHVzKEdJQ0hfSENSX1VJRSwgMSk7Cj4gK30KPiArCj4g Ky8qCj4gKyAqIHRyYW5zZmVyIHRoZSBjb250ZW50IG9mIHRoZSBMUnMgYmFjayBpbnRvIHRoZSBj b3JyZXNwb25kaW5nIGFwX2xpc3Q6Cj4gKyAqIC0gYWN0aXZlIGJpdCBpcyB0cmFuc2ZlcnJlZCBh cyBpcwo+ICsgKiAtIHBlbmRpbmcgYml0IGlzCj4gKyAqICAgLSB0cmFuc2ZlcnJlZCBhcyBpcyBp biBjYXNlIG9mIGVkZ2Ugc2Vuc2l0aXZlIElSUXMKPiArICogICAtIHNldCB0byB0aGUgbGluZS1s ZXZlbCAocmVzYW1wbGUgdGltZSkgZm9yIGxldmVsIHNlbnNpdGl2ZSBJUlFzCj4gKyAqLwo+ICt2 b2lkIHZnaWNfdjJfZm9sZF9scl9zdGF0ZShzdHJ1Y3QgdmNwdSAqdmNwdSkKCkkgYW0gd29uZGVy aW5nIGhvdyBtdWNoIHdlIGNvdWxkIHNoYXJlIHRoaXMgY29kZSB3aXRoIHZnaWNfdjNfZm9sZF9s cl9zdGF0ZS4KCj4gK3sKPiArICAgIHN0cnVjdCB2Z2ljX2NwdSAqdmdpY19jcHUgPSAmdmNwdS0+ YXJjaC52Z2ljX2NwdTsKPiArICAgIHN0cnVjdCB2Z2ljX3YyX2NwdV9pZiAqY3B1aWYgPSAmdmdp Y19jcHUtPnZnaWNfdjI7Cj4gKyAgICBpbnQgbHI7Cgp1bnNpZ25lZCBwbGVhc2UuCgo+ICsgICAg dW5zaWduZWQgbG9uZyBmbGFnczsKPiArCj4gKyAgICBjcHVpZi0+dmdpY19oY3IgJj0gfkdJQ0hf SENSX1VJRTsKPiArCj4gKyAgICBmb3IgKCBsciA9IDA7IGxyIDwgdmdpY19jcHUtPnVzZWRfbHJz OyBscisrICkKPiArICAgIHsKPiArICAgICAgICB1MzIgdmFsID0gY3B1aWYtPnZnaWNfbHJbbHJd Owo+ICsgICAgICAgIHUzMiBpbnRpZCA9IHZhbCAmIEdJQ0hfTFJfVklSVFVBTElEOwo+ICsgICAg ICAgIHN0cnVjdCB2Z2ljX2lycSAqaXJxOwo+ICsKPiArICAgICAgICBpcnEgPSB2Z2ljX2dldF9p cnEodmNwdS0+ZG9tYWluLCB2Y3B1LCBpbnRpZCk7Cj4gKwo+ICsgICAgICAgIHNwaW5fbG9ja19p cnFzYXZlKCZpcnEtPmlycV9sb2NrLCBmbGFncyk7Cj4gKwo+ICsgICAgICAgIC8qIEFsd2F5cyBw cmVzZXJ2ZSB0aGUgYWN0aXZlIGJpdCAqLwo+ICsgICAgICAgIGlycS0+YWN0aXZlID0gISEodmFs ICYgR0lDSF9MUl9BQ1RJVkVfQklUKTsKPiArCj4gKyAgICAgICAgLyogRWRnZSBpcyB0aGUgb25s eSBjYXNlIHdoZXJlIHdlIHByZXNlcnZlIHRoZSBwZW5kaW5nIGJpdCAqLwo+ICsgICAgICAgIGlm ICggaXJxLT5jb25maWcgPT0gVkdJQ19DT05GSUdfRURHRSAmJiAodmFsICYgR0lDSF9MUl9QRU5E SU5HX0JJVCkgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgaXJxLT5wZW5kaW5nX2xhdGNo ID0gdHJ1ZTsKPiArCj4gKyAgICAgICAgICAgIGlmICggdmdpY19pcnFfaXNfc2dpKGludGlkKSAp Cj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgIHUzMiBjcHVpZCA9IHZhbCAmIEdJ Q0hfTFJfUEhZU0lEX0NQVUlEOwo+ICsKPiArICAgICAgICAgICAgICAgIGNwdWlkID4+PSBHSUNI X0xSX1BIWVNJRF9DUFVJRF9TSElGVDsKPiArICAgICAgICAgICAgICAgIGlycS0+c291cmNlIHw9 ICgxIDw8IGNwdWlkKTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArCgpNYXkgSSBh c2sgdG8ga2VlcCB0aGUgYmlnIGNvbW1lbnRzIGZyb20gS1ZNIGFyb3VuZD8gSXQgbG9va3MgcXVp dGUgCnVzZWZ1bCB0byBoYXZlIGl0LgoKPiArICAgICAgICBpZiAoIGlycS0+aHcgJiYgaXJxLT5j b25maWcgPT0gVkdJQ19DT05GSUdfTEVWRUwgJiYKCllvdSBwcm9iYWJseSB3YW50IHRvIGhhdmUg dGhlIGhlbHBlciB2Z2ljX2lycV9pc19tYXBwZWRfbGV2ZWwoLi4uKSBhcyBpbiAKS1ZNLgoKPiAr ICAgICAgICAgICAgKHZhbCAmIEdJQ0hfTFJfUEVORElOR19CSVQpICkKPiArICAgICAgICB7Cj4g KyAgICAgICAgICAgIGlycS0+bGluZV9sZXZlbCA9IGdpY19yZWFkX3BlbmRpbmdfc3RhdGUoaXJx LT5od2ludGlkKTsKPiArCj4gKyAgICAgICAgICAgIGlmICggIWlycS0+bGluZV9sZXZlbCApCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaWNfc2V0X2FjdGl2ZV9zdGF0ZShpcnEtPmh3 aW50aWQsIHRydWUpOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmaXJxLT5pcnFfbG9jaywgZmxhZ3MpOwo+ICsgICAgICAgIHZnaWNfcHV0X2lycSh2 Y3B1LT5kb21haW4sIGlycSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgdmdpY19jcHUtPnVzZWRfbHJz ID0gMDsKPiArfQo+ICsKPiArLyoKPiArICogUG9wdWxhdGVzIHRoZSBwYXJ0aWN1bGFyIExSIHdp dGggdGhlIHN0YXRlIG9mIGEgZ2l2ZW4gSVJROgo+ICsgKiAtIGZvciBhbiBlZGdlIHNlbnNpdGl2 ZSBJUlEgdGhlIHBlbmRpbmcgc3RhdGUgaXMgY2xlYXJlZCBpbiBzdHJ1Y3QgdmdpY19pcnEKPiAr ICogLSBmb3IgYSBsZXZlbCBzZW5zaXRpdmUgSVJRIHRoZSBwZW5kaW5nIHN0YXRlIHZhbHVlIGlz IHVuY2hhbmdlZDsKPiArICogICBpdCBpcyBkaWN0YXRlZCBkaXJlY3RseSBieSB0aGUgaW5wdXQg bGV2ZWwKPiArICoKPiArICogSWYgQGlycSBkZXNjcmliZXMgYW4gU0dJIHdpdGggbXVsdGlwbGUg c291cmNlcywgd2UgY2hvb3NlIHRoZQo+ICsgKiBsb3dlc3QtbnVtYmVyZWQgc291cmNlIFZDUFUg YW5kIGNsZWFyIHRoYXQgYml0IGluIHRoZSBzb3VyY2UgYml0bWFwLgo+ICsgKgo+ICsgKiBUaGUg aXJxX2xvY2sgbXVzdCBiZSBoZWxkIGJ5IHRoZSBjYWxsZXIuCj4gKyAqLwo+ICt2b2lkIHZnaWNf djJfcG9wdWxhdGVfbHIoc3RydWN0IHZjcHUgKnZjcHUsIHN0cnVjdCB2Z2ljX2lycSAqaXJxLCBp bnQgbHIpCgpJIGFtIHdvbmRlcmluZyBob3cgbXVjaCB3ZSBjb3VsZCBzaGFyZSB0aGlzIGNvZGUg d2l0aCB2Z2ljX3YzX3BvcHVsYXRlX2xyLgoKPiArewo+ICsgICAgdTMyIHZhbCA9IGlycS0+aW50 aWQ7Cj4gKwo+ICsgICAgaWYgKCBpcnFfaXNfcGVuZGluZyhpcnEpICkKPiArICAgIHsKPiArICAg ICAgICB2YWwgfD0gR0lDSF9MUl9QRU5ESU5HX0JJVDsKPiArCj4gKyAgICAgICAgaWYgKCBpcnEt PmNvbmZpZyA9PSBWR0lDX0NPTkZJR19FREdFICkKPiArICAgICAgICAgICAgaXJxLT5wZW5kaW5n X2xhdGNoID0gZmFsc2U7Cj4gKwo+ICsgICAgICAgIGlmICggdmdpY19pcnFfaXNfc2dpKGlycS0+ aW50aWQpICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHUzMiBzcmMgPSBmZnMoaXJxLT5z b3VyY2UpOwo+ICsKPiArICAgICAgICAgICAgQlVHX09OKCFzcmMpOwo+ICsgICAgICAgICAgICB2 YWwgfD0gKHNyYyAtIDEpIDw8IEdJQ0hfTFJfUEhZU0lEX0NQVUlEX1NISUZUOwo+ICsgICAgICAg ICAgICBpcnEtPnNvdXJjZSAmPSB+KDEgPDwgKHNyYyAtIDEpKTsKPiArICAgICAgICAgICAgaWYg KCBpcnEtPnNvdXJjZSApCj4gKyAgICAgICAgICAgICAgICBpcnEtPnBlbmRpbmdfbGF0Y2ggPSB0 cnVlOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICBpZiAoIGlycS0+YWN0aXZlICkK PiArICAgICAgICB2YWwgfD0gR0lDSF9MUl9BQ1RJVkVfQklUOwo+ICsKPiArICAgIGlmICggaXJx LT5odyApCj4gKyAgICB7Cj4gKyAgICAgICAgdmFsIHw9IEdJQ0hfTFJfSFc7Cj4gKyAgICAgICAg dmFsIHw9IGlycS0+aHdpbnRpZCA8PCBHSUNIX0xSX1BIWVNJRF9DUFVJRF9TSElGVDsKPiArICAg ICAgICAvKgo+ICsgICAgICAgICAqIE5ldmVyIHNldCBwZW5kaW5nK2FjdGl2ZSBvbiBhIEhXIGlu dGVycnVwdCwgYXMgdGhlCj4gKyAgICAgICAgICogcGVuZGluZyBzdGF0ZSBpcyBrZXB0IGF0IHRo ZSBwaHlzaWNhbCBkaXN0cmlidXRvcgo+ICsgICAgICAgICAqIGxldmVsLgo+ICsgICAgICAgICAq Lwo+ICsgICAgICAgIGlmICggaXJxLT5hY3RpdmUgJiYgaXJxX2lzX3BlbmRpbmcoaXJxKSApCj4g KyAgICAgICAgICAgIHZhbCAmPSB+R0lDSF9MUl9QRU5ESU5HX0JJVDsKPiArICAgIH0KPiArICAg IGVsc2UKPiArICAgIHsKPiArICAgICAgICBpZiAoIGlycS0+Y29uZmlnID09IFZHSUNfQ09ORklH X0xFVkVMICkKPiArICAgICAgICAgICAgdmFsIHw9IEdJQ0hfTFJfRU9JOwo+ICsgICAgfQo+ICsK PiArICAgIC8qCj4gKyAgICAgKiBMZXZlbC10cmlnZ2VyZWQgbWFwcGVkIElSUXMgYXJlIHNwZWNp YWwgYmVjYXVzZSB3ZSBvbmx5IG9ic2VydmUKPiArICAgICAqIHJpc2luZyBlZGdlcyBhcyBpbnB1 dCB0byB0aGUgVkdJQy4gIFdlIHRoZXJlZm9yZSBsb3dlciB0aGUgbGluZQo+ICsgICAgICogbGV2 ZWwgaGVyZSwgc28gdGhhdCB3ZSBjYW4gdGFrZSBuZXcgdmlydHVhbCBJUlFzLiAgU2VlCj4gKyAg ICAgKiB2Z2ljX3YyX2ZvbGRfbHJfc3RhdGUgZm9yIG1vcmUgaW5mby4KPiArICAgICAqLwo+ICsg ICAgaWYgKCBpcnEtPmh3ICYmIGlycS0+Y29uZmlnID09IFZHSUNfQ09ORklHX0xFVkVMICYmCgpT YW1lIHJlbWFyayBmb3IgdGhlIGhlbHBlci4KCj4gKyAgICAgICAgKHZhbCAmIEdJQ0hfTFJfUEVO RElOR19CSVQpICkKPiArICAgICAgICBpcnEtPmxpbmVfbGV2ZWwgPSBmYWxzZTsKPiArCj4gKyAg ICAvKiBUaGUgR0lDdjIgTFIgb25seSBob2xkcyBmaXZlIGJpdHMgb2YgcHJpb3JpdHkuICovCj4g KyAgICB2YWwgfD0gKGlycS0+cHJpb3JpdHkgPj4gMykgPDwgR0lDSF9MUl9QUklPUklUWV9TSElG VDsKPiArCj4gKyAgICB2Y3B1LT5hcmNoLnZnaWNfY3B1LnZnaWNfdjIudmdpY19scltscl0gPSB2 YWw7Cj4gK30KPiArCj4gK3ZvaWQgdmdpY192Ml9jbGVhcl9scihzdHJ1Y3QgdmNwdSAqdmNwdSwg aW50IGxyKQo+ICt7Cj4gKyAgICB2Y3B1LT5hcmNoLnZnaWNfY3B1LnZnaWNfdjIudmdpY19sclts cl0gPSAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzYXZlX2xycyhzdHJ1Y3QgdmNwdSAqdmNw dSwgdm9pZCBfX2lvbWVtICpiYXNlKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgdmdpY192Ml9jcHVfaWYg KmNwdV9pZiA9ICZ2Y3B1LT5hcmNoLnZnaWNfY3B1LnZnaWNfdjI7Cj4gKyAgICB1NjQgdXNlZF9s cnMgPSB2Y3B1LT5hcmNoLnZnaWNfY3B1LnVzZWRfbHJzOwo+ICsgICAgdTY0IGVscnNyOwo+ICsg ICAgaW50IGk7Cj4gKwo+ICsgICAgZWxyc3IgPSByZWFkbF9yZWxheGVkKGJhc2UgKyBHSUNIX0VM UlNSMCk7Cj4gKyAgICBpZiAoIHVubGlrZWx5KHVzZWRfbHJzID4gMzIpICkKPiArICAgICAgICBl bHJzciB8PSAoKHU2NClyZWFkbF9yZWxheGVkKGJhc2UgKyBHSUNIX0VMUlNSMSkpIDw8IDMyOwo+ ICsKPiArICAgIGZvciAoIGkgPSAwOyBpIDwgdXNlZF9scnM7IGkrKyApCj4gKyAgICB7Cj4gKyAg ICAgICAgaWYgKCBlbHJzciAmICgxVUwgPDwgaSkgKQo+ICsgICAgICAgICAgICBjcHVfaWYtPnZn aWNfbHJbaV0gJj0gfkdJQ0hfTFJfU1RBVEU7Cj4gKyAgICAgICAgZWxzZQo+ICsgICAgICAgICAg ICBjcHVfaWYtPnZnaWNfbHJbaV0gPSByZWFkbF9yZWxheGVkKGJhc2UgKyBHSUNIX0xSMCArIChp ICogNCkpOwo+ICsKPiArICAgICAgICB3cml0ZWxfcmVsYXhlZCgwLCBiYXNlICsgR0lDSF9MUjAg KyAoaSAqIDQpKTsKPiArICAgIH0KPiArfQo+ICsKPiArdm9pZCB2Z2ljX3YyX3NhdmVfc3RhdGUo c3RydWN0IHZjcHUgKnZjcHUpCj4gK3sKPiArICAgIHU2NCB1c2VkX2xycyA9IHZjcHUtPmFyY2gu dmdpY19jcHUudXNlZF9scnM7Cj4gKwo+ICsgICAgaWYgKCB1c2VkX2xycyApCj4gKyAgICB7Cj4g KyAgICAgICAgc2F2ZV9scnModmNwdSwgZ2ljX3YyX2h3X2RhdGEuaGJhc2UpOwo+ICsgICAgICAg IHdyaXRlbF9yZWxheGVkKDAsIGdpY192Ml9od19kYXRhLmhiYXNlICsgR0lDSF9IQ1IpOwo+ICsg ICAgfQo+ICt9CgpJIGFtIG5vdCBlbnRpcmVseSBjb252aW5jZWQgdGhhdCBoYXZlIGEgc2VwYXJh dGUgZnVuY3Rpb24gdG8gc2F2ZSB0aGUgCkxScyBpcyBuZWNlc3NhcnkuIFRoaXMgY291bGQgYmUg ZG9uZSBpbiBmb2xkX2xyX3N0YXRlKCkuCgo+ICsKPiArdm9pZCB2Z2ljX3YyX3Jlc3RvcmVfc3Rh dGUoc3RydWN0IHZjcHUgKnZjcHUpCj4gK3sKPiArICAgIHN0cnVjdCB2Z2ljX3YyX2NwdV9pZiAq Y3B1X2lmID0gJnZjcHUtPmFyY2gudmdpY19jcHUudmdpY192MjsKPiArICAgIHU2NCB1c2VkX2xy cyA9IHZjcHUtPmFyY2gudmdpY19jcHUudXNlZF9scnM7Cj4gKyAgICBpbnQgaTsKPiArCj4gKyAg ICBpZiAoIHVzZWRfbHJzICkKPiArICAgIHsKPiArICAgICAgICB3cml0ZWxfcmVsYXhlZChjcHVf aWYtPnZnaWNfaGNyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdpY192Ml9od19kYXRhLmhi YXNlICsgR0lDSF9IQ1IpOwo+ICsgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgdXNlZF9scnM7IGkr KyApCj4gKyAgICAgICAgICAgIHdyaXRlbF9yZWxheGVkKGNwdV9pZi0+dmdpY19scltpXSwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ljX3YyX2h3X2RhdGEuaGJhc2UgKyBHSUNIX0xS MCArIChpICogNCkpOwo+ICsgICAgfQoKU2FtZSBoZXJlIGJ1dCB3aXRoIHBvcHVsYXRlX2xyX3N0 YXRlKCkuIFRoaXMgd291bGQgbWFrZSB0aGUgY29kZSBlYXNpZXIgCnRvIGZvbGxvdyBhbmQgYWxz byBhdm9pZCBhIGxvdCBpZmVyeSBpbiB0aGUgdmdpYy5jIGNvZGUuCgo+ICt9Cj4gKwo+ICsvKgo+ ICsgKiBMb2NhbCB2YXJpYWJsZXM6Cj4gKyAqIG1vZGU6IEMKPiArICogYy1maWxlLXN0eWxlOiAi QlNEIgo+ICsgKiBjLWJhc2ljLW9mZnNldDogNAo+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwK PiArICogRW5kOgo+ICsgKi8KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy5j IGIveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy5jCj4gaW5kZXggYTFmNzcxMzBkNC4uZjRmMmEwNGE2 MCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLmMKPiArKysgYi94ZW4vYXJj aC9hcm0vdmdpYy92Z2ljLmMKPiBAQCAtNDg4LDYgKzQ4OCw3IEBAIHJldHJ5Ogo+ICAgCj4gICBz dGF0aWMgaW5saW5lIHZvaWQgdmdpY19mb2xkX2xyX3N0YXRlKHN0cnVjdCB2Y3B1ICp2Y3B1KQo+ ICAgewo+ICsgICAgdmdpY192Ml9mb2xkX2xyX3N0YXRlKHZjcHUpOwo+ICAgfQo+ICAgCj4gICAv KiBSZXF1aXJlcyB0aGUgaXJxX2xvY2sgdG8gYmUgaGVsZC4gKi8KPiBAQCAtNDk1LDE0ICs0OTYs MTggQEAgc3RhdGljIGlubGluZSB2b2lkIHZnaWNfcG9wdWxhdGVfbHIoc3RydWN0IHZjcHUgKnZj cHUsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmdpY19p cnEgKmlycSwgaW50IGxyKQo+ICAgewo+ICAgICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmaXJx LT5pcnFfbG9jaykpOwo+ICsKPiArICAgIHZnaWNfdjJfcG9wdWxhdGVfbHIodmNwdSwgaXJxLCBs cik7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbmxpbmUgdm9pZCB2Z2ljX2NsZWFyX2xyKHN0cnVj dCB2Y3B1ICp2Y3B1LCBpbnQgbHIpCj4gICB7Cj4gKyAgICB2Z2ljX3YyX2NsZWFyX2xyKHZjcHUs IGxyKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGlubGluZSB2b2lkIHZnaWNfc2V0X3VuZGVyZmxv dyhzdHJ1Y3QgdmNwdSAqdmNwdSkKPiAgIHsKPiArICAgIHZnaWNfdjJfc2V0X3VuZGVyZmxvdyh2 Y3B1KTsKPiAgIH0KPiAgIAo+ICAgLyogUmVxdWlyZXMgdGhlIGFwX2xpc3RfbG9jayB0byBiZSBo ZWxkLiAqLwo+IEBAIC01NzMsNiArNTc4LDExIEBAIG5leHQ6Cj4gICAgICAgICAgIHZnaWNfY2xl YXJfbHIodmNwdSwgY291bnQpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB2Z2lj X3NhdmVfc3RhdGUoc3RydWN0IHZjcHUgKnZjcHUpCj4gK3sKPiArICAgIHZnaWNfdjJfc2F2ZV9z dGF0ZSh2Y3B1KTsKPiArfQo+ICsKPiAgIC8qCj4gICAgKiBnaWNfY2xlYXJfbHJzKCkgLSBVcGRh dGUgdGhlIFZHSUMgc3RhdGUgZnJvbSBoYXJkd2FyZSBhZnRlciBhIGd1ZXN0J3MgcnVuLgo+ICAg ICogQHZjcHU6IHRoZSBWQ1BVLgo+IEBAIC01OTIsMTEgKzYwMiwxOCBAQCB2b2lkIGdpY19jbGVh cl9scnMoc3RydWN0IHZjcHUgKnZjcHUpCj4gICAgICAgaWYgKCBsaXN0X2VtcHR5KCZ2Y3B1LT5h cmNoLnZnaWNfY3B1LmFwX2xpc3RfaGVhZCkgKQo+ICAgICAgICAgICByZXR1cm47Cj4gICAKPiAr ICAgIHZnaWNfc2F2ZV9zdGF0ZSh2Y3B1KTsKPiArCj4gICAgICAgaWYgKCB2Z2ljX2NwdS0+dXNl ZF9scnMgKQo+ICAgICAgICAgICB2Z2ljX2ZvbGRfbHJfc3RhdGUodmNwdSk7Cj4gICAgICAgdmdp Y19wcnVuZV9hcF9saXN0KHZjcHUpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB2 Z2ljX3Jlc3RvcmVfc3RhdGUoc3RydWN0IHZjcHUgKnZjcHUpCj4gK3sKPiArICAgIHZnaWNfdjJf cmVzdG9yZV9zdGF0ZSh2Y3B1KTsKPiArfQo+ICsKPiAgIC8qCj4gICAgKiBnaWNfaW5qZWN0KCkg LSBmbHVzaCB0aGUgZW11bGF0aW9uIHN0YXRlIGludG8gdGhlIGhhcmR3YXJlIG9uIGd1ZXN0IGVu dHJ5Cj4gICAgKgo+IEBAIC02MjUsNyArNjQyLDEwIEBAIHZvaWQgZ2ljX2luamVjdCh2b2lkKQo+ ICAgICAgIHNwaW5fbG9jaygmY3VycmVudC0+YXJjaC52Z2ljX2NwdS5hcF9saXN0X2xvY2spOwo+ ICAgICAgIHZnaWNfZmx1c2hfbHJfc3RhdGUoY3VycmVudCk7Cj4gICAgICAgc3Bpbl91bmxvY2so JmN1cnJlbnQtPmFyY2gudmdpY19jcHUuYXBfbGlzdF9sb2NrKTsKPiArCj4gKyAgICB2Z2ljX3Jl c3RvcmVfc3RhdGUoY3VycmVudCk7Cj4gICB9Cj4gKwo+ICAgLyoKPiAgICAqIExvY2FsIHZhcmlh YmxlczoKPiAgICAqIG1vZGU6IEMKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3ZnaWMvdmdp Yy5oIGIveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy5oCj4gaW5kZXggNDdmYzU4YjgxZS4uNzcxY2E2 ZjA0NiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLmgKPiArKysgYi94ZW4v YXJjaC9hcm0vdmdpYy92Z2ljLmgKPiBAQCAtNDEsNCArNDEsMTIgQEAgc3RhdGljIGlubGluZSB2 b2lkIHZnaWNfZ2V0X2lycV9rcmVmKHN0cnVjdCB2Z2ljX2lycSAqaXJxKQo+ICAgICAgIGF0b21p Y19pbmMoJmlycS0+cmVmY291bnQpOwo+ICAgfQo+ICAgCj4gK3ZvaWQgdmdpY192Ml9mb2xkX2xy X3N0YXRlKHN0cnVjdCB2Y3B1ICp2Y3B1KTsKPiArdm9pZCB2Z2ljX3YyX3BvcHVsYXRlX2xyKHN0 cnVjdCB2Y3B1ICp2Y3B1LCBzdHJ1Y3QgdmdpY19pcnEgKmlycSwgaW50IGxyKTsKPiArdm9pZCB2 Z2ljX3YyX2NsZWFyX2xyKHN0cnVjdCB2Y3B1ICp2Y3B1LCBpbnQgbHIpOwo+ICt2b2lkIHZnaWNf djJfc2V0X3VuZGVyZmxvdyhzdHJ1Y3QgdmNwdSAqdmNwdSk7Cj4gKwo+ICt2b2lkIHZnaWNfdjJf c2F2ZV9zdGF0ZShzdHJ1Y3QgdmNwdSAqdmNwdSk7Cj4gK3ZvaWQgdmdpY192Ml9yZXN0b3JlX3N0 YXRlKHN0cnVjdCB2Y3B1ICp2Y3B1KTsKPiArCj4gICAjZW5kaWYKPiAKCkNoZWVycywKCi0tIApK dWxpZW4gR3JhbGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=