From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 12/13] drm/msm/adreno: Add a5xx specific registers for the GPU state Date: Fri, 29 Jun 2018 10:56:40 -0600 Message-ID: <20180629165641.1348-13-jcrouse@codeaurora.org> References: <20180629165641.1348-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180629165641.1348-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 YXBlcnR1cmUuIEFkZCBhNXh4IHNwZWNpZmljIGNvZGUKdG8gcHJvZ3JhbSB0aGUgY3Jhc2hkdW1w ZXIgYW5kIHJldHJpZXZlIHRoZSB3YXl3YXJkIHJlZ2lzdGVycwphbmQgZHVtcCB0aGVtIGZvciB0 aGUgY3Jhc2ggc3RhdGUuCgpBbHNvLCByZW1vdmUgYSBibG9jayBvZiByZWdpc3RlcnMgdGhlIHJl Z3VsYXIgQ1BVIGFjY2Vzc2libGUKbGlzdCB0aGF0IGFyZW4ndCB1c2VmdWwgZm9yIGRlYnVnIHdo aWNoIGhlbHBzIHJlZHVjZSB0aGUgc2l6ZQpvZiB0aGUgY3Jhc2ggc3RhdGUgZmlsZSBieSBhIGdv b2RseSBhbW91bnQuCgpTaWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNlIDxqY3JvdXNlQGNvZGVh dXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2EzeHhfZ3B1LmMgICB8 ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTR4eF9ncHUuYyAgIHwgICA4ICst CiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5jICAgfCAyMzYgKysrKysrKysr KysrKysrKysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMg fCAgMjMgKy0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmggfCAgIDQg Ky0KIDUgZmlsZXMgY2hhbmdlZCwgMjQ4IGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2EzeHhfZ3B1LmMgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hM3h4X2dwdS5jCmluZGV4IGZjNTAyZTQxMjEzMi4uNjY5 YzJkNGIwNzBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hM3h4X2dw dS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2EzeHhfZ3B1LmMKQEAgLTQyMSwx MCArNDIxLDEyIEBAIHN0YXRpYyB2b2lkIGEzeHhfZHVtcChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQog CiBzdGF0aWMgc3RydWN0IG1zbV9ncHVfc3RhdGUgKmEzeHhfZ3B1X3N0YXRlX2dldChzdHJ1Y3Qg bXNtX2dwdSAqZ3B1KQogewotCXN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSA9IGFkcmVub19n cHVfc3RhdGVfZ2V0KGdwdSk7CisJc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlID0ga3phbGxv YyhzaXplb2YoKnN0YXRlKSwgR0ZQX0tFUk5FTCk7CiAKLQlpZiAoSVNfRVJSKHN0YXRlKSkKLQkJ cmV0dXJuIHN0YXRlOworCWlmICghc3RhdGUpCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwor CisJYWRyZW5vX2dwdV9zdGF0ZV9nZXQoZ3B1LCBzdGF0ZSk7CiAKIAlzdGF0ZS0+cmJibV9zdGF0 dXMgPSBncHVfcmVhZChncHUsIFJFR19BM1hYX1JCQk1fU1RBVFVTKTsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTR4eF9ncHUuYyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vYWRyZW5vL2E0eHhfZ3B1LmMKaW5kZXggODEyOWNmMDM3ZGIxLi43YzRlNmRjMWVkNTkgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E0eHhfZ3B1LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTR4eF9ncHUuYwpAQCAtNDU3LDEwICs0NTcsMTIgQEAg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhNHh4X3JlZ2lzdGVyc1tdID0gewogCiBzdGF0aWMg c3RydWN0IG1zbV9ncHVfc3RhdGUgKmE0eHhfZ3B1X3N0YXRlX2dldChzdHJ1Y3QgbXNtX2dwdSAq Z3B1KQogewotCXN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSA9IGFkcmVub19ncHVfc3RhdGVf Z2V0KGdwdSk7CisJc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlID0ga3phbGxvYyhzaXplb2Yo KnN0YXRlKSwgR0ZQX0tFUk5FTCk7CiAKLQlpZiAoSVNfRVJSKHN0YXRlKSkKLQkJcmV0dXJuIHN0 YXRlOworCWlmICghc3RhdGUpCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJYWRyZW5v X2dwdV9zdGF0ZV9nZXQoZ3B1LCBzdGF0ZSk7CiAKIAlzdGF0ZS0+cmJibV9zdGF0dXMgPSBncHVf cmVhZChncHUsIFJFR19BNFhYX1JCQk1fU1RBVFVTKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21zbS9hZHJlbm8vYTV4eF9ncHUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5v L2E1eHhfZ3B1LmMKaW5kZXggMTYwNzRmYTZiZjFlLi5iZDg0ZjcxZDI3ZDggMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9hZHJlbm8vYTV4eF9ncHUuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgPGxp bnV4L3NvYy9xY29tL21kdF9sb2FkZXIuaD4KICNpbmNsdWRlIDxsaW51eC9wbV9vcHAuaD4KICNp bmNsdWRlIDxsaW51eC9udm1lbS1jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5o PgogI2luY2x1ZGUgIm1zbV9nZW0uaCIKICNpbmNsdWRlICJtc21fbW11LmgiCiAjaW5jbHVkZSAi YTV4eF9ncHUuaCIKQEAgLTExMjMsOCArMTEyNCw5IEBAIHN0YXRpYyBjb25zdCB1MzIgYTV4eF9y ZWdpc3RlcnNbXSA9IHsKIAkweEU4MDAsIDB4RTgwNiwgMHhFODEwLCAweEU4OUEsIDB4RThBMCwg MHhFOEE0LCAweEU4QUEsIDB4RThFQiwKIAkweEU5MDAsIDB4RTkwNSwgMHhFQjgwLCAweEVCOEYs IDB4RUJCMCwgMHhFQkIwLCAweEVDMDAsIDB4RUMwNSwKIAkweEVDMDgsIDB4RUNFOSwgMHhFQ0Yw LCAweEVDRjAsIDB4RUE4MCwgMHhFQTgwLCAweEVBODIsIDB4RUFBMywKLQkweEVBQTUsIDB4RUFD MiwgMHhBODAwLCAweEE4RkYsIDB4QUM2MCwgMHhBQzYwLCAweEIwMDAsIDB4Qjk3RiwKLQkweEI5 QTAsIDB4QjlCRiwgfjAKKwkweEVBQTUsIDB4RUFDMiwgMHhBODAwLCAweEE4MDAsIDB4QTgyMCwg MHhBODI4LCAweEE4NDAsIDB4QTg3RCwKKwkwWEE4ODAsIDB4QTg4RCwgMHhBODkwLCAweEE4QTMs IDB4QThEMCwgMHhBOEQ4LCAweEE4RTAsIDB4QThGNSwKKwkweEFDNjAsIDB4QUM2MCwgfjAsCiB9 OwogCiBzdGF0aWMgdm9pZCBhNXh4X2R1bXAoc3RydWN0IG1zbV9ncHUgKmdwdSkKQEAgLTExOTUs MjUgKzExOTcsMjMzIEBAIHN0YXRpYyBpbnQgYTV4eF9nZXRfdGltZXN0YW1wKHN0cnVjdCBtc21f Z3B1ICpncHUsIHVpbnQ2NF90ICp2YWx1ZSkKIAlyZXR1cm4gMDsKIH0KIAorc3RydWN0IGE1eHhf Y3Jhc2hkdW1wZXIgeworCXZvaWQgKnB0cjsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmJvOwor CXU2NCBpb3ZhOworfTsKKworc3RydWN0IGE1eHhfZ3B1X3N0YXRlIHsKKwlzdHJ1Y3QgbXNtX2dw dV9zdGF0ZSBiYXNlOworCXUzMiAqaGxzcXJlZ3M7Cit9OworCisjZGVmaW5lIGdwdV9wb2xsX3Rp bWVvdXQoZ3B1LCBhZGRyLCB2YWwsIGNvbmQsIGludGVydmFsLCB0aW1lb3V0KSBcCisJcmVhZGxf cG9sbF90aW1lb3V0KChncHUpLT5tbWlvICsgKChhZGRyKSA8PCAyKSwgdmFsLCBjb25kLCBcCisJ CWludGVydmFsLCB0aW1lb3V0KQorCitzdGF0aWMgaW50IGE1eHhfY3Jhc2hkdW1wZXJfaW5pdChz dHJ1Y3QgbXNtX2dwdSAqZ3B1LAorCQlzdHJ1Y3QgYTV4eF9jcmFzaGR1bXBlciAqZHVtcGVyKQor eworCWR1bXBlci0+cHRyID0gbXNtX2dlbV9rZXJuZWxfbmV3X2xvY2tlZChncHUtPmRldiwKKwkJ U1pfMU0sIE1TTV9CT19VTkNBQ0hFRCwgZ3B1LT5hc3BhY2UsCisJCSZkdW1wZXItPmJvLCAmZHVt cGVyLT5pb3ZhKTsKKworCWlmIChJU19FUlIoZHVtcGVyLT5wdHIpKQorCQlyZXR1cm4gUFRSX0VS UihkdW1wZXItPnB0cik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgYTV4eF9jcmFz aGR1bXBlcl9mcmVlKHN0cnVjdCBtc21fZ3B1ICpncHUsCisJCXN0cnVjdCBhNXh4X2NyYXNoZHVt cGVyICpkdW1wZXIpCit7CisJbXNtX2dlbV9wdXRfaW92YShkdW1wZXItPmJvLCBncHUtPmFzcGFj ZSk7CisJbXNtX2dlbV9wdXRfdmFkZHIoZHVtcGVyLT5ibyk7CisKKwlkcm1fZ2VtX29iamVjdF91 bnJlZmVyZW5jZShkdW1wZXItPmJvKTsKK30KKworc3RhdGljIGludCBhNXh4X2NyYXNoZHVtcGVy X3J1bihzdHJ1Y3QgbXNtX2dwdSAqZ3B1LAorCQlzdHJ1Y3QgYTV4eF9jcmFzaGR1bXBlciAqZHVt cGVyKQoreworCXUzMiB2YWw7CisKKwlpZiAoSVNfRVJSX09SX05VTEwoZHVtcGVyLT5wdHIpKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWdwdV93cml0ZTY0KGdwdSwgUkVHX0E1WFhfQ1BfQ1JBU0hf U0NSSVBUX0JBU0VfTE8sCisJCVJFR19BNVhYX0NQX0NSQVNIX1NDUklQVF9CQVNFX0hJLCBkdW1w ZXItPmlvdmEpOworCisJZ3B1X3dyaXRlKGdwdSwgUkVHX0E1WFhfQ1BfQ1JBU0hfRFVNUF9DTlRM LCAxKTsKKworCXJldHVybiBncHVfcG9sbF90aW1lb3V0KGdwdSwgUkVHX0E1WFhfQ1BfQ1JBU0hf RFVNUF9DTlRMLCB2YWwsCisJCXZhbCAmIDB4MDQsIDEwMCwgMTAwMDApOworfQorCisvKgorICog VGhlc2UgYXJlIGEgbGlzdCBvZiB0aGUgcmVnaXN0ZXJzIHRoYXQgbmVlZCB0byBiZSByZWFkIHRo cm91Z2ggdGhlIEhMU1EKKyAqIGFwZXJ0dXJlIHRocm91Z2ggdGhlIGNyYXNoZHVtcGVyLiAgVGhl c2UgYXJlIG5vdCBub21pbmFsbHkgYWNjZXNzaWJsZSBmcm9tCisgKiB0aGUgQ1BVIG9uIGEgc2Vj dXJlIHBsYXRmb3JtLgorICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHsKKwl1MzIgdHlwZTsKKwl1 MzIgcmVnb2Zmc2V0OworCXUzMiBjb3VudDsKK30gYTV4eF9obHNxX2FwZXJ0dXJlX3JlZ3NbXSA9 IHsKKwl7IDB4MzUsIDB4ZTAwLCAweDMyIH0sICAgLyogSFNMUSBub24tY29udGV4dCAqLworCXsg MHgzMSwgMHgyMDgwLCAweDEgfSwgICAvKiBITFNRIDJEIGNvbnRleHQgMCAqLworCXsgMHgzMywg MHgyNDgwLCAweDEgfSwgICAvKiBITFNRIDJEIGNvbnRleHQgMSAqLworCXsgMHgzMiwgMHhlNzgw LCAweDYyIH0sICAvKiBITFNRIDNEIGNvbnRleHQgMCAqLworCXsgMHgzNCwgMHhlZjgwLCAweDYy IH0sICAvKiBITFNRIDNEIGNvbnRleHQgMSAqLworCXsgMHgzZiwgMHgwZWMwLCAweDQwIH0sICAv KiBTUCBub24tY29udGV4dCAqLworCXsgMHgzZCwgMHgyMDQwLCAweDEgfSwgICAvKiBTUCAyRCBj b250ZXh0IDAgKi8KKwl7IDB4M2IsIDB4MjQ0MCwgMHgxIH0sICAgLyogU1AgMkQgY29udGV4dCAx ICovCisJeyAweDNlLCAweGU1ODAsIDB4MTcwIH0sIC8qIFNQIDNEIGNvbnRleHQgMCAqLworCXsg MHgzYywgMHhlZDgwLCAweDE3MCB9LCAvKiBTUCAzRCBjb250ZXh0IDEgKi8KKwl7IDB4M2EsIDB4 MGYwMCwgMHgxYyB9LCAgLyogVFAgbm9uLWNvbnRleHQgKi8KKwl7IDB4MzgsIDB4MjAwMCwgMHhh IH0sICAgLyogVFAgMkQgY29udGV4dCAwICovCisJeyAweDM2LCAweDI0MDAsIDB4YSB9LCAgIC8q IFRQIDJEIGNvbnRleHQgMSAqLworCXsgMHgzOSwgMHhlNzAwLCAweDgwIH0sICAvKiBUUCAzRCBj b250ZXh0IDAgKi8KKwl7IDB4MzcsIDB4ZWYwMCwgMHg4MCB9LCAgLyogVFAgM0QgY29udGV4dCAx ICovCit9OworCitzdGF0aWMgdm9pZCBhNXh4X2dwdV9zdGF0ZV9nZXRfaGxzcV9yZWdzKHN0cnVj dCBtc21fZ3B1ICpncHUsCisJCXN0cnVjdCBhNXh4X2dwdV9zdGF0ZSAqYTV4eF9zdGF0ZSkKK3sK KwlzdHJ1Y3QgYTV4eF9jcmFzaGR1bXBlciBkdW1wZXIgPSB7IDAgfTsKKwl1MzIgb2Zmc2V0LCBj b3VudCA9IDA7CisJdTY0ICpwdHI7CisJaW50IGk7CisKKwlpZiAoYTV4eF9jcmFzaGR1bXBlcl9p bml0KGdwdSwgJmR1bXBlcikpCisJCXJldHVybjsKKworCS8qIFRoZSBzY3JpcHQgd2lsbCBiZSB3 cml0dGVuIGF0IG9mZnNldCAwICovCisJcHRyID0gZHVtcGVyLnB0cjsKKworCS8qIFN0YXJ0IHdy aXRpbmcgdGhlIGRhdGEgYXQgb2Zmc2V0IDI1NmsgKi8KKwlvZmZzZXQgPSBkdW1wZXIuaW92YSAr ICgyNTYgKiBTWl8xSyk7CisKKwkvKiBDb3VudCBob3cgbWFueSBhZGRpdGlvbmFsIHJlZ2lzdGVy cyB0byBnZXQgZnJvbSB0aGUgSExTUSBhcGVydHVyZSAqLworCWZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKGE1eHhfaGxzcV9hcGVydHVyZV9yZWdzKTsgaSsrKQorCQljb3VudCArPSBhNXh4X2hs c3FfYXBlcnR1cmVfcmVnc1tpXS5jb3VudDsKKworCWE1eHhfc3RhdGUtPmhsc3FyZWdzID0ga2Nh bGxvYyhjb3VudCwgc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpOworCWlmICghYTV4eF9zdGF0ZS0+ aGxzcXJlZ3MpCisJCXJldHVybjsKKworCS8qIEJ1aWxkIHRoZSBjcmFzaGR1bXAgc2NyaXB0ICov CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYTV4eF9obHNxX2FwZXJ0dXJlX3JlZ3MpOyBp KyspIHsKKwkJdTMyIHR5cGUgPSBhNXh4X2hsc3FfYXBlcnR1cmVfcmVnc1tpXS50eXBlOworCQl1 MzIgYyA9IGE1eHhfaGxzcV9hcGVydHVyZV9yZWdzW2ldLmNvdW50OworCisJCS8qIFdyaXRlIHRo ZSByZWdpc3RlciB0byBzZWxlY3QgdGhlIGRlc2lyZWQgYmFuayAqLworCQkqcHRyKysgPSAoKHU2 NCkgdHlwZSA8PCA4KTsKKwkJKnB0cisrID0gKCgodTY0KSBSRUdfQTVYWF9ITFNRX0RCR19SRUFE X1NFTCkgPDwgNDQpIHwKKwkJCSgxIDw8IDIxKSB8IDE7CisKKwkJKnB0cisrID0gb2Zmc2V0Owor CQkqcHRyKysgPSAoKCh1NjQpIFJFR19BNVhYX0hMU1FfREJHX0FIQl9SRUFEX0FQRVJUVVJFKSA8 PCA0NCkKKwkJCXwgYzsKKworCQlvZmZzZXQgKz0gYyAqIHNpemVvZih1MzIpOworCX0KKworCS8q IFdyaXRlIHR3byB6ZXJvcyB0byBjbG9zZSBvZmYgdGhlIHNjcmlwdCAqLworCSpwdHIrKyA9IDA7 CisJKnB0cisrID0gMDsKKworCWlmIChhNXh4X2NyYXNoZHVtcGVyX3J1bihncHUsICZkdW1wZXIp KSB7CisJCWtmcmVlKGE1eHhfc3RhdGUtPmhsc3FyZWdzKTsKKwkJYTV4eF9jcmFzaGR1bXBlcl9m cmVlKGdwdSwgJmR1bXBlcik7CisJCXJldHVybjsKKwl9CisKKwkvKiBDb3B5IHRoZSBkYXRhIGZy b20gdGhlIGNyYXNoZHVtcGVyIHRvIHRoZSBzdGF0ZSAqLworCW1lbWNweShhNXh4X3N0YXRlLT5o bHNxcmVncywgZHVtcGVyLnB0ciArICgyNTYgKiBTWl8xSyksCisJCWNvdW50ICogc2l6ZW9mKHUz MikpOworCisJYTV4eF9jcmFzaGR1bXBlcl9mcmVlKGdwdSwgJmR1bXBlcik7Cit9CisKIHN0YXRp YyBzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqYTV4eF9ncHVfc3RhdGVfZ2V0KHN0cnVjdCBtc21fZ3B1 ICpncHUpCiB7Ci0Jc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlOworCXN0cnVjdCBhNXh4X2dw dV9zdGF0ZSAqYTV4eF9zdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCphNXh4X3N0YXRlKSwKKwkJCUdG UF9LRVJORUwpOwogCi0JLyoKLQkgKiBUZW1wb3JhcmlseSBkaXNhYmxlIGhhcmR3YXJlIGNsb2Nr IGdhdGluZyBiZWZvcmUgZ29pbmcgaW50bwotCSAqIGFkcmVub19zaG93IHRvIGF2b2lkIGlzc3Vl cyB3aGlsZSByZWFkaW5nIHRoZSByZWdpc3RlcnMKLQkgKi8KKwlpZiAoIWE1eHhfc3RhdGUpCisJ CXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJLyogVGVtcG9yYXJpbHkgZGlzYWJsZSBoYXJk d2FyZSBjbG9jayBnYXRpbmcgYmVmb3JlIHJlYWRpbmcgdGhlIGh3ICovCiAJYTV4eF9zZXRfaHdj ZyhncHUsIGZhbHNlKTsKIAotCXN0YXRlID0gYWRyZW5vX2dwdV9zdGF0ZV9nZXQoZ3B1KTsKKwkv KiBGaXJzdCBnZXQgdGhlIGdlbmVyaWMgc3RhdGUgZnJvbSB0aGUgYWRyZW5vIGNvcmUgKi8KKwlh ZHJlbm9fZ3B1X3N0YXRlX2dldChncHUsICYoYTV4eF9zdGF0ZS0+YmFzZSkpOworCisJYTV4eF9z dGF0ZS0+YmFzZS5yYmJtX3N0YXR1cyA9IGdwdV9yZWFkKGdwdSwgUkVHX0E1WFhfUkJCTV9TVEFU VVMpOwogCi0JaWYgKCFJU19FUlIoc3RhdGUpKQotCQlzdGF0ZS0+cmJibV9zdGF0dXMgPSBncHVf cmVhZChncHUsIFJFR19BNVhYX1JCQk1fU1RBVFVTKTsKKwkvKiBHZXQgdGhlIEhMU1EgcmVncyB3 aXRoIHRoZSBoZWxwIG9mIHRoZSBjcmFzaGR1bXBlciAqLworCWE1eHhfZ3B1X3N0YXRlX2dldF9o bHNxX3JlZ3MoZ3B1LCBhNXh4X3N0YXRlKTsKIAogCWE1eHhfc2V0X2h3Y2coZ3B1LCB0cnVlKTsK IAotCXJldHVybiBzdGF0ZTsKKwlyZXR1cm4gJmE1eHhfc3RhdGUtPmJhc2U7Cit9CisKK3N0YXRp YyB2b2lkIGE1eHhfZ3B1X3N0YXRlX2Rlc3Ryb3koc3RydWN0IGtyZWYgKmtyZWYpCit7CisJc3Ry dWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlID0gY29udGFpbmVyX29mKGtyZWYsCisJCXN0cnVjdCBt c21fZ3B1X3N0YXRlLCByZWYpOworCXN0cnVjdCBhNXh4X2dwdV9zdGF0ZSAqYTV4eF9zdGF0ZSA9 IGNvbnRhaW5lcl9vZihzdGF0ZSwKKwkJc3RydWN0IGE1eHhfZ3B1X3N0YXRlLCBiYXNlKTsKKwor CWtmcmVlKGE1eHhfc3RhdGUtPmhsc3FyZWdzKTsKKworCWFkcmVub19ncHVfc3RhdGVfZGVzdHJv eShzdGF0ZSk7CisJa2ZyZWUoYTV4eF9zdGF0ZSk7Cit9CisKK2ludCBhNXh4X2dwdV9zdGF0ZV9w dXQoc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlKQoreworCWlmIChJU19FUlJfT1JfTlVMTChz dGF0ZSkpCisJCXJldHVybiAxOworCisJcmV0dXJuIGtyZWZfcHV0KCZzdGF0ZS0+cmVmLCBhNXh4 X2dwdV9zdGF0ZV9kZXN0cm95KTsKK30KKworCisjaWYgZGVmaW5lZChDT05GSUdfREVCVUdfRlMp IHx8IGRlZmluZWQoQ09ORklHX0RFVl9DT1JFRFVNUCkKK3ZvaWQgYTV4eF9zaG93KHN0cnVjdCBt c21fZ3B1ICpncHUsIHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSwKKwkJc3RydWN0IGRybV9w cmludGVyICpwKQoreworCWludCBpLCBqOworCXUzMiBwb3MgPSAwOworCXN0cnVjdCBhNXh4X2dw dV9zdGF0ZSAqYTV4eF9zdGF0ZSA9IGNvbnRhaW5lcl9vZihzdGF0ZSwKKwkJc3RydWN0IGE1eHhf Z3B1X3N0YXRlLCBiYXNlKTsKKworCWlmIChJU19FUlJfT1JfTlVMTChzdGF0ZSkpCisJCXJldHVy bjsKKworCWFkcmVub19zaG93KGdwdSwgc3RhdGUsIHApOworCisJLyogRHVtcCB0aGUgYWRkaXRp b25hbCBhNXh4IEhMU1EgcmVnaXN0ZXJzICovCisJaWYgKCFhNXh4X3N0YXRlLT5obHNxcmVncykK KwkJcmV0dXJuOworCisJZHJtX3ByaW50ZihwLCAicmVnaXN0ZXJzLWhsc3E6XG4iKTsKKworCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGE1eHhfaGxzcV9hcGVydHVyZV9yZWdzKTsgaSsrKSB7 CisJCXUzMiBvID0gYTV4eF9obHNxX2FwZXJ0dXJlX3JlZ3NbaV0ucmVnb2Zmc2V0OworCQl1MzIg YyA9IGE1eHhfaGxzcV9hcGVydHVyZV9yZWdzW2ldLmNvdW50OworCisJCWZvciAoaiA9IDA7IGog PCBjOyBqKyssIHBvcysrLCBvKyspIHsKKwkJCS8qCisJCQkgKiBUbyBrZWVwIHRoZSBjcmFzaGR1 bXAgc2ltcGxlIHdlIHB1bGwgdGhlIGVudGlyZSByYW5nZQorCQkJICogZm9yIGVhY2ggcmVnaXN0 ZXIgdHlwZSBidXQgbm90IGFsbCBvZiB0aGUgcmVnaXN0ZXJzCisJCQkgKiBpbiB0aGUgcmFuZ2Ug YXJlIHZhbGlkLiBGb3J0dW5hdGVseSBpbnZhbGlkIHJlZ2lzdGVycworCQkJICogc3RpY2sgb3V0 IGxpa2UgYSBzb3JlIHRodW1iIHdpdGggYSB2YWx1ZSBvZgorCQkJICogMHhkZWFkYmVlZgorCQkJ ICovCisJCQlpZiAoYTV4eF9zdGF0ZS0+aGxzcXJlZ3NbcG9zXSA9PSAweGRlYWRiZWVmKQorCQkJ CWNvbnRpbnVlOworCisJCQlkcm1fcHJpbnRmKHAsICIgIC0geyBvZmZzZXQ6IDB4JTA0eCwgdmFs dWU6IDB4JTA4eCB9XG4iLAorCQkJCW8gPDwgMiwgYTV4eF9zdGF0ZS0+aGxzcXJlZ3NbcG9zXSk7 CisJCX0KKwl9CiB9CisjZW5kaWYKIAogc3RhdGljIHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqYTV4 eF9hY3RpdmVfcmluZyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogewpAQCAtMTI0NCwxNCArMTQ1NCwx NCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFkcmVub19ncHVfZnVuY3MgZnVuY3MgPSB7CiAJCS5p cnEgPSBhNXh4X2lycSwKIAkJLmRlc3Ryb3kgPSBhNXh4X2Rlc3Ryb3ksCiAjaWYgZGVmaW5lZChD T05GSUdfREVCVUdfRlMpIHx8IGRlZmluZWQoQ09ORklHX0RFVl9DT1JFRFVNUCkKLQkJLnNob3cg PSBhZHJlbm9fc2hvdywKKwkJLnNob3cgPSBhNXh4X3Nob3csCiAjZW5kaWYKICNpZiBkZWZpbmVk KENPTkZJR19ERUJVR19GUykKIAkJLmRlYnVnZnNfaW5pdCA9IGE1eHhfZGVidWdmc19pbml0LAog I2VuZGlmCiAJCS5ncHVfYnVzeSA9IGE1eHhfZ3B1X2J1c3ksCiAJCS5ncHVfc3RhdGVfZ2V0ID0g YTV4eF9ncHVfc3RhdGVfZ2V0LAotCQkuZ3B1X3N0YXRlX3B1dCA9IGFkcmVub19ncHVfc3RhdGVf cHV0LAorCQkuZ3B1X3N0YXRlX3B1dCA9IGE1eHhfZ3B1X3N0YXRlX3B1dCwKIAl9LAogCS5nZXRf dGltZXN0YW1wID0gYTV4eF9nZXRfdGltZXN0YW1wLAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRy ZW5vL2FkcmVub19ncHUuYwppbmRleCA5MmFjY2UzNzcyNTMuLmJlODFmZTFmNmEzNSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuYwpAQCAtMzY5LDE2ICszNjksMTEgQEAg Ym9vbCBhZHJlbm9faWRsZShzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX3JpbmdidWZm ZXIgKnJpbmcpCiAJcmV0dXJuIGZhbHNlOwogfQogCi1zdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqYWRy ZW5vX2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1zbV9ncHUgKmdwdSkKK2ludCBhZHJlbm9fZ3B1X3N0 YXRlX2dldChzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUp CiB7CiAJc3RydWN0IGFkcmVub19ncHUgKmFkcmVub19ncHUgPSB0b19hZHJlbm9fZ3B1KGdwdSk7 Ci0Jc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlOwogCWludCBpLCBjb3VudCA9IDA7CiAKLQlz dGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCpzdGF0ZSksIEdGUF9LRVJORUwpOwotCWlmICghc3RhdGUp Ci0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwotCiAJa3JlZl9pbml0KCZzdGF0ZS0+cmVmKTsK IAogCWRvX2dldHRpbWVvZmRheSgmc3RhdGUtPnRpbWUpOwpAQCAtNDMzLDE0ICs0MjgsMTIgQEAg c3RydWN0IG1zbV9ncHVfc3RhdGUgKmFkcmVub19ncHVfc3RhdGVfZ2V0KHN0cnVjdCBtc21fZ3B1 ICpncHUpCiAJCXN0YXRlLT5ucl9yZWdpc3RlcnMgPSBjb3VudDsKIAl9CiAKLQlyZXR1cm4gc3Rh dGU7CisJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGFkcmVub19ncHVfc3RhdGVfZGVzdHJv eShzdHJ1Y3Qga3JlZiAqa3JlZikKK3ZvaWQgYWRyZW5vX2dwdV9zdGF0ZV9kZXN0cm95KHN0cnVj dCBtc21fZ3B1X3N0YXRlICpzdGF0ZSkKIHsKIAlpbnQgaTsKLQlzdHJ1Y3QgbXNtX2dwdV9zdGF0 ZSAqc3RhdGUgPSBjb250YWluZXJfb2Yoa3JlZiwKLQkJc3RydWN0IG1zbV9ncHVfc3RhdGUsIHJl Zik7CiAKIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzdGF0ZS0+cmluZyk7IGkrKykKIAkJ a2ZyZWUoc3RhdGUtPnJpbmdbaV0uZGF0YSk7CkBAIC00NDgsNiArNDQxLDE0IEBAIHN0YXRpYyB2 b2lkIGFkcmVub19ncHVfc3RhdGVfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZikKIAlrZnJlZShz dGF0ZS0+Y29tbSk7CiAJa2ZyZWUoc3RhdGUtPmNtZCk7CiAJa2ZyZWUoc3RhdGUtPnJlZ2lzdGVy cyk7Cit9CisKK3N0YXRpYyB2b2lkIGFkcmVub19ncHVfc3RhdGVfa3JlZl9kZXN0cm95KHN0cnVj dCBrcmVmICprcmVmKQoreworCXN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSA9IGNvbnRhaW5l cl9vZihrcmVmLAorCQlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSwgcmVmKTsKKworCWFkcmVub19ncHVf c3RhdGVfZGVzdHJveShzdGF0ZSk7CiAJa2ZyZWUoc3RhdGUpOwogfQogCkBAIC00NTYsNyArNDU3 LDcgQEAgaW50IGFkcmVub19ncHVfc3RhdGVfcHV0KHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0 ZSkKIAlpZiAoSVNfRVJSX09SX05VTEwoc3RhdGUpKQogCQlyZXR1cm4gMTsKIAotCXJldHVybiBr cmVmX3B1dCgmc3RhdGUtPnJlZiwgYWRyZW5vX2dwdV9zdGF0ZV9kZXN0cm95KTsKKwlyZXR1cm4g a3JlZl9wdXQoJnN0YXRlLT5yZWYsIGFkcmVub19ncHVfc3RhdGVfa3JlZl9kZXN0cm95KTsKIH0K IAogI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKSB8fCBkZWZpbmVkKENPTkZJR19ERVZfQ09S RURVTVApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1 LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmgKaW5kZXggNGE4Njhh YWYxYTcwLi40NDA2Nzc2NTk3ZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRy ZW5vL2FkcmVub19ncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9f Z3B1LmgKQEAgLTIzMCw3ICsyMzAsOSBAQCBpbnQgYWRyZW5vX2dwdV9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkcm0sIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiB2b2lkIGFkcmVub19n cHVfY2xlYW51cChzdHJ1Y3QgYWRyZW5vX2dwdSAqZ3B1KTsKIAogCi1zdHJ1Y3QgbXNtX2dwdV9z dGF0ZSAqYWRyZW5vX2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1zbV9ncHUgKmdwdSk7Cit2b2lkIGFk cmVub19ncHVfc3RhdGVfZGVzdHJveShzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUpOworCitp bnQgYWRyZW5vX2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9n cHVfc3RhdGUgKnN0YXRlKTsKIGludCBhZHJlbm9fZ3B1X3N0YXRlX3B1dChzdHJ1Y3QgbXNtX2dw dV9zdGF0ZSAqc3RhdGUpOwogCiAvKiByaW5nYnVmZmVyIGhlbHBlcnMgKHRoZSBwYXJ0cyB0aGF0 IGFyZSBhZHJlbm8gc3BlY2lmaWMpICovCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRy ZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=