From mboxrd@z Thu Jan 1 00:00:00 1970 From: Qiang Yu Subject: [PATCH RFC 09/24] drm/lima: add GPU device functions Date: Sat, 19 May 2018 14:52:28 +0800 Message-ID: <20180519065243.27600-10-yuq825@gmail.com> References: <20180519065243.27600-1-yuq825@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pl0-x241.google.com (mail-pl0-x241.google.com [IPv6:2607:f8b0:400e:c01::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 11BBA6EEB2 for ; Sat, 19 May 2018 06:53:50 +0000 (UTC) Received: by mail-pl0-x241.google.com with SMTP id v24-v6so5842965plo.3 for ; Fri, 18 May 2018 23:53:50 -0700 (PDT) In-Reply-To: <20180519065243.27600-1-yuq825@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Simon Shields , Marek Vasut , Connor Abbott , Neil Armstrong , Andrei Paulau <7134956@gmail.com>, Vasily Khoruzhick , Qiang Yu , Erico Nunes List-Id: dri-devel@lists.freedesktop.org RnJvbTogTGltYSBQcm9qZWN0IERldmVsb3BlcnMgPGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmc+CgpTaWduZWQtb2ZmLWJ5OiBRaWFuZyBZdSA8eXVxODI1QGdtYWlsLmNvbT4KU2lnbmVk LW9mZi1ieTogU2ltb24gU2hpZWxkcyA8c2ltb25AbGluZWFnZW9zLm9yZz4KU2lnbmVkLW9mZi1i eTogSGVpa28gU3R1ZWJuZXIgPGhlaWtvQHNudGVjaC5kZT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v bGltYS9saW1hX2RldmljZS5jIHwgNDA3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2RldmljZS5oIHwgMTM2ICsrKysrKysrKysKIDIgZmls ZXMgY2hhbmdlZCwgNTQzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vbGltYS9saW1hX2RldmljZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2xpbWEvbGltYV9kZXZpY2UuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9s aW1hL2xpbWFfZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2RldmljZS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTZjMzkwNWEwYzg1Ci0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9kZXZpY2UuYwpAQCAtMCww ICsxLDQwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IExpbWEgUHJvamVjdAor ICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt aXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhl IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJl IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv biBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBI T0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S CisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4g VEhFIFNPRlRXQVJFLgorICovCisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+ CisjaW5jbHVkZSA8bGludXgvcmVzZXQuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNs dWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2Rldmlj ZS5oPgorCisjaW5jbHVkZSAibGltYV9kZXZpY2UuaCIKKyNpbmNsdWRlICJsaW1hX2dwLmgiCisj aW5jbHVkZSAibGltYV9wcC5oIgorI2luY2x1ZGUgImxpbWFfbW11LmgiCisjaW5jbHVkZSAibGlt YV9wbXUuaCIKKyNpbmNsdWRlICJsaW1hX2wyX2NhY2hlLmgiCisjaW5jbHVkZSAibGltYV9kbGJ1 LmgiCisjaW5jbHVkZSAibGltYV9iY2FzdC5oIgorI2luY2x1ZGUgImxpbWFfdm0uaCIKKworc3Ry dWN0IGxpbWFfaXBfZGVzYyB7CisJY2hhciAqbmFtZTsKKwljaGFyICppcnFfbmFtZTsKKwlib29s IG11c3RfaGF2ZVtsaW1hX2dwdV9udW1dOworCWludCBvZmZzZXRbbGltYV9ncHVfbnVtXTsKKwor CWludCAoKmluaXQpKHN0cnVjdCBsaW1hX2lwICopOworCXZvaWQgKCpmaW5pKShzdHJ1Y3QgbGlt YV9pcCAqKTsKK307CisKKyNkZWZpbmUgTElNQV9JUF9ERVNDKGlwbmFtZSwgbXN0MCwgbXN0MSwg b2ZmMCwgb2ZmMSwgZnVuYywgaXJxKSBcCisJW2xpbWFfaXBfIyNpcG5hbWVdID0geyBcCisJCS5u YW1lID0gI2lwbmFtZSwgXAorCQkuaXJxX25hbWUgPSBpcnEsIFwKKwkJLm11c3RfaGF2ZSA9IHsg XAorCQkJW2xpbWFfZ3B1X21hbGk0MDBdID0gbXN0MCwgXAorCQkJW2xpbWFfZ3B1X21hbGk0NTBd ID0gbXN0MSwgXAorCQl9LCBcCisJCS5vZmZzZXQgPSB7IFwKKwkJCVtsaW1hX2dwdV9tYWxpNDAw XSA9IG9mZjAsIFwKKwkJCVtsaW1hX2dwdV9tYWxpNDUwXSA9IG9mZjEsIFwKKwkJfSwgXAorCQku aW5pdCA9IGxpbWFfIyNmdW5jIyNfaW5pdCwgXAorCQkuZmluaSA9IGxpbWFfIyNmdW5jIyNfZmlu aSwgXAorCX0KKworc3RhdGljIHN0cnVjdCBsaW1hX2lwX2Rlc2MgbGltYV9pcF9kZXNjW2xpbWFf aXBfbnVtXSA9IHsKKwlMSU1BX0lQX0RFU0MocG11LCAgICAgICAgIGZhbHNlLCBmYWxzZSwgMHgw MjAwMCwgMHgwMjAwMCwgcG11LCAgICAgICJwbXUiKSwKKwlMSU1BX0lQX0RFU0MobDJfY2FjaGUw LCAgIHRydWUsICB0cnVlLCAgMHgwMTAwMCwgMHgxMDAwMCwgbDJfY2FjaGUsIE5VTEwpLAorCUxJ TUFfSVBfREVTQyhsMl9jYWNoZTEsICAgZmFsc2UsIHRydWUsICAtMSwgICAgICAweDAxMDAwLCBs Ml9jYWNoZSwgTlVMTCksCisJTElNQV9JUF9ERVNDKGwyX2NhY2hlMiwgICBmYWxzZSwgZmFsc2Us IC0xLCAgICAgIDB4MTEwMDAsIGwyX2NhY2hlLCBOVUxMKSwKKwlMSU1BX0lQX0RFU0MoZ3AsICAg ICAgICAgIHRydWUsICB0cnVlLCAgMHgwMDAwMCwgMHgwMDAwMCwgZ3AsICAgICAgICJncCIpLAor CUxJTUFfSVBfREVTQyhwcDAsICAgICAgICAgdHJ1ZSwgIHRydWUsICAweDA4MDAwLCAweDA4MDAw LCBwcCwgICAgICAgInBwMCIpLAorCUxJTUFfSVBfREVTQyhwcDEsICAgICAgICAgZmFsc2UsIGZh bHNlLCAweDBBMDAwLCAweDBBMDAwLCBwcCwgICAgICAgInBwMSIpLAorCUxJTUFfSVBfREVTQyhw cDIsICAgICAgICAgZmFsc2UsIGZhbHNlLCAweDBDMDAwLCAweDBDMDAwLCBwcCwgICAgICAgInBw MiIpLAorCUxJTUFfSVBfREVTQyhwcDMsICAgICAgICAgZmFsc2UsIGZhbHNlLCAweDBFMDAwLCAw eDBFMDAwLCBwcCwgICAgICAgInBwMyIpLAorCUxJTUFfSVBfREVTQyhwcDQsICAgICAgICAgZmFs c2UsIGZhbHNlLCAtMSwgICAgICAweDI4MDAwLCBwcCwgICAgICAgInBwNCIpLAorCUxJTUFfSVBf REVTQyhwcDUsICAgICAgICAgZmFsc2UsIGZhbHNlLCAtMSwgICAgICAweDJBMDAwLCBwcCwgICAg ICAgInBwNSIpLAorCUxJTUFfSVBfREVTQyhwcDYsICAgICAgICAgZmFsc2UsIGZhbHNlLCAtMSwg ICAgICAweDJDMDAwLCBwcCwgICAgICAgInBwNiIpLAorCUxJTUFfSVBfREVTQyhwcDcsICAgICAg ICAgZmFsc2UsIGZhbHNlLCAtMSwgICAgICAweDJFMDAwLCBwcCwgICAgICAgInBwNyIpLAorCUxJ TUFfSVBfREVTQyhncG1tdSwgICAgICAgdHJ1ZSwgIHRydWUsICAweDAzMDAwLCAweDAzMDAwLCBt bXUsICAgICAgImdwbW11IiksCisJTElNQV9JUF9ERVNDKHBwbW11MCwgICAgICB0cnVlLCAgdHJ1 ZSwgIDB4MDQwMDAsIDB4MDQwMDAsIG1tdSwgICAgICAicHBtbXUwIiksCisJTElNQV9JUF9ERVND KHBwbW11MSwgICAgICBmYWxzZSwgZmFsc2UsIDB4MDUwMDAsIDB4MDUwMDAsIG1tdSwgICAgICAi cHBtbXUxIiksCisJTElNQV9JUF9ERVNDKHBwbW11MiwgICAgICBmYWxzZSwgZmFsc2UsIDB4MDYw MDAsIDB4MDYwMDAsIG1tdSwgICAgICAicHBtbXUyIiksCisJTElNQV9JUF9ERVNDKHBwbW11Mywg ICAgICBmYWxzZSwgZmFsc2UsIDB4MDcwMDAsIDB4MDcwMDAsIG1tdSwgICAgICAicHBtbXUzIiks CisJTElNQV9JUF9ERVNDKHBwbW11NCwgICAgICBmYWxzZSwgZmFsc2UsIC0xLCAgICAgIDB4MUMw MDAsIG1tdSwgICAgICAicHBtbXU0IiksCisJTElNQV9JUF9ERVNDKHBwbW11NSwgICAgICBmYWxz ZSwgZmFsc2UsIC0xLCAgICAgIDB4MUQwMDAsIG1tdSwgICAgICAicHBtbXU1IiksCisJTElNQV9J UF9ERVNDKHBwbW11NiwgICAgICBmYWxzZSwgZmFsc2UsIC0xLCAgICAgIDB4MUUwMDAsIG1tdSwg ICAgICAicHBtbXU2IiksCisJTElNQV9JUF9ERVNDKHBwbW11NywgICAgICBmYWxzZSwgZmFsc2Us IC0xLCAgICAgIDB4MUYwMDAsIG1tdSwgICAgICAicHBtbXU3IiksCisJTElNQV9JUF9ERVNDKGRs YnUsICAgICAgICBmYWxzZSwgdHJ1ZSwgIC0xLCAgICAgIDB4MTQwMDAsIGRsYnUsICAgICBOVUxM KSwKKwlMSU1BX0lQX0RFU0MoYmNhc3QsICAgICAgIGZhbHNlLCB0cnVlLCAgLTEsICAgICAgMHgx MzAwMCwgYmNhc3QsICAgIE5VTEwpLAorCUxJTUFfSVBfREVTQyhwcF9iY2FzdCwgICAgZmFsc2Us IHRydWUsICAtMSwgICAgICAweDE2MDAwLCBwcF9iY2FzdCwgInBwIiksCisJTElNQV9JUF9ERVND KHBwbW11X2JjYXN0LCBmYWxzZSwgdHJ1ZSwgIC0xLCAgICAgIDB4MTUwMDAsIG1tdSwgICAgICBO VUxMKSwKK307CisKK2NvbnN0IGNoYXIgKmxpbWFfaXBfbmFtZShzdHJ1Y3QgbGltYV9pcCAqaXAp Cit7CisJcmV0dXJuIGxpbWFfaXBfZGVzY1tpcC0+aWRdLm5hbWU7Cit9CisKK3N0YXRpYyBpbnQg bGltYV9jbGtfaW5pdChzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldikKK3sKKwlpbnQgZXJyOworCXVu c2lnbmVkIGxvbmcgYnVzX3JhdGUsIGdwdV9yYXRlOworCisJZGV2LT5jbGtfYnVzID0gZGV2bV9j bGtfZ2V0KGRldi0+ZGV2LCAiYnVzIik7CisJaWYgKElTX0VSUihkZXYtPmNsa19idXMpKSB7CisJ CWRldl9lcnIoZGV2LT5kZXYsICJnZXQgYnVzIGNsayBmYWlsZWQgJWxkXG4iLCBQVFJfRVJSKGRl di0+Y2xrX2J1cykpOworCQlyZXR1cm4gUFRSX0VSUihkZXYtPmNsa19idXMpOworCX0KKworCWRl di0+Y2xrX2dwdSA9IGRldm1fY2xrX2dldChkZXYtPmRldiwgImNvcmUiKTsKKwlpZiAoSVNfRVJS KGRldi0+Y2xrX2dwdSkpIHsKKwkJZGV2X2VycihkZXYtPmRldiwgImdldCBjb3JlIGNsayBmYWls ZWQgJWxkXG4iLCBQVFJfRVJSKGRldi0+Y2xrX2dwdSkpOworCQlyZXR1cm4gUFRSX0VSUihkZXYt PmNsa19ncHUpOworCX0KKworCWJ1c19yYXRlID0gY2xrX2dldF9yYXRlKGRldi0+Y2xrX2J1cyk7 CisJZGV2X2luZm8oZGV2LT5kZXYsICJidXMgcmF0ZSA9ICVsdVxuIiwgYnVzX3JhdGUpOworCisJ Z3B1X3JhdGUgPSBjbGtfZ2V0X3JhdGUoZGV2LT5jbGtfZ3B1KTsKKwlkZXZfaW5mbyhkZXYtPmRl diwgIm1vZCByYXRlID0gJWx1IiwgZ3B1X3JhdGUpOworCisJaWYgKChlcnIgPSBjbGtfcHJlcGFy ZV9lbmFibGUoZGV2LT5jbGtfYnVzKSkpCisJCXJldHVybiBlcnI7CisJaWYgKChlcnIgPSBjbGtf cHJlcGFyZV9lbmFibGUoZGV2LT5jbGtfZ3B1KSkpCisJCWdvdG8gZXJyb3Jfb3V0MDsKKworCWRl di0+cmVzZXQgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0X29wdGlvbmFsKGRldi0+ZGV2LCBOVUxM KTsKKwlpZiAoSVNfRVJSKGRldi0+cmVzZXQpKSB7CisJCWVyciA9IFBUUl9FUlIoZGV2LT5yZXNl dCk7CisJCWdvdG8gZXJyb3Jfb3V0MTsKKwl9IGVsc2UgaWYgKGRldi0+cmVzZXQgIT0gTlVMTCkg eworCQlpZiAoKGVyciA9IHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQoZGV2LT5yZXNldCkpKQorCQkJ Z290byBlcnJvcl9vdXQxOworCX0KKworCXJldHVybiAwOworCitlcnJvcl9vdXQxOgorCWNsa19k aXNhYmxlX3VucHJlcGFyZShkZXYtPmNsa19ncHUpOworZXJyb3Jfb3V0MDoKKwljbGtfZGlzYWJs ZV91bnByZXBhcmUoZGV2LT5jbGtfYnVzKTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgdm9p ZCBsaW1hX2Nsa19maW5pKHN0cnVjdCBsaW1hX2RldmljZSAqZGV2KQoreworCWlmIChkZXYtPnJl c2V0ICE9IE5VTEwpCisJCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KGRldi0+cmVzZXQpOworCWNsa19k aXNhYmxlX3VucHJlcGFyZShkZXYtPmNsa19ncHUpOworCWNsa19kaXNhYmxlX3VucHJlcGFyZShk ZXYtPmNsa19idXMpOworfQorCitzdGF0aWMgaW50IGxpbWFfcmVndWxhdG9yX2luaXQoc3RydWN0 IGxpbWFfZGV2aWNlICpkZXYpCit7CisJaW50IHJldDsKKwlkZXYtPnJlZ3VsYXRvciA9IGRldm1f cmVndWxhdG9yX2dldF9vcHRpb25hbChkZXYtPmRldiwgIm1hbGkiKTsKKwlpZiAoSVNfRVJSKGRl di0+cmVndWxhdG9yKSkgeworCQlyZXQgPSBQVFJfRVJSKGRldi0+cmVndWxhdG9yKTsKKwkJZGV2 LT5yZWd1bGF0b3IgPSBOVUxMOworCQlpZiAocmV0ID09IC1FTk9ERVYpCisJCQlyZXR1cm4gMDsK KwkJZGV2X2VycihkZXYtPmRldiwgImZhaWxlZCB0byBnZXQgcmVndWxhdG9yOiAlbGRcbiIsIFBU Ul9FUlIoZGV2LT5yZWd1bGF0b3IpKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSByZWd1 bGF0b3JfZW5hYmxlKGRldi0+cmVndWxhdG9yKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJy KGRldi0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSByZWd1bGF0b3I6ICVkXG4iLCByZXQpOworCQly ZXR1cm4gcmV0OworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBsaW1hX3JlZ3Vs YXRvcl9maW5pKHN0cnVjdCBsaW1hX2RldmljZSAqZGV2KQoreworCWlmIChkZXYtPnJlZ3VsYXRv cikKKwkJcmVndWxhdG9yX2Rpc2FibGUoZGV2LT5yZWd1bGF0b3IpOworfQorCitzdGF0aWMgaW50 IGxpbWFfaW5pdF9pcChzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiwgaW50IGluZGV4KQoreworCXN0 cnVjdCBsaW1hX2lwX2Rlc2MgKmRlc2MgPSBsaW1hX2lwX2Rlc2MgKyBpbmRleDsKKwlzdHJ1Y3Qg bGltYV9pcCAqaXAgPSBkZXYtPmlwICsgaW5kZXg7CisJaW50IG9mZnNldCA9IGRlc2MtPm9mZnNl dFtkZXYtPmlkXTsKKwlib29sIG11c3QgPSBkZXNjLT5tdXN0X2hhdmVbZGV2LT5pZF07CisJaW50 IGVycjsKKworCWlmIChvZmZzZXQgPCAwKQorCQlyZXR1cm4gMDsKKworCWlwLT5kZXYgPSBkZXY7 CisJaXAtPmlkID0gaW5kZXg7CisJaXAtPmlvbWVtID0gZGV2LT5pb21lbSArIG9mZnNldDsKKwlp ZiAoZGVzYy0+aXJxX25hbWUpIHsKKwkJZXJyID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUoZGV2 LT5wZGV2LCBkZXNjLT5pcnFfbmFtZSk7CisJCWlmIChlcnIgPCAwKQorCQkJZ290byBvdXQ7CisJ CWlwLT5pcnEgPSBlcnI7CisJfQorCisJZXJyID0gZGVzYy0+aW5pdChpcCk7CisJaWYgKCFlcnIp IHsKKwkJaXAtPnByZXNlbnQgPSB0cnVlOworCQlyZXR1cm4gMDsKKwl9CisKK291dDoKKwlyZXR1 cm4gbXVzdCA/IGVyciA6IDA7Cit9CisKK3N0YXRpYyB2b2lkIGxpbWFfZmluaV9pcChzdHJ1Y3Qg bGltYV9kZXZpY2UgKmxkZXYsIGludCBpbmRleCkKK3sKKwlzdHJ1Y3QgbGltYV9pcF9kZXNjICpk ZXNjID0gbGltYV9pcF9kZXNjICsgaW5kZXg7CisJc3RydWN0IGxpbWFfaXAgKmlwID0gbGRldi0+ aXAgKyBpbmRleDsKKworCWlmIChpcC0+cHJlc2VudCkKKwkJZGVzYy0+ZmluaShpcCk7Cit9CisK K3N0YXRpYyBpbnQgbGltYV9pbml0X2dwX3BpcGUoc3RydWN0IGxpbWFfZGV2aWNlICpkZXYpCit7 CisJc3RydWN0IGxpbWFfc2NoZWRfcGlwZSAqcGlwZSA9IGRldi0+cGlwZSArIGxpbWFfcGlwZV9n cDsKKwlpbnQgZXJyOworCisJaWYgKChlcnIgPSBsaW1hX3NjaGVkX3BpcGVfaW5pdChwaXBlLCAi Z3AiKSkpCisJCXJldHVybiBlcnI7CisKKwlwaXBlLT5sMl9jYWNoZVtwaXBlLT5udW1fbDJfY2Fj aGUrK10gPSBkZXYtPmlwICsgbGltYV9pcF9sMl9jYWNoZTA7CisJcGlwZS0+bW11W3BpcGUtPm51 bV9tbXUrK10gPSBkZXYtPmlwICsgbGltYV9pcF9ncG1tdTsKKwlwaXBlLT5wcm9jZXNzb3JbcGlw ZS0+bnVtX3Byb2Nlc3NvcisrXSA9IGRldi0+aXAgKyBsaW1hX2lwX2dwOworCisJaWYgKChlcnIg PSBsaW1hX2dwX3BpcGVfaW5pdChkZXYpKSkgeworCQlsaW1hX3NjaGVkX3BpcGVfZmluaShwaXBl KTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgbGlt YV9maW5pX2dwX3BpcGUoc3RydWN0IGxpbWFfZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGxpbWFf c2NoZWRfcGlwZSAqcGlwZSA9IGRldi0+cGlwZSArIGxpbWFfcGlwZV9ncDsKKworCWxpbWFfZ3Bf cGlwZV9maW5pKGRldik7CisJbGltYV9zY2hlZF9waXBlX2ZpbmkocGlwZSk7Cit9CisKK3N0YXRp YyBpbnQgbGltYV9pbml0X3BwX3BpcGUoc3RydWN0IGxpbWFfZGV2aWNlICpkZXYpCit7CisJc3Ry dWN0IGxpbWFfc2NoZWRfcGlwZSAqcGlwZSA9IGRldi0+cGlwZSArIGxpbWFfcGlwZV9wcDsKKwlp bnQgZXJyLCBpOworCisJaWYgKChlcnIgPSBsaW1hX3NjaGVkX3BpcGVfaW5pdChwaXBlLCAicHAi KSkpCisJCXJldHVybiBlcnI7CisKKwlmb3IgKGkgPSAwOyBpIDwgTElNQV9TQ0hFRF9QSVBFX01B WF9QUk9DRVNTT1I7IGkrKykgeworCQlzdHJ1Y3QgbGltYV9pcCAqcHAgPSBkZXYtPmlwICsgbGlt YV9pcF9wcDAgKyBpOworCQlzdHJ1Y3QgbGltYV9pcCAqcHBtbXUgPSBkZXYtPmlwICsgbGltYV9p cF9wcG1tdTAgKyBpOworCQlzdHJ1Y3QgbGltYV9pcCAqbDJfY2FjaGU7CisKKwkJaWYgKGRldi0+ aWQgPT0gbGltYV9ncHVfbWFsaTQwMCkKKwkJCWwyX2NhY2hlID0gZGV2LT5pcCArIGxpbWFfaXBf bDJfY2FjaGUwOworCQllbHNlCisJCQlsMl9jYWNoZSA9IGRldi0+aXAgKyBsaW1hX2lwX2wyX2Nh Y2hlMSArIChpID4+IDIpOworCisJCWlmIChwcC0+cHJlc2VudCAmJiBwcG1tdS0+cHJlc2VudCAm JiBsMl9jYWNoZS0+cHJlc2VudCkgeworCQkJcGlwZS0+bW11W3BpcGUtPm51bV9tbXUrK10gPSBw cG1tdTsKKwkJCXBpcGUtPnByb2Nlc3NvcltwaXBlLT5udW1fcHJvY2Vzc29yKytdID0gcHA7CisJ CQlpZiAoIXBpcGUtPmwyX2NhY2hlW2kgPj4gMl0pCisJCQkJcGlwZS0+bDJfY2FjaGVbcGlwZS0+ bnVtX2wyX2NhY2hlKytdID0gbDJfY2FjaGU7CisJCX0KKwl9CisKKwlpZiAoZGV2LT5pcFtsaW1h X2lwX2JjYXN0XS5wcmVzZW50KSB7CisJCXBpcGUtPmJjYXN0X3Byb2Nlc3NvciA9IGRldi0+aXAg KyBsaW1hX2lwX3BwX2JjYXN0OworCQlwaXBlLT5iY2FzdF9tbXUgPSBkZXYtPmlwICsgbGltYV9p cF9wcG1tdV9iY2FzdDsKKwl9CisKKwlpZiAoKGVyciA9IGxpbWFfcHBfcGlwZV9pbml0KGRldikp KSB7CisJCWxpbWFfc2NoZWRfcGlwZV9maW5pKHBpcGUpOworCQlyZXR1cm4gZXJyOworCX0KKwor CXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBsaW1hX2ZpbmlfcHBfcGlwZShzdHJ1Y3QgbGlt YV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBlID0gZGV2LT5w aXBlICsgbGltYV9waXBlX3BwOworCisJbGltYV9wcF9waXBlX2ZpbmkoZGV2KTsKKwlsaW1hX3Nj aGVkX3BpcGVfZmluaShwaXBlKTsKK30KKworaW50IGxpbWFfZGV2aWNlX2luaXQoc3RydWN0IGxp bWFfZGV2aWNlICpsZGV2KQoreworCWludCBlcnIsIGk7CisJc3RydWN0IHJlc291cmNlICpyZXM7 CisKKwlkbWFfc2V0X2NvaGVyZW50X21hc2sobGRldi0+ZGV2LCBETUFfQklUX01BU0soMzIpKTsK KworCWVyciA9IGxpbWFfY2xrX2luaXQobGRldik7CisJaWYgKGVycikgeworCQlkZXZfZXJyKGxk ZXYtPmRldiwgImNsayBpbml0IGZhaWwgJWRcbiIsIGVycik7CisJCXJldHVybiBlcnI7CisJfQor CisJaWYgKChlcnIgPSBsaW1hX3JlZ3VsYXRvcl9pbml0KGxkZXYpKSkgeworCQlkZXZfZXJyKGxk ZXYtPmRldiwgInJlZ3VsYXRvciBpbml0IGZhaWwgJWRcbiIsIGVycik7CisJCWdvdG8gZXJyX291 dDA7CisJfQorCisJZXJyID0gbGltYV90dG1faW5pdChsZGV2KTsKKwlpZiAoZXJyKQorCQlnb3Rv IGVycl9vdXQxOworCisJbGRldi0+ZW1wdHlfdm0gPSBsaW1hX3ZtX2NyZWF0ZShsZGV2KTsKKwlp ZiAoIWxkZXYtPmVtcHR5X3ZtKSB7CisJCWVyciA9IC1FTk9NRU07CisJCWdvdG8gZXJyX291dDI7 CisJfQorCisJbGRldi0+dmFfc3RhcnQgPSAwOworCWlmIChsZGV2LT5pZCA9PSBsaW1hX2dwdV9t YWxpNDUwKSB7CisJCWxkZXYtPnZhX2VuZCA9IExJTUFfVkFfUkVTRVJWRV9TVEFSVDsKKwkJbGRl di0+ZGxidV9jcHUgPSBkbWFfYWxsb2Nfd2MoCisJCQlsZGV2LT5kZXYsIExJTUFfUEFHRV9TSVpF LAorCQkJJmxkZXYtPmRsYnVfZG1hLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFsZGV2LT5kbGJ1X2Nw dSkgeworCQkJZXJyID0gLUVOT01FTTsKKwkJCWdvdG8gZXJyX291dDM7CisJCX0KKwl9CisJZWxz ZQorCQlsZGV2LT52YV9lbmQgPSBMSU1BX1ZBX1JFU0VSVkVfRU5EOworCisJcmVzID0gcGxhdGZv cm1fZ2V0X3Jlc291cmNlKGxkZXYtPnBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKKwlsZGV2LT5p b21lbSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShsZGV2LT5kZXYsIHJlcyk7CisJaWYgKElTX0VS UihsZGV2LT5pb21lbSkpIHsKKwkJZGV2X2VycihsZGV2LT5kZXYsICJmYWlsIHRvIGlvcmVtYXAg aW9tZW1cbiIpOworCSAgICAgICAgZXJyID0gUFRSX0VSUihsZGV2LT5pb21lbSk7CisJCWdvdG8g ZXJyX291dDQ7CisJfQorCisJZm9yIChpID0gMDsgaSA8IGxpbWFfaXBfbnVtOyBpKyspIHsKKwkJ ZXJyID0gbGltYV9pbml0X2lwKGxkZXYsIGkpOworCQlpZiAoZXJyKQorCQkJZ290byBlcnJfb3V0 NTsKKwl9CisKKwllcnIgPSBsaW1hX2luaXRfZ3BfcGlwZShsZGV2KTsKKwlpZiAoZXJyKQorCQln b3RvIGVycl9vdXQ1OworCisJZXJyID0gbGltYV9pbml0X3BwX3BpcGUobGRldik7CisJaWYgKGVy cikKKwkJZ290byBlcnJfb3V0NjsKKworCWlmIChsZGV2LT5pZCA9PSBsaW1hX2dwdV9tYWxpNDUw KSB7CisJCWxpbWFfZGxidV9lbmFibGUobGRldik7CisJCWxpbWFfYmNhc3RfZW5hYmxlKGxkZXYp OworCX0KKworCXJldHVybiAwOworCitlcnJfb3V0NjoKKwlsaW1hX2ZpbmlfZ3BfcGlwZShsZGV2 KTsKK2Vycl9vdXQ1OgorCXdoaWxlICgtLWkgPj0gMCkKKwkJbGltYV9maW5pX2lwKGxkZXYsIGkp OworZXJyX291dDQ6CisJaWYgKGxkZXYtPmRsYnVfY3B1KQorCQlkbWFfZnJlZV93YyhsZGV2LT5k ZXYsIExJTUFfUEFHRV9TSVpFLAorCQkJICAgIGxkZXYtPmRsYnVfY3B1LCBsZGV2LT5kbGJ1X2Rt YSk7CitlcnJfb3V0MzoKKwlsaW1hX3ZtX3B1dChsZGV2LT5lbXB0eV92bSk7CitlcnJfb3V0MjoK KwlsaW1hX3R0bV9maW5pKGxkZXYpOworZXJyX291dDE6CisJbGltYV9yZWd1bGF0b3JfZmluaShs ZGV2KTsKK2Vycl9vdXQwOgorCWxpbWFfY2xrX2ZpbmkobGRldik7CisJcmV0dXJuIGVycjsKK30K Kwordm9pZCBsaW1hX2RldmljZV9maW5pKHN0cnVjdCBsaW1hX2RldmljZSAqbGRldikKK3sKKwlp bnQgaTsKKworCWxpbWFfZmluaV9wcF9waXBlKGxkZXYpOworCWxpbWFfZmluaV9ncF9waXBlKGxk ZXYpOworCisJZm9yIChpID0gbGltYV9pcF9udW0gLSAxOyBpID49IDA7IGktLSkKKwkJbGltYV9m aW5pX2lwKGxkZXYsIGkpOworCisJaWYgKGxkZXYtPmRsYnVfY3B1KQorCQlkbWFfZnJlZV93Yyhs ZGV2LT5kZXYsIExJTUFfUEFHRV9TSVpFLAorCQkJICAgIGxkZXYtPmRsYnVfY3B1LCBsZGV2LT5k bGJ1X2RtYSk7CisKKwlsaW1hX3ZtX3B1dChsZGV2LT5lbXB0eV92bSk7CisKKwlsaW1hX3R0bV9m aW5pKGxkZXYpOworCisJbGltYV9yZWd1bGF0b3JfZmluaShsZGV2KTsKKworCWxpbWFfY2xrX2Zp bmkobGRldik7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2Rldmlj ZS5oIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9kZXZpY2UuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZjOWMyNmI5ZTEyMgotLS0gL2Rldi9udWxsCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZGV2aWNlLmgKQEAgLTAsMCArMSwxMzYgQEAKKy8q CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBMaW1hIFByb2plY3QKKyAqCisgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxs IGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFV VEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K KyAqLworI2lmbmRlZiBfX0xJTUFfREVWSUNFX0hfXworI2RlZmluZSBfX0xJTUFfREVWSUNFX0hf XworCisjaW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4KKworI2luY2x1ZGUgImxpbWFfc2NoZWQu aCIKKyNpbmNsdWRlICJsaW1hX3R0bS5oIgorCitlbnVtIGxpbWFfZ3B1X2lkIHsKKwlsaW1hX2dw dV9tYWxpNDAwID0gMCwKKwlsaW1hX2dwdV9tYWxpNDUwLAorCWxpbWFfZ3B1X251bSwKK307CisK K2VudW0gbGltYV9pcF9pZCB7CisJbGltYV9pcF9wbXUsCisJbGltYV9pcF9ncG1tdSwKKwlsaW1h X2lwX3BwbW11MCwKKwlsaW1hX2lwX3BwbW11MSwKKwlsaW1hX2lwX3BwbW11MiwKKwlsaW1hX2lw X3BwbW11MywKKwlsaW1hX2lwX3BwbW11NCwKKwlsaW1hX2lwX3BwbW11NSwKKwlsaW1hX2lwX3Bw bW11NiwKKwlsaW1hX2lwX3BwbW11NywKKwlsaW1hX2lwX2dwLAorCWxpbWFfaXBfcHAwLAorCWxp bWFfaXBfcHAxLAorCWxpbWFfaXBfcHAyLAorCWxpbWFfaXBfcHAzLAorCWxpbWFfaXBfcHA0LAor CWxpbWFfaXBfcHA1LAorCWxpbWFfaXBfcHA2LAorCWxpbWFfaXBfcHA3LAorCWxpbWFfaXBfbDJf Y2FjaGUwLAorCWxpbWFfaXBfbDJfY2FjaGUxLAorCWxpbWFfaXBfbDJfY2FjaGUyLAorCWxpbWFf aXBfZGxidSwKKwlsaW1hX2lwX2JjYXN0LAorCWxpbWFfaXBfcHBfYmNhc3QsCisJbGltYV9pcF9w cG1tdV9iY2FzdCwKKwlsaW1hX2lwX251bSwKK307CisKK3N0cnVjdCBsaW1hX2RldmljZTsKKwor c3RydWN0IGxpbWFfaXAgeworCXN0cnVjdCBsaW1hX2RldmljZSAqZGV2OworCWVudW0gbGltYV9p cF9pZCBpZDsKKwlib29sIHByZXNlbnQ7CisKKwl2b2lkIF9faW9tZW0gKmlvbWVtOworCWludCBp cnE7CisKKwl1bmlvbiB7CisJCS8qIHBtdSAqLworCQl1bnNpZ25lZCBzd2l0Y2hfZGVsYXk7CisJ CS8qIGdwL3BwICovCisJCWJvb2wgYXN5bmNfcmVzZXQ7CisJCS8qIGwyIGNhY2hlICovCisJCXNw aW5sb2NrX3QgbG9jazsKKwl9IGRhdGE7Cit9OworCitlbnVtIGxpbWFfcGlwZV9pZCB7CisJbGlt YV9waXBlX2dwLAorCWxpbWFfcGlwZV9wcCwKKwlsaW1hX3BpcGVfbnVtLAorfTsKKworc3RydWN0 IGxpbWFfZGV2aWNlIHsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IGRybV9kZXZpY2Ug KmRkZXY7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKKworCWVudW0gbGltYV9ncHVf aWQgaWQ7CisJaW50IG51bV9wcDsKKworCXZvaWQgX19pb21lbSAqaW9tZW07CisJc3RydWN0IGNs ayAqY2xrX2J1czsKKwlzdHJ1Y3QgY2xrICpjbGtfZ3B1OworCXN0cnVjdCByZXNldF9jb250cm9s ICpyZXNldDsKKwlzdHJ1Y3QgcmVndWxhdG9yICpyZWd1bGF0b3I7CisKKwlzdHJ1Y3QgbGltYV9p cCBpcFtsaW1hX2lwX251bV07CisJc3RydWN0IGxpbWFfc2NoZWRfcGlwZSBwaXBlW2xpbWFfcGlw ZV9udW1dOworCisJc3RydWN0IGxpbWFfbW1hbiBtbWFuOworCisJc3RydWN0IGxpbWFfdm0gKmVt cHR5X3ZtOworCXVpbnQ2NF90IHZhX3N0YXJ0OworCXVpbnQ2NF90IHZhX2VuZDsKKworCXUzMiAq ZGxidV9jcHU7CisJZG1hX2FkZHJfdCBkbGJ1X2RtYTsKK307CisKK3N0YXRpYyBpbmxpbmUgc3Ry dWN0IGxpbWFfZGV2aWNlICoKK3RvX2xpbWFfZGV2KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7 CisJcmV0dXJuIGRldi0+ZGV2X3ByaXZhdGU7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGxp bWFfZGV2aWNlICoKK3R0bV90b19saW1hX2RldihzdHJ1Y3QgdHRtX2JvX2RldmljZSAqZGV2KQor eworCXJldHVybiBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgbGltYV9kZXZpY2UsIG1tYW4uYmRl dik7Cit9CisKK2ludCBsaW1hX2RldmljZV9pbml0KHN0cnVjdCBsaW1hX2RldmljZSAqbGRldik7 Cit2b2lkIGxpbWFfZGV2aWNlX2Zpbmkoc3RydWN0IGxpbWFfZGV2aWNlICpsZGV2KTsKKworY29u c3QgY2hhciAqbGltYV9pcF9uYW1lKHN0cnVjdCBsaW1hX2lwICppcCk7CisKKyNlbmRpZgotLSAK Mi4xNy4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK