From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark yao Subject: Re: [PATCH 1/4] drm/rockchip: Do not use DMA mapping API if attached to IOMMU domain Date: Tue, 7 Feb 2017 16:03:02 +0800 Message-ID: <58997F36.50007@rock-chips.com> References: <1486447776-30543-1-git-send-email-mark.yao@rock-chips.com> <1486447776-30543-2-git-send-email-mark.yao@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from regular1.263xmail.com (regular1.263xmail.com [211.150.99.134]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1E6666E5EB for ; Tue, 7 Feb 2017 08:03:08 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Tomasz Figa Cc: "linux-kernel@vger.kernel.org" , dri-devel , "open list:ARM/Rockchip SoC..." , Shunqian Zheng , "linux-arm-kernel@lists.infradead.org" List-Id: dri-devel@lists.freedesktop.org T24gMjAxN+W5tDAy5pyIMDfml6UgMTQ6NTMsIFRvbWFzeiBGaWdhIHdyb3RlOgo+IEhpIE1hcmss Cj4KPiBUaGFua3MgZm9yIHJldml2aW5nIHRoaXMgc2VyaWVzIGFuZCBzb3JyeSBmb3Igbm90IHRh a2luZyBjYXJlIG9mIGl0Cj4gbXlzZWxmLiBQbGVhc2Ugc2VlIHNvbWUgY29tbWVudHMgaW5saW5l LgoKSGkgVG9tYXN6CgpUaGFua3MgZm9yIHJldmlldywKCkkgd2lsbCBhZGQgdGhlIHBhdGNoZXMg eW91IG1lbnRpb25lZCAgaW50byB2MiB2ZXJzaW9uLgoKPgo+IE9uIFR1ZSwgRmViIDcsIDIwMTcg YXQgMzowOSBQTSwgTWFyayBZYW8gPG1hcmsueWFvQHJvY2stY2hpcHMuY29tPiB3cm90ZToKPj4g RnJvbTogVG9tYXN6IEZpZ2EgPHRmaWdhQGNocm9taXVtLm9yZz4KPj4KPj4gVGhlIEFQSSBpcyBu b3Qgc3VpdGFibGUgZm9yIHN1YnN5c3RlbXMgY29uc2lzdGluZyBvZiBtdWx0aXBsZSBkZXZpY2Vz Cj4+IGFuZCByZXF1aXJlcyBzZXZlcmUgaGFja3MgdG8gdXNlIGl0LiBUbyBtaXRpZ2F0ZSB0aGlz LCB0aGlzIHBhdGNoCj4+IGltcGxlbWVudHMgYWxsb2NhdGlvbiBhbmQgYWRkcmVzcyBzcGFjZSBt YW5hZ2VtZW50IGxvY2FsbHkgYnkgdXNpbmcKPj4gaGVscGVycyBwcm92aWRlZCBieSBEUk0gZnJh bWV3b3JrLCBsaWtlIG90aGVyIERSTSBkcml2ZXJzIGRvLCBlLmcuCj4+IFRlZ3JhLgo+Pgo+PiBU aGlzIHBhdGNoIHNob3VsZCBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdW50 aWwgdGhlIGRyaXZlcgo+PiBpcyBtYWRlIHRvIGF0dGFjaCBzdWJkZXZpY2VzIGludG8gYW4gSU9N TVUgZG9tYWluIHdpdGggdGhlIGdlbmVyaWMgSU9NTVUKPj4gQVBJLCB3aGljaCB3aWxsIGhhcHBl biBpbiBmb2xsb3dpbmcgcGF0Y2guIEJhc2VkIGhlYXZpbHkgb24gR0VNCj4+IGltcGxlbWVudGF0 aW9uIG9mIFRlZ3JhIERSTSBkcml2ZXIuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFRvbWFzeiBGaWdh IDx0ZmlnYUBjaHJvbWl1bS5vcmc+Cj4+IFNpZ25lZC1vZmYtYnk6IFNodW5xaWFuIFpoZW5nIDx6 aGVuZ3NxQHJvY2stY2hpcHMuY29tPgo+PiBBY2tlZC1ieTogTWFyayBZYW8gPG1hcmsueWFvQHJv Y2stY2hpcHMuY29tPgo+IEkgYmVsaWV2ZSB5b3UgbmVlZCB5b3VyIFNpZ25lZC1vZmYtYnkgaGVy ZS4KPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2Ry di5oIHwgICA0ICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9n ZW0uYyB8IDIxNyArKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4+ICAgZHJpdmVycy9ncHUv ZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9nZW0uaCB8ICAgOCArCj4+ICAgMyBmaWxlcyBjaGFu Z2VkLCAyMTkgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9kcnYuaAo+PiBpbmRleCBmYjYyMjZjLi43YzEy M2Q5IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJt X2Rydi5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZHJ2 LmgKPj4gQEAgLTMwLDYgKzMwLDcgQEAKPj4KPj4gICBzdHJ1Y3QgZHJtX2RldmljZTsKPj4gICBz dHJ1Y3QgZHJtX2Nvbm5lY3RvcjsKPj4gK3N0cnVjdCBpb21tdV9kb21haW47Cj4+Cj4+ICAgLyoK Pj4gICAgKiBSb2NrY2hpcCBkcm0gcHJpdmF0ZSBjcnRjIGZ1bmNzLgo+PiBAQCAtNjAsNyArNjEs OCBAQCBzdHJ1Y3Qgcm9ja2NoaXBfZHJtX3ByaXZhdGUgewo+PiAgICAgICAgICBzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKmZiZGV2X2JvOwo+PiAgICAgICAgICBjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBf Y3J0Y19mdW5jcyAqY3J0Y19mdW5jc1tST0NLQ0hJUF9NQVhfQ1JUQ107Cj4+ICAgICAgICAgIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKPj4gLQo+PiArICAgICAgIHN0cnVjdCBpb21t dV9kb21haW4gKmRvbWFpbjsKPj4gKyAgICAgICBzdHJ1Y3QgZHJtX21tIG1tOwo+PiAgICAgICAg ICBzdHJ1Y3QgbGlzdF9oZWFkIHBzcl9saXN0Owo+PiAgICAgICAgICBzcGlubG9ja190IHBzcl9s aXN0X2xvY2s7Cj4+ICAgfTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9kcm1fZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBf ZHJtX2dlbS5jCj4+IGluZGV4IGI3MGY5NDIuLjUyMDkzOTIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9nZW0uYwo+PiBAQCAtMTYsMTEgKzE2LDEzNSBA QAo+PiAgICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+PiAgICNpbmNsdWRlIDxkcm0vZHJtX2dlbS5o Pgo+PiAgICNpbmNsdWRlIDxkcm0vZHJtX3ZtYV9tYW5hZ2VyLmg+Cj4+ICsjaW5jbHVkZSA8bGlu dXgvaW9tbXUuaD4KPj4KPj4gICAjaW5jbHVkZSAicm9ja2NoaXBfZHJtX2Rydi5oIgo+PiAgICNp bmNsdWRlICJyb2NrY2hpcF9kcm1fZ2VtLmgiCj4+Cj4+IC1zdGF0aWMgaW50IHJvY2tjaGlwX2dl bV9hbGxvY19idWYoc3RydWN0IHJvY2tjaGlwX2dlbV9vYmplY3QgKnJrX29iaiwKPj4gK3N0YXRp YyBpbnQgcm9ja2NoaXBfZ2VtX2lvbW11X21hcChzdHJ1Y3Qgcm9ja2NoaXBfZ2VtX29iamVjdCAq cmtfb2JqKQo+PiArewo+PiArICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBya19vYmot PmJhc2UuZGV2Owo+PiArICAgICAgIHN0cnVjdCByb2NrY2hpcF9kcm1fcHJpdmF0ZSAqcHJpdmF0 ZSA9IGRybS0+ZGV2X3ByaXZhdGU7Cj4+ICsgICAgICAgaW50IHByb3QgPSBJT01NVV9SRUFEIHwg SU9NTVVfV1JJVEU7Cj4+ICsgICAgICAgc3NpemVfdCByZXQ7Cj4+ICsKPj4gKyAgICAgICByZXQg PSBkcm1fbW1faW5zZXJ0X25vZGVfZ2VuZXJpYygmcHJpdmF0ZS0+bW0sICZya19vYmotPm1tLAo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJrX29iai0+YmFzZS5z aXplLCBQQUdFX1NJWkUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMCwgMCk7Cj4+ICsgICAgICAgaWYgKHJldCA8IDApIHsKPj4gKyAgICAgICAgICAgICAgIERS TV9FUlJPUigib3V0IG9mIEkvTyB2aXJ0dWFsIG1lbW9yeTogJXpkXG4iLCByZXQpOwo+PiArICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICBya19v YmotPmRtYV9hZGRyID0gcmtfb2JqLT5tbS5zdGFydDsKPj4gKwo+PiArICAgICAgIHJldCA9IGlv bW11X21hcF9zZyhwcml2YXRlLT5kb21haW4sIHJrX29iai0+ZG1hX2FkZHIsIHJrX29iai0+c2d0 LT5zZ2wsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHJrX29iai0+c2d0LT5uZW50cywg cHJvdCk7Cj4+ICsgICAgICAgaWYgKHJldCA8IDApIHsKPj4gKyAgICAgICAgICAgICAgIERSTV9F UlJPUigiZmFpbGVkIHRvIG1hcCBidWZmZXI6ICV6ZFxuIiwgcmV0KTsKPj4gKyAgICAgICAgICAg ICAgIGdvdG8gZXJyX3JlbW92ZV9ub2RlOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIHJr X29iai0+c2l6ZSA9IHJldDsKPj4gKwo+PiArICAgICAgIHJldHVybiAwOwo+PiArCj4+ICtlcnJf cmVtb3ZlX25vZGU6Cj4+ICsgICAgICAgZHJtX21tX3JlbW92ZV9ub2RlKCZya19vYmotPm1tKTsK Pj4gKwo+PiArICAgICAgIHJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgcm9j a2NoaXBfZ2VtX2lvbW11X3VubWFwKHN0cnVjdCByb2NrY2hpcF9nZW1fb2JqZWN0ICpya19vYmop Cj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IHJrX29iai0+YmFzZS5k ZXY7Cj4+ICsgICAgICAgc3RydWN0IHJvY2tjaGlwX2RybV9wcml2YXRlICpwcml2YXRlID0gZHJt LT5kZXZfcHJpdmF0ZTsKPj4gKwo+PiArICAgICAgIGlvbW11X3VubWFwKHByaXZhdGUtPmRvbWFp biwgcmtfb2JqLT5kbWFfYWRkciwgcmtfb2JqLT5zaXplKTsKPj4gKyAgICAgICBkcm1fbW1fcmVt b3ZlX25vZGUoJnJrX29iai0+bW0pOwo+PiArCj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyBpbnQgcm9ja2NoaXBfZ2VtX2dldF9wYWdlcyhzdHJ1Y3Qgcm9ja2NoaXBf Z2VtX29iamVjdCAqcmtfb2JqKQo+PiArewo+PiArICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpk cm0gPSBya19vYmotPmJhc2UuZGV2Owo+PiArICAgICAgIGludCByZXQsIGk7Cj4+ICsgICAgICAg c3RydWN0IHNjYXR0ZXJsaXN0ICpzOwo+PiArCj4+ICsgICAgICAgcmtfb2JqLT5wYWdlcyA9IGRy bV9nZW1fZ2V0X3BhZ2VzKCZya19vYmotPmJhc2UpOwo+PiArICAgICAgIGlmIChJU19FUlIocmtf b2JqLT5wYWdlcykpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihya19vYmotPnBh Z2VzKTsKPj4gKwo+PiArICAgICAgIHJrX29iai0+bnVtX3BhZ2VzID0gcmtfb2JqLT5iYXNlLnNp emUgPj4gUEFHRV9TSElGVDsKPj4gKwo+PiArICAgICAgIHJrX29iai0+c2d0ID0gZHJtX3ByaW1l X3BhZ2VzX3RvX3NnKHJrX29iai0+cGFnZXMsIHJrX29iai0+bnVtX3BhZ2VzKTsKPj4gKyAgICAg ICBpZiAoSVNfRVJSKHJrX29iai0+c2d0KSkgewo+PiArICAgICAgICAgICAgICAgcmV0ID0gUFRS X0VSUihya19vYmotPnNndCk7Cj4+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9wdXRfcGFnZXM7 Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgLyoKPj4gKyAgICAgICAgKiBGYWtlIHVwIHRo ZSBTRyB0YWJsZSBzbyB0aGF0IGRtYV9zeW5jX3NnX2Zvcl9kZXZpY2UoKSBjYW4gYmUgdXNlZAo+ PiArICAgICAgICAqIHRvIGZsdXNoIHRoZSBwYWdlcyBhc3NvY2lhdGVkIHdpdGggaXQuCj4+ICsg ICAgICAgICoKPj4gKyAgICAgICAgKiBUT0RPOiBSZXBsYWNlIHRoaXMgYnkgZHJtX2NsZmx1c2hf c2coKSBvbmNlIGl0IGNhbiBiZSBpbXBsZW1lbnRlZAo+PiArICAgICAgICAqIHdpdGhvdXQgcmVs eWluZyBvbiBzeW1ib2xzIHRoYXQgYXJlIG5vdCBleHBvcnRlZC4KPj4gKyAgICAgICAgKi8KPj4g KyAgICAgICBmb3JfZWFjaF9zZyhya19vYmotPnNndC0+c2dsLCBzLCBya19vYmotPnNndC0+bmVu dHMsIGkpCj4+ICsgICAgICAgICAgICAgICBzZ19kbWFfYWRkcmVzcyhzKSA9IHNnX3BoeXMocyk7 Cj4+ICsKPj4gKyAgICAgICBkbWFfc3luY19zZ19mb3JfZGV2aWNlKGRybS0+ZGV2LCBya19vYmot PnNndC0+c2dsLCBya19vYmotPnNndC0+bmVudHMsCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBETUFfVE9fREVWSUNFKTsKPj4gKwo+PiArICAgICAgIHJldHVybiAwOwo+PiArCj4+ ICtlcnJfcHV0X3BhZ2VzOgo+PiArICAgICAgIGRybV9nZW1fcHV0X3BhZ2VzKCZya19vYmotPmJh c2UsIHJrX29iai0+cGFnZXMsIGZhbHNlLCBmYWxzZSk7Cj4+ICsgICAgICAgcmV0dXJuIHJldDsK Pj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgcm9ja2NoaXBfZ2VtX3B1dF9wYWdlcyhzdHJ1Y3Qg cm9ja2NoaXBfZ2VtX29iamVjdCAqcmtfb2JqKQo+PiArewo+PiArICAgICAgIHNnX2ZyZWVfdGFi bGUocmtfb2JqLT5zZ3QpOwo+PiArICAgICAgIGtmcmVlKHJrX29iai0+c2d0KTsKPj4gKyAgICAg ICBkcm1fZ2VtX3B1dF9wYWdlcygmcmtfb2JqLT5iYXNlLCBya19vYmotPnBhZ2VzLCBmYWxzZSwg ZmFsc2UpOwo+IFdlIG5lZWQgdG8gY2FsbCBkcm1fZ2VtX3B1dF9wYWdlcyB3aXRoIHR3byBsYXN0 IGFyZ3VtZW50cyB0cnVlLCBub3QKPiBmYWxzZSwgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGFueSB3 YXkgb2YgdHJhY2tpbmcgdGhlIGFjY2Vzc2VzLCBzbyB3ZQo+IG5lZWQgdG8gYXNzdW1lIHRoZSBw YWdlIHdhcyBib3RoIGFjY2Vzc2VkIGFuZCBkaXJ0eS4gU2VlCj4gaHR0cHM6Ly9jaHJvbWl1bS1y ZXZpZXcuZ29vZ2xlc291cmNlLmNvbS8zODI5MzQuCj4KPj4gK30KPj4gKwo+PiArc3RhdGljIGlu dCByb2NrY2hpcF9nZW1fYWxsb2NfaW9tbXUoc3RydWN0IHJvY2tjaGlwX2dlbV9vYmplY3QgKnJr X29iaiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbGxvY19r bWFwKQo+PiArewo+PiArICAgICAgIGludCByZXQ7Cj4+ICsKPj4gKyAgICAgICByZXQgPSByb2Nr Y2hpcF9nZW1fZ2V0X3BhZ2VzKHJrX29iaik7Cj4+ICsgICAgICAgaWYgKHJldCA8IDApCj4+ICsg ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+PiArCj4+ICsgICAgICAgcmV0ID0gcm9ja2NoaXBf Z2VtX2lvbW11X21hcChya19vYmopOwo+PiArICAgICAgIGlmIChyZXQgPCAwKQo+PiArICAgICAg ICAgICAgICAgZ290byBlcnJfZnJlZTsKPj4gKwo+PiArICAgICAgIGlmIChhbGxvY19rbWFwKSB7 Cj4+ICsgICAgICAgICAgICAgICBya19vYmotPmt2YWRkciA9IHZtYXAocmtfb2JqLT5wYWdlcywg cmtfb2JqLT5udW1fcGFnZXMsIFZNX01BUCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwZ3Byb3Rfd3JpdGVjb21iaW5lKFBBR0VfS0VSTkVMKSk7Cj4+ICsgICAgICAg ICAgICAgICBpZiAoIXJrX29iai0+a3ZhZGRyKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAg IERSTV9FUlJPUigiZmFpbGVkIHRvIHZtYXAoKSBidWZmZXJcbiIpOwo+PiArICAgICAgICAgICAg ICAgICAgICAgICByZXQgPSAtRU5PTUVNOwo+PiArICAgICAgICAgICAgICAgICAgICAgICBnb3Rv IGVycl91bm1hcDsKPj4gKyAgICAgICAgICAgICAgIH0KPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAg ICAgICByZXR1cm4gMDsKPj4gKwo+PiArZXJyX3VubWFwOgo+PiArICAgICAgIHJvY2tjaGlwX2dl bV9pb21tdV91bm1hcChya19vYmopOwo+PiArZXJyX2ZyZWU6Cj4+ICsgICAgICAgcm9ja2NoaXBf Z2VtX3B1dF9wYWdlcyhya19vYmopOwo+PiArCj4+ICsgICAgICAgcmV0dXJuIHJldDsKPj4gK30K Pj4gKwo+PiArc3RhdGljIGludCByb2NrY2hpcF9nZW1fYWxsb2NfZG1hKHN0cnVjdCByb2NrY2hp cF9nZW1fb2JqZWN0ICpya19vYmosCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYm9vbCBhbGxvY19rbWFwKQo+PiAgIHsKPj4gICAgICAgICAgc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmogPSAmcmtfb2JqLT5iYXNlOwo+PiBAQCAtNDIsNyArMTY2LDI3IEBAIHN0YXRpYyBp bnQgcm9ja2NoaXBfZ2VtX2FsbG9jX2J1ZihzdHJ1Y3Qgcm9ja2NoaXBfZ2VtX29iamVjdCAqcmtf b2JqLAo+PiAgICAgICAgICByZXR1cm4gMDsKPj4gICB9Cj4+Cj4+IC1zdGF0aWMgdm9pZCByb2Nr Y2hpcF9nZW1fZnJlZV9idWYoc3RydWN0IHJvY2tjaGlwX2dlbV9vYmplY3QgKnJrX29iaikKPj4g K3N0YXRpYyBpbnQgcm9ja2NoaXBfZ2VtX2FsbG9jX2J1ZihzdHJ1Y3Qgcm9ja2NoaXBfZ2VtX29i amVjdCAqcmtfb2JqLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBh bGxvY19rbWFwKQo+PiArewo+PiArICAgICAgIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0g JnJrX29iai0+YmFzZTsKPj4gKyAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gb2JqLT5k ZXY7Cj4+ICsgICAgICAgc3RydWN0IHJvY2tjaGlwX2RybV9wcml2YXRlICpwcml2YXRlID0gZHJt LT5kZXZfcHJpdmF0ZTsKPj4gKwo+PiArICAgICAgIGlmIChwcml2YXRlLT5kb21haW4pCj4+ICsg ICAgICAgICAgICAgICByZXR1cm4gcm9ja2NoaXBfZ2VtX2FsbG9jX2lvbW11KHJrX29iaiwgYWxs b2Nfa21hcCk7Cj4+ICsgICAgICAgZWxzZQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIHJvY2tj aGlwX2dlbV9hbGxvY19kbWEocmtfb2JqLCBhbGxvY19rbWFwKTsKPj4gK30KPj4gKwo+PiArc3Rh dGljIHZvaWQgcm9ja2NoaXBfZ2VtX2ZyZWVfaW9tbXUoc3RydWN0IHJvY2tjaGlwX2dlbV9vYmpl Y3QgKnJrX29iaikKPj4gK3sKPj4gKyAgICAgICB2dW5tYXAocmtfb2JqLT5rdmFkZHIpOwo+PiAr ICAgICAgIHJvY2tjaGlwX2dlbV9pb21tdV91bm1hcChya19vYmopOwo+PiArICAgICAgIHJvY2tj aGlwX2dlbV9wdXRfcGFnZXMocmtfb2JqKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgcm9j a2NoaXBfZ2VtX2ZyZWVfZG1hKHN0cnVjdCByb2NrY2hpcF9nZW1fb2JqZWN0ICpya19vYmopCj4+ ICAgewo+PiAgICAgICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9ICZya19vYmotPmJh c2U7Cj4+ICAgICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBvYmotPmRldjsKPj4gQEAg LTUxLDIzICsxOTUsNjQgQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZ2VtX2ZyZWVfYnVmKHN0cnVj dCByb2NrY2hpcF9nZW1fb2JqZWN0ICpya19vYmopCj4+ICAgICAgICAgICAgICAgICAgICAgICAg IHJrX29iai0+ZG1hX2F0dHJzKTsKPj4gICB9Cj4+Cj4+IC1zdGF0aWMgaW50IHJvY2tjaGlwX2Ry bV9nZW1fb2JqZWN0X21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSkKPj4gK3N0YXRpYyB2b2lkIHJvY2tjaGlwX2dlbV9mcmVlX2J1ZihzdHJ1Y3Qgcm9ja2NoaXBf Z2VtX29iamVjdCAqcmtfb2JqKQo+PiArewo+PiArICAgICAgIGlmIChya19vYmotPnBhZ2VzKQo+ PiArICAgICAgICAgICAgICAgcm9ja2NoaXBfZ2VtX2ZyZWVfaW9tbXUocmtfb2JqKTsKPj4gKyAg ICAgICBlbHNlCj4+ICsgICAgICAgICAgICAgICByb2NrY2hpcF9nZW1fZnJlZV9kbWEocmtfb2Jq KTsKPj4gK30KPj4KPj4gK3N0YXRpYyBpbnQgcm9ja2NoaXBfZHJtX2dlbV9vYmplY3RfbW1hcF9p b21tdShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+PiAg IHsKPj4gKyAgICAgICBzdHJ1Y3Qgcm9ja2NoaXBfZ2VtX29iamVjdCAqcmtfb2JqID0gdG9fcm9j a2NoaXBfb2JqKG9iaik7Cj4+ICsgICAgICAgdW5zaWduZWQgaW50IGksIGNvdW50ID0gb2JqLT5z aXplID4+IFBBR0VfU0hJRlQ7Cj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyB1c2VyX2NvdW50ID0g KHZtYS0+dm1fZW5kIC0gdm1hLT52bV9zdGFydCkgPj4gUEFHRV9TSElGVDsKPj4gKyAgICAgICB1 bnNpZ25lZCBsb25nIHVhZGRyID0gdm1hLT52bV9zdGFydDsKPj4gICAgICAgICAgaW50IHJldDsK Pj4gKwo+PiArICAgICAgIGlmICh1c2VyX2NvdW50ID09IDAgfHwgdXNlcl9jb3VudCA+IGNvdW50 KQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTlhJTzsKPj4gKwo+PiArICAgICAgIGZvciAo aSA9IDA7IGkgPCB1c2VyX2NvdW50OyBpKyspIHsKPiBFdmVuIHRob3VnaCBEUk0gbW1hcCBkb2Vz bid0IHN1cHBvcnQgcGFnZSBvZmZzZXQsIHdlIG5lZWQgdG8gcmVzcGVjdAo+IGl0IGhlcmUgZm9y IFBSSU1FL0RNQS1idWYgbW1hcC4gU2VlCj4gaHR0cHM6Ly9jaHJvbWl1bS1yZXZpZXcuZ29vZ2xl c291cmNlLmNvbS8zODY0NzcuCj4KPj4gKyAgICAgICAgICAgICAgIHJldCA9IHZtX2luc2VydF9w YWdlKHZtYSwgdWFkZHIsIHJrX29iai0+cGFnZXNbaV0pOwo+PiArICAgICAgICAgICAgICAgaWYg KHJldCkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4gKyAgICAgICAg ICAgICAgIHVhZGRyICs9IFBBR0VfU0laRTsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICBy ZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCByb2NrY2hpcF9kcm1fZ2VtX29iamVj dF9tbWFwX2RtYShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkK Pj4gK3sKPj4gICAgICAgICAgc3RydWN0IHJvY2tjaGlwX2dlbV9vYmplY3QgKnJrX29iaiA9IHRv X3JvY2tjaGlwX29iaihvYmopOwo+PiAgICAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0g b2JqLT5kZXY7Cj4+Cj4+ICsgICAgICAgcmV0dXJuIGRtYV9tbWFwX2F0dHJzKGRybS0+ZGV2LCB2 bWEsIHJrX29iai0+a3ZhZGRyLCBya19vYmotPmRtYV9hZGRyLAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvYmotPnNpemUsIHJrX29iai0+ZG1hX2F0dHJzKTsKPj4gK30KPj4gKwo+ PiArc3RhdGljIGludCByb2NrY2hpcF9kcm1fZ2VtX29iamVjdF9tbWFwKHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4+ICt7Cj4+ICsgICAgICAgaW50IHJldDsKPj4g KyAgICAgICBzdHJ1Y3Qgcm9ja2NoaXBfZ2VtX29iamVjdCAqcmtfb2JqID0gdG9fcm9ja2NoaXBf b2JqKG9iaik7Cj4+ICsKPj4gICAgICAgICAgLyoKPj4gLSAgICAgICAgKiBkbWFfYWxsb2NfYXR0 cnMoKSBhbGxvY2F0ZWQgYSBzdHJ1Y3QgcGFnZSB0YWJsZSBmb3Igcmtfb2JqLCBzbyBjbGVhcgo+ PiArICAgICAgICAqIFdlIGFsbG9jYXRlZCBhIHN0cnVjdCBwYWdlIHRhYmxlIGZvciBya19vYmos IHNvIGNsZWFyCj4+ICAgICAgICAgICAqIFZNX1BGTk1BUCBmbGFnIHRoYXQgd2FzIHNldCBieSBk cm1fZ2VtX21tYXBfb2JqKCkvZHJtX2dlbV9tbWFwKCkuCj4+ICAgICAgICAgICAqLwo+PiAgICAg ICAgICB2bWEtPnZtX2ZsYWdzICY9IH5WTV9QRk5NQVA7Cj4+ICAgICAgICAgIHZtYS0+dm1fcGdv ZmYgPSAwOwo+Pgo+PiAtICAgICAgIHJldCA9IGRtYV9tbWFwX2F0dHJzKGRybS0+ZGV2LCB2bWEs IHJrX29iai0+a3ZhZGRyLCBya19vYmotPmRtYV9hZGRyLAo+PiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9iai0+c2l6ZSwgcmtfb2JqLT5kbWFfYXR0cnMpOwo+PiArICAgICAgIGlmIChy a19vYmotPnBhZ2VzKQo+PiArICAgICAgICAgICAgICAgcmV0ID0gcm9ja2NoaXBfZHJtX2dlbV9v YmplY3RfbW1hcF9pb21tdShvYmosIHZtYSk7Cj4+ICsgICAgICAgZWxzZQo+PiArICAgICAgICAg ICAgICAgcmV0ID0gcm9ja2NoaXBfZHJtX2dlbV9vYmplY3RfbW1hcF9kbWEob2JqLCB2bWEpOwo+ PiArCj4+ICAgICAgICAgIGlmIChyZXQpCj4+ICAgICAgICAgICAgICAgICAgZHJtX2dlbV92bV9j bG9zZSh2bWEpOwo+Pgo+PiBAQCAtMTE3LDcgKzMwMiw3IEBAIHN0cnVjdCByb2NrY2hpcF9nZW1f b2JqZWN0ICoKPj4KPj4gICAgICAgICAgb2JqID0gJnJrX29iai0+YmFzZTsKPj4KPj4gLSAgICAg ICBkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZHJtLCBvYmosIHNpemUpOwo+PiArICAgICAg IGRybV9nZW1fb2JqZWN0X2luaXQoZHJtLCBvYmosIHNpemUpOwo+IEluIGVycm9yIHBhdGggb2Yg dGhpcyBmdW5jdGlvbiBhbmQgaW4gYWxsIGZ1bmN0aW9ucyB0aGF0IGRlc3Ryb3kgdGhlCj4gR0VN IHdlIG5lZWQgdG8gY2FsbCBkcm1fZ2VtX29iamVjdF9yZWxlYXNlKCksIGFzIGl0J3MgdGhlIGNv dW50ZXJwYXJ0Cj4gdG8gZHJtX2dlbV9vYmplY3RfaW5pdCgpLiBTZWUKPiBodHRwczovL2Nocm9t aXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tLzM4NTQ1Ni4KPgo+IEJlc3QgcmVnYXJkcywKPiBU b21hc3oKPgo+Cj4KCgotLSAK77ytYXJrIFlhbwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo=