From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 8/8] drm/msm/adreno: Add a5xx specific registers for the GPU state Date: Thu, 8 Feb 2018 10:31:57 -0700 Message-ID: <1518111117-7408-9-git-send-email-jcrouse@codeaurora.org> References: <1518111117-7408-1-git-send-email-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1518111117-7408-1-git-send-email-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org SExTUSwgU1AgYW5kIFRQIHJlZ2lzdGVycyBhcmUgb25seSBhY2Nlc3NpYmxlIGZyb20gYSBzcGVj aWFsCmFwZXJ0dXJlIGFuZCB0byBtYWtlIG1hdHRlcnMgd29yc2UgdGhlIGFwZXJ0dXJlIGlzIGJs b2NrZWQgZnJvbQp0aGUgQ1BVIG9uIHRhcmdldHMgdGhhdCBjYW4gc3VwcG9ydCBzZWN1cmUgcmVu ZGVyaW5nLiBMdWNraWx5IHRoZQpHUFUgaGFyZHdhcmUgaGFzIGl0cyBvd24gcHVycG9zZSBidWls dCByZWdpc3RlciBkdW1wZXIgdGhhdCBjYW4KYWNjZXNzIHRoZSByZWdpc3RlcnMgZnJvbSB0aGUg YXBlcnR1cmUuICBBZGQgYTV4eCBzcGVjaWZpYyBjb2RlCnRvIHByb2dyYW0gdGhlIGNyYXNoZHVt cGVyIGFuZCByZXRyaWV2ZSB0aGUgd2F5d2FyZCByZWdpc3RlcnMKYW5kIGR1bXAgdGhlbSBmb3Ig dGhlIGNyYXNoIHN0YXRlLgoKQWxzbywgcmVtb3ZlIGEgYmxvY2sgb2YgcmVnaXN0ZXJzIHRoZSBy ZWd1bGFyIENQVSBhY2Nlc3NpYmxlCmxpc3QgdGhhdCBhcmVuJ3QgdXNlZnVsIGZvciBkZWJ1ZyB3 aGljaCBoZWxwcyByZWR1Y2UgdGhlIHNpemUKb2YgdGhlIGNyYXNoIHN0YXRlIGZpbGUgYnkgYSBn b29kbHkgYW1vdW50LgoKU2lnbmVkLW9mZi1ieTogSm9yZGFuIENyb3VzZSA8amNyb3VzZUBjb2Rl YXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hM3h4X2dwdS5jICAg fCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E0eHhfZ3B1LmMgICB8ICAgOCAr LQogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9ncHUuYyAgIHwgMjM1ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJl bm9fZ3B1LmMgfCAgMjMgKystLQogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dw dS5oIHwgICA0ICstCiA1IGZpbGVzIGNoYW5nZWQsIDI0NyBpbnNlcnRpb25zKCspLCAzMSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hM3h4X2dw dS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTN4eF9ncHUuYwppbmRleCA0YjkyODRh Li42ZGQyYjEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hM3h4X2dw dS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2EzeHhfZ3B1LmMKQEAgLTQyMCwx MCArNDIwLDEyIEBAIHN0YXRpYyB2b2lkIGEzeHhfZHVtcChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQog CiBzdGF0aWMgc3RydWN0IG1zbV9ncHVfc3RhdGUgKmEzeHhfZ3B1X3N0YXRlX2dldChzdHJ1Y3Qg bXNtX2dwdSAqZ3B1KQogewotCXN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSA9IGFkcmVub19n cHVfc3RhdGVfZ2V0KGdwdSk7CisJc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlID0ga3phbGxv YyhzaXplb2YoKnN0YXRlKSwgR0ZQX0tFUk5FTCk7CiAKLQlpZiAoSVNfRVJSKHN0YXRlKSkKLQkJ cmV0dXJuIHN0YXRlOworCWlmICghc3RhdGUpCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwor CisJYWRyZW5vX2dwdV9zdGF0ZV9nZXQoZ3B1LCBzdGF0ZSk7CiAKIAlzdGF0ZS0+cmJibV9zdGF0 dXMgPSBncHVfcmVhZChncHUsIFJFR19BM1hYX1JCQk1fU1RBVFVTKTsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTR4eF9ncHUuYyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vYWRyZW5vL2E0eHhfZ3B1LmMKaW5kZXggYjhkY2JiMS4uMDkzY2EzMCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTR4eF9ncHUuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL2FkcmVuby9hNHh4X2dwdS5jCkBAIC00NTYsMTAgKzQ1NiwxMiBAQCBzdGF0aWMgaXJx cmV0dXJuX3QgYTR4eF9pcnEoc3RydWN0IG1zbV9ncHUgKmdwdSkKIAogc3RhdGljIHN0cnVjdCBt c21fZ3B1X3N0YXRlICphNHh4X2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1zbV9ncHUgKmdwdSkKIHsK LQlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUgPSBhZHJlbm9fZ3B1X3N0YXRlX2dldChncHUp OworCXN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCpzdGF0ZSks IEdGUF9LRVJORUwpOwogCi0JaWYgKElTX0VSUihzdGF0ZSkpCi0JCXJldHVybiBzdGF0ZTsKKwlp ZiAoIXN0YXRlKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCWFkcmVub19ncHVfc3Rh dGVfZ2V0KGdwdSwgc3RhdGUpOwogCiAJc3RhdGUtPnJiYm1fc3RhdHVzID0gZ3B1X3JlYWQoZ3B1 LCBSRUdfQTRYWF9SQkJNX1NUQVRVUyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vYWRyZW5vL2E1eHhfZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dw dS5jCmluZGV4IGIwOTEwYmIuLjc2NDQwN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vYWRyZW5vL2E1eHhfZ3B1LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4 eF9ncHUuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgPGxpbnV4L3NvYy9xY29tL21kdF9s b2FkZXIuaD4KICNpbmNsdWRlIDxsaW51eC9wbV9vcHAuaD4KICNpbmNsdWRlIDxsaW51eC9udm1l bS1jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgogI2luY2x1ZGUgIm1zbV9n ZW0uaCIKICNpbmNsdWRlICJtc21fbW11LmgiCiAjaW5jbHVkZSAiYTV4eF9ncHUuaCIKQEAgLTEx MjMsOCArMTEyNCw5IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBhNXh4X2lycShzdHJ1Y3QgbXNtX2dw dSAqZ3B1KQogCTB4RTgwMCwgMHhFODA2LCAweEU4MTAsIDB4RTg5QSwgMHhFOEEwLCAweEU4QTQs IDB4RThBQSwgMHhFOEVCLAogCTB4RTkwMCwgMHhFOTA1LCAweEVCODAsIDB4RUI4RiwgMHhFQkIw LCAweEVCQjAsIDB4RUMwMCwgMHhFQzA1LAogCTB4RUMwOCwgMHhFQ0U5LCAweEVDRjAsIDB4RUNG MCwgMHhFQTgwLCAweEVBODAsIDB4RUE4MiwgMHhFQUEzLAotCTB4RUFBNSwgMHhFQUMyLCAweEE4 MDAsIDB4QThGRiwgMHhBQzYwLCAweEFDNjAsIDB4QjAwMCwgMHhCOTdGLAotCTB4QjlBMCwgMHhC OUJGLCB+MAorCTB4RUFBNSwgMHhFQUMyLCAweEE4MDAsIDB4QTgwMCwgMHhBODIwLCAweEE4Mjgs IDB4QTg0MCwgMHhBODdELAorCTBYQTg4MCwgMHhBODhELCAweEE4OTAsIDB4QThBMywgMHhBOEQw LCAweEE4RDgsIDB4QThFMCwgMHhBOEY1LAorCTB4QUM2MCwgMHhBQzYwLCB+MCwKIH07CiAKIHN0 YXRpYyB2b2lkIGE1eHhfZHVtcChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQpAQCAtMTE5NSwyNCArMTE5 NywyMzEgQEAgc3RhdGljIGludCBhNXh4X2dldF90aW1lc3RhbXAoc3RydWN0IG1zbV9ncHUgKmdw dSwgdWludDY0X3QgKnZhbHVlKQogCXJldHVybiAwOwogfQogCitzdHJ1Y3QgYTV4eF9jcmFzaGR1 bXBlciB7CisJdm9pZCAqcHRyOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqYm87CisJdTY0IGlv dmE7Cit9OworCitzdHJ1Y3QgYTV4eF9ncHVfc3RhdGUgeworCXN0cnVjdCBtc21fZ3B1X3N0YXRl IGJhc2U7CisJdTMyICpobHNxcmVnczsKK307CisKKyNkZWZpbmUgZ3B1X3BvbGxfdGltZW91dChn cHUsIGFkZHIsIHZhbCwgY29uZCwgaW50ZXJ2YWwsIHRpbWVvdXQpIFwKKwlyZWFkbF9wb2xsX3Rp bWVvdXQoKGdwdSktPm1taW8gKyAoKGFkZHIpIDw8IDIpLCB2YWwsIGNvbmQsIFwKKwkJaW50ZXJ2 YWwsIHRpbWVvdXQpCisKK3N0YXRpYyBpbnQgYTV4eF9jcmFzaGR1bXBlcl9pbml0KHN0cnVjdCBt c21fZ3B1ICpncHUsCisJCXN0cnVjdCBhNXh4X2NyYXNoZHVtcGVyICpkdW1wZXIpCit7CisJZHVt cGVyLT5wdHIgPSBtc21fZ2VtX2tlcm5lbF9uZXdfbG9ja2VkKGdwdS0+ZGV2LAorCQlTWl8xTSwg TVNNX0JPX1VOQ0FDSEVELCBncHUtPmFzcGFjZSwKKwkJJmR1bXBlci0+Ym8sICZkdW1wZXItPmlv dmEpOworCisJaWYgKElTX0VSUihkdW1wZXItPnB0cikpCisJCXJldHVybiBQVFJfRVJSKGR1bXBl ci0+cHRyKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBhNXh4X2NyYXNoZHVtcGVy X2ZyZWUoc3RydWN0IG1zbV9ncHUgKmdwdSwKKwkJc3RydWN0IGE1eHhfY3Jhc2hkdW1wZXIgKmR1 bXBlcikKK3sKKwltc21fZ2VtX3B1dF9pb3ZhKGR1bXBlci0+Ym8sIGdwdS0+YXNwYWNlKTsKKwlt c21fZ2VtX3B1dF92YWRkcihkdW1wZXItPmJvKTsKKworCWRybV9nZW1fb2JqZWN0X3VucmVmZXJl bmNlKGR1bXBlci0+Ym8pOworfQorCitzdGF0aWMgaW50IGE1eHhfY3Jhc2hkdW1wZXJfcnVuKHN0 cnVjdCBtc21fZ3B1ICpncHUsCisJCXN0cnVjdCBhNXh4X2NyYXNoZHVtcGVyICpkdW1wZXIpCit7 CisJdTMyIHZhbDsKKworCWlmIChJU19FUlJfT1JfTlVMTChkdW1wZXItPnB0cikpCisJCXJldHVy biAtRUlOVkFMOworCisJZ3B1X3dyaXRlNjQoZ3B1LCBSRUdfQTVYWF9DUF9DUkFTSF9TQ1JJUFRf QkFTRV9MTywKKwkJUkVHX0E1WFhfQ1BfQ1JBU0hfU0NSSVBUX0JBU0VfSEksIGR1bXBlci0+aW92 YSk7CisKKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTVYWF9DUF9DUkFTSF9EVU1QX0NOVEwsIDEpOwor CisJcmV0dXJuIGdwdV9wb2xsX3RpbWVvdXQoZ3B1LCBSRUdfQTVYWF9DUF9DUkFTSF9EVU1QX0NO VEwsIHZhbCwKKwkJdmFsICYgMHgwNCwgMTAwLCAxMDAwMCk7Cit9CisKKy8qCisgKiBUaGVzZSBh cmUgYSBsaXN0IG9mIHRoZSByZWdpc3RlcnMgdGhhdCBuZWVkIHRvIGJlIHJlYWQgdGhyb3VnaCB0 aGUgSExTUQorICogYXBlcnR1cmUgdGhyb3VnaCB0aGUgY3Jhc2hkdW1wZXIuICBUaGVzZSBhcmUg bm90IG5vbWluYWxseSBhY2Nlc3NpYmxlIGZyb20KKyAqIHRoZSBDUFUgb24gYSBzZWN1cmUgcGxh dGZvcm0uCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworCXUzMiB0eXBlOworCXUzMiByZWdv ZmZzZXQ7CisJdTMyIGNvdW50OworfSBhNXh4X2hsc3FfYXBlcnR1cmVfcmVnc1tdID0geworCXsg MHgzNSwgMHhlMDAsIDB4MzIgfSwgICAvKiBIU0xRIG5vbi1jb250ZXh0ICovCisJeyAweDMxLCAw eDIwODAsIDB4MSB9LCAgIC8qIEhMU1EgMkQgY29udGV4dCAwICovCisJeyAweDMzLCAweDI0ODAs IDB4MSB9LCAgIC8qIEhMU1EgMkQgY29udGV4dCAxICovCisJeyAweDMyLCAweGU3ODAsIDB4NjIg fSwgIC8qIEhMU1EgM0QgY29udGV4dCAwICovCisJeyAweDM0LCAweGVmODAsIDB4NjIgfSwgIC8q IEhMU1EgM0QgY29udGV4dCAxICovCisJeyAweDNmLCAweDBlYzAsIDB4NDAgfSwgIC8qIFNQIG5v bi1jb250ZXh0ICovCisJeyAweDNkLCAweDIwNDAsIDB4MSB9LCAgIC8qIFNQIDJEIGNvbnRleHQg MCAqLworCXsgMHgzYiwgMHgyNDQwLCAweDEgfSwgICAvKiBTUCAyRCBjb250ZXh0IDEgKi8KKwl7 IDB4M2UsIDB4ZTU4MCwgMHgxNzAgfSwgLyogU1AgM0QgY29udGV4dCAwICovCisJeyAweDNjLCAw eGVkODAsIDB4MTcwIH0sIC8qIFNQIDNEIGNvbnRleHQgMSAqLworCXsgMHgzYSwgMHgwZjAwLCAw eDFjIH0sICAvKiBUUCBub24tY29udGV4dCAqLworCXsgMHgzOCwgMHgyMDAwLCAweGEgfSwgICAv KiBUUCAyRCBjb250ZXh0IDAgKi8KKwl7IDB4MzYsIDB4MjQwMCwgMHhhIH0sICAgLyogVFAgMkQg Y29udGV4dCAxICovCisJeyAweDM5LCAweGU3MDAsIDB4ODAgfSwgIC8qIFRQIDNEIGNvbnRleHQg MCAqLworCXsgMHgzNywgMHhlZjAwLCAweDgwIH0sICAvKiBUUCAzRCBjb250ZXh0IDEgKi8KK307 CisKK3N0YXRpYyB2b2lkIGE1eHhfZ3B1X3N0YXRlX2dldF9obHNxX3JlZ3Moc3RydWN0IG1zbV9n cHUgKmdwdSwKKwkJc3RydWN0IGE1eHhfZ3B1X3N0YXRlICphNXh4X3N0YXRlKQoreworCXN0cnVj dCBhNXh4X2NyYXNoZHVtcGVyIGR1bXBlciA9IHsgMCB9OworCXUzMiBvZmZzZXQsIGNvdW50ID0g MDsKKwl1NjQgKnB0cjsKKwlpbnQgaTsKKworCWlmIChhNXh4X2NyYXNoZHVtcGVyX2luaXQoZ3B1 LCAmZHVtcGVyKSkKKwkJcmV0dXJuOworCisJLyogVGhlIHNjcmlwdCB3aWxsIGJlIHdyaXR0ZW4g YXQgb2Zmc2V0IDAgKi8KKwlwdHIgPSBkdW1wZXIucHRyOworCisJLyogU3RhcnQgd3JpdGluZyB0 aGUgZGF0YSBhdCBvZmZzZXQgMjU2ayAqLworCW9mZnNldCA9IGR1bXBlci5pb3ZhICsgKDI1NiAq IFNaXzFLKTsKKworCS8qIENvdW50IGhvdyBtYW55IGFkZGl0aW9uYWwgcmVnaXN0ZXJzIHRvIGdl dCBmcm9tIHRoZSBITFNRIGFwZXJ0dXJlICovCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo YTV4eF9obHNxX2FwZXJ0dXJlX3JlZ3MpOyBpKyspCisJCWNvdW50ICs9IGE1eHhfaGxzcV9hcGVy dHVyZV9yZWdzW2ldLmNvdW50OworCisJYTV4eF9zdGF0ZS0+aGxzcXJlZ3MgPSBrY2FsbG9jKGNv dW50LCBzaXplb2YodTMyKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFhNXh4X3N0YXRlLT5obHNxcmVn cykKKwkJcmV0dXJuOworCisJLyogQnVpbGQgdGhlIGNyYXNoZHVtcCBzY3JpcHQgKi8KKwlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShhNXh4X2hsc3FfYXBlcnR1cmVfcmVncyk7IGkrKykgewor CQl1MzIgdHlwZSA9IGE1eHhfaGxzcV9hcGVydHVyZV9yZWdzW2ldLnR5cGU7CisJCXUzMiBjID0g YTV4eF9obHNxX2FwZXJ0dXJlX3JlZ3NbaV0uY291bnQ7CisKKwkJLyogV3JpdGUgdGhlIHJlZ2lz dGVyIHRvIHNlbGVjdCB0aGUgZGVzaXJlZCBiYW5rICovCisJCSpwdHIrKyA9IHR5cGUgPDwgODsK KwkJKnB0cisrID0gKCgodTY0KSBSRUdfQTVYWF9ITFNRX0RCR19SRUFEX1NFTCkgPDwgNDQpIHwK KwkJCSgxIDw8IDIxKSB8IDE7CisKKwkJKnB0cisrID0gb2Zmc2V0OworCQkqcHRyKysgPSAoKCh1 NjQpIFJFR19BNVhYX0hMU1FfREJHX0FIQl9SRUFEX0FQRVJUVVJFKSA8PCA0NCkKKwkJCXwgYzsK KworCQlvZmZzZXQgKz0gYyAqIHNpemVvZih1MzIpOworCX0KKworCS8qIFdyaXRlIHR3byB6ZXJv cyB0byBjbG9zZSBvZmYgdGhlIHNjcmlwdCAqLworCSpwdHIrKyA9IDA7CisJKnB0cisrID0gMDsK KworCWlmIChhNXh4X2NyYXNoZHVtcGVyX3J1bihncHUsICZkdW1wZXIpKSB7CisJCWtmcmVlKGE1 eHhfc3RhdGUtPmhsc3FyZWdzKTsKKwkJYTV4eF9jcmFzaGR1bXBlcl9mcmVlKGdwdSwgJmR1bXBl cik7CisJCXJldHVybjsKKwl9CisKKwkvKiBDb3B5IHRoZSBkYXRhIGZyb20gdGhlIGNyYXNoZHVt cGVyIHRvIHRoZSBzdGF0ZSAqLworCW1lbWNweShhNXh4X3N0YXRlLT5obHNxcmVncywgZHVtcGVy LnB0ciArICgyNTYgKiBTWl8xSyksCisJCWNvdW50ICogc2l6ZW9mKHUzMikpOworCisJYTV4eF9j cmFzaGR1bXBlcl9mcmVlKGdwdSwgJmR1bXBlcik7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgbXNtX2dw dV9zdGF0ZSAqYTV4eF9ncHVfc3RhdGVfZ2V0KHN0cnVjdCBtc21fZ3B1ICpncHUpCiB7Ci0Jc3Ry dWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlOworCXN0cnVjdCBhNXh4X2dwdV9zdGF0ZSAqYTV4eF9z dGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCphNXh4X3N0YXRlKSwKKwkJCUdGUF9LRVJORUwpOwogCi0J LyoKLQkgKiBUZW1wb3JhcmlseSBkaXNhYmxlIGhhcmR3YXJlIGNsb2NrIGdhdGluZyBiZWZvcmUg Z29pbmcgaW50bwotCSAqIGFkcmVub19zaG93IHRvIGF2b2lkIGlzc3VlcyB3aGlsZSByZWFkaW5n IHRoZSByZWdpc3RlcnMKLQkgKi8KKwlpZiAoIWE1eHhfc3RhdGUpCisJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOworCisJLyogVGVtcG9yYXJpbHkgZGlzYWJsZSBoYXJkd2FyZSBjbG9jayBnYXRp bmcgYmVmb3JlIHJlYWRpbmcgdGhlIGh3ICovCiAJYTV4eF9zZXRfaHdjZyhncHUsIGZhbHNlKTsK IAotCXN0YXRlID0gYWRyZW5vX2dwdV9zdGF0ZV9nZXQoZ3B1KTsKKwkvKiBGaXJzdCBnZXQgdGhl IGdlbmVyaWMgc3RhdGUgZnJvbSB0aGUgYWRyZW5vIGNvcmUgKi8KKwlhZHJlbm9fZ3B1X3N0YXRl X2dldChncHUsICYoYTV4eF9zdGF0ZS0+YmFzZSkpOwogCi0JaWYgKCFJU19FUlIoc3RhdGUpKQot CQlzdGF0ZS0+cmJibV9zdGF0dXMgPSBncHVfcmVhZChncHUsIFJFR19BNVhYX1JCQk1fU1RBVFVT KTsKKwlhNXh4X3N0YXRlLT5iYXNlLnJiYm1fc3RhdHVzID0gZ3B1X3JlYWQoZ3B1LCBSRUdfQTVY WF9SQkJNX1NUQVRVUyk7CisKKwkvKiBHZXQgdGhlIEhMU1EgcmVncyB3aXRoIHRoZSBoZWxwIG9m IHRoZSBjcmFzaGR1bXBlciAqLworCWE1eHhfZ3B1X3N0YXRlX2dldF9obHNxX3JlZ3MoZ3B1LCBh NXh4X3N0YXRlKTsKIAogCWE1eHhfc2V0X2h3Y2coZ3B1LCB0cnVlKTsKIAotCXJldHVybiBzdGF0 ZTsKKwlyZXR1cm4gJmE1eHhfc3RhdGUtPmJhc2U7Cit9CisKK3N0YXRpYyB2b2lkIGE1eHhfZ3B1 X3N0YXRlX2Rlc3Ryb3koc3RydWN0IGtyZWYgKmtyZWYpCit7CisJc3RydWN0IG1zbV9ncHVfc3Rh dGUgKnN0YXRlID0gY29udGFpbmVyX29mKGtyZWYsCisJCXN0cnVjdCBtc21fZ3B1X3N0YXRlLCBy ZWYpOworCXN0cnVjdCBhNXh4X2dwdV9zdGF0ZSAqYTV4eF9zdGF0ZSA9IGNvbnRhaW5lcl9vZihz dGF0ZSwKKwkJc3RydWN0IGE1eHhfZ3B1X3N0YXRlLCBiYXNlKTsKKworCWtmcmVlKGE1eHhfc3Rh dGUtPmhsc3FyZWdzKTsKKworCWFkcmVub19ncHVfc3RhdGVfZGVzdHJveShzdGF0ZSk7CisJa2Zy ZWUoYTV4eF9zdGF0ZSk7Cit9CisKK2ludCBhNXh4X2dwdV9zdGF0ZV9wdXQoc3RydWN0IG1zbV9n cHVfc3RhdGUgKnN0YXRlKQoreworCWlmIChJU19FUlJfT1JfTlVMTChzdGF0ZSkpCisJCXJldHVy biAxOworCisJcmV0dXJuIGtyZWZfcHV0KCZzdGF0ZS0+cmVmLCBhNXh4X2dwdV9zdGF0ZV9kZXN0 cm95KTsKK30KKworCit2b2lkIGE1eHhfc2hvdyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3Qg bXNtX2dwdV9zdGF0ZSAqc3RhdGUsCisJCXN0cnVjdCBkcm1fcHJpbnRlciAqcCkKK3sKKwlpbnQg aSwgajsKKwl1MzIgcG9zID0gMDsKKwlzdHJ1Y3QgYTV4eF9ncHVfc3RhdGUgKmE1eHhfc3RhdGUg PSBjb250YWluZXJfb2Yoc3RhdGUsCisJCXN0cnVjdCBhNXh4X2dwdV9zdGF0ZSwgYmFzZSk7CisK KwlpZiAoSVNfRVJSX09SX05VTEwoc3RhdGUpKQorCQlyZXR1cm47CisKKwlhZHJlbm9fc2hvdyhn cHUsIHN0YXRlLCBwKTsKKworCS8qIER1bXAgdGhlIGFkZGl0aW9uYWwgYTV4eCBITFNRIHJlZ2lz dGVycyAqLworCWlmICghYTV4eF9zdGF0ZS0+aGxzcXJlZ3MpCisJCXJldHVybjsKKworCWRybV9w cmludGYocCwgInJlZ2lzdGVyczpcbiIpOworCWRybV9wcmludGYocCwgIiAgLSBbb2Zmc2V0LCB2 YWx1ZV1cbiIpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYTV4eF9obHNxX2FwZXJ0 dXJlX3JlZ3MpOyBpKyspIHsKKwkJdTMyIG8gPSBhNXh4X2hsc3FfYXBlcnR1cmVfcmVnc1tpXS5y ZWdvZmZzZXQ7CisJCXUzMiBjID0gYTV4eF9obHNxX2FwZXJ0dXJlX3JlZ3NbaV0uY291bnQ7CisK KwkJZm9yIChqID0gMDsgaiA8IGM7IGorKywgcG9zKyssIG8rKykgeworCQkJLyoKKwkJCSAqIFRv IGtlZXAgdGhlIGNyYXNoZHVtcCBzaW1wbGUgd2UgcHVsbCB0aGUgZW50aXJlIHJhbmdlCisJCQkg KiBmb3IgZWFjaCByZWdpc3RlciB0eXBlIGJ1dCBub3QgYWxsIG9mIHRoZSByZWdpc3RlcnMKKwkJ CSAqIGluIHRoZSByYW5nZSBhcmUgdmFsaWQuIEZvcnR1bmF0ZWx5IGludmFsaWQgcmVnaXN0ZXJz CisJCQkgKiBzdGljayBvdXQgbGlrZSBhIHNvcmUgdGh1bWIgd2l0aCBhIHZhbHVlIG9mCisJCQkg KiAweGRlYWRiZWVmCisJCQkgKi8KKwkJCWlmIChhNXh4X3N0YXRlLT5obHNxcmVnc1twb3NdID09 IDB4ZGVhZGJlZWYpCisJCQkJY29udGludWU7CisKKwkJCWRybV9wcmludGYocCwgIiAgLSBbMHgl MDR4LCAweCUwOHhdXG4iLAorCQkJCW8gPDwgMiwgYTV4eF9zdGF0ZS0+aGxzcXJlZ3NbcG9zXSk7 CisJCX0KKwl9CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKmE1eHhfYWN0aXZl X3Jpbmcoc3RydWN0IG1zbV9ncHUgKmdwdSkKQEAgLTEyNDQsMTIgKzE0NTMsMTIgQEAgc3RhdGlj IGludCBhNXh4X2dwdV9idXN5KHN0cnVjdCBtc21fZ3B1ICpncHUsIHVpbnQ2NF90ICp2YWx1ZSkK IAkJLmlycSA9IGE1eHhfaXJxLAogCQkuZGVzdHJveSA9IGE1eHhfZGVzdHJveSwKICNpZmRlZiBD T05GSUdfREVCVUdfRlMKLQkJLnNob3cgPSBhZHJlbm9fc2hvdywKKwkJLnNob3cgPSBhNXh4X3No b3csCiAJCS5kZWJ1Z2ZzX2luaXQgPSBhNXh4X2RlYnVnZnNfaW5pdCwKICNlbmRpZgogCQkuZ3B1 X2J1c3kgPSBhNXh4X2dwdV9idXN5LAogCQkuZ3B1X3N0YXRlX2dldCA9IGE1eHhfZ3B1X3N0YXRl X2dldCwKLQkJLmdwdV9zdGF0ZV9wdXQgPSBhZHJlbm9fZ3B1X3N0YXRlX3B1dCwKKwkJLmdwdV9z dGF0ZV9wdXQgPSBhNXh4X2dwdV9zdGF0ZV9wdXQsCiAJfSwKIAkuZ2V0X3RpbWVzdGFtcCA9IGE1 eHhfZ2V0X3RpbWVzdGFtcCwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Fk cmVuby9hZHJlbm9fZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1 LmMKaW5kZXggZTliN2IzNi4uZDg1ZDEwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9hZHJlbm8vYWRyZW5vX2dwdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2Fk cmVub19ncHUuYwpAQCAtMzgzLDE2ICszODMsMTEgQEAgYm9vbCBhZHJlbm9faWRsZShzdHJ1Y3Qg bXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcpCiAJcmV0dXJuIGZhbHNl OwogfQogCi1zdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqYWRyZW5vX2dwdV9zdGF0ZV9nZXQoc3RydWN0 IG1zbV9ncHUgKmdwdSkKK2ludCBhZHJlbm9fZ3B1X3N0YXRlX2dldChzdHJ1Y3QgbXNtX2dwdSAq Z3B1LCBzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGFkcmVub19ncHUg KmFkcmVub19ncHUgPSB0b19hZHJlbm9fZ3B1KGdwdSk7Ci0Jc3RydWN0IG1zbV9ncHVfc3RhdGUg KnN0YXRlOwogCWludCBpLCBjb3VudCA9IDA7CiAKLQlzdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCpz dGF0ZSksIEdGUF9LRVJORUwpOwotCWlmICghc3RhdGUpCi0JCXJldHVybiBFUlJfUFRSKC1FTk9N RU0pOwotCiAJa3JlZl9pbml0KCZzdGF0ZS0+cmVmKTsKIAogCWRvX2dldHRpbWVvZmRheSgmc3Rh dGUtPnRpbWUpOwpAQCAtNDQ2LDE0ICs0NDEsMTIgQEAgc3RydWN0IG1zbV9ncHVfc3RhdGUgKmFk cmVub19ncHVfc3RhdGVfZ2V0KHN0cnVjdCBtc21fZ3B1ICpncHUpCiAJCXN0YXRlLT5ucl9yZWdp c3RlcnMgPSBjb3VudDsKIAl9CiAKLQlyZXR1cm4gc3RhdGU7CisJcmV0dXJuIDA7CiB9CiAKLXN0 YXRpYyB2b2lkIGFkcmVub19ncHVfc3RhdGVfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZikKK3Zv aWQgYWRyZW5vX2dwdV9zdGF0ZV9kZXN0cm95KHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSkK IHsKIAlpbnQgaTsKLQlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUgPSBjb250YWluZXJfb2Yo a3JlZiwKLQkJc3RydWN0IG1zbV9ncHVfc3RhdGUsIHJlZik7CiAKIAlmb3IoaSA9IDA7IGkgPCBB UlJBWV9TSVpFKHN0YXRlLT5yaW5nKTsgaSsrKQogCQlrZnJlZShzdGF0ZS0+cmluZ1tpXS5kYXRh KTsKQEAgLTQ2MSw2ICs0NTQsMTQgQEAgc3RhdGljIHZvaWQgYWRyZW5vX2dwdV9zdGF0ZV9kZXN0 cm95KHN0cnVjdCBrcmVmICprcmVmKQogCWtmcmVlKHN0YXRlLT5jb21tKTsKIAlrZnJlZShzdGF0 ZS0+Y21kKTsKIAlrZnJlZShzdGF0ZS0+cmVnaXN0ZXJzKTsKK30KKworc3RhdGljIHZvaWQgYWRy ZW5vX2dwdV9zdGF0ZV9rcmVmX2Rlc3Ryb3koc3RydWN0IGtyZWYgKmtyZWYpCit7CisJc3RydWN0 IG1zbV9ncHVfc3RhdGUgKnN0YXRlID0gY29udGFpbmVyX29mKGtyZWYsCisJCXN0cnVjdCBtc21f Z3B1X3N0YXRlLCByZWYpOworCisJYWRyZW5vX2dwdV9zdGF0ZV9kZXN0cm95KHN0YXRlKTsKIAlr ZnJlZShzdGF0ZSk7CiB9CiAKQEAgLTQ2OSw3ICs0NzAsNyBAQCBpbnQgYWRyZW5vX2dwdV9zdGF0 ZV9wdXQoc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlKQogCWlmIChJU19FUlJfT1JfTlVMTChz dGF0ZSkpCiAJCXJldHVybiAxOwogCi0JcmV0dXJuIGtyZWZfcHV0KCZzdGF0ZS0+cmVmLCBhZHJl bm9fZ3B1X3N0YXRlX2Rlc3Ryb3kpOworCXJldHVybiBrcmVmX3B1dCgmc3RhdGUtPnJlZiwgYWRy ZW5vX2dwdV9zdGF0ZV9rcmVmX2Rlc3Ryb3kpOwogfQogCiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZT CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmggYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmgKaW5kZXggMDc3YmYxMS4uOTQy ZDY5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuaApAQCAtMjI4LDcg KzIyOCw5IEBAIGludCBhZHJlbm9fZ3B1X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKIAkJaW50IG5yX3JpbmdzKTsKIHZvaWQgYWRyZW5v X2dwdV9jbGVhbnVwKHN0cnVjdCBhZHJlbm9fZ3B1ICpncHUpOwogCi1zdHJ1Y3QgbXNtX2dwdV9z dGF0ZSAqYWRyZW5vX2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1zbV9ncHUgKmdwdSk7Cit2b2lkIGFk cmVub19ncHVfc3RhdGVfZGVzdHJveShzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUpOworCitp bnQgYWRyZW5vX2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9n cHVfc3RhdGUgKnN0YXRlKTsKIGludCBhZHJlbm9fZ3B1X3N0YXRlX3B1dChzdHJ1Y3QgbXNtX2dw dV9zdGF0ZSAqc3RhdGUpOwogCiAvKiByaW5nYnVmZmVyIGhlbHBlcnMgKHRoZSBwYXJ0cyB0aGF0 IGFyZSBhZHJlbm8gc3BlY2lmaWMpICovCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJl bm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==