From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/2] drm/vkms: Add PRIME support by converting to Noralf's shmem helpers. Date: Tue, 27 Nov 2018 10:11:39 +0100 Message-ID: <20181127091139.GZ4266@phenom.ffwll.local> References: <20181126215929.20546-1-eric@anholt.net> <20181126215929.20546-2-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id E19B56E079 for ; Tue, 27 Nov 2018 09:11:43 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id h15so18341183edb.4 for ; Tue, 27 Nov 2018 01:11:43 -0800 (PST) Content-Disposition: inline In-Reply-To: <20181126215929.20546-2-eric@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Eric Anholt Cc: Haneen Mohammed , Rodrigo Siqueira , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBOb3YgMjYsIDIwMTggYXQgMDE6NTk6MjlQTSAtMDgwMCwgRXJpYyBBbmhvbHQgd3Jv dGU6Cj4gVGhpcyBjdXRzIG91dCBhIHRyZW1lbmRvdXMgYW1vdW50IG9mIGJvaWxlcnBsYXRlLiAg SSd2ZSB1c2VkIHRoZSBQUklNRQo+IHN1cHBvcnQgbm93IHRvIHRlc3QgVjNEIHJlbmRlcmluZyBv biBhIFNUQiBkZXZlbG9wbWVudCBib2FyZCB3aXRoIG5vCj4gS01TIGRyaXZlci4KPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQubmV0Pgo+IC0tLQo+IAo+IFRoaXMg cGF0Y2ggZGVwZW5kcyBvbiBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvc2VyaWVz LzI3MTg0LwoKTmljZSBzdHVmZi4gQWNrZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0 ZXJAZmZ3bGwuY2g+IG9uIGJvdGguCj4gCj4gIGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnICAgICAg ICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3JjLmMgICB8ICAyOCAr Ky0tCj4gIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMgICB8ICAxNiArLS0KPiAgZHJp dmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaCAgIHwgIDIyIC0tLS0KPiAgZHJpdmVycy9ncHUv ZHJtL3ZrbXMvdmttc19nZW0uYyAgIHwgMjEyICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMgfCAgMTcgKystCj4gIDYgZmls ZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMjU0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmln Cj4gaW5kZXggMGRlZGJjMDQwYzc3Li4zYmRkOTVmOTlmZWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+IEBAIC0y NTMsNiArMjUzLDcgQEAgY29uZmlnIERSTV9WS01TCj4gIAl0cmlzdGF0ZSAiVmlydHVhbCBLTVMg KEVYUEVSSU1FTlRBTCkiCj4gIAlkZXBlbmRzIG9uIERSTQo+ICAJc2VsZWN0IERSTV9LTVNfSEVM UEVSCj4gKwlzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVIKPiAgCWRlZmF1bHQgbgo+ICAJaGVs cAo+ICAJICBWaXJ0dWFsIEtlcm5lbCBNb2RlLVNldHRpbmcgKFZLTVMpIGlzIHVzZWQgZm9yIHRl c3Rpbmcgb3IgZm9yCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3Jj LmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5jCj4gaW5kZXggOWQ5ZTgxNDZkYjkw Li43MmQ2NDIyZmIxYTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19j cmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3JjLmMKPiBAQCAtNCw2ICs0 LDcgQEAKPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJt X2F0b21pY19oZWxwZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hl bHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmg+Cj4gIAo+ICAv KioKPiAgICogY29tcHV0ZV9jcmMgLSBDb21wdXRlIENSQyB2YWx1ZSBvbiBvdXRwdXQgZnJhbWUK PiBAQCAtOTEsMjEgKzkyLDE5IEBAIHN0YXRpYyB2b2lkIGNvbXBvc2VfY3Vyc29yKHN0cnVjdCB2 a21zX2NyY19kYXRhICpjdXJzb3JfY3JjLAo+ICAJCQkgICBzdHJ1Y3Qgdmttc19jcmNfZGF0YSAq cHJpbWFyeV9jcmMsIHZvaWQgKnZhZGRyX291dCkKPiAgewo+ICAJc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpjdXJzb3Jfb2JqOwo+IC0Jc3RydWN0IHZrbXNfZ2VtX29iamVjdCAqY3Vyc29yX3ZrbXNf b2JqOwo+ICsJdm9pZCAqdmFkZHI7Cj4gIAo+ICAJY3Vyc29yX29iaiA9IGRybV9nZW1fZmJfZ2V0 X29iaigmY3Vyc29yX2NyYy0+ZmIsIDApOwo+IC0JY3Vyc29yX3ZrbXNfb2JqID0gZHJtX2dlbV90 b192a21zX2dlbShjdXJzb3Jfb2JqKTsKPiArCXZhZGRyID0gZHJtX2dlbV9zaG1lbV92bWFwKGN1 cnNvcl9vYmopOwo+ICAKPiAtCW11dGV4X2xvY2soJmN1cnNvcl92a21zX29iai0+cGFnZXNfbG9j ayk7Cj4gLQlpZiAoIWN1cnNvcl92a21zX29iai0+dmFkZHIpIHsKPiArCWlmIChJU19FUlIodmFk ZHIpKSB7Cj4gIAkJRFJNX1dBUk4oImN1cnNvciBwbGFuZSB2YWRkciBpcyBOVUxMIik7Cj4gLQkJ Z290byBvdXQ7Cj4gKwkJcmV0dXJuOwo+ICAJfQo+ICAKPiAtCWJsZW5kKHZhZGRyX291dCwgY3Vy c29yX3ZrbXNfb2JqLT52YWRkciwgcHJpbWFyeV9jcmMsIGN1cnNvcl9jcmMpOwo+ICsJYmxlbmQo dmFkZHJfb3V0LCB2YWRkciwgcHJpbWFyeV9jcmMsIGN1cnNvcl9jcmMpOwo+ICAKPiAtb3V0Ogo+ IC0JbXV0ZXhfdW5sb2NrKCZjdXJzb3Jfdmttc19vYmotPnBhZ2VzX2xvY2spOwo+ICsJZHJtX2dl bV9zaG1lbV92dW5tYXAoY3Vyc29yX29iaiwgdmFkZHIpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdWlu dDMyX3QgX3ZrbXNfZ2V0X2NyYyhzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqcHJpbWFyeV9jcmMsCj4g QEAgLTExMyw4ICsxMTIsOCBAQCBzdGF0aWMgdWludDMyX3QgX3ZrbXNfZ2V0X2NyYyhzdHJ1Y3Qg dmttc19jcmNfZGF0YSAqcHJpbWFyeV9jcmMsCj4gIHsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gJnByaW1hcnlfY3JjLT5mYjsKPiAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2Vt X29iaiA9IGRybV9nZW1fZmJfZ2V0X29iaihmYiwgMCk7Cj4gLQlzdHJ1Y3Qgdmttc19nZW1fb2Jq ZWN0ICp2a21zX29iaiA9IGRybV9nZW1fdG9fdmttc19nZW0oZ2VtX29iaik7Cj4gLQl2b2lkICp2 YWRkcl9vdXQgPSBremFsbG9jKHZrbXNfb2JqLT5nZW0uc2l6ZSwgR0ZQX0tFUk5FTCk7Cj4gKwl2 b2lkICp2YWRkcjsKPiArCXZvaWQgKnZhZGRyX291dCA9IGt6YWxsb2MoZ2VtX29iai0+c2l6ZSwg R0ZQX0tFUk5FTCk7Cj4gIAl1MzIgY3JjID0gMDsKPiAgCj4gIAlpZiAoIXZhZGRyX291dCkgewo+ IEBAIC0xMjIsMjEgKzEyMSwyMCBAQCBzdGF0aWMgdWludDMyX3QgX3ZrbXNfZ2V0X2NyYyhzdHJ1 Y3Qgdmttc19jcmNfZGF0YSAqcHJpbWFyeV9jcmMsCj4gIAkJcmV0dXJuIDA7Cj4gIAl9Cj4gIAo+ IC0JbXV0ZXhfbG9jaygmdmttc19vYmotPnBhZ2VzX2xvY2spOwo+IC0JaWYgKFdBUk5fT04oIXZr bXNfb2JqLT52YWRkcikpIHsKPiAtCQltdXRleF91bmxvY2soJnZrbXNfb2JqLT5wYWdlc19sb2Nr KTsKPiArCXZhZGRyID0gZHJtX2dlbV9zaG1lbV92bWFwKGdlbV9vYmopOwo+ICsJaWYgKFdBUk5f T04oSVNfRVJSKHZhZGRyKSkpIHsKPiAgCQlrZnJlZSh2YWRkcl9vdXQpOwo+ICAJCXJldHVybiBj cmM7Cj4gIAl9Cj4gIAo+IC0JbWVtY3B5KHZhZGRyX291dCwgdmttc19vYmotPnZhZGRyLCB2a21z X29iai0+Z2VtLnNpemUpOwo+IC0JbXV0ZXhfdW5sb2NrKCZ2a21zX29iai0+cGFnZXNfbG9jayk7 Cj4gKwltZW1jcHkodmFkZHJfb3V0LCB2YWRkciwgZ2VtX29iai0+c2l6ZSk7Cj4gIAo+ICAJaWYg KGN1cnNvcl9jcmMpCj4gIAkJY29tcG9zZV9jdXJzb3IoY3Vyc29yX2NyYywgcHJpbWFyeV9jcmMs IHZhZGRyX291dCk7Cj4gIAo+ICAJY3JjID0gY29tcHV0ZV9jcmModmFkZHJfb3V0LCBwcmltYXJ5 X2NyYyk7Cj4gIAo+ICsJZHJtX2dlbV9zaG1lbV92dW5tYXAoZ2VtX29iaiwgdmFkZHIpOwo+ICAJ a2ZyZWUodmFkZHJfb3V0KTsKPiAgCj4gIAlyZXR1cm4gY3JjOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19k cnYuYwo+IGluZGV4IDgzMDg3ODc3NTY1Yy4uZmEyNmUyNjc1MDI4IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmtt cy92a21zX2Rydi5jCj4gQEAgLTE5LDYgKzE5LDcgQEAKPiAgI2luY2x1ZGUgPGRybS9kcm1fY3J0 Y19oZWxwZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ICAjaW5j bHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0v ZHJtX2dlbV9zaG1lbV9oZWxwZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+ Cj4gICNpbmNsdWRlICJ2a21zX2Rydi5oIgo+ICAKPiBAQCAtNDYsMTIgKzQ3LDYgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmttc19kcml2ZXJfZm9wcyA9IHsKPiAgCS5y ZWxlYXNlCT0gZHJtX3JlbGVhc2UsCj4gIH07Cj4gIAo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHZt X29wZXJhdGlvbnNfc3RydWN0IHZrbXNfZ2VtX3ZtX29wcyA9IHsKPiAtCS5mYXVsdCA9IHZrbXNf Z2VtX2ZhdWx0LAo+IC0JLm9wZW4gPSBkcm1fZ2VtX3ZtX29wZW4sCj4gLQkuY2xvc2UgPSBkcm1f Z2VtX3ZtX2Nsb3NlLAo+IC19Owo+IC0KPiAgc3RhdGljIHZvaWQgdmttc19yZWxlYXNlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0cnVjdCB2a21zX2RldmljZSAqdmttcyA9IGNv bnRhaW5lcl9vZihkZXYsIHN0cnVjdCB2a21zX2RldmljZSwgZHJtKTsKPiBAQCAtNjQsMTIgKzU5 LDEzIEBAIHN0YXRpYyB2b2lkIHZrbXNfcmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICB9Cj4gIAo+ICBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgdmttc19kcml2ZXIgPSB7Cj4gLQku ZHJpdmVyX2ZlYXR1cmVzCT0gRFJJVkVSX01PREVTRVQgfCBEUklWRVJfQVRPTUlDIHwgRFJJVkVS X0dFTSwKPiArCS5kcml2ZXJfZmVhdHVyZXMJPSAoRFJJVkVSX01PREVTRVQgfAo+ICsJCQkJICAg RFJJVkVSX0FUT01JQyB8Cj4gKwkJCQkgICBEUklWRVJfR0VNIHwKPiArCQkJCSAgIERSSVZFUl9Q UklNRSksCj4gIAkucmVsZWFzZQkJPSB2a21zX3JlbGVhc2UsCj4gIAkuZm9wcwkJCT0gJnZrbXNf ZHJpdmVyX2ZvcHMsCj4gLQkuZHVtYl9jcmVhdGUJCT0gdmttc19kdW1iX2NyZWF0ZSwKPiAtCS5n ZW1fdm1fb3BzCQk9ICZ2a21zX2dlbV92bV9vcHMsCj4gLQkuZ2VtX2ZyZWVfb2JqZWN0X3VubG9j a2VkID0gdmttc19nZW1fZnJlZV9vYmplY3QsCj4gKwlEUk1fR0VNX1NITUVNX0RSSVZFUl9PUFMs Cj4gIAkuZ2V0X3ZibGFua190aW1lc3RhbXAJPSB2a21zX2dldF92YmxhbmtfdGltZXN0YW1wLAo+ ICAKPiAgCS5uYW1lCQkJPSBEUklWRVJfTkFNRSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3ZrbXMvdmttc19kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKPiBp bmRleCBlNDQ2OWNkM2QyNTQuLjNmYWY0OWY0M2ZlYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vdmttcy92a21zX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19k cnYuaAo+IEBAIC04MCwyMyArODAsMTIgQEAgc3RydWN0IHZrbXNfZGV2aWNlIHsKPiAgCXN0cnVj dCB2a21zX291dHB1dCBvdXRwdXQ7Cj4gIH07Cj4gIAo+IC1zdHJ1Y3Qgdmttc19nZW1fb2JqZWN0 IHsKPiAtCXN0cnVjdCBkcm1fZ2VtX29iamVjdCBnZW07Cj4gLQlzdHJ1Y3QgbXV0ZXggcGFnZXNf bG9jazsgLyogUGFnZSBsb2NrIHVzZWQgaW4gcGFnZSBmYXVsdCBoYW5kbGVyICovCj4gLQlzdHJ1 Y3QgcGFnZSAqKnBhZ2VzOwo+IC0JdW5zaWduZWQgaW50IHZtYXBfY291bnQ7Cj4gLQl2b2lkICp2 YWRkcjsKPiAtfTsKPiAtCj4gICNkZWZpbmUgZHJtX2NydGNfdG9fdmttc19vdXRwdXQodGFyZ2V0 KSBcCj4gIAljb250YWluZXJfb2YodGFyZ2V0LCBzdHJ1Y3Qgdmttc19vdXRwdXQsIGNydGMpCj4g IAo+ICAjZGVmaW5lIGRybV9kZXZpY2VfdG9fdmttc19kZXZpY2UodGFyZ2V0KSBcCj4gIAljb250 YWluZXJfb2YodGFyZ2V0LCBzdHJ1Y3Qgdmttc19kZXZpY2UsIGRybSkKPiAgCj4gLSNkZWZpbmUg ZHJtX2dlbV90b192a21zX2dlbSh0YXJnZXQpXAo+IC0JY29udGFpbmVyX29mKHRhcmdldCwgc3Ry dWN0IHZrbXNfZ2VtX29iamVjdCwgZ2VtKQo+IC0KPiAgI2RlZmluZSB0b192a21zX2NydGNfc3Rh dGUodGFyZ2V0KVwKPiAgCWNvbnRhaW5lcl9vZih0YXJnZXQsIHN0cnVjdCB2a21zX2NydGNfc3Rh dGUsIGJhc2UpCj4gIAo+IEBAIC0xMjIsMTcgKzExMSw2IEBAIHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqdmttc19nZW1fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkgICAgICAg dTMyICpoYW5kbGUsCj4gIAkJCQkgICAgICAgdTY0IHNpemUpOwo+ICAKPiAtdm1fZmF1bHRfdCB2 a21zX2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7Cj4gLQo+IC1pbnQgdmttc19kdW1i X2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g LQkJICAgICBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgKmFyZ3MpOwo+IC0KPiAtdm9pZCB2 a21zX2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4gLQo+IC1p bnQgdmttc19nZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4gLQo+IC12b2lk IHZrbXNfZ2VtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4gLQo+ICAvKiBD UkMgU3VwcG9ydCAqLwo+ICBpbnQgdmttc19zZXRfY3JjX3NvdXJjZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsIGNvbnN0IGNoYXIgKnNyY19uYW1lKTsKPiAgaW50IHZrbXNfdmVyaWZ5X2NyY19zb3Vy Y2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLCBjb25zdCBjaGFyICpzb3VyY2VfbmFtZSwKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19nZW0uYyBiL2RyaXZlcnMvZ3B1L2Ry bS92a21zL3ZrbXNfZ2VtLmMKPiBpbmRleCA4MDMxMWRhZWQ0N2EuLjExZjUyYWE0ZTczMiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2dlbS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3ZrbXMvdmttc19nZW0uYwo+IEBAIC03LDIyMiArNywzNCBAQAo+ICAgKi8KPiAg Cj4gICNpbmNsdWRlIDxsaW51eC9zaG1lbV9mcy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1f c2htZW1faGVscGVyLmg+Cj4gIAo+ICAjaW5jbHVkZSAidmttc19kcnYuaCIKPiAgCj4gLXN0YXRp YyBzdHJ1Y3Qgdmttc19nZW1fb2JqZWN0ICpfX3ZrbXNfZ2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+IC0JCQkJCQkgdTY0IHNpemUpCj4gLXsKPiAtCXN0cnVjdCB2a21zX2dlbV9v YmplY3QgKm9iajsKPiAtCWludCByZXQ7Cj4gLQo+IC0Jb2JqID0ga3phbGxvYyhzaXplb2YoKm9i aiksIEdGUF9LRVJORUwpOwo+IC0JaWYgKCFvYmopCj4gLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7Cj4gLQo+IC0Jc2l6ZSA9IHJvdW5kdXAoc2l6ZSwgUEFHRV9TSVpFKTsKPiAtCXJldCA9IGRy bV9nZW1fb2JqZWN0X2luaXQoZGV2LCAmb2JqLT5nZW0sIHNpemUpOwo+IC0JaWYgKHJldCkgewo+ IC0JCWtmcmVlKG9iaik7Cj4gLQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAtCX0KPiAtCj4gLQlt dXRleF9pbml0KCZvYmotPnBhZ2VzX2xvY2spOwo+IC0KPiAtCXJldHVybiBvYmo7Cj4gLX0KPiAt Cj4gLXZvaWQgdmttc19nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmop Cj4gLXsKPiAtCXN0cnVjdCB2a21zX2dlbV9vYmplY3QgKmdlbSA9IGNvbnRhaW5lcl9vZihvYmos IHN0cnVjdCB2a21zX2dlbV9vYmplY3QsCj4gLQkJCQkJCSAgIGdlbSk7Cj4gLQo+IC0JV0FSTl9P TihnZW0tPnBhZ2VzKTsKPiAtCVdBUk5fT04oZ2VtLT52YWRkcik7Cj4gLQo+IC0JbXV0ZXhfZGVz dHJveSgmZ2VtLT5wYWdlc19sb2NrKTsKPiAtCWRybV9nZW1fb2JqZWN0X3JlbGVhc2Uob2JqKTsK PiAtCWtmcmVlKGdlbSk7Cj4gLX0KPiAtCj4gLXZtX2ZhdWx0X3Qgdmttc19nZW1fZmF1bHQoc3Ry dWN0IHZtX2ZhdWx0ICp2bWYpCj4gLXsKPiAtCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0g dm1mLT52bWE7Cj4gLQlzdHJ1Y3Qgdmttc19nZW1fb2JqZWN0ICpvYmogPSB2bWEtPnZtX3ByaXZh dGVfZGF0YTsKPiAtCXVuc2lnbmVkIGxvbmcgdmFkZHIgPSB2bWYtPmFkZHJlc3M7Cj4gLQlwZ29m Zl90IHBhZ2Vfb2Zmc2V0Owo+IC0JbG9mZl90IG51bV9wYWdlczsKPiAtCXZtX2ZhdWx0X3QgcmV0 ID0gVk1fRkFVTFRfU0lHQlVTOwo+IC0KPiAtCXBhZ2Vfb2Zmc2V0ID0gKHZhZGRyIC0gdm1hLT52 bV9zdGFydCkgPj4gUEFHRV9TSElGVDsKPiAtCW51bV9wYWdlcyA9IERJVl9ST1VORF9VUChvYmot PmdlbS5zaXplLCBQQUdFX1NJWkUpOwo+IC0KPiAtCWlmIChwYWdlX29mZnNldCA+IG51bV9wYWdl cykKPiAtCQlyZXR1cm4gVk1fRkFVTFRfU0lHQlVTOwo+IC0KPiAtCW11dGV4X2xvY2soJm9iai0+ cGFnZXNfbG9jayk7Cj4gLQlpZiAob2JqLT5wYWdlcykgewo+IC0JCWdldF9wYWdlKG9iai0+cGFn ZXNbcGFnZV9vZmZzZXRdKTsKPiAtCQl2bWYtPnBhZ2UgPSBvYmotPnBhZ2VzW3BhZ2Vfb2Zmc2V0 XTsKPiAtCQlyZXQgPSAwOwo+IC0JfQo+IC0JbXV0ZXhfdW5sb2NrKCZvYmotPnBhZ2VzX2xvY2sp Owo+IC0JaWYgKHJldCkgewo+IC0JCXN0cnVjdCBwYWdlICpwYWdlOwo+IC0JCXN0cnVjdCBhZGRy ZXNzX3NwYWNlICptYXBwaW5nOwo+IC0KPiAtCQltYXBwaW5nID0gZmlsZV9pbm9kZShvYmotPmdl bS5maWxwKS0+aV9tYXBwaW5nOwo+IC0JCXBhZ2UgPSBzaG1lbV9yZWFkX21hcHBpbmdfcGFnZSht YXBwaW5nLCBwYWdlX29mZnNldCk7Cj4gLQo+IC0JCWlmICghSVNfRVJSKHBhZ2UpKSB7Cj4gLQkJ CXZtZi0+cGFnZSA9IHBhZ2U7Cj4gLQkJCXJldCA9IDA7Cj4gLQkJfSBlbHNlIHsKPiAtCQkJc3dp dGNoIChQVFJfRVJSKHBhZ2UpKSB7Cj4gLQkJCWNhc2UgLUVOT1NQQzoKPiAtCQkJY2FzZSAtRU5P TUVNOgo+IC0JCQkJcmV0ID0gVk1fRkFVTFRfT09NOwo+IC0JCQkJYnJlYWs7Cj4gLQkJCWNhc2Ug LUVCVVNZOgo+IC0JCQkJcmV0ID0gVk1fRkFVTFRfUkVUUlk7Cj4gLQkJCQlicmVhazsKPiAtCQkJ Y2FzZSAtRUZBVUxUOgo+IC0JCQljYXNlIC1FSU5WQUw6Cj4gLQkJCQlyZXQgPSBWTV9GQVVMVF9T SUdCVVM7Cj4gLQkJCQlicmVhazsKPiAtCQkJZGVmYXVsdDoKPiAtCQkJCVdBUk5fT04oUFRSX0VS UihwYWdlKSk7Cj4gLQkJCQlyZXQgPSBWTV9GQVVMVF9TSUdCVVM7Cj4gLQkJCQlicmVhazsKPiAt CQkJfQo+IC0JCX0KPiAtCX0KPiAtCXJldHVybiByZXQ7Cj4gLX0KPiAtCj4gIHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqdmttc19nZW1fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJ CQkgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlLAo+ICAJCQkJICAgICAgIHUzMiAqaGFuZGxl LAo+ICAJCQkJICAgICAgIHU2NCBzaXplKQo+ICB7Cj4gLQlzdHJ1Y3Qgdmttc19nZW1fb2JqZWN0 ICpvYmo7Cj4gKwlzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKm9iajsKPiAgCWludCByZXQ7 Cj4gIAo+ICAJaWYgKCFmaWxlIHx8ICFkZXYgfHwgIWhhbmRsZSkKPiAgCQlyZXR1cm4gRVJSX1BU UigtRUlOVkFMKTsKPiAgCj4gLQlvYmogPSBfX3ZrbXNfZ2VtX2NyZWF0ZShkZXYsIHNpemUpOwo+ ICsJb2JqID0gZHJtX2dlbV9zaG1lbV9jcmVhdGUoZGV2LCBzaXplKTsKPiAgCWlmIChJU19FUlIo b2JqKSkKPiAgCQlyZXR1cm4gRVJSX0NBU1Qob2JqKTsKPiAgCj4gLQlyZXQgPSBkcm1fZ2VtX2hh bmRsZV9jcmVhdGUoZmlsZSwgJm9iai0+Z2VtLCBoYW5kbGUpOwo+IC0JZHJtX2dlbV9vYmplY3Rf cHV0X3VubG9ja2VkKCZvYmotPmdlbSk7Cj4gLQlpZiAocmV0KSB7Cj4gLQkJZHJtX2dlbV9vYmpl Y3RfcmVsZWFzZSgmb2JqLT5nZW0pOwo+IC0JCWtmcmVlKG9iaik7Cj4gKwkvKgo+ICsJICogQWxs b2NhdGUgYW4gaWQgb2YgaWRyIHRhYmxlIHdoZXJlIHRoZSBvYmogaXMgcmVnaXN0ZXJlZAo+ICsJ ICogYW5kIGhhbmRsZSBoYXMgdGhlIGlkIHdoYXQgdXNlciBjYW4gc2VlLgo+ICsJICovCj4gKwly ZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmlsZSwgJm9iai0+YmFzZSwgaGFuZGxlKTsKPiAr CS8qIGRyb3AgcmVmZXJlbmNlIGZyb20gYWxsb2NhdGUgLSBoYW5kbGUgaG9sZHMgaXQgbm93LiAq Lwo+ICsJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKCZvYmotPmJhc2UpOwo+ICsJaWYgKHJl dCkKPiAgCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+IC0JfQo+IC0KPiAtCXJldHVybiAmb2JqLT5n ZW07Cj4gLX0KPiAtCj4gLWludCB2a21zX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmls ZSwgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAtCQkgICAgIHN0cnVjdCBkcm1fbW9kZV9jcmVh dGVfZHVtYiAqYXJncykKPiAtewo+IC0Jc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqOwo+ IC0JdTY0IHBpdGNoLCBzaXplOwo+IC0KPiAtCWlmICghYXJncyB8fCAhZGV2IHx8ICFmaWxlKQo+ IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCXBpdGNoID0gYXJncy0+d2lkdGggKiBESVZfUk9V TkRfVVAoYXJncy0+YnBwLCA4KTsKPiAtCXNpemUgPSBwaXRjaCAqIGFyZ3MtPmhlaWdodDsKPiAt Cj4gLQlpZiAoIXNpemUpCj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQo+IC0JZ2VtX29iaiA9IHZr bXNfZ2VtX2NyZWF0ZShkZXYsIGZpbGUsICZhcmdzLT5oYW5kbGUsIHNpemUpOwo+IC0JaWYgKElT X0VSUihnZW1fb2JqKSkKPiAtCQlyZXR1cm4gUFRSX0VSUihnZW1fb2JqKTsKPiAtCj4gLQlhcmdz LT5zaXplID0gZ2VtX29iai0+c2l6ZTsKPiAtCWFyZ3MtPnBpdGNoID0gcGl0Y2g7Cj4gLQo+IC0J RFJNX0RFQlVHX0RSSVZFUigiQ3JlYXRlZCBvYmplY3Qgb2Ygc2l6ZSAlbGxkXG4iLCBzaXplKTsK PiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAtc3RhdGljIHN0cnVjdCBwYWdlICoqX2dldF9w YWdlcyhzdHJ1Y3Qgdmttc19nZW1fb2JqZWN0ICp2a21zX29iaikKPiAtewo+IC0Jc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpnZW1fb2JqID0gJnZrbXNfb2JqLT5nZW07Cj4gLQo+IC0JaWYgKCF2a21z X29iai0+cGFnZXMpIHsKPiAtCQlzdHJ1Y3QgcGFnZSAqKnBhZ2VzID0gZHJtX2dlbV9nZXRfcGFn ZXMoZ2VtX29iaik7Cj4gLQo+IC0JCWlmIChJU19FUlIocGFnZXMpKQo+IC0JCQlyZXR1cm4gcGFn ZXM7Cj4gLQo+IC0JCWlmIChjbXB4Y2hnKCZ2a21zX29iai0+cGFnZXMsIE5VTEwsIHBhZ2VzKSkK PiAtCQkJZHJtX2dlbV9wdXRfcGFnZXMoZ2VtX29iaiwgcGFnZXMsIGZhbHNlLCB0cnVlKTsKPiAt CX0KPiAtCj4gLQlyZXR1cm4gdmttc19vYmotPnBhZ2VzOwo+IC19Cj4gLQo+IC12b2lkIHZrbXNf Z2VtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKPiAtewo+IC0Jc3RydWN0IHZr bXNfZ2VtX29iamVjdCAqdmttc19vYmogPSBkcm1fZ2VtX3RvX3ZrbXNfZ2VtKG9iaik7Cj4gLQo+ IC0JbXV0ZXhfbG9jaygmdmttc19vYmotPnBhZ2VzX2xvY2spOwo+IC0JaWYgKHZrbXNfb2JqLT52 bWFwX2NvdW50IDwgMSkgewo+IC0JCVdBUk5fT04odmttc19vYmotPnZhZGRyKTsKPiAtCQlXQVJO X09OKHZrbXNfb2JqLT5wYWdlcyk7Cj4gLQkJbXV0ZXhfdW5sb2NrKCZ2a21zX29iai0+cGFnZXNf bG9jayk7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+IC0KPiAtCXZrbXNfb2JqLT52bWFwX2NvdW50LS07 Cj4gLQo+IC0JaWYgKHZrbXNfb2JqLT52bWFwX2NvdW50ID09IDApIHsKPiAtCQl2dW5tYXAodmtt c19vYmotPnZhZGRyKTsKPiAtCQl2a21zX29iai0+dmFkZHIgPSBOVUxMOwo+IC0JCWRybV9nZW1f cHV0X3BhZ2VzKG9iaiwgdmttc19vYmotPnBhZ2VzLCBmYWxzZSwgdHJ1ZSk7Cj4gLQkJdmttc19v YmotPnBhZ2VzID0gTlVMTDsKPiAtCX0KPiAtCj4gLQltdXRleF91bmxvY2soJnZrbXNfb2JqLT5w YWdlc19sb2NrKTsKPiAtfQo+IC0KPiAtaW50IHZrbXNfZ2VtX3ZtYXAoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmopCj4gLXsKPiAtCXN0cnVjdCB2a21zX2dlbV9vYmplY3QgKnZrbXNfb2JqID0g ZHJtX2dlbV90b192a21zX2dlbShvYmopOwo+IC0JaW50IHJldCA9IDA7Cj4gLQo+IC0JbXV0ZXhf bG9jaygmdmttc19vYmotPnBhZ2VzX2xvY2spOwo+IC0KPiAtCWlmICghdmttc19vYmotPnZhZGRy KSB7Cj4gLQkJdW5zaWduZWQgaW50IG5fcGFnZXMgPSBvYmotPnNpemUgPj4gUEFHRV9TSElGVDsK PiAtCQlzdHJ1Y3QgcGFnZSAqKnBhZ2VzID0gX2dldF9wYWdlcyh2a21zX29iaik7Cj4gLQo+IC0J CWlmIChJU19FUlIocGFnZXMpKSB7Cj4gLQkJCXJldCA9IFBUUl9FUlIocGFnZXMpOwo+IC0JCQln b3RvIG91dDsKPiAtCQl9Cj4gLQo+IC0JCXZrbXNfb2JqLT52YWRkciA9IHZtYXAocGFnZXMsIG5f cGFnZXMsIFZNX01BUCwgUEFHRV9LRVJORUwpOwo+IC0JCWlmICghdmttc19vYmotPnZhZGRyKQo+ IC0JCQlnb3RvIGVycl92bWFwOwo+IC0JfQo+IC0KPiAtCXZrbXNfb2JqLT52bWFwX2NvdW50Kys7 Cj4gLQlnb3RvIG91dDsKPiAgCj4gLWVycl92bWFwOgo+IC0JcmV0ID0gLUVOT01FTTsKPiAtCWRy bV9nZW1fcHV0X3BhZ2VzKG9iaiwgdmttc19vYmotPnBhZ2VzLCBmYWxzZSwgdHJ1ZSk7Cj4gLQl2 a21zX29iai0+cGFnZXMgPSBOVUxMOwo+IC1vdXQ6Cj4gLQltdXRleF91bmxvY2soJnZrbXNfb2Jq LT5wYWdlc19sb2NrKTsKPiAtCXJldHVybiByZXQ7Cj4gKwlyZXR1cm4gJm9iai0+YmFzZTsKPiAg fQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMgYi9kcml2 ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMKPiBpbmRleCA3MDQxMDA3Mzk2YWUuLjI5ZTZl ODcwZDdhYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMKPiBAQCAtMTEsNiArMTEs NyBAQAo+ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1f YXRvbWljX2hlbHBlci5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVs cGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuaD4KPiAgCj4gIHN0 YXRpYyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICoKPiAgdmttc19wbGFuZV9kdXBsaWNhdGVfc3Rh dGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4gQEAgLTEzOCwxNyArMTM5LDE3IEBAIHN0YXRp YyBpbnQgdmttc19wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCQkgICBz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpnZW1fb2JqOwo+IC0Jc3RydWN0IHZrbXNfZ2VtX29iamVjdCAqdmttc19vYmo7Cj4gLQlp bnQgcmV0Owo+ICsJdm9pZCAqbWFwOwo+ICAKPiAgCWlmICghc3RhdGUtPmZiKQo+ICAJCXJldHVy biAwOwo+ICAKPiAgCWdlbV9vYmogPSBkcm1fZ2VtX2ZiX2dldF9vYmooc3RhdGUtPmZiLCAwKTsK PiAtCXZrbXNfb2JqID0gZHJtX2dlbV90b192a21zX2dlbShnZW1fb2JqKTsKPiAtCXJldCA9IHZr bXNfZ2VtX3ZtYXAoZ2VtX29iaik7Cj4gLQlpZiAocmV0KQo+IC0JCURSTV9FUlJPUigidm1hcCBm YWlsZWQ6ICVkXG4iLCByZXQpOwo+ICsJbWFwID0gZHJtX2dlbV9zaG1lbV92bWFwKGdlbV9vYmop Owo+ICsJaWYgKElTX0VSUihtYXApKSB7Cj4gKwkJRFJNX0VSUk9SKCJ2bWFwIGZhaWxlZDogJWxk XG4iLCBQVFJfRVJSKG1hcCkpOwo+ICsJCXJldHVybiBQVFJfRVJSKG1hcCk7Cj4gKwl9Cj4gIAo+ ICAJcmV0dXJuIGRybV9nZW1fZmJfcHJlcGFyZV9mYihwbGFuZSwgc3RhdGUpOwo+ICB9Cj4gQEAg LTE1NywxMiArMTU4LDE0IEBAIHN0YXRpYyB2b2lkIHZrbXNfY2xlYW51cF9mYihzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKPiAgCQkJICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0 ZSkKPiAgewo+ICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqOwo+ICsJc3RydWN0IGRy bV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbV9vYmo7Cj4gIAo+ICAJaWYgKCFvbGRfc3RhdGUtPmZi KQo+ICAJCXJldHVybjsKPiAgCj4gIAlnZW1fb2JqID0gZHJtX2dlbV9mYl9nZXRfb2JqKG9sZF9z dGF0ZS0+ZmIsIDApOwo+IC0Jdmttc19nZW1fdnVubWFwKGdlbV9vYmopOwo+ICsJc2htZW1fb2Jq ID0gdG9fZHJtX2dlbV9zaG1lbV9vYmooZ2VtX29iaik7Cj4gKwlkcm1fZ2VtX3NobWVtX3Z1bm1h cChnZW1fb2JqLCBzaG1lbV9vYmotPnZhZGRyKTsKPiAgfQo+ICAKPiAgc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIHZrbXNfcHJpbWFyeV9oZWxwZXJfZnVuY3MgPSB7 Cj4gLS0gCj4gMi4yMC4wLnJjMQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIs IEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=