From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH] drm/i915/execlists: Refactor common engine setup Date: Thu, 28 Apr 2016 17:12:28 +0100 Message-ID: <5722366C.4030601@intel.com> References: <1461851222-20557-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id DE2896E3C1 for ; Thu, 28 Apr 2016 16:12:30 +0000 (UTC) In-Reply-To: <1461851222-20557-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMjgvMDQvMTYgMTQ6NDcsIENocmlzIFdpbHNvbiB3cm90ZToKPiBNb3ZlIGFsbCBvZiB0aGUg Y29uc3RhbnQgYXNzaWdubWVudHMgdXAgZnJvbnQgYW5kIGludG8gYSBjb21tb24KPiBmdW5jdGlv bi4gVGhpcyBpcyBwcmltYXJpbHkgdG8gZW5zdXJlIHRoZSBiYWNrcG9pbnRlcnMgYXJlIHNldCBh cyBlYXJseQo+IGFzIHBvc3NpYmxlIGZvciBsYXRlciB1c2UgZHVyaW5nIGluaXRpYWxpc2F0aW9u Lgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBsaW51eC5pbnRlbC5jb20+ Cj4gLS0tCj4KPiBJJ20gbm90IHRvbyBoYXBweSBhYm91dCB1c2luZyB0aGUgZnVuY3Rpb24gcGFy YW1ldGVycyB3aXRoIGxvdHMgb2YKPiBzaW1pbGFyIHR5cGVzLCB2ZXJ5IGVhc3kgdG8gbXVkZGxl IHRoZW0gdXAuIEknbSBzZW5kaW5nIHRoaXMgYWxsIGJlY2F1c2UKPiBpdCBwbGFjZXMgb25lIGlu aXRpYWxpc2VyIGluIGEgY29tbW9uIGxvY2F0aW9uIHJhdGhlciB0aGFuIHBlci1lbmdpbmUhCj4g LUNocmlzCj4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIHwgMTU3 ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgMSBmaWxlIGNoYW5n ZWQsIDc4IGluc2VydGlvbnMoKyksIDc5IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMKPiBpbmRleCA4NzRjMjUxNWY5ZDQuLmE0YTRmOGVhZjAwMCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTE5MjEsOCArMTkyMSw3IEBAIHZvaWQgaW50ZWxfbG9n aWNhbF9yaW5nX2NsZWFudXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgfQo+ Cj4gICBzdGF0aWMgdm9pZAo+IC1sb2dpY2FsX3JpbmdfZGVmYXVsdF92ZnVuY3Moc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiAtCQkJICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiArbG9naWNhbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIHsKPiAgIAkvKiBEZWZhdWx0IHZmdW5jcyB3aGljaCBjYW4gYmUgb3ZlcnJpZGVu IGJ5IGVhY2ggZW5naW5lLiAqLwo+ICAgCWVuZ2luZS0+aW5pdF9odyA9IGdlbjhfaW5pdF9jb21t b25fcmluZzsKPiBAQCAtMTkzMyw3ICsxOTMyLDcgQEAgbG9naWNhbF9yaW5nX2RlZmF1bHRfdmZ1 bmNzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJZW5naW5lLT5lbWl0X2JiX3N0YXJ0ID0g Z2VuOF9lbWl0X2JiX3N0YXJ0Owo+ICAgCWVuZ2luZS0+Z2V0X3NlcW5vID0gZ2VuOF9nZXRfc2Vx bm87Cj4gICAJZW5naW5lLT5zZXRfc2Vxbm8gPSBnZW44X3NldF9zZXFubzsKPiAtCWlmIChJU19C WFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQTEpKSB7Cj4gKwlpZiAoSVNfQlhUX1JFVklEKGVu Z2luZS0+ZGV2LCAwLCBCWFRfUkVWSURfQTEpKSB7Cj4gICAJCWVuZ2luZS0+aXJxX3NlcW5vX2Jh cnJpZXIgPSBieHRfYV9zZXFub19iYXJyaWVyOwo+ICAgCQllbmdpbmUtPnNldF9zZXFubyA9IGJ4 dF9hX3NldF9zZXFubzsKPiAgIAl9Cj4gQEAgLTE5NDQsNiArMTk0Myw3IEBAIGxvZ2ljYWxfcmlu Z19kZWZhdWx0X2lycXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1bnNpZ25lZCBz aGlmdCkKPiAgIHsKPiAgIAllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9IEdUX1JFTkRFUl9VU0VS X0lOVEVSUlVQVCA8PCBzaGlmdDsKPiAgIAllbmdpbmUtPmlycV9rZWVwX21hc2sgPSBHVF9DT05U RVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwgc2hpZnQ7Cj4gKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZl bmdpbmUtPmlycV9xdWV1ZSk7Cj4gICB9Cj4KPiAgIHN0YXRpYyBpbnQKPiBAQCAtMTk2NCwzMSAr MTk2NCwyOCBAQCBscmNfc2V0dXBfaHdzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK PiAgIAlyZXR1cm4gMDsKPiAgIH0KPgo+IC1zdGF0aWMgaW50Cj4gLWxvZ2ljYWxfcmluZ19pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiArc3RhdGljIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgo+ICtsb2dpY2FsX3Jpbmdfc2V0dXAo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGlkLAo+ICsJCSAgIGNvbnN0IGNoYXIgKm5hbWUs Cj4gKwkJICAgdW5zaWduZWQgZXhlY19pZCwKPiArCQkgICB1bnNpZ25lZCBndWNfaWQsCj4gKwkJ ICAgdW5zaWduZWQgbW1pb19iYXNlLAo+ICsJCSAgIHVuc2lnbmVkIGlycSkKPiAgIHsKPiAgIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gLQlzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqZGN0eCA9IGRldl9wcml2LT5rZXJuZWxfY29udGV4dDsKPiArCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9ICZkZXZfcHJpdi0+ZW5naW5lW2lkXTsKPiAg IAllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2RvbWFpbnM7Cj4gLQlpbnQgcmV0Owo+IC0KPiAt CS8qIEludGVudGlvbmFsbHkgbGVmdCBibGFuay4gKi8KPiAtCWVuZ2luZS0+YnVmZmVyID0gTlVM TDsKPgo+ICAgCWVuZ2luZS0+ZGV2ID0gZGV2OwoKRWVlcCEgSXNuJ3QgdGhpcyB0aGUgImVuZ2lu ZSBpbml0aWFsaXNlZCBhbmQgcmVhZHkgZm9yIHVzZSIgZmxhZz8KCj4gLQlJTklUX0xJU1RfSEVB RCgmZW5naW5lLT5hY3RpdmVfbGlzdCk7Cj4gLQlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5yZXF1 ZXN0X2xpc3QpOwo+IC0JaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KGRldiwgJmVuZ2luZS0+YmF0 Y2hfcG9vbCk7Cj4gLQlpbml0X3dhaXRxdWV1ZV9oZWFkKCZlbmdpbmUtPmlycV9xdWV1ZSk7Cj4g LQo+IC0JSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+YnVmZmVycyk7Cj4gLQlJTklUX0xJU1RfSEVB RCgmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSk7Cj4gLQlzcGluX2xvY2tfaW5pdCgmZW5naW5lLT5l eGVjbGlzdF9sb2NrKTsKPgo+IC0JdGFza2xldF9pbml0KCZlbmdpbmUtPmlycV90YXNrbGV0LAo+ IC0JCSAgICAgaW50ZWxfbHJjX2lycV9oYW5kbGVyLCAodW5zaWduZWQgbG9uZyllbmdpbmUpOwo+ ICsJZW5naW5lLT5uYW1lID0gbmFtZSwKPiArCWVuZ2luZS0+aWQgPSBpZDsKPiArCWVuZ2luZS0+ ZXhlY19pZCA9IGV4ZWNfaWQ7Cj4gKwllbmdpbmUtPmd1Y19pZCA9IGd1Y19pZDsKPiArCWVuZ2lu ZS0+bW1pb19iYXNlID0gbW1pb19iYXNlOwo+Cj4gLQlsb2dpY2FsX3JpbmdfaW5pdF9wbGF0Zm9y bV9pbnZhcmlhbnRzKGVuZ2luZSk7Cj4gKwkvKiBJbnRlbnRpb25hbGx5IGxlZnQgYmxhbmsuICov Cj4gKwllbmdpbmUtPmJ1ZmZlciA9IE5VTEw7Cj4KPiAgIAlmd19kb21haW5zID0gaW50ZWxfdW5j b3JlX2ZvcmNld2FrZV9mb3JfcmVnKGRldl9wcml2LAo+ICAgCQkJCQkJICAgIFJJTkdfRUxTUChl bmdpbmUpLAo+IEBAIC0yMDA0LDYgKzIwMDEsMzEgQEAgbG9naWNhbF9yaW5nX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Cj4gICAJ ZW5naW5lLT5md19kb21haW5zID0gZndfZG9tYWluczsKPgo+ICsJSU5JVF9MSVNUX0hFQUQoJmVu Z2luZS0+YWN0aXZlX2xpc3QpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+cmVxdWVzdF9s aXN0KTsKPiArCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmJ1ZmZlcnMpOwo+ICsJSU5JVF9MSVNU X0hFQUQoJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUpOwo+ICsJc3Bpbl9sb2NrX2luaXQoJmVuZ2lu ZS0+ZXhlY2xpc3RfbG9jayk7Cj4gKwo+ICsJdGFza2xldF9pbml0KCZlbmdpbmUtPmlycV90YXNr bGV0LAo+ICsJCSAgICAgaW50ZWxfbHJjX2lycV9oYW5kbGVyLCAodW5zaWduZWQgbG9uZyllbmdp bmUpOwo+ICsKPiArCWxvZ2ljYWxfcmluZ19pbml0X3BsYXRmb3JtX2ludmFyaWFudHMoZW5naW5l KTsKPiArCWxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhlbmdpbmUpOwo+ICsJbG9naWNhbF9y aW5nX2RlZmF1bHRfaXJxcyhlbmdpbmUsIGlycSk7Cj4gKwo+ICsJaW50ZWxfZW5naW5lX2luaXRf aGFuZ2NoZWNrKGVuZ2luZSk7Cj4gKwlpOTE1X2dlbV9iYXRjaF9wb29sX2luaXQoZW5naW5lLT5k ZXYsICZlbmdpbmUtPmJhdGNoX3Bvb2wpOwo+ICsKPiArCXJldHVybiBlbmdpbmU7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQKPiArbG9naWNhbF9yaW5nX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqZGN0eCA9IHRvX2k5MTUo ZW5naW5lLT5kZXYpLT5rZXJuZWxfY29udGV4dDsKPiArCWludCByZXQ7Cj4gKwo+ICAgCXJldCA9 IGk5MTVfY21kX3BhcnNlcl9pbml0X3JpbmcoZW5naW5lKTsKPiAgIAlpZiAocmV0KQo+ICAgCQln b3RvIGVycm9yOwo+IEBAIC0yMDM2LDIyICsyMDU4LDE3IEBAIGVycm9yOgo+Cj4gICBzdGF0aWMg aW50IGxvZ2ljYWxfcmVuZGVyX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAg ewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9ICZkZXZfcHJpdi0+ZW5naW5l W1JDU107Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gICAJaW50IHJldDsK Pgo+IC0JZW5naW5lLT5uYW1lID0gInJlbmRlciByaW5nIjsKPiAtCWVuZ2luZS0+aWQgPSBSQ1M7 Cj4gLQllbmdpbmUtPmV4ZWNfaWQgPSBJOTE1X0VYRUNfUkVOREVSOwo+IC0JZW5naW5lLT5ndWNf aWQgPSBHVUNfUkVOREVSX0VOR0lORTsKPiAtCWVuZ2luZS0+bW1pb19iYXNlID0gUkVOREVSX1JJ TkdfQkFTRTsKPiAtCj4gLQlsb2dpY2FsX3JpbmdfZGVmYXVsdF9pcnFzKGVuZ2luZSwgR0VOOF9S Q1NfSVJRX1NISUZUKTsKPiArCWVuZ2luZSA9IGxvZ2ljYWxfcmluZ19zZXR1cChkZXYsIFJDUywg InJlbmRlciByaW5nIiwKPiArCQkJCSAgICBJOTE1X0VYRUNfUkVOREVSLAo+ICsJCQkJICAgIEdV Q19SRU5ERVJfRU5HSU5FLAo+ICsJCQkJICAgIFJFTkRFUl9SSU5HX0JBU0UsCj4gKwkJCQkgICAg R0VOOF9SQ1NfSVJRX1NISUZUKTsKCldlIGNvdWxkIHR1cm4gdGhpcyBjb2xsZWN0aW9uIG9mIGFy Z3VtZW50cyBpbnRvIGEgc3RydWN0LCBhbmQgY3JlYXRlIGEgCnN0YXRpYyByZWFkb25seSB0YWJs ZSBvZiB0aGVtLiBUaGF0IHdvdWxkIGVsaW1pbmF0ZSB0aGUgcmlzayBvZiBtaXhpbmcgCnRoZW0g dXAhCgpjb25zdCBzdHJ1Y3QgZW5naW5lX2luZm8gZW5naW5lc1tdID0KeyAgICAgLyogbmFtZSAg ICAgIElEICBleGVjZmxhZyAgICAgICAgICBHdUMgSUQgICAgICAgICAgICAgICAgICAgICBNTUlP IApiYXNlICAgICAgICAgICBJUlEgc2hpZnQgKi8KICAgICB7ICAgInJlbmRlciIsIFJDUywgSTkx NV9FWEVDX1JFTkRFUiwgR1VDX1JFTkRFUl9FTkdJTkUsIApSRU5ERVJfUklOR19CQVNFLCAgIEdF TjhfUkNTX0lSUV9TSElGVCB9LAogICAgIHsgICAiYnNkIiwgICAgQlNELCBJOTE1X0VYRUNfQlNE LCAgICBHVUNfVklERU9fRU5HSU5FLCAKR0VONl9CU0RfUklOR19CQVNFLCBHRU44X1ZDUzFfSVJR X1NISUZUKSwKICAgICAuLi4KfTsKCkFuZCBzaW5jZSBhbGwgdGhlIGNvcnJlc3BvbmRlbmNlcyB3 b3VsZCBiZSBkZWZpbmVkIGluIG9uZSB0YWJsZSwgaXQgCndvdWxkIGJlIG11Y2ggZWFzaWVyIHRv IGNoZWNrIHRoYW4gaHVudGluZyBhcm91bmQgZm9yIG11bHRpcGxlIGZ1bmN0aW9uIApjYWxscy4K Ci5EYXZlLgoKPiAgIAlpZiAoSEFTX0wzX0RQRihkZXYpKQo+ICAgCQllbmdpbmUtPmlycV9rZWVw X21hc2sgfD0gR1RfUkVOREVSX0wzX1BBUklUWV9FUlJPUl9JTlRFUlJVUFQ7Cj4KPiAtCWxvZ2lj YWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhkZXYsIGVuZ2luZSk7Cj4gLQo+ICAgCS8qIE92ZXJyaWRl IHNvbWUgZm9yIHJlbmRlciByaW5nLiAqLwo+ICAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+ PSA5KQo+ICAgCQllbmdpbmUtPmluaXRfaHcgPSBnZW45X2luaXRfcmVuZGVyX3Jpbmc7Cj4gQEAg LTIwNjIsOCArMjA3OSw2IEBAIHN0YXRpYyBpbnQgbG9naWNhbF9yZW5kZXJfcmluZ19pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuOF9lbWl0 X2ZsdXNoX3JlbmRlcjsKPiAgIAllbmdpbmUtPmVtaXRfcmVxdWVzdCA9IGdlbjhfZW1pdF9yZXF1 ZXN0X3JlbmRlcjsKPgo+IC0JZW5naW5lLT5kZXYgPSBkZXY7Cj4gLQo+ICAgCXJldCA9IGludGVs X2luaXRfcGlwZV9jb250cm9sKGVuZ2luZSk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJl dDsKPiBAQCAtMjA3OSw3ICsyMDk0LDcgQEAgc3RhdGljIGludCBsb2dpY2FsX3JlbmRlcl9yaW5n X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJCSAgcmV0KTsKPiAgIAl9Cj4KPiAt CXJldCA9IGxvZ2ljYWxfcmluZ19pbml0KGRldiwgZW5naW5lKTsKPiArCXJldCA9IGxvZ2ljYWxf cmluZ19pbml0KGVuZ2luZSk7Cj4gICAJaWYgKHJldCkgewo+ICAgCQlscmNfZGVzdHJveV93YV9j dHhfb2JqKGVuZ2luZSk7Cj4gICAJfQo+IEBAIC0yMDg5LDcwICsyMTA0LDU0IEBAIHN0YXRpYyBp bnQgbG9naWNhbF9yZW5kZXJfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4KPiAg IHN0YXRpYyBpbnQgbG9naWNhbF9ic2RfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gJmRldl9wcml2LT5l bmdpbmVbVkNTXTsKPiAtCj4gLQllbmdpbmUtPm5hbWUgPSAiYnNkIHJpbmciOwo+IC0JZW5naW5l LT5pZCA9IFZDUzsKPiAtCWVuZ2luZS0+ZXhlY19pZCA9IEk5MTVfRVhFQ19CU0Q7Cj4gLQllbmdp bmUtPmd1Y19pZCA9IEdVQ19WSURFT19FTkdJTkU7Cj4gLQllbmdpbmUtPm1taW9fYmFzZSA9IEdF TjZfQlNEX1JJTkdfQkFTRTsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPgo+ IC0JbG9naWNhbF9yaW5nX2RlZmF1bHRfaXJxcyhlbmdpbmUsIEdFTjhfVkNTMV9JUlFfU0hJRlQp Owo+IC0JbG9naWNhbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKGRldiwgZW5naW5lKTsKPiArCWVuZ2lu ZSA9IGxvZ2ljYWxfcmluZ19zZXR1cChkZXYsIFZDUywgImJzZCByaW5nIiwKPiArCQkJCSAgICBJ OTE1X0VYRUNfQlNELAo+ICsJCQkJICAgIEdVQ19WSURFT19FTkdJTkUsCj4gKwkJCQkgICAgR0VO Nl9CU0RfUklOR19CQVNFLAo+ICsJCQkJICAgIEdFTjhfVkNTMV9JUlFfU0hJRlQpOwo+Cj4gLQly ZXR1cm4gbG9naWNhbF9yaW5nX2luaXQoZGV2LCBlbmdpbmUpOwo+ICsJcmV0dXJuIGxvZ2ljYWxf cmluZ19pbml0KGVuZ2luZSk7Cj4gICB9Cj4KPiAgIHN0YXRpYyBpbnQgbG9naWNhbF9ic2QyX3Jp bmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSA9ICZkZXZfcHJpdi0+ZW5naW5lW1ZDUzJdOwo+IC0KPiAtCWVuZ2lu ZS0+bmFtZSA9ICJic2QyIHJpbmciOwo+IC0JZW5naW5lLT5pZCA9IFZDUzI7Cj4gLQllbmdpbmUt PmV4ZWNfaWQgPSBJOTE1X0VYRUNfQlNEOwo+IC0JZW5naW5lLT5ndWNfaWQgPSBHVUNfVklERU9f RU5HSU5FMjsKPiAtCWVuZ2luZS0+bW1pb19iYXNlID0gR0VOOF9CU0QyX1JJTkdfQkFTRTsKPiAr CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPgo+IC0JbG9naWNhbF9yaW5nX2RlZmF1 bHRfaXJxcyhlbmdpbmUsIEdFTjhfVkNTMl9JUlFfU0hJRlQpOwo+IC0JbG9naWNhbF9yaW5nX2Rl ZmF1bHRfdmZ1bmNzKGRldiwgZW5naW5lKTsKPiArCWVuZ2luZSA9IGxvZ2ljYWxfcmluZ19zZXR1 cChkZXYsIFZDUzIsICJic2QyIHJpbmciLAo+ICsJCQkJICAgIEk5MTVfRVhFQ19CU0QsCj4gKwkJ CQkgICAgR1VDX1ZJREVPX0VOR0lORTIsCj4gKwkJCQkgICAgR0VOOF9CU0QyX1JJTkdfQkFTRSwK PiArCQkJCSAgICBHRU44X1ZDUzJfSVJRX1NISUZUKTsKPgo+IC0JcmV0dXJuIGxvZ2ljYWxfcmlu Z19pbml0KGRldiwgZW5naW5lKTsKPiArCXJldHVybiBsb2dpY2FsX3JpbmdfaW5pdChlbmdpbmUp Owo+ICAgfQo+Cj4gICBzdGF0aWMgaW50IGxvZ2ljYWxfYmx0X3JpbmdfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9 ICZkZXZfcHJpdi0+ZW5naW5lW0JDU107Cj4gLQo+IC0JZW5naW5lLT5uYW1lID0gImJsaXR0ZXIg cmluZyI7Cj4gLQllbmdpbmUtPmlkID0gQkNTOwo+IC0JZW5naW5lLT5leGVjX2lkID0gSTkxNV9F WEVDX0JMVDsKPiAtCWVuZ2luZS0+Z3VjX2lkID0gR1VDX0JMSVRURVJfRU5HSU5FOwo+IC0JZW5n aW5lLT5tbWlvX2Jhc2UgPSBCTFRfUklOR19CQVNFOwo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lOwo+Cj4gLQlsb2dpY2FsX3JpbmdfZGVmYXVsdF9pcnFzKGVuZ2luZSwgR0VOOF9C Q1NfSVJRX1NISUZUKTsKPiAtCWxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhkZXYsIGVuZ2lu ZSk7Cj4gKwllbmdpbmUgPSBsb2dpY2FsX3Jpbmdfc2V0dXAoZGV2LCBCQ1MsICJibGl0dGVyIHJp bmciLAo+ICsJCQkJICAgIEk5MTVfRVhFQ19CTFQsCj4gKwkJCQkgICAgR1VDX0JMSVRURVJfRU5H SU5FLAo+ICsJCQkJICAgIEJMVF9SSU5HX0JBU0UsCj4gKwkJCQkgICAgR0VOOF9CQ1NfSVJRX1NI SUZUKTsKPgo+IC0JcmV0dXJuIGxvZ2ljYWxfcmluZ19pbml0KGRldiwgZW5naW5lKTsKPiArCXJl dHVybiBsb2dpY2FsX3JpbmdfaW5pdChlbmdpbmUpOwo+ICAgfQo+Cj4gICBzdGF0aWMgaW50IGxv Z2ljYWxfdmVib3hfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICB7Cj4gLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0J c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVbVkVDU107 Cj4gLQo+IC0JZW5naW5lLT5uYW1lID0gInZpZGVvIGVuaGFuY2VtZW50IHJpbmciOwo+IC0JZW5n aW5lLT5pZCA9IFZFQ1M7Cj4gLQllbmdpbmUtPmV4ZWNfaWQgPSBJOTE1X0VYRUNfVkVCT1g7Cj4g LQllbmdpbmUtPmd1Y19pZCA9IEdVQ19WSURFT0VOSEFOQ0VfRU5HSU5FOwo+IC0JZW5naW5lLT5t bWlvX2Jhc2UgPSBWRUJPWF9SSU5HX0JBU0U7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7Cj4KPiAtCWxvZ2ljYWxfcmluZ19kZWZhdWx0X2lycXMoZW5naW5lLCBHRU44X1ZFQ1Nf SVJRX1NISUZUKTsKPiAtCWxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhkZXYsIGVuZ2luZSk7 Cj4gKwllbmdpbmUgPSBsb2dpY2FsX3Jpbmdfc2V0dXAoZGV2LCBWRUNTLCAidmlkZW8gZW5oYW5j ZW1lbnQgcmluZyIsCj4gKwkJCQkgICAgSTkxNV9FWEVDX1ZFQk9YLAo+ICsJCQkJICAgIEdVQ19W SURFT0VOSEFOQ0VfRU5HSU5FLAo+ICsJCQkJICAgIFZFQk9YX1JJTkdfQkFTRSwKPiArCQkJCSAg ICBHRU44X1ZFQ1NfSVJRX1NISUZUKTsKPgo+IC0JcmV0dXJuIGxvZ2ljYWxfcmluZ19pbml0KGRl diwgZW5naW5lKTsKPiArCXJldHVybiBsb2dpY2FsX3JpbmdfaW5pdChlbmdpbmUpOwo+ICAgfQo+ Cj4gICAvKioKPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==