From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom St Denis Subject: [PATCH 04/10] drm/amd/amdgpu: Port MMHUB over to new SOC15 macros Date: Mon, 10 Apr 2017 12:19:15 -0400 Message-ID: <20170410161921.4281-5-tom.stdenis@amd.com> References: <20170410161921.4281-1-tom.stdenis@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170410161921.4281-1-tom.stdenis-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: Tom St Denis Tm8gZnVuY3Rpb25hbCBjaGFuZ2VzLgoKU2lnbmVkLW9mZi1ieTogVG9tIFN0IERlbmlzIDx0b20u c3RkZW5pc0BhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L21taHViX3Yx XzAuYyB8IDIwMSArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDEwMCBpbnNlcnRpb25zKCspLCAxMDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvbW1odWJfdjFfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvbW1odWJfdjFfMC5jCmluZGV4IDYyNjg0NTEwZGRjZC4uOTFiZGFmZDMwYzg0IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9tbWh1Yl92MV8wLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvbW1odWJfdjFfMC5jCkBAIC0zNiw3ICszNiw3IEBA CiAKIHU2NCBtbWh1Yl92MV8wX2dldF9mYl9sb2NhdGlvbihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldikKIHsKLQl1NjQgYmFzZSA9IFJSRUczMihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLCBt bU1DX1ZNX0ZCX0xPQ0FUSU9OX0JBU0UpKTsKKwl1NjQgYmFzZSA9IFJSRUczMl9TT0MxNShNTUhV QiwgMCwgbW1NQ19WTV9GQl9MT0NBVElPTl9CQVNFKTsKIAogCWJhc2UgJj0gTUNfVk1fRkJfTE9D QVRJT05fQkFTRV9fRkJfQkFTRV9NQVNLOwogCWJhc2UgPDw9IDI0OwpAQCAtNTQsMzcgKzU0LDM3 IEBAIGludCBtbWh1Yl92MV8wX2dhcnRfZW5hYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 KQogCS8qIFByb2dyYW0gTUMuICovCiAJLyogVXBkYXRlIGNvbmZpZ3VyYXRpb24gKi8KIAlEUk1f SU5GTygiJXMgLS0gaW5cbiIsIF9fZnVuY19fKTsKLQlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChN TUhVQiwgMCwgbW1NQ19WTV9TWVNURU1fQVBFUlRVUkVfTE9XX0FERFIpLAotCQlhZGV2LT5tYy52 cmFtX3N0YXJ0ID4+IDE4KTsKLQlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwgbW1N Q19WTV9TWVNURU1fQVBFUlRVUkVfSElHSF9BRERSKSwKLQkJYWRldi0+bWMudnJhbV9lbmQgPj4g MTgpOworCVdSRUczMl9TT0MxNShNTUhVQiwgMCwgbW1NQ19WTV9TWVNURU1fQVBFUlRVUkVfTE9X X0FERFIsCisJCSAgICAgYWRldi0+bWMudnJhbV9zdGFydCA+PiAxOCk7CisJV1JFRzMyX1NPQzE1 KE1NSFVCLCAwLCBtbU1DX1ZNX1NZU1RFTV9BUEVSVFVSRV9ISUdIX0FERFIsCisJCSAgICAgYWRl di0+bWMudnJhbV9lbmQgPj4gMTgpOwogCXZhbHVlID0gYWRldi0+dnJhbV9zY3JhdGNoLmdwdV9h ZGRyIC0gYWRldi0+bWMudnJhbV9zdGFydCArCiAJCWFkZXYtPnZtX21hbmFnZXIudnJhbV9iYXNl X29mZnNldDsKLQlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwKLQkJCQltbU1DX1ZN X1NZU1RFTV9BUEVSVFVSRV9ERUZBVUxUX0FERFJfTFNCKSwKLQkJCQkodTMyKSh2YWx1ZSA+PiAx MikpOwotCVdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLAotCQkJCW1tTUNfVk1fU1lT VEVNX0FQRVJUVVJFX0RFRkFVTFRfQUREUl9NU0IpLAotCQkJCSh1MzIpKHZhbHVlID4+IDQ0KSk7 CisJV1JFRzMyX1NPQzE1KE1NSFVCLCAwLAorCQkgICAgIG1tTUNfVk1fU1lTVEVNX0FQRVJUVVJF X0RFRkFVTFRfQUREUl9MU0IsCisJCSAgICAgKHUzMikodmFsdWUgPj4gMTIpKTsKKwlXUkVHMzJf U09DMTUoTU1IVUIsIDAsCisJCSAgICAgbW1NQ19WTV9TWVNURU1fQVBFUlRVUkVfREVGQVVMVF9B RERSX01TQiwKKwkJICAgICAodTMyKSh2YWx1ZSA+PiA0NCkpOwogCiAJaWYgKGFtZGdwdV9zcmlv dl92ZihhZGV2KSkgewogCQkvKiBNQ19WTV9GQl9MT0NBVElPTl9CQVNFL1RPUCBpcyBOVUxMIGZv ciBWRiwgYmVjdWFzZSB0aGV5IGFyZSBWRiBjb3B5IHJlZ2lzdGVycyBzbwogCQl2YmlvcyBwb3N0 IGRvZXNuJ3QgcHJvZ3JhbSB0aGVtLCBmb3IgU1JJT1YgZHJpdmVyIG5lZWQgdG8gcHJvZ3JhbSB0 aGVtICovCi0JCVdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLCBtbU1DX1ZNX0ZCX0xP Q0FUSU9OX0JBU0UpLAotCQkJYWRldi0+bWMudnJhbV9zdGFydCA+PiAyNCk7Ci0JCVdSRUczMihT T0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLCBtbU1DX1ZNX0ZCX0xPQ0FUSU9OX1RPUCksCi0JCQlh ZGV2LT5tYy52cmFtX2VuZCA+PiAyNCk7CisJCVdSRUczMl9TT0MxNShNTUhVQiwgMCwgbW1NQ19W TV9GQl9MT0NBVElPTl9CQVNFLAorCQkJICAgICBhZGV2LT5tYy52cmFtX3N0YXJ0ID4+IDI0KTsK KwkJV1JFRzMyX1NPQzE1KE1NSFVCLCAwLCBtbU1DX1ZNX0ZCX0xPQ0FUSU9OX1RPUCwKKwkJCSAg ICAgYWRldi0+bWMudnJhbV9lbmQgPj4gMjQpOwogCX0KIAogCS8qIERpc2FibGUgQUdQLiAqLwot CVdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLCBtbU1DX1ZNX0FHUF9CQVNFKSwgMCk7 Ci0JV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoTU1IVUIsIDAsIG1tTUNfVk1fQUdQX1RPUCksIDAp OwotCVdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLCBtbU1DX1ZNX0FHUF9CT1QpLCAw eDAwRkZGRkZGKTsKKwlXUkVHMzJfU09DMTUoTU1IVUIsIDAsIG1tTUNfVk1fQUdQX0JBU0UsIDAp OworCVdSRUczMl9TT0MxNShNTUhVQiwgMCwgbW1NQ19WTV9BR1BfVE9QLCAwKTsKKwlXUkVHMzJf U09DMTUoTU1IVUIsIDAsIG1tTUNfVk1fQUdQX0JPVCwgMHgwMEZGRkZGRik7CiAKIAkvKiBHQVJU IEVuYWJsZS4gKi8KIAogCS8qIFNldHVwIFRMQiBjb250cm9sICovCi0JdG1wID0gUlJFRzMyKFNP QzE1X1JFR19PRkZTRVQoTU1IVUIsIDAsIG1tTUNfVk1fTVhfTDFfVExCX0NOVEwpKTsKKwl0bXAg PSBSUkVHMzJfU09DMTUoTU1IVUIsIDAsIG1tTUNfVk1fTVhfTDFfVExCX0NOVEwpOwogCXRtcCA9 IFJFR19TRVRfRklFTEQodG1wLCBNQ19WTV9NWF9MMV9UTEJfQ05UTCwgRU5BQkxFX0wxX1RMQiwg MSk7CiAJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsCiAJCQkJTUNfVk1fTVhfTDFfVExCX0NOVEws CkBAIC0xMTAsMTAgKzExMCwxMCBAQCBpbnQgbW1odWJfdjFfMF9nYXJ0X2VuYWJsZShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKIAkJCQlNQ19WTV9NWF9MMV9UTEJfQ05UTCwKIAkJCQlBVENf RU4sCiAJCQkJMSk7Ci0JV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoTU1IVUIsIDAsIG1tTUNfVk1f TVhfTDFfVExCX0NOVEwpLCB0bXApOworCVdSRUczMl9TT0MxNShNTUhVQiwgMCwgbW1NQ19WTV9N WF9MMV9UTEJfQ05UTCwgdG1wKTsKIAogCS8qIFNldHVwIEwyIGNhY2hlICovCi0JdG1wID0gUlJF RzMyKFNPQzE1X1JFR19PRkZTRVQoTU1IVUIsIDAsIG1tVk1fTDJfQ05UTCkpOworCXRtcCA9IFJS RUczMl9TT0MxNShNTUhVQiwgMCwgbW1WTV9MMl9DTlRMKTsKIAl0bXAgPSBSRUdfU0VUX0ZJRUxE KHRtcCwgVk1fTDJfQ05UTCwgRU5BQkxFX0wyX0NBQ0hFLCAxKTsKIAl0bXAgPSBSRUdfU0VUX0ZJ RUxEKHRtcCwKIAkJCQlWTV9MMl9DTlRMLApAQCAtMTMyLDE3ICsxMzIsMTcgQEAgaW50IG1taHVi X3YxXzBfZ2FydF9lbmFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCQkJVk1fTDJf Q05UTCwKIAkJCQlJREVOVElUWV9NT0RFX0ZSQUdNRU5UX1NJWkUsCiAJCQkJMCk7Ci0JV1JFRzMy KFNPQzE1X1JFR19PRkZTRVQoTU1IVUIsIDAsIG1tVk1fTDJfQ05UTCksIHRtcCk7CisJV1JFRzMy X1NPQzE1KE1NSFVCLCAwLCBtbVZNX0wyX0NOVEwsIHRtcCk7CiAKLQl0bXAgPSBSUkVHMzIoU09D MTVfUkVHX09GRlNFVChNTUhVQiwgMCwgbW1WTV9MMl9DTlRMMikpOworCXRtcCA9IFJSRUczMl9T T0MxNShNTUhVQiwgMCwgbW1WTV9MMl9DTlRMMik7CiAJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAs IFZNX0wyX0NOVEwyLCBJTlZBTElEQVRFX0FMTF9MMV9UTEJTLCAxKTsKIAl0bXAgPSBSRUdfU0VU X0ZJRUxEKHRtcCwgVk1fTDJfQ05UTDIsIElOVkFMSURBVEVfTDJfQ0FDSEUsIDEpOwotCVdSRUcz MihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLCBtbVZNX0wyX0NOVEwyKSwgdG1wKTsKKwlXUkVH MzJfU09DMTUoTU1IVUIsIDAsIG1tVk1fTDJfQ05UTDIsIHRtcCk7CiAKIAl0bXAgPSBtbVZNX0wy X0NOVEwzX0RFRkFVTFQ7Ci0JV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoTU1IVUIsIDAsIG1tVk1f TDJfQ05UTDMpLCB0bXApOworCVdSRUczMl9TT0MxNShNTUhVQiwgMCwgbW1WTV9MMl9DTlRMMywg dG1wKTsKIAotCXRtcCA9IFJSRUczMihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLCBtbVZNX0wy X0NOVEw0KSk7CisJdG1wID0gUlJFRzMyX1NPQzE1KE1NSFVCLCAwLCBtbVZNX0wyX0NOVEw0KTsK IAl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwKIAkJCSAgICBWTV9MMl9DTlRMNCwKIAkJCSAgICBW TUNfVEFQX1BERV9SRVFVRVNUX1BIWVNJQ0FMLApAQCAtMTUxLDIyICsxNTEsMjIgQEAgaW50IG1t aHViX3YxXzBfZ2FydF9lbmFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCQkgICAg Vk1fTDJfQ05UTDQsCiAJCQkgICAgVk1DX1RBUF9QVEVfUkVRVUVTVF9QSFlTSUNBTCwKIAkJCSAg ICAwKTsKLQlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwgbW1WTV9MMl9DTlRMNCks IHRtcCk7CisJV1JFRzMyX1NPQzE1KE1NSFVCLCAwLCBtbVZNX0wyX0NOVEw0LCB0bXApOwogCiAJ Lyogc2V0dXAgY29udGV4dDAgKi8KLQlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwK LQkJCQltbVZNX0NPTlRFWFQwX1BBR0VfVEFCTEVfU1RBUlRfQUREUl9MTzMyKSwKLQkJKHUzMiko YWRldi0+bWMuZ3R0X3N0YXJ0ID4+IDEyKSk7Ci0JV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoTU1I VUIsIDAsCi0JCQkJbW1WTV9DT05URVhUMF9QQUdFX1RBQkxFX1NUQVJUX0FERFJfSEkzMiksCi0J CSh1MzIpKGFkZXYtPm1jLmd0dF9zdGFydCA+PiA0NCkpOwotCi0JV1JFRzMyKFNPQzE1X1JFR19P RkZTRVQoTU1IVUIsIDAsCi0JCQkJbW1WTV9DT05URVhUMF9QQUdFX1RBQkxFX0VORF9BRERSX0xP MzIpLAotCQkodTMyKShhZGV2LT5tYy5ndHRfZW5kID4+IDEyKSk7Ci0JV1JFRzMyKFNPQzE1X1JF R19PRkZTRVQoTU1IVUIsIDAsCi0JCQkJbW1WTV9DT05URVhUMF9QQUdFX1RBQkxFX0VORF9BRERS X0hJMzIpLAotCQkodTMyKShhZGV2LT5tYy5ndHRfZW5kID4+IDQ0KSk7CisJV1JFRzMyX1NPQzE1 KE1NSFVCLCAwLAorCQkgICAgIG1tVk1fQ09OVEVYVDBfUEFHRV9UQUJMRV9TVEFSVF9BRERSX0xP MzIsCisJCSAgICAgKHUzMikoYWRldi0+bWMuZ3R0X3N0YXJ0ID4+IDEyKSk7CisJV1JFRzMyX1NP QzE1KE1NSFVCLCAwLAorCQkgICAgIG1tVk1fQ09OVEVYVDBfUEFHRV9UQUJMRV9TVEFSVF9BRERS X0hJMzIsCisJCSAgICAgKHUzMikoYWRldi0+bWMuZ3R0X3N0YXJ0ID4+IDQ0KSk7CisKKwlXUkVH MzJfU09DMTUoTU1IVUIsIDAsCisJCSAgICAgbW1WTV9DT05URVhUMF9QQUdFX1RBQkxFX0VORF9B RERSX0xPMzIsCisJCSAgICAgKHUzMikoYWRldi0+bWMuZ3R0X2VuZCA+PiAxMikpOworCVdSRUcz Ml9TT0MxNShNTUhVQiwgMCwKKwkJICAgICBtbVZNX0NPTlRFWFQwX1BBR0VfVEFCTEVfRU5EX0FE RFJfSEkzMiwKKwkJICAgICAodTMyKShhZGV2LT5tYy5ndHRfZW5kID4+IDQ0KSk7CiAKIAlCVUdf T04oYWRldi0+Z2FydC50YWJsZV9hZGRyICYgKH4weDAwMDBGRkZGRkZGRkYwMDBVTEwpKTsKIAl2 YWx1ZSA9IGFkZXYtPmdhcnQudGFibGVfYWRkciAtIGFkZXYtPm1jLnZyYW1fc3RhcnQgKwpAQCAt MTc0LDU0ICsxNzQsNTMgQEAgaW50IG1taHViX3YxXzBfZ2FydF9lbmFibGUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCiAJdmFsdWUgJj0gMHgwMDAwRkZGRkZGRkZGMDAwVUxMOwogCXZhbHVl IHw9IDB4MTsgLyogdmFsaWQgYml0ICovCiAKLQlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhV QiwgMCwKLQkJCQltbVZNX0NPTlRFWFQwX1BBR0VfVEFCTEVfQkFTRV9BRERSX0xPMzIpLAotCQko dTMyKXZhbHVlKTsKLQlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwKLQkJCQltbVZN X0NPTlRFWFQwX1BBR0VfVEFCTEVfQkFTRV9BRERSX0hJMzIpLAotCQkodTMyKSh2YWx1ZSA+PiAz MikpOwotCi0JV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoTU1IVUIsIDAsCi0JCQkJbW1WTV9MMl9Q Uk9URUNUSU9OX0ZBVUxUX0RFRkFVTFRfQUREUl9MTzMyKSwKLQkJKHUzMikoYWRldi0+ZHVtbXlf cGFnZS5hZGRyID4+IDEyKSk7Ci0JV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoTU1IVUIsIDAsCi0J CQkJbW1WTV9MMl9QUk9URUNUSU9OX0ZBVUxUX0RFRkFVTFRfQUREUl9ISTMyKSwKLQkJKHUzMiko KHU2NClhZGV2LT5kdW1teV9wYWdlLmFkZHIgPj4gNDQpKTsKLQotCXRtcCA9IFJSRUczMihTT0Mx NV9SRUdfT0ZGU0VUKE1NSFVCLCAwLCBtbVZNX0wyX1BST1RFQ1RJT05fRkFVTFRfQ05UTDIpKTsK KwlXUkVHMzJfU09DMTUoTU1IVUIsIDAsCisJCSAgICAgbW1WTV9DT05URVhUMF9QQUdFX1RBQkxF X0JBU0VfQUREUl9MTzMyLAorCQkgICAgICh1MzIpdmFsdWUpOworCVdSRUczMl9TT0MxNShNTUhV QiwgMCwKKwkJICAgICBtbVZNX0NPTlRFWFQwX1BBR0VfVEFCTEVfQkFTRV9BRERSX0hJMzIsCisJ CSAgICAgKHUzMikodmFsdWUgPj4gMzIpKTsKKworCVdSRUczMl9TT0MxNShNTUhVQiwgMCwKKwkJ ICAgICBtbVZNX0wyX1BST1RFQ1RJT05fRkFVTFRfREVGQVVMVF9BRERSX0xPMzIsCisJCSAgICAg KHUzMikoYWRldi0+ZHVtbXlfcGFnZS5hZGRyID4+IDEyKSk7CisJV1JFRzMyX1NPQzE1KE1NSFVC LCAwLAorCQkgICAgIG1tVk1fTDJfUFJPVEVDVElPTl9GQVVMVF9ERUZBVUxUX0FERFJfSEkzMiwK KwkJICAgICAodTMyKSgodTY0KWFkZXYtPmR1bW15X3BhZ2UuYWRkciA+PiA0NCkpOworCisJdG1w ID0gUlJFRzMyX1NPQzE1KE1NSFVCLCAwLCBtbVZNX0wyX1BST1RFQ1RJT05fRkFVTFRfQ05UTDIp OwogCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBWTV9MMl9QUk9URUNUSU9OX0ZBVUxUX0NOVEwy LAogCQkJICAgIEFDVElWRV9QQUdFX01JR1JBVElPTl9QVEVfUkVBRF9SRVRSWSwKIAkJCSAgICAx KTsKLQlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwgbW1WTV9MMl9QUk9URUNUSU9O X0ZBVUxUX0NOVEwyKSwgdG1wKTsKKwlXUkVHMzJfU09DMTUoTU1IVUIsIDAsIG1tVk1fTDJfUFJP VEVDVElPTl9GQVVMVF9DTlRMMiwgdG1wKTsKIAogCWFkZHIgPSBTT0MxNV9SRUdfT0ZGU0VUKE1N SFVCLCAwLCBtbVZNX0NPTlRFWFQwX0NOVEwpOwogCXRtcCA9IFJSRUczMihhZGRyKTsKIAogCXRt cCA9IFJFR19TRVRfRklFTEQodG1wLCBWTV9DT05URVhUMF9DTlRMLCBFTkFCTEVfQ09OVEVYVCwg MSk7CiAJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIFZNX0NPTlRFWFQwX0NOVEwsIFBBR0VfVEFC TEVfREVQVEgsIDApOwotCVdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLCBtbVZNX0NP TlRFWFQwX0NOVEwpLCB0bXApOworCVdSRUczMl9TT0MxNShNTUhVQiwgMCwgbW1WTV9DT05URVhU MF9DTlRMLCB0bXApOwogCiAJdG1wID0gUlJFRzMyKGFkZHIpOwogCiAJLyogRGlzYWJsZSBpZGVu dGl0eSBhcGVydHVyZS4qLwotCVdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLAotCQlt bVZNX0wyX0NPTlRFWFQxX0lERU5USVRZX0FQRVJUVVJFX0xPV19BRERSX0xPMzIpLCAwWEZGRkZG RkZGKTsKLQlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwKLQkJbW1WTV9MMl9DT05U RVhUMV9JREVOVElUWV9BUEVSVFVSRV9MT1dfQUREUl9ISTMyKSwgMHgwMDAwMDAwRik7CisJV1JF RzMyX1NPQzE1KE1NSFVCLCAwLAorCQkgICAgIG1tVk1fTDJfQ09OVEVYVDFfSURFTlRJVFlfQVBF UlRVUkVfTE9XX0FERFJfTE8zMiwgMFhGRkZGRkZGRik7CisJV1JFRzMyX1NPQzE1KE1NSFVCLCAw LAorCQkgICAgIG1tVk1fTDJfQ09OVEVYVDFfSURFTlRJVFlfQVBFUlRVUkVfTE9XX0FERFJfSEkz MiwgMHgwMDAwMDAwRik7CiAKLQlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwKLQkJ bW1WTV9MMl9DT05URVhUMV9JREVOVElUWV9BUEVSVFVSRV9ISUdIX0FERFJfTE8zMiksIDApOwot CVdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLAotCQltbVZNX0wyX0NPTlRFWFQxX0lE RU5USVRZX0FQRVJUVVJFX0hJR0hfQUREUl9ISTMyKSwgMCk7CisJV1JFRzMyX1NPQzE1KE1NSFVC LCAwLAorCQkgICAgIG1tVk1fTDJfQ09OVEVYVDFfSURFTlRJVFlfQVBFUlRVUkVfSElHSF9BRERS X0xPMzIsIDApOworCVdSRUczMl9TT0MxNShNTUhVQiwgMCwKKwkJICAgICBtbVZNX0wyX0NPTlRF WFQxX0lERU5USVRZX0FQRVJUVVJFX0hJR0hfQUREUl9ISTMyLCAwKTsKIAotCVdSRUczMihTT0Mx NV9SRUdfT0ZGU0VUKE1NSFVCLCAwLAotCQltbVZNX0wyX0NPTlRFWFRfSURFTlRJVFlfUEhZU0lD QUxfT0ZGU0VUX0xPMzIpLCAwKTsKLQlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwK LQkJbW1WTV9MMl9DT05URVhUX0lERU5USVRZX1BIWVNJQ0FMX09GRlNFVF9ISTMyKSwgMCk7CisJ V1JFRzMyX1NPQzE1KE1NSFVCLCAwLAorCQkgICAgIG1tVk1fTDJfQ09OVEVYVF9JREVOVElUWV9Q SFlTSUNBTF9PRkZTRVRfTE8zMiwgMCk7CisJV1JFRzMyX1NPQzE1KE1NSFVCLCAwLAorCQkgICAg IG1tVk1fTDJfQ09OVEVYVF9JREVOVElUWV9QSFlTSUNBTF9PRkZTRVRfSEkzMiwgMCk7CiAKIAlm b3IgKGkgPSAwOyBpIDw9IDE0OyBpKyspIHsKLQkJdG1wID0gUlJFRzMyKFNPQzE1X1JFR19PRkZT RVQoTU1IVUIsIDAsIG1tVk1fQ09OVEVYVDFfQ05UTCkKLQkJCQkrIGkpOworCQl0bXAgPSBSUkVH MzJfU09DMTVfT0ZGU0VUKE1NSFVCLCAwLCBtbVZNX0NPTlRFWFQxX0NOVEwsIGkpOwogCQl0bXAg PSBSRUdfU0VUX0ZJRUxEKHRtcCwgVk1fQ09OVEVYVDFfQ05UTCwKIAkJCQlFTkFCTEVfQ09OVEVY VCwgMSk7CiAJCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBWTV9DT05URVhUMV9DTlRMLApAQCAt MjQzLDEzICsyNDIsMTMgQEAgaW50IG1taHViX3YxXzBfZ2FydF9lbmFibGUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCiAJCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBWTV9DT05URVhUMV9D TlRMLAogCQkJCVBBR0VfVEFCTEVfQkxPQ0tfU0laRSwKIAkJCQlhZGV2LT52bV9tYW5hZ2VyLmJs b2NrX3NpemUgLSA5KTsKLQkJV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoTU1IVUIsIDAsIG1tVk1f Q09OVEVYVDFfQ05UTCkgKyBpLCB0bXApOwotCQlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhV QiwgMCwgbW1WTV9DT05URVhUMV9QQUdFX1RBQkxFX1NUQVJUX0FERFJfTE8zMikgKyBpKjIsIDAp OwotCQlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwgbW1WTV9DT05URVhUMV9QQUdF X1RBQkxFX1NUQVJUX0FERFJfSEkzMikgKyBpKjIsIDApOwotCQlXUkVHMzIoU09DMTVfUkVHX09G RlNFVChNTUhVQiwgMCwgbW1WTV9DT05URVhUMV9QQUdFX1RBQkxFX0VORF9BRERSX0xPMzIpICsg aSoyLAotCQkJbG93ZXJfMzJfYml0cyhhZGV2LT52bV9tYW5hZ2VyLm1heF9wZm4gLSAxKSk7Ci0J CVdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLCBtbVZNX0NPTlRFWFQxX1BBR0VfVEFC TEVfRU5EX0FERFJfSEkzMikgKyBpKjIsCi0JCQl1cHBlcl8zMl9iaXRzKGFkZXYtPnZtX21hbmFn ZXIubWF4X3BmbiAtIDEpKTsKKwkJV1JFRzMyX1NPQzE1X09GRlNFVChNTUhVQiwgMCwgbW1WTV9D T05URVhUMV9DTlRMLCBpLCB0bXApOworCQlXUkVHMzJfU09DMTVfT0ZGU0VUKE1NSFVCLCAwLCBt bVZNX0NPTlRFWFQxX1BBR0VfVEFCTEVfU1RBUlRfQUREUl9MTzMyLCBpKjIsIDApOworCQlXUkVH MzJfU09DMTVfT0ZGU0VUKE1NSFVCLCAwLCBtbVZNX0NPTlRFWFQxX1BBR0VfVEFCTEVfU1RBUlRf QUREUl9ISTMyLCBpKjIsIDApOworCQlXUkVHMzJfU09DMTVfT0ZGU0VUKE1NSFVCLCAwLCBtbVZN X0NPTlRFWFQxX1BBR0VfVEFCTEVfRU5EX0FERFJfTE8zMiwgaSoyLAorCQkJCSAgICBsb3dlcl8z Ml9iaXRzKGFkZXYtPnZtX21hbmFnZXIubWF4X3BmbiAtIDEpKTsKKwkJV1JFRzMyX1NPQzE1X09G RlNFVChNTUhVQiwgMCwgbW1WTV9DT05URVhUMV9QQUdFX1RBQkxFX0VORF9BRERSX0hJMzIsIGkq MiwKKwkJCQkgICAgdXBwZXJfMzJfYml0cyhhZGV2LT52bV9tYW5hZ2VyLm1heF9wZm4gLSAxKSk7 CiAJfQogCiAJcmV0dXJuIDA7CkBAIC0yNjIsMjIgKzI2MSwyMiBAQCB2b2lkIG1taHViX3YxXzBf Z2FydF9kaXNhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCiAJLyogRGlzYWJsZSBh bGwgdGFibGVzICovCiAJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCi0JCVdSRUczMihTT0MxNV9S RUdfT0ZGU0VUKE1NSFVCLCAwLCBtbVZNX0NPTlRFWFQwX0NOVEwpICsgaSwgMCk7CisJCVdSRUcz Ml9TT0MxNV9PRkZTRVQoTU1IVUIsIDAsIG1tVk1fQ09OVEVYVDBfQ05UTCwgaSwgMCk7CiAKIAkv KiBTZXR1cCBUTEIgY29udHJvbCAqLwotCXRtcCA9IFJSRUczMihTT0MxNV9SRUdfT0ZGU0VUKE1N SFVCLCAwLCBtbU1DX1ZNX01YX0wxX1RMQl9DTlRMKSk7CisJdG1wID0gUlJFRzMyX1NPQzE1KE1N SFVCLCAwLCBtbU1DX1ZNX01YX0wxX1RMQl9DTlRMKTsKIAl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRt cCwgTUNfVk1fTVhfTDFfVExCX0NOVEwsIEVOQUJMRV9MMV9UTEIsIDApOwogCXRtcCA9IFJFR19T RVRfRklFTEQodG1wLAogCQkJCU1DX1ZNX01YX0wxX1RMQl9DTlRMLAogCQkJCUVOQUJMRV9BRFZB TkNFRF9EUklWRVJfTU9ERUwsCiAJCQkJMCk7Ci0JV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoTU1I VUIsIDAsIG1tTUNfVk1fTVhfTDFfVExCX0NOVEwpLCB0bXApOworCVdSRUczMl9TT0MxNShNTUhV QiwgMCwgbW1NQ19WTV9NWF9MMV9UTEJfQ05UTCwgdG1wKTsKIAogCS8qIFNldHVwIEwyIGNhY2hl ICovCi0JdG1wID0gUlJFRzMyKFNPQzE1X1JFR19PRkZTRVQoTU1IVUIsIDAsIG1tVk1fTDJfQ05U TCkpOworCXRtcCA9IFJSRUczMl9TT0MxNShNTUhVQiwgMCwgbW1WTV9MMl9DTlRMKTsKIAl0bXAg PSBSRUdfU0VUX0ZJRUxEKHRtcCwgVk1fTDJfQ05UTCwgRU5BQkxFX0wyX0NBQ0hFLCAwKTsKLQlX UkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwgbW1WTV9MMl9DTlRMKSwgdG1wKTsKLQlX UkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwgbW1WTV9MMl9DTlRMMyksIDApOworCVdS RUczMl9TT0MxNShNTUhVQiwgMCwgbW1WTV9MMl9DTlRMLCB0bXApOworCVdSRUczMl9TT0MxNShN TUhVQiwgMCwgbW1WTV9MMl9DTlRMMywgMCk7CiB9CiAKIC8qKgpAQCAtMjg5LDcgKzI4OCw3IEBA IHZvaWQgbW1odWJfdjFfMF9nYXJ0X2Rpc2FibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp CiB2b2lkIG1taHViX3YxXzBfc2V0X2ZhdWx0X2VuYWJsZV9kZWZhdWx0KHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LCBib29sIHZhbHVlKQogewogCXUzMiB0bXA7Ci0JdG1wID0gUlJFRzMyKFNP QzE1X1JFR19PRkZTRVQoTU1IVUIsIDAsIG1tVk1fTDJfUFJPVEVDVElPTl9GQVVMVF9DTlRMKSk7 CisJdG1wID0gUlJFRzMyX1NPQzE1KE1NSFVCLCAwLCBtbVZNX0wyX1BST1RFQ1RJT05fRkFVTFRf Q05UTCk7CiAJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIFZNX0wyX1BST1RFQ1RJT05fRkFVTFRf Q05UTCwKIAkJCVJBTkdFX1BST1RFQ1RJT05fRkFVTFRfRU5BQkxFX0RFRkFVTFQsIHZhbHVlKTsK IAl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgVk1fTDJfUFJPVEVDVElPTl9GQVVMVF9DTlRMLApA QCAtMzE0LDcgKzMxMyw3IEBAIHZvaWQgbW1odWJfdjFfMF9zZXRfZmF1bHRfZW5hYmxlX2RlZmF1 bHQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgdmFsdWUpCiAJCQlXUklURV9QUk9U RUNUSU9OX0ZBVUxUX0VOQUJMRV9ERUZBVUxULCB2YWx1ZSk7CiAJdG1wID0gUkVHX1NFVF9GSUVM RCh0bXAsIFZNX0wyX1BST1RFQ1RJT05fRkFVTFRfQ05UTCwKIAkJCUVYRUNVVEVfUFJPVEVDVElP Tl9GQVVMVF9FTkFCTEVfREVGQVVMVCwgdmFsdWUpOwotCVdSRUczMihTT0MxNV9SRUdfT0ZGU0VU KE1NSFVCLCAwLCBtbVZNX0wyX1BST1RFQ1RJT05fRkFVTFRfQ05UTCksIHRtcCk7CisJV1JFRzMy X1NPQzE1KE1NSFVCLCAwLCBtbVZNX0wyX1BST1RFQ1RJT05fRkFVTFRfQ05UTCwgdG1wKTsKIH0K IAogc3RhdGljIGludCBtbWh1Yl92MV8wX2Vhcmx5X2luaXQodm9pZCAqaGFuZGxlKQpAQCAtMzYz LDEyICszNjIsMTIgQEAgc3RhdGljIGludCBtbWh1Yl92MV8wX2h3X2luaXQodm9pZCAqaGFuZGxl KQogCXVuc2lnbmVkIGk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgMTg7ICsraSkgewotCQlXUkVHMzIo U09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwKLQkJCQkJbW1WTV9JTlZBTElEQVRFX0VORzBfQURE Ul9SQU5HRV9MTzMyKSArCi0JCSAgICAgICAyICogaSwgMHhmZmZmZmZmZik7Ci0JCVdSRUczMihT T0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLAotCQkJCQltbVZNX0lOVkFMSURBVEVfRU5HMF9BRERS X1JBTkdFX0hJMzIpICsKLQkJICAgICAgIDIgKiBpLCAweDFmKTsKKwkJV1JFRzMyX1NPQzE1X09G RlNFVChNTUhVQiwgMCwKKwkJCQkgICAgbW1WTV9JTlZBTElEQVRFX0VORzBfQUREUl9SQU5HRV9M TzMyLAorCQkJCSAgICAyICogaSwgMHhmZmZmZmZmZik7CisJCVdSRUczMl9TT0MxNV9PRkZTRVQo TU1IVUIsIDAsCisJCQkJICAgIG1tVk1fSU5WQUxJREFURV9FTkcwX0FERFJfUkFOR0VfSEkzMiwK KwkJCQkgICAgMiAqIGksIDB4MWYpOwogCX0KIAogCXJldHVybiAwOwpAQCAtNDA5LDkgKzQwOCw5 IEBAIHN0YXRpYyB2b2lkIG1taHViX3YxXzBfdXBkYXRlX21lZGl1bV9ncmFpbl9jbG9ja19nYXRp bmcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkCiB7CiAJdWludDMyX3QgZGVmLCBkYXRhLCBkZWYx LCBkYXRhMSwgZGVmMiwgZGF0YTI7CiAKLQlkZWYgID0gZGF0YSAgPSBSUkVHMzIoU09DMTVfUkVH X09GRlNFVChNTUhVQiwgMCwgbW1BVENfTDJfTUlTQ19DRykpOwotCWRlZjEgPSBkYXRhMSA9IFJS RUczMihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLCBtbURBR0IwX0NOVExfTUlTQzIpKTsKLQlk ZWYyID0gZGF0YTIgPSBSUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwgbW1EQUdCMV9D TlRMX01JU0MyKSk7CisJZGVmICA9IGRhdGEgID0gUlJFRzMyX1NPQzE1KE1NSFVCLCAwLCBtbUFU Q19MMl9NSVNDX0NHKTsKKwlkZWYxID0gZGF0YTEgPSBSUkVHMzJfU09DMTUoTU1IVUIsIDAsIG1t REFHQjBfQ05UTF9NSVNDMik7CisJZGVmMiA9IGRhdGEyID0gUlJFRzMyX1NPQzE1KE1NSFVCLCAw LCBtbURBR0IxX0NOVExfTUlTQzIpOwogCiAJaWYgKGVuYWJsZSAmJiAoYWRldi0+Y2dfZmxhZ3Mg JiBBTURfQ0dfU1VQUE9SVF9NQ19NR0NHKSkgewogCQlkYXRhIHw9IEFUQ19MMl9NSVNDX0NHX19F TkFCTEVfTUFTSzsKQEAgLTQ0OCwxMyArNDQ3LDEzIEBAIHN0YXRpYyB2b2lkIG1taHViX3YxXzBf dXBkYXRlX21lZGl1bV9ncmFpbl9jbG9ja19nYXRpbmcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk CiAJfQogCiAJaWYgKGRlZiAhPSBkYXRhKQotCQlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhV QiwgMCwgbW1BVENfTDJfTUlTQ19DRyksIGRhdGEpOworCQlXUkVHMzJfU09DMTUoTU1IVUIsIDAs IG1tQVRDX0wyX01JU0NfQ0csIGRhdGEpOwogCiAJaWYgKGRlZjEgIT0gZGF0YTEpCi0JCVdSRUcz MihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLCBtbURBR0IwX0NOVExfTUlTQzIpLCBkYXRhMSk7 CisJCVdSRUczMl9TT0MxNShNTUhVQiwgMCwgbW1EQUdCMF9DTlRMX01JU0MyLCBkYXRhMSk7CiAK IAlpZiAoZGVmMiAhPSBkYXRhMikKLQkJV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoTU1IVUIsIDAs IG1tREFHQjFfQ05UTF9NSVNDMiksIGRhdGEyKTsKKwkJV1JFRzMyX1NPQzE1KE1NSFVCLCAwLCBt bURBR0IxX0NOVExfTUlTQzIsIGRhdGEyKTsKIH0KIAogc3RhdGljIHZvaWQgYXRodWJfdXBkYXRl X21lZGl1bV9ncmFpbl9jbG9ja19nYXRpbmcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBA IC00NzgsNyArNDc3LDcgQEAgc3RhdGljIHZvaWQgbW1odWJfdjFfMF91cGRhdGVfbWVkaXVtX2dy YWluX2xpZ2h0X3NsZWVwKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGUKIHsKIAl1aW50MzJfdCBk ZWYsIGRhdGE7CiAKLQlkZWYgPSBkYXRhID0gUlJFRzMyKFNPQzE1X1JFR19PRkZTRVQoTU1IVUIs IDAsIG1tQVRDX0wyX01JU0NfQ0cpKTsKKwlkZWYgPSBkYXRhID0gUlJFRzMyX1NPQzE1KE1NSFVC LCAwLCBtbUFUQ19MMl9NSVNDX0NHKTsKIAogCWlmIChlbmFibGUgJiYgKGFkZXYtPmNnX2ZsYWdz ICYgQU1EX0NHX1NVUFBPUlRfTUNfTFMpKQogCQlkYXRhIHw9IEFUQ19MMl9NSVNDX0NHX19NRU1f TFNfRU5BQkxFX01BU0s7CkBAIC00ODYsNyArNDg1LDcgQEAgc3RhdGljIHZvaWQgbW1odWJfdjFf MF91cGRhdGVfbWVkaXVtX2dyYWluX2xpZ2h0X3NsZWVwKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGUKIAkJZGF0YSAmPSB+QVRDX0wyX01JU0NfQ0dfX01FTV9MU19FTkFCTEVfTUFTSzsKIAogCWlm IChkZWYgIT0gZGF0YSkKLQkJV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoTU1IVUIsIDAsIG1tQVRD X0wyX01JU0NfQ0cpLCBkYXRhKTsKKwkJV1JFRzMyX1NPQzE1KE1NSFVCLCAwLCBtbUFUQ19MMl9N SVNDX0NHLCBkYXRhKTsKIH0KIAogc3RhdGljIHZvaWQgYXRodWJfdXBkYXRlX21lZGl1bV9ncmFp bl9saWdodF9zbGVlcChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTU0Myw3ICs1NDIs NyBAQCBzdGF0aWMgdm9pZCBtbWh1Yl92MV8wX2dldF9jbG9ja2dhdGluZ19zdGF0ZSh2b2lkICpo YW5kbGUsIHUzMiAqZmxhZ3MpCiAJCSpmbGFncyB8PSBBTURfQ0dfU1VQUE9SVF9NQ19NR0NHOwog CiAJLyogQU1EX0NHX1NVUFBPUlRfTUNfTFMgKi8KLQlkYXRhID0gUlJFRzMyKFNPQzE1X1JFR19P RkZTRVQoTU1IVUIsIDAsIG1tQVRDX0wyX01JU0NfQ0cpKTsKKwlkYXRhID0gUlJFRzMyX1NPQzE1 KE1NSFVCLCAwLCBtbUFUQ19MMl9NSVNDX0NHKTsKIAlpZiAoZGF0YSAmIEFUQ19MMl9NSVNDX0NH X19NRU1fTFNfRU5BQkxFX01BU0spCiAJCSpmbGFncyB8PSBBTURfQ0dfU1VQUE9SVF9NQ19MUzsK IH0KLS0gCjIuMTIuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==