From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 5/8] drm/msm/gpu: Capture the GPU state on a GPU hang Date: Thu, 8 Feb 2018 10:31:54 -0700 Message-ID: <1518111117-7408-6-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 Q2FwdHVyZSB0aGUgR1BVIHN0YXRlIG9uIGEgR1BVIGhhbmcgYW5kIHN0b3JlIGl0IGZvciBsYXRl ciBwbGF5YmFjawp2aWEgdGhlIGRldmNvcmVkdW1wIGZhY2lsaXR5LiBPbmx5IG9uZSBjcmFzaCBz dGF0ZSBpcyBzdG9yZWQgYXQgYQp0aW1lIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIGZpcnN0 IGhhbmcgaXMgdXN1YWxseSB0aGUgbW9zdAppbnRlcmVzdGluZy4gVGhlIGV4aXN0aW5nIGNyYXNo IHN0YXRlIGNhbiBiZSBjbGVhcmVkIGFmdGVyIGNhcHR1cmluZwppdCBhbmQgdGhlbiBhIG5ldyBv bmUgd2lsbCBiZSBjYXB0dXJlZCBvbiB0aGUgbmV4dCBoYW5nLgoKU2lnbmVkLW9mZi1ieTogSm9y ZGFuIENyb3VzZSA8amNyb3VzZUBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v bXNtL0tjb25maWcgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJl bm8vYWRyZW5vX2dwdS5jIHwgIDM0ICsrKysrKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Fk cmVuby9hZHJlbm9fZ3B1LmggfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2RlYnVn ZnMuYyAgICAgICB8ICAgNyArKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jICAgICAg ICAgICB8IDEwMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZ3B1LmggICAgICAgICAgIHwgIDM4ICsrKysrKysrKysrLQogNiBmaWxlcyBj aGFuZ2VkLCAxNjEgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL21zbS9LY29uZmln CmluZGV4IDM4Y2JkZTkuLjg0M2E5ZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v S2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL0tjb25maWcKQEAgLTEyLDYgKzEyLDcg QEAgY29uZmlnIERSTV9NU00KIAlzZWxlY3QgU0hNRU0KIAlzZWxlY3QgVE1QRlMKIAlzZWxlY3Qg UUNPTV9TQ00KKwlzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVAKIAlzZWxlY3QgU05EX1NPQ19IRE1J X0NPREVDIGlmIFNORF9TT0MKIAlzZWxlY3QgU1lOQ19GSUxFCiAJc2VsZWN0IFBNX09QUApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jCmluZGV4IGFmNzc2ZjEuLmU4NjIzOGNl IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jCkBAIC0zOTIsNiArMzky LDggQEAgc3RydWN0IG1zbV9ncHVfc3RhdGUgKmFkcmVub19ncHVfc3RhdGVfZ2V0KHN0cnVjdCBt c21fZ3B1ICpncHUpCiAJaWYgKCFzdGF0ZSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAK KwlrcmVmX2luaXQoJnN0YXRlLT5yZWYpOworCiAJZG9fZ2V0dGltZW9mZGF5KCZzdGF0ZS0+dGlt ZSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgZ3B1LT5ucl9yaW5nczsgaSsrKSB7CkBAIC00MjcsMTgg KzQyOSwyOCBAQCBzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqYWRyZW5vX2dwdV9zdGF0ZV9nZXQoc3Ry dWN0IG1zbV9ncHUgKmdwdSkKIAlyZXR1cm4gc3RhdGU7CiB9CiAKLXZvaWQgYWRyZW5vX2dwdV9z dGF0ZV9wdXQoc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlKQorc3RhdGljIHZvaWQgYWRyZW5v X2dwdV9zdGF0ZV9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVmKQogewotCWlmIChJU19FUlJfT1Jf TlVMTChzdGF0ZSkpCi0JCXJldHVybjsKKwlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUgPSBj b250YWluZXJfb2Yoa3JlZiwKKwkJc3RydWN0IG1zbV9ncHVfc3RhdGUsIHJlZik7CiAKKwlrZnJl ZShzdGF0ZS0+Y29tbSk7CisJa2ZyZWUoc3RhdGUtPmNtZCk7CiAJa2ZyZWUoc3RhdGUtPnJlZ2lz dGVycyk7CiAJa2ZyZWUoc3RhdGUpOwogfQogCitpbnQgYWRyZW5vX2dwdV9zdGF0ZV9wdXQoc3Ry dWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlKQoreworCWlmIChJU19FUlJfT1JfTlVMTChzdGF0ZSkp CisJCXJldHVybiAxOworCisJcmV0dXJuIGtyZWZfcHV0KCZzdGF0ZS0+cmVmLCBhZHJlbm9fZ3B1 X3N0YXRlX2Rlc3Ryb3kpOworfQorCiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCiB2b2lkIGFkcmVu b19zaG93KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSwK LQkJc3RydWN0IHNlcV9maWxlICptKQorCQlzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCiB7CiAJc3Ry dWN0IGFkcmVub19ncHUgKmFkcmVub19ncHUgPSB0b19hZHJlbm9fZ3B1KGdwdSk7CiAJaW50IGk7 CkBAIC00NDYsMjMgKzQ1OCwyMyBAQCB2b2lkIGFkcmVub19zaG93KHN0cnVjdCBtc21fZ3B1ICpn cHUsIHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSwKIAlpZiAoSVNfRVJSX09SX05VTEwoc3Rh dGUpKQogCQlyZXR1cm47CiAKLQlzZXFfcHJpbnRmKG0sICJzdGF0dXM6ICAgJTA4eFxuIiwgc3Rh dGUtPnJiYm1fc3RhdHVzKTsKLQlzZXFfcHJpbnRmKG0sICJyZXZpc2lvbjogJWQgKCVkLiVkLiVk LiVkKVxuIiwKKwlkcm1fcHJpbnRmKHAsICJzdGF0dXM6ICAgJTA4eFxuIiwgc3RhdGUtPnJiYm1f c3RhdHVzKTsKKwlkcm1fcHJpbnRmKHAsICJyZXZpc2lvbjogJWQgKCVkLiVkLiVkLiVkKVxuIiwK IAkJCWFkcmVub19ncHUtPmluZm8tPnJldm4sIGFkcmVub19ncHUtPnJldi5jb3JlLAogCQkJYWRy ZW5vX2dwdS0+cmV2Lm1ham9yLCBhZHJlbm9fZ3B1LT5yZXYubWlub3IsCiAJCQlhZHJlbm9fZ3B1 LT5yZXYucGF0Y2hpZCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgZ3B1LT5ucl9yaW5nczsgaSsrKSB7 Ci0JCXNlcV9wcmludGYobSwgInJiICVkOiBmZW5jZTogICAgJWQvJWRcbiIsIGksCisJCWRybV9w cmludGYocCwgInJiICVkOiBmZW5jZTogICAgJWQvJWRcbiIsIGksCiAJCQlzdGF0ZS0+cmluZ1tp XS5mZW5jZSwgc3RhdGUtPnJpbmdbaV0uc2Vxbm8pOwogCi0JCXNlcV9wcmludGYobSwgIiAgICAg IHJwdHI6ICAgICAlZFxuIiwgc3RhdGUtPnJpbmdbaV0ucnB0cik7Ci0JCXNlcV9wcmludGYobSwg InJiIHdwdHI6ICAlZFxuIiwgc3RhdGUtPnJpbmdbaV0ud3B0cik7CisJCWRybV9wcmludGYocCwg IiAgICAgIHJwdHI6ICAgICAlZFxuIiwgc3RhdGUtPnJpbmdbaV0ucnB0cik7CisJCWRybV9wcmlu dGYocCwgInJiIHdwdHI6ICAlZFxuIiwgc3RhdGUtPnJpbmdbaV0ud3B0cik7CiAJfQogCi0Jc2Vx X3ByaW50ZihtLCAiSU86cmVnaW9uICVzIDAwMDAwMDAwIDAwMDIwMDAwXG4iLCBncHUtPm5hbWUp OworCWRybV9wcmludGYocCwgIklPOnJlZ2lvbiAlcyAwMDAwMDAwMCAwMDAyMDAwMFxuIiwgZ3B1 LT5uYW1lKTsKIAlmb3IgKGkgPSAwOyBpIDwgc3RhdGUtPm5yX3JlZ2lzdGVyczsgaSsrKSB7Ci0J CXNlcV9wcmludGYobSwgIklPOlIgJTA4eCAlMDh4XG4iLAorCQlkcm1fcHJpbnRmKHAsICJJTzpS ICUwOHggJTA4eFxuIiwKIAkJCXN0YXRlLT5yZWdpc3RlcnNbaSAqIDJdIDw8IDIsCiAJCQlzdGF0 ZS0+cmVnaXN0ZXJzWyhpICogMikgKyAxXSk7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8v YWRyZW5vX2dwdS5oCmluZGV4IDgxNWFlOTguLjA3N2JmMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vYWRyZW5vL2FkcmVub19ncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2FkcmVuby9hZHJlbm9fZ3B1LmgKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIGFkcmVub19zdWJt aXQoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQsCiBi b29sIGFkcmVub19pZGxlKHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fcmluZ2J1ZmZl ciAqcmluZyk7CiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCiB2b2lkIGFkcmVub19zaG93KHN0cnVj dCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSwKLQkJc3RydWN0IHNl cV9maWxlICptKTsKKwkJc3RydWN0IGRybV9wcmludGVyICpwKTsKICNlbmRpZgogdm9pZCBhZHJl bm9fZHVtcF9pbmZvKHN0cnVjdCBtc21fZ3B1ICpncHUpOwogdm9pZCBhZHJlbm9fZHVtcChzdHJ1 Y3QgbXNtX2dwdSAqZ3B1KTsKQEAgLTIyOSw3ICsyMjksNyBAQCBpbnQgYWRyZW5vX2dwdV9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiB2 b2lkIGFkcmVub19ncHVfY2xlYW51cChzdHJ1Y3QgYWRyZW5vX2dwdSAqZ3B1KTsKIAogc3RydWN0 IG1zbV9ncHVfc3RhdGUgKmFkcmVub19ncHVfc3RhdGVfZ2V0KHN0cnVjdCBtc21fZ3B1ICpncHUp Owotdm9pZCBhZHJlbm9fZ3B1X3N0YXRlX3B1dChzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3RhdGUp OworaW50IGFkcmVub19ncHVfc3RhdGVfcHV0KHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSk7 CiAKIC8qIHJpbmdidWZmZXIgaGVscGVycyAodGhlIHBhcnRzIHRoYXQgYXJlIGFkcmVubyBzcGVj aWZpYykgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZGVidWdmcy5j IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZGVidWdmcy5jCmluZGV4IGZkNTM1ZGEuLjE2NWQ5 NGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2RlYnVnZnMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kZWJ1Z2ZzLmMKQEAgLTE2LDYgKzE2LDggQEAKICAqLwog CiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCisKKyNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+CiAj aW5jbHVkZSAibXNtX2Rydi5oIgogI2luY2x1ZGUgIm1zbV9ncHUuaCIKICNpbmNsdWRlICJtc21f a21zLmgiCkBAIC0yNiw2ICsyOCw3IEBAIHN0YXRpYyBpbnQgbXNtX2dwdV9zaG93KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHN0cnVjdCBzZXFfZmlsZSAqbSkKIAlzdHJ1Y3QgbXNtX2RybV9wcml2 YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgbXNtX2dwdSAqZ3B1ID0gcHJp di0+Z3B1OwogCXN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZTsKKwlzdHJ1Y3QgZHJtX3ByaW50 ZXIgcCA9IGRybV9zZXFfZmlsZV9wcmludGVyKG0pOwogCiAJaWYgKCFncHUpCiAJCXJldHVybiAw OwpAQCAtMzcsOCArNDAsOCBAQCBzdGF0aWMgaW50IG1zbV9ncHVfc2hvdyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCiAJaWYgKElTX0VSUihzdGF0ZSkpCiAJCXJl dHVybiBQVFJfRVJSKHN0YXRlKTsKIAotCXNlcV9wcmludGYobSwgIiVzIFN0YXR1czpcbiIsIGdw dS0+bmFtZSk7Ci0JZ3B1LT5mdW5jcy0+c2hvdyhncHUsIHN0YXRlLCBtKTsKKwlkcm1fcHJpbnRm KCZwLCAiJXMgU3RhdHVzOlxuIiwgZ3B1LT5uYW1lKTsKKwlncHUtPmZ1bmNzLT5zaG93KGdwdSwg c3RhdGUsICZwKTsKIAogCWdwdS0+ZnVuY3MtPmdwdV9zdGF0ZV9wdXQoc3RhdGUpOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2dwdS5jCmluZGV4IDFjMDlhY2YuLmYxOWI0NTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2dwdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5j CkBAIC0yMCwxMCArMjAsMTEgQEAKICNpbmNsdWRlICJtc21fbW11LmgiCiAjaW5jbHVkZSAibXNt X2ZlbmNlLmgiCiAKKyNpbmNsdWRlIDxnZW5lcmF0ZWQvdXRzcmVsZWFzZS5oPgogI2luY2x1ZGUg PGxpbnV4L3N0cmluZ19oZWxwZXJzLmg+CiAjaW5jbHVkZSA8bGludXgvcG1fb3BwLmg+CiAjaW5j bHVkZSA8bGludXgvZGV2ZnJlcS5oPgotCisjaW5jbHVkZSA8bGludXgvZGV2Y29yZWR1bXAuaD4K IAogLyoKICAqIFBvd2VyIE1hbmFnZW1lbnQ6CkBAIC0yNzMsNiArMjc0LDgzIEBAIGludCBtc21f Z3B1X2h3X2luaXQoc3RydWN0IG1zbV9ncHUgKmdwdSkKIAlyZXR1cm4gcmV0OwogfQogCisjaWZk ZWYgQ09ORklHX0RFVl9DT1JFRFVNUAorc3RhdGljIHNzaXplX3QgbXNtX2dwdV9kZXZjb3JlZHVt cF9yZWFkKGNoYXIgKmJ1ZmZlciwgbG9mZl90IG9mZnNldCwKKwkJc2l6ZV90IGNvdW50LCB2b2lk ICpkYXRhLCBzaXplX3QgZGF0YWxlbikKK3sKKwlzdHJ1Y3QgbXNtX2dwdSAqZ3B1ID0gZGF0YTsK KwlzdHJ1Y3QgZHJtX3ByaW50X2l0ZXJhdG9yIGl0ZXI7CisJc3RydWN0IGRybV9wcmludGVyIHA7 CisJc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRlOworCisJc3RhdGUgPSBtc21fZ3B1X2NyYXNo c3RhdGVfZ2V0KGdwdSk7CisJaWYgKCFzdGF0ZSkKKwkJcmV0dXJuIDA7CisKKwlpdGVyLmRhdGEg PSBidWZmZXI7CisJaXRlci5vZmZzZXQgPSAwOworCWl0ZXIuc3RhcnQgPSBvZmZzZXQ7CisJaXRl ci5yZW1haW4gPSBjb3VudDsKKworCXAgPSBkcm1fY29yZWR1bXBfcHJpbnRlcigmaXRlcik7CisK Kwlkcm1fcHJpbnRmKCZwLCAiLS0tXG4iKTsKKwlkcm1fcHJpbnRmKCZwLCAia2VybmVsOiAiIFVU U19SRUxFQVNFICJcbiIpOworCWRybV9wcmludGYoJnAsICJtb2R1bGU6ICIgS0JVSUxEX01PRE5B TUUgIlxuIik7CisJZHJtX3ByaW50ZigmcCwgInRpbWU6ICVsZC4lbGRcbiIsCisJCXN0YXRlLT50 aW1lLnR2X3NlYywgc3RhdGUtPnRpbWUudHZfdXNlYyk7CisJaWYgKHN0YXRlLT5jb21tKQorCQlk cm1fcHJpbnRmKCZwLCAiY29tbTogJXNcbiIsIHN0YXRlLT5jb21tKTsKKwlpZiAoc3RhdGUtPmNt ZCkKKwkJZHJtX3ByaW50ZigmcCwgImNtZGxpbmU6ICVzXG4iLCBzdGF0ZS0+Y21kKTsKKworCWdw dS0+ZnVuY3MtPnNob3coZ3B1LCBzdGF0ZSwgJnApOworCisJbXNtX2dwdV9jcmFzaHN0YXRlX3B1 dChncHUpOworCisJcmV0dXJuIGNvdW50IC0gaXRlci5yZW1haW47Cit9CisKK3N0YXRpYyB2b2lk IG1zbV9ncHVfZGV2Y29yZWR1bXBfZnJlZSh2b2lkICpkYXRhKQoreworCXN0cnVjdCBtc21fZ3B1 ICpncHUgPSBkYXRhOworCisJbXNtX2dwdV9jcmFzaHN0YXRlX3B1dChncHUpOworfQorCitzdGF0 aWMgdm9pZCBtc21fZ3B1X2NyYXNoc3RhdGVfY2FwdHVyZShzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBj aGFyICpjb21tLAorCQljaGFyICpjbWQpCit7CisJc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRl OworCisJLyogT25seSBzYXZlIG9uZSBjcmFzaCBzdGF0ZSBhdCBhIGEgdGltZSAqLworCWlmIChn cHUtPmNyYXNoc3RhdGUpCisJCXJldHVybjsKKworCXN0YXRlID0gZ3B1LT5mdW5jcy0+Z3B1X3N0 YXRlX2dldChncHUpOworCWlmIChJU19FUlJfT1JfTlVMTChzdGF0ZSkpCisJCXJldHVybjsKKwor CS8qIEZpbGwgaW4gdGhlIGFkZGl0aW9uYWwgY3Jhc2ggc3RhdGUgaW5mb3JtYXRpb24gKi8KKwlz dGF0ZS0+Y29tbSA9IGtzdHJkdXAoY29tbSwgR0ZQX0tFUk5FTCk7CisJc3RhdGUtPmNtZCA9IGtz dHJkdXAoY21kLCBHRlBfS0VSTkVMKTsKKworCWtyZWZfZ2V0KCZzdGF0ZS0+cmVmKTsKKworCS8q IFNldCB0aGUgYWN0aXZlIGNyYXNoIHN0YXRlIHRvIGJlIGR1bXBlZCBvbiBmYWlsdXJlICovCisJ Z3B1LT5jcmFzaHN0YXRlID0gc3RhdGU7CisKKwkvKiBGSVhNRTogUmVsZWFzZSB0aGUgY3Jhc2hz dGF0ZSBpZiB0aGlzIGVycm9ycyBvdXQ/ICovCisJZGV2X2NvcmVkdW1wbShncHUtPmRldi0+ZGV2 LCBUSElTX01PRFVMRSwgZ3B1LCAwLCBHRlBfS0VSTkVMLAorCQltc21fZ3B1X2RldmNvcmVkdW1w X3JlYWQsIG1zbV9ncHVfZGV2Y29yZWR1bXBfZnJlZSk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQg bXNtX2dwdV9jcmFzaHN0YXRlX2NhcHR1cmUoc3RydWN0IG1zbV9ncHUgKmdwdSwgY2hhciAqY29t bSwKKwkJY2hhciAqY21kKQoreworfQorI2VuZGlmCisKIC8qCiAgKiBIYW5nY2hlY2sgZGV0ZWN0 aW9uIGZvciBsb2NrZWQgZ3B1OgogICovCkBAIC0zMTQsNiArMzkyLDcgQEAgc3RhdGljIHZvaWQg cmVjb3Zlcl93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXN0cnVjdCBtc21fZHJt X3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBtc21fZ2VtX3N1Ym1p dCAqc3VibWl0OwogCXN0cnVjdCBtc21fcmluZ2J1ZmZlciAqY3VyX3JpbmcgPSBncHUtPmZ1bmNz LT5hY3RpdmVfcmluZyhncHUpOworCWNoYXIgKmNvbW0gPSBOVUxMLCAqY21kID0gTlVMTDsKIAlp bnQgaTsKIAogCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKQEAgLTMyNiw4ICs0MDUs OSBAQCBzdGF0aWMgdm9pZCByZWNvdmVyX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp CiAKIAkJcmN1X3JlYWRfbG9jaygpOwogCQl0YXNrID0gcGlkX3Rhc2soc3VibWl0LT5waWQsIFBJ RFRZUEVfUElEKTsKKwogCQlpZiAodGFzaykgewotCQkJY2hhciAqY21kOworCQkJY29tbSA9IGtz dHJkdXAodGFzay0+Y29tbSwgR0ZQX0tFUk5FTCk7CiAKIAkJCS8qCiAJCQkgKiBTbyBzbGlnaHRs eSBhbm5veWluZywgaW4gb3RoZXIgcGF0aHMgbGlrZQpAQCAtMzQyLDIwICs0MjIsMjUgQEAgc3Rh dGljIHZvaWQgcmVjb3Zlcl93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQkJbXV0 ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJCQljbWQgPSBrc3RyZHVwX3F1b3RhYmxl X2NtZGxpbmUodGFzaywgR0ZQX0tFUk5FTCk7CiAJCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7CisJCX0KKworCQlyY3VfcmVhZF91bmxvY2soKTsKIAorCQlpZiAoY29tbSAmJiBjbWQp IHsKIAkJCWRldl9lcnIoZGV2LT5kZXYsICIlczogb2ZmZW5kaW5nIHRhc2s6ICVzICglcylcbiIs Ci0JCQkJZ3B1LT5uYW1lLCB0YXNrLT5jb21tLCBjbWQpOworCQkJCWdwdS0+bmFtZSwgY29tbSwg Y21kKTsKIAogCQkJbXNtX3JkX2R1bXBfc3VibWl0KHByaXYtPmhhbmdyZCwgc3VibWl0LAotCQkJ CSJvZmZlbmRpbmcgdGFzazogJXMgKCVzKSIsIHRhc2stPmNvbW0sIGNtZCk7Ci0KLQkJCWtmcmVl KGNtZCk7Ci0JCX0gZWxzZSB7CisJCQkJIm9mZmVuZGluZyB0YXNrOiAlcyAoJXMpIiwgY29tbSwg Y21kKTsKKwkJfSBlbHNlCiAJCQltc21fcmRfZHVtcF9zdWJtaXQocHJpdi0+aGFuZ3JkLCBzdWJt aXQsIE5VTEwpOwotCQl9Ci0JCXJjdV9yZWFkX3VubG9jaygpOwogCX0KIAorCS8qIFJlY29yZCB0 aGUgY3Jhc2ggc3RhdGUgKi8KKwltc21fZ3B1X2NyYXNoc3RhdGVfY2FwdHVyZShncHUsIGNvbW0s IGNtZCk7CisKKwlrZnJlZShjbWQpOworCWtmcmVlKGNvbW0pOwogCiAJLyoKIAkgKiBVcGRhdGUg YWxsIHRoZSByaW5ncyB3aXRoIHRoZSBsYXRlc3QgYW5kIGdyZWF0ZXN0IGZlbmNlLi4gdGhpcwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmggYi9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9ncHUuaAppbmRleCA0NzBmM2JiLi5lNjVmNTA3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9n cHUuaApAQCAtNjYsMTMgKzY2LDEzIEBAIHN0cnVjdCBtc21fZ3B1X2Z1bmNzIHsKICNpZmRlZiBD T05GSUdfREVCVUdfRlMKIAkvKiBzaG93IEdQVSBzdGF0dXMgaW4gZGVidWdmczogKi8KIAl2b2lk ICgqc2hvdykoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9ncHVfc3RhdGUgKnN0YXRl LAotCQkJc3RydWN0IHNlcV9maWxlICptKTsKKwkJCXN0cnVjdCBkcm1fcHJpbnRlciAqcCk7CiAJ LyogZm9yIGdlbmVyYXRpb24gc3BlY2lmaWMgZGVidWdmczogKi8KIAlpbnQgKCpkZWJ1Z2ZzX2lu aXQpKHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKTsKICNlbmRp ZgogCWludCAoKmdwdV9idXN5KShzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCB1aW50NjRfdCAqdmFsdWUp OwogCXN0cnVjdCBtc21fZ3B1X3N0YXRlICooKmdwdV9zdGF0ZV9nZXQpKHN0cnVjdCBtc21fZ3B1 ICpncHUpOwotCXZvaWQgKCpncHVfc3RhdGVfcHV0KShzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqc3Rh dGUpOworCWludCAoKmdwdV9zdGF0ZV9wdXQpKHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSk7 CiB9OwogCiBzdHJ1Y3QgbXNtX2dwdSB7CkBAIC0xMzMsNiArMTMzLDggQEAgc3RydWN0IG1zbV9n cHUgewogCQl1NjQgYnVzeV9jeWNsZXM7CiAJCWt0aW1lX3QgdGltZTsKIAl9IGRldmZyZXE7CisK KwlzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqY3Jhc2hzdGF0ZTsKIH07CiAKIC8qIEl0IHR1cm5zIG91 dCB0aGF0IGFsbCB0YXJnZXRzIHVzZSB0aGUgc2FtZSByaW5nYnVmZmVyIHNpemUgKi8KQEAgLTE4 MCw2ICsxODIsNyBAQCBzdHJ1Y3QgbXNtX2dwdV9zdWJtaXRxdWV1ZSB7CiB9OwogCiBzdHJ1Y3Qg bXNtX2dwdV9zdGF0ZSB7CisJc3RydWN0IGtyZWYgcmVmOwogCXN0cnVjdCB0aW1ldmFsIHRpbWU7 CiAKIAlzdHJ1Y3QgewpAQCAtMTkzLDYgKzE5Niw5IEBAIHN0cnVjdCBtc21fZ3B1X3N0YXRlIHsK IAl1MzIgKnJlZ2lzdGVyczsKIAogCXUzMiByYmJtX3N0YXR1czsKKworCWNoYXIgKmNvbW07CisJ Y2hhciAqY21kOwogfTsKIAogc3RhdGljIGlubGluZSB2b2lkIGdwdV93cml0ZShzdHJ1Y3QgbXNt X2dwdSAqZ3B1LCB1MzIgcmVnLCB1MzIgZGF0YSkKQEAgLTI3NCw0ICsyODAsMzIgQEAgc3RhdGlj IGlubGluZSB2b2lkIG1zbV9zdWJtaXRxdWV1ZV9wdXQoc3RydWN0IG1zbV9ncHVfc3VibWl0cXVl dWUgKnF1ZXVlKQogCQlrcmVmX3B1dCgmcXVldWUtPnJlZiwgbXNtX3N1Ym1pdHF1ZXVlX2Rlc3Ry b3kpOwogfQogCitzdGF0aWMgaW5saW5lIHN0cnVjdCBtc21fZ3B1X3N0YXRlICptc21fZ3B1X2Ny YXNoc3RhdGVfZ2V0KHN0cnVjdCBtc21fZ3B1ICpncHUpCit7CisJc3RydWN0IG1zbV9ncHVfc3Rh dGUgKnN0YXRlID0gTlVMTDsKKworCW11dGV4X2xvY2soJmdwdS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgp OworCisJaWYgKGdwdS0+Y3Jhc2hzdGF0ZSkgeworCQlrcmVmX2dldCgmZ3B1LT5jcmFzaHN0YXRl LT5yZWYpOworCQlzdGF0ZSA9IGdwdS0+Y3Jhc2hzdGF0ZTsKKwl9CisKKwltdXRleF91bmxvY2so JmdwdS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0dXJuIHN0YXRlOworfQorCitzdGF0aWMg aW5saW5lIHZvaWQgbXNtX2dwdV9jcmFzaHN0YXRlX3B1dChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQor eworCW11dGV4X2xvY2soJmdwdS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJaWYgKGdwdS0+Y3Jh c2hzdGF0ZSkgeworCQlpZiAoZ3B1LT5mdW5jcy0+Z3B1X3N0YXRlX3B1dChncHUtPmNyYXNoc3Rh dGUpKQorCQkJZ3B1LT5jcmFzaHN0YXRlID0gTlVMTDsKKwl9CisKKwltdXRleF91bmxvY2soJmdw dS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworfQorCiAjZW5kaWYgLyogX19NU01fR1BVX0hfXyAqLwot LSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=