From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 21/46] drm/i915/dp: Markup pps lock power well Date: Mon, 7 Jan 2019 11:54:44 +0000 Message-ID: <20190107115509.12523-21-chris@chris-wilson.co.uk> References: <20190107115509.12523-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 8562E6EB85 for ; Mon, 7 Jan 2019 11:55:48 +0000 (UTC) In-Reply-To: <20190107115509.12523-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 Cc: Jani Nikula List-Id: intel-gfx@lists.freedesktop.org VHJhY2sgd2hlcmUgYW5kIHdoZW4gd2UgYWNxdWlyZSBhbmQgcmVsZWFzZSB0aGUgcG93ZXIgd2Vs bCBmb3IgcHBzCmFjY2VzcyBhbG9uZyB0aGUgZHAgYXV4IGxpbmssIHdpdGggYSB2aWV3IHRvIGRl dGVjdGluZyBpZiB3ZSBsZWFrIGFueQp3YWtlcmVmcy4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogSmFuaSBOaWt1bGEgPGphbmkubmlr dWxhQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIHwgMjMx ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTIxIGlu c2VydGlvbnMoKyksIDExMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRl eCBlODAzMWRhYWNlZTIuLjI1YzEwMWU3Zjk5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBA IC02MDIsMzAgKzYwMiwzOSBAQCBpbnRlbF9kcF9pbml0X3BhbmVsX3Bvd2VyX3NlcXVlbmNlcl9y ZWdpc3RlcnMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIHN0YXRpYyB2b2lkCiBpbnRlbF9k cF9wcHNfaW5pdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKIAotc3RhdGljIHZvaWQgcHBz X2xvY2soc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK3N0YXRpYyBpbnRlbF93YWtlcmVmX3QK K3Bwc19sb2NrKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7CisJaW50ZWxfd2FrZXJl Zl90IHdha2VyZWY7CiAKIAkvKgogCSAqIFNlZSBpbnRlbF9wb3dlcl9zZXF1ZW5jZXJfcmVzZXQo KSB3aHkgd2UgbmVlZAogCSAqIGEgcG93ZXIgZG9tYWluIHJlZmVyZW5jZSBoZXJlLgogCSAqLwot CWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LAotCQkJCWludGVsX2F1eF9wb3dlcl9k b21haW4oZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApKSk7CisJd2FrZXJlZiA9IGludGVsX2Rpc3Bs YXlfcG93ZXJfZ2V0KGRldl9wcml2LAorCQkJCQkgIGludGVsX2F1eF9wb3dlcl9kb21haW4oZHBf dG9fZGlnX3BvcnQoaW50ZWxfZHApKSk7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHBzX211 dGV4KTsKKworCXJldHVybiB3YWtlcmVmOwogfQogCi1zdGF0aWMgdm9pZCBwcHNfdW5sb2NrKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCitzdGF0aWMgaW50ZWxfd2FrZXJlZl90CitwcHNfdW5s b2NrKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludGVsX3dha2VyZWZfdCB3YWtlcmVmKQog ewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxf ZHApOwogCiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHBzX211dGV4KTsKLQotCWludGVsX2Rp c3BsYXlfcG93ZXJfcHV0X3VuY2hlY2tlZChkZXZfcHJpdiwKLQkJCQkJICBpbnRlbF9hdXhfcG93 ZXJfZG9tYWluKGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKSkpOworCWludGVsX2Rpc3BsYXlfcG93 ZXJfcHV0KGRldl9wcml2LAorCQkJCWludGVsX2F1eF9wb3dlcl9kb21haW4oZHBfdG9fZGlnX3Bv cnQoaW50ZWxfZHApKSwKKwkJCQl3YWtlcmVmKTsKKwlyZXR1cm4gMDsKIH0KIAorI2RlZmluZSB3 aXRoX3Bwc19sb2NrKGRwLCB3ZikgXAorCWZvciAod2YgPSBwcHNfbG9jayhkcCk7IHdmOyB3ZiA9 IHBwc191bmxvY2soZHAsIHdmKSkKKwogc3RhdGljIHZvaWQKIHZsdl9wb3dlcl9zZXF1ZW5jZXJf a2ljayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewpAQCAtOTc0LDMwICs5ODMsMzAgQEAg c3RhdGljIGludCBlZHBfbm90aWZ5X2hhbmRsZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlz LCB1bnNpZ25lZCBsb25nIGNvZGUsCiAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGNvbnRh aW5lcl9vZih0aGlzLCB0eXBlb2YoKiBpbnRlbF9kcCksCiAJCQkJCQkgZWRwX25vdGlmaWVyKTsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2Rw KTsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAogCWlmICghaW50ZWxfZHBfaXNfZWRwKGlu dGVsX2RwKSB8fCBjb2RlICE9IFNZU19SRVNUQVJUKQogCQlyZXR1cm4gMDsKIAotCXBwc19sb2Nr KGludGVsX2RwKTsKLQotCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllW SUVXKGRldl9wcml2KSkgewotCQllbnVtIHBpcGUgcGlwZSA9IHZsdl9wb3dlcl9zZXF1ZW5jZXJf cGlwZShpbnRlbF9kcCk7Ci0JCWk5MTVfcmVnX3QgcHBfY3RybF9yZWcsIHBwX2Rpdl9yZWc7Ci0J CXUzMiBwcF9kaXY7Ci0KLQkJcHBfY3RybF9yZWcgPSBQUF9DT05UUk9MKHBpcGUpOwotCQlwcF9k aXZfcmVnICA9IFBQX0RJVklTT1IocGlwZSk7Ci0JCXBwX2RpdiA9IEk5MTVfUkVBRChwcF9kaXZf cmVnKTsKLQkJcHBfZGl2ICY9IFBQX1JFRkVSRU5DRV9ESVZJREVSX01BU0s7Ci0KLQkJLyogMHgx RiB3cml0ZSB0byBQUF9ESVZfUkVHIHNldHMgbWF4IGN5Y2xlIGRlbGF5ICovCi0JCUk5MTVfV1JJ VEUocHBfZGl2X3JlZywgcHBfZGl2IHwgMHgxRik7Ci0JCUk5MTVfV1JJVEUocHBfY3RybF9yZWcs IFBBTkVMX1VOTE9DS19SRUdTIHwgUEFORUxfUE9XRVJfT0ZGKTsKLQkJbXNsZWVwKGludGVsX2Rw LT5wYW5lbF9wb3dlcl9jeWNsZV9kZWxheSk7CisJd2l0aF9wcHNfbG9jayhpbnRlbF9kcCwgd2Fr ZXJlZikgeworCQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhk ZXZfcHJpdikpIHsKKwkJCWVudW0gcGlwZSBwaXBlID0gdmx2X3Bvd2VyX3NlcXVlbmNlcl9waXBl KGludGVsX2RwKTsKKwkJCWk5MTVfcmVnX3QgcHBfY3RybF9yZWcsIHBwX2Rpdl9yZWc7CisJCQl1 MzIgcHBfZGl2OworCisJCQlwcF9jdHJsX3JlZyA9IFBQX0NPTlRST0wocGlwZSk7CisJCQlwcF9k aXZfcmVnICA9IFBQX0RJVklTT1IocGlwZSk7CisJCQlwcF9kaXYgPSBJOTE1X1JFQUQocHBfZGl2 X3JlZyk7CisJCQlwcF9kaXYgJj0gUFBfUkVGRVJFTkNFX0RJVklERVJfTUFTSzsKKworCQkJLyog MHgxRiB3cml0ZSB0byBQUF9ESVZfUkVHIHNldHMgbWF4IGN5Y2xlIGRlbGF5ICovCisJCQlJOTE1 X1dSSVRFKHBwX2Rpdl9yZWcsIHBwX2RpdiB8IDB4MUYpOworCQkJSTkxNV9XUklURShwcF9jdHJs X3JlZywKKwkJCQkgICBQQU5FTF9VTkxPQ0tfUkVHUyB8IFBBTkVMX1BPV0VSX09GRik7CisJCQlt c2xlZXAoaW50ZWxfZHAtPnBhbmVsX3Bvd2VyX2N5Y2xlX2RlbGF5KTsKKwkJfQogCX0KIAotCXBw c191bmxvY2soaW50ZWxfZHApOwotCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTExODUsMTYgKzExOTQs MTcgQEAgaW50ZWxfZHBfYXV4X3hmZXIoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJCXRv X2k5MTUoaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOwogCWk5MTVfcmVnX3QgY2hfY3Rs LCBjaF9kYXRhWzVdOwogCXVpbnQzMl90IGF1eF9jbG9ja19kaXZpZGVyOworCWludGVsX3dha2Vy ZWZfdCB3YWtlcmVmOwogCWludCBpLCByZXQsIHJlY3ZfYnl0ZXM7Ci0JdWludDMyX3Qgc3RhdHVz OwogCWludCB0cnksIGNsb2NrID0gMDsKKwl1aW50MzJfdCBzdGF0dXM7CiAJYm9vbCB2ZGQ7CiAK IAljaF9jdGwgPSBpbnRlbF9kcC0+YXV4X2NoX2N0bF9yZWcoaW50ZWxfZHApOwogCWZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKGNoX2RhdGEpOyBpKyspCiAJCWNoX2RhdGFbaV0gPSBpbnRlbF9k cC0+YXV4X2NoX2RhdGFfcmVnKGludGVsX2RwLCBpKTsKIAotCXBwc19sb2NrKGludGVsX2RwKTsK Kwl3YWtlcmVmID0gcHBzX2xvY2soaW50ZWxfZHApOwogCiAJLyoKIAkgKiBXZSB3aWxsIGJlIGNh bGxlZCB3aXRoIFZERCBhbHJlYWR5IGVuYWJsZWQgZm9yIGRwY2QvZWRpZC9vdWkgcmVhZHMuCkBA IC0xMzM4LDcgKzEzNDgsNyBAQCBpbnRlbF9kcF9hdXhfeGZlcihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLAogCWlmICh2ZGQpCiAJCWVkcF9wYW5lbF92ZGRfb2ZmKGludGVsX2RwLCBmYWxzZSk7 CiAKLQlwcHNfdW5sb2NrKGludGVsX2RwKTsKKwlwcHNfdW5sb2NrKGludGVsX2RwLCB3YWtlcmVm KTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0yNDY1LDE1ICsyNDc1LDE1IEBAIHN0YXRpYyBib29s IGVkcF9wYW5lbF92ZGRfb24oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKICAqLwogdm9pZCBp bnRlbF9lZHBfcGFuZWxfdmRkX29uKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7CisJaW50 ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJYm9vbCB2ZGQ7CiAKIAlpZiAoIWludGVsX2RwX2lzX2Vk cChpbnRlbF9kcCkpCiAJCXJldHVybjsKIAotCXBwc19sb2NrKGludGVsX2RwKTsKLQl2ZGQgPSBl ZHBfcGFuZWxfdmRkX29uKGludGVsX2RwKTsKLQlwcHNfdW5sb2NrKGludGVsX2RwKTsKLQorCXZk ZCA9IGZhbHNlOworCXdpdGhfcHBzX2xvY2soaW50ZWxfZHAsIHdha2VyZWYpCisJCXZkZCA9IGVk cF9wYW5lbF92ZGRfb24oaW50ZWxfZHApOwogCUk5MTVfU1RBVEVfV0FSTighdmRkLCAiZURQIHBv cnQgJWMgVkREIGFscmVhZHkgcmVxdWVzdGVkIG9uXG4iLAogCSAgICAgcG9ydF9uYW1lKGRwX3Rv X2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZS5wb3J0KSk7CiB9CkBAIC0yNTE4LDEzICsyNTI4LDE1 IEBAIHN0YXRpYyB2b2lkIGVkcF9wYW5lbF92ZGRfb2ZmX3N5bmMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKIAogc3RhdGljIHZvaWQgZWRwX3BhbmVsX3ZkZF93b3JrKHN0cnVjdCB3b3JrX3N0 cnVjdCAqX193b3JrKQogewotCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBjb250YWluZXJf b2YodG9fZGVsYXllZF93b3JrKF9fd29yayksCi0JCQkJCQkgc3RydWN0IGludGVsX2RwLCBwYW5l bF92ZGRfd29yayk7CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9CisJCWNvbnRhaW5lcl9v Zih0b19kZWxheWVkX3dvcmsoX193b3JrKSwKKwkJCSAgICAgc3RydWN0IGludGVsX2RwLCBwYW5l bF92ZGRfd29yayk7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAKLQlwcHNfbG9jayhpbnRl bF9kcCk7Ci0JaWYgKCFpbnRlbF9kcC0+d2FudF9wYW5lbF92ZGQpCi0JCWVkcF9wYW5lbF92ZGRf b2ZmX3N5bmMoaW50ZWxfZHApOwotCXBwc191bmxvY2soaW50ZWxfZHApOworCXdpdGhfcHBzX2xv Y2soaW50ZWxfZHAsIHdha2VyZWYpIHsKKwkJaWYgKCFpbnRlbF9kcC0+d2FudF9wYW5lbF92ZGQp CisJCQllZHBfcGFuZWxfdmRkX29mZl9zeW5jKGludGVsX2RwKTsKKwl9CiB9CiAKIHN0YXRpYyB2 b2lkIGVkcF9wYW5lbF92ZGRfc2NoZWR1bGVfb2ZmKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp CkBAIC0yNjE0LDEyICsyNjI2LDEzIEBAIHN0YXRpYyB2b2lkIGVkcF9wYW5lbF9vbihzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQogCiB2b2lkIGludGVsX2VkcF9wYW5lbF9vbihzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQogeworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOworCiAJaWYgKCFp bnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKQogCQlyZXR1cm47CiAKLQlwcHNfbG9jayhpbnRlbF9k cCk7Ci0JZWRwX3BhbmVsX29uKGludGVsX2RwKTsKLQlwcHNfdW5sb2NrKGludGVsX2RwKTsKKwl3 aXRoX3Bwc19sb2NrKGludGVsX2RwLCB3YWtlcmVmKQorCQllZHBfcGFuZWxfb24oaW50ZWxfZHAp OwogfQogCiAKQEAgLTI2NjMsMjAgKzI2NzYsMjAgQEAgc3RhdGljIHZvaWQgZWRwX3BhbmVsX29m ZihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCiB2b2lkIGludGVsX2VkcF9wYW5lbF9vZmYo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsK KwogCWlmICghaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKIAkJcmV0dXJuOwogCi0JcHBzX2xv Y2soaW50ZWxfZHApOwotCWVkcF9wYW5lbF9vZmYoaW50ZWxfZHApOwotCXBwc191bmxvY2soaW50 ZWxfZHApOworCXdpdGhfcHBzX2xvY2soaW50ZWxfZHAsIHdha2VyZWYpCisJCWVkcF9wYW5lbF9v ZmYoaW50ZWxfZHApOwogfQogCiAvKiBFbmFibGUgYmFja2xpZ2h0IGluIHRoZSBwYW5lbCBwb3dl ciBjb250cm9sLiAqLwogc3RhdGljIHZvaWQgX2ludGVsX2VkcF9iYWNrbGlnaHRfb24oc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKLQl1MzIgcHA7Ci0JaTkxNV9yZWdfdCBwcF9jdHJs X3JlZzsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAogCS8qCiAJICogSWYgd2UgZW5hYmxl IHRoZSBiYWNrbGlnaHQgcmlnaHQgYXdheSBmb2xsb3dpbmcgYSBwYW5lbCBwb3dlcgpAQCAtMjY4 NiwxNyArMjY5OSwxNiBAQCBzdGF0aWMgdm9pZCBfaW50ZWxfZWRwX2JhY2tsaWdodF9vbihzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCSAqLwogCXdhaXRfYmFja2xpZ2h0X29uKGludGVsX2Rw KTsKIAotCXBwc19sb2NrKGludGVsX2RwKTsKKwl3aXRoX3Bwc19sb2NrKGludGVsX2RwLCB3YWtl cmVmKSB7CisJCWk5MTVfcmVnX3QgcHBfY3RybF9yZWcgPSBfcHBfY3RybF9yZWcoaW50ZWxfZHAp OworCQl1MzIgcHA7CiAKLQlwcCA9IGlyb25sYWtlX2dldF9wcF9jb250cm9sKGludGVsX2RwKTsK LQlwcCB8PSBFRFBfQkxDX0VOQUJMRTsKLQotCXBwX2N0cmxfcmVnID0gX3BwX2N0cmxfcmVnKGlu dGVsX2RwKTsKLQotCUk5MTVfV1JJVEUocHBfY3RybF9yZWcsIHBwKTsKLQlQT1NUSU5HX1JFQUQo cHBfY3RybF9yZWcpOworCQlwcCA9IGlyb25sYWtlX2dldF9wcF9jb250cm9sKGludGVsX2RwKTsK KwkJcHAgfD0gRURQX0JMQ19FTkFCTEU7CiAKLQlwcHNfdW5sb2NrKGludGVsX2RwKTsKKwkJSTkx NV9XUklURShwcF9jdHJsX3JlZywgcHApOworCQlQT1NUSU5HX1JFQUQocHBfY3RybF9yZWcpOwor CX0KIH0KIAogLyogRW5hYmxlIGJhY2tsaWdodCBQV00gYW5kIGJhY2tsaWdodCBQUCBjb250cm9s LiAqLwpAQCAtMjcxOCwyMyArMjczMCwyMSBAQCB2b2lkIGludGVsX2VkcF9iYWNrbGlnaHRfb24o Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiBzdGF0aWMgdm9pZCBf aW50ZWxfZWRwX2JhY2tsaWdodF9vZmYoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsK LQl1MzIgcHA7Ci0JaTkxNV9yZWdfdCBwcF9jdHJsX3JlZzsKKwlpbnRlbF93YWtlcmVmX3Qgd2Fr ZXJlZjsKIAogCWlmICghaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKIAkJcmV0dXJuOwogCi0J cHBzX2xvY2soaW50ZWxfZHApOwotCi0JcHAgPSBpcm9ubGFrZV9nZXRfcHBfY29udHJvbChpbnRl bF9kcCk7Ci0JcHAgJj0gfkVEUF9CTENfRU5BQkxFOwotCi0JcHBfY3RybF9yZWcgPSBfcHBfY3Ry bF9yZWcoaW50ZWxfZHApOworCXdpdGhfcHBzX2xvY2soaW50ZWxfZHAsIHdha2VyZWYpIHsKKwkJ aTkxNV9yZWdfdCBwcF9jdHJsX3JlZyA9IF9wcF9jdHJsX3JlZyhpbnRlbF9kcCk7CisJCXUzMiBw cDsKIAotCUk5MTVfV1JJVEUocHBfY3RybF9yZWcsIHBwKTsKLQlQT1NUSU5HX1JFQUQocHBfY3Ry bF9yZWcpOworCQlwcCA9IGlyb25sYWtlX2dldF9wcF9jb250cm9sKGludGVsX2RwKTsKKwkJcHAg Jj0gfkVEUF9CTENfRU5BQkxFOwogCi0JcHBzX3VubG9jayhpbnRlbF9kcCk7CisJCUk5MTVfV1JJ VEUocHBfY3RybF9yZWcsIHBwKTsKKwkJUE9TVElOR19SRUFEKHBwX2N0cmxfcmVnKTsKKwl9CiAK IAlpbnRlbF9kcC0+bGFzdF9iYWNrbGlnaHRfb2ZmID0gamlmZmllczsKIAllZHBfd2FpdF9iYWNr bGlnaHRfb2ZmKGludGVsX2RwKTsKQEAgLTI3NjIsMTIgKzI3NzIsMTIgQEAgc3RhdGljIHZvaWQg aW50ZWxfZWRwX2JhY2tsaWdodF9wb3dlcihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IsCiAJCQkJICAgICAgYm9vbCBlbmFibGUpCiB7CiAJc3RydWN0IGludGVsX2RwICppbnRlbF9k cCA9IGludGVsX2F0dGFjaGVkX2RwKCZjb25uZWN0b3ItPmJhc2UpOworCWludGVsX3dha2VyZWZf dCB3YWtlcmVmOwogCWJvb2wgaXNfZW5hYmxlZDsKIAotCXBwc19sb2NrKGludGVsX2RwKTsKLQlp c19lbmFibGVkID0gaXJvbmxha2VfZ2V0X3BwX2NvbnRyb2woaW50ZWxfZHApICYgRURQX0JMQ19F TkFCTEU7Ci0JcHBzX3VubG9jayhpbnRlbF9kcCk7Ci0KKwlpc19lbmFibGVkID0gZmFsc2U7CisJ d2l0aF9wcHNfbG9jayhpbnRlbF9kcCwgd2FrZXJlZikKKwkJaXNfZW5hYmxlZCA9IGlyb25sYWtl X2dldF9wcF9jb250cm9sKGludGVsX2RwKSAmIEVEUF9CTENfRU5BQkxFOwogCWlmIChpc19lbmFi bGVkID09IGVuYWJsZSkKIAkJcmV0dXJuOwogCkBAIC0zMjc3LDIyICszMjg3LDIxIEBAIHN0YXRp YyB2b2lkIGludGVsX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlwZV9jb25maWctPmJhc2Uu Y3J0Yyk7CiAJdWludDMyX3QgZHBfcmVnID0gSTkxNV9SRUFEKGludGVsX2RwLT5vdXRwdXRfcmVn KTsKIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CisJaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7CiAKIAlpZiAoV0FSTl9PTihkcF9yZWcgJiBEUF9QT1JUX0VOKSkKIAkJcmV0dXJuOwogCi0J cHBzX2xvY2soaW50ZWxfZHApOwotCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElT X0NIRVJSWVZJRVcoZGV2X3ByaXYpKQotCQl2bHZfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXIo ZW5jb2RlciwgcGlwZV9jb25maWcpOwotCi0JaW50ZWxfZHBfZW5hYmxlX3BvcnQoaW50ZWxfZHAs IHBpcGVfY29uZmlnKTsKKwl3aXRoX3Bwc19sb2NrKGludGVsX2RwLCB3YWtlcmVmKSB7CisJCWlm IChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKKwkJ CXZsdl9pbml0X3BhbmVsX3Bvd2VyX3NlcXVlbmNlcihlbmNvZGVyLCBwaXBlX2NvbmZpZyk7CiAK LQllZHBfcGFuZWxfdmRkX29uKGludGVsX2RwKTsKLQllZHBfcGFuZWxfb24oaW50ZWxfZHApOwot CWVkcF9wYW5lbF92ZGRfb2ZmKGludGVsX2RwLCB0cnVlKTsKKwkJaW50ZWxfZHBfZW5hYmxlX3Bv cnQoaW50ZWxfZHAsIHBpcGVfY29uZmlnKTsKIAotCXBwc191bmxvY2soaW50ZWxfZHApOworCQll ZHBfcGFuZWxfdmRkX29uKGludGVsX2RwKTsKKwkJZWRwX3BhbmVsX29uKGludGVsX2RwKTsKKwkJ ZWRwX3BhbmVsX3ZkZF9vZmYoaW50ZWxfZHAsIHRydWUpOworCX0KIAogCWlmIChJU19WQUxMRVlW SUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewogCQl1bnNpZ25lZCBp bnQgbGFuZV9tYXNrID0gMHgwOwpAQCAtMzk5MCw5ICszOTk5LDEwIEBAIGludGVsX2RwX2xpbmtf ZG93bihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlpbnRlbF9kcC0+RFAgPSBEUDsK IAogCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2 KSkgewotCQlwcHNfbG9jayhpbnRlbF9kcCk7Ci0JCWludGVsX2RwLT5hY3RpdmVfcGlwZSA9IElO VkFMSURfUElQRTsKLQkJcHBzX3VubG9jayhpbnRlbF9kcCk7CisJCWludGVsX3dha2VyZWZfdCB3 YWtlcmVmOworCisJCXdpdGhfcHBzX2xvY2soaW50ZWxfZHAsIHdha2VyZWYpCisJCQlpbnRlbF9k cC0+YWN0aXZlX3BpcGUgPSBJTlZBTElEX1BJUEU7CiAJfQogfQogCkBAIC01NTYyLDE0ICs1NTcy LDE1IEBAIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9mbHVzaF93b3JrKHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlcikKIAogCWludGVsX2RwX21zdF9lbmNvZGVyX2NsZWFudXAoaW50ZWxfZGlnX3Bv cnQpOwogCWlmIChpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKSB7CisJCWludGVsX3dha2VyZWZf dCB3YWtlcmVmOworCiAJCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaW50ZWxfZHAtPnBhbmVs X3ZkZF93b3JrKTsKIAkJLyoKIAkJICogdmRkIG1pZ2h0IHN0aWxsIGJlIGVuYWJsZWQgZG8gdG8g dGhlIGRlbGF5ZWQgdmRkIG9mZi4KIAkJICogTWFrZSBzdXJlIHZkZCBpcyBhY3R1YWxseSB0dXJu ZWQgb2ZmIGhlcmUuCiAJCSAqLwotCQlwcHNfbG9jayhpbnRlbF9kcCk7Ci0JCWVkcF9wYW5lbF92 ZGRfb2ZmX3N5bmMoaW50ZWxfZHApOwotCQlwcHNfdW5sb2NrKGludGVsX2RwKTsKKwkJd2l0aF9w cHNfbG9jayhpbnRlbF9kcCwgd2FrZXJlZikKKwkJCWVkcF9wYW5lbF92ZGRfb2ZmX3N5bmMoaW50 ZWxfZHApOwogCiAJCWlmIChpbnRlbF9kcC0+ZWRwX25vdGlmaWVyLm5vdGlmaWVyX2NhbGwpIHsK IAkJCXVucmVnaXN0ZXJfcmVib290X25vdGlmaWVyKCZpbnRlbF9kcC0+ZWRwX25vdGlmaWVyKTsK QEAgLTU1OTEsNiArNTYwMiw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX2VuY29kZXJfZGVzdHJv eShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB2b2lkIGludGVsX2RwX2VuY29kZXJfc3Vz cGVuZChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKIHsKIAlzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZpbnRlbF9lbmNvZGVyLT5iYXNlKTsK KwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAogCWlmICghaW50ZWxfZHBfaXNfZWRwKGludGVs X2RwKSkKIAkJcmV0dXJuOwpAQCAtNTYwMCw5ICs1NjEyLDggQEAgdm9pZCBpbnRlbF9kcF9lbmNv ZGVyX3N1c3BlbmQoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCiAJICogTWFr ZSBzdXJlIHZkZCBpcyBhY3R1YWxseSB0dXJuZWQgb2ZmIGhlcmUuCiAJICovCiAJY2FuY2VsX2Rl bGF5ZWRfd29ya19zeW5jKCZpbnRlbF9kcC0+cGFuZWxfdmRkX3dvcmspOwotCXBwc19sb2NrKGlu dGVsX2RwKTsKLQllZHBfcGFuZWxfdmRkX29mZl9zeW5jKGludGVsX2RwKTsKLQlwcHNfdW5sb2Nr KGludGVsX2RwKTsKKwl3aXRoX3Bwc19sb2NrKGludGVsX2RwLCB3YWtlcmVmKQorCQllZHBfcGFu ZWxfdmRkX29mZl9zeW5jKGludGVsX2RwKTsKIH0KIAogc3RhdGljCkBAIC01ODgzLDYgKzU4OTQs NyBAQCB2b2lkIGludGVsX2RwX2VuY29kZXJfcmVzZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rl ci0+ZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVu Y29kZXIpOwogCXN0cnVjdCBpbnRlbF9sc3Bjb24gKmxzcGNvbiA9IGRwX3RvX2xzcGNvbihpbnRl bF9kcCk7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAKIAlpZiAoIUhBU19EREkoZGV2X3By aXYpKQogCQlpbnRlbF9kcC0+RFAgPSBJOTE1X1JFQUQoaW50ZWxfZHAtPm91dHB1dF9yZWcpOwpA QCAtNTg5MiwxOCArNTkwNCwxOSBAQCB2b2lkIGludGVsX2RwX2VuY29kZXJfcmVzZXQoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKQogCiAJaW50ZWxfZHAtPnJlc2V0X2xpbmtfcGFyYW1zID0g dHJ1ZTsKIAotCXBwc19sb2NrKGludGVsX2RwKTsKLQotCWlmIChJU19WQUxMRVlWSUVXKGRldl9w cml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKLQkJaW50ZWxfZHAtPmFjdGl2ZV9waXBl ID0gdmx2X2FjdGl2ZV9waXBlKGludGVsX2RwKTsKKwl3aXRoX3Bwc19sb2NrKGludGVsX2RwLCB3 YWtlcmVmKSB7CisJCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVX KGRldl9wcml2KSkKKwkJCWludGVsX2RwLT5hY3RpdmVfcGlwZSA9IHZsdl9hY3RpdmVfcGlwZShp bnRlbF9kcCk7CiAKLQlpZiAoaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkgewotCQkvKiBSZWlu aXQgdGhlIHBvd2VyIHNlcXVlbmNlciwgaW4gY2FzZSBCSU9TIGRpZCBzb21ldGhpbmcgd2l0aCBp dC4gKi8KLQkJaW50ZWxfZHBfcHBzX2luaXQoaW50ZWxfZHApOwotCQlpbnRlbF9lZHBfcGFuZWxf dmRkX3Nhbml0aXplKGludGVsX2RwKTsKKwkJaWYgKGludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkp IHsKKwkJCS8qCisJCQkgKiBSZWluaXQgdGhlIHBvd2VyIHNlcXVlbmNlciwgaW4gY2FzZSBCSU9T IGRpZAorCQkJICogc29tZXRoaW5nIG5hc3R5IHdpdGggaXQuCisJCQkgKi8KKwkJCWludGVsX2Rw X3Bwc19pbml0KGludGVsX2RwKTsKKwkJCWludGVsX2VkcF9wYW5lbF92ZGRfc2FuaXRpemUoaW50 ZWxfZHApOworCQl9CiAJfQotCi0JcHBzX3VubG9jayhpbnRlbF9kcCk7CiB9CiAKIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBpbnRlbF9kcF9jb25uZWN0b3JfZnVuY3Mg PSB7CkBAIC02Njk5LDggKzY3MTIsOSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfaW5pdF9jb25u ZWN0b3Ioc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqZG93bmNsb2NrX21vZGUgPSBOVUxMOwogCWJvb2wgaGFzX2RwY2Q7CiAJc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKnNjYW47Ci0Jc3RydWN0IGVkaWQgKmVkaWQ7CiAJZW51bSBwaXBlIHBpcGUg PSBJTlZBTElEX1BJUEU7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisJc3RydWN0IGVkaWQg KmVkaWQ7CiAKIAlpZiAoIWludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpCiAJCXJldHVybiB0cnVl OwpAQCAtNjcyMCwxMyArNjczNCwxMSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfaW5pdF9jb25u ZWN0b3Ioc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAot CXBwc19sb2NrKGludGVsX2RwKTsKLQotCWludGVsX2RwX2luaXRfcGFuZWxfcG93ZXJfdGltZXN0 YW1wcyhpbnRlbF9kcCk7Ci0JaW50ZWxfZHBfcHBzX2luaXQoaW50ZWxfZHApOwotCWludGVsX2Vk cF9wYW5lbF92ZGRfc2FuaXRpemUoaW50ZWxfZHApOwotCi0JcHBzX3VubG9jayhpbnRlbF9kcCk7 CisJd2l0aF9wcHNfbG9jayhpbnRlbF9kcCwgd2FrZXJlZikgeworCQlpbnRlbF9kcF9pbml0X3Bh bmVsX3Bvd2VyX3RpbWVzdGFtcHMoaW50ZWxfZHApOworCQlpbnRlbF9kcF9wcHNfaW5pdChpbnRl bF9kcCk7CisJCWludGVsX2VkcF9wYW5lbF92ZGRfc2FuaXRpemUoaW50ZWxfZHApOworCX0KIAog CS8qIENhY2hlIERQQ0QgYW5kIEVESUQgZm9yIGVkcC4gKi8KIAloYXNfZHBjZCA9IGludGVsX2Vk cF9pbml0X2RwY2QoaW50ZWxfZHApOwpAQCAtNjgxMSw5ICs2ODIzLDggQEAgc3RhdGljIGJvb2wg aW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJICog dmRkIG1pZ2h0IHN0aWxsIGJlIGVuYWJsZWQgZG8gdG8gdGhlIGRlbGF5ZWQgdmRkIG9mZi4KIAkg KiBNYWtlIHN1cmUgdmRkIGlzIGFjdHVhbGx5IHR1cm5lZCBvZmYgaGVyZS4KIAkgKi8KLQlwcHNf bG9jayhpbnRlbF9kcCk7Ci0JZWRwX3BhbmVsX3ZkZF9vZmZfc3luYyhpbnRlbF9kcCk7Ci0JcHBz X3VubG9jayhpbnRlbF9kcCk7CisJd2l0aF9wcHNfbG9jayhpbnRlbF9kcCwgd2FrZXJlZikKKwkJ ZWRwX3BhbmVsX3ZkZF9vZmZfc3luYyhpbnRlbF9kcCk7CiAKIAlyZXR1cm4gZmFsc2U7CiB9Ci0t IAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=