From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: Re: [PATCH 2/3] xen netback: add fault injection facility Date: Fri, 20 Apr 2018 14:52:41 +0200 Message-ID: <909fd3b2-19e8-8c13-6ede-cfd6051c6f1d__42004.2073856623$1524228713$gmane$org@amazon.com> References: <20180420104603.17823.31095.stgit@dev-dsk-staskins-1a-ca5afbf2.eu-west-1.amazon.com> <20180420104731.17823.97617.stgit@dev-dsk-staskins-1a-ca5afbf2.eu-west-1.amazon.com> 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.89) (envelope-from ) id 1f9VX3-00085N-4H for xen-devel@lists.xenproject.org; Fri, 20 Apr 2018 12:52:53 +0000 In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Juergen Gross Cc: jakub.kicinski@netronome.com, mcroce@redhat.com, hpa@zytor.com, boris.ostrovsky@oracle.com, daniel@iogearbox.net, x86@kernel.org, mingo@redhat.com, xen-devel@lists.xenproject.org, linux-block@vger.kernel.org, paul.durrant@citrix.com, stefanha@redhat.com, dsa@cumulusnetworks.com, tglx@linutronix.de, ggarcia@abra.uab.cat, axboe@kernel.dk, amir.jer.levy@intel.com, wei.liu2@citrix.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, davem@davemloft.net, dwmw@amazon.co.uk, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org T24gMDQvMjAvMTggMTM6MjUsIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6Cj4gT24gMjAvMDQvMTggMTI6 NDcsIFN0YW5pc2xhdiBLaW5zYnVyc2tpaSB3cm90ZToKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L0tjb25maWcgYi9kcml2ZXJzL25ldC9LY29uZmlnCj4+IGluZGV4IDg5MTg0NjYuLjVjYzlh Y2QgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvbmV0L0tjb25maWcKPj4gKysrIGIvZHJpdmVycy9u ZXQvS2NvbmZpZwo+PiBAQCAtNDY1LDYgKzQ2NSwxNCBAQCBjb25maWcgWEVOX05FVERFVl9CQUNL RU5ECj4+ICAgCSAgY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvc2UgTSBoZXJl OiB0aGUgbW9kdWxlCj4+ICAgCSAgd2lsbCBiZSBjYWxsZWQgeGVuLW5ldGJhY2suCj4+ICAgCj4+ ICtjb25maWcgWEVOX05FVERFVl9CQUNLRU5EX0ZBVUxUX0lOSkVDVElPTgo+PiArCSAgYm9vbCAi WGVuIG5ldC1kZXZpY2UgYmFja2VuZCBkcml2ZXIgZmF1bHQgaW5qZWN0aW9uIgo+PiArCSAgZGVw ZW5kcyBvbiBYRU5fTkVUREVWX0JBQ0tFTkQKPj4gKwkgIGRlcGVuZHMgb24gWEVOX0ZBVUxUX0lO SkVDVElPTgo+PiArCSAgZGVmYXVsdCBuCj4+ICsJICBoZWxwCj4+ICsJICAgIEFsbG93IHRvIGlu amVjdCBlcnJvcnMgdG8gWGVuIGJhY2tlbmQgbmV0d29yayBkcml2ZXIKPj4gKwo+PiAgIGNvbmZp ZyBWTVhORVQzCj4+ICAgCXRyaXN0YXRlICJWTXdhcmUgVk1YTkVUMyBldGhlcm5ldCBkcml2ZXIi Cj4+ICAgCWRlcGVuZHMgb24gUENJICYmIElORVQKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L3hlbi1uZXRiYWNrL01ha2VmaWxlIGIvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svTWFrZWZpbGUK Pj4gaW5kZXggZDQ5Nzk4YS4uMjhhYmNkYyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9uZXQveGVu LW5ldGJhY2svTWFrZWZpbGUKPj4gKysrIGIvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svTWFrZWZp bGUKPj4gQEAgLTEsMyArMSw0IEBACj4+ICAgb2JqLSQoQ09ORklHX1hFTl9ORVRERVZfQkFDS0VO RCkgOj0geGVuLW5ldGJhY2subwo+PiAgIAo+PiAgIHhlbi1uZXRiYWNrLXkgOj0gbmV0YmFjay5v IHhlbmJ1cy5vIGludGVyZmFjZS5vIGhhc2gubyByeC5vCj4+ICt4ZW4tbmV0YmFjay0kKENPTkZJ R19YRU5fTkVUREVWX0JBQ0tFTkRfRkFVTFRfSU5KRUNUSU9OKSArPSBuZXRiYWNrX2ZpLm8KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2NvbW1vbi5oIGIvZHJpdmVycy9u ZXQveGVuLW5ldGJhY2svY29tbW9uLmgKPj4gaW5kZXggYTQ2YTFlOS4uMzBkNjc2ZCAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svY29tbW9uLmgKPj4gKysrIGIvZHJpdmVy cy9uZXQveGVuLW5ldGJhY2svY29tbW9uLmgKPj4gQEAgLTI4Niw2ICsyODYsOSBAQCBzdHJ1Y3Qg eGVudmlmIHsKPj4gICAKPj4gICAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCj4+ICAgCXN0cnVjdCBk ZW50cnkgKnhlbnZpZl9kYmdfcm9vdDsKPj4gKyNpZmRlZiBDT05GSUdfWEVOX05FVERFVl9CQUNL RU5EX0ZBVUxUX0lOSkVDVElPTgo+PiArCXZvaWQgKmZpX2luZm87Cj4+ICsjZW5kaWYKPj4gICAj ZW5kaWYKPj4gICAKPj4gICAJc3RydWN0IHhlbl9uZXRpZl9jdHJsX2JhY2tfcmluZyBjdHJsOwo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jIGIvZHJpdmVy cy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jCj4+IGluZGV4IGEyN2RhYTIuLmVjYzQxNmUgMTAw NjQ0Cj4+IC0tLSBhL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYwo+PiArKysgYi9k cml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMKPj4gQEAgLTMzLDYgKzMzLDcgQEAKPj4g ICAgKi8KPj4gICAKPj4gICAjaW5jbHVkZSAiY29tbW9uLmgiCj4+ICsjaW5jbHVkZSAibmV0YmFj a19maS5oIgo+PiAgIAo+PiAgICNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+Cj4+ICAgI2luY2x1 ZGUgPGxpbnV4L2lmX3ZsYW4uaD4KPj4gQEAgLTE2NDksNiArMTY1MCw3IEBAIHN0YXRpYyBpbnQg X19pbml0IG5ldGJhY2tfaW5pdCh2b2lkKQo+PiAgIAkJCVBUUl9FUlIoeGVuX25ldGJhY2tfZGJn X3Jvb3QpKTsKPj4gICAjZW5kaWYgLyogQ09ORklHX0RFQlVHX0ZTICovCj4+ICAgCj4+ICsJKHZv aWQpIHhlbl9uZXRia19maV9pbml0KCk7Cj4gVGhpcyBpcyB0aGUgb25seSB1c2FnZSBvZiB4ZW5f bmV0YmtfZmlfaW5pdCgpLiBXaHkgZG9uJ3QgeW91IG1ha2UgaXQKPiByZXR1cm4gdm9pZCBmcm9t IHRoZSBiZWdpbm5pbmc/CgpXZWxsLCBJIGNvdWxkIGRvIHNvLCBvZiBjb3Vyc2UuCk15IGludGVu dGlvbiB3YXMgdG8gdHJlYXQgdGhpcyBhcyBhbiBlcnJvci4gQnV0IHRoZW4gaXQgZG9lc24ndCAK Y29ycmVsYXRlIHRvIGlnbm9yZWQgZGVidWdmcyBkaXJlY3RvcnkgY3JlYXRpb24gZXJyb3IgYWJv dmUuCgo+PiAgIAlyZXR1cm4gMDsKPj4gICAKPj4gICBmYWlsZWRfaW5pdDoKPj4gQEAgLTE2NTks NiArMTY2MSw3IEBAIG1vZHVsZV9pbml0KG5ldGJhY2tfaW5pdCk7Cj4+ICAgCj4+ICAgc3RhdGlj IHZvaWQgX19leGl0IG5ldGJhY2tfZmluaSh2b2lkKQo+PiAgIHsKPj4gKwl4ZW5fbmV0YmtfZmlf ZmluaSgpOwo+PiAgICNpZmRlZiBDT05GSUdfREVCVUdfRlMKPj4gICAJaWYgKCFJU19FUlJfT1Jf TlVMTCh4ZW5fbmV0YmFja19kYmdfcm9vdCkpCj4+ICAgCQlkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNp dmUoeGVuX25ldGJhY2tfZGJnX3Jvb3QpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQveGVu LW5ldGJhY2svbmV0YmFja19maS5jIGIvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFja19m aS5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjQ3NTQxZDAKPj4g LS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrX2Zp LmMKPj4gQEAgLTAsMCArMSwxMTkgQEAKPj4gKy8qCj4+ICsgKiBGYXVsdCBpbmplY3Rpb24gaW50 ZXJmYWNlIGZvciBYZW4gYmFja2VuZCBuZXR3b3JrIGRyaXZlcgo+PiArICoKPj4gKyAqIENvcHly aWdodCAyMDE4IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMg UmVzZXJ2ZWQuCj4+ICsgKgo+PiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+PiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyCj4+ICsgKiBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgb3IsIHdoZW4gZGlz dHJpYnV0ZWQKPj4gKyAqIHNlcGFyYXRlbHkgZnJvbSB0aGUgTGludXgga2VybmVsIG9yIGluY29y cG9yYXRlZCBpbnRvIG90aGVyCj4+ICsgKiBzb2Z0d2FyZSBwYWNrYWdlcywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGxpY2Vuc2U6Cj4gU1BEWCBhZ2Fpbi4KCldpbGwgZml4LgoKPgo+PiArICoK Pj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKPj4gKyAqIG9mIHRoaXMgc291cmNlIGZpbGUgKHRo ZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dAo+PiArICogcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwKPj4gKyAqIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLAo+PiArICogYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0bwo+PiArICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+PiArICoKPj4gKyAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo YWxsIGJlIGluY2x1ZGVkIGluCj4+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZSBTb2Z0d2FyZS4KPj4gKyAqCj4+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+PiAr ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKPj4gKyAqIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKPj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT Cj4+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgImNvbW1v bi5oIgo+PiArCj4+ICsjaW5jbHVkZSA8bGludXgvZGVidWdmcy5oPgo+PiArCj4+ICsjaW5jbHVk ZSA8eGVuL2ZhdWx0X2luamVjdC5oPgo+PiArI2luY2x1ZGUgIm5ldGJhY2tfZmkuaCIKPj4gKwo+ PiArc3RhdGljIHN0cnVjdCBkZW50cnkgKnZpZl9maV9kaXI7Cj4+ICsKPj4gK3N0YXRpYyBjb25z dCBjaGFyICp4ZW52aWZfZmlfbmFtZXNbXSA9IHsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCB4ZW52 aWZfZmkgewo+PiArCXN0cnVjdCBkZW50cnkgKmRpcjsKPj4gKwlzdHJ1Y3QgeGVuX2ZpICpmYXVs dHNbWEVOVklGX0ZJX01BWF07Cj4+ICt9Owo+PiArCj4+ICtpbnQgeGVuX25ldGJrX2ZpX2luaXQo dm9pZCkKPj4gK3sKPj4gKwl2aWZfZmlfZGlyID0geGVuX2ZpX2Rpcl9jcmVhdGUoInhlbi1uZXRi YWNrIik7Cj4+ICsJaWYgKCF2aWZfZmlfZGlyKQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4gKwly ZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArdm9pZCB4ZW5fbmV0YmtfZmlfZmluaSh2b2lkKQo+PiAr ewo+PiArCWRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZSh2aWZfZmlfZGlyKTsKPj4gK30KPj4gKwo+ PiArdm9pZCB4ZW52aWZfZmlfZmluaShzdHJ1Y3QgeGVudmlmICp2aWYpCj4+ICt7Cj4+ICsJc3Ry dWN0IHhlbnZpZl9maSAqdmZpID0gdmlmLT5maV9pbmZvOwo+PiArCWludCBmaTsKPj4gKwo+PiAr CWlmICghdmlmLT5maV9pbmZvKQo+PiArCQlyZXR1cm47Cj4+ICsKPj4gKwl2aWYtPmZpX2luZm8g PSBOVUxMOwo+PiArCj4+ICsJZm9yIChmaSA9IDA7IGZpIDwgWEVOVklGX0ZJX01BWDsgZmkrKykK Pj4gKwkJeGVuX2ZpX2RlbCh2ZmktPmZhdWx0c1tmaV0pOwo+PiArCWRlYnVnZnNfcmVtb3ZlX3Jl Y3Vyc2l2ZSh2ZmktPmRpcik7Cj4+ICsJa2ZyZWUodmZpKTsKPj4gK30KPj4gKwo+PiAraW50IHhl bnZpZl9maV9pbml0KHN0cnVjdCB4ZW52aWYgKnZpZikKPj4gK3sKPj4gKwlzdHJ1Y3QgZGVudHJ5 ICpwYXJlbnQ7Cj4+ICsJc3RydWN0IHhlbnZpZl9maSAqdmZpOwo+PiArCWludCBmaSwgZXJyID0g LUVOT01FTTsKPj4gKwo+PiArCXBhcmVudCA9IHZpZl9maV9kaXI7Cj4+ICsJaWYgKCFwYXJlbnQp Cj4+ICsJCXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsJdmZpID0ga21hbGxvYyhzaXplb2YoKnZm aSksIEdGUF9LRVJORUwpOwo+PiArCWlmICghdmZpKQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4g Kwo+PiArCXZmaS0+ZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKHZpZi0+ZGV2LT5uYW1lLCBwYXJl bnQpOwo+PiArCWlmICghdmZpLT5kaXIpCj4+ICsJCWdvdG8gZXJyX2RpcjsKPj4gKwo+PiArCWZv ciAoZmkgPSAwOyBmaSA8IFhFTlZJRl9GSV9NQVg7IGZpKyspIHsKPj4gKwkJdmZpLT5mYXVsdHNb ZmldID0geGVuX2ZpX2Rpcl9hZGQodmZpLT5kaXIsCj4+ICsJCQkJeGVudmlmX2ZpX25hbWVzW2Zp XSk7Cj4gSG93IGRvZXMgdGhpcyB3b3JrPyB4ZW52aWZfZmlfbmFtZXNbXSBpcyBhbiBlbXB0eSBh cnJheSBhbmQgdGhpcyBpcyB0aGUKPiBvbmx5IHJlZmVyZW5jZSB0byBpdC4gV2hvIGlzIGFsbG9j YXRpbmcgdGhlIG1lbW9yeSBmb3IgdGhhdCBhcnJheT8KCldlbGwsIGl0IHdvcmtzIGluIHRoZSB3 YXkgb25lIGFkZHMgYSB2YXIgdG8gZW51bSAod2hpY2ggaXMgdXNlZCBhcyBhIGtleSAKbGF0ZXIp IGFuZCBhIGNvcnJlc3BvbmRpbmcgc3RyaW5nIGludG8gdGhlIGFycmF5ICh3aGljaCBpcyB1c2Vk IGFzIGEgCm5hbWUgZm9yIHRoZSBmYXVsdCBkaXJlY3RvcnkgaW4gc3lzZnMpLgoKPj4gKwkJaWYg KCF2ZmktPmZhdWx0c1tmaV0pCj4+ICsJCQlnb3RvIGVycl9mYXVsdDsKPj4gKwl9Cj4+ICsKPj4g Kwl2aWYtPmZpX2luZm8gPSB2Zmk7Cj4+ICsJcmV0dXJuIDA7Cj4+ICsKPj4gK2Vycl9mYXVsdDoK Pj4gKwlmb3IgKDsgZmkgPiAwOyBmaS0tKQo+PiArCQl4ZW5fZmlfZGVsKHZmaS0+ZmF1bHRzW2Zp XSk7Cj4gV2hhdCBhYm91dCB2ZmktPmZhdWx0c1swXSA/CgpUaGFua3MhIFdpbGwgZml4LgoKCj4+ ICsJZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKHZmaS0+ZGlyKTsKPj4gK2Vycl9kaXI6Cj4+ICsJ a2ZyZWUodmZpKTsKPj4gKwlyZXR1cm4gZXJyOwo+PiArfQo+PiArCj4+ICtib29sIHhlbnZpZl9z aG91bGRfZmFpbChzdHJ1Y3QgeGVudmlmICp2aWYsIHhlbnZpZl9maV90IHR5cGUpCj4+ICt7Cj4+ ICsJc3RydWN0IHhlbnZpZl9maSAqdmZpID0gdmlmLT5maV9pbmZvOwo+PiArCj4+ICsJcmV0dXJu IHhlbl9zaG91bGRfZmFpbCh2ZmktPmZhdWx0c1t0eXBlXSk7Cj4+ICt9Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrX2ZpLmggYi9kcml2ZXJzL25ldC94ZW4t bmV0YmFjay9uZXRiYWNrX2ZpLmgKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAw MDAwMC4uODk1YzZhNgo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvbmV0L3hlbi1u ZXRiYWNrL25ldGJhY2tfZmkuaAo+PiBAQCAtMCwwICsxLDM1IEBACj4+ICsjaWZuZGVmIF9YRU5f TkVUQkFDS19GSV9ICj4+ICsjZGVmaW5lIF9YRU5fTkVUQkFDS19GSV9ICj4+ICsKPj4gK3N0cnVj dCB4ZW5fZmk7Cj4gV2h5PwoKRGl0dG8uCgo+PiArCj4+ICt0eXBlZGVmIGVudW0gewo+PiArCVhF TlZJRl9GSV9NQVgKPj4gK30geGVudmlmX2ZpX3Q7Cj4gSXQgd291bGQgaGF2ZSBoZWxwZWQgaWYg eW91IGhhZCBhZGRlZCBzb21lIHVzZXJzIG9mIHRoZSBzdHVmZiB5b3UgYXJlCj4gYWRkaW5nIGhl cmUuIFRoaXMgZW51bSBqdXN0IGxvb2tzIHdlaXJkIHRoaXMgd2F5Lgo+Cml0IGluIHBsYQpZZWFo Li4uIFByb2JhYmx5IEkgc2hvdWxkIG1hcmsgdGhpcyB0aGluZyBhcyBhIFJGQy4KCj4+ICsKPj4g KyNpZmRlZiBDT05GSUdfWEVOX05FVERFVl9CQUNLRU5EX0ZBVUxUX0lOSkVDVElPTgo+PiArCj4+ ICtpbnQgeGVuX25ldGJrX2ZpX2luaXQodm9pZCk7Cj4+ICt2b2lkIHhlbl9uZXRia19maV9maW5p KHZvaWQpOwo+PiArCj4+ICt2b2lkIHhlbnZpZl9maV9maW5pKHN0cnVjdCB4ZW52aWYgKnZpZik7 Cj4+ICtpbnQgeGVudmlmX2ZpX2luaXQoc3RydWN0IHhlbnZpZiAqdmlmKTsKPj4gKwo+PiArYm9v bCB4ZW52aWZfc2hvdWxkX2ZhaWwoc3RydWN0IHhlbnZpZiAqdmlmLCB4ZW52aWZfZmlfdCB0eXBl KTsKPj4gKwo+PiArI2Vsc2UKPj4gKwo+PiArc3RhdGljIGlubGluZSBpbnQgeGVuX25ldGJrX2Zp X2luaXQodm9pZCkgeyByZXR1cm4gMDsgfQo+PiArc3RhdGljIGlubGluZSB2b2lkIHhlbl9uZXRi a19maV9maW5pKHZvaWQpIHsgfQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgeGVudmlmX2Zp X2Zpbmkoc3RydWN0IHhlbnZpZiAqdmlmKSB7IH0KPj4gK3N0YXRpYyBpbmxpbmUgaW50IHhlbnZp Zl9maV9pbml0KHN0cnVjdCB4ZW52aWYgKnZpZikgeyByZXR1cm4gMDsgfQo+PiArCj4+ICtzdGF0 aWMgaW5saW5lIGJvb2wgeGVudmlmX3Nob3VsZF9mYWlsKHN0cnVjdCB4ZW52aWYgKnZpZiwgeGVu dmlmX2ZpX3QgdHlwZSkKPj4gK3sKPj4gKwlyZXR1cm4gZmFsc2U7Cj4+ICt9Cj4+ICsKPj4gKyNl bmRpZiAvKiBDT05GSUdfWEVOX05FVERFVl9CQUNLRU5EX0ZBVUxUX0lOSkVDVElPTiAqLwo+PiAr Cj4+ICsjZW5kaWYgLyogX1hFTl9ORVRCQUNLX0ZJX0ggKi8KPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L3hlbi1uZXRiYWNrL3hlbmJ1cy5jIGIvZHJpdmVycy9uZXQveGVuLW5ldGJhY2sveGVu YnVzLmMKPj4gaW5kZXggZTFhZWYyNS4uYzc3NWVlMCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9u ZXQveGVuLW5ldGJhY2sveGVuYnVzLmMKPj4gKysrIGIvZHJpdmVycy9uZXQveGVuLW5ldGJhY2sv eGVuYnVzLmMKPj4gQEAgLTIxLDYgKzIxLDcgQEAKPj4gICAjaW5jbHVkZSAiY29tbW9uLmgiCj4+ ICAgI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KPj4gICAjaW5jbHVkZSA8bGludXgvcnRuZXRs aW5rLmg+Cj4+ICsjaW5jbHVkZSAibmV0YmFja19maS5oIgo+PiAgIAo+PiAgIHN0cnVjdCBiYWNr ZW5kX2luZm8gewo+PiAgIAlzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2Owo+PiBAQCAtNTAyLDYg KzUwMyw3IEBAIHN0YXRpYyB2b2lkIGJhY2tlbmRfZGlzY29ubmVjdChzdHJ1Y3QgYmFja2VuZF9p bmZvICpiZSkKPj4gICAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCj4+ICAgCQl4ZW52aWZfZGVidWdm c19kZWxpZih2aWYpOwo+PiAgICNlbmRpZiAvKiBDT05GSUdfREVCVUdfRlMgKi8KPj4gKwkJeGVu dmlmX2ZpX2ZpbmkodmlmKTsKPj4gICAJCXhlbnZpZl9kaXNjb25uZWN0X2RhdGEodmlmKTsKPj4g ICAKPj4gICAJCS8qIEF0IHRoaXMgcG9pbnQgc29tZSBvZiB0aGUgaGFuZGxlcnMgbWF5IHN0aWxs IGJlIGFjdGl2ZQo+PiBAQCAtMTAyNCw2ICsxMDI2LDEwIEBAIHN0YXRpYyB2b2lkIGNvbm5lY3Qo c3RydWN0IGJhY2tlbmRfaW5mbyAqYmUpCj4+ICAgCQl9Cj4+ICAgCX0KPj4gICAKPj4gKwllcnIg PSB4ZW52aWZfZmlfaW5pdChiZS0+dmlmKTsKPj4gKwlpZiAoZXJyKQo+PiArCQlnb3RvIGVycjsK Pj4gKwo+PiAgICNpZmRlZiBDT05GSUdfREVCVUdfRlMKPj4gICAJeGVudmlmX2RlYnVnZnNfYWRk aWYoYmUtPnZpZik7Cj4+ICAgI2VuZGlmIC8qIENPTkZJR19ERUJVR19GUyAqLwo+Pgo+IFdpdGhv dXQgYW55IHVzZXIgb2YgdGhhdCBpbmZyYXN0cnVjdHVyZSBJIHJlYWxseSBjYW4ndCBzYXkgd2hl dGhlciBJCj4gd2FudCB0aGlzLgo+CgpUaGUgY29kZSB3ZSBhcmUgdXNpbmcgdGhpcyBmYXVsdHMg Zm9yIGlzIG5vdCB5ZXQgc2VudCAod2UgaGF2ZSBpdCBpbiBwbGFucykuClByb2JhYmx5IEknbGwg c2VuZCBpdCBvbmNlIGFnYWluIGFmdGVyIHRoaXMgY29kZSB1c2luZyBpdCBpcyBzZW50LgpUaGFu a3MgYW55d2F5IQoKPiBKdWVyZ2VuCj4KCkFtYXpvbiBEZXZlbG9wbWVudCBDZW50ZXIgR2VybWFu eSBHbWJICkJlcmxpbiAtIERyZXNkZW4gLSBBYWNoZW4KbWFpbiBvZmZpY2U6IEtyYXVzZW5zdHIu IDM4LCAxMDExNyBCZXJsaW4KR2VzY2hhZWZ0c2Z1ZWhyZXI6IERyLiBSYWxmIEhlcmJyaWNoLCBD aHJpc3RpYW4gU2NobGFlZ2VyClVzdC1JRDogREUyODkyMzc4NzkKRWluZ2V0cmFnZW4gYW0gQW10 c2dlcmljaHQgQ2hhcmxvdHRlbmJ1cmcgSFJCIDE0OTE3MyBCCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp bG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=