From mboxrd@z Thu Jan 1 00:00:00 1970 From: Szymon Andrzejuk Subject: Re: [PATCH] drm/vgem: Added page prefaulting Date: Thu, 5 Sep 2019 14:44:05 +0200 Message-ID: References: <20190820065830.GA11255@AMDC3964.digital.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by gabe.freedesktop.org (Postfix) with ESMTPS id AA5D96E027 for ; Thu, 5 Sep 2019 12:44:11 +0000 (UTC) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20190905124409euoutp025a451e30d357b06545337f0c9601753e~Bi24F_OpI0919709197euoutp02E for ; Thu, 5 Sep 2019 12:44:09 +0000 (GMT) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Andrzej Hajda , dri-devel@lists.freedesktop.org Cc: p.rak@samsung.com, Deepak Sharma , David Airlie , andrzejuk.szymon@gmail.com, Sean Paul , Emil Velikov List-Id: dri-devel@lists.freedesktop.org VGhhbmsgeW91IGZvciB0aGUgcmV2aWV3IEFuZHJ6ZWouIEknbGwgdXBkYXRlIHRoZSBwYXRjaCB0 byB2MiBzaG9ydGx5LCBpdCBzaG91bGQKY292ZXIgYWxsIHlvdXIgY29tbWVudHMuCgpGWUksIEkn bGwgYmUgb24gaG9saWRheSB1bnRpbCBTZXB0ZW1iZXIgMTYgc28gSSBtaWdodCBub3QgYmUgYWJs ZSB0byByZXNwb25kIGluIHRoZQpmb2xsb3dpbmcgZGF5cy4KClJlZ2FyZHMsClN6eW1vbgoKT24g MDMuMDkuMjAxOSAxNToxOSwgQW5kcnplaiBIYWpkYSB3cm90ZToKPiArQ0M6ICQoLi9zY3JpcHQv Z2V0X21haW50YWluZXJzLnBsIGRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmMpCj4KPgo+ IE9uIDIwLjA4LjIwMTkgMDg6NTgsIFN6eW1vbiBBbmRyemVqdWsgd3JvdGU6Cj4+IFBhZ2UgZmF1 bHQgaGFuZGxlciBpbnNpZGUgdmdlbSBkcml2ZXIgbm93IHByZWFsbG9jYXRlcyBwYWdlcyBpbiBh ZHZhbmNlCj4+IHdoZW4gZmF1bHQgb2NjdXJzIGZvciB0aGUgZmlyc3QgdGltZS4gUGFnZXMgY2Fu IGJlIGFsbG9jYXRlZCBpbgo+PiBkaXJlY3Rpb24gb2YgaW5jcmVhc2luZy9kZWNyZWFzaW5nIGFk ZHJlc3NlcywgZGVwZW5kaW5nIG9uIG1lbW9yeSBhY2Nlc3MKPj4gcHJvZmlsZS4gSW4gY2FzZSBv ZiByYW5kb20gYWNjZXNzIG5vIHByZWFsbG9jYXRpb24gb2NjdXJzLgo+Pgo+PiBTeW50aGV0aWMg YmVuY2htYXJrIHNob3dlZCBvdmVyIDh4IGJhbmR3aWR0aCBpbmNyZWFzZSB3aGVuIGNvcHlpbmcg ZGF0YQo+PiBmcm9tIG1tYXBwZWQgdmdlbSBidWZmZXIgd2l0aCBtZW1jcHkgYW5kIH4xNjAgdGlt ZXMgd2hlbiBhY2Nlc3NpbmcgbWFwcGVkCj4+IGJ1ZmZlciBzZXF1ZW50aWFsbHkuIENvbXBpbGVk IHdpdGggZ2NjIDguMi4wIHdpdGggLU8yIGZsYWcuCj4+IFVuaWdpbmUgSGVhdmVuIHJ1bm5pbmcg b24gY3VzdG9tIHZpcmdsIHZ0ZXN0IHZpcnR1YWwgR1BVIHdpdGggdmdlbSBidWZmZXJzCj4+IHNl ZXMgfjE3JSBGUFMgaW5jcmVhc2UuCj4+Cj4+IFRoaXMgcGVyZm9ybWFuY2UgaW5jcmVhc2Ugb25s eSBvY2N1cnMgd2hlbiBhY2Nlc3NpbmcgdmdlbSBidWZmZXIgbWFwcGVkCj4+IHVzaW5nIERSTV9J T0NUTF9NT0RFX01BUF9EVU1CIGlvY3RsLiBXaGVuIGFjY2Vzc2luZyBidWZmZXIgaW1wb3J0ZWQK Pj4gZnJvbSBwcmltZSBmZCB0aGUgdmdlbSBwYWdlIGZhdWx0IGhhbmRsZXIgaXMgbm90IGludm9r ZWQuIEl0J3MgYWR2aXNlZAo+PiB0byB1c2UgdmVjdG9yIHN0cmVhbWluZyBjb3B5IGluc3RydWN0 aW9ucyBhbmQgYXZvaWQgc2VxdWVudGlhbCBhY2Nlc3Nlcwo+PiBpbiB0aGlzIGNhc2UuIFN0cmVh bWluZyBjb3B5IGJyaW5ncyB0aGUgcGVyZm9ybWFuY2UgdG8gYmUgb24gcGFyIHdpdGgKPj4gc2lt aWxhciBidWZmZXIgYWxsb2NhdGVkIHdpdGggbWVtZmRfY3JlYXRlKDIpIHN5c2NhbGwuCj4+Cj4+ IFNpZ25lZC1vZmYtYnk6IFN6eW1vbiBBbmRyemVqdWsgPHMuYW5kcnplanVrQHNhbXN1bmcuY29t Pgo+PiAtLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmMgfCAxNzcgKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0KPj4gIDEgZmlsZSBjaGFuZ2VkLCAxNDMgaW5zZXJ0 aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdmdlbS92Z2VtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYwo+PiBp bmRleCAxMWE4Zjk5YmExOGMuLjczOWJhODQxZTg5YyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL3ZnZW0vdmdlbV9kcnYuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2Vt X2Rydi5jCj4+IEBAIC0zNCw2ICszNCw3IEBACj4+ICAjaW5jbHVkZSA8bGludXgvcmFtZnMuaD4K Pj4gICNpbmNsdWRlIDxsaW51eC9zaG1lbV9mcy5oPgo+PiAgI2luY2x1ZGUgPGxpbnV4L2RtYS1i dWYuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9wZm5fdC5oPgo+PiAgI2luY2x1ZGUgInZnZW1fZHJ2 LmgiCj4+ICAKPj4gICNkZWZpbmUgRFJJVkVSX05BTUUJInZnZW0iCj4+IEBAIC01MCw4ICs1MSwy MSBAQCBzdGF0aWMgc3RydWN0IHZnZW1fZGV2aWNlIHsKPj4gIHN0YXRpYyB2b2lkIHZnZW1fZ2Vt X2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQo+PiAgewo+PiAgCXN0cnVj dCBkcm1fdmdlbV9nZW1fb2JqZWN0ICp2Z2VtX29iaiA9IHRvX3ZnZW1fYm8ob2JqKTsKPj4gKwlp bnQgaTsKPj4gKwo+PiArCW11dGV4X2xvY2soJnZnZW1fb2JqLT5wYWdlc19sb2NrKTsKPj4gKwlp ZiAodmdlbV9vYmotPnBhZ2VzKSB7Cj4+ICsJCWludCBudW1fcGFnZXMgPSBvYmotPnNpemUgPj4g UEFHRV9TSElGVDsKPj4gKwo+PiArCQlmb3IgKGkgPSAwOyBpIDwgbnVtX3BhZ2VzOyBpKyspIHsK Pj4gKwkJCWlmICh2Z2VtX29iai0+cGFnZXNbaV0pCj4+ICsJCQkJcHV0X3BhZ2UodmdlbV9vYmot PnBhZ2VzW2ldKTsKPj4gKwkJfQo+PiArCQlrdmZyZWUodmdlbV9vYmotPnBhZ2VzKTsKPj4gKwkJ dmdlbV9vYmotPnBhZ2VzID0gTlVMTDsKPj4gKwl9Cj4+ICsJbXV0ZXhfdW5sb2NrKCZ2Z2VtX29i ai0+cGFnZXNfbG9jayk7Cj4+ICAKPj4gLQlrdmZyZWUodmdlbV9vYmotPnBhZ2VzKTsKPj4gIAlt dXRleF9kZXN0cm95KCZ2Z2VtX29iai0+cGFnZXNfbG9jayk7Cj4+ICAKPj4gIAlpZiAob2JqLT5p bXBvcnRfYXR0YWNoKQo+PiBAQCAtNjEsNiArNzUsNzIgQEAgc3RhdGljIHZvaWQgdmdlbV9nZW1f ZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4+ICAJa2ZyZWUodmdlbV9v YmopOwo+PiAgfQo+PiAgCj4+ICtzdGF0aWMgaW50IF9fdmdlbV9hbGxvY19wYWdlKHN0cnVjdCBw YWdlICpwYWdlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKPj4gKwkJCQkJCQkgdW5zaWdu ZWQgbG9uZyB2YWRkciwgaW50IHBhZ2VfbnVtKQo+Cj4gdW51c2VkIHBhZ2VfbnVtCj4KPgo+PiAr ewo+PiArCXVuc2lnbmVkIGxvbmcgcGZuOwo+PiArCWludCBpbnNlcnRfcmV0Owo+PiArCj4+ICsJ cGZuID0gcGFnZV90b19wZm4ocGFnZSk7Cj4+ICsJaW5zZXJ0X3JldCA9IHZtZl9pbnNlcnRfbWl4 ZWQodm1hLCB2YWRkciwgX19wZm5fdG9fcGZuX3QocGZuLCBQRk5fREVWKSk7Cj4+ICsKPj4gKwlp ZiAoaW5zZXJ0X3JldCAmIFZNX0ZBVUxUX0VSUk9SKQo+PiArCQlyZXR1cm4gVk1fRkFVTFRfRVJS T1I7Cj4KPiBJcyBpdCBPSyB0byByZXR1cm4gbWFzaz8gaW5zdGVhZCBvZiBpbnNlcnRfcmV0Lgo+ Cj4KPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IF9fdmdlbV9y ZWFkX21hcHBpbmdfcGFnZShzdHJ1Y3QgZHJtX3ZnZW1fZ2VtX29iamVjdCAqb2JqLAo+PiArCQkJ CQkJCQkJaW50IHBhZ2VfbnVtLCBzdHJ1Y3QgcGFnZSAqKnBhZ2UpCj4+ICt7Cj4+ICsJaW50IHJl dDsKPj4gKwlzdHJ1Y3QgcGFnZSAqbWFwcGVkX3BhZ2U7Cj4+ICsKPj4gKwltYXBwZWRfcGFnZSA9 IHNobWVtX3JlYWRfbWFwcGluZ19wYWdlKGZpbGVfaW5vZGUob2JqLT5iYXNlLmZpbHApLT5pX21h cHBpbmcsCj4+ICsJCQkJCQkJCQkJICBwYWdlX251bSk7Cj4+ICsJaWYgKElTX0VSUihwYWdlKSkg ewo+PiArCQlzd2l0Y2ggKFBUUl9FUlIocGFnZSkpIHsKPj4gKwkJY2FzZSAtRU5PU1BDOgo+PiAr CQljYXNlIC1FTk9NRU06Cj4+ICsJCQlyZXQgPSBWTV9GQVVMVF9PT007Cj4+ICsJCQlicmVhazsK Pj4gKwkJY2FzZSAtRUJVU1k6Cj4+ICsJCQlyZXQgPSBWTV9GQVVMVF9SRVRSWTsKPj4gKwkJCWJy ZWFrOwo+PiArCQljYXNlIC1FRkFVTFQ6Cj4+ICsJCWNhc2UgLUVJTlZBTDoKPj4gKwkJCXJldCA9 IFZNX0ZBVUxUX1NJR0JVUzsKPj4gKwkJCWJyZWFrOwo+PiArCQlkZWZhdWx0Ogo+PiArCQkJV0FS Tl9PTihQVFJfRVJSKHBhZ2UpKTsKPj4gKwkJCXJldCA9IFZNX0ZBVUxUX1NJR0JVUzsKPj4gKwkJ CWJyZWFrOwo+PiArCQl9Cj4+ICsKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwl9Cj4+ICsKPj4gKwkq cGFnZSA9IG1hcHBlZF9wYWdlOwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMg aW50IF9fdmdlbV9wcmVwYXJlX3NpbmdsZV9wYWdlKHN0cnVjdCBkcm1fdmdlbV9nZW1fb2JqZWN0 ICpvYmosCj4+ICsJCQkJCQkJCQkgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAo+PiArCQkJ CQkJCQkJICBpbnQgcGFnZV9udW0sIHVuc2lnbmVkIGxvbmcgdmFkZHIpCj4+ICt7Cj4+ICsJaW50 IHJldDsKPj4gKwo+PiArCXJldCA9IF9fdmdlbV9yZWFkX21hcHBpbmdfcGFnZShvYmosIHBhZ2Vf bnVtLCAmb2JqLT5wYWdlc1twYWdlX251bV0pOwo+PiArCWlmIChyZXQpCj4+ICsJCXJldHVybiBy ZXQ7Cj4+ICsKPj4gKwlyZXQgPSBfX3ZnZW1fYWxsb2NfcGFnZShvYmotPnBhZ2VzW3BhZ2VfbnVt XSwgdm1hLCB2YWRkciwgcGFnZV9udW0pOwo+PiArCWlmIChyZXQpCj4+ICsJCXJldHVybiByZXQ7 Cj4KPiBPbmUgY2FuIHVzZSByZXR1cm4gX192Z2VtX2FsbG9jX3BhZ2UoLi4uKSwgdXAgdG8geW91 Lgo+Cj4KPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICBzdGF0aWMgdm1fZmF1bHRf dCB2Z2VtX2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKPj4gIHsKPj4gIAlzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHZtZi0+dm1hOwo+PiBAQCAtNzAsNiArMTUwLDggQEAgc3Rh dGljIHZtX2ZhdWx0X3QgdmdlbV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCj4+ICAJ dm1fZmF1bHRfdCByZXQgPSBWTV9GQVVMVF9TSUdCVVM7Cj4+ICAJbG9mZl90IG51bV9wYWdlczsK Pj4gIAlwZ29mZl90IHBhZ2Vfb2Zmc2V0Owo+PiArCWludCBwYWdlX251bSwgcGFnZV9wcmVwX3Jl dDsKPj4gKwljb25zdCBpbnQgUFJFRkFVTFRfUEFHRVMgPSA4Owo+PiAgCXBhZ2Vfb2Zmc2V0ID0g KHZhZGRyIC0gdm1hLT52bV9zdGFydCkgPj4gUEFHRV9TSElGVDsKPj4gIAo+PiAgCW51bV9wYWdl cyA9IERJVl9ST1VORF9VUChvYmotPmJhc2Uuc2l6ZSwgUEFHRV9TSVpFKTsKPj4gQEAgLTc3LDQx ICsxNTksNjAgQEAgc3RhdGljIHZtX2ZhdWx0X3QgdmdlbV9nZW1fZmF1bHQoc3RydWN0IHZtX2Zh dWx0ICp2bWYpCj4+ICAJaWYgKHBhZ2Vfb2Zmc2V0ID49IG51bV9wYWdlcykKPj4gIAkJcmV0dXJu IFZNX0ZBVUxUX1NJR0JVUzsKPj4gIAo+PiArCXJldCA9IFZNX0ZBVUxUX05PUEFHRTsKPj4gKwo+ PiAgCW11dGV4X2xvY2soJm9iai0+cGFnZXNfbG9jayk7Cj4+IC0JaWYgKG9iai0+cGFnZXMpIHsK Pj4gLQkJZ2V0X3BhZ2Uob2JqLT5wYWdlc1twYWdlX29mZnNldF0pOwo+PiAtCQl2bWYtPnBhZ2Ug PSBvYmotPnBhZ2VzW3BhZ2Vfb2Zmc2V0XTsKPj4gLQkJcmV0ID0gMDsKPj4gLQl9Cj4+IC0JbXV0 ZXhfdW5sb2NrKCZvYmotPnBhZ2VzX2xvY2spOwo+PiAtCWlmIChyZXQpIHsKPj4gLQkJc3RydWN0 IHBhZ2UgKnBhZ2U7Cj4+IC0KPj4gLQkJcGFnZSA9IHNobWVtX3JlYWRfbWFwcGluZ19wYWdlKAo+ PiAtCQkJCQlmaWxlX2lub2RlKG9iai0+YmFzZS5maWxwKS0+aV9tYXBwaW5nLAo+PiAtCQkJCQlw YWdlX29mZnNldCk7Cj4+IC0JCWlmICghSVNfRVJSKHBhZ2UpKSB7Cj4+IC0JCQl2bWYtPnBhZ2Ug PSBwYWdlOwo+PiAtCQkJcmV0ID0gMDsKPj4gLQkJfSBlbHNlIHN3aXRjaCAoUFRSX0VSUihwYWdl KSkgewo+PiAtCQkJY2FzZSAtRU5PU1BDOgo+PiAtCQkJY2FzZSAtRU5PTUVNOgo+PiAtCQkJCXJl dCA9IFZNX0ZBVUxUX09PTTsKPj4gLQkJCQlicmVhazsKPj4gLQkJCWNhc2UgLUVCVVNZOgo+PiAt CQkJCXJldCA9IFZNX0ZBVUxUX1JFVFJZOwo+PiAtCQkJCWJyZWFrOwo+PiAtCQkJY2FzZSAtRUZB VUxUOgo+PiAtCQkJY2FzZSAtRUlOVkFMOgo+PiAtCQkJCXJldCA9IFZNX0ZBVUxUX1NJR0JVUzsK Pj4gLQkJCQlicmVhazsKPj4gLQkJCWRlZmF1bHQ6Cj4+IC0JCQkJV0FSTl9PTihQVFJfRVJSKHBh Z2UpKTsKPj4gLQkJCQlyZXQgPSBWTV9GQVVMVF9TSUdCVVM7Cj4+IC0JCQkJYnJlYWs7Cj4+ICsK Pj4gKwlpZiAobnVtX3BhZ2VzID4gMSkgewo+PiArCQlib29sIGZvcndhcmQgPSB0cnVlOwo+PiAr CQlib29sIHJhbmRvbSA9IGZhbHNlOwo+PiArCj4+ICsJCS8vIERldGVybWluZSBwcmVmYXVsdGlu ZyBkaXJlY3Rpb24uIElmIGFkamFjZW50IHBhZ2VzIGFyZSBib3RoCj4+ICsJCS8vIGFsbG9jYXRl ZC9ub3QgYWxsb2NhdGVkIHRoZW4gd2UgaGF2ZSByYW5kb20gYWNjZXNzLgo+PiArCQkvLyBBbHdh eXMgdHJ5IHRvIHByZWZhdWx0IG9uIGZpcnN0IGFuZCBsYXN0IHBhZ2UuCj4+ICsJCWlmIChwYWdl X29mZnNldCAhPSAwICYmIHBhZ2Vfb2Zmc2V0ICE9IG51bV9wYWdlcyAtIDEpIHsKPj4gKwkJCXN0 cnVjdCBwYWdlICpuZXh0LCAqcHJldjsKPj4gKwo+PiArCQkJbmV4dCA9IG9iai0+cGFnZXNbcGFn ZV9vZmZzZXQgKyAxXTsKPj4gKwkJCXByZXYgPSBvYmotPnBhZ2VzW3BhZ2Vfb2Zmc2V0IC0gMV07 Cj4+ICsJCQlpZiAoISgodWludHB0cl90KW5leHQgXiAodWludHB0cl90KXByZXYpKQo+PiArCQkJ CXJhbmRvbSA9IHRydWU7Cj4+ICsJCQllbHNlIGlmICghcHJldikKPj4gKwkJCQlmb3J3YXJkID0g ZmFsc2U7Cj4+ICsJCX0gZWxzZSB7Cj4+ICsJCQlmb3J3YXJkID0gKHBhZ2Vfb2Zmc2V0ID09IDAp Owo+PiAgCQl9Cj4KPiBRdWl0ZSBjb21wbGljYXRlZCzCoCBtYXliZSBzdGggbGlrZSB0aGlzOgo+ Cj4gwqDCoMKgIGJvb2wgbmV4dCwgcHJldjsKPgo+IMKgwqDCoCBuZXh0ID0gb2JqLT5wYWdlc1tw YWdlX29mZnNldCArIDFdOwo+Cj4gwqDCoMKgIHByZXYgPSBvYmotPnBhZ2VzW3BhZ2Vfb2Zmc2V0 IC0gMV07Cj4KPiDCoMKgwqAgaWYgKHByZXYgPT0gbmV4dCkKPgo+IMKgwqDCoCDCoMKgwqAgcmFu ZG9tID0gdHJ1ZTsKPgo+Cj4+ICAKPj4gKwkJaWYgKCFyYW5kb20pIHsKPj4gKwkJCWZvciAocGFn ZV9udW0gPSBwYWdlX29mZnNldDsKPj4gKwkJCQlmb3J3YXJkID8gcGFnZV9udW0gPCBwYWdlX29m ZnNldCArIFBSRUZBVUxUX1BBR0VTICYmIHBhZ2VfbnVtIDwgbnVtX3BhZ2VzIDoKPj4gKwkJCQlw YWdlX29mZnNldCAtIHBhZ2VfbnVtIDwgUFJFRkFVTFRfUEFHRVMgJiYgcGFnZV9udW0gPj0gMDsK Pj4gKwkJCQlmb3J3YXJkID8gcGFnZV9udW0rKyA6IHBhZ2VfbnVtLS0pIHsKPgo+IEFnYWluIGNv bXBsaWNhdGVkLCB0cnkgcHJlLWNhbGN1bGF0ZSBib3VuZGFyaWVzIGFuZDoKPgo+IHN0YXJ0X3Bh Z2UgPSAuLi47Cj4KPiBlbmRfcGFnZSA9IC4uLjsKPgo+IHN0ZXAgPSBmb3J3YXJkID8gMSA6IC0x Owo+Cj4gZm9yIChwYWdlX251bSA9IHN0YXJ0X3BhZ2U7IHBhZ2VfbnVtIDwgZW5kX3BhZ2U7IHBh Z2VfbnVtICs9IHN0ZXApCj4KPiDCoMKgwqAgLi4uCj4KPgo+PiArCQkJCWlmICghb2JqLT5wYWdl c1twYWdlX251bV0pIHsKPj4gKwkJCQkJcGFnZV9wcmVwX3JldCA9IF9fdmdlbV9wcmVwYXJlX3Np bmdsZV9wYWdlKG9iaiwgdm1hLCBwYWdlX251bSwgdmFkZHIpOwo+PiArCQkJCQlpZiAocGFnZV9w cmVwX3JldCkgewo+PiArCQkJCQkJcmV0ID0gcGFnZV9wcmVwX3JldDsKPj4gKwkJCQkJCWJyZWFr Owo+PiArCQkJCQl9Cj4+ICsJCQkJfSBlbHNlIHsKPj4gKwkJCQkJLy8gcmFuZG9tIGFjY2Vzcywg ZXhpdCBsb29wCj4+ICsJCQkJCWJyZWFrOwo+PiArCQkJCX0KPj4gKwo+PiArCQkJCXZhZGRyID0g dmFkZHIgKyAoZm9yd2FyZCA/IDEgOiAtMSkgKiBQQUdFX1NJWkU7Cj4KPiB2YWRkciArPSBzdGVw ICogUEFHRV9TSVpFOwo+Cj4KPiBSZWdhcmRzCj4KPiBBbmRyemVqCj4KPgo+PiArCQkJfQo+PiAr CQl9IGVsc2Ugewo+PiArCQkJcGFnZV9wcmVwX3JldCA9IF9fdmdlbV9wcmVwYXJlX3NpbmdsZV9w YWdlKG9iaiwgdm1hLCBwYWdlX29mZnNldCwgdmFkZHIpOwo+PiArCQkJaWYgKHBhZ2VfcHJlcF9y ZXQpCj4+ICsJCQkJcmV0ID0gcGFnZV9wcmVwX3JldDsKPj4gKwkJfQo+PiArCX0gZWxzZSB7Cj4+ ICsJCXBhZ2VfcHJlcF9yZXQgPSBfX3ZnZW1fcHJlcGFyZV9zaW5nbGVfcGFnZShvYmosIHZtYSwg cGFnZV9vZmZzZXQsIHZhZGRyKTsKPj4gKwkJaWYgKHBhZ2VfcHJlcF9yZXQpCj4+ICsJCQlyZXQg PSBwYWdlX3ByZXBfcmV0Owo+PiAgCX0KPj4gKwo+PiArCW11dGV4X3VubG9jaygmb2JqLT5wYWdl c19sb2NrKTsKPj4gIAlyZXR1cm4gcmV0Owo+PiAgfQo+PiAgCj4+IEBAIC0xODIsNyArMjgzLDcg QEAgc3RhdGljIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqdmdlbV9nZW1fY3JlYXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4+ICAJCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSkKPj4gIHsK Pj4gIAlzdHJ1Y3QgZHJtX3ZnZW1fZ2VtX29iamVjdCAqb2JqOwo+PiAtCWludCByZXQ7Cj4+ICsJ aW50IHJldCwgbnVtX3BhZ2VzOwo+PiAgCj4+ICAJb2JqID0gX192Z2VtX2dlbV9jcmVhdGUoZGV2 LCBzaXplKTsKPj4gIAlpZiAoSVNfRVJSKG9iaikpCj4+IEBAIC0xOTMsNiArMjk0LDEzIEBAIHN0 YXRpYyBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKnZnZW1fZ2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+PiAgCWlmIChyZXQpCj4+ICAJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4+ICAK Pj4gKwltdXRleF9sb2NrKCZvYmotPnBhZ2VzX2xvY2spOwo+PiArCj4+ICsJbnVtX3BhZ2VzID0g b2JqLT5iYXNlLnNpemUgPj4gUEFHRV9TSElGVDsKPj4gKwlvYmotPnBhZ2VzID0ga3ZjYWxsb2Mo bnVtX3BhZ2VzLCBzaXplb2Yoc3RydWN0IHBhZ2UgKiksIEdGUF9LRVJORUwpOwo+PiArCj4+ICsJ bXV0ZXhfdW5sb2NrKCZvYmotPnBhZ2VzX2xvY2spOwo+PiArCj4+ICAJcmV0dXJuICZvYmotPmJh c2U7Cj4+ICB9Cj4+ICAKPj4gQEAgLTI2Miw3ICszNzAsOCBAQCBzdGF0aWMgaW50IHZnZW1fbW1h cChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4+ICAJLyog S2VlcCB0aGUgV0MgbW1hcGluZyBzZXQgYnkgZHJtX2dlbV9tbWFwKCkgYnV0IG91ciBwYWdlcwo+ PiAgCSAqIGFyZSBvcmRpbmFyeSBhbmQgbm90IHNwZWNpYWwuCj4+ICAJICovCj4+IC0Jdm1hLT52 bV9mbGFncyA9IGZsYWdzIHwgVk1fRE9OVEVYUEFORCB8IFZNX0RPTlREVU1QOwo+PiArCXZtYS0+ dm1fZmxhZ3MgPSBmbGFncyB8IFZNX0RPTlRFWFBBTkQgfCBWTV9ET05URFVNUCB8IFZNX01JWEVE TUFQOwo+PiArCj4+ICAJcmV0dXJuIDA7Cj4+ICB9Cj4+ICAKPj4KPj4KPj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gZHJpLWRldmVsIG1haWxpbmcg bGlzdAo+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4KPgo+Cl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==