From mboxrd@z Thu Jan 1 00:00:00 1970 From: James Zhu Subject: [PATCH 5/8] drm/amdgpu:Add DPG mode support for vcn 1.0 Date: Tue, 25 Sep 2018 15:55:20 -0400 Message-ID: <1537905323-27071-5-git-send-email-James.Zhu@amd.com> References: <1537905323-27071-1-git-send-email-James.Zhu@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1537905323-27071-1-git-send-email-James.Zhu-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: james.zhu-5C7GfCeVMHo@public.gmane.org QWRkIERQRyBtb2RlIHN0YXJ0L3N0b3AvbWNfcmVzdW1lL2Nsb2NrX2dhdGluZyB0bwpzdXBwb3J0 IHZjbiAxLjAgRFBHIG1vZGUuCgpTaWduZWQtb2ZmLWJ5OiBKYW1lcyBaaHUgPEphbWVzLlpodUBh bWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3Zjbl92MV8wLmMgfCAzMTkg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDMxMyBp bnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L3Zjbl92MV8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92Y25f djFfMC5jCmluZGV4IDJjZGUwYjQuLjE5YmQ0MGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L3Zjbl92MV8wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv dmNuX3YxXzAuYwpAQCAtMTk4LDcgKzE5OCw4IEBAIHN0YXRpYyBpbnQgdmNuX3YxXzBfaHdfaW5p dCh2b2lkICpoYW5kbGUpCiAKIGRvbmU6CiAJaWYgKCFyKQotCQlEUk1fSU5GTygiVkNOIGRlY29k ZSBhbmQgZW5jb2RlIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS5cbiIpOworCQlEUk1fSU5GTygi VkNOIGRlY29kZSBhbmQgZW5jb2RlIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseSh1bmRlciAlcyku XG4iLAorCQkJKGFkZXYtPnBnX2ZsYWdzICYgQU1EX1BHX1NVUFBPUlRfRFBHKT8iRFBHIE1vZGUi OiJTUEcgTW9kZSIpOwogCiAJcmV0dXJuIHI7CiB9CkBAIC0yNjYsMTMgKzI2NywxMyBAQCBzdGF0 aWMgaW50IHZjbl92MV8wX3Jlc3VtZSh2b2lkICpoYW5kbGUpCiB9CiAKIC8qKgotICogdmNuX3Yx XzBfbWNfcmVzdW1lIC0gbWVtb3J5IGNvbnRyb2xsZXIgcHJvZ3JhbW1pbmcKKyAqIHZjbl92MV8w X21jX3Jlc3VtZV9wZ19tb2RlIC0gbWVtb3J5IGNvbnRyb2xsZXIgcHJvZ3JhbW1pbmcKICAqCiAg KiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCiAgKgogICogTGV0IHRoZSBWQ04gbWVtb3J5 IGNvbnRyb2xsZXIga25vdyBpdCdzIG9mZnNldHMKICAqLwotc3RhdGljIHZvaWQgdmNuX3YxXzBf bWNfcmVzdW1lKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQorc3RhdGljIHZvaWQgdmNuX3Yx XzBfbWNfcmVzdW1lX3BnX21vZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJdWlu dDMyX3Qgc2l6ZSA9IEFNREdQVV9HUFVfUEFHRV9BTElHTihhZGV2LT52Y24uZnctPnNpemUgKyA0 KTsKIAl1aW50MzJfdCBvZmZzZXQ7CkBAIC0zMTksNiArMzIwLDY1IEBAIHN0YXRpYyB2b2lkIHZj bl92MV8wX21jX3Jlc3VtZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJCWFkZXYtPmdm eC5jb25maWcuZ2JfYWRkcl9jb25maWcpOwogfQogCitzdGF0aWMgdm9pZCB2Y25fdjFfMF9tY19y ZXN1bWVfZHBnX21vZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCit7CisJdWludDMyX3Qg c2l6ZSA9IEFNREdQVV9HUFVfUEFHRV9BTElHTihhZGV2LT52Y24uZnctPnNpemUgKyA0KTsKKwl1 aW50MzJfdCBvZmZzZXQ7CisKKwlpZiAoYWRldi0+ZmlybXdhcmUubG9hZF90eXBlID09IEFNREdQ VV9GV19MT0FEX1BTUCkgeworCQlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9M TUlfVkNQVV9DQUNIRV82NEJJVF9CQVJfTE9XLAorCQkJICAgICAoYWRldi0+ZmlybXdhcmUudWNv ZGVbQU1ER1BVX1VDT0RFX0lEX1ZDTl0udG1yX21jX2FkZHJfbG8pLAorCQkJICAgICAweEZGRkZG RkZGLCAwKTsKKwkJV1JFRzMyX1NPQzE1X0RQR19NT0RFKFVWRCwgMCwgbW1VVkRfTE1JX1ZDUFVf Q0FDSEVfNjRCSVRfQkFSX0hJR0gsCisJCQkgICAgIChhZGV2LT5maXJtd2FyZS51Y29kZVtBTURH UFVfVUNPREVfSURfVkNOXS50bXJfbWNfYWRkcl9oaSksCisJCQkgICAgIDB4RkZGRkZGRkYsIDAp OworCQlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9WQ1BVX0NBQ0hFX09GRlNF VDAsIDAsCisJCQkgICAgIDB4RkZGRkZGRkYsIDApOworCQlvZmZzZXQgPSAwOworCX0gZWxzZSB7 CisJCVdSRUczMl9TT0MxNV9EUEdfTU9ERShVVkQsIDAsIG1tVVZEX0xNSV9WQ1BVX0NBQ0hFXzY0 QklUX0JBUl9MT1csCisJCQlsb3dlcl8zMl9iaXRzKGFkZXYtPnZjbi5ncHVfYWRkciksIDB4RkZG RkZGRkYsIDApOworCQlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9MTUlfVkNQ VV9DQUNIRV82NEJJVF9CQVJfSElHSCwKKwkJCXVwcGVyXzMyX2JpdHMoYWRldi0+dmNuLmdwdV9h ZGRyKSwgMHhGRkZGRkZGRiwgMCk7CisJCW9mZnNldCA9IHNpemU7CisJCVdSRUczMl9TT0MxNV9E UEdfTU9ERShVVkQsIDAsIG1tVVZEX1ZDUFVfQ0FDSEVfT0ZGU0VUMCwKKwkJCSAgICAgQU1ER1BV X1VWRF9GSVJNV0FSRV9PRkZTRVQgPj4gMywgMHhGRkZGRkZGRiwgMCk7CisJfQorCisJV1JFRzMy X1NPQzE1X0RQR19NT0RFKFVWRCwgMCwgbW1VVkRfVkNQVV9DQUNIRV9TSVpFMCwgc2l6ZSwgMHhG RkZGRkZGRiwgMCk7CisKKwlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9MTUlf VkNQVV9DQUNIRTFfNjRCSVRfQkFSX0xPVywKKwkJICAgICBsb3dlcl8zMl9iaXRzKGFkZXYtPnZj bi5ncHVfYWRkciArIG9mZnNldCksIDB4RkZGRkZGRkYsIDApOworCVdSRUczMl9TT0MxNV9EUEdf TU9ERShVVkQsIDAsIG1tVVZEX0xNSV9WQ1BVX0NBQ0hFMV82NEJJVF9CQVJfSElHSCwKKwkJICAg ICB1cHBlcl8zMl9iaXRzKGFkZXYtPnZjbi5ncHVfYWRkciArIG9mZnNldCksIDB4RkZGRkZGRkYs IDApOworCVdSRUczMl9TT0MxNV9EUEdfTU9ERShVVkQsIDAsIG1tVVZEX1ZDUFVfQ0FDSEVfT0ZG U0VUMSwgMCwKKwkJCSAgICAgMHhGRkZGRkZGRiwgMCk7CisJV1JFRzMyX1NPQzE1X0RQR19NT0RF KFVWRCwgMCwgbW1VVkRfVkNQVV9DQUNIRV9TSVpFMSwgQU1ER1BVX1ZDTl9IRUFQX1NJWkUsCisJ CQkgICAgIDB4RkZGRkZGRkYsIDApOworCisJV1JFRzMyX1NPQzE1X0RQR19NT0RFKFVWRCwgMCwg bW1VVkRfTE1JX1ZDUFVfQ0FDSEUyXzY0QklUX0JBUl9MT1csCisJCSAgICAgbG93ZXJfMzJfYml0 cyhhZGV2LT52Y24uZ3B1X2FkZHIgKyBvZmZzZXQgKyBBTURHUFVfVkNOX0hFQVBfU0laRSksCisJ CQkgICAgIDB4RkZGRkZGRkYsIDApOworCVdSRUczMl9TT0MxNV9EUEdfTU9ERShVVkQsIDAsIG1t VVZEX0xNSV9WQ1BVX0NBQ0hFMl82NEJJVF9CQVJfSElHSCwKKwkJICAgICB1cHBlcl8zMl9iaXRz KGFkZXYtPnZjbi5ncHVfYWRkciArIG9mZnNldCArIEFNREdQVV9WQ05fSEVBUF9TSVpFKSwKKwkJ CSAgICAgMHhGRkZGRkZGRiwgMCk7CisJV1JFRzMyX1NPQzE1X0RQR19NT0RFKFVWRCwgMCwgbW1V VkRfVkNQVV9DQUNIRV9PRkZTRVQyLCAwLCAweEZGRkZGRkZGLCAwKTsKKwlXUkVHMzJfU09DMTVf RFBHX01PREUoVVZELCAwLCBtbVVWRF9WQ1BVX0NBQ0hFX1NJWkUyLAorCQkJQU1ER1BVX1ZDTl9T VEFDS19TSVpFICsgKEFNREdQVV9WQ05fU0VTU0lPTl9TSVpFICogNDApLAorCQkJICAgICAweEZG RkZGRkZGLCAwKTsKKworCVdSRUczMl9TT0MxNV9EUEdfTU9ERShVVkQsIDAsIG1tVVZEX1VERUNf QUREUl9DT05GSUcsCisJCQlhZGV2LT5nZnguY29uZmlnLmdiX2FkZHJfY29uZmlnLCAweEZGRkZG RkZGLCAwKTsKKwlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9VREVDX0RCX0FE RFJfQ09ORklHLAorCQkJYWRldi0+Z2Z4LmNvbmZpZy5nYl9hZGRyX2NvbmZpZywgMHhGRkZGRkZG RiwgMCk7CisJV1JFRzMyX1NPQzE1X0RQR19NT0RFKFVWRCwgMCwgbW1VVkRfVURFQ19EQldfQURE Ul9DT05GSUcsCisJCQlhZGV2LT5nZnguY29uZmlnLmdiX2FkZHJfY29uZmlnLCAweEZGRkZGRkZG LCAwKTsKKwlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9KUEVHX0FERFJfQ09O RklHLAorCQkJYWRldi0+Z2Z4LmNvbmZpZy5nYl9hZGRyX2NvbmZpZywgMHhGRkZGRkZGRiwgMCk7 CisJV1JFRzMyX1NPQzE1X0RQR19NT0RFKFVWRCwgMCwgbW1VVkRfSlBFR19VVl9BRERSX0NPTkZJ RywKKwkJCWFkZXYtPmdmeC5jb25maWcuZ2JfYWRkcl9jb25maWcsIDB4RkZGRkZGRkYsIDApOwor fQorCiAvKioKICAqIHZjbl92MV8wX2Rpc2FibGVfY2xvY2tfZ2F0aW5nIC0gZGlzYWJsZSBWQ04g Y2xvY2sgZ2F0aW5nCiAgKgpAQCAtNTE5LDYgKzU3OSw2MiBAQCBzdGF0aWMgdm9pZCB2Y25fdjFf MF9lbmFibGVfY2xvY2tfZ2F0aW5nKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCVdSRUcz Ml9TT0MxNShWQ04sIDAsIG1tVVZEX1NVVkRfQ0dDX0NUUkwsIGRhdGEpOwogfQogCitzdGF0aWMg dm9pZCB2Y25fdjFfMF9jbG9ja19nYXRpbmdfZHBnX21vZGUoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIHVpbnQ4X3Qgc3JhbV9zZWwpCit7CisJdWludDMyX3QgcmVnX2RhdGEgPSAwOworCisJ LyogZGlzYWJsZSBKUEVHIENHQyAqLworCWlmIChhZGV2LT5jZ19mbGFncyAmIEFNRF9DR19TVVBQ T1JUX1ZDTl9NR0NHKQorCQlyZWdfZGF0YSA9IDEgPDwgSlBFR19DR0NfQ1RSTF9fRFlOX0NMT0NL X01PREVfX1NISUZUOworCWVsc2UKKwkJcmVnX2RhdGEgPSAwIDw8IEpQRUdfQ0dDX0NUUkxfX0RZ Tl9DTE9DS19NT0RFX19TSElGVDsKKwlyZWdfZGF0YSB8PSAxIDw8IEpQRUdfQ0dDX0NUUkxfX0NM S19HQVRFX0RMWV9USU1FUl9fU0hJRlQ7CisJcmVnX2RhdGEgfD0gNCA8PCBKUEVHX0NHQ19DVFJM X19DTEtfT0ZGX0RFTEFZX19TSElGVDsKKwlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBt bUpQRUdfQ0dDX0NUUkwsIHJlZ19kYXRhLCAweEZGRkZGRkZGLCBzcmFtX3NlbCk7CisKKwlXUkVH MzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBtbUpQRUdfQ0dDX0dBVEUsIDAsIDB4RkZGRkZGRkYs IHNyYW1fc2VsKTsKKworCS8qIGVuYWJsZSBzdyBjbG9jayBnYXRpbmcgY29udHJvbCAqLworCWlm IChhZGV2LT5jZ19mbGFncyAmIEFNRF9DR19TVVBQT1JUX1ZDTl9NR0NHKQorCQlyZWdfZGF0YSA9 IDEgPDwgVVZEX0NHQ19DVFJMX19EWU5fQ0xPQ0tfTU9ERV9fU0hJRlQ7CisJZWxzZQorCQlyZWdf ZGF0YSA9IDAgPDwgVVZEX0NHQ19DVFJMX19EWU5fQ0xPQ0tfTU9ERV9fU0hJRlQ7CisJcmVnX2Rh dGEgfD0gMSA8PCBVVkRfQ0dDX0NUUkxfX0NMS19HQVRFX0RMWV9USU1FUl9fU0hJRlQ7CisJcmVn X2RhdGEgfD0gNCA8PCBVVkRfQ0dDX0NUUkxfX0NMS19PRkZfREVMQVlfX1NISUZUOworCVdSRUcz Ml9TT0MxNV9EUEdfTU9ERShVVkQsIDAsIG1tVVZEX0NHQ19DVFJMLCByZWdfZGF0YSwgMHhGRkZG RkZGRiwgc3JhbV9zZWwpOworCisJcmVnX2RhdGEgJj0gfihVVkRfQ0dDX0NUUkxfX1VERUNfUkVf TU9ERV9NQVNLIHwKKwkJIFVWRF9DR0NfQ1RSTF9fVURFQ19DTV9NT0RFX01BU0sgfAorCQkgVVZE X0NHQ19DVFJMX19VREVDX0lUX01PREVfTUFTSyB8CisJCSBVVkRfQ0dDX0NUUkxfX1VERUNfREJf TU9ERV9NQVNLIHwKKwkJIFVWRF9DR0NfQ1RSTF9fVURFQ19NUF9NT0RFX01BU0sgfAorCQkgVVZE X0NHQ19DVFJMX19TWVNfTU9ERV9NQVNLIHwKKwkJIFVWRF9DR0NfQ1RSTF9fVURFQ19NT0RFX01B U0sgfAorCQkgVVZEX0NHQ19DVFJMX19NUEVHMl9NT0RFX01BU0sgfAorCQkgVVZEX0NHQ19DVFJM X19SRUdTX01PREVfTUFTSyB8CisJCSBVVkRfQ0dDX0NUUkxfX1JCQ19NT0RFX01BU0sgfAorCQkg VVZEX0NHQ19DVFJMX19MTUlfTUNfTU9ERV9NQVNLIHwKKwkJIFVWRF9DR0NfQ1RSTF9fTE1JX1VN Q19NT0RFX01BU0sgfAorCQkgVVZEX0NHQ19DVFJMX19JRENUX01PREVfTUFTSyB8CisJCSBVVkRf Q0dDX0NUUkxfX01QUkRfTU9ERV9NQVNLIHwKKwkJIFVWRF9DR0NfQ1RSTF9fTVBDX01PREVfTUFT SyB8CisJCSBVVkRfQ0dDX0NUUkxfX0xCU0lfTU9ERV9NQVNLIHwKKwkJIFVWRF9DR0NfQ1RSTF9f TFJCQk1fTU9ERV9NQVNLIHwKKwkJIFVWRF9DR0NfQ1RSTF9fV0NCX01PREVfTUFTSyB8CisJCSBV VkRfQ0dDX0NUUkxfX1ZDUFVfTU9ERV9NQVNLIHwKKwkJIFVWRF9DR0NfQ1RSTF9fU0NQVV9NT0RF X01BU0spOworCVdSRUczMl9TT0MxNV9EUEdfTU9ERShVVkQsIDAsIG1tVVZEX0NHQ19DVFJMLCBy ZWdfZGF0YSwgMHhGRkZGRkZGRiwgc3JhbV9zZWwpOworCisJLyogdHVybiBvZmYgY2xvY2sgZ2F0 aW5nICovCisJV1JFRzMyX1NPQzE1X0RQR19NT0RFKFVWRCwgMCwgbW1VVkRfQ0dDX0dBVEUsIDAs IDB4RkZGRkZGRkYsIHNyYW1fc2VsKTsKKworCS8qIHR1cm4gb24gU1VWRCBjbG9jayBnYXRpbmcg Ki8KKwlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9TVVZEX0NHQ19HQVRFLCAx LCAweEZGRkZGRkZGLCBzcmFtX3NlbCk7CisKKwkvKiB0dXJuIG9uIHN3IG1vZGUgaW4gVVZEX1NV VkRfQ0dDX0NUUkwgKi8KKwlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9TVVZE X0NHQ19DVFJMLCAwLCAweEZGRkZGRkZGLCBzcmFtX3NlbCk7Cit9CisKIHN0YXRpYyB2b2lkIHZj bl8xXzBfZGlzYWJsZV9zdGF0aWNfcG93ZXJfZ2F0aW5nKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQogewogCXVpbnQzMl90IGRhdGEgPSAwOwpAQCAtNjE0LDcgKzczMCw3IEBAIHN0YXRpYyB2 b2lkIHZjbl8xXzBfZW5hYmxlX3N0YXRpY19wb3dlcl9nYXRpbmcoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCiAgKgogICogU2V0dXAgYW5kIHN0YXJ0IHRoZSBWQ04gYmxvY2sKICAqLwotc3Rh dGljIGludCB2Y25fdjFfMF9zdGFydChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKK3N0YXRp YyBpbnQgdmNuX3YxXzBfc3RhcnRfcGdfbW9kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK IHsKIAlzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcgPSAmYWRldi0+dmNuLnJpbmdfZGVjOwogCXVp bnQzMl90IHJiX2J1ZnN6LCB0bXA7CkBAIC02MjgsNyArNzQ0LDcgQEAgc3RhdGljIGludCB2Y25f djFfMF9zdGFydChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkvKiBkaXNhYmxlIGNsb2Nr IGdhdGluZyAqLwogCXZjbl92MV8wX2Rpc2FibGVfY2xvY2tfZ2F0aW5nKGFkZXYpOwogCi0JdmNu X3YxXzBfbWNfcmVzdW1lKGFkZXYpOworCXZjbl92MV8wX21jX3Jlc3VtZV9wZ19tb2RlKGFkZXYp OwogCiAJLyogZGlzYWJsZSBpbnRlcnVwdCAqLwogCVdSRUczMl9QKFNPQzE1X1JFR19PRkZTRVQo VVZELCAwLCBtbVVWRF9NQVNUSU5UX0VOKSwgMCwKQEAgLTc5OSw2ICs5MTUsMTcwIEBAIHN0YXRp YyBpbnQgdmNuX3YxXzBfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJcmV0dXJu IDA7CiB9CiAKK3N0YXRpYyBpbnQgdmNuX3YxXzBfc3RhcnRfZHBnX21vZGUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCit7CisJc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nID0gJmFkZXYtPnZj bi5yaW5nX2RlYzsKKwl1aW50MzJfdCByYl9idWZzeiwgdG1wLCByZWdfZGF0YTsKKwl1aW50MzJf dCBsbWlfc3dhcF9jbnRsOworCisJLyogZGlzYWJsZSBieXRlIHN3YXBwaW5nICovCisJbG1pX3N3 YXBfY250bCA9IDA7CisKKwl2Y25fMV8wX2VuYWJsZV9zdGF0aWNfcG93ZXJfZ2F0aW5nKGFkZXYp OworCisJLyogZW5hYmxlIGR5bmFtaWMgcG93ZXIgZ2F0aW5nIG1vZGUgKi8KKwlyZWdfZGF0YSA9 IFJSRUczMl9TT0MxNShVVkQsIDAsIG1tVVZEX1BPV0VSX1NUQVRVUyk7CisJcmVnX2RhdGEgfD0g VVZEX1BPV0VSX1NUQVRVU19fVVZEX1BHX01PREVfTUFTSzsKKwlyZWdfZGF0YSB8PSBVVkRfUE9X RVJfU1RBVFVTX19VVkRfUEdfRU5fTUFTSzsKKwlXUkVHMzJfU09DMTUoVVZELCAwLCBtbVVWRF9Q T1dFUl9TVEFUVVMsIHJlZ19kYXRhKTsKKworCS8qIGVuYWJsZSBjbG9jayBnYXRpbmcgKi8KKwl2 Y25fdjFfMF9jbG9ja19nYXRpbmdfZHBnX21vZGUoYWRldiwgMCk7CisKKwkvKiBlbmFibGUgVkNQ VSBjbG9jayAqLworCXJlZ19kYXRhID0gKDB4RkYgPDwgVVZEX1ZDUFVfQ05UTF9fUFJCX1RJTUVP VVRfVkFMX19TSElGVCk7CisJcmVnX2RhdGEgfD0gVVZEX1ZDUFVfQ05UTF9fQ0xLX0VOX01BU0s7 CisJcmVnX2RhdGEgfD0gVVZEX1ZDUFVfQ05UTF9fTUlGX1dSX0xPV19USFJFU0hPTERfQlBfTUFT SzsKKwlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9WQ1BVX0NOVEwsIHJlZ19k YXRhLCAweEZGRkZGRkZGLCAwKTsKKworCS8qIGRpc2FibGUgaW50ZXJ1cHQgKi8KKwlXUkVHMzJf U09DMTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9NQVNUSU5UX0VOLAorCQkJMCwgVVZEX01BU1RJ TlRfRU5fX1ZDUFVfRU5fTUFTSywgMCk7CisKKwkvKiBzdGFsbCBVTUMgYW5kIHJlZ2lzdGVyIGJ1 cyBiZWZvcmUgcmVzZXR0aW5nIFZDUFUgKi8KKwlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAw LCBtbVVWRF9MTUlfQ1RSTDIsCisJCQlVVkRfTE1JX0NUUkwyX19TVEFMTF9BUkJfVU1DX01BU0ss IFVWRF9MTUlfQ1RSTDJfX1NUQUxMX0FSQl9VTUNfTUFTSywgMCk7CisKKwkvKiBwdXQgTE1JLCBW Q1BVLCBSQkMgZXRjLi4uIGludG8gcmVzZXQgKi8KKwlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZE LCAwLCBtbVVWRF9TT0ZUX1JFU0VULAorCQlVVkRfU09GVF9SRVNFVF9fTE1JX1NPRlRfUkVTRVRf TUFTSyB8CisJCVVWRF9TT0ZUX1JFU0VUX19WQ1BVX1NPRlRfUkVTRVRfTUFTSyB8CisJCVVWRF9T T0ZUX1JFU0VUX19MQlNJX1NPRlRfUkVTRVRfTUFTSyB8CisJCVVWRF9TT0ZUX1JFU0VUX19SQkNf U09GVF9SRVNFVF9NQVNLIHwKKwkJVVZEX1NPRlRfUkVTRVRfX0NTTV9TT0ZUX1JFU0VUX01BU0sg fAorCQlVVkRfU09GVF9SRVNFVF9fQ1hXX1NPRlRfUkVTRVRfTUFTSyB8CisJCVVWRF9TT0ZUX1JF U0VUX19UQVBfU09GVF9SRVNFVF9NQVNLIHwKKwkJVVZEX1NPRlRfUkVTRVRfX0xNSV9VTUNfU09G VF9SRVNFVF9NQVNLLAorCQkweEZGRkZGRkZGLCAwKTsKKworCS8qIGluaXRpYWxpemUgVkNOIG1l bW9yeSBjb250cm9sbGVyICovCisJV1JFRzMyX1NPQzE1X0RQR19NT0RFKFVWRCwgMCwgbW1VVkRf TE1JX0NUUkwsCisJCSgweDQwIDw8IFVWRF9MTUlfQ1RSTF9fV1JJVEVfQ0xFQU5fVElNRVJfX1NI SUZUKSB8CisJCVVWRF9MTUlfQ1RSTF9fV1JJVEVfQ0xFQU5fVElNRVJfRU5fTUFTSyB8CisJCVVW RF9MTUlfQ1RSTF9fREFUQV9DT0hFUkVOQ1lfRU5fTUFTSyB8CisJCVVWRF9MTUlfQ1RSTF9fVkNQ VV9EQVRBX0NPSEVSRU5DWV9FTl9NQVNLIHwKKwkJVVZEX0xNSV9DVFJMX19SRVFfTU9ERV9NQVNL IHwKKwkJMHgwMDEwMDAwMEwsIDB4RkZGRkZGRkYsIDApOworCisjaWZkZWYgX19CSUdfRU5ESUFO CisJLyogc3dhcCAoOCBpbiAzMikgUkIgYW5kIElCICovCisJbG1pX3N3YXBfY250bCA9IDB4YTsK KyNlbmRpZgorCVdSRUczMl9TT0MxNV9EUEdfTU9ERShVVkQsIDAsIG1tVVZEX0xNSV9TV0FQX0NO VEwsIGxtaV9zd2FwX2NudGwsIDB4RkZGRkZGRkYsIDApOworCisJV1JFRzMyX1NPQzE1X0RQR19N T0RFKFVWRCwgMCwgbW1VVkRfTVBDX1NFVF9NVVhBMCwgMHg0MGMyMDQwLCAweEZGRkZGRkZGLCAw KTsKKwlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9NUENfU0VUX01VWEExLCAw eDAsIDB4RkZGRkZGRkYsIDApOworCVdSRUczMl9TT0MxNV9EUEdfTU9ERShVVkQsIDAsIG1tVVZE X01QQ19TRVRfTVVYQjAsIDB4NDBjMjA0MCwgMHhGRkZGRkZGRiwgMCk7CisJV1JFRzMyX1NPQzE1 X0RQR19NT0RFKFVWRCwgMCwgbW1VVkRfTVBDX1NFVF9NVVhCMSwgMHgwLCAweEZGRkZGRkZGLCAw KTsKKwlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9NUENfU0VUX0FMVSwgMCwg MHhGRkZGRkZGRiwgMCk7CisJV1JFRzMyX1NPQzE1X0RQR19NT0RFKFVWRCwgMCwgbW1VVkRfTVBD X1NFVF9NVVgsIDB4ODgsIDB4RkZGRkZGRkYsIDApOworCisJdmNuX3YxXzBfbWNfcmVzdW1lX2Rw Z19tb2RlKGFkZXYpOworCisJLyogdGFrZSBhbGwgc3ViYmxvY2tzIG91dCBvZiByZXNldCwgZXhj ZXB0IFZDUFUgKi8KKwlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9TT0ZUX1JF U0VULAorCQkJVVZEX1NPRlRfUkVTRVRfX1ZDUFVfU09GVF9SRVNFVF9NQVNLLCAweEZGRkZGRkZG LCAwKTsKKworCS8qIGVuYWJsZSBWQ1BVIGNsb2NrICovCisJV1JFRzMyX1NPQzE1X0RQR19NT0RF KFVWRCwgMCwgbW1VVkRfVkNQVV9DTlRMLAorCQkJVVZEX1ZDUFVfQ05UTF9fQ0xLX0VOX01BU0ss IDB4RkZGRkZGRkYsIDApOworCisJLyogZW5hYmxlIFVNQyAqLworCVdSRUczMl9TT0MxNV9EUEdf TU9ERShVVkQsIDAsIG1tVVZEX0xNSV9DVFJMMiwKKwkJCTAsIFVWRF9MTUlfQ1RSTDJfX1NUQUxM X0FSQl9VTUNfTUFTSywgMCk7CisKKwkvKiBib290IHVwIHRoZSBWQ1BVICovCisJV1JFRzMyX1NP QzE1X0RQR19NT0RFKFVWRCwgMCwgbW1VVkRfU09GVF9SRVNFVCwgMCwgMHhGRkZGRkZGRiwgMCk7 CisKKwkvKiBlbmFibGUgbWFzdGVyIGludGVycnVwdCAqLworCVdSRUczMl9TT0MxNV9EUEdfTU9E RShVVkQsIDAsIG1tVVZEX01BU1RJTlRfRU4sCisJCQkoVVZEX01BU1RJTlRfRU5fX1ZDUFVfRU5f TUFTS3xVVkRfTUFTVElOVF9FTl9fU1lTX0VOX01BU0spLAorCQkJKFVWRF9NQVNUSU5UX0VOX19W Q1BVX0VOX01BU0t8VVZEX01BU1RJTlRfRU5fX1NZU19FTl9NQVNLKSwgMCk7CisKKwl2Y25fdjFf MF9jbG9ja19nYXRpbmdfZHBnX21vZGUoYWRldiwgMSk7CisJLyogc2V0dXAgbW1VVkRfTE1JX0NU UkwgKi8KKwlXUkVHMzJfU09DMTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9MTUlfQ1RSTCwKKwkJ CShVVkRfTE1JX0NUUkxfX1dSSVRFX0NMRUFOX1RJTUVSX0VOX01BU0sgfAorCQkJCVVWRF9MTUlf Q1RSTF9fQ1JDX1JFU0VUX01BU0sgfAorCQkJCVVWRF9MTUlfQ1RSTF9fTUFTS19NQ19VUkdFTlRf TUFTSyB8CisJCQkJVVZEX0xNSV9DVFJMX19EQVRBX0NPSEVSRU5DWV9FTl9NQVNLIHwKKwkJCQlV VkRfTE1JX0NUUkxfX1ZDUFVfREFUQV9DT0hFUkVOQ1lfRU5fTUFTSyB8CisJCQkJKDggPDwgVVZE X0xNSV9DVFJMX19XUklURV9DTEVBTl9USU1FUl9fU0hJRlQpIHwKKwkJCQkweDAwMTAwMDAwTCks IDB4RkZGRkZGRkYsIDEpOworCisJdG1wID0gYWRldi0+Z2Z4LmNvbmZpZy5nYl9hZGRyX2NvbmZp ZzsKKwkvKiBzZXR1cCBWQ04gZ2xvYmFsIHRpbGluZyByZWdpc3RlcnMgKi8KKwlXUkVHMzJfU09D MTVfRFBHX01PREUoVVZELCAwLCBtbVVWRF9KUEVHX0FERFJfQ09ORklHLCB0bXAsIDB4RkZGRkZG RkYsIDEpOworCVdSRUczMl9TT0MxNV9EUEdfTU9ERShVVkQsIDAsIG1tVVZEX0pQRUdfVVZfQURE Ul9DT05GSUcsIHRtcCwgMHhGRkZGRkZGRiwgMSk7CisKKwkvKiBlbmFibGUgU3lzdGVtIEludGVy cnVwdCBmb3IgSlJCQyAqLworCVdSRUczMl9TT0MxNV9EUEdfTU9ERShVVkQsIDAsIG1tVVZEX1NZ U19JTlRfRU4sCisJCQkJCQkJCQlVVkRfU1lTX0lOVF9FTl9fVVZEX0pSQkNfRU5fTUFTSywgMHhG RkZGRkZGRiwgMSk7CisKKwkvKiBmb3JjZSBSQkMgaW50byBpZGxlIHN0YXRlICovCisJcmJfYnVm c3ogPSBvcmRlcl9iYXNlXzIocmluZy0+cmluZ19zaXplKTsKKwl0bXAgPSBSRUdfU0VUX0ZJRUxE KDAsIFVWRF9SQkNfUkJfQ05UTCwgUkJfQlVGU1osIHJiX2J1ZnN6KTsKKwl0bXAgPSBSRUdfU0VU X0ZJRUxEKHRtcCwgVVZEX1JCQ19SQl9DTlRMLCBSQl9CTEtTWiwgMSk7CisJdG1wID0gUkVHX1NF VF9GSUVMRCh0bXAsIFVWRF9SQkNfUkJfQ05UTCwgUkJfTk9fRkVUQ0gsIDEpOworCXRtcCA9IFJF R19TRVRfRklFTEQodG1wLCBVVkRfUkJDX1JCX0NOVEwsIFJCX1dQVFJfUE9MTF9FTiwgMCk7CisJ dG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIFVWRF9SQkNfUkJfQ05UTCwgUkJfTk9fVVBEQVRFLCAx KTsKKwl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgVVZEX1JCQ19SQl9DTlRMLCBSQl9SUFRSX1dS X0VOLCAxKTsKKwlXUkVHMzJfU09DMTUoVVZELCAwLCBtbVVWRF9SQkNfUkJfQ05UTCwgdG1wKTsK KworCS8qIHNldCB0aGUgd3JpdGUgcG9pbnRlciBkZWxheSAqLworCVdSRUczMl9TT0MxNShVVkQs IDAsIG1tVVZEX1JCQ19SQl9XUFRSX0NOVEwsIDApOworCisJLyogc2V0IHRoZSB3YiBhZGRyZXNz ICovCisJV1JFRzMyX1NPQzE1KFVWRCwgMCwgbW1VVkRfUkJDX1JCX1JQVFJfQUREUiwKKwkJCQkJ CQkJKHVwcGVyXzMyX2JpdHMocmluZy0+Z3B1X2FkZHIpID4+IDIpKTsKKworCS8qIHByb2dyYW1t IHRoZSBSQl9CQVNFIGZvciByaW5nIGJ1ZmZlciAqLworCVdSRUczMl9TT0MxNShVVkQsIDAsIG1t VVZEX0xNSV9SQkNfUkJfNjRCSVRfQkFSX0xPVywKKwkJCQkJCQkJbG93ZXJfMzJfYml0cyhyaW5n LT5ncHVfYWRkcikpOworCVdSRUczMl9TT0MxNShVVkQsIDAsIG1tVVZEX0xNSV9SQkNfUkJfNjRC SVRfQkFSX0hJR0gsCisJCQkJCQkJCXVwcGVyXzMyX2JpdHMocmluZy0+Z3B1X2FkZHIpKTsKKwor CS8qIEluaXRpYWxpemUgdGhlIHJpbmcgYnVmZmVyJ3MgcmVhZCBhbmQgd3JpdGUgcG9pbnRlcnMg Ki8KKwlXUkVHMzJfU09DMTUoVVZELCAwLCBtbVVWRF9SQkNfUkJfUlBUUiwgMCk7CisKKwlyaW5n LT53cHRyID0gUlJFRzMyX1NPQzE1KFVWRCwgMCwgbW1VVkRfUkJDX1JCX1JQVFIpOworCVdSRUcz Ml9TT0MxNShVVkQsIDAsIG1tVVZEX1JCQ19SQl9XUFRSLAorCQkJCQkJCQlsb3dlcl8zMl9iaXRz KHJpbmctPndwdHIpKTsKKworCVdSRUczMl9QKFNPQzE1X1JFR19PRkZTRVQoVVZELCAwLCBtbVVW RF9SQkNfUkJfQ05UTCksIDAsCisJCQl+VVZEX1JCQ19SQl9DTlRMX19SQl9OT19GRVRDSF9NQVNL KTsKKworCS8qIGluaXRpYWxpemUgd3B0ciAqLworCXJpbmctPndwdHIgPSBSUkVHMzJfU09DMTUo VVZELCAwLCBtbVVWRF9KUkJDX1JCX1dQVFIpOworCisJLyogY29weSBwYXRjaCBjb21tYW5kcyB0 byB0aGUganBlZyByaW5nICovCisJdmNuX3YxXzBfanBlZ19yaW5nX3NldF9wYXRjaF9yaW5nKHJp bmcsCisJCShyaW5nLT53cHRyICsgcmluZy0+bWF4X2R3ICogYW1kZ3B1X3NjaGVkX2h3X3N1Ym1p c3Npb24pKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZjbl92MV8wX3N0YXJ0KHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQoreworCWludCByOworCisJaWYgKGFkZXYtPnBnX2Zs YWdzICYgQU1EX1BHX1NVUFBPUlRfRFBHKQorCQlyID0gdmNuX3YxXzBfc3RhcnRfZHBnX21vZGUo YWRldik7CisJZWxzZQorCQlyID0gdmNuX3YxXzBfc3RhcnRfcGdfbW9kZShhZGV2KTsKKwlyZXR1 cm4gcjsKK30KKwogLyoqCiAgKiB2Y25fdjFfMF9zdG9wIC0gc3RvcCBWQ04gYmxvY2sKICAqCkBA IC04MDYsNyArMTA4Niw3IEBAIHN0YXRpYyBpbnQgdmNuX3YxXzBfc3RhcnQoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCiAgKgogICogc3RvcCB0aGUgVkNOIGJsb2NrCiAgKi8KLXN0YXRpYyBp bnQgdmNuX3YxXzBfc3RvcChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKK3N0YXRpYyBpbnQg dmNuX3YxXzBfc3RvcF9wZ19tb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCS8q IGZvcmNlIFJCQyBpbnRvIGlkbGUgc3RhdGUgKi8KIAlXUkVHMzJfU09DMTUoVVZELCAwLCBtbVVW RF9SQkNfUkJfQ05UTCwgMHgxMTAxMDEwMSk7CkBAIC04MzYsNiArMTExNiwzMyBAQCBzdGF0aWMg aW50IHZjbl92MV8wX3N0b3Aoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJcmV0dXJuIDA7 CiB9CiAKK3N0YXRpYyBpbnQgdmNuX3YxXzBfc3RvcF9kcGdfbW9kZShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldikKK3sKKwlpbnQgcmV0X2NvZGU7CisKKwkvKiBXYWl0IGZvciBwb3dlciBzdGF0 dXMgdG8gYmUgMSAqLworCVNPQzE1X1dBSVRfT05fUlJFRyhVVkQsIDAsIG1tVVZEX1BPV0VSX1NU QVRVUywgMHgxLAorCQkJVVZEX1BPV0VSX1NUQVRVU19fVVZEX1BPV0VSX1NUQVRVU19NQVNLLCBy ZXRfY29kZSk7CisKKwkvKiBkaXNhYmxlIGR5bmFtaWMgcG93ZXIgZ2F0aW5nIG1vZGUgKi8KKwlX UkVHMzJfUChTT0MxNV9SRUdfT0ZGU0VUKFVWRCwgMCwgbW1VVkRfUE9XRVJfU1RBVFVTKSwgMCwK KwkJCX5VVkRfUE9XRVJfU1RBVFVTX19VVkRfUEdfTU9ERV9NQVNLKTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IHZjbl92MV8wX3N0b3Aoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp Cit7CisJaW50IHI7CisKKwlpZiAoYWRldi0+cGdfZmxhZ3MgJiBBTURfUEdfU1VQUE9SVF9EUEcp CisJCXIgPSB2Y25fdjFfMF9zdG9wX2RwZ19tb2RlKGFkZXYpOworCWVsc2UKKwkJciA9IHZjbl92 MV8wX3N0b3BfcGdfbW9kZShhZGV2KTsKKworCXJldHVybiByOworfQorCiBzdGF0aWMgYm9vbCB2 Y25fdjFfMF9pc19pZGxlKHZvaWQgKmhhbmRsZSkKIHsKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKLS0gCjIuNy40CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcg bGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK