From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH] drm/amd/amdgpu: Add SW clock gating support to UVD 5 and 6 Date: Mon, 2 May 2016 16:00:15 -0400 Message-ID: <1462219259-29806-3-git-send-email-alexander.deucher@amd.com> References: <1462219259-29806-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qk0-x231.google.com (mail-qk0-x231.google.com [IPv6:2607:f8b0:400d:c09::231]) by gabe.freedesktop.org (Postfix) with ESMTPS id 26C1D6E0AF for ; Mon, 2 May 2016 20:01:09 +0000 (UTC) Received: by mail-qk0-x231.google.com with SMTP id n63so79728185qkf.0 for ; Mon, 02 May 2016 13:01:09 -0700 (PDT) In-Reply-To: <1462219259-29806-1-git-send-email-alexander.deucher@amd.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: Tom St Denis , Alex Deucher List-Id: dri-devel@lists.freedesktop.org RnJvbTogVG9tIFN0IERlbmlzIDx0b20uc3RkZW5pc0BhbWQuY29tPgoKVGhpcyBwYXRjaCBhZGRz IHN1cHBvcnQgZm9yIHNvZnR3YXJlIGNsb2NrIGdhdGluZyB0byBVVkQgNQphbmQgVVZEIDYgYmxv Y2tzIHdpdGggYSBwcmVsaW1pbmFyeSBjb21tZW50ZWQgb3V0IGhhcmR3YXJlCmdhdGluZyByb3V0 aW5lLgoKQ3VycmVudGx5IGhhcmR3YXJlIGdhdGluZyBkb2VzIG5vdCB3b3JrIHNvIGl0J3Mgbm90 IGFjdGl2YXRlZC4KClNpZ25lZC1vZmYtYnk6IFRvbSBTdCBEZW5pcyA8dG9tLnN0ZGVuaXNAYW1k LmNvbT4KUmV2aWV3ZWQtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJAYW1kLmNv bT4KU2lnbmVkLW9mZi1ieTogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3V2ZF92NV8wLmMgfCAxMTUgKysrKysr KysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3V2ZF92Nl8wLmMgfCAyODEgKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyMzIgaW5z ZXJ0aW9ucygrKSwgMTY0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L3V2ZF92NV8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS91dmRf djVfMC5jCmluZGV4IDE2NDc2ZDguLmRlNDU5YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L3V2ZF92NV8wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv dXZkX3Y1XzAuYwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgInV2ZC91dmRfNV8wX3NoX21h c2suaCIKICNpbmNsdWRlICJvc3Mvb3NzXzJfMF9kLmgiCiAjaW5jbHVkZSAib3NzL29zc18yXzBf c2hfbWFzay5oIgorI2luY2x1ZGUgInZpLmgiCiAKIHN0YXRpYyB2b2lkIHV2ZF92NV8wX3NldF9y aW5nX2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKIHN0YXRpYyB2b2lkIHV2ZF92 NV8wX3NldF9pcnFfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwpAQCAtNzU0LDE0 ICs3NTUsMTI4IEBAIHN0YXRpYyBpbnQgdXZkX3Y1XzBfcHJvY2Vzc19pbnRlcnJ1cHQoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIHV2ZF92 NV8wX3NldF9zd19jbG9ja19nYXRpbmcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCit7CisJ dWludDMyX3QgZGF0YSwgZGF0YTEsIGRhdGEyLCBzdXZkX2ZsYWdzOworCisJZGF0YSA9IFJSRUcz MihtbVVWRF9DR0NfQ1RSTCk7CisJZGF0YTEgPSBSUkVHMzIobW1VVkRfU1VWRF9DR0NfR0FURSk7 CisJZGF0YTIgPSBSUkVHMzIobW1VVkRfU1VWRF9DR0NfQ1RSTCk7CisKKwlkYXRhICY9IH4oVVZE X0NHQ19DVFJMX19DTEtfT0ZGX0RFTEFZX01BU0sgfAorCQkgIFVWRF9DR0NfQ1RSTF9fQ0xLX0dB VEVfRExZX1RJTUVSX01BU0spOworCisJc3V2ZF9mbGFncyA9IFVWRF9TVVZEX0NHQ19HQVRFX19T UkVfTUFTSyB8CisJCSAgICAgVVZEX1NVVkRfQ0dDX0dBVEVfX1NJVF9NQVNLIHwKKwkJICAgICBV VkRfU1VWRF9DR0NfR0FURV9fU01QX01BU0sgfAorCQkgICAgIFVWRF9TVVZEX0NHQ19HQVRFX19T Q01fTUFTSyB8CisJCSAgICAgVVZEX1NVVkRfQ0dDX0dBVEVfX1NEQl9NQVNLOworCisJZGF0YSB8 PSBVVkRfQ0dDX0NUUkxfX0RZTl9DTE9DS19NT0RFX01BU0sgfAorCQkoMSA8PCBSRUdfRklFTERf U0hJRlQoVVZEX0NHQ19DVFJMLCBDTEtfR0FURV9ETFlfVElNRVIpKSB8CisJCSg0IDw8IFJFR19G SUVMRF9TSElGVChVVkRfQ0dDX0NUUkwsIENMS19PRkZfREVMQVkpKTsKKworCWRhdGEgJj0gfihV VkRfQ0dDX0NUUkxfX1VERUNfUkVfTU9ERV9NQVNLIHwKKwkJCVVWRF9DR0NfQ1RSTF9fVURFQ19D TV9NT0RFX01BU0sgfAorCQkJVVZEX0NHQ19DVFJMX19VREVDX0lUX01PREVfTUFTSyB8CisJCQlV VkRfQ0dDX0NUUkxfX1VERUNfREJfTU9ERV9NQVNLIHwKKwkJCVVWRF9DR0NfQ1RSTF9fVURFQ19N UF9NT0RFX01BU0sgfAorCQkJVVZEX0NHQ19DVFJMX19TWVNfTU9ERV9NQVNLIHwKKwkJCVVWRF9D R0NfQ1RSTF9fVURFQ19NT0RFX01BU0sgfAorCQkJVVZEX0NHQ19DVFJMX19NUEVHMl9NT0RFX01B U0sgfAorCQkJVVZEX0NHQ19DVFJMX19SRUdTX01PREVfTUFTSyB8CisJCQlVVkRfQ0dDX0NUUkxf X1JCQ19NT0RFX01BU0sgfAorCQkJVVZEX0NHQ19DVFJMX19MTUlfTUNfTU9ERV9NQVNLIHwKKwkJ CVVWRF9DR0NfQ1RSTF9fTE1JX1VNQ19NT0RFX01BU0sgfAorCQkJVVZEX0NHQ19DVFJMX19JRENU X01PREVfTUFTSyB8CisJCQlVVkRfQ0dDX0NUUkxfX01QUkRfTU9ERV9NQVNLIHwKKwkJCVVWRF9D R0NfQ1RSTF9fTVBDX01PREVfTUFTSyB8CisJCQlVVkRfQ0dDX0NUUkxfX0xCU0lfTU9ERV9NQVNL IHwKKwkJCVVWRF9DR0NfQ1RSTF9fTFJCQk1fTU9ERV9NQVNLIHwKKwkJCVVWRF9DR0NfQ1RSTF9f V0NCX01PREVfTUFTSyB8CisJCQlVVkRfQ0dDX0NUUkxfX1ZDUFVfTU9ERV9NQVNLIHwKKwkJCVVW RF9DR0NfQ1RSTF9fSlBFR19NT0RFX01BU0sgfAorCQkJVVZEX0NHQ19DVFJMX19TQ1BVX01PREVf TUFTSyk7CisJZGF0YTIgJj0gfihVVkRfU1VWRF9DR0NfQ1RSTF9fU1JFX01PREVfTUFTSyB8CisJ CQlVVkRfU1VWRF9DR0NfQ1RSTF9fU0lUX01PREVfTUFTSyB8CisJCQlVVkRfU1VWRF9DR0NfQ1RS TF9fU01QX01PREVfTUFTSyB8CisJCQlVVkRfU1VWRF9DR0NfQ1RSTF9fU0NNX01PREVfTUFTSyB8 CisJCQlVVkRfU1VWRF9DR0NfQ1RSTF9fU0RCX01PREVfTUFTSyk7CisJZGF0YTEgfD0gc3V2ZF9m bGFnczsKKworCVdSRUczMihtbVVWRF9DR0NfQ1RSTCwgZGF0YSk7CisJV1JFRzMyKG1tVVZEX0NH Q19HQVRFLCAwKTsKKwlXUkVHMzIobW1VVkRfU1VWRF9DR0NfR0FURSwgZGF0YTEpOworCVdSRUcz MihtbVVWRF9TVVZEX0NHQ19DVFJMLCBkYXRhMik7Cit9CisKKyNpZiAwCitzdGF0aWMgdm9pZCB1 dmRfdjVfMF9zZXRfaHdfY2xvY2tfZ2F0aW5nKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQor eworCXVpbnQzMl90IGRhdGEsIGRhdGExLCBjZ2NfZmxhZ3MsIHN1dmRfZmxhZ3M7CisKKwlkYXRh ID0gUlJFRzMyKG1tVVZEX0NHQ19HQVRFKTsKKwlkYXRhMSA9IFJSRUczMihtbVVWRF9TVVZEX0NH Q19HQVRFKTsKKworCWNnY19mbGFncyA9IFVWRF9DR0NfR0FURV9fU1lTX01BU0sgfAorCQkJCVVW RF9DR0NfR0FURV9fVURFQ19NQVNLIHwKKwkJCQlVVkRfQ0dDX0dBVEVfX01QRUcyX01BU0sgfAor CQkJCVVWRF9DR0NfR0FURV9fUkJDX01BU0sgfAorCQkJCVVWRF9DR0NfR0FURV9fTE1JX01DX01B U0sgfAorCQkJCVVWRF9DR0NfR0FURV9fSURDVF9NQVNLIHwKKwkJCQlVVkRfQ0dDX0dBVEVfX01Q UkRfTUFTSyB8CisJCQkJVVZEX0NHQ19HQVRFX19NUENfTUFTSyB8CisJCQkJVVZEX0NHQ19HQVRF X19MQlNJX01BU0sgfAorCQkJCVVWRF9DR0NfR0FURV9fTFJCQk1fTUFTSyB8CisJCQkJVVZEX0NH Q19HQVRFX19VREVDX1JFX01BU0sgfAorCQkJCVVWRF9DR0NfR0FURV9fVURFQ19DTV9NQVNLIHwK KwkJCQlVVkRfQ0dDX0dBVEVfX1VERUNfSVRfTUFTSyB8CisJCQkJVVZEX0NHQ19HQVRFX19VREVD X0RCX01BU0sgfAorCQkJCVVWRF9DR0NfR0FURV9fVURFQ19NUF9NQVNLIHwKKwkJCQlVVkRfQ0dD X0dBVEVfX1dDQl9NQVNLIHwKKwkJCQlVVkRfQ0dDX0dBVEVfX1ZDUFVfTUFTSyB8CisJCQkJVVZE X0NHQ19HQVRFX19TQ1BVX01BU0s7CisKKwlzdXZkX2ZsYWdzID0gVVZEX1NVVkRfQ0dDX0dBVEVf X1NSRV9NQVNLIHwKKwkJCQlVVkRfU1VWRF9DR0NfR0FURV9fU0lUX01BU0sgfAorCQkJCVVWRF9T VVZEX0NHQ19HQVRFX19TTVBfTUFTSyB8CisJCQkJVVZEX1NVVkRfQ0dDX0dBVEVfX1NDTV9NQVNL IHwKKwkJCQlVVkRfU1VWRF9DR0NfR0FURV9fU0RCX01BU0s7CisKKwlkYXRhIHw9IGNnY19mbGFn czsKKwlkYXRhMSB8PSBzdXZkX2ZsYWdzOworCisJV1JFRzMyKG1tVVZEX0NHQ19HQVRFLCBkYXRh KTsKKwlXUkVHMzIobW1VVkRfU1VWRF9DR0NfR0FURSwgZGF0YTEpOworfQorI2VuZGlmCisKIHN0 YXRpYyBpbnQgdXZkX3Y1XzBfc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlKHZvaWQgKmhhbmRsZSwKIAkJ CQkJICBlbnVtIGFtZF9jbG9ja2dhdGluZ19zdGF0ZSBzdGF0ZSkKIHsKIAlzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKKwlib29sIGVu YWJsZSA9IChzdGF0ZSA9PSBBTURfQ0dfU1RBVEVfR0FURSkgPyB0cnVlIDogZmFsc2U7CisJc3Rh dGljIGludCBjdXJzdGF0ZSA9IC0xOwogCiAJaWYgKCEoYWRldi0+Y2dfZmxhZ3MgJiBBTURfQ0df U1VQUE9SVF9VVkRfTUdDRykpCiAJCXJldHVybiAwOwogCisJaWYgKGN1cnN0YXRlID09IHN0YXRl KQorCQlyZXR1cm4gMDsKKworCWN1cnN0YXRlID0gc3RhdGU7CisJaWYgKGVuYWJsZSkgeworCQkv KiBkaXNhYmxlIEhXIGdhdGluZyBhbmQgZW5hYmxlIFN3IGdhdGluZyAqLworCQl1dmRfdjVfMF9z ZXRfc3dfY2xvY2tfZ2F0aW5nKGFkZXYpOworCX0gZWxzZSB7CisJCS8qIHdhaXQgZm9yIFNUQVRV UyB0byBjbGVhciAqLworCQlpZiAodXZkX3Y1XzBfd2FpdF9mb3JfaWRsZShoYW5kbGUpKQorCQkJ cmV0dXJuIC1FQlVTWTsKKworCQkvKiBlbmFibGUgSFcgZ2F0ZXMgYmVjYXVzZSBVVkQgaXMgaWRs ZSAqLworLyoJCXV2ZF92NV8wX3NldF9od19jbG9ja19nYXRpbmcoYWRldik7ICovCisJfQorCiAJ cmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3V2 ZF92Nl8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS91dmRfdjZfMC5jCmluZGV4IGQ0 OTM3OTEuLjM3MmQ3MGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3V2 ZF92Nl8wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdXZkX3Y2XzAuYwpAQCAt MzEsMTEgKzMxLDEzIEBACiAjaW5jbHVkZSAidXZkL3V2ZF82XzBfc2hfbWFzay5oIgogI2luY2x1 ZGUgIm9zcy9vc3NfMl8wX2QuaCIKICNpbmNsdWRlICJvc3Mvb3NzXzJfMF9zaF9tYXNrLmgiCisj aW5jbHVkZSAidmkuaCIKIAogc3RhdGljIHZvaWQgdXZkX3Y2XzBfc2V0X3JpbmdfZnVuY3Moc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwogc3RhdGljIHZvaWQgdXZkX3Y2XzBfc2V0X2lycV9m dW5jcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CiBzdGF0aWMgaW50IHV2ZF92Nl8wX3N0 YXJ0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKIHN0YXRpYyB2b2lkIHV2ZF92Nl8wX3N0 b3Aoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOworc3RhdGljIHZvaWQgdXZkX3Y2XzBfc2V0 X3N3X2Nsb2NrX2dhdGluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CiAKIC8qKgogICog dXZkX3Y2XzBfcmluZ19nZXRfcnB0ciAtIGdldCByZWFkIHBvaW50ZXIKQEAgLTI4NCw2ICsyODYs NyBAQCBzdGF0aWMgdm9pZCB1dmRfdjZfMF9tY19yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCiAJV1JFRzMyKG1tVVZEX1VERUNfREJXX0FERFJfQ09ORklHLCBhZGV2LT5nZnguY29u ZmlnLmdiX2FkZHJfY29uZmlnKTsKIH0KIAorI2lmIDAKIHN0YXRpYyB2b2lkIGN6X3NldF91dmRf Y2xvY2tfZ2F0aW5nX2JyYW5jaGVzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQlib29s IGVuYWJsZSkKIHsKQEAgLTM2MCwxNTcgKzM2Myw3IEBAIHN0YXRpYyB2b2lkIGN6X3NldF91dmRf Y2xvY2tfZ2F0aW5nX2JyYW5jaGVzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCVdSRUcz MihtbVVWRF9DR0NfR0FURSwgZGF0YSk7CiAJV1JFRzMyKG1tVVZEX1NVVkRfQ0dDX0dBVEUsIGRh dGExKTsKIH0KLQotc3RhdGljIHZvaWQgdG9uZ2Ffc2V0X3V2ZF9jbG9ja19nYXRpbmdfYnJhbmNo ZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCi0JCWJvb2wgZW5hYmxlKQotewotCXUzMiBk YXRhLCBkYXRhMTsKLQotCWRhdGEgPSBSUkVHMzIobW1VVkRfQ0dDX0dBVEUpOwotCWRhdGExID0g UlJFRzMyKG1tVVZEX1NVVkRfQ0dDX0dBVEUpOwotCWlmIChlbmFibGUpIHsKLQkJZGF0YSB8PSBV VkRfQ0dDX0dBVEVfX1NZU19NQVNLIHwKLQkJCQlVVkRfQ0dDX0dBVEVfX1VERUNfTUFTSyB8Ci0J CQkJVVZEX0NHQ19HQVRFX19NUEVHMl9NQVNLIHwKLQkJCQlVVkRfQ0dDX0dBVEVfX1JCQ19NQVNL IHwKLQkJCQlVVkRfQ0dDX0dBVEVfX0xNSV9NQ19NQVNLIHwKLQkJCQlVVkRfQ0dDX0dBVEVfX0lE Q1RfTUFTSyB8Ci0JCQkJVVZEX0NHQ19HQVRFX19NUFJEX01BU0sgfAotCQkJCVVWRF9DR0NfR0FU RV9fTVBDX01BU0sgfAotCQkJCVVWRF9DR0NfR0FURV9fTEJTSV9NQVNLIHwKLQkJCQlVVkRfQ0dD X0dBVEVfX0xSQkJNX01BU0sgfAotCQkJCVVWRF9DR0NfR0FURV9fVURFQ19SRV9NQVNLIHwKLQkJ CQlVVkRfQ0dDX0dBVEVfX1VERUNfQ01fTUFTSyB8Ci0JCQkJVVZEX0NHQ19HQVRFX19VREVDX0lU X01BU0sgfAotCQkJCVVWRF9DR0NfR0FURV9fVURFQ19EQl9NQVNLIHwKLQkJCQlVVkRfQ0dDX0dB VEVfX1VERUNfTVBfTUFTSyB8Ci0JCQkJVVZEX0NHQ19HQVRFX19XQ0JfTUFTSyB8Ci0JCQkJVVZE X0NHQ19HQVRFX19WQ1BVX01BU0sgfAotCQkJCVVWRF9DR0NfR0FURV9fU0NQVV9NQVNLOwotCQlk YXRhMSB8PSBVVkRfU1VWRF9DR0NfR0FURV9fU1JFX01BU0sgfAotCQkJCVVWRF9TVVZEX0NHQ19H QVRFX19TSVRfTUFTSyB8Ci0JCQkJVVZEX1NVVkRfQ0dDX0dBVEVfX1NNUF9NQVNLIHwKLQkJCQlV VkRfU1VWRF9DR0NfR0FURV9fU0NNX01BU0sgfAotCQkJCVVWRF9TVVZEX0NHQ19HQVRFX19TREJf TUFTSzsKLQl9IGVsc2UgewotCQlkYXRhICY9IH4oVVZEX0NHQ19HQVRFX19TWVNfTUFTSyB8Ci0J CQkJVVZEX0NHQ19HQVRFX19VREVDX01BU0sgfAotCQkJCVVWRF9DR0NfR0FURV9fTVBFRzJfTUFT SyB8Ci0JCQkJVVZEX0NHQ19HQVRFX19SQkNfTUFTSyB8Ci0JCQkJVVZEX0NHQ19HQVRFX19MTUlf TUNfTUFTSyB8Ci0JCQkJVVZEX0NHQ19HQVRFX19MTUlfVU1DX01BU0sgfAotCQkJCVVWRF9DR0Nf R0FURV9fSURDVF9NQVNLIHwKLQkJCQlVVkRfQ0dDX0dBVEVfX01QUkRfTUFTSyB8Ci0JCQkJVVZE X0NHQ19HQVRFX19NUENfTUFTSyB8Ci0JCQkJVVZEX0NHQ19HQVRFX19MQlNJX01BU0sgfAotCQkJ CVVWRF9DR0NfR0FURV9fTFJCQk1fTUFTSyB8Ci0JCQkJVVZEX0NHQ19HQVRFX19VREVDX1JFX01B U0sgfAotCQkJCVVWRF9DR0NfR0FURV9fVURFQ19DTV9NQVNLIHwKLQkJCQlVVkRfQ0dDX0dBVEVf X1VERUNfSVRfTUFTSyB8Ci0JCQkJVVZEX0NHQ19HQVRFX19VREVDX0RCX01BU0sgfAotCQkJCVVW RF9DR0NfR0FURV9fVURFQ19NUF9NQVNLIHwKLQkJCQlVVkRfQ0dDX0dBVEVfX1dDQl9NQVNLIHwK LQkJCQlVVkRfQ0dDX0dBVEVfX1ZDUFVfTUFTSyB8Ci0JCQkJVVZEX0NHQ19HQVRFX19TQ1BVX01B U0spOwotCQlkYXRhMSAmPSB+KFVWRF9TVVZEX0NHQ19HQVRFX19TUkVfTUFTSyB8Ci0JCQkJVVZE X1NVVkRfQ0dDX0dBVEVfX1NJVF9NQVNLIHwKLQkJCQlVVkRfU1VWRF9DR0NfR0FURV9fU01QX01B U0sgfAotCQkJCVVWRF9TVVZEX0NHQ19HQVRFX19TQ01fTUFTSyB8Ci0JCQkJVVZEX1NVVkRfQ0dD X0dBVEVfX1NEQl9NQVNLKTsKLQl9Ci0JV1JFRzMyKG1tVVZEX0NHQ19HQVRFLCBkYXRhKTsKLQlX UkVHMzIobW1VVkRfU1VWRF9DR0NfR0FURSwgZGF0YTEpOwotfQotCi1zdGF0aWMgdm9pZCB1dmRf djZfMF9zZXRfdXZkX2R5bmFtaWNfY2xvY2tfbW9kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKLQkJYm9vbCBzd21vZGUpCi17Ci0JdTMyIGRhdGEsIGRhdGExID0gMCwgZGF0YTI7Ci0KLQkv KiBBbHdheXMgdW4tZ2F0ZSBVVkQgUkVHUyBiaXQgKi8KLQlkYXRhID0gUlJFRzMyKG1tVVZEX0NH Q19HQVRFKTsKLQlkYXRhICY9IH4oVVZEX0NHQ19HQVRFX19SRUdTX01BU0spOwotCVdSRUczMiht bVVWRF9DR0NfR0FURSwgZGF0YSk7Ci0KLQlkYXRhID0gUlJFRzMyKG1tVVZEX0NHQ19DVFJMKTsK LQlkYXRhICY9IH4oVVZEX0NHQ19DVFJMX19DTEtfT0ZGX0RFTEFZX01BU0sgfAotCQkJVVZEX0NH Q19DVFJMX19DTEtfR0FURV9ETFlfVElNRVJfTUFTSyk7Ci0JZGF0YSB8PSBVVkRfQ0dDX0NUUkxf X0RZTl9DTE9DS19NT0RFX01BU0sgfAotCQkJMSA8PCBSRUdfRklFTERfU0hJRlQoVVZEX0NHQ19D VFJMLCBDTEtfR0FURV9ETFlfVElNRVIpIHwKLQkJCTQgPDwgUkVHX0ZJRUxEX1NISUZUKFVWRF9D R0NfQ1RSTCwgQ0xLX09GRl9ERUxBWSk7Ci0KLQlkYXRhMiA9IFJSRUczMihtbVVWRF9TVVZEX0NH Q19DVFJMKTsKLQlpZiAoc3dtb2RlKSB7Ci0JCWRhdGEgJj0gfihVVkRfQ0dDX0NUUkxfX1VERUNf UkVfTU9ERV9NQVNLIHwKLQkJCQlVVkRfQ0dDX0NUUkxfX1VERUNfQ01fTU9ERV9NQVNLIHwKLQkJ CQlVVkRfQ0dDX0NUUkxfX1VERUNfSVRfTU9ERV9NQVNLIHwKLQkJCQlVVkRfQ0dDX0NUUkxfX1VE RUNfREJfTU9ERV9NQVNLIHwKLQkJCQlVVkRfQ0dDX0NUUkxfX1VERUNfTVBfTU9ERV9NQVNLIHwK LQkJCQlVVkRfQ0dDX0NUUkxfX1NZU19NT0RFX01BU0sgfAotCQkJCVVWRF9DR0NfQ1RSTF9fVURF Q19NT0RFX01BU0sgfAotCQkJCVVWRF9DR0NfQ1RSTF9fTVBFRzJfTU9ERV9NQVNLIHwKLQkJCQlV VkRfQ0dDX0NUUkxfX1JFR1NfTU9ERV9NQVNLIHwKLQkJCQlVVkRfQ0dDX0NUUkxfX1JCQ19NT0RF X01BU0sgfAotCQkJCVVWRF9DR0NfQ1RSTF9fTE1JX01DX01PREVfTUFTSyB8Ci0JCQkJVVZEX0NH Q19DVFJMX19MTUlfVU1DX01PREVfTUFTSyB8Ci0JCQkJVVZEX0NHQ19DVFJMX19JRENUX01PREVf TUFTSyB8Ci0JCQkJVVZEX0NHQ19DVFJMX19NUFJEX01PREVfTUFTSyB8Ci0JCQkJVVZEX0NHQ19D VFJMX19NUENfTU9ERV9NQVNLIHwKLQkJCQlVVkRfQ0dDX0NUUkxfX0xCU0lfTU9ERV9NQVNLIHwK LQkJCQlVVkRfQ0dDX0NUUkxfX0xSQkJNX01PREVfTUFTSyB8Ci0JCQkJVVZEX0NHQ19DVFJMX19X Q0JfTU9ERV9NQVNLIHwKLQkJCQlVVkRfQ0dDX0NUUkxfX1ZDUFVfTU9ERV9NQVNLIHwKLQkJCQlV VkRfQ0dDX0NUUkxfX0pQRUdfTU9ERV9NQVNLIHwKLQkJCQlVVkRfQ0dDX0NUUkxfX1NDUFVfTU9E RV9NQVNLKTsKLQkJZGF0YTEgfD0gVVZEX0NHQ19DVFJMMl9fRFlOX09DTEtfUkFNUF9FTl9NQVNL IHwKLQkJCQlVVkRfQ0dDX0NUUkwyX19EWU5fUkNMS19SQU1QX0VOX01BU0s7Ci0JCWRhdGExICY9 IH5VVkRfQ0dDX0NUUkwyX19HQVRFUl9ESVZfSURfTUFTSzsKLQkJZGF0YTEgfD0gNyA8PCBSRUdf RklFTERfU0hJRlQoVVZEX0NHQ19DVFJMMiwgR0FURVJfRElWX0lEKTsKLQkJZGF0YTIgJj0gfihV VkRfU1VWRF9DR0NfQ1RSTF9fU1JFX01PREVfTUFTSyB8Ci0JCQkJVVZEX1NVVkRfQ0dDX0NUUkxf X1NJVF9NT0RFX01BU0sgfAotCQkJCVVWRF9TVVZEX0NHQ19DVFJMX19TTVBfTU9ERV9NQVNLIHwK LQkJCQlVVkRfU1VWRF9DR0NfQ1RSTF9fU0NNX01PREVfTUFTSyB8Ci0JCQkJVVZEX1NVVkRfQ0dD X0NUUkxfX1NEQl9NT0RFX01BU0spOwotCX0gZWxzZSB7Ci0JCWRhdGEgfD0gVVZEX0NHQ19DVFJM X19VREVDX1JFX01PREVfTUFTSyB8Ci0JCQkJVVZEX0NHQ19DVFJMX19VREVDX0NNX01PREVfTUFT SyB8Ci0JCQkJVVZEX0NHQ19DVFJMX19VREVDX0lUX01PREVfTUFTSyB8Ci0JCQkJVVZEX0NHQ19D VFJMX19VREVDX0RCX01PREVfTUFTSyB8Ci0JCQkJVVZEX0NHQ19DVFJMX19VREVDX01QX01PREVf TUFTSyB8Ci0JCQkJVVZEX0NHQ19DVFJMX19TWVNfTU9ERV9NQVNLIHwKLQkJCQlVVkRfQ0dDX0NU UkxfX1VERUNfTU9ERV9NQVNLIHwKLQkJCQlVVkRfQ0dDX0NUUkxfX01QRUcyX01PREVfTUFTSyB8 Ci0JCQkJVVZEX0NHQ19DVFJMX19SRUdTX01PREVfTUFTSyB8Ci0JCQkJVVZEX0NHQ19DVFJMX19S QkNfTU9ERV9NQVNLIHwKLQkJCQlVVkRfQ0dDX0NUUkxfX0xNSV9NQ19NT0RFX01BU0sgfAotCQkJ CVVWRF9DR0NfQ1RSTF9fTE1JX1VNQ19NT0RFX01BU0sgfAotCQkJCVVWRF9DR0NfQ1RSTF9fSURD VF9NT0RFX01BU0sgfAotCQkJCVVWRF9DR0NfQ1RSTF9fTVBSRF9NT0RFX01BU0sgfAotCQkJCVVW RF9DR0NfQ1RSTF9fTVBDX01PREVfTUFTSyB8Ci0JCQkJVVZEX0NHQ19DVFJMX19MQlNJX01PREVf TUFTSyB8Ci0JCQkJVVZEX0NHQ19DVFJMX19MUkJCTV9NT0RFX01BU0sgfAotCQkJCVVWRF9DR0Nf Q1RSTF9fV0NCX01PREVfTUFTSyB8Ci0JCQkJVVZEX0NHQ19DVFJMX19WQ1BVX01PREVfTUFTSyB8 Ci0JCQkJVVZEX0NHQ19DVFJMX19TQ1BVX01PREVfTUFTSzsKLQkJZGF0YTIgfD0gVVZEX1NVVkRf Q0dDX0NUUkxfX1NSRV9NT0RFX01BU0sgfAotCQkJCVVWRF9TVVZEX0NHQ19DVFJMX19TSVRfTU9E RV9NQVNLIHwKLQkJCQlVVkRfU1VWRF9DR0NfQ1RSTF9fU01QX01PREVfTUFTSyB8Ci0JCQkJVVZE X1NVVkRfQ0dDX0NUUkxfX1NDTV9NT0RFX01BU0sgfAotCQkJCVVWRF9TVVZEX0NHQ19DVFJMX19T REJfTU9ERV9NQVNLOwotCX0KLQlXUkVHMzIobW1VVkRfQ0dDX0NUUkwsIGRhdGEpOwotCVdSRUcz MihtbVVWRF9TVVZEX0NHQ19DVFJMLCBkYXRhMik7Ci0KLQlkYXRhID0gUlJFRzMyX1VWRF9DVFgo aXhVVkRfQ0dDX0NUUkwyKTsKLQlkYXRhICY9IH4oUkVHX0ZJRUxEX01BU0soVVZEX0NHQ19DVFJM MiwgRFlOX09DTEtfUkFNUF9FTikgfAotCQkJUkVHX0ZJRUxEX01BU0soVVZEX0NHQ19DVFJMMiwg RFlOX1JDTEtfUkFNUF9FTikgfAotCQkJUkVHX0ZJRUxEX01BU0soVVZEX0NHQ19DVFJMMiwgR0FU RVJfRElWX0lEKSk7Ci0JZGF0YTEgJj0gKFJFR19GSUVMRF9NQVNLKFVWRF9DR0NfQ1RSTDIsIERZ Tl9PQ0xLX1JBTVBfRU4pIHwKLQkJCVJFR19GSUVMRF9NQVNLKFVWRF9DR0NfQ1RSTDIsIERZTl9S Q0xLX1JBTVBfRU4pIHwKLQkJCVJFR19GSUVMRF9NQVNLKFVWRF9DR0NfQ1RSTDIsIEdBVEVSX0RJ Vl9JRCkpOwotCWRhdGEgfD0gZGF0YTE7Ci0JV1JFRzMyX1VWRF9DVFgoaXhVVkRfQ0dDX0NUUkwy LCBkYXRhKTsKLX0KKyNlbmRpZgogCiAvKioKICAqIHV2ZF92Nl8wX3N0YXJ0IC0gc3RhcnQgVVZE IGJsb2NrCkBAIC01MzgsMTEgKzM5MSw3IEBAIHN0YXRpYyBpbnQgdXZkX3Y2XzBfc3RhcnQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAKIAkvKiBTZXQgZHluYW1pYyBjbG9jayBnYXRpbmcg aW4gUy9XIGNvbnRyb2wgbW9kZSAqLwogCWlmIChhZGV2LT5jZ19mbGFncyAmIEFNRF9DR19TVVBQ T1JUX1VWRF9NR0NHKSB7Ci0JCWlmIChhZGV2LT5mbGFncyAmIEFNRF9JU19BUFUpCi0JCQljel9z ZXRfdXZkX2Nsb2NrX2dhdGluZ19icmFuY2hlcyhhZGV2LCBmYWxzZSk7Ci0JCWVsc2UKLQkJCXRv bmdhX3NldF91dmRfY2xvY2tfZ2F0aW5nX2JyYW5jaGVzKGFkZXYsIGZhbHNlKTsKLQkJdXZkX3Y2 XzBfc2V0X3V2ZF9keW5hbWljX2Nsb2NrX21vZGUoYWRldiwgdHJ1ZSk7CisJCXV2ZF92Nl8wX3Nl dF9zd19jbG9ja19nYXRpbmcoYWRldik7CiAJfSBlbHNlIHsKIAkJLyogZGlzYWJsZSBjbG9jayBn YXRpbmcgKi8KIAkJdWludDMyX3QgZGF0YSA9IFJSRUczMihtbVVWRF9DR0NfQ1RSTCk7CkBAIC05 NzgsMjUgKzgyNywxMjkgQEAgc3RhdGljIGludCB1dmRfdjZfMF9wcm9jZXNzX2ludGVycnVwdChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQg dXZkX3Y2XzBfc2V0X3N3X2Nsb2NrX2dhdGluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK K3sKKwl1aW50MzJfdCBkYXRhLCBkYXRhMSwgZGF0YTIsIHN1dmRfZmxhZ3M7CisKKwlkYXRhID0g UlJFRzMyKG1tVVZEX0NHQ19DVFJMKTsKKwlkYXRhMSA9IFJSRUczMihtbVVWRF9TVVZEX0NHQ19H QVRFKTsKKwlkYXRhMiA9IFJSRUczMihtbVVWRF9TVVZEX0NHQ19DVFJMKTsKKworCWRhdGEgJj0g fihVVkRfQ0dDX0NUUkxfX0NMS19PRkZfREVMQVlfTUFTSyB8CisJCSAgVVZEX0NHQ19DVFJMX19D TEtfR0FURV9ETFlfVElNRVJfTUFTSyk7CisKKwlzdXZkX2ZsYWdzID0gVVZEX1NVVkRfQ0dDX0dB VEVfX1NSRV9NQVNLIHwKKwkJICAgICBVVkRfU1VWRF9DR0NfR0FURV9fU0lUX01BU0sgfAorCQkg ICAgIFVWRF9TVVZEX0NHQ19HQVRFX19TTVBfTUFTSyB8CisJCSAgICAgVVZEX1NVVkRfQ0dDX0dB VEVfX1NDTV9NQVNLIHwKKwkJICAgICBVVkRfU1VWRF9DR0NfR0FURV9fU0RCX01BU0s7CisKKwlk YXRhIHw9IFVWRF9DR0NfQ1RSTF9fRFlOX0NMT0NLX01PREVfTUFTSyB8CisJCSgxIDw8IFJFR19G SUVMRF9TSElGVChVVkRfQ0dDX0NUUkwsIENMS19HQVRFX0RMWV9USU1FUikpIHwKKwkJKDQgPDwg UkVHX0ZJRUxEX1NISUZUKFVWRF9DR0NfQ1RSTCwgQ0xLX09GRl9ERUxBWSkpOworCisJZGF0YSAm PSB+KFVWRF9DR0NfQ1RSTF9fVURFQ19SRV9NT0RFX01BU0sgfAorCQkJVVZEX0NHQ19DVFJMX19V REVDX0NNX01PREVfTUFTSyB8CisJCQlVVkRfQ0dDX0NUUkxfX1VERUNfSVRfTU9ERV9NQVNLIHwK KwkJCVVWRF9DR0NfQ1RSTF9fVURFQ19EQl9NT0RFX01BU0sgfAorCQkJVVZEX0NHQ19DVFJMX19V REVDX01QX01PREVfTUFTSyB8CisJCQlVVkRfQ0dDX0NUUkxfX1NZU19NT0RFX01BU0sgfAorCQkJ VVZEX0NHQ19DVFJMX19VREVDX01PREVfTUFTSyB8CisJCQlVVkRfQ0dDX0NUUkxfX01QRUcyX01P REVfTUFTSyB8CisJCQlVVkRfQ0dDX0NUUkxfX1JFR1NfTU9ERV9NQVNLIHwKKwkJCVVWRF9DR0Nf Q1RSTF9fUkJDX01PREVfTUFTSyB8CisJCQlVVkRfQ0dDX0NUUkxfX0xNSV9NQ19NT0RFX01BU0sg fAorCQkJVVZEX0NHQ19DVFJMX19MTUlfVU1DX01PREVfTUFTSyB8CisJCQlVVkRfQ0dDX0NUUkxf X0lEQ1RfTU9ERV9NQVNLIHwKKwkJCVVWRF9DR0NfQ1RSTF9fTVBSRF9NT0RFX01BU0sgfAorCQkJ VVZEX0NHQ19DVFJMX19NUENfTU9ERV9NQVNLIHwKKwkJCVVWRF9DR0NfQ1RSTF9fTEJTSV9NT0RF X01BU0sgfAorCQkJVVZEX0NHQ19DVFJMX19MUkJCTV9NT0RFX01BU0sgfAorCQkJVVZEX0NHQ19D VFJMX19XQ0JfTU9ERV9NQVNLIHwKKwkJCVVWRF9DR0NfQ1RSTF9fVkNQVV9NT0RFX01BU0sgfAor CQkJVVZEX0NHQ19DVFJMX19KUEVHX01PREVfTUFTSyB8CisJCQlVVkRfQ0dDX0NUUkxfX1NDUFVf TU9ERV9NQVNLIHwKKwkJCVVWRF9DR0NfQ1RSTF9fSlBFRzJfTU9ERV9NQVNLKTsKKwlkYXRhMiAm PSB+KFVWRF9TVVZEX0NHQ19DVFJMX19TUkVfTU9ERV9NQVNLIHwKKwkJCVVWRF9TVVZEX0NHQ19D VFJMX19TSVRfTU9ERV9NQVNLIHwKKwkJCVVWRF9TVVZEX0NHQ19DVFJMX19TTVBfTU9ERV9NQVNL IHwKKwkJCVVWRF9TVVZEX0NHQ19DVFJMX19TQ01fTU9ERV9NQVNLIHwKKwkJCVVWRF9TVVZEX0NH Q19DVFJMX19TREJfTU9ERV9NQVNLKTsKKwlkYXRhMSB8PSBzdXZkX2ZsYWdzOworCisJV1JFRzMy KG1tVVZEX0NHQ19DVFJMLCBkYXRhKTsKKwlXUkVHMzIobW1VVkRfQ0dDX0dBVEUsIDApOworCVdS RUczMihtbVVWRF9TVVZEX0NHQ19HQVRFLCBkYXRhMSk7CisJV1JFRzMyKG1tVVZEX1NVVkRfQ0dD X0NUUkwsIGRhdGEyKTsKK30KKworI2lmIDAKK3N0YXRpYyB2b2lkIHV2ZF92Nl8wX3NldF9od19j bG9ja19nYXRpbmcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCit7CisJdWludDMyX3QgZGF0 YSwgZGF0YTEsIGNnY19mbGFncywgc3V2ZF9mbGFnczsKKworCWRhdGEgPSBSUkVHMzIobW1VVkRf Q0dDX0dBVEUpOworCWRhdGExID0gUlJFRzMyKG1tVVZEX1NVVkRfQ0dDX0dBVEUpOworCisJY2dj X2ZsYWdzID0gVVZEX0NHQ19HQVRFX19TWVNfTUFTSyB8CisJCVVWRF9DR0NfR0FURV9fVURFQ19N QVNLIHwKKwkJVVZEX0NHQ19HQVRFX19NUEVHMl9NQVNLIHwKKwkJVVZEX0NHQ19HQVRFX19SQkNf TUFTSyB8CisJCVVWRF9DR0NfR0FURV9fTE1JX01DX01BU0sgfAorCQlVVkRfQ0dDX0dBVEVfX0lE Q1RfTUFTSyB8CisJCVVWRF9DR0NfR0FURV9fTVBSRF9NQVNLIHwKKwkJVVZEX0NHQ19HQVRFX19N UENfTUFTSyB8CisJCVVWRF9DR0NfR0FURV9fTEJTSV9NQVNLIHwKKwkJVVZEX0NHQ19HQVRFX19M UkJCTV9NQVNLIHwKKwkJVVZEX0NHQ19HQVRFX19VREVDX1JFX01BU0sgfAorCQlVVkRfQ0dDX0dB VEVfX1VERUNfQ01fTUFTSyB8CisJCVVWRF9DR0NfR0FURV9fVURFQ19JVF9NQVNLIHwKKwkJVVZE X0NHQ19HQVRFX19VREVDX0RCX01BU0sgfAorCQlVVkRfQ0dDX0dBVEVfX1VERUNfTVBfTUFTSyB8 CisJCVVWRF9DR0NfR0FURV9fV0NCX01BU0sgfAorCQlVVkRfQ0dDX0dBVEVfX1ZDUFVfTUFTSyB8 CisJCVVWRF9DR0NfR0FURV9fU0NQVV9NQVNLIHwKKwkJVVZEX0NHQ19HQVRFX19KUEVHX01BU0sg fAorCQlVVkRfQ0dDX0dBVEVfX0pQRUcyX01BU0s7CisKKwlzdXZkX2ZsYWdzID0gVVZEX1NVVkRf Q0dDX0dBVEVfX1NSRV9NQVNLIHwKKwkJCQlVVkRfU1VWRF9DR0NfR0FURV9fU0lUX01BU0sgfAor CQkJCVVWRF9TVVZEX0NHQ19HQVRFX19TTVBfTUFTSyB8CisJCQkJVVZEX1NVVkRfQ0dDX0dBVEVf X1NDTV9NQVNLIHwKKwkJCQlVVkRfU1VWRF9DR0NfR0FURV9fU0RCX01BU0s7CisKKwlkYXRhIHw9 IGNnY19mbGFnczsKKwlkYXRhMSB8PSBzdXZkX2ZsYWdzOworCisJV1JFRzMyKG1tVVZEX0NHQ19H QVRFLCBkYXRhKTsKKwlXUkVHMzIobW1VVkRfU1VWRF9DR0NfR0FURSwgZGF0YTEpOworfQorI2Vu ZGlmCisKIHN0YXRpYyBpbnQgdXZkX3Y2XzBfc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlKHZvaWQgKmhh bmRsZSwKIAkJCQkJICBlbnVtIGFtZF9jbG9ja2dhdGluZ19zdGF0ZSBzdGF0ZSkKIHsKIAlzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsK IAlib29sIGVuYWJsZSA9IChzdGF0ZSA9PSBBTURfQ0dfU1RBVEVfR0FURSkgPyB0cnVlIDogZmFs c2U7CisJc3RhdGljIGludCBjdXJzdGF0ZSA9IC0xOwogCiAJaWYgKCEoYWRldi0+Y2dfZmxhZ3Mg JiBBTURfQ0dfU1VQUE9SVF9VVkRfTUdDRykpCiAJCXJldHVybiAwOwogCisJaWYgKGN1cnN0YXRl ID09IHN0YXRlKQorCQlyZXR1cm4gMDsKKworCWN1cnN0YXRlID0gc3RhdGU7CiAJaWYgKGVuYWJs ZSkgewotCQlpZiAoYWRldi0+ZmxhZ3MgJiBBTURfSVNfQVBVKQotCQkJY3pfc2V0X3V2ZF9jbG9j a19nYXRpbmdfYnJhbmNoZXMoYWRldiwgZW5hYmxlKTsKLQkJZWxzZQotCQkJdG9uZ2Ffc2V0X3V2 ZF9jbG9ja19nYXRpbmdfYnJhbmNoZXMoYWRldiwgZW5hYmxlKTsKLQkJdXZkX3Y2XzBfc2V0X3V2 ZF9keW5hbWljX2Nsb2NrX21vZGUoYWRldiwgdHJ1ZSk7CisJCS8qIGRpc2FibGUgSFcgZ2F0aW5n IGFuZCBlbmFibGUgU3cgZ2F0aW5nICovCisJCXV2ZF92Nl8wX3NldF9zd19jbG9ja19nYXRpbmco YWRldik7CiAJfSBlbHNlIHsKLQkJdWludDMyX3QgZGF0YSA9IFJSRUczMihtbVVWRF9DR0NfQ1RS TCk7Ci0JCWRhdGEgJj0gflVWRF9DR0NfQ1RSTF9fRFlOX0NMT0NLX01PREVfTUFTSzsKLQkJV1JF RzMyKG1tVVZEX0NHQ19DVFJMLCBkYXRhKTsKKwkJLyogd2FpdCBmb3IgU1RBVFVTIHRvIGNsZWFy ICovCisJCWlmICh1dmRfdjZfMF93YWl0X2Zvcl9pZGxlKGhhbmRsZSkpCisJCQlyZXR1cm4gLUVC VVNZOworCisJCS8qIGVuYWJsZSBIVyBnYXRlcyBiZWNhdXNlIFVWRCBpcyBpZGxlICovCisvKgkJ dXZkX3Y2XzBfc2V0X2h3X2Nsb2NrX2dhdGluZyhhZGV2KTsgKi8KIAl9CiAKIAlyZXR1cm4gMDsK LS0gCjIuNS41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK