From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 06/10] drm/msm/gpu: Capture the GPU state on a GPU hang Date: Tue, 17 Apr 2018 16:44:37 -0600 Message-ID: <20180417224441.32355-7-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 Q2FwdHVyZSB0aGUgR1BVIHN0YXRlIG9uIGEgR1BVIGhhbmcgYW5kIHN0b3JlIGl0IGZvciBsYXRl ciBwbGF5YmFjawp2aWEgdGhlIGRldmNvcmVkdW1wIGZhY2lsaXR5LiBPbmx5IG9uZSBjcmFzaCBz dGF0ZSBpcyBzdG9yZWQgYXQgYQp0aW1lIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIGZpcnN0 IGhhbmcgaXMgdXN1YWxseSB0aGUgbW9zdAppbnRlcmVzdGluZy4gVGhlIGV4aXN0aW5nIGNyYXNo IHN0YXRlIGNhbiBiZSBjbGVhcmVkIGFmdGVyIGNhcHR1cmluZwppdCBhbmQgdGhlbiBhIG5ldyBv bmUgd2lsbCBiZSBjYXB0dXJlZCBvbiB0aGUgbmV4dCBoYW5nLgoKU2lnbmVkLW9mZi1ieTogSm9y ZGFuIENyb3VzZSA8amNyb3VzZUBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v bXNtL0tjb25maWcgICAgICAgICAgICAgfCAgMSArCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVu by9hM3h4X2dwdS5jICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTR4eF9n cHUuYyAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmMgICB8 ICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMgfCAzNiArKysr KysrLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oIHwgIDQgKy0K IGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2RlYnVnZnMuYyAgICAgICB8ICA1ICstCiBkcml2ZXJz L2dwdS9kcm0vbXNtL21zbV9ncHUuYyAgICAgICAgICAgfCA4MyArKysrKysrKysrKysrKysrKysr KysrKystCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuaCAgICAgICAgICAgfCAzOCArKysr KysrKysrLQogOSBmaWxlcyBjaGFuZ2VkLCAxNTMgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9LY29uZmlnIGIvZHJpdmVycy9n cHUvZHJtL21zbS9LY29uZmlnCmluZGV4IDM4Y2JkZTk3MWI0OC4uODQzYTlkNDBjMDVlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9LY29uZmlnCkBAIC0xMiw2ICsxMiw3IEBAIGNvbmZpZyBEUk1fTVNNCiAJc2VsZWN0IFNI TUVNCiAJc2VsZWN0IFRNUEZTCiAJc2VsZWN0IFFDT01fU0NNCisJc2VsZWN0IFdBTlRfREVWX0NP UkVEVU1QCiAJc2VsZWN0IFNORF9TT0NfSERNSV9DT0RFQyBpZiBTTkRfU09DCiAJc2VsZWN0IFNZ TkNfRklMRQogCXNlbGVjdCBQTV9PUFAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20v YWRyZW5vL2EzeHhfZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hM3h4X2dwdS5j CmluZGV4IDRjZmZlYzJiNmFkYy4uZmM1MDJlNDEyMTMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2FkcmVuby9hM3h4X2dwdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRy ZW5vL2EzeHhfZ3B1LmMKQEAgLTQ1NCw3ICs0NTQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFk cmVub19ncHVfZnVuY3MgZnVuY3MgPSB7CiAJCS5hY3RpdmVfcmluZyA9IGFkcmVub19hY3RpdmVf cmluZywKIAkJLmlycSA9IGEzeHhfaXJxLAogCQkuZGVzdHJveSA9IGEzeHhfZGVzdHJveSwKLSNp ZmRlZiBDT05GSUdfREVCVUdfRlMKKyNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykgfHwgZGVm aW5lZChDT05GSUdfREVWX0NPUkVEVU1QKQogCQkuc2hvdyA9IGFkcmVub19zaG93LAogI2VuZGlm CiAJCS5ncHVfc3RhdGVfZ2V0ID0gYTN4eF9ncHVfc3RhdGVfZ2V0LApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTR4eF9ncHUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v YWRyZW5vL2E0eHhfZ3B1LmMKaW5kZXggOTVmMDhjMjJlOGQ3Li44MTI5Y2YwMzdkYjEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E0eHhfZ3B1LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9hZHJlbm8vYTR4eF9ncHUuYwpAQCAtNTQwLDcgKzU0MCw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgYWRyZW5vX2dwdV9mdW5jcyBmdW5jcyA9IHsKIAkJLmFjdGl2ZV9yaW5n ID0gYWRyZW5vX2FjdGl2ZV9yaW5nLAogCQkuaXJxID0gYTR4eF9pcnEsCiAJCS5kZXN0cm95ID0g YTR4eF9kZXN0cm95LAotI2lmZGVmIENPTkZJR19ERUJVR19GUworI2lmIGRlZmluZWQoQ09ORklH X0RFQlVHX0ZTKSB8fCBkZWZpbmVkKENPTkZJR19ERVZfQ09SRURVTVApCiAJCS5zaG93ID0gYWRy ZW5vX3Nob3csCiAjZW5kaWYKIAkJLmdwdV9zdGF0ZV9nZXQgPSBhNHh4X2dwdV9zdGF0ZV9nZXQs CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5jIGIvZHJp dmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9ncHUuYwppbmRleCBiMDkxMGJiZTUxOTAuLjgz NmExZGYxZjI1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9n cHUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5jCkBAIC0xMjQz LDggKzEyNDMsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhZHJlbm9fZ3B1X2Z1bmNzIGZ1bmNz ID0gewogCQkuYWN0aXZlX3JpbmcgPSBhNXh4X2FjdGl2ZV9yaW5nLAogCQkuaXJxID0gYTV4eF9p cnEsCiAJCS5kZXN0cm95ID0gYTV4eF9kZXN0cm95LAotI2lmZGVmIENPTkZJR19ERUJVR19GUwor I2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKSB8fCBkZWZpbmVkKENPTkZJR19ERVZfQ09SRURV TVApCiAJCS5zaG93ID0gYWRyZW5vX3Nob3csCisjZW5kaWYKKyNpZiBkZWZpbmVkKENPTkZJR19E RUJVR19GUykKIAkJLmRlYnVnZnNfaW5pdCA9IGE1eHhfZGVidWdmc19pbml0LAogI2VuZGlmCiAJ CS5ncHVfYnVzeSA9IGE1eHhfZ3B1X2J1c3ksCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJl bm9fZ3B1LmMKaW5kZXggNTIyZDQ3YWMzNmUxLi5kNDZhZTJlZGU2MTYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMKQEAgLTM3OCw2ICszNzgsOCBAQCBzdHJ1Y3QgbXNt X2dwdV9zdGF0ZSAqYWRyZW5vX2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1zbV9ncHUgKmdwdSkKIAlp ZiAoIXN0YXRlKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAorCWtyZWZfaW5pdCgmc3Rh dGUtPnJlZik7CisKIAlkb19nZXR0aW1lb2ZkYXkoJnN0YXRlLT50aW1lKTsKIAogCWZvciAoaSA9 IDA7IGkgPCBncHUtPm5yX3JpbmdzOyBpKyspIHsKQEAgLTQxMywxOCArNDE1LDI4IEBAIHN0cnVj dCBtc21fZ3B1X3N0YXRlICphZHJlbm9fZ3B1X3N0YXRlX2dldChzdHJ1Y3QgbXNtX2dwdSAqZ3B1 KQogCXJldHVybiBzdGF0ZTsKIH0KIAotdm9pZCBhZHJlbm9fZ3B1X3N0YXRlX3B1dChzdHJ1Y3Qg bXNtX2dwdV9zdGF0ZSAqc3RhdGUpCitzdGF0aWMgdm9pZCBhZHJlbm9fZ3B1X3N0YXRlX2Rlc3Ry b3koc3RydWN0IGtyZWYgKmtyZWYpCiB7Ci0JaWYgKElTX0VSUl9PUl9OVUxMKHN0YXRlKSkKLQkJ cmV0dXJuOworCXN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSA9IGNvbnRhaW5lcl9vZihrcmVm LAorCQlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSwgcmVmKTsKIAorCWtmcmVlKHN0YXRlLT5jb21tKTsK KwlrZnJlZShzdGF0ZS0+Y21kKTsKIAlrZnJlZShzdGF0ZS0+cmVnaXN0ZXJzKTsKIAlrZnJlZShz dGF0ZSk7CiB9CiAKLSNpZmRlZiBDT05GSUdfREVCVUdfRlMKK2ludCBhZHJlbm9fZ3B1X3N0YXRl X3B1dChzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUpCit7CisJaWYgKElTX0VSUl9PUl9OVUxM KHN0YXRlKSkKKwkJcmV0dXJuIDE7CisKKwlyZXR1cm4ga3JlZl9wdXQoJnN0YXRlLT5yZWYsIGFk cmVub19ncHVfc3RhdGVfZGVzdHJveSk7Cit9CisKKyNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19G UykgfHwgZGVmaW5lZChDT05GSUdfREVWX0NPUkVEVU1QKQogdm9pZCBhZHJlbm9fc2hvdyhzdHJ1 Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUsCi0JCXN0cnVjdCBz ZXFfZmlsZSAqbSkKKwkJc3RydWN0IGRybV9wcmludGVyICpwKQogewogCXN0cnVjdCBhZHJlbm9f Z3B1ICphZHJlbm9fZ3B1ID0gdG9fYWRyZW5vX2dwdShncHUpOwogCWludCBpOwpAQCAtNDMyLDIz ICs0NDQsMjMgQEAgdm9pZCBhZHJlbm9fc2hvdyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3Qg bXNtX2dwdV9zdGF0ZSAqc3RhdGUsCiAJaWYgKElTX0VSUl9PUl9OVUxMKHN0YXRlKSkKIAkJcmV0 dXJuOwogCi0Jc2VxX3ByaW50ZihtLCAic3RhdHVzOiAgICUwOHhcbiIsIHN0YXRlLT5yYmJtX3N0 YXR1cyk7Ci0Jc2VxX3ByaW50ZihtLCAicmV2aXNpb246ICVkICglZC4lZC4lZC4lZClcbiIsCisJ ZHJtX3ByaW50ZihwLCAic3RhdHVzOiAgICUwOHhcbiIsIHN0YXRlLT5yYmJtX3N0YXR1cyk7CisJ ZHJtX3ByaW50ZihwLCAicmV2aXNpb246ICVkICglZC4lZC4lZC4lZClcbiIsCiAJCQlhZHJlbm9f Z3B1LT5pbmZvLT5yZXZuLCBhZHJlbm9fZ3B1LT5yZXYuY29yZSwKIAkJCWFkcmVub19ncHUtPnJl di5tYWpvciwgYWRyZW5vX2dwdS0+cmV2Lm1pbm9yLAogCQkJYWRyZW5vX2dwdS0+cmV2LnBhdGNo aWQpOwogCiAJZm9yIChpID0gMDsgaSA8IGdwdS0+bnJfcmluZ3M7IGkrKykgewotCQlzZXFfcHJp bnRmKG0sICJyYiAlZDogZmVuY2U6ICAgICVkLyVkXG4iLCBpLAorCQlkcm1fcHJpbnRmKHAsICJy YiAlZDogZmVuY2U6ICAgICVkLyVkXG4iLCBpLAogCQkJc3RhdGUtPnJpbmdbaV0uZmVuY2UsIHN0 YXRlLT5yaW5nW2ldLnNlcW5vKTsKIAotCQlzZXFfcHJpbnRmKG0sICIgICAgICBycHRyOiAgICAg JWRcbiIsIHN0YXRlLT5yaW5nW2ldLnJwdHIpOwotCQlzZXFfcHJpbnRmKG0sICJyYiB3cHRyOiAg JWRcbiIsIHN0YXRlLT5yaW5nW2ldLndwdHIpOworCQlkcm1fcHJpbnRmKHAsICIgICAgICBycHRy OiAgICAgJWRcbiIsIHN0YXRlLT5yaW5nW2ldLnJwdHIpOworCQlkcm1fcHJpbnRmKHAsICJyYiB3 cHRyOiAgJWRcbiIsIHN0YXRlLT5yaW5nW2ldLndwdHIpOwogCX0KIAotCXNlcV9wcmludGYobSwg IklPOnJlZ2lvbiAlcyAwMDAwMDAwMCAwMDAyMDAwMFxuIiwgZ3B1LT5uYW1lKTsKKwlkcm1fcHJp bnRmKHAsICJJTzpyZWdpb24gJXMgMDAwMDAwMDAgMDAwMjAwMDBcbiIsIGdwdS0+bmFtZSk7CiAJ Zm9yIChpID0gMDsgaSA8IHN0YXRlLT5ucl9yZWdpc3RlcnM7IGkrKykgewotCQlzZXFfcHJpbnRm KG0sICJJTzpSICUwOHggJTA4eFxuIiwKKwkJZHJtX3ByaW50ZihwLCAiSU86UiAlMDh4ICUwOHhc biIsCiAJCQlzdGF0ZS0+cmVnaXN0ZXJzW2kgKiAyXSA8PCAyLAogCQkJc3RhdGUtPnJlZ2lzdGVy c1soaSAqIDIpICsgMV0pOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRy ZW5vL2FkcmVub19ncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUu aAppbmRleCA4MTVhZTk4YzdmZDEuLjA3N2JmMTE0OWMwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v YWRyZW5vL2FkcmVub19ncHUuaApAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgYWRyZW5vX2ZsdXNo KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZyk7CiBib29s IGFkcmVub19pZGxlKHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fcmluZ2J1ZmZlciAq cmluZyk7CiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCiB2b2lkIGFkcmVub19zaG93KHN0cnVjdCBt c21fZ3B1ICpncHUsIHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSwKLQkJc3RydWN0IHNlcV9m aWxlICptKTsKKwkJc3RydWN0IGRybV9wcmludGVyICpwKTsKICNlbmRpZgogdm9pZCBhZHJlbm9f ZHVtcF9pbmZvKHN0cnVjdCBtc21fZ3B1ICpncHUpOwogdm9pZCBhZHJlbm9fZHVtcChzdHJ1Y3Qg bXNtX2dwdSAqZ3B1KTsKQEAgLTIyOSw3ICsyMjksNyBAQCBpbnQgYWRyZW5vX2dwdV9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiB2b2lk IGFkcmVub19ncHVfY2xlYW51cChzdHJ1Y3QgYWRyZW5vX2dwdSAqZ3B1KTsKIAogc3RydWN0IG1z bV9ncHVfc3RhdGUgKmFkcmVub19ncHVfc3RhdGVfZ2V0KHN0cnVjdCBtc21fZ3B1ICpncHUpOwot dm9pZCBhZHJlbm9fZ3B1X3N0YXRlX3B1dChzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUpOwor aW50IGFkcmVub19ncHVfc3RhdGVfcHV0KHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSk7CiAK IC8qIHJpbmdidWZmZXIgaGVscGVycyAodGhlIHBhcnRzIHRoYXQgYXJlIGFkcmVubyBzcGVjaWZp YykgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZGVidWdmcy5jIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZGVidWdmcy5jCmluZGV4IGVhMjBlYjBhZDc0Ny4uOWFl OWUwYTEyYjNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kZWJ1Z2ZzLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZGVidWdmcy5jCkBAIC0yOSw2ICsyOSw3IEBA IHN0cnVjdCBtc21fZ3B1X3Nob3dfcHJpdiB7CiAKIHN0YXRpYyBpbnQgbXNtX2dwdV9zaG93KHN0 cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqYXJnKQogeworCXN0cnVjdCBkcm1fcHJpbnRlciBwID0g ZHJtX3NlcV9maWxlX3ByaW50ZXIobSk7CiAJc3RydWN0IG1zbV9ncHVfc2hvd19wcml2ICpzaG93 X3ByaXYgPSBtLT5wcml2YXRlOwogCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBzaG93 X3ByaXYtPmRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IG1zbV9ncHUgKmdwdSA9IHByaXYtPmdw dTsKQEAgLTM4LDggKzM5LDggQEAgc3RhdGljIGludCBtc21fZ3B1X3Nob3coc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICphcmcpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXNlcV9wcmlu dGYobSwgIiVzIFN0YXR1czpcbiIsIGdwdS0+bmFtZSk7Ci0JZ3B1LT5mdW5jcy0+c2hvdyhncHUs IHNob3dfcHJpdi0+c3RhdGUsIG0pOworCWRybV9wcmludGYoJnAsICIlcyBTdGF0dXM6XG4iLCBn cHUtPm5hbWUpOworCWdwdS0+ZnVuY3MtPnNob3coZ3B1LCBzaG93X3ByaXYtPnN0YXRlLCAmcCk7 CiAKIAltdXRleF91bmxvY2soJnNob3dfcHJpdi0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2dwdS5jCmluZGV4IDJjYTM1NDA0NzI1MC4uZjM2YjQxNWUxMjNiIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9ncHUuYwpAQCAtMjAsMTAgKzIwLDExIEBACiAjaW5jbHVkZSAibXNtX21tdS5oIgogI2lu Y2x1ZGUgIm1zbV9mZW5jZS5oIgogCisjaW5jbHVkZSA8Z2VuZXJhdGVkL3V0c3JlbGVhc2UuaD4K ICNpbmNsdWRlIDxsaW51eC9zdHJpbmdfaGVscGVycy5oPgogI2luY2x1ZGUgPGxpbnV4L3BtX29w cC5oPgogI2luY2x1ZGUgPGxpbnV4L2RldmZyZXEuaD4KLQorI2luY2x1ZGUgPGxpbnV4L2RldmNv cmVkdW1wLmg+CiAKIC8qCiAgKiBQb3dlciBNYW5hZ2VtZW50OgpAQCAtMjczLDYgKzI3NCw4MyBA QCBpbnQgbXNtX2dwdV9od19pbml0KHN0cnVjdCBtc21fZ3B1ICpncHUpCiAJcmV0dXJuIHJldDsK IH0KIAorI2lmZGVmIENPTkZJR19ERVZfQ09SRURVTVAKK3N0YXRpYyBzc2l6ZV90IG1zbV9ncHVf ZGV2Y29yZWR1bXBfcmVhZChjaGFyICpidWZmZXIsIGxvZmZfdCBvZmZzZXQsCisJCXNpemVfdCBj b3VudCwgdm9pZCAqZGF0YSwgc2l6ZV90IGRhdGFsZW4pCit7CisJc3RydWN0IG1zbV9ncHUgKmdw dSA9IGRhdGE7CisJc3RydWN0IGRybV9wcmludF9pdGVyYXRvciBpdGVyOworCXN0cnVjdCBkcm1f cHJpbnRlciBwOworCXN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZTsKKworCXN0YXRlID0gbXNt X2dwdV9jcmFzaHN0YXRlX2dldChncHUpOworCWlmICghc3RhdGUpCisJCXJldHVybiAwOworCisJ aXRlci5kYXRhID0gYnVmZmVyOworCWl0ZXIub2Zmc2V0ID0gMDsKKwlpdGVyLnN0YXJ0ID0gb2Zm c2V0OworCWl0ZXIucmVtYWluID0gY291bnQ7CisKKwlwID0gZHJtX2NvcmVkdW1wX3ByaW50ZXIo Jml0ZXIpOworCisJZHJtX3ByaW50ZigmcCwgIi0tLVxuIik7CisJZHJtX3ByaW50ZigmcCwgImtl cm5lbDogIiBVVFNfUkVMRUFTRSAiXG4iKTsKKwlkcm1fcHJpbnRmKCZwLCAibW9kdWxlOiAiIEtC VUlMRF9NT0ROQU1FICJcbiIpOworCWRybV9wcmludGYoJnAsICJ0aW1lOiAlbGQuJWxkXG4iLAor CQlzdGF0ZS0+dGltZS50dl9zZWMsIHN0YXRlLT50aW1lLnR2X3VzZWMpOworCWlmIChzdGF0ZS0+ Y29tbSkKKwkJZHJtX3ByaW50ZigmcCwgImNvbW06ICVzXG4iLCBzdGF0ZS0+Y29tbSk7CisJaWYg KHN0YXRlLT5jbWQpCisJCWRybV9wcmludGYoJnAsICJjbWRsaW5lOiAlc1xuIiwgc3RhdGUtPmNt ZCk7CisKKwlncHUtPmZ1bmNzLT5zaG93KGdwdSwgc3RhdGUsICZwKTsKKworCW1zbV9ncHVfY3Jh c2hzdGF0ZV9wdXQoZ3B1KTsKKworCXJldHVybiBjb3VudCAtIGl0ZXIucmVtYWluOworfQorCitz dGF0aWMgdm9pZCBtc21fZ3B1X2RldmNvcmVkdW1wX2ZyZWUodm9pZCAqZGF0YSkKK3sKKwlzdHJ1 Y3QgbXNtX2dwdSAqZ3B1ID0gZGF0YTsKKworCW1zbV9ncHVfY3Jhc2hzdGF0ZV9wdXQoZ3B1KTsK K30KKworc3RhdGljIHZvaWQgbXNtX2dwdV9jcmFzaHN0YXRlX2NhcHR1cmUoc3RydWN0IG1zbV9n cHUgKmdwdSwgY2hhciAqY29tbSwKKwkJY2hhciAqY21kKQoreworCXN0cnVjdCBtc21fZ3B1X3N0 YXRlICpzdGF0ZTsKKworCS8qIE9ubHkgc2F2ZSBvbmUgY3Jhc2ggc3RhdGUgYXQgYSBhIHRpbWUg Ki8KKwlpZiAoZ3B1LT5jcmFzaHN0YXRlKQorCQlyZXR1cm47CisKKwlzdGF0ZSA9IGdwdS0+ZnVu Y3MtPmdwdV9zdGF0ZV9nZXQoZ3B1KTsKKwlpZiAoSVNfRVJSX09SX05VTEwoc3RhdGUpKQorCQly ZXR1cm47CisKKwkvKiBGaWxsIGluIHRoZSBhZGRpdGlvbmFsIGNyYXNoIHN0YXRlIGluZm9ybWF0 aW9uICovCisJc3RhdGUtPmNvbW0gPSBrc3RyZHVwKGNvbW0sIEdGUF9LRVJORUwpOworCXN0YXRl LT5jbWQgPSBrc3RyZHVwKGNtZCwgR0ZQX0tFUk5FTCk7CisKKwlrcmVmX2luaXQoJnN0YXRlLT5y ZWYpOworCisJLyogU2V0IHRoZSBhY3RpdmUgY3Jhc2ggc3RhdGUgdG8gYmUgZHVtcGVkIG9uIGZh aWx1cmUgKi8KKwlncHUtPmNyYXNoc3RhdGUgPSBzdGF0ZTsKKworCS8qIEZJWE1FOiBSZWxlYXNl IHRoZSBjcmFzaHN0YXRlIGlmIHRoaXMgZXJyb3JzIG91dD8gKi8KKwlkZXZfY29yZWR1bXBtKGdw dS0+ZGV2LT5kZXYsIFRISVNfTU9EVUxFLCBncHUsIDAsIEdGUF9LRVJORUwsCisJCW1zbV9ncHVf ZGV2Y29yZWR1bXBfcmVhZCwgbXNtX2dwdV9kZXZjb3JlZHVtcF9mcmVlKTsKK30KKyNlbHNlCitz dGF0aWMgdm9pZCBtc21fZ3B1X2NyYXNoc3RhdGVfY2FwdHVyZShzdHJ1Y3QgbXNtX2dwdSAqZ3B1 LCBjaGFyICpjb21tLAorCQljaGFyICpjbWQpCit7Cit9CisjZW5kaWYKKwogLyoKICAqIEhhbmdj aGVjayBkZXRlY3Rpb24gZm9yIGxvY2tlZCBncHU6CiAgKi8KQEAgLTM1Niw2ICs0MzQsOSBAQCBz dGF0aWMgdm9pZCByZWNvdmVyX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCQlt c21fcmRfZHVtcF9zdWJtaXQocHJpdi0+aGFuZ3JkLCBzdWJtaXQsIE5VTEwpOwogCX0KIAorCS8q IFJlY29yZCB0aGUgY3Jhc2ggc3RhdGUgKi8KKwltc21fZ3B1X2NyYXNoc3RhdGVfY2FwdHVyZShn cHUsIGNvbW0sIGNtZCk7CisKIAlrZnJlZShjbWQpOwogCWtmcmVlKGNvbW0pOwogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20v bXNtX2dwdS5oCmluZGV4IDQ3MGYzYmI1ZjgzNC4uZTY1ZjUwNzk1NGMwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9ncHUuaApAQCAtNjYsMTMgKzY2LDEzIEBAIHN0cnVjdCBtc21fZ3B1X2Z1bmNzIHsKICNpZmRl ZiBDT05GSUdfREVCVUdfRlMKIAkvKiBzaG93IEdQVSBzdGF0dXMgaW4gZGVidWdmczogKi8KIAl2 b2lkICgqc2hvdykoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0 YXRlLAotCQkJc3RydWN0IHNlcV9maWxlICptKTsKKwkJCXN0cnVjdCBkcm1fcHJpbnRlciAqcCk7 CiAJLyogZm9yIGdlbmVyYXRpb24gc3BlY2lmaWMgZGVidWdmczogKi8KIAlpbnQgKCpkZWJ1Z2Zz X2luaXQpKHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKTsKICNl bmRpZgogCWludCAoKmdwdV9idXN5KShzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCB1aW50NjRfdCAqdmFs dWUpOwogCXN0cnVjdCBtc21fZ3B1X3N0YXRlICooKmdwdV9zdGF0ZV9nZXQpKHN0cnVjdCBtc21f Z3B1ICpncHUpOwotCXZvaWQgKCpncHVfc3RhdGVfcHV0KShzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAq c3RhdGUpOworCWludCAoKmdwdV9zdGF0ZV9wdXQpKHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0 ZSk7CiB9OwogCiBzdHJ1Y3QgbXNtX2dwdSB7CkBAIC0xMzMsNiArMTMzLDggQEAgc3RydWN0IG1z bV9ncHUgewogCQl1NjQgYnVzeV9jeWNsZXM7CiAJCWt0aW1lX3QgdGltZTsKIAl9IGRldmZyZXE7 CisKKwlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqY3Jhc2hzdGF0ZTsKIH07CiAKIC8qIEl0IHR1cm5z IG91dCB0aGF0IGFsbCB0YXJnZXRzIHVzZSB0aGUgc2FtZSByaW5nYnVmZmVyIHNpemUgKi8KQEAg LTE4MCw2ICsxODIsNyBAQCBzdHJ1Y3QgbXNtX2dwdV9zdWJtaXRxdWV1ZSB7CiB9OwogCiBzdHJ1 Y3QgbXNtX2dwdV9zdGF0ZSB7CisJc3RydWN0IGtyZWYgcmVmOwogCXN0cnVjdCB0aW1ldmFsIHRp bWU7CiAKIAlzdHJ1Y3QgewpAQCAtMTkzLDYgKzE5Niw5IEBAIHN0cnVjdCBtc21fZ3B1X3N0YXRl IHsKIAl1MzIgKnJlZ2lzdGVyczsKIAogCXUzMiByYmJtX3N0YXR1czsKKworCWNoYXIgKmNvbW07 CisJY2hhciAqY21kOwogfTsKIAogc3RhdGljIGlubGluZSB2b2lkIGdwdV93cml0ZShzdHJ1Y3Qg bXNtX2dwdSAqZ3B1LCB1MzIgcmVnLCB1MzIgZGF0YSkKQEAgLTI3NCw0ICsyODAsMzIgQEAgc3Rh dGljIGlubGluZSB2b2lkIG1zbV9zdWJtaXRxdWV1ZV9wdXQoc3RydWN0IG1zbV9ncHVfc3VibWl0 cXVldWUgKnF1ZXVlKQogCQlrcmVmX3B1dCgmcXVldWUtPnJlZiwgbXNtX3N1Ym1pdHF1ZXVlX2Rl c3Ryb3kpOwogfQogCitzdGF0aWMgaW5saW5lIHN0cnVjdCBtc21fZ3B1X3N0YXRlICptc21fZ3B1 X2NyYXNoc3RhdGVfZ2V0KHN0cnVjdCBtc21fZ3B1ICpncHUpCit7CisJc3RydWN0IG1zbV9ncHVf c3RhdGUgKnN0YXRlID0gTlVMTDsKKworCW11dGV4X2xvY2soJmdwdS0+ZGV2LT5zdHJ1Y3RfbXV0 ZXgpOworCisJaWYgKGdwdS0+Y3Jhc2hzdGF0ZSkgeworCQlrcmVmX2dldCgmZ3B1LT5jcmFzaHN0 YXRlLT5yZWYpOworCQlzdGF0ZSA9IGdwdS0+Y3Jhc2hzdGF0ZTsKKwl9CisKKwltdXRleF91bmxv Y2soJmdwdS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0dXJuIHN0YXRlOworfQorCitzdGF0 aWMgaW5saW5lIHZvaWQgbXNtX2dwdV9jcmFzaHN0YXRlX3B1dChzdHJ1Y3QgbXNtX2dwdSAqZ3B1 KQoreworCW11dGV4X2xvY2soJmdwdS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJaWYgKGdwdS0+ Y3Jhc2hzdGF0ZSkgeworCQlpZiAoZ3B1LT5mdW5jcy0+Z3B1X3N0YXRlX3B1dChncHUtPmNyYXNo c3RhdGUpKQorCQkJZ3B1LT5jcmFzaHN0YXRlID0gTlVMTDsKKwl9CisKKwltdXRleF91bmxvY2so JmdwdS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworfQorCiAjZW5kaWYgLyogX19NU01fR1BVX0hfXyAq LwotLSAKMi4xNy4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJl bm8K