From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 4/6] drm/i915: Record the default hw state after reset upon load Date: Thu, 2 Nov 2017 12:42:24 +0000 Message-ID: <20171102124226.30086-5-chris@chris-wilson.co.uk> References: <20171102124226.30086-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 45D736E8F8 for ; Thu, 2 Nov 2017 12:43:11 +0000 (UTC) In-Reply-To: <20171102124226.30086-1-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 VGFrZSBhIGNvcHkgb2YgdGhlIEhXIHN0YXRlIGFmdGVyIGEgcmVzZXQgdXBvbiBtb2R1bGUgbG9h ZGluZyBieQpleGVjdXRpbmcgYSBjb250ZXh0IHN3aXRjaCBmcm9tIGEgYmxhbmsgY29udGV4dCB0 byB0aGUga2VybmVsIGNvbnRleHQsCnRodXMgc2F2aW5nIHRoZSBkZWZhdWx0IGh3IHN0YXRlIG92 ZXIgdGhlIGJsYW5rIGNvbnRleHQgaW1hZ2UuCldlIGNhbiB0aGVuIHVzZSB0aGUgZGVmYXVsdCBo dyBzdGF0ZSB0byBpbml0aWFsaXNlIGFueSBmdXR1cmUgY29udGV4dCwKZW5zdXJpbmcgdGhhdCBl YWNoIHN0YXJ0cyB3aXRoIHRoZSBkZWZhdWx0IHZpZXcgb2YgaHcgc3RhdGUuCgpTaWduZWQtb2Zm LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMgICAgfCAgMiAtCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgfCAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jICAgICAgICAgfCA2OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyB8IDUwICsrKy0tLS0tLS0tLS0t LS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oIHwgIDQg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICB8ICAzICsrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCAzNSArKysrKysrKysrLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIHwgNDcgKysrKysrKysr KysrKysrLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwg IDEgKwogOSBmaWxlcyBjaGFuZ2VkLCAxMzcgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCmluZGV4IGY2ZGVkNDc1YmIyYy4uNDJj YzYxMjMwY2E3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVy LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCkBAIC03MjMsOCAr NzIzLDYgQEAgaW50IGludGVsX3ZncHVfaW5pdF9ndnRfY29udGV4dChzdHJ1Y3QgaW50ZWxfdmdw dSAqdmdwdSkKIAlpZiAoSVNfRVJSKHZncHUtPnNoYWRvd19jdHgpKQogCQlyZXR1cm4gUFRSX0VS Uih2Z3B1LT5zaGFkb3dfY3R4KTsKIAotCXZncHUtPnNoYWRvd19jdHgtPmVuZ2luZVtSQ1NdLmlu aXRpYWxpc2VkID0gdHJ1ZTsKLQogCWJpdG1hcF96ZXJvKHZncHUtPnNoYWRvd19jdHhfZGVzY191 cGRhdGVkLCBJOTE1X05VTV9FTkdJTkVTKTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwppbmRleCAzOTg4M2NkOTE1ZGIuLmNmY2VmMTg5OWRhOCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTE5NzQsNyArMTk3NCw2IEBAIHN0YXRpYyBpbnQg aTkxNV9jb250ZXh0X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJ CXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9ICZjdHgtPmVuZ2luZVtlbmdpbmUtPmlkXTsKIAog CQkJc2VxX3ByaW50ZihtLCAiJXM6ICIsIGVuZ2luZS0+bmFtZSk7Ci0JCQlzZXFfcHV0YyhtLCBj ZS0+aW5pdGlhbGlzZWQgPyAnSScgOiAnaScpOwogCQkJaWYgKGNlLT5zdGF0ZSkKIAkJCQlkZXNj cmliZV9vYmoobSwgY2UtPnN0YXRlLT5vYmopOwogCQkJaWYgKGNlLT5yaW5nKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMKaW5kZXggZTM2YTNhODQwNTUyLi5lZDRiMTcwOGZlYzUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwpAQCAtNDk2Nyw2ICs0OTY3LDcxIEBAIGJvb2wgaW50ZWxfc2FuaXRpemVf c2VtYXBob3JlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCB2YWx1ZSkK IAlyZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGludCBfX2ludGVsX2VuZ2luZXNfcmVjb3JkX2Rl ZmF1bHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCXN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHg7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCWVudW0g aW50ZWxfZW5naW5lX2lkIGlkOworCWludCBlcnI7CisKKwkvKgorCSAqIEFzIHdlIHJlc2V0IHRo ZSBncHUgZHVyaW5nIHZlcnkgZWFybHkgc2FuaXRpc2F0aW9uLCB0aGUgY3VycmVudAorCSAqIHJl Z2lzdGVyIHN0YXRlIG9uIHRoZSBHUFUgc2hvdWxkIHJlZmxlY3QgaXRzIGRlZmF1bHRzIHZhbHVl cy4KKwkgKiBXZSBsb2FkIGEgY29udGV4dCBvbnRvIHRoZSBodyAod2l0aCByZXN0b3JlLWluaGli aXQpLCB0aGVuIHN3aXRjaAorCSAqIG92ZXIgdG8gYSBzZWNvbmQgY29udGV4dCB0byBzYXZlIHRo YXQgZGVmYXVsdCByZWdpc3RlciBzdGF0ZS4gV2UKKwkgKiBjYW4gdGhlbiBwcmltZSBldmVyeSBu ZXcgY29udGV4dCB3aXRoIHRoYXQgc3RhdGUgc28gdGhleSBhbGwgc3RhcnQKKwkgKiBmcm9tIGRl ZmF1bHRzLgorCSAqLworCisJY3R4ID0gaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfa2VybmVsKGk5 MTUsIDApOworCWlmIChJU19FUlIoY3R4KSkKKwkJcmV0dXJuIFBUUl9FUlIoY3R4KTsKKworCWZv cl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcnE7CisKKwkJcnEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4 KTsKKwkJaWYgKElTX0VSUihycSkpIHsKKwkJCWVyciA9IFBUUl9FUlIocnEpOworCQkJZ290byBv dXRfY3R4OworCQl9CisKKwkJZXJyID0gaTkxNV9zd2l0Y2hfY29udGV4dChycSk7CisJCWlmIChl bmdpbmUtPmluaXRfY29udGV4dCkKKwkJCWVyciA9IGVuZ2luZS0+aW5pdF9jb250ZXh0KHJxKTsK KworCQlfX2k5MTVfYWRkX3JlcXVlc3QocnEsIHRydWUpOworCQlpZiAoZXJyKQorCQkJZ290byBv dXRfY3R4OworCX0KKworCWVyciA9IGk5MTVfZ2VtX3N3aXRjaF90b19rZXJuZWxfY29udGV4dChp OTE1KTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dF9jdHg7CisKKwllcnIgPSBpOTE1X2dlbV93YWl0 X2Zvcl9pZGxlKGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpOworCWlmIChlcnIpCisJCWdvdG8gb3V0 X2N0eDsKKworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7CisJCWlmICghY3R4 LT5lbmdpbmVbaWRdLnN0YXRlKQorCQkJY29udGludWU7CisKKwkJZW5naW5lLT5kZWZhdWx0X3N0 YXRlID0KKwkJCWk5MTVfZ2VtX29iamVjdF9nZXQoY3R4LT5lbmdpbmVbaWRdLnN0YXRlLT5vYmop OworCisJCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fY3B1X2RvbWFpbihlbmdpbmUtPmRl ZmF1bHRfc3RhdGUsCisJCQkJCQkJZmFsc2UpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXRfY3R4 OworCX0KKworb3V0X2N0eDoKKwlpOTE1X2dlbV9jb250ZXh0X3NldF9jbG9zZWQoY3R4KTsKKwlp OTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOworCXJldHVybiBlcnI7Cit9CisKIGludCBpOTE1X2dl bV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlpbnQgcmV0OwpA QCAtNTAyMiw2ICs1MDg3LDEwIEBAIGludCBpOTE1X2dlbV9pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAogCWludGVsX2luaXRfZ3RfcG93ZXJzYXZlKGRldl9wcml2KTsK IAorCXJldCA9IF9faW50ZWxfZW5naW5lc19yZWNvcmRfZGVmYXVsdHMoZGV2X3ByaXYpOworCWlm IChyZXQpCisJCWdvdG8gb3V0X3VubG9jazsKKwogb3V0X3VubG9jazoKIAlpZiAocmV0ID09IC1F SU8pIHsKIAkJLyogQWxsb3cgZW5naW5lIGluaXRpYWxpc2F0aW9uIHRvIGZhaWwgYnkgbWFya2lu ZyB0aGUgR1BVIGFzCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXgg MTBhZmZiMzVhYzU2Li40OTljYzBmMjU2NTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMKQEAgLTM0Myw3ICszNDMsNyBAQCBzdGF0aWMgdm9pZCBfX2Rlc3Ryb3lfaHdf Y29udGV4dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogICogY29udGV4dCBzdGF0ZSBv ZiB0aGUgR1BVIGZvciBhcHBsaWNhdGlvbnMgdGhhdCBkb24ndCB1dGlsaXplIEhXIGNvbnRleHRz LCBhcwogICogd2VsbCBhcyBhbiBpZGxlIGNhc2UuCiAgKi8KLXN0YXRpYyBzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqCitzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCiBpOTE1X2dlbV9jcmVhdGVf Y29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQlzdHJ1Y3QgZHJt X2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYpCiB7CkBAIC00MTgsOCArNDE4LDggQEAgaTkx NV9nZW1fY29udGV4dF9jcmVhdGVfZ3Z0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJcmV0dXJu IGN0eDsKIH0KIAotc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKLWNyZWF0ZV9rZXJu ZWxfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHByaW8pCitzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqCitpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9rZXJuZWwoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludCBwcmlvKQogewogCXN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHg7CiAKQEAgLTQ3Myw3ICs0NzMsNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4 dHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaWRhX2luaXQoJmRl dl9wcml2LT5jb250ZXh0cy5od19pZGEpOwogCiAJLyogbG93ZXN0IHByaW9yaXR5OyBpZGxlIHRh c2sgKi8KLQljdHggPSBjcmVhdGVfa2VybmVsX2NvbnRleHQoZGV2X3ByaXYsIEk5MTVfUFJJT1JJ VFlfTUlOKTsKKwljdHggPSBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9rZXJuZWwoZGV2X3ByaXYs IEk5MTVfUFJJT1JJVFlfTUlOKTsKIAlpZiAoSVNfRVJSKGN0eCkpIHsKIAkJRFJNX0VSUk9SKCJG YWlsZWQgdG8gY3JlYXRlIGRlZmF1bHQgZ2xvYmFsIGNvbnRleHRcbiIpOwogCQllcnIgPSBQVFJf RVJSKGN0eCk7CkBAIC00ODcsNyArNDg3LDcgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRzX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWRldl9wcml2LT5rZXJuZWxfY29u dGV4dCA9IGN0eDsKIAogCS8qIGhpZ2hlc3QgcHJpb3JpdHk7IHByZWVtcHRpbmcgdGFzayAqLwot CWN0eCA9IGNyZWF0ZV9rZXJuZWxfY29udGV4dChkZXZfcHJpdiwgSU5UX01BWCk7CisJY3R4ID0g aTkxNV9nZW1fY29udGV4dF9jcmVhdGVfa2VybmVsKGRldl9wcml2LCBJTlRfTUFYKTsKIAlpZiAo SVNfRVJSKGN0eCkpIHsKIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRlZmF1bHQgcHJl ZW1wdCBjb250ZXh0XG4iKTsKIAkJZXJyID0gUFRSX0VSUihjdHgpOwpAQCAtNTIyLDI4ICs1MjIs NiBAQCB2b2lkIGk5MTVfZ2VtX2NvbnRleHRzX2xvc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogCQllbmdpbmUtPmNvbnRleHRfdW5waW4oZW5naW5lLCBlbmdpbmUtPmxhc3Rf cmV0aXJlZF9jb250ZXh0KTsKIAkJZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCA9IE5VTEw7 CiAJfQotCi0JLyogRm9yY2UgdGhlIEdQVSBzdGF0ZSB0byBiZSByZXN0b3JlZCBvbiBlbmFibGlu ZyAqLwotCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykgewotCQlzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4OwotCi0JCWxpc3RfZm9yX2VhY2hfZW50cnkoY3R4LCAmZGV2 X3ByaXYtPmNvbnRleHRzLmxpc3QsIGxpbmspIHsKLQkJCWlmICghaTkxNV9nZW1fY29udGV4dF9p c19kZWZhdWx0KGN0eCkpCi0JCQkJY29udGludWU7Ci0KLQkJCWZvcl9lYWNoX2VuZ2luZShlbmdp bmUsIGRldl9wcml2LCBpZCkKLQkJCQljdHgtPmVuZ2luZVtlbmdpbmUtPmlkXS5pbml0aWFsaXNl ZCA9IGZhbHNlOwotCi0JCQljdHgtPnJlbWFwX3NsaWNlID0gQUxMX0wzX1NMSUNFUyhkZXZfcHJp dik7Ci0JCX0KLQotCQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKLQkJ CXN0cnVjdCBpbnRlbF9jb250ZXh0ICprY2UgPQotCQkJCSZkZXZfcHJpdi0+a2VybmVsX2NvbnRl eHQtPmVuZ2luZVtlbmdpbmUtPmlkXTsKLQotCQkJa2NlLT5pbml0aWFsaXNlZCA9IHRydWU7Ci0J CX0KLQl9CiB9CiAKIHZvaWQgaTkxNV9nZW1fY29udGV4dHNfZmluaShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKQEAgLTcxOCw5ICs2OTYsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tp cF9yY3Nfc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIAlpZiAodG8tPnJlbWFw X3NsaWNlKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoIXRvLT5lbmdpbmVbUkNTXS5pbml0aWFs aXNlZCkKLQkJcmV0dXJuIGZhbHNlOwotCiAJaWYgKHBwZ3R0ICYmIChpbnRlbF9lbmdpbmVfZmxh ZyhlbmdpbmUpICYgcHBndHQtPnBkX2RpcnR5X3JpbmdzKSkKIAkJcmV0dXJuIGZhbHNlOwogCkBA IC03OTUsMTEgKzc3MCw3IEBAIHN0YXRpYyBpbnQgZG9fcmNzX3N3aXRjaChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAkJCXJldHVybiByZXQ7CiAJfQogCi0JaWYgKCF0by0+ZW5n aW5lW1JDU10uaW5pdGlhbGlzZWQgfHwgaTkxNV9nZW1fY29udGV4dF9pc19kZWZhdWx0KHRvKSkK LQkJLyogTkI6IElmIHdlIGluaGliaXQgdGhlIHJlc3RvcmUsIHRoZSBjb250ZXh0IGlzIG5vdCBh bGxvd2VkIHRvCi0JCSAqIGRpZSBiZWNhdXNlIGZ1dHVyZSB3b3JrIG1heSBlbmQgdXAgZGVwZW5k aW5nIG9uIHZhbGlkIGFkZHJlc3MKLQkJICogc3BhY2UuIFRoaXMgbWVhbnMgd2UgbXVzdCBlbmZv cmNlIHRoYXQgYSBwYWdlIHRhYmxlIGxvYWQKLQkJICogb2NjdXIgd2hlbiB0aGlzIG9jY3Vycy4g Ki8KKwlpZiAoaTkxNV9nZW1fY29udGV4dF9pc19rZXJuZWwodG8pKQogCQlod19mbGFncyA9IE1J X1JFU1RPUkVfSU5ISUJJVDsKIAllbHNlIGlmIChwcGd0dCAmJiBpbnRlbF9lbmdpbmVfZmxhZyhl bmdpbmUpICYgcHBndHQtPnBkX2RpcnR5X3JpbmdzKQogCQlod19mbGFncyA9IE1JX0ZPUkNFX1JF U1RPUkU7CkBAIC04NDMsMTUgKzgxNCw2IEBAIHN0YXRpYyBpbnQgZG9fcmNzX3N3aXRjaChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAkJdG8tPnJlbWFwX3NsaWNlICY9IH4oMTw8 aSk7CiAJfQogCi0JaWYgKCF0by0+ZW5naW5lW1JDU10uaW5pdGlhbGlzZWQpIHsKLQkJaWYgKGVu Z2luZS0+aW5pdF9jb250ZXh0KSB7Ci0JCQlyZXQgPSBlbmdpbmUtPmluaXRfY29udGV4dChyZXEp OwotCQkJaWYgKHJldCkKLQkJCQlyZXR1cm4gcmV0OwotCQl9Ci0JCXRvLT5lbmdpbmVbUkNTXS5p bml0aWFsaXNlZCA9IHRydWU7Ci0JfQotCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuaAppbmRleCA0NDY4OGUyMmE1YzIuLjRiZmI3MmY4ZTFjYiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaApAQCAtMTU3LDcgKzE1Nyw2 IEBAIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0IHsKIAkJdTMyICpscmNfcmVnX3N0YXRlOwogCQl1 NjQgbHJjX2Rlc2M7CiAJCWludCBwaW5fY291bnQ7Ci0JCWJvb2wgaW5pdGlhbGlzZWQ7CiAJfSBl bmdpbmVbSTkxNV9OVU1fRU5HSU5FU107CiAKIAkvKiogcmluZ19zaXplOiBzaXplIGZvciBhbGxv Y2F0aW5nIHRoZSBwZXItZW5naW5lIHJpbmcgYnVmZmVyICovCkBAIC0yOTIsNiArMjkxLDkgQEAg aW50IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKIGludCBpOTE1X2dlbV9jb250ZXh0X3Jlc2V0X3N0YXRzX2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJICAgICAgIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSk7CiAKK3N0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKK2k5MTVfZ2VtX2NvbnRl eHRfY3JlYXRlX2tlcm5lbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHByaW8p OworCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKIGk5MTVfZ2VtX2Nv bnRleHRfZ2V0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiB7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IGMxNWUyODhiZWQwMi4uNmI4NTE5NDAxZDRkIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtNjc5LDYgKzY3OSw5IEBA IHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIAlpbnRlbF9lbmdpbmVfY2xlYW51cF9jbWRfcGFyc2VyKGVuZ2luZSk7CiAJaTkx NV9nZW1fYmF0Y2hfcG9vbF9maW5pKCZlbmdpbmUtPmJhdGNoX3Bvb2wpOwogCisJaWYgKGVuZ2lu ZS0+ZGVmYXVsdF9zdGF0ZSkKKwkJaTkxNV9nZW1fb2JqZWN0X3B1dChlbmdpbmUtPmRlZmF1bHRf c3RhdGUpOworCiAJaWYgKEhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElPTihlbmdpbmUtPmk5MTUp KQogCQllbmdpbmUtPmNvbnRleHRfdW5waW4oZW5naW5lLCBlbmdpbmUtPmk5MTUtPnByZWVtcHRf Y29udGV4dCk7CiAJZW5naW5lLT5jb250ZXh0X3VucGluKGVuZ2luZSwgZW5naW5lLT5pOTE1LT5r ZXJuZWxfY29udGV4dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDY4NDBlYzhkYjAz Ny4uMjk3Y2UwMzI3MjczIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMTE0Nyw3ICsx MTQ3LDYgQEAgc3RhdGljIGludCBleGVjbGlzdHNfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l ID0gcmVxdWVzdC0+ZW5naW5lOwogCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9ICZyZXF1ZXN0 LT5jdHgtPmVuZ2luZVtlbmdpbmUtPmlkXTsKIAl1MzIgKmNzOwotCWludCByZXQ7CiAKIAlHRU1f QlVHX09OKCFjZS0+cGluX2NvdW50KTsKIApAQCAtMTE2MSwxNCArMTE2MCw2IEBAIHN0YXRpYyBp bnQgZXhlY2xpc3RzX3JlcXVlc3RfYWxsb2Moc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0KQogCWlmIChJU19FUlIoY3MpKQogCQlyZXR1cm4gUFRSX0VSUihjcyk7CiAKLQlpZiAo IWNlLT5pbml0aWFsaXNlZCkgewotCQlyZXQgPSBlbmdpbmUtPmluaXRfY29udGV4dChyZXF1ZXN0 KTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7Ci0KLQkJY2UtPmluaXRpYWxpc2VkID0gdHJ1 ZTsKLQl9Ci0KIAkvKiBOb3RlIHRoYXQgYWZ0ZXIgdGhpcyBwb2ludCwgd2UgaGF2ZSBjb21taXR0 ZWQgdG8gdXNpbmcKIAkgKiB0aGlzIHJlcXVlc3QgYXMgaXQgaXMgYmVpbmcgdXNlZCB0byBib3Ro IHRyYWNrIHRoZQogCSAqIHN0YXRlIG9mIGVuZ2luZSBpbml0aWFsaXNhdGlvbiBhbmQgbGl2ZW5l c3Mgb2YgdGhlCkBAIC0yMTAwLDcgKzIwOTEsNiBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfaW5p dF9yZWdfc3RhdGUodTMyICpyZWdzLAogCiAJQ1RYX1JFRyhyZWdzLCBDVFhfQ09OVEVYVF9DT05U Uk9MLCBSSU5HX0NPTlRFWFRfQ09OVFJPTChlbmdpbmUpLAogCQlfTUFTS0VEX0JJVF9FTkFCTEUo Q1RYX0NUUkxfSU5ISUJJVF9TWU5fQ1RYX1NXSVRDSCB8Ci0JCQkJICAgQ1RYX0NUUkxfRU5HSU5F X0NUWF9SRVNUT1JFX0lOSElCSVQgfAogCQkJCSAgIChIQVNfUkVTT1VSQ0VfU1RSRUFNRVIoZGV2 X3ByaXYpID8KIAkJCQkgICBDVFhfQ1RSTF9SU19DVFhfRU5BQkxFIDogMCkpKTsKIAlDVFhfUkVH KHJlZ3MsIENUWF9SSU5HX0hFQUQsIFJJTkdfSEVBRChiYXNlKSwgMCk7CkBAIC0yMTc3LDYgKzIx NjcsNyBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgs CiAJCSAgICBzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKIHsKIAl2b2lkICp2YWRkcjsKKwl1MzIg KnJlZ3M7CiAJaW50IHJldDsKIAogCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fY3B1X2Rv bWFpbihjdHhfb2JqLCB0cnVlKTsKQEAgLTIxOTMsMTEgKzIxODQsMjggQEAgcG9wdWxhdGVfbHJf Y29udGV4dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCX0KIAljdHhfb2JqLT5tbS5k aXJ0eSA9IHRydWU7CiAKKwlpZiAoZW5naW5lLT5kZWZhdWx0X3N0YXRlKSB7CisJCXZvaWQgKmRl ZmF1bHRzOworCisJCWRlZmF1bHRzID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoZW5naW5lLT5k ZWZhdWx0X3N0YXRlLAorCQkJCQkJICAgSTkxNV9NQVBfV0IpOworCQlpZiAoSVNfRVJSKGRlZmF1 bHRzKSkKKwkJCXJldHVybiBQVFJfRVJSKGRlZmF1bHRzKTsKKworCQltZW1jcHkodmFkZHIgKyBM UkNfSEVBREVSX1BBR0VTICogUEFHRV9TSVpFLAorCQkgICAgICAgZGVmYXVsdHMgKyBMUkNfSEVB REVSX1BBR0VTICogUEFHRV9TSVpFLAorCQkgICAgICAgZW5naW5lLT5jb250ZXh0X3NpemUpOwor CQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSk7CisJfQor CiAJLyogVGhlIHNlY29uZCBwYWdlIG9mIHRoZSBjb250ZXh0IG9iamVjdCBjb250YWlucyBzb21l IGZpZWxkcyB3aGljaCBtdXN0CiAJICogYmUgc2V0IHVwIHByaW9yIHRvIHRoZSBmaXJzdCBleGVj dXRpb24uICovCi0KLQlleGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUodmFkZHIgKyBMUkNfU1RBVEVf UE4gKiBQQUdFX1NJWkUsCi0JCQkJIGN0eCwgZW5naW5lLCByaW5nKTsKKwlyZWdzID0gdmFkZHIg KyBMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkU7CisJZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRlKHJl Z3MsIGN0eCwgZW5naW5lLCByaW5nKTsKKwlpZiAoIWVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSkgewor CQlyZWdzW0NUWF9DT05URVhUX0NPTlRST0wrMV0gfD0KKwkJCV9NQVNLRURfQklUX0VOQUJMRShD VFhfQ1RSTF9FTkdJTkVfQ1RYX1JFU1RPUkVfSU5ISUJJVCk7CisJfQogCiAJaTkxNV9nZW1fb2Jq ZWN0X3VucGluX21hcChjdHhfb2JqKTsKIApAQCAtMjI1MCw3ICsyMjU4LDYgQEAgc3RhdGljIGlu dCBleGVjbGlzdHNfY29udGV4dF9kZWZlcnJlZF9hbGxvYyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4LAogCiAJY2UtPnJpbmcgPSByaW5nOwogCWNlLT5zdGF0ZSA9IHZtYTsKLQljZS0+aW5p dGlhbGlzZWQgfD0gZW5naW5lLT5pbml0X2NvbnRleHQgPT0gTlVMTDsKIAogCXJldHVybiAwOwog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKaW5kZXggNDdmYWRmOGRhODRl Li4zZTVjMjk2Y2Q4YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMK QEAgLTEzNjgsNyArMTM2OCw3IEBAIHN0YXRpYyBpbnQgY29udGV4dF9waW4oc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCkKIAkgKiBvbiBhbiBhY3RpdmUgY29udGV4dCAod2hpY2ggYnkgbmF0 dXJlIGlzIGFscmVhZHkgb24gdGhlIEdQVSkuCiAJICovCiAJaWYgKCEodm1hLT5mbGFncyAmIEk5 MTVfVk1BX0dMT0JBTF9CSU5EKSkgewotCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0 dF9kb21haW4odm1hLT5vYmosIGZhbHNlKTsKKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90 b19ndHRfZG9tYWluKHZtYS0+b2JqLCB0cnVlKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7 CiAJfQpAQCAtMTM4MywxMSArMTM4MywzNCBAQCBhbGxvY19jb250ZXh0X3ZtYShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBl bmdpbmUtPmk5MTU7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAlzdHJ1Y3Qg aTkxNV92bWEgKnZtYTsKKwlpbnQgZXJyOwogCiAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0 ZShpOTE1LCBlbmdpbmUtPmNvbnRleHRfc2l6ZSk7CiAJaWYgKElTX0VSUihvYmopKQogCQlyZXR1 cm4gRVJSX0NBU1Qob2JqKTsKIAorCWlmIChlbmdpbmUtPmRlZmF1bHRfc3RhdGUpIHsKKwkJdm9p ZCAqZGVmYXVsdHMsICp2YWRkcjsKKworCQl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFw KG9iaiwgSTkxNV9NQVBfV0IpOworCQlpZiAoSVNfRVJSKHZhZGRyKSkgeworCQkJZXJyID0gUFRS X0VSUih2YWRkcik7CisJCQlnb3RvIGVycl9vYmo7CisJCX0KKworCQlkZWZhdWx0cyA9IGk5MTVf Z2VtX29iamVjdF9waW5fbWFwKGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSwKKwkJCQkJCSAgIEk5MTVf TUFQX1dCKTsKKwkJaWYgKElTX0VSUihkZWZhdWx0cykpIHsKKwkJCWVyciA9IFBUUl9FUlIoZGVm YXVsdHMpOworCQkJZ290byBlcnJfbWFwOworCQl9CisKKwkJbWVtY3B5KHZhZGRyLCBkZWZhdWx0 cywgZW5naW5lLT5jb250ZXh0X3NpemUpOworCisJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAo ZW5naW5lLT5kZWZhdWx0X3N0YXRlKTsKKwkJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmop OworCX0KKwogCS8qCiAJICogVHJ5IHRvIG1ha2UgdGhlIGNvbnRleHQgdXRpbGl6ZSBMMyBhcyB3 ZWxsIGFzIExMQy4KIAkgKgpAQCAtMTQwOSwxMCArMTQzMiwxOCBAQCBhbGxvY19jb250ZXh0X3Zt YShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJfQogCiAJdm1hID0gaTkxNV92bWFf aW5zdGFuY2Uob2JqLCAmaTkxNS0+Z2d0dC5iYXNlLCBOVUxMKTsKLQlpZiAoSVNfRVJSKHZtYSkp Ci0JCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKKwlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJZXJy ID0gUFRSX0VSUih2bWEpOworCQlnb3RvIGVycl9vYmo7CisJfQogCiAJcmV0dXJuIHZtYTsKKwor ZXJyX21hcDoKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKG9iaik7CitlcnJfb2JqOgorCWk5 MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKKwlyZXR1cm4gRVJSX1BUUihlcnIpOwogfQogCiBzdGF0 aWMgc3RydWN0IGludGVsX3JpbmcgKgpAQCAtMTQ0OSwxNiArMTQ4MCw2IEBAIGludGVsX3Jpbmdf Y29udGV4dF9waW4oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQljZS0+c3RhdGUt Pm9iai0+cGluX2dsb2JhbCsrOwogCX0KIAotCS8qIFRoZSBrZXJuZWwgY29udGV4dCBpcyBvbmx5 IHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgZmx1c2hpbmcgdGhlCi0JICogYWN0aXZlIGNvbnRl eHQuIEl0IGlzIG5ldmVyIHVzZWQgZm9yIHN1Ym1pdHRpbmcgdXNlciByZW5kZXJpbmcgYW5kCi0J ICogYXMgc3VjaCBuZXZlciByZXF1aXJlcyB0aGUgZ29sZGVuIHJlbmRlciBjb250ZXh0LCBhbmQg c28gd2UgY2FuIHNraXAKLQkgKiBlbWl0dGluZyBpdCB3aGVuIHdlIHN3aXRjaCB0byB0aGUga2Vy bmVsIGNvbnRleHQuIFRoaXMgaXMgcmVxdWlyZWQKLQkgKiBhcyBkdXJpbmcgZXZpY3Rpb24gd2Ug Y2Fubm90IGFsbG9jYXRlIGFuZCBwaW4gdGhlIHJlbmRlcnN0YXRlIGluCi0JICogb3JkZXIgdG8g aW5pdGlhbGlzZSB0aGUgY29udGV4dC4KLQkgKi8KLQlpZiAoaTkxNV9nZW1fY29udGV4dF9pc19r ZXJuZWwoY3R4KSkKLQkJY2UtPmluaXRpYWxpc2VkID0gdHJ1ZTsKLQogCWk5MTVfZ2VtX2NvbnRl eHRfZ2V0KGN0eCk7CiAKIG91dDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu aAppbmRleCA2OWFkODc1ZmQwMTEuLjFkNzUyYjlhMzA2NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaApAQCAtMzAzLDYgKzMwMyw3IEBAIHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgewogCXN0cnVjdCBpbnRlbF9yaW5nICpidWZmZXI7CiAJc3RydWN0IGludGVsX3RpbWVs aW5lICp0aW1lbGluZTsKIAorCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpkZWZhdWx0X3N0 YXRlOwogCXN0cnVjdCBpbnRlbF9yZW5kZXJfc3RhdGUgKnJlbmRlcl9zdGF0ZTsKIAogCWF0b21p Y190IGlycV9jb3VudDsKLS0gCjIuMTUuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==