From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v3] drm/i915: Small compaction of the engine init code Date: Thu, 23 Jun 2016 12:12:29 +0100 Message-ID: <1466680349-1544-1-git-send-email-tvrtko.ursulin@linux.intel.com> References: <20160623104701.GA28219@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id E18F06E167 for ; Thu, 23 Jun 2016 11:12:32 +0000 (UTC) In-Reply-To: <20160623104701.GA28219@nuc-i3427.alporthouse.com> 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 RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkVmZmVjdGl2 ZWx5IHJlbW92ZXMgb25lIGxheWVyIG9mIGluZGlyZWN0aW9uIGJldHdlZW4gdGhlIG1hc2sgb2YK cG9zc2libGUgZW5naW5lcyBhbmQgdGhlIGVuZ2luZSBjb25zdHJ1Y3RvcnMuIEluc3RlYWQgb2Yg c3BlbGxpbmcKb3V0IGluIGNvZGUgdGhlIG1hcHBpbmcgb2YgSEFTXzxlbmdpbmU+IHRvIGNvbnN0 cnVjdG9ycywgbWFrZXMKbW9yZSB1c2Ugb2YgdGhlIHJlY2VudGx5IGFkZGVkIGRhdGEgZHJpdmVu IGFwcHJvYWNoIGJ5IHB1dHRpbmcKZW5naW5lIGNvbnN0cnVjdG9yIHZmdW5jcyBpbnRvIHRoZSB0 YWJsZSBhcyB3ZWxsLgoKRWZmZWN0IGlzIGZld2VyIGxpbmVzIG9mIHNvdXJjZSBhbmQgc21hbGxl ciBiaW5hcnkuCgpBdCB0aGUgc2FtZSB0aW1lIHNpbXBsaWZ5IHRoZSBlcnJvciBoYW5kbGluZyBz aW5jZSBlbmdpbmUKZGVzdHJ1Y3RvcnMgY2FuIHJ1biBvbiB1bml0aWFsaXplZCBlbmdpbmVzIGFu eXdheS4KClNpbWlsYXIgYXBwcm9hY2ggY291bGQgYmUgZG9uZSBmb3IgbGVnYWN5IHN1Ym1pc3Np b24gaXMgd2FudGVkLgoKdjI6IFJlbW92ZWQgdWdseSBCVUlMRF9CVUdfT05zIGluIGZhdm91ciBv ZiBuZXdseSBpbnRyb2R1Y2VkCiAgICBFTkdJTkVfTUFTSyBhbmQgSEFTX0VOR0lORSBtYWNyb3Mu CiAgICBBbHNvIHJlbW92ZWQgdGhlIGZvcndhcmQgZGVjbGFyYXRpb25zIGJ5IHNodWZmbGluZyBm dW5jdGlvbnMKICAgIGFyb3VuZC4KCnYzOiBXYXJuIHdoZW4gbG9naWNhbF9yaW5ncyB0YWJsZSBk b2VzIG5vdCBjb250YWluIGVub3VnaCBkYXRhCiAgICBhbmQgZGlzYWJsZSB0aGUgZW5naW5lcyB3 aGljaCBjb3VsZCBub3QgYmUgaW5pdGlhbGl6ZWQuCiAgICAoQ2hyaXMgV2lsc29uKQoKU2lnbmVk LW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggIHwgIDI3ICsrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYyB8IDI1NiArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDIg ZmlsZXMgY2hhbmdlZCwgMTI5IGluc2VydGlvbnMoKyksIDE1NCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAppbmRleCA3NGQwYTYxZGU3NWEuLjZkOTZiMTRiNTNjOCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yNzU5LDE3ICsyNzU5LDIyIEBAIHN0cnVjdCBkcm1faTkx NV9jbWRfdGFibGUgewogI2RlZmluZSBJU19HRU44KGRldikJKElOVEVMX0lORk8oZGV2KS0+Z2Vu X21hc2sgJiBCSVQoNykpCiAjZGVmaW5lIElTX0dFTjkoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5n ZW5fbWFzayAmIEJJVCg4KSkKIAotI2RlZmluZSBSRU5ERVJfUklORwkJKDE8PFJDUykKLSNkZWZp bmUgQlNEX1JJTkcJCSgxPDxWQ1MpCi0jZGVmaW5lIEJMVF9SSU5HCQkoMTw8QkNTKQotI2RlZmlu ZSBWRUJPWF9SSU5HCQkoMTw8VkVDUykKLSNkZWZpbmUgQlNEMl9SSU5HCQkoMTw8VkNTMikKLSNk ZWZpbmUgQUxMX0VOR0lORVMJCSh+MCkKLQotI2RlZmluZSBIQVNfQlNEKGRldikJCShJTlRFTF9J TkZPKGRldiktPnJpbmdfbWFzayAmIEJTRF9SSU5HKQotI2RlZmluZSBIQVNfQlNEMihkZXYpCQko SU5URUxfSU5GTyhkZXYpLT5yaW5nX21hc2sgJiBCU0QyX1JJTkcpCi0jZGVmaW5lIEhBU19CTFQo ZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+cmluZ19tYXNrICYgQkxUX1JJTkcpCi0jZGVmaW5lIEhB U19WRUJPWChkZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5yaW5nX21hc2sgJiBWRUJPWF9SSU5HKQor I2RlZmluZSBFTkdJTkVfTUFTSyhpZCkJQklUKGlkKQorI2RlZmluZSBSRU5ERVJfUklORwlFTkdJ TkVfTUFTSyhSQ1MpCisjZGVmaW5lIEJTRF9SSU5HCUVOR0lORV9NQVNLKFZDUykKKyNkZWZpbmUg QkxUX1JJTkcJRU5HSU5FX01BU0soQkNTKQorI2RlZmluZSBWRUJPWF9SSU5HCUVOR0lORV9NQVNL KFZFQ1MpCisjZGVmaW5lIEJTRDJfUklORwlFTkdJTkVfTUFTSyhWQ1MyKQorI2RlZmluZSBBTExf RU5HSU5FUwkofjApCisKKyNkZWZpbmUgSEFTX0VOR0lORShkZXZfcHJpdiwgaWQpIFwKKwkoSU5U RUxfSU5GTyhkZXZfcHJpdiktPnJpbmdfbWFzayAmIEVOR0lORV9NQVNLKGlkKSkKKworI2RlZmlu ZSBIQVNfQlNEKGRldl9wcml2KQlIQVNfRU5HSU5FKGRldl9wcml2LCBWQ1MpCisjZGVmaW5lIEhB U19CU0QyKGRldl9wcml2KQlIQVNfRU5HSU5FKGRldl9wcml2LCBWQ1MyKQorI2RlZmluZSBIQVNf QkxUKGRldl9wcml2KQlIQVNfRU5HSU5FKGRldl9wcml2LCBCQ1MpCisjZGVmaW5lIEhBU19WRUJP WChkZXZfcHJpdikJSEFTX0VOR0lORShkZXZfcHJpdiwgVkVDUykKKwogI2RlZmluZSBIQVNfTExD KGRldikJCShJTlRFTF9JTkZPKGRldiktPmhhc19sbGMpCiAjZGVmaW5lIEhBU19TTk9PUChkZXYp CQkoSU5URUxfSU5GTyhkZXYpLT5oYXNfc25vb3ApCiAjZGVmaW5lIEhBU19FRFJBTShkZXYpCQko X19JOTE1X18oZGV2KS0+ZWRyYW1fY2FwICYgRURSQU1fRU5BQkxFRCkKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMKaW5kZXggZGViZWQwMTFhOTU4Li5jODBhYTIyZDMzNjcgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jCkBAIC0yMDE2LDEyICsyMDE2LDkwIEBAIGxyY19zZXR1cF9od3Moc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50Cits b2dpY2FsX3JpbmdfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmRjdHggPSBlbmdpbmUtPmk5MTUtPmtlcm5lbF9jb250ZXh0 OworCWludCByZXQ7CisKKwlyZXQgPSBpOTE1X2NtZF9wYXJzZXJfaW5pdF9yaW5nKGVuZ2luZSk7 CisJaWYgKHJldCkKKwkJZ290byBlcnJvcjsKKworCXJldCA9IGV4ZWNsaXN0c19jb250ZXh0X2Rl ZmVycmVkX2FsbG9jKGRjdHgsIGVuZ2luZSk7CisJaWYgKHJldCkKKwkJZ290byBlcnJvcjsKKwor CS8qIEFzIHRoaXMgaXMgdGhlIGRlZmF1bHQgY29udGV4dCwgYWx3YXlzIHBpbiBpdCAqLworCXJl dCA9IGludGVsX2xyX2NvbnRleHRfcGluKGRjdHgsIGVuZ2luZSk7CisJaWYgKHJldCkgeworCQlE Uk1fRVJST1IoIkZhaWxlZCB0byBwaW4gY29udGV4dCBmb3IgJXM6ICVkXG4iLAorCQkJICBlbmdp bmUtPm5hbWUsIHJldCk7CisJCWdvdG8gZXJyb3I7CisJfQorCisJLyogQW5kIHNldHVwIHRoZSBo YXJkd2FyZSBzdGF0dXMgcGFnZS4gKi8KKwlyZXQgPSBscmNfc2V0dXBfaHdzKGVuZ2luZSwgZGN0 eC0+ZW5naW5lW2VuZ2luZS0+aWRdLnN0YXRlKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigi RmFpbGVkIHRvIHNldCB1cCBod3MgJXM6ICVkXG4iLCBlbmdpbmUtPm5hbWUsIHJldCk7CisJCWdv dG8gZXJyb3I7CisJfQorCisJcmV0dXJuIDA7CisKK2Vycm9yOgorCWludGVsX2xvZ2ljYWxfcmlu Z19jbGVhbnVwKGVuZ2luZSk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBsb2dpY2Fs X3JlbmRlcl9yaW5nX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKKwlpbnQgcmV0 OworCisJaWYgKEhBU19MM19EUEYoZGV2X3ByaXYpKQorCQllbmdpbmUtPmlycV9rZWVwX21hc2sg fD0gR1RfUkVOREVSX0wzX1BBUklUWV9FUlJPUl9JTlRFUlJVUFQ7CisKKwkvKiBPdmVycmlkZSBz b21lIGZvciByZW5kZXIgcmluZy4gKi8KKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQor CQllbmdpbmUtPmluaXRfaHcgPSBnZW45X2luaXRfcmVuZGVyX3Jpbmc7CisJZWxzZQorCQllbmdp bmUtPmluaXRfaHcgPSBnZW44X2luaXRfcmVuZGVyX3Jpbmc7CisJZW5naW5lLT5pbml0X2NvbnRl eHQgPSBnZW44X2luaXRfcmNzX2NvbnRleHQ7CisJZW5naW5lLT5jbGVhbnVwID0gaW50ZWxfZmlu aV9waXBlX2NvbnRyb2w7CisJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuOF9lbWl0X2ZsdXNoX3Jl bmRlcjsKKwllbmdpbmUtPmVtaXRfcmVxdWVzdCA9IGdlbjhfZW1pdF9yZXF1ZXN0X3JlbmRlcjsK KworCXJldCA9IGludGVsX2luaXRfcGlwZV9jb250cm9sKGVuZ2luZSk7CisJaWYgKHJldCkKKwkJ cmV0dXJuIHJldDsKKworCXJldCA9IGludGVsX2luaXRfd29ya2Fyb3VuZF9iYihlbmdpbmUpOwor CWlmIChyZXQpIHsKKwkJLyoKKwkJICogV2UgY29udGludWUgZXZlbiBpZiB3ZSBmYWlsIHRvIGlu aXRpYWxpemUgV0EgYmF0Y2gKKwkJICogYmVjYXVzZSB3ZSBvbmx5IGV4cGVjdCByYXJlIGdsaXRj aGVzIGJ1dCBub3RoaW5nCisJCSAqIGNyaXRpY2FsIHRvIHByZXZlbnQgdXMgZnJvbSB1c2luZyBH UFUKKwkJICovCisJCURSTV9FUlJPUigiV0EgYmF0Y2ggYnVmZmVyIGluaXRpYWxpemF0aW9uIGZh aWxlZDogJWRcbiIsCisJCQkgIHJldCk7CisJfQorCisJcmV0ID0gbG9naWNhbF9yaW5nX2luaXQo ZW5naW5lKTsKKwlpZiAocmV0KSB7CisJCWxyY19kZXN0cm95X3dhX2N0eF9vYmooZW5naW5lKTsK Kwl9CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IGxvZ2ljYWxfcmlu Z19pbmZvIHsKIAljb25zdCBjaGFyICpuYW1lOwogCXVuc2lnbmVkIGV4ZWNfaWQ7CiAJdW5zaWdu ZWQgZ3VjX2lkOwogCXUzMiBtbWlvX2Jhc2U7CiAJdW5zaWduZWQgaXJxX3NoaWZ0OworCWludCAo KmluaXQpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiB9IGxvZ2ljYWxfcmluZ3Nb XSA9IHsKIAlbUkNTXSA9IHsKIAkJLm5hbWUgPSAicmVuZGVyIHJpbmciLApAQCAtMjAyOSw2ICsy MTA3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsb2dpY2FsX3JpbmdfaW5mbyB7CiAJCS5ndWNf aWQgPSBHVUNfUkVOREVSX0VOR0lORSwKIAkJLm1taW9fYmFzZSA9IFJFTkRFUl9SSU5HX0JBU0Us CiAJCS5pcnFfc2hpZnQgPSBHRU44X1JDU19JUlFfU0hJRlQsCisJCS5pbml0ID0gbG9naWNhbF9y ZW5kZXJfcmluZ19pbml0LAogCX0sCiAJW0JDU10gPSB7CiAJCS5uYW1lID0gImJsaXR0ZXIgcmlu ZyIsCkBAIC0yMDM2LDYgKzIxMTUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGxvZ2ljYWxfcmlu Z19pbmZvIHsKIAkJLmd1Y19pZCA9IEdVQ19CTElUVEVSX0VOR0lORSwKIAkJLm1taW9fYmFzZSA9 IEJMVF9SSU5HX0JBU0UsCiAJCS5pcnFfc2hpZnQgPSBHRU44X0JDU19JUlFfU0hJRlQsCisJCS5p bml0ID0gbG9naWNhbF9yaW5nX2luaXQsCiAJfSwKIAlbVkNTXSA9IHsKIAkJLm5hbWUgPSAiYnNk IHJpbmciLApAQCAtMjA0Myw2ICsyMTIzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsb2dpY2Fs X3JpbmdfaW5mbyB7CiAJCS5ndWNfaWQgPSBHVUNfVklERU9fRU5HSU5FLAogCQkubW1pb19iYXNl ID0gR0VONl9CU0RfUklOR19CQVNFLAogCQkuaXJxX3NoaWZ0ID0gR0VOOF9WQ1MxX0lSUV9TSElG VCwKKwkJLmluaXQgPSBsb2dpY2FsX3JpbmdfaW5pdCwKIAl9LAogCVtWQ1MyXSA9IHsKIAkJLm5h bWUgPSAiYnNkMiByaW5nIiwKQEAgLTIwNTAsNiArMjEzMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgbG9naWNhbF9yaW5nX2luZm8gewogCQkuZ3VjX2lkID0gR1VDX1ZJREVPX0VOR0lORTIsCiAJ CS5tbWlvX2Jhc2UgPSBHRU44X0JTRDJfUklOR19CQVNFLAogCQkuaXJxX3NoaWZ0ID0gR0VOOF9W Q1MyX0lSUV9TSElGVCwKKwkJLmluaXQgPSBsb2dpY2FsX3JpbmdfaW5pdCwKIAl9LAogCVtWRUNT XSA9IHsKIAkJLm5hbWUgPSAidmlkZW8gZW5oYW5jZW1lbnQgcmluZyIsCkBAIC0yMDU3LDE0ICsy MTM5LDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbG9naWNhbF9yaW5nX2luZm8gewogCQkuZ3Vj X2lkID0gR1VDX1ZJREVPRU5IQU5DRV9FTkdJTkUsCiAJCS5tbWlvX2Jhc2UgPSBWRUJPWF9SSU5H X0JBU0UsCiAJCS5pcnFfc2hpZnQgPSBHRU44X1ZFQ1NfSVJRX1NISUZULAorCQkuaW5pdCA9IGxv Z2ljYWxfcmluZ19pbml0LAogCX0sCiB9OwogCiBzdGF0aWMgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqCi1sb2dpY2FsX3Jpbmdfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBpbnRl bF9lbmdpbmVfaWQgaWQpCitsb2dpY2FsX3Jpbmdfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBlbnVtIGludGVsX2VuZ2luZV9pZCBpZCkKIHsKIAljb25zdCBzdHJ1Y3Qg bG9naWNhbF9yaW5nX2luZm8gKmluZm8gPSAmbG9naWNhbF9yaW5nc1tpZF07Ci0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSA9ICZkZXZfcHJpdi0+ZW5naW5lW2lkXTsKIAllbnVtIGZvcmNld2Fr ZV9kb21haW5zIGZ3X2RvbWFpbnM7CiAKQEAgLTIxMDcsMTY5ICsyMTg5LDU3IEBAIGxvZ2ljYWxf cmluZ19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIGludGVsX2VuZ2luZV9pZCBp ZCkKIAlsb2dpY2FsX3JpbmdfZGVmYXVsdF9pcnFzKGVuZ2luZSwgaW5mby0+aXJxX3NoaWZ0KTsK IAogCWludGVsX2VuZ2luZV9pbml0X2hhbmdjaGVjayhlbmdpbmUpOwotCWk5MTVfZ2VtX2JhdGNo X3Bvb2xfaW5pdChkZXYsICZlbmdpbmUtPmJhdGNoX3Bvb2wpOworCWk5MTVfZ2VtX2JhdGNoX3Bv b2xfaW5pdChkZXZfcHJpdi0+ZGV2LCAmZW5naW5lLT5iYXRjaF9wb29sKTsKIAogCXJldHVybiBl bmdpbmU7CiB9CiAKLXN0YXRpYyBpbnQKLWxvZ2ljYWxfcmluZ19pbml0KHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKLXsKLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqZGN0eCA9IGVu Z2luZS0+aTkxNS0+a2VybmVsX2NvbnRleHQ7Ci0JaW50IHJldDsKLQotCXJldCA9IGk5MTVfY21k X3BhcnNlcl9pbml0X3JpbmcoZW5naW5lKTsKLQlpZiAocmV0KQotCQlnb3RvIGVycm9yOwotCi0J cmV0ID0gZXhlY2xpc3RzX2NvbnRleHRfZGVmZXJyZWRfYWxsb2MoZGN0eCwgZW5naW5lKTsKLQlp ZiAocmV0KQotCQlnb3RvIGVycm9yOwotCi0JLyogQXMgdGhpcyBpcyB0aGUgZGVmYXVsdCBjb250 ZXh0LCBhbHdheXMgcGluIGl0ICovCi0JcmV0ID0gaW50ZWxfbHJfY29udGV4dF9waW4oZGN0eCwg ZW5naW5lKTsKLQlpZiAocmV0KSB7Ci0JCURSTV9FUlJPUigiRmFpbGVkIHRvIHBpbiBjb250ZXh0 IGZvciAlczogJWRcbiIsCi0JCQkgIGVuZ2luZS0+bmFtZSwgcmV0KTsKLQkJZ290byBlcnJvcjsK LQl9Ci0KLQkvKiBBbmQgc2V0dXAgdGhlIGhhcmR3YXJlIHN0YXR1cyBwYWdlLiAqLwotCXJldCA9 IGxyY19zZXR1cF9od3MoZW5naW5lLCBkY3R4LT5lbmdpbmVbZW5naW5lLT5pZF0uc3RhdGUpOwot CWlmIChyZXQpIHsKLQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gc2V0IHVwIGh3cyAlczogJWRcbiIs IGVuZ2luZS0+bmFtZSwgcmV0KTsKLQkJZ290byBlcnJvcjsKLQl9Ci0KLQlyZXR1cm4gMDsKLQot ZXJyb3I6Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2NsZWFudXAoZW5naW5lKTsKLQlyZXR1cm4gcmV0 OwotfQotCi1zdGF0aWMgaW50IGxvZ2ljYWxfcmVuZGVyX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQotewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGxvZ2ljYWxf cmluZ19zZXR1cChkZXYsIFJDUyk7Ci0JaW50IHJldDsKLQotCWlmIChIQVNfTDNfRFBGKGRldikp Ci0JCWVuZ2luZS0+aXJxX2tlZXBfbWFzayB8PSBHVF9SRU5ERVJfTDNfUEFSSVRZX0VSUk9SX0lO VEVSUlVQVDsKLQotCS8qIE92ZXJyaWRlIHNvbWUgZm9yIHJlbmRlciByaW5nLiAqLwotCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQotCQllbmdpbmUtPmluaXRfaHcgPSBnZW45X2luaXRf cmVuZGVyX3Jpbmc7Ci0JZWxzZQotCQllbmdpbmUtPmluaXRfaHcgPSBnZW44X2luaXRfcmVuZGVy X3Jpbmc7Ci0JZW5naW5lLT5pbml0X2NvbnRleHQgPSBnZW44X2luaXRfcmNzX2NvbnRleHQ7Ci0J ZW5naW5lLT5jbGVhbnVwID0gaW50ZWxfZmluaV9waXBlX2NvbnRyb2w7Ci0JZW5naW5lLT5lbWl0 X2ZsdXNoID0gZ2VuOF9lbWl0X2ZsdXNoX3JlbmRlcjsKLQllbmdpbmUtPmVtaXRfcmVxdWVzdCA9 IGdlbjhfZW1pdF9yZXF1ZXN0X3JlbmRlcjsKLQotCXJldCA9IGludGVsX2luaXRfcGlwZV9jb250 cm9sKGVuZ2luZSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldCA9IGludGVsX2lu aXRfd29ya2Fyb3VuZF9iYihlbmdpbmUpOwotCWlmIChyZXQpIHsKLQkJLyoKLQkJICogV2UgY29u dGludWUgZXZlbiBpZiB3ZSBmYWlsIHRvIGluaXRpYWxpemUgV0EgYmF0Y2gKLQkJICogYmVjYXVz ZSB3ZSBvbmx5IGV4cGVjdCByYXJlIGdsaXRjaGVzIGJ1dCBub3RoaW5nCi0JCSAqIGNyaXRpY2Fs IHRvIHByZXZlbnQgdXMgZnJvbSB1c2luZyBHUFUKLQkJICovCi0JCURSTV9FUlJPUigiV0EgYmF0 Y2ggYnVmZmVyIGluaXRpYWxpemF0aW9uIGZhaWxlZDogJWRcbiIsCi0JCQkgIHJldCk7Ci0JfQot Ci0JcmV0ID0gbG9naWNhbF9yaW5nX2luaXQoZW5naW5lKTsKLQlpZiAocmV0KSB7Ci0JCWxyY19k ZXN0cm95X3dhX2N0eF9vYmooZW5naW5lKTsKLQl9Ci0KLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0 aWMgaW50IGxvZ2ljYWxfYnNkX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQotewot CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGxvZ2ljYWxfcmluZ19zZXR1cChkZXYs IFZDUyk7Ci0KLQlyZXR1cm4gbG9naWNhbF9yaW5nX2luaXQoZW5naW5lKTsKLX0KLQotc3RhdGlj IGludCBsb2dpY2FsX2JzZDJfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCi17Ci0J c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gbG9naWNhbF9yaW5nX3NldHVwKGRldiwg VkNTMik7Ci0KLQlyZXR1cm4gbG9naWNhbF9yaW5nX2luaXQoZW5naW5lKTsKLX0KLQotc3RhdGlj IGludCBsb2dpY2FsX2JsdF9yaW5nX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKLXsKLQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBsb2dpY2FsX3Jpbmdfc2V0dXAoZGV2LCBC Q1MpOwotCi0JcmV0dXJuIGxvZ2ljYWxfcmluZ19pbml0KGVuZ2luZSk7Ci19Ci0KLXN0YXRpYyBp bnQgbG9naWNhbF92ZWJveF9yaW5nX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKLXsKLQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBsb2dpY2FsX3Jpbmdfc2V0dXAoZGV2LCBW RUNTKTsKLQotCXJldHVybiBsb2dpY2FsX3JpbmdfaW5pdChlbmdpbmUpOwotfQotCiAvKioKICAq IGludGVsX2xvZ2ljYWxfcmluZ3NfaW5pdCgpIC0gYWxsb2NhdGUsIHBvcHVsYXRlIGFuZCBpbml0 IHRoZSBFbmdpbmUgQ29tbWFuZCBTdHJlYW1lcnMKICAqIEBkZXY6IERSTSBkZXZpY2UuCiAgKgot ICogVGhpcyBmdW5jdGlvbiBpbml0cyB0aGUgZW5naW5lcyBmb3IgYW4gRXhlY2xpc3RzIHN1Ym1p c3Npb24gc3R5bGUgKHRoZSBlcXVpdmFsZW50IGluIHRoZQotICogbGVnYWN5IHJpbmdidWZmZXIg c3VibWlzc2lvbiB3b3JsZCB3b3VsZCBiZSBpOTE1X2dlbV9pbml0X2VuZ2luZXMpLiBJdCBkb2Vz IGl0IG9ubHkgZm9yCi0gKiB0aG9zZSBlbmdpbmVzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIGhh cmR3YXJlLgorICogVGhpcyBmdW5jdGlvbiBpbml0cyB0aGUgZW5naW5lcyBmb3IgYW4gRXhlY2xp c3RzIHN1Ym1pc3Npb24gc3R5bGUgKHRoZQorICogZXF1aXZhbGVudCBpbiB0aGUgbGVnYWN5IHJp bmdidWZmZXIgc3VibWlzc2lvbiB3b3JsZCB3b3VsZCBiZQorICogaTkxNV9nZW1faW5pdF9lbmdp bmVzKS4gSXQgZG9lcyBpdCBvbmx5IGZvciB0aG9zZSBlbmdpbmVzIHRoYXQgYXJlIHByZXNlbnQg aW4KKyAqIHRoZSBoYXJkd2FyZS4KICAqCiAgKiBSZXR1cm46IG5vbi16ZXJvIGlmIHRoZSBpbml0 aWFsaXphdGlvbiBmYWlsZWQuCiAgKi8KIGludCBpbnRlbF9sb2dpY2FsX3JpbmdzX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsK Kwl1bnNpZ25lZCBpbnQgbWFzayA9IDA7CisJdW5zaWduZWQgaW50IGk7CiAJaW50IHJldDsKIAot CXJldCA9IGxvZ2ljYWxfcmVuZGVyX3JpbmdfaW5pdChkZXYpOwotCWlmIChyZXQpCi0JCXJldHVy biByZXQ7Ci0KLQlpZiAoSEFTX0JTRChkZXYpKSB7Ci0JCXJldCA9IGxvZ2ljYWxfYnNkX3Jpbmdf aW5pdChkZXYpOwotCQlpZiAocmV0KQotCQkJZ290byBjbGVhbnVwX3JlbmRlcl9yaW5nOwotCX0K LQotCWlmIChIQVNfQkxUKGRldikpIHsKLQkJcmV0ID0gbG9naWNhbF9ibHRfcmluZ19pbml0KGRl dik7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGNsZWFudXBfYnNkX3Jpbmc7Ci0JfQotCi0JaWYgKEhB U19WRUJPWChkZXYpKSB7Ci0JCXJldCA9IGxvZ2ljYWxfdmVib3hfcmluZ19pbml0KGRldik7Ci0J CWlmIChyZXQpCi0JCQlnb3RvIGNsZWFudXBfYmx0X3Jpbmc7CisJZm9yIChpID0gMDsKKwkJaSA8 IEk5MTVfTlVNX0VOR0lORVMgJiYgaSA8IEFSUkFZX1NJWkUobG9naWNhbF9yaW5ncyk7IGkrKykg eworCQlpZiAoSEFTX0VOR0lORShkZXZfcHJpdiwgaSkpIHsKKwkJCWVuZ2luZSA9IGxvZ2ljYWxf cmluZ19zZXR1cChkZXZfcHJpdiwgaSk7CisJCQlyZXQgPSBsb2dpY2FsX3JpbmdzW2ldLmluaXQo ZW5naW5lKTsKKwkJCWlmIChyZXQpCisJCQkJZ290byBjbGVhbnVwOworCQkJbWFzayB8PSBFTkdJ TkVfTUFTSyhpKTsKKwkJfQogCX0KIAotCWlmIChIQVNfQlNEMihkZXYpKSB7Ci0JCXJldCA9IGxv Z2ljYWxfYnNkMl9yaW5nX2luaXQoZGV2KTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gY2xlYW51cF92 ZWJveF9yaW5nOworCS8qCisJICogQ2F0Y2ggZmFpbHVyZXMgdG8gdXBkYXRlIGxvZ2ljYWxfcmlu Z3MgdGFibGUgd2hlbiB0aGUgbmV3IGVuZ2luZXMKKwkgKiBhcmUgYWRkZWQgdG8gdGhlIGRyaXZl ciBieSBhIHdhcm5pbmcgYW5kIGRpc2FibGluZyB0aGUgZm9yZ290dGVuCisJICogZW5naW5lcy4K KwkgKi8KKwlpZiAoV0FSTl9PTihtYXNrICE9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5yaW5nX21h c2spKSB7CisJCXN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAqaW5mbyA9CisJCQkoc3RydWN0IGlu dGVsX2RldmljZV9pbmZvICopJmRldl9wcml2LT5pbmZvOworCQlpbmZvLT5yaW5nX21hc2sgPSBt YXNrOwogCX0KIAogCXJldHVybiAwOwogCi1jbGVhbnVwX3ZlYm94X3Jpbmc6Ci0JaW50ZWxfbG9n aWNhbF9yaW5nX2NsZWFudXAoJmRldl9wcml2LT5lbmdpbmVbVkVDU10pOwotY2xlYW51cF9ibHRf cmluZzoKLQlpbnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cCgmZGV2X3ByaXYtPmVuZ2luZVtCQ1Nd KTsKLWNsZWFudXBfYnNkX3Jpbmc6Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2NsZWFudXAoJmRldl9w cml2LT5lbmdpbmVbVkNTXSk7Ci1jbGVhbnVwX3JlbmRlcl9yaW5nOgotCWludGVsX2xvZ2ljYWxf cmluZ19jbGVhbnVwKCZkZXZfcHJpdi0+ZW5naW5lW1JDU10pOworY2xlYW51cDoKKwlmb3IgKGkg PSAwOyBpIDwgSTkxNV9OVU1fRU5HSU5FUzsgaSsrKQorCQlpbnRlbF9sb2dpY2FsX3JpbmdfY2xl YW51cCgmZGV2X3ByaXYtPmVuZ2luZVtpXSk7CiAKIAlyZXR1cm4gcmV0OwogfQotLSAKMS45LjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=