From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 09/10] drm/msm/adreno: Add a5xx specific registers for the GPU state Date: Tue, 17 Apr 2018 16:44:40 -0600 Message-ID: <20180417224441.32355-10-jcrouse@codeaurora.org> References: <20180417224441.32355-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180417224441.32355-1-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 YXVyb3JhLm9yZz4KLS0tCiBEb2N1bWVudGF0aW9uL2dwdS9kcm0tbXNtLWNyYXNoLWR1bXAudHh0 IHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2EzeHhfZ3B1LmMgICAgfCAgIDgg Ky0KIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E0eHhfZ3B1LmMgICAgfCAgIDggKy0KIGRy aXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmMgICAgfCAyMzYgKysrKysrKysrKysr KysrKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuYyAgfCAg MjMgKy0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmggIHwgICA0ICst CiA2IGZpbGVzIGNoYW5nZWQsIDI1MiBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbXNtLWNyYXNoLWR1bXAudHh0IGIvRG9j dW1lbnRhdGlvbi9ncHUvZHJtLW1zbS1jcmFzaC1kdW1wLnR4dAppbmRleCBkZjI1YWZkMTA2MDIu LmY4NGE0N2E5Y2E5MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1zbS1jcmFz aC1kdW1wLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbXNtLWNyYXNoLWR1bXAudHh0 CkBAIC0zMywzICszMyw3IEBAIHJlZ2lzdGVyczoJIyBTZXRzIG9mIHJlZ2lzdGVyIHZhbHVlcy4g VGhpcyBzZWN0aW9uIGNhbiBiZSB1c2VkIG11bHRpcGxlCiAJCSMgb24gaXRzIG93biBsaW5lLgog ICAtIFtvZmZzZXQsIHZhbHVlXQkjIG9mZnNldDogW2hleF0gYnl0ZSBvZmZzZXQgb2YgdGhlIHJl Z2lzdGVyCiAJCQkjIHZhbHVlOiBbaGV4XSB2YWx1ZSBvZiB0aGUgcmVnaXN0ZXIKKworcmVnaXN0 ZXJzLWhsc3E6ICMgKDV4eCBvbmx5KSBTYW1lIGZvcm1hdCBhcyByZWdpc3RlcnMuIFJlZ2lzdGVy IGRhdGEgdGhhdAorCQkjIG9ubHkgYWNjZXNzaWJsZSBmcm9tIHRoZSBITFNRIGFwZXJ0dXJlIGNh cHR1cmVkIGJ5IHRoZQorCQkjIEhXIGJhc2VkIGNyYXNoZHVtcGVyCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hM3h4X2dwdS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9h ZHJlbm8vYTN4eF9ncHUuYwppbmRleCBmYzUwMmU0MTIxMzIuLjY2OWMyZDRiMDcwZCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTN4eF9ncHUuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2FkcmVuby9hM3h4X2dwdS5jCkBAIC00MjEsMTAgKzQyMSwxMiBAQCBzdGF0 aWMgdm9pZCBhM3h4X2R1bXAoc3RydWN0IG1zbV9ncHUgKmdwdSkKIAogc3RhdGljIHN0cnVjdCBt c21fZ3B1X3N0YXRlICphM3h4X2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1zbV9ncHUgKmdwdSkKIHsK LQlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUgPSBhZHJlbm9fZ3B1X3N0YXRlX2dldChncHUp OworCXN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCpzdGF0ZSks IEdGUF9LRVJORUwpOwogCi0JaWYgKElTX0VSUihzdGF0ZSkpCi0JCXJldHVybiBzdGF0ZTsKKwlp ZiAoIXN0YXRlKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCWFkcmVub19ncHVfc3Rh dGVfZ2V0KGdwdSwgc3RhdGUpOwogCiAJc3RhdGUtPnJiYm1fc3RhdHVzID0gZ3B1X3JlYWQoZ3B1 LCBSRUdfQTNYWF9SQkJNX1NUQVRVUyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vYWRyZW5vL2E0eHhfZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNHh4X2dw dS5jCmluZGV4IDgxMjljZjAzN2RiMS4uN2M0ZTZkYzFlZDU5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2FkcmVuby9hNHh4X2dwdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v YWRyZW5vL2E0eHhfZ3B1LmMKQEAgLTQ1NywxMCArNDU3LDEyIEBAIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBpbnQgYTR4eF9yZWdpc3RlcnNbXSA9IHsKIAogc3RhdGljIHN0cnVjdCBtc21fZ3B1X3N0 YXRlICphNHh4X2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1zbV9ncHUgKmdwdSkKIHsKLQlzdHJ1Y3Qg bXNtX2dwdV9zdGF0ZSAqc3RhdGUgPSBhZHJlbm9fZ3B1X3N0YXRlX2dldChncHUpOworCXN0cnVj dCBtc21fZ3B1X3N0YXRlICpzdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCpzdGF0ZSksIEdGUF9LRVJO RUwpOwogCi0JaWYgKElTX0VSUihzdGF0ZSkpCi0JCXJldHVybiBzdGF0ZTsKKwlpZiAoIXN0YXRl KQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCWFkcmVub19ncHVfc3RhdGVfZ2V0KGdw dSwgc3RhdGUpOwogCiAJc3RhdGUtPnJiYm1fc3RhdHVzID0gZ3B1X3JlYWQoZ3B1LCBSRUdfQTRY WF9SQkJNX1NUQVRVUyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5v L2E1eHhfZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5jCmluZGV4 IDgzNmExZGYxZjI1Ny4uODIyMDA3N2JkNzY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2FkcmVuby9hNXh4X2dwdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1 eHhfZ3B1LmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlIDxsaW51eC9zb2MvcWNvbS9tZHRf bG9hZGVyLmg+CiAjaW5jbHVkZSA8bGludXgvcG1fb3BwLmg+CiAjaW5jbHVkZSA8bGludXgvbnZt ZW0tY29uc3VtZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KICNpbmNsdWRlICJtc21f Z2VtLmgiCiAjaW5jbHVkZSAibXNtX21tdS5oIgogI2luY2x1ZGUgImE1eHhfZ3B1LmgiCkBAIC0x MTIzLDggKzExMjQsOSBAQCBzdGF0aWMgY29uc3QgdTMyIGE1eHhfcmVnaXN0ZXJzW10gPSB7CiAJ MHhFODAwLCAweEU4MDYsIDB4RTgxMCwgMHhFODlBLCAweEU4QTAsIDB4RThBNCwgMHhFOEFBLCAw eEU4RUIsCiAJMHhFOTAwLCAweEU5MDUsIDB4RUI4MCwgMHhFQjhGLCAweEVCQjAsIDB4RUJCMCwg MHhFQzAwLCAweEVDMDUsCiAJMHhFQzA4LCAweEVDRTksIDB4RUNGMCwgMHhFQ0YwLCAweEVBODAs IDB4RUE4MCwgMHhFQTgyLCAweEVBQTMsCi0JMHhFQUE1LCAweEVBQzIsIDB4QTgwMCwgMHhBOEZG LCAweEFDNjAsIDB4QUM2MCwgMHhCMDAwLCAweEI5N0YsCi0JMHhCOUEwLCAweEI5QkYsIH4wCisJ MHhFQUE1LCAweEVBQzIsIDB4QTgwMCwgMHhBODAwLCAweEE4MjAsIDB4QTgyOCwgMHhBODQwLCAw eEE4N0QsCisJMFhBODgwLCAweEE4OEQsIDB4QTg5MCwgMHhBOEEzLCAweEE4RDAsIDB4QThEOCwg MHhBOEUwLCAweEE4RjUsCisJMHhBQzYwLCAweEFDNjAsIH4wLAogfTsKIAogc3RhdGljIHZvaWQg YTV4eF9kdW1wKHN0cnVjdCBtc21fZ3B1ICpncHUpCkBAIC0xMTk1LDI1ICsxMTk3LDIzMyBAQCBz dGF0aWMgaW50IGE1eHhfZ2V0X3RpbWVzdGFtcChzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCB1aW50NjRf dCAqdmFsdWUpCiAJcmV0dXJuIDA7CiB9CiAKK3N0cnVjdCBhNXh4X2NyYXNoZHVtcGVyIHsKKwl2 b2lkICpwdHI7CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpibzsKKwl1NjQgaW92YTsKK307CisK K3N0cnVjdCBhNXh4X2dwdV9zdGF0ZSB7CisJc3RydWN0IG1zbV9ncHVfc3RhdGUgYmFzZTsKKwl1 MzIgKmhsc3FyZWdzOworfTsKKworI2RlZmluZSBncHVfcG9sbF90aW1lb3V0KGdwdSwgYWRkciwg dmFsLCBjb25kLCBpbnRlcnZhbCwgdGltZW91dCkgXAorCXJlYWRsX3BvbGxfdGltZW91dCgoZ3B1 KS0+bW1pbyArICgoYWRkcikgPDwgMiksIHZhbCwgY29uZCwgXAorCQlpbnRlcnZhbCwgdGltZW91 dCkKKworc3RhdGljIGludCBhNXh4X2NyYXNoZHVtcGVyX2luaXQoc3RydWN0IG1zbV9ncHUgKmdw dSwKKwkJc3RydWN0IGE1eHhfY3Jhc2hkdW1wZXIgKmR1bXBlcikKK3sKKwlkdW1wZXItPnB0ciA9 IG1zbV9nZW1fa2VybmVsX25ld19sb2NrZWQoZ3B1LT5kZXYsCisJCVNaXzFNLCBNU01fQk9fVU5D QUNIRUQsIGdwdS0+YXNwYWNlLAorCQkmZHVtcGVyLT5ibywgJmR1bXBlci0+aW92YSk7CisKKwlp ZiAoSVNfRVJSKGR1bXBlci0+cHRyKSkKKwkJcmV0dXJuIFBUUl9FUlIoZHVtcGVyLT5wdHIpOwor CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGE1eHhfY3Jhc2hkdW1wZXJfZnJlZShzdHJ1 Y3QgbXNtX2dwdSAqZ3B1LAorCQlzdHJ1Y3QgYTV4eF9jcmFzaGR1bXBlciAqZHVtcGVyKQorewor CW1zbV9nZW1fcHV0X2lvdmEoZHVtcGVyLT5ibywgZ3B1LT5hc3BhY2UpOworCW1zbV9nZW1fcHV0 X3ZhZGRyKGR1bXBlci0+Ym8pOworCisJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoZHVtcGVy LT5ibyk7Cit9CisKK3N0YXRpYyBpbnQgYTV4eF9jcmFzaGR1bXBlcl9ydW4oc3RydWN0IG1zbV9n cHUgKmdwdSwKKwkJc3RydWN0IGE1eHhfY3Jhc2hkdW1wZXIgKmR1bXBlcikKK3sKKwl1MzIgdmFs OworCisJaWYgKElTX0VSUl9PUl9OVUxMKGR1bXBlci0+cHRyKSkKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwlncHVfd3JpdGU2NChncHUsIFJFR19BNVhYX0NQX0NSQVNIX1NDUklQVF9CQVNFX0xPLAor CQlSRUdfQTVYWF9DUF9DUkFTSF9TQ1JJUFRfQkFTRV9ISSwgZHVtcGVyLT5pb3ZhKTsKKworCWdw dV93cml0ZShncHUsIFJFR19BNVhYX0NQX0NSQVNIX0RVTVBfQ05UTCwgMSk7CisKKwlyZXR1cm4g Z3B1X3BvbGxfdGltZW91dChncHUsIFJFR19BNVhYX0NQX0NSQVNIX0RVTVBfQ05UTCwgdmFsLAor CQl2YWwgJiAweDA0LCAxMDAsIDEwMDAwKTsKK30KKworLyoKKyAqIFRoZXNlIGFyZSBhIGxpc3Qg b2YgdGhlIHJlZ2lzdGVycyB0aGF0IG5lZWQgdG8gYmUgcmVhZCB0aHJvdWdoIHRoZSBITFNRCisg KiBhcGVydHVyZSB0aHJvdWdoIHRoZSBjcmFzaGR1bXBlci4gIFRoZXNlIGFyZSBub3Qgbm9taW5h bGx5IGFjY2Vzc2libGUgZnJvbQorICogdGhlIENQVSBvbiBhIHNlY3VyZSBwbGF0Zm9ybS4KKyAq Lworc3RhdGljIGNvbnN0IHN0cnVjdCB7CisJdTMyIHR5cGU7CisJdTMyIHJlZ29mZnNldDsKKwl1 MzIgY291bnQ7Cit9IGE1eHhfaGxzcV9hcGVydHVyZV9yZWdzW10gPSB7CisJeyAweDM1LCAweGUw MCwgMHgzMiB9LCAgIC8qIEhTTFEgbm9uLWNvbnRleHQgKi8KKwl7IDB4MzEsIDB4MjA4MCwgMHgx IH0sICAgLyogSExTUSAyRCBjb250ZXh0IDAgKi8KKwl7IDB4MzMsIDB4MjQ4MCwgMHgxIH0sICAg LyogSExTUSAyRCBjb250ZXh0IDEgKi8KKwl7IDB4MzIsIDB4ZTc4MCwgMHg2MiB9LCAgLyogSExT USAzRCBjb250ZXh0IDAgKi8KKwl7IDB4MzQsIDB4ZWY4MCwgMHg2MiB9LCAgLyogSExTUSAzRCBj b250ZXh0IDEgKi8KKwl7IDB4M2YsIDB4MGVjMCwgMHg0MCB9LCAgLyogU1Agbm9uLWNvbnRleHQg Ki8KKwl7IDB4M2QsIDB4MjA0MCwgMHgxIH0sICAgLyogU1AgMkQgY29udGV4dCAwICovCisJeyAw eDNiLCAweDI0NDAsIDB4MSB9LCAgIC8qIFNQIDJEIGNvbnRleHQgMSAqLworCXsgMHgzZSwgMHhl NTgwLCAweDE3MCB9LCAvKiBTUCAzRCBjb250ZXh0IDAgKi8KKwl7IDB4M2MsIDB4ZWQ4MCwgMHgx NzAgfSwgLyogU1AgM0QgY29udGV4dCAxICovCisJeyAweDNhLCAweDBmMDAsIDB4MWMgfSwgIC8q IFRQIG5vbi1jb250ZXh0ICovCisJeyAweDM4LCAweDIwMDAsIDB4YSB9LCAgIC8qIFRQIDJEIGNv bnRleHQgMCAqLworCXsgMHgzNiwgMHgyNDAwLCAweGEgfSwgICAvKiBUUCAyRCBjb250ZXh0IDEg Ki8KKwl7IDB4MzksIDB4ZTcwMCwgMHg4MCB9LCAgLyogVFAgM0QgY29udGV4dCAwICovCisJeyAw eDM3LCAweGVmMDAsIDB4ODAgfSwgIC8qIFRQIDNEIGNvbnRleHQgMSAqLworfTsKKworc3RhdGlj IHZvaWQgYTV4eF9ncHVfc3RhdGVfZ2V0X2hsc3FfcmVncyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1LAor CQlzdHJ1Y3QgYTV4eF9ncHVfc3RhdGUgKmE1eHhfc3RhdGUpCit7CisJc3RydWN0IGE1eHhfY3Jh c2hkdW1wZXIgZHVtcGVyID0geyAwIH07CisJdTMyIG9mZnNldCwgY291bnQgPSAwOworCXU2NCAq cHRyOworCWludCBpOworCisJaWYgKGE1eHhfY3Jhc2hkdW1wZXJfaW5pdChncHUsICZkdW1wZXIp KQorCQlyZXR1cm47CisKKwkvKiBUaGUgc2NyaXB0IHdpbGwgYmUgd3JpdHRlbiBhdCBvZmZzZXQg MCAqLworCXB0ciA9IGR1bXBlci5wdHI7CisKKwkvKiBTdGFydCB3cml0aW5nIHRoZSBkYXRhIGF0 IG9mZnNldCAyNTZrICovCisJb2Zmc2V0ID0gZHVtcGVyLmlvdmEgKyAoMjU2ICogU1pfMUspOwor CisJLyogQ291bnQgaG93IG1hbnkgYWRkaXRpb25hbCByZWdpc3RlcnMgdG8gZ2V0IGZyb20gdGhl IEhMU1EgYXBlcnR1cmUgKi8KKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhNXh4X2hsc3Ff YXBlcnR1cmVfcmVncyk7IGkrKykKKwkJY291bnQgKz0gYTV4eF9obHNxX2FwZXJ0dXJlX3JlZ3Nb aV0uY291bnQ7CisKKwlhNXh4X3N0YXRlLT5obHNxcmVncyA9IGtjYWxsb2MoY291bnQsIHNpemVv Zih1MzIpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWE1eHhfc3RhdGUtPmhsc3FyZWdzKQorCQlyZXR1 cm47CisKKwkvKiBCdWlsZCB0aGUgY3Jhc2hkdW1wIHNjcmlwdCAqLworCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGE1eHhfaGxzcV9hcGVydHVyZV9yZWdzKTsgaSsrKSB7CisJCXUzMiB0eXBl ID0gYTV4eF9obHNxX2FwZXJ0dXJlX3JlZ3NbaV0udHlwZTsKKwkJdTMyIGMgPSBhNXh4X2hsc3Ff YXBlcnR1cmVfcmVnc1tpXS5jb3VudDsKKworCQkvKiBXcml0ZSB0aGUgcmVnaXN0ZXIgdG8gc2Vs ZWN0IHRoZSBkZXNpcmVkIGJhbmsgKi8KKwkJKnB0cisrID0gKCh1NjQpIHR5cGUgPDwgOCk7CisJ CSpwdHIrKyA9ICgoKHU2NCkgUkVHX0E1WFhfSExTUV9EQkdfUkVBRF9TRUwpIDw8IDQ0KSB8CisJ CQkoMSA8PCAyMSkgfCAxOworCisJCSpwdHIrKyA9IG9mZnNldDsKKwkJKnB0cisrID0gKCgodTY0 KSBSRUdfQTVYWF9ITFNRX0RCR19BSEJfUkVBRF9BUEVSVFVSRSkgPDwgNDQpCisJCQl8IGM7CisK KwkJb2Zmc2V0ICs9IGMgKiBzaXplb2YodTMyKTsKKwl9CisKKwkvKiBXcml0ZSB0d28gemVyb3Mg dG8gY2xvc2Ugb2ZmIHRoZSBzY3JpcHQgKi8KKwkqcHRyKysgPSAwOworCSpwdHIrKyA9IDA7CisK KwlpZiAoYTV4eF9jcmFzaGR1bXBlcl9ydW4oZ3B1LCAmZHVtcGVyKSkgeworCQlrZnJlZShhNXh4 X3N0YXRlLT5obHNxcmVncyk7CisJCWE1eHhfY3Jhc2hkdW1wZXJfZnJlZShncHUsICZkdW1wZXIp OworCQlyZXR1cm47CisJfQorCisJLyogQ29weSB0aGUgZGF0YSBmcm9tIHRoZSBjcmFzaGR1bXBl ciB0byB0aGUgc3RhdGUgKi8KKwltZW1jcHkoYTV4eF9zdGF0ZS0+aGxzcXJlZ3MsIGR1bXBlci5w dHIgKyAoMjU2ICogU1pfMUspLAorCQljb3VudCAqIHNpemVvZih1MzIpKTsKKworCWE1eHhfY3Jh c2hkdW1wZXJfZnJlZShncHUsICZkdW1wZXIpOworfQorCiBzdGF0aWMgc3RydWN0IG1zbV9ncHVf c3RhdGUgKmE1eHhfZ3B1X3N0YXRlX2dldChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogewotCXN0cnVj dCBtc21fZ3B1X3N0YXRlICpzdGF0ZTsKKwlzdHJ1Y3QgYTV4eF9ncHVfc3RhdGUgKmE1eHhfc3Rh dGUgPSBremFsbG9jKHNpemVvZigqYTV4eF9zdGF0ZSksCisJCQlHRlBfS0VSTkVMKTsKIAotCS8q Ci0JICogVGVtcG9yYXJpbHkgZGlzYWJsZSBoYXJkd2FyZSBjbG9jayBnYXRpbmcgYmVmb3JlIGdv aW5nIGludG8KLQkgKiBhZHJlbm9fc2hvdyB0byBhdm9pZCBpc3N1ZXMgd2hpbGUgcmVhZGluZyB0 aGUgcmVnaXN0ZXJzCi0JICovCisJaWYgKCFhNXh4X3N0YXRlKQorCQlyZXR1cm4gRVJSX1BUUigt RU5PTUVNKTsKKworCS8qIFRlbXBvcmFyaWx5IGRpc2FibGUgaGFyZHdhcmUgY2xvY2sgZ2F0aW5n IGJlZm9yZSByZWFkaW5nIHRoZSBodyAqLwogCWE1eHhfc2V0X2h3Y2coZ3B1LCBmYWxzZSk7CiAK LQlzdGF0ZSA9IGFkcmVub19ncHVfc3RhdGVfZ2V0KGdwdSk7CisJLyogRmlyc3QgZ2V0IHRoZSBn ZW5lcmljIHN0YXRlIGZyb20gdGhlIGFkcmVubyBjb3JlICovCisJYWRyZW5vX2dwdV9zdGF0ZV9n ZXQoZ3B1LCAmKGE1eHhfc3RhdGUtPmJhc2UpKTsKKworCWE1eHhfc3RhdGUtPmJhc2UucmJibV9z dGF0dXMgPSBncHVfcmVhZChncHUsIFJFR19BNVhYX1JCQk1fU1RBVFVTKTsKIAotCWlmICghSVNf RVJSKHN0YXRlKSkKLQkJc3RhdGUtPnJiYm1fc3RhdHVzID0gZ3B1X3JlYWQoZ3B1LCBSRUdfQTVY WF9SQkJNX1NUQVRVUyk7CisJLyogR2V0IHRoZSBITFNRIHJlZ3Mgd2l0aCB0aGUgaGVscCBvZiB0 aGUgY3Jhc2hkdW1wZXIgKi8KKwlhNXh4X2dwdV9zdGF0ZV9nZXRfaGxzcV9yZWdzKGdwdSwgYTV4 eF9zdGF0ZSk7CiAKIAlhNXh4X3NldF9od2NnKGdwdSwgdHJ1ZSk7CiAKLQlyZXR1cm4gc3RhdGU7 CisJcmV0dXJuICZhNXh4X3N0YXRlLT5iYXNlOworfQorCitzdGF0aWMgdm9pZCBhNXh4X2dwdV9z dGF0ZV9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVmKQoreworCXN0cnVjdCBtc21fZ3B1X3N0YXRl ICpzdGF0ZSA9IGNvbnRhaW5lcl9vZihrcmVmLAorCQlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSwgcmVm KTsKKwlzdHJ1Y3QgYTV4eF9ncHVfc3RhdGUgKmE1eHhfc3RhdGUgPSBjb250YWluZXJfb2Yoc3Rh dGUsCisJCXN0cnVjdCBhNXh4X2dwdV9zdGF0ZSwgYmFzZSk7CisKKwlrZnJlZShhNXh4X3N0YXRl LT5obHNxcmVncyk7CisKKwlhZHJlbm9fZ3B1X3N0YXRlX2Rlc3Ryb3koc3RhdGUpOworCWtmcmVl KGE1eHhfc3RhdGUpOworfQorCitpbnQgYTV4eF9ncHVfc3RhdGVfcHV0KHN0cnVjdCBtc21fZ3B1 X3N0YXRlICpzdGF0ZSkKK3sKKwlpZiAoSVNfRVJSX09SX05VTEwoc3RhdGUpKQorCQlyZXR1cm4g MTsKKworCXJldHVybiBrcmVmX3B1dCgmc3RhdGUtPnJlZiwgYTV4eF9ncHVfc3RhdGVfZGVzdHJv eSk7Cit9CisKKworI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKSB8fCBkZWZpbmVkKENPTkZJ R19ERVZfQ09SRURVTVApCit2b2lkIGE1eHhfc2hvdyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1 Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUsCisJCXN0cnVjdCBkcm1fcHJpbnRlciAqcCkKK3sKKwlp bnQgaSwgajsKKwl1MzIgcG9zID0gMDsKKwlzdHJ1Y3QgYTV4eF9ncHVfc3RhdGUgKmE1eHhfc3Rh dGUgPSBjb250YWluZXJfb2Yoc3RhdGUsCisJCXN0cnVjdCBhNXh4X2dwdV9zdGF0ZSwgYmFzZSk7 CisKKwlpZiAoSVNfRVJSX09SX05VTEwoc3RhdGUpKQorCQlyZXR1cm47CisKKwlhZHJlbm9fc2hv dyhncHUsIHN0YXRlLCBwKTsKKworCS8qIER1bXAgdGhlIGFkZGl0aW9uYWwgYTV4eCBITFNRIHJl Z2lzdGVycyAqLworCWlmICghYTV4eF9zdGF0ZS0+aGxzcXJlZ3MpCisJCXJldHVybjsKKworCWRy bV9wcmludGYocCwgInJlZ2lzdGVycy1obHNxOlxuIik7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShhNXh4X2hsc3FfYXBlcnR1cmVfcmVncyk7IGkrKykgeworCQl1MzIgbyA9IGE1eHhf aGxzcV9hcGVydHVyZV9yZWdzW2ldLnJlZ29mZnNldDsKKwkJdTMyIGMgPSBhNXh4X2hsc3FfYXBl cnR1cmVfcmVnc1tpXS5jb3VudDsKKworCQlmb3IgKGogPSAwOyBqIDwgYzsgaisrLCBwb3MrKywg bysrKSB7CisJCQkvKgorCQkJICogVG8ga2VlcCB0aGUgY3Jhc2hkdW1wIHNpbXBsZSB3ZSBwdWxs IHRoZSBlbnRpcmUgcmFuZ2UKKwkJCSAqIGZvciBlYWNoIHJlZ2lzdGVyIHR5cGUgYnV0IG5vdCBh bGwgb2YgdGhlIHJlZ2lzdGVycworCQkJICogaW4gdGhlIHJhbmdlIGFyZSB2YWxpZC4gRm9ydHVu YXRlbHkgaW52YWxpZCByZWdpc3RlcnMKKwkJCSAqIHN0aWNrIG91dCBsaWtlIGEgc29yZSB0aHVt YiB3aXRoIGEgdmFsdWUgb2YKKwkJCSAqIDB4ZGVhZGJlZWYKKwkJCSAqLworCQkJaWYgKGE1eHhf c3RhdGUtPmhsc3FyZWdzW3Bvc10gPT0gMHhkZWFkYmVlZikKKwkJCQljb250aW51ZTsKKworCQkJ ZHJtX3ByaW50ZihwLCAiICAtIHsgb2Zmc2V0OiAweCUwNHgsIHZhbHVlOiAweCUwOHggfVxuIiwK KwkJCQlvIDw8IDIsIGE1eHhfc3RhdGUtPmhsc3FyZWdzW3Bvc10pOworCQl9CisJfQogfQorI2Vu ZGlmCiAKIHN0YXRpYyBzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKmE1eHhfYWN0aXZlX3Jpbmcoc3Ry dWN0IG1zbV9ncHUgKmdwdSkKIHsKQEAgLTEyNDQsMTQgKzE0NTQsMTQgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBhZHJlbm9fZ3B1X2Z1bmNzIGZ1bmNzID0gewogCQkuaXJxID0gYTV4eF9pcnEsCiAJ CS5kZXN0cm95ID0gYTV4eF9kZXN0cm95LAogI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKSB8 fCBkZWZpbmVkKENPTkZJR19ERVZfQ09SRURVTVApCi0JCS5zaG93ID0gYWRyZW5vX3Nob3csCisJ CS5zaG93ID0gYTV4eF9zaG93LAogI2VuZGlmCiAjaWYgZGVmaW5lZChDT05GSUdfREVCVUdfRlMp CiAJCS5kZWJ1Z2ZzX2luaXQgPSBhNXh4X2RlYnVnZnNfaW5pdCwKICNlbmRpZgogCQkuZ3B1X2J1 c3kgPSBhNXh4X2dwdV9idXN5LAogCQkuZ3B1X3N0YXRlX2dldCA9IGE1eHhfZ3B1X3N0YXRlX2dl dCwKLQkJLmdwdV9zdGF0ZV9wdXQgPSBhZHJlbm9fZ3B1X3N0YXRlX3B1dCwKKwkJLmdwdV9zdGF0 ZV9wdXQgPSBhNXh4X2dwdV9zdGF0ZV9wdXQsCiAJfSwKIAkuZ2V0X3RpbWVzdGFtcCA9IGE1eHhf Z2V0X3RpbWVzdGFtcCwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVu by9hZHJlbm9fZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMK aW5kZXggMWY1MjA4NzVhN2ZiLi5kNmU0MjU1NGIxY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Fk cmVuby9hZHJlbm9fZ3B1LmMKQEAgLTM2OSwxNiArMzY5LDExIEBAIGJvb2wgYWRyZW5vX2lkbGUo c3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nKQogCXJldHVy biBmYWxzZTsKIH0KIAotc3RydWN0IG1zbV9ncHVfc3RhdGUgKmFkcmVub19ncHVfc3RhdGVfZ2V0 KHN0cnVjdCBtc21fZ3B1ICpncHUpCitpbnQgYWRyZW5vX2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1z bV9ncHUgKmdwdSwgc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBhZHJl bm9fZ3B1ICphZHJlbm9fZ3B1ID0gdG9fYWRyZW5vX2dwdShncHUpOwotCXN0cnVjdCBtc21fZ3B1 X3N0YXRlICpzdGF0ZTsKIAlpbnQgaSwgY291bnQgPSAwOwogCi0Jc3RhdGUgPSBremFsbG9jKHNp emVvZigqc3RhdGUpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXN0YXRlKQotCQlyZXR1cm4gRVJSX1BU UigtRU5PTUVNKTsKLQogCWtyZWZfaW5pdCgmc3RhdGUtPnJlZik7CiAKIAlkb19nZXR0aW1lb2Zk YXkoJnN0YXRlLT50aW1lKTsKQEAgLTQzMywxNCArNDI4LDEyIEBAIHN0cnVjdCBtc21fZ3B1X3N0 YXRlICphZHJlbm9fZ3B1X3N0YXRlX2dldChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogCQlzdGF0ZS0+ bnJfcmVnaXN0ZXJzID0gY291bnQ7CiAJfQogCi0JcmV0dXJuIHN0YXRlOworCXJldHVybiAwOwog fQogCi1zdGF0aWMgdm9pZCBhZHJlbm9fZ3B1X3N0YXRlX2Rlc3Ryb3koc3RydWN0IGtyZWYgKmty ZWYpCit2b2lkIGFkcmVub19ncHVfc3RhdGVfZGVzdHJveShzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAq c3RhdGUpCiB7CiAJaW50IGk7Ci0Jc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlID0gY29udGFp bmVyX29mKGtyZWYsCi0JCXN0cnVjdCBtc21fZ3B1X3N0YXRlLCByZWYpOwogCiAJZm9yIChpID0g MDsgaSA8IEFSUkFZX1NJWkUoc3RhdGUtPnJpbmcpOyBpKyspCiAJCWtmcmVlKHN0YXRlLT5yaW5n W2ldLmRhdGEpOwpAQCAtNDQ4LDYgKzQ0MSwxNCBAQCBzdGF0aWMgdm9pZCBhZHJlbm9fZ3B1X3N0 YXRlX2Rlc3Ryb3koc3RydWN0IGtyZWYgKmtyZWYpCiAJa2ZyZWUoc3RhdGUtPmNvbW0pOwogCWtm cmVlKHN0YXRlLT5jbWQpOwogCWtmcmVlKHN0YXRlLT5yZWdpc3RlcnMpOworfQorCitzdGF0aWMg dm9pZCBhZHJlbm9fZ3B1X3N0YXRlX2tyZWZfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZikKK3sK KwlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUgPSBjb250YWluZXJfb2Yoa3JlZiwKKwkJc3Ry dWN0IG1zbV9ncHVfc3RhdGUsIHJlZik7CisKKwlhZHJlbm9fZ3B1X3N0YXRlX2Rlc3Ryb3koc3Rh dGUpOwogCWtmcmVlKHN0YXRlKTsKIH0KIApAQCAtNDU2LDcgKzQ1Nyw3IEBAIGludCBhZHJlbm9f Z3B1X3N0YXRlX3B1dChzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUpCiAJaWYgKElTX0VSUl9P Ul9OVUxMKHN0YXRlKSkKIAkJcmV0dXJuIDE7CiAKLQlyZXR1cm4ga3JlZl9wdXQoJnN0YXRlLT5y ZWYsIGFkcmVub19ncHVfc3RhdGVfZGVzdHJveSk7CisJcmV0dXJuIGtyZWZfcHV0KCZzdGF0ZS0+ cmVmLCBhZHJlbm9fZ3B1X3N0YXRlX2tyZWZfZGVzdHJveSk7CiB9CiAKICNpZiBkZWZpbmVkKENP TkZJR19ERUJVR19GUykgfHwgZGVmaW5lZChDT05GSUdfREVWX0NPUkVEVU1QKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oCmluZGV4IDA3N2JmMTE0OWMwYi4uOTQyZDY5NTYz MDkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oCkBAIC0yMjgsNyAr MjI4LDkgQEAgaW50IGFkcmVub19ncHVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCQlpbnQgbnJfcmluZ3MpOwogdm9pZCBhZHJlbm9f Z3B1X2NsZWFudXAoc3RydWN0IGFkcmVub19ncHUgKmdwdSk7CiAKLXN0cnVjdCBtc21fZ3B1X3N0 YXRlICphZHJlbm9fZ3B1X3N0YXRlX2dldChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KTsKK3ZvaWQgYWRy ZW5vX2dwdV9zdGF0ZV9kZXN0cm95KHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSk7CisKK2lu dCBhZHJlbm9fZ3B1X3N0YXRlX2dldChzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX2dw dV9zdGF0ZSAqc3RhdGUpOwogaW50IGFkcmVub19ncHVfc3RhdGVfcHV0KHN0cnVjdCBtc21fZ3B1 X3N0YXRlICpzdGF0ZSk7CiAKIC8qIHJpbmdidWZmZXIgaGVscGVycyAodGhlIHBhcnRzIHRoYXQg YXJlIGFkcmVubyBzcGVjaWZpYykgKi8KLS0gCjIuMTcuMAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJl bm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==