From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2] drm/i915: Decouple execbuf uAPI from internal implementation Date: Thu, 21 Jan 2016 11:22:28 +0100 Message-ID: <20160121102228.GM19130@phenom.ffwll.local> References: <20160115113650.GB8308@nuc-i3427.alporthouse.com> <1452870770-13981-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7B7B772127 for ; Thu, 21 Jan 2016 02:22:23 -0800 (PST) Received: by mail-wm0-f66.google.com with SMTP id 123so9837361wmz.2 for ; Thu, 21 Jan 2016 02:22:23 -0800 (PST) Content-Disposition: inline In-Reply-To: <1452870770-13981-1-git-send-email-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: Daniel Vetter , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKYW4gMTUsIDIwMTYgYXQgMDM6MTI6NTBQTSArMDAwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K PiAKPiBBdCB0aGUgbW9tZW50IGV4ZWNidWYgcmluZyBzZWxlY3Rpb24gaXMgZnVsbHkgY291cGxl ZCB0bwo+IGludGVybmFsIHJpbmcgaWRzIHdoaWNoIGlzIG5vdCBhIGdvb2QgdGhpbmcgb24gaXRz IG93bi4KPiAKPiBUaGlzIGRlcGVuZGVuY3kgaXMgYWxzbyBzcHJlYWQgYmV0d2VlbiB0d28gc291 cmNlIGZpbGVzIGFuZAo+IG5vdCBzcGVsbGVkIG91dCBhdCBlaXRoZXIgc2lkZSB3aGljaCBtYWtl cyBpdCBoaWRkZW4gYW5kCj4gZnJhZ2lsZS4KPiAKPiBUaGlzIHBhdGNoIGRlY291cGxlcyB0aGlz IGRlcGVuZGVuY3kgYnkgaW50cm9kdWNpbmcgYW4gZXhwbGljaXQKPiB0cmFuc2xhdGlvbiB0YWJs ZSBvZiBleGVjYnVmIHVBUEkgdG8gcmluZyBpZCBjbG9zZSB0byB0aGUgb25seQo+IGNhbGwgc2l0 ZSAoaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcikuCj4gCj4gVGhpcyB3YXkgd2UgYXJlIGZyZWUgdG8g Y2hhbmdlIGRyaXZlciBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbgo+IGRldGFpbHMgd2l0aG91dCBi cmVha2luZyB1c2Vyc3BhY2UuIEFsbCBzdGF0ZSByZWxhdGluZyB0byB0aGUKPiB1QVBJIGlzIG5v dyBjb250YWluZWQgaW4sIG9yIG5leHQgdG8sIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIuCj4gCj4g QXMgYSBzaWRlIGJlbmVmaXQsIHRoaXMgcGF0Y2ggZGVjcmVhc2VzIHRoZSBjb21waWxlZCBzaXpl Cj4gb2YgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlci4KPiAKPiB2MjogRXh0cmFjdCByaW5nIHNlbGVj dGlvbiBpbnRvIGViX3NlbGVjdF9yaW5nLiAoQ2hyaXMgV2lsc29uKQo+IAo+IFNpZ25lZC1vZmYt Ynk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gQ2M6IERhbmll bCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrPgoKWWVhaCwgdGhpcyBkZWNvdXBsaW5nIGlzIG5pY2UsIGFm dGVyIGFsbCB0aGUgcG9pbnQgb2YgaW5jbHVkZS91YXBpIHdhcyB0bwptYWtlIHRoZSB1YXBpIHZz LiBpbnRlcm5hbCBoZWFkZXJzIGNsZWFyLgoKQWNrZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmll bC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgICAgICAgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j ICAgICAgICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVj YnVmZmVyLmMgfCAxMzkgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICAgIHwgIDEwICstLQo+ICA0IGZpbGVzIGNo YW5nZWQsIDgxIGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+IGluZGV4IGViN2JiOTdmNzMxNi4uMzVkNWQ2MDk5YTQ0IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTMzNCw3ICszMzQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVf ZmlsZV9wcml2YXRlIHsKPiAgCQl1bnNpZ25lZCBib29zdHM7Cj4gIAl9IHJwczsKPiAgCj4gLQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpic2RfcmluZzsKPiArCXVuc2lnbmVkIGludCBic2Rfcmlu ZzsKPiAgfTsKPiAgCj4gIGVudW0gaW50ZWxfZHBsbF9pZCB7Cj4gQEAgLTEzMDAsNyArMTMwMCw3 IEBAIHN0cnVjdCBpOTE1X2dlbV9tbSB7Cj4gIAlib29sIGJ1c3k7Cj4gIAo+ICAJLyogdGhlIGlu ZGljYXRvciBmb3IgZGlzcGF0Y2ggdmlkZW8gY29tbWFuZHMgb24gdHdvIEJTRCByaW5ncyAqLwo+ IC0JaW50IGJzZF9yaW5nX2Rpc3BhdGNoX2luZGV4Owo+ICsJdW5zaWduZWQgaW50IGJzZF9yaW5n X2Rpc3BhdGNoX2luZGV4Owo+ICAKPiAgCS8qKiBCaXQgNiBzd2l6emxpbmcgcmVxdWlyZWQgZm9y IFggdGlsaW5nICovCj4gIAl1aW50MzJfdCBiaXRfNl9zd2l6emxlX3g7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4gaW5kZXggZGRjMjFkNGIzODhkLi4yNmU2ODQyZjJkZjMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtNTExMiw2ICs1MTEyLDggQEAgaW50IGk5MTVfZ2VtX29w ZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ICAJc3Bp bl9sb2NrX2luaXQoJmZpbGVfcHJpdi0+bW0ubG9jayk7Cj4gIAlJTklUX0xJU1RfSEVBRCgmZmls ZV9wcml2LT5tbS5yZXF1ZXN0X2xpc3QpOwo+ICAKPiArCWZpbGVfcHJpdi0+YnNkX3JpbmcgPSAt MTsKPiArCj4gIAlyZXQgPSBpOTE1X2dlbV9jb250ZXh0X29wZW4oZGV2LCBmaWxlKTsKPiAgCWlm IChyZXQpCj4gIAkJa2ZyZWUoZmlsZV9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZXhlY2J1ZmZlci5jCj4gaW5kZXggZDQ2OWM0Nzc5ZmY1Li40OTdhMmY4NzgzNmMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTEz MjgsMzMgKzEzMjgsMjMgQEAgaTkxNV9nZW1fcmluZ2J1ZmZlcl9zdWJtaXNzaW9uKHN0cnVjdCBp OTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCj4gIAo+ICAvKioKPiAgICogRmluZCBvbmUg QlNEIHJpbmcgdG8gZGlzcGF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgQlNEIGNvbW1hbmQuCj4gLSAq IFRoZSBSaW5nIElEIGlzIHJldHVybmVkLgo+ICsgKiBUaGUgcmluZyBpbmRleCBpcyByZXR1cm5l ZC4KPiAgICovCj4gLXN0YXRpYyBpbnQgZ2VuOF9kaXNwYXRjaF9ic2RfcmluZyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+IC0JCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gK3N0YXRpYyB1 bnNpZ25lZCBpbnQKPiArZ2VuOF9kaXNwYXRjaF9ic2RfcmluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiAgewo+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBk cm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2Owo+ICAK PiAtCS8qIENoZWNrIHdoZXRoZXIgdGhlIGZpbGVfcHJpdiBpcyB1c2luZyBvbmUgcmluZyAqLwo+ IC0JaWYgKGZpbGVfcHJpdi0+YnNkX3JpbmcpCj4gLQkJcmV0dXJuIGZpbGVfcHJpdi0+YnNkX3Jp bmctPmlkOwo+IC0JZWxzZSB7Cj4gLQkJLyogSWYgbm8sIHVzZSB0aGUgcGluZy1wb25nIG1lY2hh bmlzbSB0byBzZWxlY3Qgb25lIHJpbmcgKi8KPiAtCQlpbnQgcmluZ19pZDsKPiAtCj4gLQkJbXV0 ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JCWlmIChkZXZfcHJpdi0+bW0uYnNkX3Jp bmdfZGlzcGF0Y2hfaW5kZXggPT0gMCkgewo+IC0JCQlyaW5nX2lkID0gVkNTOwo+IC0JCQlkZXZf cHJpdi0+bW0uYnNkX3JpbmdfZGlzcGF0Y2hfaW5kZXggPSAxOwo+IC0JCX0gZWxzZSB7Cj4gLQkJ CXJpbmdfaWQgPSBWQ1MyOwo+IC0JCQlkZXZfcHJpdi0+bW0uYnNkX3JpbmdfZGlzcGF0Y2hfaW5k ZXggPSAwOwo+IC0JCX0KPiAtCQlmaWxlX3ByaXYtPmJzZF9yaW5nID0gJmRldl9wcml2LT5yaW5n W3JpbmdfaWRdOwo+IC0JCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JCXJl dHVybiByaW5nX2lkOwo+ICsJLyogQ2hlY2sgd2hldGhlciB0aGUgZmlsZV9wcml2IGhhcyBhbHJl YWR5IHNlbGVjdGVkIG9uZSByaW5nLiAqLwo+ICsJaWYgKChpbnQpZmlsZV9wcml2LT5ic2Rfcmlu ZyA8IDApIHsKPiArCQkvKiBJZiBub3QsIHVzZSB0aGUgcGluZy1wb25nIG1lY2hhbmlzbSB0byBz ZWxlY3Qgb25lLiAqLwo+ICsJCW11dGV4X2xvY2soJmRldl9wcml2LT5kZXYtPnN0cnVjdF9tdXRl eCk7Cj4gKwkJZmlsZV9wcml2LT5ic2RfcmluZyA9IGRldl9wcml2LT5tbS5ic2RfcmluZ19kaXNw YXRjaF9pbmRleDsKPiArCQlkZXZfcHJpdi0+bW0uYnNkX3JpbmdfZGlzcGF0Y2hfaW5kZXggXj0g MTsKPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5kZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAl9 Cj4gKwo+ICsJcmV0dXJuIGZpbGVfcHJpdi0+YnNkX3Jpbmc7Cj4gIH0KPiAgCj4gIHN0YXRpYyBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCj4gQEAgLTEzNzcsNiArMTM2Nyw2MyBAQCBlYl9n ZXRfYmF0Y2goc3RydWN0IGViX3ZtYXMgKmViKQo+ICAJcmV0dXJuIHZtYS0+b2JqOwo+ICB9Cj4g IAo+ICsjZGVmaW5lIEk5MTVfVVNFUl9SSU5HUyAoNCkKPiArCj4gK3N0YXRpYyBjb25zdCBlbnVt IGludGVsX3JpbmdfaWQgdXNlcl9yaW5nX21hcFtJOTE1X1VTRVJfUklOR1MgKyAxXSA9IHsKPiAr CVtJOTE1X0VYRUNfREVGQVVMVF0JPSBSQ1MsCj4gKwlbSTkxNV9FWEVDX1JFTkRFUl0JPSBSQ1Ms Cj4gKwlbSTkxNV9FWEVDX0JMVF0JCT0gQkNTLAo+ICsJW0k5MTVfRVhFQ19CU0RdCQk9IFZDUywK PiArCVtJOTE1X0VYRUNfVkVCT1hdCT0gVkVDUwo+ICt9Owo+ICsKPiArc3RhdGljIGludAo+ICtl Yl9zZWxlY3RfcmluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkgICAg ICAgc3RydWN0IGRybV9maWxlICpmaWxlLAo+ICsJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY2J1ZmZlcjIgKmFyZ3MsCj4gKwkgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKnJp bmcpCj4gK3sKPiArCXVuc2lnbmVkIGludCB1c2VyX3JpbmdfaWQgPSBhcmdzLT5mbGFncyAmIEk5 MTVfRVhFQ19SSU5HX01BU0s7Cj4gKwo+ICsJaWYgKHVzZXJfcmluZ19pZCA+IEk5MTVfVVNFUl9S SU5HUykgewo+ICsJCURSTV9ERUJVRygiZXhlY2J1ZiB3aXRoIHVua25vd24gcmluZzogJXVcbiIs IHVzZXJfcmluZ19pZCk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJaWYgKCh1 c2VyX3JpbmdfaWQgIT0gSTkxNV9FWEVDX0JTRCkgJiYKPiArCSAgICAoKGFyZ3MtPmZsYWdzICYg STkxNV9FWEVDX0JTRF9NQVNLKSAhPSAwKSkgewo+ICsJCURSTV9ERUJVRygiZXhlY2J1ZiB3aXRo IG5vbiBic2QgcmluZyBidXQgd2l0aCBpbnZhbGlkICIKPiArCQkJICAiYnNkIGRpc3BhdGNoIGZs YWdzOiAlZFxuIiwgKGludCkoYXJncy0+ZmxhZ3MpKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiAr CX0KPiArCj4gKwlpZiAodXNlcl9yaW5nX2lkID09IEk5MTVfRVhFQ19CU0QgJiYgSEFTX0JTRDIo ZGV2X3ByaXYpKSB7Cj4gKwkJdW5zaWduZWQgaW50IGJzZF9pZHggPSBhcmdzLT5mbGFncyAmIEk5 MTVfRVhFQ19CU0RfTUFTSzsKPiArCj4gKwkJaWYgKGJzZF9pZHggPT0gSTkxNV9FWEVDX0JTRF9E RUZBVUxUKSB7Cj4gKwkJCWJzZF9pZHggPSBnZW44X2Rpc3BhdGNoX2JzZF9yaW5nKGRldl9wcml2 LCBmaWxlKTsKPiArCQl9IGVsc2UgaWYgKGJzZF9pZHggPj0gSTkxNV9FWEVDX0JTRF9SSU5HMSAm Jgo+ICsJCQkgICBic2RfaWR4IDw9IEk5MTVfRVhFQ19CU0RfUklORzIpIHsKPiArCQkJYnNkX2lk eC0tOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCURSTV9ERUJVRygiZXhlY2J1ZiB3aXRoIHVua25vd24g YnNkIHJpbmc6ICV1XG4iLAo+ICsJCQkJICBic2RfaWR4KTsKPiArCQkJcmV0dXJuIC1FSU5WQUw7 Cj4gKwkJfQo+ICsKPiArCQkqcmluZyA9ICZkZXZfcHJpdi0+cmluZ1tfVkNTKGJzZF9pZHgpXTsK PiArCX0gZWxzZSB7Cj4gKwkJKnJpbmcgPSAmZGV2X3ByaXYtPnJpbmdbdXNlcl9yaW5nX21hcFt1 c2VyX3JpbmdfaWRdXTsKPiArCX0KPiArCj4gKwlpZiAoIWludGVsX3JpbmdfaW5pdGlhbGl6ZWQo KnJpbmcpKSB7Cj4gKwkJRFJNX0RFQlVHKCJleGVjYnVmIHdpdGggaW52YWxpZCByaW5nOiAldVxu IiwgdXNlcl9yaW5nX2lkKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGludAo+ICBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJICAgICAgIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSwKPiBAQCAtMTQxNCw1MSArMTQ2MSw5IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZm ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCWlmIChhcmdzLT5mbGFn cyAmIEk5MTVfRVhFQ19JU19QSU5ORUQpCj4gIAkJZGlzcGF0Y2hfZmxhZ3MgfD0gSTkxNV9ESVNQ QVRDSF9QSU5ORUQ7Cj4gIAo+IC0JaWYgKChhcmdzLT5mbGFncyAmIEk5MTVfRVhFQ19SSU5HX01B U0spID4gTEFTVF9VU0VSX1JJTkcpIHsKPiAtCQlEUk1fREVCVUcoImV4ZWNidWYgd2l0aCB1bmtu b3duIHJpbmc6ICVkXG4iLAo+IC0JCQkgIChpbnQpKGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVDX1JJ TkdfTUFTSykpOwo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0JfQo+IC0KPiAtCWlmICgoKGFyZ3Mt PmZsYWdzICYgSTkxNV9FWEVDX1JJTkdfTUFTSykgIT0gSTkxNV9FWEVDX0JTRCkgJiYKPiAtCSAg ICAoKGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVDX0JTRF9NQVNLKSAhPSAwKSkgewo+IC0JCURSTV9E RUJVRygiZXhlY2J1ZiB3aXRoIG5vbiBic2QgcmluZyBidXQgd2l0aCBpbnZhbGlkICIKPiAtCQkJ ImJzZCBkaXNwYXRjaCBmbGFnczogJWRcbiIsIChpbnQpKGFyZ3MtPmZsYWdzKSk7Cj4gLQkJcmV0 dXJuIC1FSU5WQUw7Cj4gLQl9IAo+IC0KPiAtCWlmICgoYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNf UklOR19NQVNLKSA9PSBJOTE1X0VYRUNfREVGQVVMVCkKPiAtCQlyaW5nID0gJmRldl9wcml2LT5y aW5nW1JDU107Cj4gLQllbHNlIGlmICgoYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfUklOR19NQVNL KSA9PSBJOTE1X0VYRUNfQlNEKSB7Cj4gLQkJaWYgKEhBU19CU0QyKGRldikpIHsKPiAtCQkJaW50 IHJpbmdfaWQ7Cj4gLQo+IC0JCQlzd2l0Y2ggKGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVDX0JTRF9N QVNLKSB7Cj4gLQkJCWNhc2UgSTkxNV9FWEVDX0JTRF9ERUZBVUxUOgo+IC0JCQkJcmluZ19pZCA9 IGdlbjhfZGlzcGF0Y2hfYnNkX3JpbmcoZGV2LCBmaWxlKTsKPiAtCQkJCXJpbmcgPSAmZGV2X3By aXYtPnJpbmdbcmluZ19pZF07Cj4gLQkJCQlicmVhazsKPiAtCQkJY2FzZSBJOTE1X0VYRUNfQlNE X1JJTkcxOgo+IC0JCQkJcmluZyA9ICZkZXZfcHJpdi0+cmluZ1tWQ1NdOwo+IC0JCQkJYnJlYWs7 Cj4gLQkJCWNhc2UgSTkxNV9FWEVDX0JTRF9SSU5HMjoKPiAtCQkJCXJpbmcgPSAmZGV2X3ByaXYt PnJpbmdbVkNTMl07Cj4gLQkJCQlicmVhazsKPiAtCQkJZGVmYXVsdDoKPiAtCQkJCURSTV9ERUJV RygiZXhlY2J1ZiB3aXRoIHVua25vd24gYnNkIHJpbmc6ICVkXG4iLAo+IC0JCQkJCSAgKGludCko YXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfQlNEX01BU0spKTsKPiAtCQkJCXJldHVybiAtRUlOVkFM Owo+IC0JCQl9Cj4gLQkJfSBlbHNlCj4gLQkJCXJpbmcgPSAmZGV2X3ByaXYtPnJpbmdbVkNTXTsK PiAtCX0gZWxzZQo+IC0JCXJpbmcgPSAmZGV2X3ByaXYtPnJpbmdbKGFyZ3MtPmZsYWdzICYgSTkx NV9FWEVDX1JJTkdfTUFTSykgLSAxXTsKPiAtCj4gLQlpZiAoIWludGVsX3JpbmdfaW5pdGlhbGl6 ZWQocmluZykpIHsKPiAtCQlEUk1fREVCVUcoImV4ZWNidWYgd2l0aCBpbnZhbGlkIHJpbmc6ICVk XG4iLAo+IC0JCQkgIChpbnQpKGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVDX1JJTkdfTUFTSykpOwo+ IC0JCXJldHVybiAtRUlOVkFMOwo+IC0JfQo+ICsJcmV0ID0gZWJfc2VsZWN0X3JpbmcoZGV2X3By aXYsIGZpbGUsIGFyZ3MsICZyaW5nKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAg Cj4gIAlpZiAoYXJncy0+YnVmZmVyX2NvdW50IDwgMSkgewo+ICAJCURSTV9ERUJVRygiZXhlY2J1 ZiB3aXRoICVkIGJ1ZmZlcnNcbiIsIGFyZ3MtPmJ1ZmZlcl9jb3VudCk7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IDczNDlkOTI1ODE5MS4uZmRjMjIwZmMy YjE4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC0x NDgsMTQgKzE0OCwxNCBAQCBzdHJ1Y3QgIGk5MTVfY3R4X3dvcmthcm91bmRzIHsKPiAgc3RydWN0 ICBpbnRlbF9lbmdpbmVfY3Mgewo+ICAJY29uc3QgY2hhcgkqbmFtZTsKPiAgCWVudW0gaW50ZWxf cmluZ19pZCB7Cj4gLQkJUkNTID0gMHgwLAo+IC0JCVZDUywKPiArCQlSQ1MgPSAwLAo+ICAJCUJD UywKPiAtCQlWRUNTLAo+IC0JCVZDUzIKPiArCQlWQ1MsCj4gKwkJVkNTMiwJLyogS2VlcCBpbnN0 YW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBlbmdpbmUgdG9nZXRoZXIuICovCj4gKwkJVkVDUwo+ICAJ fSBpZDsKPiAgI2RlZmluZSBJOTE1X05VTV9SSU5HUyA1Cj4gLSNkZWZpbmUgTEFTVF9VU0VSX1JJ TkcgKFZFQ1MgKyAxKQo+ICsjZGVmaW5lIF9WQ1MobikgKFZDUyArIChuKSkKPiAgCXUzMgkJbW1p b19iYXNlOwo+ICAJc3RydWN0CQlkcm1fZGV2aWNlICpkZXY7Cj4gIAlzdHJ1Y3QgaW50ZWxfcmlu Z2J1ZmZlciAqYnVmZmVyOwo+IC0tIAo+IDEuOS4xCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0 d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK