From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 58A99C04A6B for ; Fri, 10 May 2019 14:34:47 +0000 (UTC) Received: from mm01.cs.columbia.edu (mm01.cs.columbia.edu [128.59.11.253]) by mail.kernel.org (Postfix) with ESMTP id D39D3216C4 for ; Fri, 10 May 2019 14:34:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D39D3216C4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvmarm-bounces@lists.cs.columbia.edu Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 3E19F4A4D1; Fri, 10 May 2019 10:34:46 -0400 (EDT) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JWiCMOt3IC0H; Fri, 10 May 2019 10:34:44 -0400 (EDT) Received: from mm01.cs.columbia.edu (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id CE0324A456; Fri, 10 May 2019 10:34:44 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id E3A594A3A3 for ; Fri, 10 May 2019 10:34:43 -0400 (EDT) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9d8fBafJ4V8A for ; Fri, 10 May 2019 10:34:42 -0400 (EDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mm01.cs.columbia.edu (Postfix) with ESMTPS id 09B744A389 for ; Fri, 10 May 2019 10:34:42 -0400 (EDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8D5E3285CC; Fri, 10 May 2019 14:34:34 +0000 (UTC) Received: from [10.36.116.17] (ovpn-116-17.ams2.redhat.com [10.36.116.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1A7AD5DE85; Fri, 10 May 2019 14:34:24 +0000 (UTC) Subject: Re: [PATCH v7 12/23] iommu/smmuv3: Get prepared for nested stage support To: Robin Murphy , eric.auger.pro@gmail.com, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu, joro@8bytes.org, alex.williamson@redhat.com, jacob.jun.pan@linux.intel.com, yi.l.liu@intel.com, jean-philippe.brucker@arm.com, will.deacon@arm.com References: <20190408121911.24103-1-eric.auger@redhat.com> <20190408121911.24103-13-eric.auger@redhat.com> <66f873eb-35c0-d1e9-794e-9150dbdb13fe@arm.com> From: Auger Eric Message-ID: Date: Fri, 10 May 2019 16:34:23 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <66f873eb-35c0-d1e9-794e-9150dbdb13fe@arm.com> Content-Language: en-US X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Fri, 10 May 2019 14:34:38 +0000 (UTC) Cc: kevin.tian@intel.com, vincent.stehle@arm.com, ashok.raj@intel.com, marc.zyngier@arm.com X-BeenThere: kvmarm@lists.cs.columbia.edu X-Mailman-Version: 2.1.14 Precedence: list List-Id: Where KVM/ARM decisions are made List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu SGkgUm9iaW4sCgpPbiA1LzgvMTkgNDoyNCBQTSwgUm9iaW4gTXVycGh5IHdyb3RlOgo+IE9uIDA4 LzA0LzIwMTkgMTM6MTksIEVyaWMgQXVnZXIgd3JvdGU6Cj4+IFRvIGFsbG93IG5lc3RlZCBzdGFn ZSBzdXBwb3J0LCB3ZSBuZWVkIHRvIHN0b3JlIGJvdGgKPj4gc3RhZ2UgMSBhbmQgc3RhZ2UgMiBj b25maWd1cmF0aW9ucyAoYW5kIHJlbW92ZSB0aGUgZm9ybWVyCj4+IHVuaW9uKS4KPj4KPj4gQSBu ZXN0ZWQgc2V0dXAgaXMgY2hhcmFjdGVyaXplZCBieSBib3RoIHMxX2NmZyBhbmQgczJfY2ZnCj4+ IHNldC4KPj4KPj4gV2UgaW50cm9kdWNlIGEgbmV3IHN0ZS5hYm9ydCBmaWVsZCB0aGF0IHdpbGwg YmUgc2V0IHVwb24KPj4gZ3Vlc3Qgc3RhZ2UxIGNvbmZpZ3VyYXRpb24gcGFzc2luZy4gSWYgczFf Y2ZnIGlzIE5VTEwgYW5kCj4+IHN0ZS5hYm9ydCBpcyBzZXQsIHRyYWZmaWMgY2FuJ3QgcGFzcy4g SWYgc3RlLmFib3J0IGlzIG5vdCBzZXQsCj4+IFMxIGlzIGJ5cGFzc2VkLgo+Pgo+PiBhcm1fc21t dV93cml0ZV9zdHJ0YWJfZW50KCkgaXMgbW9kaWZpZWQgdG8gd3JpdGUgYm90aCBzdGFnZQo+PiBm aWVsZHMgaW4gdGhlIFNURSBhbmQgZGVhbCB3aXRoIHRoZSBhYm9ydCBmaWVsZC4KPj4KPj4gSW4g bmVzdGVkIG1vZGUsIG9ubHkgc3RhZ2UgMiBpcyAiZmluYWxpemVkIiBhcyB0aGUgaG9zdCBkb2Vz Cj4+IG5vdCBvd24vY29uZmlndXJlIHRoZSBzdGFnZSAxIGNvbnRleHQgZGVzY3JpcHRvciwgZ3Vl c3QgZG9lcy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogRXJpYyBBdWdlciA8ZXJpYy5hdWdlckByZWRo YXQuY29tPgo+Pgo+PiAtLS0KPj4KPj4gdjQgLT4gdjU6Cj4+IC0gcmVzZXQgc3RlLmFib3J0IG9u IGRldGFjaAo+Pgo+PiB2MyAtPiB2NDoKPj4gLSBzMV9jZmcubmVzdGVkX2Fib3J0IGFuZCBuZXN0 ZWRfYnlwYXNzIHJlbW92ZWQuCj4+IC0gcy9zdGUubmVzdGVkL3N0ZS5hYm9ydAo+PiAtIGFybV9z bW11X3dyaXRlX3N0cnRhYl9lbnQgbW9kaWZpY2F0aW9ucyB3aXRoIGludHJvZHVjdGlvbgo+PiDC oMKgIG9mIGxvY2FsIGFib3J0LCBieXBhc3MgYW5kIHRyYW5zbGF0ZSBsb2NhbCB2YXJpYWJsZXMK Pj4gLSBjb21tZW50IHVwZGF0ZWQKPj4KPj4gdjEgLT4gdjI6Cj4+IC0gaW52YWxpZGF0ZSB0aGUg U1RFIGJlZm9yZSBtb3ZpbmcgZnJvbSBhIGxpdmUgU1RFIGNvbmZpZyB0byBhbm90aGVyCj4+IC0g YWRkIHRoZSBuZXN0ZWRfYWJvcnQgYW5kIG5lc3RlZF9ieXBhc3MgZmllbGRzCj4+IC0tLQo+PiDC oCBkcml2ZXJzL2lvbW11L2FybS1zbW11LXYzLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLQo+PiDCoCAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMTUg ZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FybS1zbW11LXYz LmMgYi9kcml2ZXJzL2lvbW11L2FybS1zbW11LXYzLmMKPj4gaW5kZXggMjFkMDI3Njk1MTgxLi5l MjJlOTQ0ZmZjMDUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUtdjMuYwo+ PiArKysgYi9kcml2ZXJzL2lvbW11L2FybS1zbW11LXYzLmMKPj4gQEAgLTIxMSw2ICsyMTEsNyBA QAo+PiDCoCAjZGVmaW5lIFNUUlRBQl9TVEVfMF9DRkdfQllQQVNTwqDCoMKgwqDCoMKgwqAgNAo+ PiDCoCAjZGVmaW5lIFNUUlRBQl9TVEVfMF9DRkdfUzFfVFJBTlPCoMKgwqAgNQo+PiDCoCAjZGVm aW5lIFNUUlRBQl9TVEVfMF9DRkdfUzJfVFJBTlPCoMKgwqAgNgo+PiArI2RlZmluZSBTVFJUQUJf U1RFXzBfQ0ZHX05FU1RFRMKgwqDCoMKgwqDCoMKgIDcKPj4gwqAgwqAgI2RlZmluZSBTVFJUQUJf U1RFXzBfUzFGTVTCoMKgwqDCoMKgwqDCoCBHRU5NQVNLX1VMTCg1LCA0KQo+PiDCoCAjZGVmaW5l IFNUUlRBQl9TVEVfMF9TMUZNVF9MSU5FQVLCoMKgwqAgMAo+PiBAQCAtNTE0LDYgKzUxNSw3IEBA IHN0cnVjdCBhcm1fc21tdV9zdHJ0YWJfZW50IHsKPj4gwqDCoMKgwqDCoMKgICogY29uZmlndXJl ZCBhY2NvcmRpbmcgdG8gdGhlIGRvbWFpbiB0eXBlLgo+PiDCoMKgwqDCoMKgwqAgKi8KPj4gwqDC oMKgwqDCoCBib29swqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzc2lnbmVkOwo+PiAr wqDCoMKgIGJvb2zCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWJvcnQ7Cj4+IMKgwqDC oMKgwqAgc3RydWN0IGFybV9zbW11X3MxX2NmZ8KgwqDCoMKgwqDCoMKgICpzMV9jZmc7Cj4+IMKg wqDCoMKgwqAgc3RydWN0IGFybV9zbW11X3MyX2NmZ8KgwqDCoMKgwqDCoMKgICpzMl9jZmc7Cj4+ IMKgIH07Cj4+IEBAIC02MjgsMTAgKzYzMCw4IEBAIHN0cnVjdCBhcm1fc21tdV9kb21haW4gewo+ PiDCoMKgwqDCoMKgIGJvb2zCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbm9uX3N0cmlj dDsKPj4gwqAgwqDCoMKgwqDCoCBlbnVtIGFybV9zbW11X2RvbWFpbl9zdGFnZcKgwqDCoCBzdGFn ZTsKPj4gLcKgwqDCoCB1bmlvbiB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYXJtX3NtbXVf czFfY2ZnwqDCoMKgIHMxX2NmZzsKPj4gLcKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhcm1fc21tdV9z Ml9jZmfCoMKgwqAgczJfY2ZnOwo+PiAtwqDCoMKgIH07Cj4+ICvCoMKgwqAgc3RydWN0IGFybV9z bW11X3MxX2NmZ8KgwqDCoCBzMV9jZmc7Cj4+ICvCoMKgwqAgc3RydWN0IGFybV9zbW11X3MyX2Nm Z8KgwqDCoCBzMl9jZmc7Cj4+IMKgIMKgwqDCoMKgwqAgc3RydWN0IGlvbW11X2RvbWFpbsKgwqDC oMKgwqDCoMKgIGRvbWFpbjsKPj4gwqAgQEAgLTExMDgsMTIgKzExMDgsMTMgQEAgc3RhdGljIHZv aWQgYXJtX3NtbXVfd3JpdGVfc3RydGFiX2VudChzdHJ1Y3QKPj4gYXJtX3NtbXVfZGV2aWNlICpz bW11LCB1MzIgc2lkLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIF9fbGU2NCAqZHN0LCBzdHJ1Y3QgYXJtX3NtbXVfc3RydGFiX2VudCAqc3RlKQo+PiDC oCB7Cj4+IMKgwqDCoMKgwqAgLyoKPj4gLcKgwqDCoMKgICogVGhpcyBpcyBoaWRlb3VzbHkgY29t cGxpY2F0ZWQsIGJ1dCB3ZSBvbmx5IHJlYWxseSBjYXJlIGFib3V0Cj4+IC3CoMKgwqDCoCAqIHRo cmVlIGNhc2VzIGF0IHRoZSBtb21lbnQ6Cj4+ICvCoMKgwqDCoCAqIFdlIGNhcmUgYWJvdXQgdGhl IGZvbGxvd2luZyB0cmFuc2l0aW9uczoKPj4gwqDCoMKgwqDCoMKgICoKPj4gwqDCoMKgwqDCoMKg ICogMS4gSW52YWxpZCAoYWxsIHplcm8pIC0+IGJ5cGFzcy9mYXVsdCAoaW5pdCkKPj4gLcKgwqDC oMKgICogMi4gQnlwYXNzL2ZhdWx0IC0+IHRyYW5zbGF0aW9uL2J5cGFzcyAoYXR0YWNoKQo+PiAt wqDCoMKgwqAgKiAzLiBUcmFuc2xhdGlvbi9ieXBhc3MgLT4gYnlwYXNzL2ZhdWx0IChkZXRhY2gp Cj4+ICvCoMKgwqDCoCAqIDIuIEJ5cGFzcy9mYXVsdCAtPiBzaW5nbGUgc3RhZ2UgdHJhbnNsYXRp b24vYnlwYXNzIChhdHRhY2gpCj4+ICvCoMKgwqDCoCAqIDMuIHNpbmdsZSBzdGFnZSBUcmFuc2xh dGlvbi9ieXBhc3MgLT4gYnlwYXNzL2ZhdWx0IChkZXRhY2gpCj4+ICvCoMKgwqDCoCAqIDQuIFMy IC0+IFMxICsgUzIgKGF0dGFjaF9wYXNpZF90YWJsZSkKPj4gK8KgwqDCoMKgICogNS4gUzEgKyBT MiAtPiBTMiAoZGV0YWNoX3Bhc2lkX3RhYmxlKQo+PiDCoMKgwqDCoMKgwqAgKgo+PiDCoMKgwqDC oMKgwqAgKiBHaXZlbiB0aGF0IHdlIGNhbid0IHVwZGF0ZSB0aGUgU1RFIGF0b21pY2FsbHkgYW5k IHRoZSBTTU1VCj4+IMKgwqDCoMKgwqDCoCAqIGRvZXNuJ3QgcmVhZCB0aGUgdGhpbmcgaW4gYSBk ZWZpbmVkIG9yZGVyLCB0aGF0IGxlYXZlcyB1cwo+PiBAQCAtMTEyNCw3ICsxMTI1LDcgQEAgc3Rh dGljIHZvaWQgYXJtX3NtbXVfd3JpdGVfc3RydGFiX2VudChzdHJ1Y3QKPj4gYXJtX3NtbXVfZGV2 aWNlICpzbW11LCB1MzIgc2lkLAo+PiDCoMKgwqDCoMKgwqAgKiAzLiBVcGRhdGUgQ29uZmlnLCBz eW5jCj4+IMKgwqDCoMKgwqDCoCAqLwo+PiDCoMKgwqDCoMKgIHU2NCB2YWwgPSBsZTY0X3RvX2Nw dShkc3RbMF0pOwo+PiAtwqDCoMKgIGJvb2wgc3RlX2xpdmUgPSBmYWxzZTsKPj4gK8KgwqDCoCBi b29sIGFib3J0LCBieXBhc3MsIHRyYW5zbGF0ZSwgc3RlX2xpdmUgPSBmYWxzZTsKPj4gwqDCoMKg wqDCoCBzdHJ1Y3QgYXJtX3NtbXVfY21kcV9lbnQgcHJlZmV0Y2hfY21kID0gewo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgLm9wY29kZcKgwqDCoMKgwqDCoMKgID0gQ01EUV9PUF9QUkVGRVRDSF9DRkcs Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAucHJlZmV0Y2jCoMKgwqAgPSB7Cj4+IEBAIC0xMTM4LDEx ICsxMTM5LDExIEBAIHN0YXRpYyB2b2lkIGFybV9zbW11X3dyaXRlX3N0cnRhYl9lbnQoc3RydWN0 Cj4+IGFybV9zbW11X2RldmljZSAqc21tdSwgdTMyIHNpZCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYnJlYWs7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIFNUUlRBQl9TVEVfMF9D RkdfUzFfVFJBTlM6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIFNUUlRBQl9TVEVfMF9DRkdf UzJfVFJBTlM6Cj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIFNUUlRBQl9TVEVfMF9DRkdfTkVTVEVE Ogo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdGVfbGl2ZSA9IHRydWU7Cj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBT VFJUQUJfU1RFXzBfQ0ZHX0FCT1JUOgo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZGlz YWJsZV9ieXBhc3MpCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZGVm YXVsdDoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQlVHKCk7IC8qIFNURSBjb3JydXB0 aW9uICovCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IEBAIC0xMTUyLDggKzExNTMsMTMgQEAg c3RhdGljIHZvaWQgYXJtX3NtbXVfd3JpdGVfc3RydGFiX2VudChzdHJ1Y3QKPj4gYXJtX3NtbXVf ZGV2aWNlICpzbW11LCB1MzIgc2lkLAo+PiDCoMKgwqDCoMKgIHZhbCA9IFNUUlRBQl9TVEVfMF9W Owo+PiDCoCDCoMKgwqDCoMKgIC8qIEJ5cGFzcy9mYXVsdCAqLwo+PiAtwqDCoMKgIGlmICghc3Rl LT5hc3NpZ25lZCB8fCAhKHN0ZS0+czFfY2ZnIHx8IHN0ZS0+czJfY2ZnKSkgewo+PiAtwqDCoMKg wqDCoMKgwqAgaWYgKCFzdGUtPmFzc2lnbmVkICYmIGRpc2FibGVfYnlwYXNzKQo+PiArCj4+ICvC oMKgwqAgYWJvcnQgPSAoIXN0ZS0+YXNzaWduZWQgJiYgZGlzYWJsZV9ieXBhc3MpIHx8IHN0ZS0+ YWJvcnQ7Cj4+ICvCoMKgwqAgdHJhbnNsYXRlID0gc3RlLT5zMV9jZmcgfHwgc3RlLT5zMl9jZmc7 Cj4+ICvCoMKgwqAgYnlwYXNzID0gIWFib3J0ICYmICF0cmFuc2xhdGU7Cj4+ICsKPj4gK8KgwqDC oCBpZiAoYWJvcnQgfHwgYnlwYXNzKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoYWJvcnQpCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZhbCB8PSBGSUVMRF9QUkVQKFNUUlRBQl9TVEVf MF9DRkcsCj4+IFNUUlRBQl9TVEVfMF9DRkdfQUJPUlQpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg ZWxzZQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2YWwgfD0gRklFTERfUFJFUChTVFJU QUJfU1RFXzBfQ0ZHLAo+PiBTVFJUQUJfU1RFXzBfQ0ZHX0JZUEFTUyk7Cj4+IEBAIC0xMTcyLDcg KzExNzgsNiBAQCBzdGF0aWMgdm9pZCBhcm1fc21tdV93cml0ZV9zdHJ0YWJfZW50KHN0cnVjdAo+ PiBhcm1fc21tdV9kZXZpY2UgKnNtbXUsIHUzMiBzaWQsCj4+IMKgwqDCoMKgwqAgfQo+PiDCoCDC oMKgwqDCoMKgIGlmIChzdGUtPnMxX2NmZykgewo+PiAtwqDCoMKgwqDCoMKgwqAgQlVHX09OKHN0 ZV9saXZlKTsKPiAKPiBIbW0sIEknbSBhIGxpdHRsZSB1bmVhc3kgYWJvdXQganVzdCByZW1vdmlu ZyB0aGVzZSBjaGVja3MgYWx0b2dldGhlciwgYXMKPiB0aGVyZSBhcmUgc3RpbGwgY2FzZXMgd2hl cmUgcmV3cml0aW5nIGEgbGl2ZSBlbnRyeSBpcyBib2d1cywgdGhhdCB3ZSdkCj4gcmVhbGx5IGxp a2UgdG8ga2VlcCBjYXRjaGluZy4gSXMgdGhlIHByb2JsZW0gdGhhdCBpdCdzIGhhcmQgdG8gdGVs bCB3aGVuCj4geW91J3JlICdyZXdyaXRpbmcnIHRoZSBTMiBjb25maWcgb2YgYSBuZXN0ZWQgZW50 cnkgd2l0aCB0aGUgc2FtZSB0aGluZwo+IG9uIGF0dGFjaGluZy9kZXRhY2hpbmcgaXRzIFMxIGNv bnRleHQ/Ck5vLCBJIHJlc3RvcmVkIHRoZSBvcmlnaW5hbCBjaGVja3MgaW4gIW5lc3RlZCBtb2Rl IGFuZCBhZGRlZCBhIG5ldyBjaGVjawp0byBtYWtlIHN1cmUgd2UgbmV2ZXIgdXBkYXRlIGEgbGl2 ZSBTMSBpbiBuZXN0ZWQgbW9kZS4gT25seSBTMiBjYW4gYmUgbGl2ZS4KClRoYW5rcwoKRXJpYwo+ IAo+IFJvYmluLgo+IAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZHN0WzFdID0gY3B1X3RvX2xlNjQo Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChTVFJUQUJfU1RFXzFf UzFDSVIsCj4+IFNUUlRBQl9TVEVfMV9TMUNfQ0FDSEVfV0JSQSkgfAo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAoU1RSVEFCX1NURV8xX1MxQ09SLAo+PiBTVFJUQUJf U1RFXzFfUzFDX0NBQ0hFX1dCUkEpIHwKPj4gQEAgLTExOTEsNyArMTE5Niw2IEBAIHN0YXRpYyB2 b2lkIGFybV9zbW11X3dyaXRlX3N0cnRhYl9lbnQoc3RydWN0Cj4+IGFybV9zbW11X2RldmljZSAq c21tdSwgdTMyIHNpZCwKPj4gwqDCoMKgwqDCoCB9Cj4+IMKgIMKgwqDCoMKgwqAgaWYgKHN0ZS0+ czJfY2ZnKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBCVUdfT04oc3RlX2xpdmUpOwo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgZHN0WzJdID0gY3B1X3RvX2xlNjQoCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgRklFTERfUFJFUChTVFJUQUJfU1RFXzJfUzJWTUlELCBzdGUtPnMyX2NmZy0+dm1p ZCkgfAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAoU1RSVEFCX1NU RV8yX1ZUQ1IsIHN0ZS0+czJfY2ZnLT52dGNyKSB8Cj4+IEBAIC0xNzczLDYgKzE3NzcsNyBAQCBz dGF0aWMgdm9pZCBhcm1fc21tdV9kZXRhY2hfZGV2KHN0cnVjdCBkZXZpY2UgKmRldikKPj4gwqDC oMKgwqDCoCB9Cj4+IMKgIMKgwqDCoMKgwqAgbWFzdGVyLT5zdGUuYXNzaWduZWQgPSBmYWxzZTsK Pj4gK8KgwqDCoCBtYXN0ZXItPnN0ZS5hYm9ydCA9IGZhbHNlOwo+PiDCoMKgwqDCoMKgIGFybV9z bW11X2luc3RhbGxfc3RlX2Zvcl9kZXYoZndzcGVjKTsKPj4gwqAgfQo+PiDCoApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwprdm1hcm0gbWFpbGluZyBsaXN0 Cmt2bWFybUBsaXN0cy5jcy5jb2x1bWJpYS5lZHUKaHR0cHM6Ly9saXN0cy5jcy5jb2x1bWJpYS5l ZHUvbWFpbG1hbi9saXN0aW5mby9rdm1hcm0K