From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 088/190] drm/i915: Move execlists interrupt based submission to a bottom-half Date: Mon, 11 Jan 2016 10:44:32 +0000 Message-ID: <1452509174-16671-2-git-send-email-chris@chris-wilson.co.uk> References: <1452503961-14837-1-git-send-email-chris@chris-wilson.co.uk> <1452509174-16671-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8AFB86E2CB for ; Mon, 11 Jan 2016 02:46:27 -0800 (PST) Received: by mail-wm0-f66.google.com with SMTP id b14so25701287wmb.1 for ; Mon, 11 Jan 2016 02:46:27 -0800 (PST) In-Reply-To: <1452509174-16671-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org WyAgMTk2Ljk4ODIwNF0gY2xvY2tzb3VyY2U6IHRpbWVrZWVwaW5nIHdhdGNoZG9nOiBNYXJraW5n IGNsb2Nrc291cmNlICd0c2MnIGFzIHVuc3RhYmxlIGJlY2F1c2UgdGhlIHNrZXcgaXMgdG9vIGxh cmdlOgpbICAxOTYuOTg4NTEyXSBjbG9ja3NvdXJjZTogICAgICAgICAgICAgICAgICAgICAgICdy ZWZpbmVkLWppZmZpZXMnIHdkX25vdzogZmZmZjliNDggd2RfbGFzdDogZmZmZjlhY2IgbWFzazog ZmZmZmZmZmYKWyAgMTk2Ljk4ODU1OV0gY2xvY2tzb3VyY2U6ICAgICAgICAgICAgICAgICAgICAg ICAndHNjJyBjc19ub3c6IDRmY2ZhODQzNTQgY3NfbGFzdDogNGY5NTQyNWU5OCBtYXNrOiBmZmZm ZmZmZmZmZmZmZmZmClsgIDE5Ni45OTIxMTVdIGNsb2Nrc291cmNlOiBTd2l0Y2hlZCB0byBjbG9j a3NvdXJjZSByZWZpbmVkLWppZmZpZXMKCkZvbGxvd2VkIGJ5IGEgaGFyZCBsb2NrdXAuCgpTaWdu ZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgfCAgIDUgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8ICAxNSArLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMgICAgICAgIHwgMTY0ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCAgICAgICAgfCAgIDMgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8ICAgMSArCiA2IGZpbGVzIGNoYW5n ZWQsIDk4IGluc2VydGlvbnMoKyksIDkyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKaW5kZXggMzc4YmM3MzI5NmFhLi4xNWE2ZmRkZmI3OWIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0yMDk0LDcgKzIwOTQsNiBAQCBzdGF0aWMgaW50IGk5 MTVfZXhlY2xpc3RzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAlmb3JfZWFjaF9y aW5nKHJpbmcsIGRldl9wcml2LCByaW5nX2lkKSB7CiAJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqaGVhZF9yZXEgPSBOVUxMOwogCQlpbnQgY291bnQgPSAwOwotCQl1bnNpZ25lZCBsb25n IGZsYWdzOwogCiAJCXNlcV9wcmludGYobSwgIiVzXG4iLCByaW5nLT5uYW1lKTsKIApAQCAtMjEy MSwxMiArMjEyMCwxMiBAQCBzdGF0aWMgaW50IGk5MTVfZXhlY2xpc3RzKHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqZGF0YSkKIAkJCQkgICBpLCBzdGF0dXMsIGN0eF9pZCk7CiAJCX0KIAotCQlz cGluX2xvY2tfaXJxc2F2ZSgmcmluZy0+ZXhlY2xpc3RfbG9jaywgZmxhZ3MpOworCQlzcGluX2xv Y2soJnJpbmctPmV4ZWNsaXN0X2xvY2spOwogCQlsaXN0X2Zvcl9lYWNoKGN1cnNvciwgJnJpbmct PmV4ZWNsaXN0X3F1ZXVlKQogCQkJY291bnQrKzsKIAkJaGVhZF9yZXEgPSBsaXN0X2ZpcnN0X2Vu dHJ5X29yX251bGwoJnJpbmctPmV4ZWNsaXN0X3F1ZXVlLAogCQkJCXN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCwgZXhlY2xpc3RfbGluayk7Ci0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJp bmctPmV4ZWNsaXN0X2xvY2ssIGZsYWdzKTsKKwkJc3Bpbl91bmxvY2soJnJpbmctPmV4ZWNsaXN0 X2xvY2spOwogCiAJCXNlcV9wcmludGYobSwgIlx0JWQgcmVxdWVzdHMgaW4gcXVldWVcbiIsIGNv dW50KTsKIAkJaWYgKGhlYWRfcmVxKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCAzOTFm ODQwZDI5YjcuLmViODc1ZWNkNzkwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC0yMTky LDEzICsyMTkyLDEzIEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3Jlc2V0X3JpbmdfY2xlYW51cChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJICovCiAKIAlpZiAoaTkxNS5lbmFibGVf ZXhlY2xpc3RzKSB7Ci0JCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+ZXhlY2xpc3RfbG9jayk7CisJ CXNwaW5fbG9jaygmZW5naW5lLT5leGVjbGlzdF9sb2NrKTsKIAogCQkvKiBsaXN0X3NwbGljZV90 YWlsX2luaXQgY2hlY2tzIGZvciBlbXB0eSBsaXN0cyAqLwogCQlsaXN0X3NwbGljZV90YWlsX2lu aXQoJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUsCiAJCQkJICAgICAgJmVuZ2luZS0+ZXhlY2xpc3Rf cmV0aXJlZF9yZXFfbGlzdCk7CiAKLQkJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPmV4ZWNsaXN0 X2xvY2spOworCQlzcGluX3VubG9jaygmZW5naW5lLT5leGVjbGlzdF9sb2NrKTsKIAkJaW50ZWxf ZXhlY2xpc3RzX3JldGlyZV9yZXF1ZXN0cyhlbmdpbmUpOwogCX0KIApAQCAtMjI5MCwxNSArMjI5 MCw4IEBAIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CWZvcl9lYWNoX3JpbmcocmluZywgZGV2X3ByaXYsIGkpIHsKIAkJaTkxNV9nZW1fcmV0aXJlX3Jl cXVlc3RzX3JpbmcocmluZyk7CiAJCWlkbGUgJj0gbGlzdF9lbXB0eSgmcmluZy0+cmVxdWVzdF9s aXN0KTsKLQkJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgewotCQkJdW5zaWduZWQgbG9uZyBm bGFnczsKLQotCQkJc3Bpbl9sb2NrX2lycXNhdmUoJnJpbmctPmV4ZWNsaXN0X2xvY2ssIGZsYWdz KTsKLQkJCWlkbGUgJj0gbGlzdF9lbXB0eSgmcmluZy0+ZXhlY2xpc3RfcXVldWUpOwotCQkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmcmluZy0+ZXhlY2xpc3RfbG9jaywgZmxhZ3MpOwotCi0JCQlp bnRlbF9leGVjbGlzdHNfcmV0aXJlX3JlcXVlc3RzKHJpbmcpOwotCQl9CisJCWlmIChpOTE1LmVu YWJsZV9leGVjbGlzdHMpCisJCQlpZGxlICY9IGludGVsX2V4ZWNsaXN0c19yZXRpcmVfcmVxdWVz dHMocmluZyk7CiAJfQogCiAJaWYgKGlkbGUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwppbmRleCBj ZTA0N2FjODRmNWYuLmIyZWYyZDBjMjExYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC0x MzE2LDcgKzEzMTYsNyBAQCBnZW44X2NzX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcsIHUzMiBpaXIsIGludCB0ZXN0X3NoaWZ0KQogCWlmIChpaXIgJiAoR1RfUkVOREVS X1VTRVJfSU5URVJSVVBUIDw8IHRlc3Rfc2hpZnQpKQogCQlub3RpZnlfcmluZyhyaW5nKTsKIAlp ZiAoaWlyICYgKEdUX0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQVCA8PCB0ZXN0X3NoaWZ0KSkKLQkJ aW50ZWxfbHJjX2lycV9oYW5kbGVyKHJpbmcpOworCQl3YWtlX3VwX3Byb2Nlc3MocmluZy0+ZXhl Y2xpc3RzX3N1Ym1pdCk7CiB9CiAKIHN0YXRpYyBpcnFyZXR1cm5fdCBnZW44X2d0X2lycV9oYW5k bGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMKaW5kZXggYjVmNjJiNWY0OTEzLi5kZTU4ODllOTVkNmQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5jCkBAIC0xMzIsNiArMTMyLDggQEAKICAqCiAgKi8KIAorI2luY2x1ZGUgPGxpbnV4 L2t0aHJlYWQuaD4KKwogI2luY2x1ZGUgPGRybS9kcm1QLmg+CiAjaW5jbHVkZSA8ZHJtL2k5MTVf ZHJtLmg+CiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKQEAgLTM0MSw3ICszNDMsNyBAQCBzdGF0aWMg dm9pZCBleGVjbGlzdHNfZWxzcF93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJx MCwKIAlycTAtPmVsc3Bfc3VibWl0dGVkKys7CiAKIAkvKiBZb3UgbXVzdCBhbHdheXMgd3JpdGUg Ym90aCBkZXNjcmlwdG9ycyBpbiB0aGUgb3JkZXIgYmVsb3cuICovCi0Jc3Bpbl9sb2NrKCZkZXZf cHJpdi0+dW5jb3JlLmxvY2spOworCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT51bmNvcmUubG9j ayk7CiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXRfX2xvY2tlZChkZXZfcHJpdiwgRk9SQ0VX QUtFX0FMTCk7CiAJSTkxNV9XUklURV9GVyhSSU5HX0VMU1AoZW5naW5lKSwgdXBwZXJfMzJfYml0 cyhkZXNjWzFdKSk7CiAJSTkxNV9XUklURV9GVyhSSU5HX0VMU1AoZW5naW5lKSwgbG93ZXJfMzJf Yml0cyhkZXNjWzFdKSk7CkBAIC0zNTMsNyArMzU1LDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3Rz X2Vsc3Bfd3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTAsCiAJLyogRUxTUCBp cyBhIHdvIHJlZ2lzdGVyLCB1c2UgYW5vdGhlciBuZWFyYnkgcmVnIGZvciBwb3N0aW5nICovCiAJ UE9TVElOR19SRUFEX0ZXKFJJTkdfRVhFQ0xJU1RfU1RBVFVTX0xPKGVuZ2luZSkpOwogCWludGVs X3VuY29yZV9mb3JjZXdha2VfcHV0X19sb2NrZWQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwot CXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOworCXNwaW5fdW5sb2NrX2lycSgm ZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKIH0KIAogc3RhdGljIGludCBleGVjbGlzdHNfdXBkYXRl X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKQEAgLTQ5Miw4OSArNDk0 LDg0IEBAIHN0YXRpYyBib29sIGV4ZWNsaXN0c19jaGVja19yZW1vdmVfcmVxdWVzdChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nLAogCXJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQg Z2V0X2NvbnRleHRfc3RhdHVzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCi0JCQkgICAg ICAgdTggcmVhZF9wb2ludGVyLAotCQkJICAgICAgIHUzMiAqc3RhdHVzLCB1MzIgKmNvbnRleHRf aWQpCitzdGF0aWMgdm9pZCBzZXRfcnRwcmlvcml0eSh2b2lkKQogewotCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7Ci0KLQlpZiAoV0FS Tl9PTihyZWFkX3BvaW50ZXIgPj0gR0VOOF9DU0JfRU5UUklFUykpCi0JCXJldHVybjsKLQotCSpz dGF0dXMgPSBJOTE1X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19CVUZfTE8ocmluZywgcmVhZF9w b2ludGVyKSk7Ci0JKmNvbnRleHRfaWQgPSBJOTE1X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19C VUZfSEkocmluZywgcmVhZF9wb2ludGVyKSk7CisJIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbSA9 IHsgLnNjaGVkX3ByaW9yaXR5ID0gTUFYX1VTRVJfUlRfUFJJTy8yLTEgfTsKKwkgc2NoZWRfc2V0 c2NoZWR1bGVyX25vY2hlY2soY3VycmVudCwgU0NIRURfRklGTywgJnBhcmFtKTsKIH0KIAotLyoq Ci0gKiBpbnRlbF9scmNfaXJxX2hhbmRsZXIoKSAtIGhhbmRsZSBDb250ZXh0IFN3aXRjaCBpbnRl cnJ1cHRzCi0gKiBAcmluZzogRW5naW5lIENvbW1hbmQgU3RyZWFtZXIgdG8gaGFuZGxlLgotICoK LSAqIENoZWNrIHRoZSB1bnJlYWQgQ29udGV4dCBTdGF0dXMgQnVmZmVycyBhbmQgbWFuYWdlIHRo ZSBzdWJtaXNzaW9uIG9mIG5ldwotICogY29udGV4dHMgdG8gdGhlIEVMU1AgYWNjb3JkaW5nbHku Ci0gKi8KLXZvaWQgaW50ZWxfbHJjX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcpCitzdGF0aWMgaW50IGludGVsX2V4ZWNsaXN0c19zdWJtaXQodm9pZCAqYXJnKQogewot CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZh dGU7Ci0JdTMyIHN0YXR1c19wb2ludGVyOwotCXU4IHJlYWRfcG9pbnRlcjsKLQl1OCB3cml0ZV9w b2ludGVyOwotCXUzMiBzdGF0dXMgPSAwOwotCXUzMiBzdGF0dXNfaWQ7Ci0JdTMyIHN1Ym1pdF9j b250ZXh0cyA9IDA7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IGFyZzsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByaW5nLT5pOTE1OwogCi0Jc3RhdHVzX3Bv aW50ZXIgPSBJOTE1X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19QVFIocmluZykpOworCXNldF9y dHByaW9yaXR5KCk7CiAKLQlyZWFkX3BvaW50ZXIgPSByaW5nLT5uZXh0X2NvbnRleHRfc3RhdHVz X2J1ZmZlcjsKLQl3cml0ZV9wb2ludGVyID0gR0VOOF9DU0JfV1JJVEVfUFRSKHN0YXR1c19wb2lu dGVyKTsKLQlpZiAocmVhZF9wb2ludGVyID4gd3JpdGVfcG9pbnRlcikKLQkJd3JpdGVfcG9pbnRl ciArPSBHRU44X0NTQl9FTlRSSUVTOworCWRvIHsKKwkJdTMyIHN0YXR1czsKKwkJdTMyIHN0YXR1 c19pZDsKKwkJdTMyIHN1Ym1pdF9jb250ZXh0czsKKwkJdTggaGVhZCwgdGFpbDsKIAotCXNwaW5f bG9jaygmcmluZy0+ZXhlY2xpc3RfbG9jayk7CisJCXNldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5U RVJSVVBUSUJMRSk7CisJCWhlYWQgPSByaW5nLT5uZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlcjsK KwkJdGFpbCA9IEk5MTVfUkVBRChSSU5HX0NPTlRFWFRfU1RBVFVTX1BUUihyaW5nKSkgJiBHRU44 X0NTQl9QVFJfTUFTSzsKKwkJaWYgKGhlYWQgPT0gdGFpbCkgeworCQkJaWYgKGt0aHJlYWRfc2hv dWxkX3N0b3AoKSkKKwkJCQlyZXR1cm4gMDsKIAotCXdoaWxlIChyZWFkX3BvaW50ZXIgPCB3cml0 ZV9wb2ludGVyKSB7CisJCQlzY2hlZHVsZSgpOworCQkJY29udGludWU7CisJCX0KKwkJX19zZXRf Y3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpOwogCi0JCWdldF9jb250ZXh0X3N0YXR1cyhyaW5n LCArK3JlYWRfcG9pbnRlciAlIEdFTjhfQ1NCX0VOVFJJRVMsCi0JCQkJICAgJnN0YXR1cywgJnN0 YXR1c19pZCk7CisJCWlmIChoZWFkID4gdGFpbCkKKwkJCXRhaWwgKz0gR0VOOF9DU0JfRU5UUklF UzsKIAotCQlpZiAoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0lETEVfQUNUSVZFKQotCQkJY29u dGludWU7CisJCXN0YXR1cyA9IDA7CisJCXN1Ym1pdF9jb250ZXh0cyA9IDA7CiAKLQkJaWYgKHN0 YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19QUkVFTVBURUQpIHsKLQkJCWlmIChzdGF0dXMgJiBHRU44 X0NUWF9TVEFUVVNfTElURV9SRVNUT1JFKSB7Ci0JCQkJaWYgKGV4ZWNsaXN0c19jaGVja19yZW1v dmVfcmVxdWVzdChyaW5nLCBzdGF0dXNfaWQpKQotCQkJCQlXQVJOKDEsICJMaXRlIFJlc3RvcmVk IHJlcXVlc3QgcmVtb3ZlZCBmcm9tIHF1ZXVlXG4iKTsKLQkJCX0gZWxzZQotCQkJCVdBUk4oMSwg IlByZWVtcHRpb24gd2l0aG91dCBMaXRlIFJlc3RvcmVcbiIpOwotCQl9CisJCXNwaW5fbG9jaygm cmluZy0+ZXhlY2xpc3RfbG9jayk7CiAKLQkJaWYgKChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNf QUNUSVZFX0lETEUpIHx8Ci0JCSAgICAoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0VMRU1FTlRf U1dJVENIKSkgewotCQkJaWYgKGV4ZWNsaXN0c19jaGVja19yZW1vdmVfcmVxdWVzdChyaW5nLCBz dGF0dXNfaWQpKQotCQkJCXN1Ym1pdF9jb250ZXh0cysrOwotCQl9Ci0JfQorCQl3aGlsZSAoaGVh ZCsrIDwgdGFpbCkgeworCQkJc3RhdHVzID0gSTkxNV9SRUFEKFJJTkdfQ09OVEVYVF9TVEFUVVNf QlVGX0xPKHJpbmcsIGhlYWQgJSBHRU44X0NTQl9FTlRSSUVTKSk7CisJCQlzdGF0dXNfaWQgPSBJ OTE1X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19CVUZfSEkocmluZywgaGVhZCAlIEdFTjhfQ1NC X0VOVFJJRVMpKTsKIAotCWlmIChkaXNhYmxlX2xpdGVfcmVzdG9yZV93YShyaW5nKSkgewotCQkv KiBQcmV2ZW50IGEgY3R4IHRvIHByZWVtcHQgaXRzZWxmICovCi0JCWlmICgoc3RhdHVzICYgR0VO OF9DVFhfU1RBVFVTX0FDVElWRV9JRExFKSAmJgotCQkgICAgKHN1Ym1pdF9jb250ZXh0cyAhPSAw KSkKLQkJCWV4ZWNsaXN0c19jb250ZXh0X3VucXVldWUocmluZyk7Ci0JfSBlbHNlIGlmIChzdWJt aXRfY29udGV4dHMgIT0gMCkgewotCQlleGVjbGlzdHNfY29udGV4dF91bnF1ZXVlKHJpbmcpOwot CX0KKwkJCWlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUpCisJCQkJY29u dGludWU7CiAKLQlzcGluX3VubG9jaygmcmluZy0+ZXhlY2xpc3RfbG9jayk7CisJCQlpZiAoc3Rh dHVzICYgR0VOOF9DVFhfU1RBVFVTX1BSRUVNUFRFRCkgeworCQkJCWlmIChzdGF0dXMgJiBHRU44 X0NUWF9TVEFUVVNfTElURV9SRVNUT1JFKSB7CisJCQkJCWlmIChleGVjbGlzdHNfY2hlY2tfcmVt b3ZlX3JlcXVlc3QocmluZywgc3RhdHVzX2lkKSkKKwkJCQkJCVdBUk4oMSwgIkxpdGUgUmVzdG9y ZWQgcmVxdWVzdCByZW1vdmVkIGZyb20gcXVldWVcbiIpOworCQkJCX0gZWxzZQorCQkJCQlXQVJO KDEsICJQcmVlbXB0aW9uIHdpdGhvdXQgTGl0ZSBSZXN0b3JlXG4iKTsKKwkJCX0KIAotCWlmICh1 bmxpa2VseShzdWJtaXRfY29udGV4dHMgPiAyKSkKLQkJRFJNX0VSUk9SKCJNb3JlIHRoYW4gdHdv IGNvbnRleHQgY29tcGxldGUgZXZlbnRzP1xuIik7CisJCQlpZiAoKHN0YXR1cyAmIEdFTjhfQ1RY X1NUQVRVU19BQ1RJVkVfSURMRSkgfHwKKwkJCSAgICAoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVT X0VMRU1FTlRfU1dJVENIKSkgeworCQkJCWlmIChleGVjbGlzdHNfY2hlY2tfcmVtb3ZlX3JlcXVl c3QocmluZywgc3RhdHVzX2lkKSkKKwkJCQkJc3VibWl0X2NvbnRleHRzKys7CisJCQl9CisJCX0K KworCQlpZiAoZGlzYWJsZV9saXRlX3Jlc3RvcmVfd2EocmluZykpIHsKKwkJCS8qIFByZXZlbnQg YSBjdHggdG8gcHJlZW1wdCBpdHNlbGYgKi8KKwkJCWlmICgoc3RhdHVzICYgR0VOOF9DVFhfU1RB VFVTX0FDVElWRV9JRExFKSAmJgorCQkJCQkoc3VibWl0X2NvbnRleHRzICE9IDApKQorCQkJCWV4 ZWNsaXN0c19jb250ZXh0X3VucXVldWUocmluZyk7CisJCX0gZWxzZSBpZiAoc3VibWl0X2NvbnRl eHRzICE9IDApIHsKKwkJCWV4ZWNsaXN0c19jb250ZXh0X3VucXVldWUocmluZyk7CisJCX0KIAot CXJpbmctPm5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyID0gd3JpdGVfcG9pbnRlciAlIEdFTjhf Q1NCX0VOVFJJRVM7CisJCXNwaW5fdW5sb2NrKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKIAotCS8q IFVwZGF0ZSB0aGUgcmVhZCBwb2ludGVyIHRvIHRoZSBvbGQgd3JpdGUgcG9pbnRlci4gTWFudWFs IHJpbmdidWZmZXIKLQkgKiBtYW5hZ2VtZW50IGZ0dyA8L3NhcmNhc20+ICovCi0JSTkxNV9XUklU RShSSU5HX0NPTlRFWFRfU1RBVFVTX1BUUihyaW5nKSwKLQkJICAgX01BU0tFRF9GSUVMRChHRU44 X0NTQl9SRUFEX1BUUl9NQVNLLAotCQkJCSByaW5nLT5uZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZl ciA8PCA4KSk7CisJCVdBUk4oc3VibWl0X2NvbnRleHRzID4gMiwgIk1vcmUgdGhhbiB0d28gY29u dGV4dCBjb21wbGV0ZSBldmVudHM/XG4iKTsKKwkJcmluZy0+bmV4dF9jb250ZXh0X3N0YXR1c19i dWZmZXIgPSB0YWlsICUgR0VOOF9DU0JfRU5UUklFUzsKKwkJSTkxNV9XUklURShSSU5HX0NPTlRF WFRfU1RBVFVTX1BUUihyaW5nKSwKKwkJCSAgIF9NQVNLRURfRklFTEQoR0VOOF9DU0JfUFRSX01B U0sgPDwgOCwKKwkJCQkJIHJpbmctPm5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyPDw4KSk7CisJ fSB3aGlsZSAoMSk7CiB9CiAKIHN0YXRpYyBpbnQgZXhlY2xpc3RzX2NvbnRleHRfcXVldWUoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQpAQCAtNTg1LDcgKzU4Miw3IEBAIHN0 YXRpYyBpbnQgZXhlY2xpc3RzX2NvbnRleHRfcXVldWUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXF1ZXN0KQogCiAJaTkxNV9nZW1fcmVxdWVzdF9nZXQocmVxdWVzdCk7CiAKLQlzcGlu X2xvY2tfaXJxKCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2spOworCXNwaW5fbG9jaygmZW5naW5lLT5l eGVjbGlzdF9sb2NrKTsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkoY3Vyc29yLCAmZW5naW5lLT5l eGVjbGlzdF9xdWV1ZSwgZXhlY2xpc3RfbGluaykKIAkJaWYgKCsrbnVtX2VsZW1lbnRzID4gMikK QEAgLTYxMSw3ICs2MDgsNyBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19jb250ZXh0X3F1ZXVlKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAlpZiAobnVtX2VsZW1lbnRzID09 IDApCiAJCWV4ZWNsaXN0c19jb250ZXh0X3VucXVldWUoZW5naW5lKTsKIAotCXNwaW5fdW5sb2Nr X2lycSgmZW5naW5lLT5leGVjbGlzdF9sb2NrKTsKKwlzcGluX3VubG9jaygmZW5naW5lLT5leGVj bGlzdF9sb2NrKTsKIAogCXJldHVybiAwOwogfQpAQCAtNjY3LDE5ICs2NjQsMTkgQEAgaW50ZWxf bG9naWNhbF9yaW5nX2FkdmFuY2VfYW5kX3N1Ym1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcXVlc3QpCiAJCWV4ZWNsaXN0c19jb250ZXh0X3F1ZXVlKHJlcXVlc3QpOwogfQogCi12 b2lkIGludGVsX2V4ZWNsaXN0c19yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZykKK2Jvb2wgaW50ZWxfZXhlY2xpc3RzX3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LCAqdG1wOwogCXN0cnVjdCBsaXN0X2hlYWQgcmV0aXJlZF9saXN0OwogCiAJV0FSTl9PTighbXV0 ZXhfaXNfbG9ja2VkKCZyaW5nLT5kZXYtPnN0cnVjdF9tdXRleCkpOwogCWlmIChsaXN0X2VtcHR5 KCZyaW5nLT5leGVjbGlzdF9yZXRpcmVkX3JlcV9saXN0KSkKLQkJcmV0dXJuOworCQlnb3RvIG91 dDsKIAogCUlOSVRfTElTVF9IRUFEKCZyZXRpcmVkX2xpc3QpOwotCXNwaW5fbG9ja19pcnEoJnJp bmctPmV4ZWNsaXN0X2xvY2spOworCXNwaW5fbG9jaygmcmluZy0+ZXhlY2xpc3RfbG9jayk7CiAJ bGlzdF9yZXBsYWNlX2luaXQoJnJpbmctPmV4ZWNsaXN0X3JldGlyZWRfcmVxX2xpc3QsICZyZXRp cmVkX2xpc3QpOwotCXNwaW5fdW5sb2NrX2lycSgmcmluZy0+ZXhlY2xpc3RfbG9jayk7CisJc3Bp bl91bmxvY2soJnJpbmctPmV4ZWNsaXN0X2xvY2spOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKHJlcSwgdG1wLCAmcmV0aXJlZF9saXN0LCBleGVjbGlzdF9saW5rKSB7CiAJCXN0cnVjdCBp bnRlbF9jb250ZXh0ICpjdHggPSByZXEtPmN0eDsKQEAgLTY5MSw2ICs2ODgsOSBAQCB2b2lkIGlu dGVsX2V4ZWNsaXN0c19yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZykKIAkJbGlzdF9kZWwoJnJlcS0+ZXhlY2xpc3RfbGluayk7CiAJCWk5MTVfZ2VtX3JlcXVlc3Rf cHV0KHJlcSk7CiAJfQorCitvdXQ6CisJcmV0dXJuIGxpc3RfZW1wdHkoJnJpbmctPmV4ZWNsaXN0 X3F1ZXVlKTsKIH0KIAogdm9pZCBpbnRlbF9sb2dpY2FsX3Jpbmdfc3RvcChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nKQpAQCAtMTUyNSw2ICsxNTI1LDkgQEAgdm9pZCBpbnRlbF9sb2dpY2Fs X3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCWlmICghaW50ZWxf ZW5naW5lX2luaXRpYWxpemVkKHJpbmcpKQogCQlyZXR1cm47CiAKKwlpZiAocmluZy0+ZXhlY2xp c3RzX3N1Ym1pdCkKKwkJa3RocmVhZF9zdG9wKHJpbmctPmV4ZWNsaXN0c19zdWJtaXQpOworCiAJ aWYgKHJpbmctPmJ1ZmZlcikgewogCQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSByaW5nLT5pOTE1OwogCQlpbnRlbF9sb2dpY2FsX3Jpbmdfc3RvcChyaW5nKTsKQEAgLTE1NTAs MTMgKzE1NTMsMTUgQEAgdm9pZCBpbnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nKQogCiBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ19pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiB7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCB0 YXNrX3N0cnVjdCAqdGFzazsKIAlpbnQgcmV0OwogCiAJLyogSW50ZW50aW9uYWxseSBsZWZ0IGJs YW5rLiAqLwogCXJpbmctPmJ1ZmZlciA9IE5VTEw7CiAKIAlyaW5nLT5kZXYgPSBkZXY7Ci0Jcmlu Zy0+aTkxNSA9IHRvX2k5MTUoZGV2KTsKKwlyaW5nLT5pOTE1ID0gZGV2X3ByaXY7CiAJcmluZy0+ ZmVuY2VfY29udGV4dCA9IGZlbmNlX2NvbnRleHRfYWxsb2MoMSk7CiAJSU5JVF9MSVNUX0hFQUQo JnJpbmctPnJlcXVlc3RfbGlzdCk7CiAJaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KGRldiwgJnJp bmctPmJhdGNoX3Bvb2wpOwpAQCAtMTU4Nyw2ICsxNTkyLDE1IEBAIHN0YXRpYyBpbnQgbG9naWNh bF9yaW5nX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluCiAJCWdvdG8gZXJyb3I7CiAJfQogCisJcmluZy0+bmV4dF9jb250ZXh0X3N0YXR1c19i dWZmZXIgPQorCQkJSTkxNV9SRUFEKFJJTkdfQ09OVEVYVF9TVEFUVVNfUFRSKHJpbmcpKSAmIEdF TjhfQ1NCX1BUUl9NQVNLOworCXRhc2sgPSBrdGhyZWFkX3J1bihpbnRlbF9leGVjbGlzdHNfc3Vi bWl0LCByaW5nLAorCQkJICAgImlycS9pOTE1OiVkZSIsIHJpbmctPmlkKTsKKwlpZiAoSVNfRVJS KHRhc2spKQorCQlnb3RvIGVycm9yOworCisJcmluZy0+ZXhlY2xpc3RzX3N1Ym1pdCA9IHRhc2s7 CisKIAlyZXR1cm4gMDsKIAogZXJyb3I6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCmluZGV4IDg3 YmM5YWNjNDIyNC4uMzNmODJhODQwNjVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaApAQCAt ODEsNyArODEsNiBAQCB1aW50NjRfdCBpbnRlbF9scl9jb250ZXh0X2Rlc2NyaXB0b3Ioc3RydWN0 IGludGVsX2NvbnRleHQgKmN0eCwKIGludCBpbnRlbF9zYW5pdGl6ZV9lbmFibGVfZXhlY2xpc3Rz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBlbmFibGVfZXhlY2xpc3RzKTsKIHUzMiBpbnRl bF9leGVjbGlzdHNfY3R4X2lkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqKTsK IAotdm9pZCBpbnRlbF9scmNfaXJxX2hhbmRsZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu Zyk7Ci12b2lkIGludGVsX2V4ZWNsaXN0c19yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZyk7Citib29sIGludGVsX2V4ZWNsaXN0c19yZXRpcmVfcmVxdWVzdHMoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7CiAKICNlbmRpZiAvKiBfSU5URUxfTFJDX0hfICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggYmI5MmQ4MzFhMTAw Li5lZGFmMDdiMjI5MmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgK QEAgLTI5MSw2ICsyOTEsNyBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAl9IHNlbWFwaG9y ZTsKIAogCS8qIEV4ZWNsaXN0cyAqLworCXN0cnVjdCB0YXNrX3N0cnVjdCAqZXhlY2xpc3RzX3N1 Ym1pdDsKIAlzcGlubG9ja190IGV4ZWNsaXN0X2xvY2s7CiAJc3RydWN0IGxpc3RfaGVhZCBleGVj bGlzdF9xdWV1ZTsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGV4ZWNsaXN0X3JldGlyZWRfcmVxX2xpc3Q7 Ci0tIAoyLjcuMC5yYzMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==