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: Tue, 24 Jul 2018 10:33:30 -0600 Message-ID: <20180724163331.18250-13-jcrouse@codeaurora.org> References: <20180724163331.18250-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180724163331.18250-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 dXJvcmEub3JnPgotLS0KIERvY3VtZW50YXRpb24vZ3B1L21zbS1jcmFzaC1kdW1wLnJzdCAgICB8 ICAgNCArCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hM3h4X2dwdS5jICAgfCAgIDggKy0K IGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E0eHhfZ3B1LmMgICB8ICAgOCArLQogZHJpdmVy cy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9ncHUuYyAgIHwgMjM2ICsrKysrKysrKysrKysrKysr KysrKystLQogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jIHwgIDIzICst LQogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oIHwgICA0ICstCiA2IGZp bGVzIGNoYW5nZWQsIDI1MiBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9tc20tY3Jhc2gtZHVtcC5yc3QgYi9Eb2N1bWVudGF0aW9u L2dwdS9tc20tY3Jhc2gtZHVtcC5yc3QKaW5kZXggMzVlODcwMDRlMDA2Li43OTQzZjQzZjcwZDYg MTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L21zbS1jcmFzaC1kdW1wLnJzdAorKysgYi9E b2N1bWVudGF0aW9uL2dwdS9tc20tY3Jhc2gtZHVtcC5yc3QKQEAgLTc2LDMgKzc2LDcgQEAgcmVn aXN0ZXJzCiAKIAl2YWx1ZQogCQlIZXhhZGVjaW1hbCB2YWx1ZSBvZiB0aGUgcmVnaXN0ZXIuCisK K3JlZ2lzdGVycy1obHNxCisJCSg1eHggb25seSkgUmVnaXN0ZXIgdmFsdWVzIGZyb20gdGhlIEhM U1EgYXBlcnR1cmUuCisJCVNhbWUgZm9ybWF0IGFzIHRoZSByZWdpc3RlciBzZWN0aW9uLgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTN4eF9ncHUuYyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vYWRyZW5vL2EzeHhfZ3B1LmMKaW5kZXggZmM1MDJlNDEyMTMyLi42NjljMmQ0 YjA3MGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2EzeHhfZ3B1LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTN4eF9ncHUuYwpAQCAtNDIxLDEwICs0 MjEsMTIgQEAgc3RhdGljIHZvaWQgYTN4eF9kdW1wKHN0cnVjdCBtc21fZ3B1ICpncHUpCiAKIHN0 YXRpYyBzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqYTN4eF9ncHVfc3RhdGVfZ2V0KHN0cnVjdCBtc21f Z3B1ICpncHUpCiB7Ci0Jc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlID0gYWRyZW5vX2dwdV9z dGF0ZV9nZXQoZ3B1KTsKKwlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUgPSBremFsbG9jKHNp emVvZigqc3RhdGUpLCBHRlBfS0VSTkVMKTsKIAotCWlmIChJU19FUlIoc3RhdGUpKQotCQlyZXR1 cm4gc3RhdGU7CisJaWYgKCFzdGF0ZSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwlh ZHJlbm9fZ3B1X3N0YXRlX2dldChncHUsIHN0YXRlKTsKIAogCXN0YXRlLT5yYmJtX3N0YXR1cyA9 IGdwdV9yZWFkKGdwdSwgUkVHX0EzWFhfUkJCTV9TVEFUVVMpOwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNHh4X2dwdS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9h ZHJlbm8vYTR4eF9ncHUuYwppbmRleCA4MTI5Y2YwMzdkYjEuLjdjNGU2ZGMxZWQ1OSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTR4eF9ncHUuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2FkcmVuby9hNHh4X2dwdS5jCkBAIC00NTcsMTAgKzQ1NywxMiBAQCBzdGF0 aWMgY29uc3QgdW5zaWduZWQgaW50IGE0eHhfcmVnaXN0ZXJzW10gPSB7CiAKIHN0YXRpYyBzdHJ1 Y3QgbXNtX2dwdV9zdGF0ZSAqYTR4eF9ncHVfc3RhdGVfZ2V0KHN0cnVjdCBtc21fZ3B1ICpncHUp CiB7Ci0Jc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlID0gYWRyZW5vX2dwdV9zdGF0ZV9nZXQo Z3B1KTsKKwlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUgPSBremFsbG9jKHNpemVvZigqc3Rh dGUpLCBHRlBfS0VSTkVMKTsKIAotCWlmIChJU19FUlIoc3RhdGUpKQotCQlyZXR1cm4gc3RhdGU7 CisJaWYgKCFzdGF0ZSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwlhZHJlbm9fZ3B1 X3N0YXRlX2dldChncHUsIHN0YXRlKTsKIAogCXN0YXRlLT5yYmJtX3N0YXR1cyA9IGdwdV9yZWFk KGdwdSwgUkVHX0E0WFhfUkJCTV9TVEFUVVMpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2FkcmVuby9hNXh4X2dwdS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4 eF9ncHUuYwppbmRleCAxNjA3NGZhNmJmMWUuLmJkODRmNzFkMjdkOCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9ncHUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL2FkcmVuby9hNXh4X2dwdS5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSA8bGludXgv c29jL3Fjb20vbWR0X2xvYWRlci5oPgogI2luY2x1ZGUgPGxpbnV4L3BtX29wcC5oPgogI2luY2x1 ZGUgPGxpbnV4L252bWVtLWNvbnN1bWVyLmg+CisjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+CiAj aW5jbHVkZSAibXNtX2dlbS5oIgogI2luY2x1ZGUgIm1zbV9tbXUuaCIKICNpbmNsdWRlICJhNXh4 X2dwdS5oIgpAQCAtMTEyMyw4ICsxMTI0LDkgQEAgc3RhdGljIGNvbnN0IHUzMiBhNXh4X3JlZ2lz dGVyc1tdID0gewogCTB4RTgwMCwgMHhFODA2LCAweEU4MTAsIDB4RTg5QSwgMHhFOEEwLCAweEU4 QTQsIDB4RThBQSwgMHhFOEVCLAogCTB4RTkwMCwgMHhFOTA1LCAweEVCODAsIDB4RUI4RiwgMHhF QkIwLCAweEVCQjAsIDB4RUMwMCwgMHhFQzA1LAogCTB4RUMwOCwgMHhFQ0U5LCAweEVDRjAsIDB4 RUNGMCwgMHhFQTgwLCAweEVBODAsIDB4RUE4MiwgMHhFQUEzLAotCTB4RUFBNSwgMHhFQUMyLCAw eEE4MDAsIDB4QThGRiwgMHhBQzYwLCAweEFDNjAsIDB4QjAwMCwgMHhCOTdGLAotCTB4QjlBMCwg MHhCOUJGLCB+MAorCTB4RUFBNSwgMHhFQUMyLCAweEE4MDAsIDB4QTgwMCwgMHhBODIwLCAweEE4 MjgsIDB4QTg0MCwgMHhBODdELAorCTBYQTg4MCwgMHhBODhELCAweEE4OTAsIDB4QThBMywgMHhB OEQwLCAweEE4RDgsIDB4QThFMCwgMHhBOEY1LAorCTB4QUM2MCwgMHhBQzYwLCB+MCwKIH07CiAK IHN0YXRpYyB2b2lkIGE1eHhfZHVtcChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQpAQCAtMTE5NSwyNSAr MTE5NywyMzMgQEAgc3RhdGljIGludCBhNXh4X2dldF90aW1lc3RhbXAoc3RydWN0IG1zbV9ncHUg KmdwdSwgdWludDY0X3QgKnZhbHVlKQogCXJldHVybiAwOwogfQogCitzdHJ1Y3QgYTV4eF9jcmFz aGR1bXBlciB7CisJdm9pZCAqcHRyOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqYm87CisJdTY0 IGlvdmE7Cit9OworCitzdHJ1Y3QgYTV4eF9ncHVfc3RhdGUgeworCXN0cnVjdCBtc21fZ3B1X3N0 YXRlIGJhc2U7CisJdTMyICpobHNxcmVnczsKK307CisKKyNkZWZpbmUgZ3B1X3BvbGxfdGltZW91 dChncHUsIGFkZHIsIHZhbCwgY29uZCwgaW50ZXJ2YWwsIHRpbWVvdXQpIFwKKwlyZWFkbF9wb2xs X3RpbWVvdXQoKGdwdSktPm1taW8gKyAoKGFkZHIpIDw8IDIpLCB2YWwsIGNvbmQsIFwKKwkJaW50 ZXJ2YWwsIHRpbWVvdXQpCisKK3N0YXRpYyBpbnQgYTV4eF9jcmFzaGR1bXBlcl9pbml0KHN0cnVj dCBtc21fZ3B1ICpncHUsCisJCXN0cnVjdCBhNXh4X2NyYXNoZHVtcGVyICpkdW1wZXIpCit7CisJ ZHVtcGVyLT5wdHIgPSBtc21fZ2VtX2tlcm5lbF9uZXdfbG9ja2VkKGdwdS0+ZGV2LAorCQlTWl8x TSwgTVNNX0JPX1VOQ0FDSEVELCBncHUtPmFzcGFjZSwKKwkJJmR1bXBlci0+Ym8sICZkdW1wZXIt PmlvdmEpOworCisJaWYgKElTX0VSUihkdW1wZXItPnB0cikpCisJCXJldHVybiBQVFJfRVJSKGR1 bXBlci0+cHRyKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBhNXh4X2NyYXNoZHVt cGVyX2ZyZWUoc3RydWN0IG1zbV9ncHUgKmdwdSwKKwkJc3RydWN0IGE1eHhfY3Jhc2hkdW1wZXIg KmR1bXBlcikKK3sKKwltc21fZ2VtX3B1dF9pb3ZhKGR1bXBlci0+Ym8sIGdwdS0+YXNwYWNlKTsK Kwltc21fZ2VtX3B1dF92YWRkcihkdW1wZXItPmJvKTsKKworCWRybV9nZW1fb2JqZWN0X3VucmVm ZXJlbmNlKGR1bXBlci0+Ym8pOworfQorCitzdGF0aWMgaW50IGE1eHhfY3Jhc2hkdW1wZXJfcnVu KHN0cnVjdCBtc21fZ3B1ICpncHUsCisJCXN0cnVjdCBhNXh4X2NyYXNoZHVtcGVyICpkdW1wZXIp Cit7CisJdTMyIHZhbDsKKworCWlmIChJU19FUlJfT1JfTlVMTChkdW1wZXItPnB0cikpCisJCXJl dHVybiAtRUlOVkFMOworCisJZ3B1X3dyaXRlNjQoZ3B1LCBSRUdfQTVYWF9DUF9DUkFTSF9TQ1JJ UFRfQkFTRV9MTywKKwkJUkVHX0E1WFhfQ1BfQ1JBU0hfU0NSSVBUX0JBU0VfSEksIGR1bXBlci0+ aW92YSk7CisKKwlncHVfd3JpdGUoZ3B1LCBSRUdfQTVYWF9DUF9DUkFTSF9EVU1QX0NOVEwsIDEp OworCisJcmV0dXJuIGdwdV9wb2xsX3RpbWVvdXQoZ3B1LCBSRUdfQTVYWF9DUF9DUkFTSF9EVU1Q X0NOVEwsIHZhbCwKKwkJdmFsICYgMHgwNCwgMTAwLCAxMDAwMCk7Cit9CisKKy8qCisgKiBUaGVz ZSBhcmUgYSBsaXN0IG9mIHRoZSByZWdpc3RlcnMgdGhhdCBuZWVkIHRvIGJlIHJlYWQgdGhyb3Vn aCB0aGUgSExTUQorICogYXBlcnR1cmUgdGhyb3VnaCB0aGUgY3Jhc2hkdW1wZXIuICBUaGVzZSBh cmUgbm90IG5vbWluYWxseSBhY2Nlc3NpYmxlIGZyb20KKyAqIHRoZSBDUFUgb24gYSBzZWN1cmUg cGxhdGZvcm0uCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworCXUzMiB0eXBlOworCXUzMiBy ZWdvZmZzZXQ7CisJdTMyIGNvdW50OworfSBhNXh4X2hsc3FfYXBlcnR1cmVfcmVnc1tdID0gewor CXsgMHgzNSwgMHhlMDAsIDB4MzIgfSwgICAvKiBIU0xRIG5vbi1jb250ZXh0ICovCisJeyAweDMx LCAweDIwODAsIDB4MSB9LCAgIC8qIEhMU1EgMkQgY29udGV4dCAwICovCisJeyAweDMzLCAweDI0 ODAsIDB4MSB9LCAgIC8qIEhMU1EgMkQgY29udGV4dCAxICovCisJeyAweDMyLCAweGU3ODAsIDB4 NjIgfSwgIC8qIEhMU1EgM0QgY29udGV4dCAwICovCisJeyAweDM0LCAweGVmODAsIDB4NjIgfSwg IC8qIEhMU1EgM0QgY29udGV4dCAxICovCisJeyAweDNmLCAweDBlYzAsIDB4NDAgfSwgIC8qIFNQ IG5vbi1jb250ZXh0ICovCisJeyAweDNkLCAweDIwNDAsIDB4MSB9LCAgIC8qIFNQIDJEIGNvbnRl eHQgMCAqLworCXsgMHgzYiwgMHgyNDQwLCAweDEgfSwgICAvKiBTUCAyRCBjb250ZXh0IDEgKi8K Kwl7IDB4M2UsIDB4ZTU4MCwgMHgxNzAgfSwgLyogU1AgM0QgY29udGV4dCAwICovCisJeyAweDNj LCAweGVkODAsIDB4MTcwIH0sIC8qIFNQIDNEIGNvbnRleHQgMSAqLworCXsgMHgzYSwgMHgwZjAw LCAweDFjIH0sICAvKiBUUCBub24tY29udGV4dCAqLworCXsgMHgzOCwgMHgyMDAwLCAweGEgfSwg ICAvKiBUUCAyRCBjb250ZXh0IDAgKi8KKwl7IDB4MzYsIDB4MjQwMCwgMHhhIH0sICAgLyogVFAg MkQgY29udGV4dCAxICovCisJeyAweDM5LCAweGU3MDAsIDB4ODAgfSwgIC8qIFRQIDNEIGNvbnRl eHQgMCAqLworCXsgMHgzNywgMHhlZjAwLCAweDgwIH0sICAvKiBUUCAzRCBjb250ZXh0IDEgKi8K K307CisKK3N0YXRpYyB2b2lkIGE1eHhfZ3B1X3N0YXRlX2dldF9obHNxX3JlZ3Moc3RydWN0IG1z bV9ncHUgKmdwdSwKKwkJc3RydWN0IGE1eHhfZ3B1X3N0YXRlICphNXh4X3N0YXRlKQoreworCXN0 cnVjdCBhNXh4X2NyYXNoZHVtcGVyIGR1bXBlciA9IHsgMCB9OworCXUzMiBvZmZzZXQsIGNvdW50 ID0gMDsKKwl1NjQgKnB0cjsKKwlpbnQgaTsKKworCWlmIChhNXh4X2NyYXNoZHVtcGVyX2luaXQo Z3B1LCAmZHVtcGVyKSkKKwkJcmV0dXJuOworCisJLyogVGhlIHNjcmlwdCB3aWxsIGJlIHdyaXR0 ZW4gYXQgb2Zmc2V0IDAgKi8KKwlwdHIgPSBkdW1wZXIucHRyOworCisJLyogU3RhcnQgd3JpdGlu ZyB0aGUgZGF0YSBhdCBvZmZzZXQgMjU2ayAqLworCW9mZnNldCA9IGR1bXBlci5pb3ZhICsgKDI1 NiAqIFNaXzFLKTsKKworCS8qIENvdW50IGhvdyBtYW55IGFkZGl0aW9uYWwgcmVnaXN0ZXJzIHRv IGdldCBmcm9tIHRoZSBITFNRIGFwZXJ0dXJlICovCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUoYTV4eF9obHNxX2FwZXJ0dXJlX3JlZ3MpOyBpKyspCisJCWNvdW50ICs9IGE1eHhfaGxzcV9h cGVydHVyZV9yZWdzW2ldLmNvdW50OworCisJYTV4eF9zdGF0ZS0+aGxzcXJlZ3MgPSBrY2FsbG9j KGNvdW50LCBzaXplb2YodTMyKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFhNXh4X3N0YXRlLT5obHNx cmVncykKKwkJcmV0dXJuOworCisJLyogQnVpbGQgdGhlIGNyYXNoZHVtcCBzY3JpcHQgKi8KKwlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhNXh4X2hsc3FfYXBlcnR1cmVfcmVncyk7IGkrKykg eworCQl1MzIgdHlwZSA9IGE1eHhfaGxzcV9hcGVydHVyZV9yZWdzW2ldLnR5cGU7CisJCXUzMiBj ID0gYTV4eF9obHNxX2FwZXJ0dXJlX3JlZ3NbaV0uY291bnQ7CisKKwkJLyogV3JpdGUgdGhlIHJl Z2lzdGVyIHRvIHNlbGVjdCB0aGUgZGVzaXJlZCBiYW5rICovCisJCSpwdHIrKyA9ICgodTY0KSB0 eXBlIDw8IDgpOworCQkqcHRyKysgPSAoKCh1NjQpIFJFR19BNVhYX0hMU1FfREJHX1JFQURfU0VM KSA8PCA0NCkgfAorCQkJKDEgPDwgMjEpIHwgMTsKKworCQkqcHRyKysgPSBvZmZzZXQ7CisJCSpw dHIrKyA9ICgoKHU2NCkgUkVHX0E1WFhfSExTUV9EQkdfQUhCX1JFQURfQVBFUlRVUkUpIDw8IDQ0 KQorCQkJfCBjOworCisJCW9mZnNldCArPSBjICogc2l6ZW9mKHUzMik7CisJfQorCisJLyogV3Jp dGUgdHdvIHplcm9zIHRvIGNsb3NlIG9mZiB0aGUgc2NyaXB0ICovCisJKnB0cisrID0gMDsKKwkq cHRyKysgPSAwOworCisJaWYgKGE1eHhfY3Jhc2hkdW1wZXJfcnVuKGdwdSwgJmR1bXBlcikpIHsK KwkJa2ZyZWUoYTV4eF9zdGF0ZS0+aGxzcXJlZ3MpOworCQlhNXh4X2NyYXNoZHVtcGVyX2ZyZWUo Z3B1LCAmZHVtcGVyKTsKKwkJcmV0dXJuOworCX0KKworCS8qIENvcHkgdGhlIGRhdGEgZnJvbSB0 aGUgY3Jhc2hkdW1wZXIgdG8gdGhlIHN0YXRlICovCisJbWVtY3B5KGE1eHhfc3RhdGUtPmhsc3Fy ZWdzLCBkdW1wZXIucHRyICsgKDI1NiAqIFNaXzFLKSwKKwkJY291bnQgKiBzaXplb2YodTMyKSk7 CisKKwlhNXh4X2NyYXNoZHVtcGVyX2ZyZWUoZ3B1LCAmZHVtcGVyKTsKK30KKwogc3RhdGljIHN0 cnVjdCBtc21fZ3B1X3N0YXRlICphNXh4X2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1zbV9ncHUgKmdw dSkKIHsKLQlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGU7CisJc3RydWN0IGE1eHhfZ3B1X3N0 YXRlICphNXh4X3N0YXRlID0ga3phbGxvYyhzaXplb2YoKmE1eHhfc3RhdGUpLAorCQkJR0ZQX0tF Uk5FTCk7CiAKLQkvKgotCSAqIFRlbXBvcmFyaWx5IGRpc2FibGUgaGFyZHdhcmUgY2xvY2sgZ2F0 aW5nIGJlZm9yZSBnb2luZyBpbnRvCi0JICogYWRyZW5vX3Nob3cgdG8gYXZvaWQgaXNzdWVzIHdo aWxlIHJlYWRpbmcgdGhlIHJlZ2lzdGVycwotCSAqLworCWlmICghYTV4eF9zdGF0ZSkKKwkJcmV0 dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwkvKiBUZW1wb3JhcmlseSBkaXNhYmxlIGhhcmR3YXJl IGNsb2NrIGdhdGluZyBiZWZvcmUgcmVhZGluZyB0aGUgaHcgKi8KIAlhNXh4X3NldF9od2NnKGdw dSwgZmFsc2UpOwogCi0Jc3RhdGUgPSBhZHJlbm9fZ3B1X3N0YXRlX2dldChncHUpOworCS8qIEZp cnN0IGdldCB0aGUgZ2VuZXJpYyBzdGF0ZSBmcm9tIHRoZSBhZHJlbm8gY29yZSAqLworCWFkcmVu b19ncHVfc3RhdGVfZ2V0KGdwdSwgJihhNXh4X3N0YXRlLT5iYXNlKSk7CisKKwlhNXh4X3N0YXRl LT5iYXNlLnJiYm1fc3RhdHVzID0gZ3B1X3JlYWQoZ3B1LCBSRUdfQTVYWF9SQkJNX1NUQVRVUyk7 CiAKLQlpZiAoIUlTX0VSUihzdGF0ZSkpCi0JCXN0YXRlLT5yYmJtX3N0YXR1cyA9IGdwdV9yZWFk KGdwdSwgUkVHX0E1WFhfUkJCTV9TVEFUVVMpOworCS8qIEdldCB0aGUgSExTUSByZWdzIHdpdGgg dGhlIGhlbHAgb2YgdGhlIGNyYXNoZHVtcGVyICovCisJYTV4eF9ncHVfc3RhdGVfZ2V0X2hsc3Ff cmVncyhncHUsIGE1eHhfc3RhdGUpOwogCiAJYTV4eF9zZXRfaHdjZyhncHUsIHRydWUpOwogCi0J cmV0dXJuIHN0YXRlOworCXJldHVybiAmYTV4eF9zdGF0ZS0+YmFzZTsKK30KKworc3RhdGljIHZv aWQgYTV4eF9ncHVfc3RhdGVfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZikKK3sKKwlzdHJ1Y3Qg bXNtX2dwdV9zdGF0ZSAqc3RhdGUgPSBjb250YWluZXJfb2Yoa3JlZiwKKwkJc3RydWN0IG1zbV9n cHVfc3RhdGUsIHJlZik7CisJc3RydWN0IGE1eHhfZ3B1X3N0YXRlICphNXh4X3N0YXRlID0gY29u dGFpbmVyX29mKHN0YXRlLAorCQlzdHJ1Y3QgYTV4eF9ncHVfc3RhdGUsIGJhc2UpOworCisJa2Zy ZWUoYTV4eF9zdGF0ZS0+aGxzcXJlZ3MpOworCisJYWRyZW5vX2dwdV9zdGF0ZV9kZXN0cm95KHN0 YXRlKTsKKwlrZnJlZShhNXh4X3N0YXRlKTsKK30KKworaW50IGE1eHhfZ3B1X3N0YXRlX3B1dChz dHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUpCit7CisJaWYgKElTX0VSUl9PUl9OVUxMKHN0YXRl KSkKKwkJcmV0dXJuIDE7CisKKwlyZXR1cm4ga3JlZl9wdXQoJnN0YXRlLT5yZWYsIGE1eHhfZ3B1 X3N0YXRlX2Rlc3Ryb3kpOworfQorCisKKyNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykgfHwg ZGVmaW5lZChDT05GSUdfREVWX0NPUkVEVU1QKQordm9pZCBhNXh4X3Nob3coc3RydWN0IG1zbV9n cHUgKmdwdSwgc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlLAorCQlzdHJ1Y3QgZHJtX3ByaW50 ZXIgKnApCit7CisJaW50IGksIGo7CisJdTMyIHBvcyA9IDA7CisJc3RydWN0IGE1eHhfZ3B1X3N0 YXRlICphNXh4X3N0YXRlID0gY29udGFpbmVyX29mKHN0YXRlLAorCQlzdHJ1Y3QgYTV4eF9ncHVf c3RhdGUsIGJhc2UpOworCisJaWYgKElTX0VSUl9PUl9OVUxMKHN0YXRlKSkKKwkJcmV0dXJuOwor CisJYWRyZW5vX3Nob3coZ3B1LCBzdGF0ZSwgcCk7CisKKwkvKiBEdW1wIHRoZSBhZGRpdGlvbmFs IGE1eHggSExTUSByZWdpc3RlcnMgKi8KKwlpZiAoIWE1eHhfc3RhdGUtPmhsc3FyZWdzKQorCQly ZXR1cm47CisKKwlkcm1fcHJpbnRmKHAsICJyZWdpc3RlcnMtaGxzcTpcbiIpOworCisJZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUoYTV4eF9obHNxX2FwZXJ0dXJlX3JlZ3MpOyBpKyspIHsKKwkJ dTMyIG8gPSBhNXh4X2hsc3FfYXBlcnR1cmVfcmVnc1tpXS5yZWdvZmZzZXQ7CisJCXUzMiBjID0g YTV4eF9obHNxX2FwZXJ0dXJlX3JlZ3NbaV0uY291bnQ7CisKKwkJZm9yIChqID0gMDsgaiA8IGM7 IGorKywgcG9zKyssIG8rKykgeworCQkJLyoKKwkJCSAqIFRvIGtlZXAgdGhlIGNyYXNoZHVtcCBz aW1wbGUgd2UgcHVsbCB0aGUgZW50aXJlIHJhbmdlCisJCQkgKiBmb3IgZWFjaCByZWdpc3RlciB0 eXBlIGJ1dCBub3QgYWxsIG9mIHRoZSByZWdpc3RlcnMKKwkJCSAqIGluIHRoZSByYW5nZSBhcmUg dmFsaWQuIEZvcnR1bmF0ZWx5IGludmFsaWQgcmVnaXN0ZXJzCisJCQkgKiBzdGljayBvdXQgbGlr ZSBhIHNvcmUgdGh1bWIgd2l0aCBhIHZhbHVlIG9mCisJCQkgKiAweGRlYWRiZWVmCisJCQkgKi8K KwkJCWlmIChhNXh4X3N0YXRlLT5obHNxcmVnc1twb3NdID09IDB4ZGVhZGJlZWYpCisJCQkJY29u dGludWU7CisKKwkJCWRybV9wcmludGYocCwgIiAgLSB7IG9mZnNldDogMHglMDR4LCB2YWx1ZTog MHglMDh4IH1cbiIsCisJCQkJbyA8PCAyLCBhNXh4X3N0YXRlLT5obHNxcmVnc1twb3NdKTsKKwkJ fQorCX0KIH0KKyNlbmRpZgogCiBzdGF0aWMgc3RydWN0IG1zbV9yaW5nYnVmZmVyICphNXh4X2Fj dGl2ZV9yaW5nKHN0cnVjdCBtc21fZ3B1ICpncHUpCiB7CkBAIC0xMjQ0LDE0ICsxNDU0LDE0IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgYWRyZW5vX2dwdV9mdW5jcyBmdW5jcyA9IHsKIAkJLmlycSA9 IGE1eHhfaXJxLAogCQkuZGVzdHJveSA9IGE1eHhfZGVzdHJveSwKICNpZiBkZWZpbmVkKENPTkZJ R19ERUJVR19GUykgfHwgZGVmaW5lZChDT05GSUdfREVWX0NPUkVEVU1QKQotCQkuc2hvdyA9IGFk cmVub19zaG93LAorCQkuc2hvdyA9IGE1eHhfc2hvdywKICNlbmRpZgogI2lmIGRlZmluZWQoQ09O RklHX0RFQlVHX0ZTKQogCQkuZGVidWdmc19pbml0ID0gYTV4eF9kZWJ1Z2ZzX2luaXQsCiAjZW5k aWYKIAkJLmdwdV9idXN5ID0gYTV4eF9ncHVfYnVzeSwKIAkJLmdwdV9zdGF0ZV9nZXQgPSBhNXh4 X2dwdV9zdGF0ZV9nZXQsCi0JCS5ncHVfc3RhdGVfcHV0ID0gYWRyZW5vX2dwdV9zdGF0ZV9wdXQs CisJCS5ncHVfc3RhdGVfcHV0ID0gYTV4eF9ncHVfc3RhdGVfcHV0LAogCX0sCiAJLmdldF90aW1l c3RhbXAgPSBhNXh4X2dldF90aW1lc3RhbXAsCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8v YWRyZW5vX2dwdS5jCmluZGV4IDgwOGQ0ZmM5YzRhMS4uY2Q0MThkYWI3YTYyIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jCkBAIC0zNjksMTYgKzM2OSwxMSBAQCBib29s IGFkcmVub19pZGxlKHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fcmluZ2J1ZmZlciAq cmluZykKIAlyZXR1cm4gZmFsc2U7CiB9CiAKLXN0cnVjdCBtc21fZ3B1X3N0YXRlICphZHJlbm9f Z3B1X3N0YXRlX2dldChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQoraW50IGFkcmVub19ncHVfc3RhdGVf Z2V0KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSkKIHsK IAlzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRyZW5vX2dwdSA9IHRvX2FkcmVub19ncHUoZ3B1KTsKLQlz dHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGU7CiAJaW50IGksIGNvdW50ID0gMDsKIAotCXN0YXRl ID0ga3phbGxvYyhzaXplb2YoKnN0YXRlKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFzdGF0ZSkKLQkJ cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Ci0KIAlrcmVmX2luaXQoJnN0YXRlLT5yZWYpOwogCiAJ ZG9fZ2V0dGltZW9mZGF5KCZzdGF0ZS0+dGltZSk7CkBAIC00MzIsMTQgKzQyNywxMiBAQCBzdHJ1 Y3QgbXNtX2dwdV9zdGF0ZSAqYWRyZW5vX2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1zbV9ncHUgKmdw dSkKIAkJc3RhdGUtPm5yX3JlZ2lzdGVycyA9IGNvdW50OwogCX0KIAotCXJldHVybiBzdGF0ZTsK KwlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgYWRyZW5vX2dwdV9zdGF0ZV9kZXN0cm95KHN0 cnVjdCBrcmVmICprcmVmKQordm9pZCBhZHJlbm9fZ3B1X3N0YXRlX2Rlc3Ryb3koc3RydWN0IG1z bV9ncHVfc3RhdGUgKnN0YXRlKQogewogCWludCBpOwotCXN0cnVjdCBtc21fZ3B1X3N0YXRlICpz dGF0ZSA9IGNvbnRhaW5lcl9vZihrcmVmLAotCQlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSwgcmVmKTsK IAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHN0YXRlLT5yaW5nKTsgaSsrKQogCQlrZnJl ZShzdGF0ZS0+cmluZ1tpXS5kYXRhKTsKQEAgLTQ0Nyw2ICs0NDAsMTQgQEAgc3RhdGljIHZvaWQg YWRyZW5vX2dwdV9zdGF0ZV9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVmKQogCWtmcmVlKHN0YXRl LT5jb21tKTsKIAlrZnJlZShzdGF0ZS0+Y21kKTsKIAlrZnJlZShzdGF0ZS0+cmVnaXN0ZXJzKTsK K30KKworc3RhdGljIHZvaWQgYWRyZW5vX2dwdV9zdGF0ZV9rcmVmX2Rlc3Ryb3koc3RydWN0IGty ZWYgKmtyZWYpCit7CisJc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlID0gY29udGFpbmVyX29m KGtyZWYsCisJCXN0cnVjdCBtc21fZ3B1X3N0YXRlLCByZWYpOworCisJYWRyZW5vX2dwdV9zdGF0 ZV9kZXN0cm95KHN0YXRlKTsKIAlrZnJlZShzdGF0ZSk7CiB9CiAKQEAgLTQ1NSw3ICs0NTYsNyBA QCBpbnQgYWRyZW5vX2dwdV9zdGF0ZV9wdXQoc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlKQog CWlmIChJU19FUlJfT1JfTlVMTChzdGF0ZSkpCiAJCXJldHVybiAxOwogCi0JcmV0dXJuIGtyZWZf cHV0KCZzdGF0ZS0+cmVmLCBhZHJlbm9fZ3B1X3N0YXRlX2Rlc3Ryb3kpOworCXJldHVybiBrcmVm X3B1dCgmc3RhdGUtPnJlZiwgYWRyZW5vX2dwdV9zdGF0ZV9rcmVmX2Rlc3Ryb3kpOwogfQogCiAj aWYgZGVmaW5lZChDT05GSUdfREVCVUdfRlMpIHx8IGRlZmluZWQoQ09ORklHX0RFVl9DT1JFRFVN UCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuaCBi L2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuaAppbmRleCA0YTg2OGFhZjFh NzAuLjQ0MDY3NzY1OTdmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8v YWRyZW5vX2dwdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUu aApAQCAtMjMwLDcgKzIzMCw5IEBAIGludCBhZHJlbm9fZ3B1X2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRybSwgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKIHZvaWQgYWRyZW5vX2dwdV9j bGVhbnVwKHN0cnVjdCBhZHJlbm9fZ3B1ICpncHUpOwogCiAKLXN0cnVjdCBtc21fZ3B1X3N0YXRl ICphZHJlbm9fZ3B1X3N0YXRlX2dldChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KTsKK3ZvaWQgYWRyZW5v X2dwdV9zdGF0ZV9kZXN0cm95KHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSk7CisKK2ludCBh ZHJlbm9fZ3B1X3N0YXRlX2dldChzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX2dwdV9z dGF0ZSAqc3RhdGUpOwogaW50IGFkcmVub19ncHVfc3RhdGVfcHV0KHN0cnVjdCBtc21fZ3B1X3N0 YXRlICpzdGF0ZSk7CiAKIC8qIHJpbmdidWZmZXIgaGVscGVycyAodGhlIHBhcnRzIHRoYXQgYXJl IGFkcmVubyBzcGVjaWZpYykgKi8KLS0gCjIuMTguMAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9A bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZnJlZWRyZW5vCg==