From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 14/20] drm/i915/dp: Markup pps lock power well Date: Wed, 31 Oct 2018 09:06:03 +0000 Message-ID: <20181031090609.16324-14-chris@chris-wilson.co.uk> References: <20181031090609.16324-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 2EA406E25E for ; Wed, 31 Oct 2018 09:06:44 +0000 (UTC) In-Reply-To: <20181031090609.16324-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 VHJhY2sgd2hlcmUgYW5kIHdoZW4gd2UgYWNxdWlyZSBhbmQgcmVsZWFzZSB0aGUgcG93ZXIgd2Vs bCBmb3IgcHBzCmFjY2VzcyBhbG9uZyB0aGUgZHAgYXV4IGxpbmssIHdpdGggYSB2aWV3IHRvIGRl dGVjdGluZyBpZiB3ZSBsZWFrIGFueQp3YWtlcmVmcy4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMgfCAyMjYgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCAxMTggaW5zZXJ0aW9ucygrKSwgMTA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jCmluZGV4IDRjNGI0MTRkMzgxMy4uMzQ2MzQ0ZmMyMDc0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKQEAgLTY4MiwyOCArNjgyLDM2IEBAIGludGVsX2RwX2luaXRfcGFuZWxf cG93ZXJfc2VxdWVuY2VyX3JlZ2lzdGVycyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogc3Rh dGljIHZvaWQKIGludGVsX2RwX3Bwc19pbml0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwog Ci1zdGF0aWMgdm9pZCBwcHNfbG9jayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQorc3RhdGlj IGludGVsX3dha2VyZWZfdAorcHBzX2xvY2soc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2Rw KTsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAogCS8qCiAJICogU2VlIGludGVsX3Bvd2Vy X3NlcXVlbmNlcl9yZXNldCgpIHdoeSB3ZSBuZWVkCiAJICogYSBwb3dlciBkb21haW4gcmVmZXJl bmNlIGhlcmUuCiAJICovCi0JaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIGludGVs X2RwLT5hdXhfcG93ZXJfZG9tYWluKTsKLQorCXdha2VyZWYgPSBpbnRlbF9kaXNwbGF5X3Bvd2Vy X2dldChkZXZfcHJpdiwgaW50ZWxfZHAtPmF1eF9wb3dlcl9kb21haW4pOwogCW11dGV4X2xvY2so JmRldl9wcml2LT5wcHNfbXV0ZXgpOworCisJcmV0dXJuIHdha2VyZWY7CiB9CiAKLXN0YXRpYyB2 b2lkIHBwc191bmxvY2soc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK3N0YXRpYyBpbnRlbF93 YWtlcmVmX3QKK3Bwc191bmxvY2soc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50ZWxfd2Fr ZXJlZl90IHdha2VyZWYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZHBfdG9faTkxNShpbnRlbF9kcCk7CiAKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5wcHNfbXV0 ZXgpOworCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBpbnRlbF9kcC0+YXV4X3Bv d2VyX2RvbWFpbiwgd2FrZXJlZik7CiAKLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF91bmNoZWNr ZWQoZGV2X3ByaXYsIGludGVsX2RwLT5hdXhfcG93ZXJfZG9tYWluKTsKKwlyZXR1cm4gMDsKIH0K IAorI2RlZmluZSB3aXRoX3Bwc19sb2NrKGRwLCB3ZikgXAorCWZvciAod2YgPSBwcHNfbG9jayhk cCk7IHdmOyB3ZiA9IHBwc191bmxvY2soZHAsIHdmKSkKKwogc3RhdGljIHZvaWQKIHZsdl9wb3dl cl9zZXF1ZW5jZXJfa2ljayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewpAQCAtMTA1Miwz MCArMTA2MCwzMCBAQCBzdGF0aWMgaW50IGVkcF9ub3RpZnlfaGFuZGxlcihzdHJ1Y3Qgbm90aWZp ZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgY29kZSwKIAlzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwID0gY29udGFpbmVyX29mKHRoaXMsIHR5cGVvZigqIGludGVsX2RwKSwKIAkJCQkJCSBl ZHBfbm90aWZpZXIpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3Rv X2k5MTUoaW50ZWxfZHApOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCiAJaWYgKCFpbnRl bF9kcF9pc19lZHAoaW50ZWxfZHApIHx8IGNvZGUgIT0gU1lTX1JFU1RBUlQpCiAJCXJldHVybiAw OwogCi0JcHBzX2xvY2soaW50ZWxfZHApOwotCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYp IHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Ci0JCWVudW0gcGlwZSBwaXBlID0gdmx2X3Bv d2VyX3NlcXVlbmNlcl9waXBlKGludGVsX2RwKTsKLQkJaTkxNV9yZWdfdCBwcF9jdHJsX3JlZywg cHBfZGl2X3JlZzsKLQkJdTMyIHBwX2RpdjsKLQotCQlwcF9jdHJsX3JlZyA9IFBQX0NPTlRST0wo cGlwZSk7Ci0JCXBwX2Rpdl9yZWcgID0gUFBfRElWSVNPUihwaXBlKTsKLQkJcHBfZGl2ID0gSTkx NV9SRUFEKHBwX2Rpdl9yZWcpOwotCQlwcF9kaXYgJj0gUFBfUkVGRVJFTkNFX0RJVklERVJfTUFT SzsKLQotCQkvKiAweDFGIHdyaXRlIHRvIFBQX0RJVl9SRUcgc2V0cyBtYXggY3ljbGUgZGVsYXkg Ki8KLQkJSTkxNV9XUklURShwcF9kaXZfcmVnLCBwcF9kaXYgfCAweDFGKTsKLQkJSTkxNV9XUklU RShwcF9jdHJsX3JlZywgUEFORUxfVU5MT0NLX1JFR1MgfCBQQU5FTF9QT1dFUl9PRkYpOwotCQlt c2xlZXAoaW50ZWxfZHAtPnBhbmVsX3Bvd2VyX2N5Y2xlX2RlbGF5KTsKKwl3aXRoX3Bwc19sb2Nr KGludGVsX2RwLCB3YWtlcmVmKSB7CisJCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJ U19DSEVSUllWSUVXKGRldl9wcml2KSkgeworCQkJZW51bSBwaXBlIHBpcGUgPSB2bHZfcG93ZXJf c2VxdWVuY2VyX3BpcGUoaW50ZWxfZHApOworCQkJaTkxNV9yZWdfdCBwcF9jdHJsX3JlZywgcHBf ZGl2X3JlZzsKKwkJCXUzMiBwcF9kaXY7CisKKwkJCXBwX2N0cmxfcmVnID0gUFBfQ09OVFJPTChw aXBlKTsKKwkJCXBwX2Rpdl9yZWcgID0gUFBfRElWSVNPUihwaXBlKTsKKwkJCXBwX2RpdiA9IEk5 MTVfUkVBRChwcF9kaXZfcmVnKTsKKwkJCXBwX2RpdiAmPSBQUF9SRUZFUkVOQ0VfRElWSURFUl9N QVNLOworCisJCQkvKiAweDFGIHdyaXRlIHRvIFBQX0RJVl9SRUcgc2V0cyBtYXggY3ljbGUgZGVs YXkgKi8KKwkJCUk5MTVfV1JJVEUocHBfZGl2X3JlZywgcHBfZGl2IHwgMHgxRik7CisJCQlJOTE1 X1dSSVRFKHBwX2N0cmxfcmVnLAorCQkJCSAgIFBBTkVMX1VOTE9DS19SRUdTIHwgUEFORUxfUE9X RVJfT0ZGKTsKKwkJCW1zbGVlcChpbnRlbF9kcC0+cGFuZWxfcG93ZXJfY3ljbGVfZGVsYXkpOwor CQl9CiAJfQogCi0JcHBzX3VubG9jayhpbnRlbF9kcCk7Ci0KIAlyZXR1cm4gMDsKIH0KIApAQCAt MTI2MSwxNiArMTI2OSwxNyBAQCBpbnRlbF9kcF9hdXhfeGZlcihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLAogCQkJdG9faTkxNShpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7CiAJaTkx NV9yZWdfdCBjaF9jdGwsIGNoX2RhdGFbNV07CiAJdWludDMyX3QgYXV4X2Nsb2NrX2RpdmlkZXI7 CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJaW50IGksIHJldCwgcmVjdl9ieXRlczsKLQl1 aW50MzJfdCBzdGF0dXM7CiAJaW50IHRyeSwgY2xvY2sgPSAwOworCXVpbnQzMl90IHN0YXR1czsK IAlib29sIHZkZDsKIAogCWNoX2N0bCA9IGludGVsX2RwLT5hdXhfY2hfY3RsX3JlZyhpbnRlbF9k cCk7CiAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY2hfZGF0YSk7IGkrKykKIAkJY2hfZGF0 YVtpXSA9IGludGVsX2RwLT5hdXhfY2hfZGF0YV9yZWcoaW50ZWxfZHAsIGkpOwogCi0JcHBzX2xv Y2soaW50ZWxfZHApOworCXdha2VyZWYgPSBwcHNfbG9jayhpbnRlbF9kcCk7CiAKIAkvKgogCSAq IFdlIHdpbGwgYmUgY2FsbGVkIHdpdGggVkREIGFscmVhZHkgZW5hYmxlZCBmb3IgZHBjZC9lZGlk L291aSByZWFkcy4KQEAgLTE0MTQsNyArMTQyMyw3IEBAIGludGVsX2RwX2F1eF94ZmVyKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJaWYgKHZkZCkKIAkJZWRwX3BhbmVsX3ZkZF9vZmYoaW50 ZWxfZHAsIGZhbHNlKTsKIAotCXBwc191bmxvY2soaW50ZWxfZHApOworCXBwc191bmxvY2soaW50 ZWxfZHAsIHdha2VyZWYpOwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTI0MzMsMTUgKzI0NDIsMTUg QEAgc3RhdGljIGJvb2wgZWRwX3BhbmVsX3ZkZF9vbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQogICovCiB2b2lkIGludGVsX2VkcF9wYW5lbF92ZGRfb24oc3RydWN0IGludGVsX2RwICppbnRl bF9kcCkKIHsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAlib29sIHZkZDsKIAogCWlmICgh aW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKIAkJcmV0dXJuOwogCi0JcHBzX2xvY2soaW50ZWxf ZHApOwotCXZkZCA9IGVkcF9wYW5lbF92ZGRfb24oaW50ZWxfZHApOwotCXBwc191bmxvY2soaW50 ZWxfZHApOwotCisJdmRkID0gZmFsc2U7CisJd2l0aF9wcHNfbG9jayhpbnRlbF9kcCwgd2FrZXJl ZikKKwkJdmRkID0gZWRwX3BhbmVsX3ZkZF9vbihpbnRlbF9kcCk7CiAJSTkxNV9TVEFURV9XQVJO KCF2ZGQsICJlRFAgcG9ydCAlYyBWREQgYWxyZWFkeSByZXF1ZXN0ZWQgb25cbiIsCiAJICAgICBw b3J0X25hbWUoZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5iYXNlLnBvcnQpKTsKIH0KQEAgLTI0 ODUsMTMgKzI0OTQsMTUgQEAgc3RhdGljIHZvaWQgZWRwX3BhbmVsX3ZkZF9vZmZfc3luYyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCiBzdGF0aWMgdm9pZCBlZHBfcGFuZWxfdmRkX3dvcmso c3RydWN0IHdvcmtfc3RydWN0ICpfX3dvcmspCiB7Ci0Jc3RydWN0IGludGVsX2RwICppbnRlbF9k cCA9IGNvbnRhaW5lcl9vZih0b19kZWxheWVkX3dvcmsoX193b3JrKSwKLQkJCQkJCSBzdHJ1Y3Qg aW50ZWxfZHAsIHBhbmVsX3ZkZF93b3JrKTsKKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0K KwkJY29udGFpbmVyX29mKHRvX2RlbGF5ZWRfd29yayhfX3dvcmspLAorCQkJICAgICBzdHJ1Y3Qg aW50ZWxfZHAsIHBhbmVsX3ZkZF93b3JrKTsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAot CXBwc19sb2NrKGludGVsX2RwKTsKLQlpZiAoIWludGVsX2RwLT53YW50X3BhbmVsX3ZkZCkKLQkJ ZWRwX3BhbmVsX3ZkZF9vZmZfc3luYyhpbnRlbF9kcCk7Ci0JcHBzX3VubG9jayhpbnRlbF9kcCk7 CisJd2l0aF9wcHNfbG9jayhpbnRlbF9kcCwgd2FrZXJlZikgeworCQlpZiAoIWludGVsX2RwLT53 YW50X3BhbmVsX3ZkZCkKKwkJCWVkcF9wYW5lbF92ZGRfb2ZmX3N5bmMoaW50ZWxfZHApOworCX0K IH0KIAogc3RhdGljIHZvaWQgZWRwX3BhbmVsX3ZkZF9zY2hlZHVsZV9vZmYoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKQEAgLTI1ODEsMTIgKzI1OTIsMTMgQEAgc3RhdGljIHZvaWQgZWRwX3Bh bmVsX29uKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAKIHZvaWQgaW50ZWxfZWRwX3BhbmVs X29uKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7CisJaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7CisKIAlpZiAoIWludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpCiAJCXJldHVybjsKIAotCXBw c19sb2NrKGludGVsX2RwKTsKLQllZHBfcGFuZWxfb24oaW50ZWxfZHApOwotCXBwc191bmxvY2so aW50ZWxfZHApOworCXdpdGhfcHBzX2xvY2soaW50ZWxfZHAsIHdha2VyZWYpCisJCWVkcF9wYW5l bF9vbihpbnRlbF9kcCk7CiB9CiAKIApAQCAtMjYyOSwyMCArMjY0MSwyMCBAQCBzdGF0aWMgdm9p ZCBlZHBfcGFuZWxfb2ZmKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAKIHZvaWQgaW50ZWxf ZWRwX3BhbmVsX29mZihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogeworCWludGVsX3dha2Vy ZWZfdCB3YWtlcmVmOworCiAJaWYgKCFpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKQogCQlyZXR1 cm47CiAKLQlwcHNfbG9jayhpbnRlbF9kcCk7Ci0JZWRwX3BhbmVsX29mZihpbnRlbF9kcCk7Ci0J cHBzX3VubG9jayhpbnRlbF9kcCk7CisJd2l0aF9wcHNfbG9jayhpbnRlbF9kcCwgd2FrZXJlZikK KwkJZWRwX3BhbmVsX29mZihpbnRlbF9kcCk7CiB9CiAKIC8qIEVuYWJsZSBiYWNrbGlnaHQgaW4g dGhlIHBhbmVsIHBvd2VyIGNvbnRyb2wuICovCiBzdGF0aWMgdm9pZCBfaW50ZWxfZWRwX2JhY2ts aWdodF9vbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwotCXUzMiBwcDsKLQlpOTE1 X3JlZ190IHBwX2N0cmxfcmVnOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCiAJLyoKIAkg KiBJZiB3ZSBlbmFibGUgdGhlIGJhY2tsaWdodCByaWdodCBhd2F5IGZvbGxvd2luZyBhIHBhbmVs IHBvd2VyCkBAIC0yNjUyLDE3ICsyNjY0LDE2IEBAIHN0YXRpYyB2b2lkIF9pbnRlbF9lZHBfYmFj a2xpZ2h0X29uKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJICovCiAJd2FpdF9iYWNrbGln aHRfb24oaW50ZWxfZHApOwogCi0JcHBzX2xvY2soaW50ZWxfZHApOwotCi0JcHAgPSBpcm9ubGFr ZV9nZXRfcHBfY29udHJvbChpbnRlbF9kcCk7Ci0JcHAgfD0gRURQX0JMQ19FTkFCTEU7Ci0KLQlw cF9jdHJsX3JlZyA9IF9wcF9jdHJsX3JlZyhpbnRlbF9kcCk7CisJd2l0aF9wcHNfbG9jayhpbnRl bF9kcCwgd2FrZXJlZikgeworCQlpOTE1X3JlZ190IHBwX2N0cmxfcmVnID0gX3BwX2N0cmxfcmVn KGludGVsX2RwKTsKKwkJdTMyIHBwOwogCi0JSTkxNV9XUklURShwcF9jdHJsX3JlZywgcHApOwot CVBPU1RJTkdfUkVBRChwcF9jdHJsX3JlZyk7CisJCXBwID0gaXJvbmxha2VfZ2V0X3BwX2NvbnRy b2woaW50ZWxfZHApOworCQlwcCB8PSBFRFBfQkxDX0VOQUJMRTsKIAotCXBwc191bmxvY2soaW50 ZWxfZHApOworCQlJOTE1X1dSSVRFKHBwX2N0cmxfcmVnLCBwcCk7CisJCVBPU1RJTkdfUkVBRChw cF9jdHJsX3JlZyk7CisJfQogfQogCiAvKiBFbmFibGUgYmFja2xpZ2h0IFBXTSBhbmQgYmFja2xp Z2h0IFBQIGNvbnRyb2wuICovCkBAIC0yNjg0LDIzICsyNjk1LDIxIEBAIHZvaWQgaW50ZWxfZWRw X2JhY2tsaWdodF9vbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK IHN0YXRpYyB2b2lkIF9pbnRlbF9lZHBfYmFja2xpZ2h0X29mZihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5 MTUoaW50ZWxfZHApOwotCXUzMiBwcDsKLQlpOTE1X3JlZ190IHBwX2N0cmxfcmVnOworCWludGVs X3dha2VyZWZfdCB3YWtlcmVmOwogCiAJaWYgKCFpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKQog CQlyZXR1cm47CiAKLQlwcHNfbG9jayhpbnRlbF9kcCk7CisJd2l0aF9wcHNfbG9jayhpbnRlbF9k cCwgd2FrZXJlZikgeworCQlpOTE1X3JlZ190IHBwX2N0cmxfcmVnID0gX3BwX2N0cmxfcmVnKGlu dGVsX2RwKTsKKwkJdTMyIHBwOwogCi0JcHAgPSBpcm9ubGFrZV9nZXRfcHBfY29udHJvbChpbnRl bF9kcCk7Ci0JcHAgJj0gfkVEUF9CTENfRU5BQkxFOwotCi0JcHBfY3RybF9yZWcgPSBfcHBfY3Ry bF9yZWcoaW50ZWxfZHApOwotCi0JSTkxNV9XUklURShwcF9jdHJsX3JlZywgcHApOwotCVBPU1RJ TkdfUkVBRChwcF9jdHJsX3JlZyk7CisJCXBwID0gaXJvbmxha2VfZ2V0X3BwX2NvbnRyb2woaW50 ZWxfZHApOworCQlwcCAmPSB+RURQX0JMQ19FTkFCTEU7CiAKLQlwcHNfdW5sb2NrKGludGVsX2Rw KTsKKwkJSTkxNV9XUklURShwcF9jdHJsX3JlZywgcHApOworCQlQT1NUSU5HX1JFQUQocHBfY3Ry bF9yZWcpOworCX0KIAogCWludGVsX2RwLT5sYXN0X2JhY2tsaWdodF9vZmYgPSBqaWZmaWVzOwog CWVkcF93YWl0X2JhY2tsaWdodF9vZmYoaW50ZWxfZHApOwpAQCAtMjcyOCwxMiArMjczNywxMiBA QCBzdGF0aWMgdm9pZCBpbnRlbF9lZHBfYmFja2xpZ2h0X3Bvd2VyKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvciwKIAkJCQkgICAgICBib29sIGVuYWJsZSkKIHsKIAlzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwID0gaW50ZWxfYXR0YWNoZWRfZHAoJmNvbm5lY3Rvci0+YmFzZSk7CisJ aW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJYm9vbCBpc19lbmFibGVkOwogCi0JcHBzX2xvY2so aW50ZWxfZHApOwotCWlzX2VuYWJsZWQgPSBpcm9ubGFrZV9nZXRfcHBfY29udHJvbChpbnRlbF9k cCkgJiBFRFBfQkxDX0VOQUJMRTsKLQlwcHNfdW5sb2NrKGludGVsX2RwKTsKLQorCWlzX2VuYWJs ZWQgPSBmYWxzZTsKKwl3aXRoX3Bwc19sb2NrKGludGVsX2RwLCB3YWtlcmVmKQorCQlpc19lbmFi bGVkID0gaXJvbmxha2VfZ2V0X3BwX2NvbnRyb2woaW50ZWxfZHApICYgRURQX0JMQ19FTkFCTEU7 CiAJaWYgKGlzX2VuYWJsZWQgPT0gZW5hYmxlKQogCQlyZXR1cm47CiAKQEAgLTMyMjcsMjIgKzMy MzYsMjEgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwaXBl X2NvbmZpZy0+YmFzZS5jcnRjKTsKIAl1aW50MzJfdCBkcF9yZWcgPSBJOTE1X1JFQUQoaW50ZWxf ZHAtPm91dHB1dF9yZWcpOwogCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKKwlpbnRlbF93 YWtlcmVmX3Qgd2FrZXJlZjsKIAogCWlmIChXQVJOX09OKGRwX3JlZyAmIERQX1BPUlRfRU4pKQog CQlyZXR1cm47CiAKLQlwcHNfbG9jayhpbnRlbF9kcCk7Ci0KLQlpZiAoSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCi0JCXZsdl9pbml0X3BhbmVsX3Bv d2VyX3NlcXVlbmNlcihlbmNvZGVyLCBwaXBlX2NvbmZpZyk7Ci0KLQlpbnRlbF9kcF9lbmFibGVf cG9ydChpbnRlbF9kcCwgcGlwZV9jb25maWcpOworCXdpdGhfcHBzX2xvY2soaW50ZWxfZHAsIHdh a2VyZWYpIHsKKwkJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVco ZGV2X3ByaXYpKQorCQkJdmx2X2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyKGVuY29kZXIsIHBp cGVfY29uZmlnKTsKIAotCWVkcF9wYW5lbF92ZGRfb24oaW50ZWxfZHApOwotCWVkcF9wYW5lbF9v bihpbnRlbF9kcCk7Ci0JZWRwX3BhbmVsX3ZkZF9vZmYoaW50ZWxfZHAsIHRydWUpOworCQlpbnRl bF9kcF9lbmFibGVfcG9ydChpbnRlbF9kcCwgcGlwZV9jb25maWcpOwogCi0JcHBzX3VubG9jayhp bnRlbF9kcCk7CisJCWVkcF9wYW5lbF92ZGRfb24oaW50ZWxfZHApOworCQllZHBfcGFuZWxfb24o aW50ZWxfZHApOworCQllZHBfcGFuZWxfdmRkX29mZihpbnRlbF9kcCwgdHJ1ZSk7CisJfQogCiAJ aWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7 CiAJCXVuc2lnbmVkIGludCBsYW5lX21hc2sgPSAweDA7CkBAIC0zOTQwLDkgKzM5NDgsMTAgQEAg aW50ZWxfZHBfbGlua19kb3duKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCWludGVs X2RwLT5EUCA9IERQOwogCiAJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJS WVZJRVcoZGV2X3ByaXYpKSB7Ci0JCXBwc19sb2NrKGludGVsX2RwKTsKLQkJaW50ZWxfZHAtPmFj dGl2ZV9waXBlID0gSU5WQUxJRF9QSVBFOwotCQlwcHNfdW5sb2NrKGludGVsX2RwKTsKKwkJaW50 ZWxfd2FrZXJlZl90IHdha2VyZWY7CisKKwkJd2l0aF9wcHNfbG9jayhpbnRlbF9kcCwgd2FrZXJl ZikKKwkJCWludGVsX2RwLT5hY3RpdmVfcGlwZSA9IElOVkFMSURfUElQRTsKIAl9CiB9CiAKQEAg LTUyOTksMTQgKzUzMDgsMTUgQEAgdm9pZCBpbnRlbF9kcF9lbmNvZGVyX2Rlc3Ryb3koc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKQogCiAJaW50ZWxfZHBfbXN0X2VuY29kZXJfY2xlYW51cChp bnRlbF9kaWdfcG9ydCk7CiAJaWYgKGludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpIHsKKwkJaW50 ZWxfd2FrZXJlZl90IHdha2VyZWY7CisKIAkJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpbnRl bF9kcC0+cGFuZWxfdmRkX3dvcmspOwogCQkvKgogCQkgKiB2ZGQgbWlnaHQgc3RpbGwgYmUgZW5h YmxlZCBkbyB0byB0aGUgZGVsYXllZCB2ZGQgb2ZmLgogCQkgKiBNYWtlIHN1cmUgdmRkIGlzIGFj dHVhbGx5IHR1cm5lZCBvZmYgaGVyZS4KIAkJICovCi0JCXBwc19sb2NrKGludGVsX2RwKTsKLQkJ ZWRwX3BhbmVsX3ZkZF9vZmZfc3luYyhpbnRlbF9kcCk7Ci0JCXBwc191bmxvY2soaW50ZWxfZHAp OworCQl3aXRoX3Bwc19sb2NrKGludGVsX2RwLCB3YWtlcmVmKQorCQkJZWRwX3BhbmVsX3ZkZF9v ZmZfc3luYyhpbnRlbF9kcCk7CiAKIAkJaWYgKGludGVsX2RwLT5lZHBfbm90aWZpZXIubm90aWZp ZXJfY2FsbCkgewogCQkJdW5yZWdpc3Rlcl9yZWJvb3Rfbm90aWZpZXIoJmludGVsX2RwLT5lZHBf bm90aWZpZXIpOwpAQCAtNTMyMyw2ICs1MzMzLDcgQEAgdm9pZCBpbnRlbF9kcF9lbmNvZGVyX2Rl c3Ryb3koc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogdm9pZCBpbnRlbF9kcF9lbmNvZGVy X3N1c3BlbmQoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCiB7CiAJc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmaW50ZWxfZW5jb2Rlci0+YmFz ZSk7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAKIAlpZiAoIWludGVsX2RwX2lzX2VkcChp bnRlbF9kcCkpCiAJCXJldHVybjsKQEAgLTUzMzIsOSArNTM0Myw4IEBAIHZvaWQgaW50ZWxfZHBf ZW5jb2Rlcl9zdXNwZW5kKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQogCSAq IE1ha2Ugc3VyZSB2ZGQgaXMgYWN0dWFsbHkgdHVybmVkIG9mZiBoZXJlLgogCSAqLwogCWNhbmNl bF9kZWxheWVkX3dvcmtfc3luYygmaW50ZWxfZHAtPnBhbmVsX3ZkZF93b3JrKTsKLQlwcHNfbG9j ayhpbnRlbF9kcCk7Ci0JZWRwX3BhbmVsX3ZkZF9vZmZfc3luYyhpbnRlbF9kcCk7Ci0JcHBzX3Vu bG9jayhpbnRlbF9kcCk7CisJd2l0aF9wcHNfbG9jayhpbnRlbF9kcCwgd2FrZXJlZikKKwkJZWRw X3BhbmVsX3ZkZF9vZmZfc3luYyhpbnRlbF9kcCk7CiB9CiAKIHN0YXRpYwpAQCAtNTYwOSw2ICs1 NjE5LDcgQEAgdm9pZCBpbnRlbF9kcF9lbmNvZGVyX3Jlc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcikKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVu Y29kZXItPmRldik7CiAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9k cChlbmNvZGVyKTsKIAlzdHJ1Y3QgaW50ZWxfbHNwY29uICpsc3Bjb24gPSBkcF90b19sc3Bjb24o aW50ZWxfZHApOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCiAJaWYgKCFIQVNfRERJKGRl dl9wcml2KSkKIAkJaW50ZWxfZHAtPkRQID0gSTkxNV9SRUFEKGludGVsX2RwLT5vdXRwdXRfcmVn KTsKQEAgLTU2MTgsMTggKzU2MjksMTkgQEAgdm9pZCBpbnRlbF9kcF9lbmNvZGVyX3Jlc2V0KHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAogCWludGVsX2RwLT5yZXNldF9saW5rX3BhcmFt cyA9IHRydWU7CiAKLQlwcHNfbG9jayhpbnRlbF9kcCk7Ci0KLQlpZiAoSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCi0JCWludGVsX2RwLT5hY3RpdmVf cGlwZSA9IHZsdl9hY3RpdmVfcGlwZShpbnRlbF9kcCk7CisJd2l0aF9wcHNfbG9jayhpbnRlbF9k cCwgd2FrZXJlZikgeworCQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZ VklFVyhkZXZfcHJpdikpCisJCQlpbnRlbF9kcC0+YWN0aXZlX3BpcGUgPSB2bHZfYWN0aXZlX3Bp cGUoaW50ZWxfZHApOwogCi0JaWYgKGludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpIHsKLQkJLyog UmVpbml0IHRoZSBwb3dlciBzZXF1ZW5jZXIsIGluIGNhc2UgQklPUyBkaWQgc29tZXRoaW5nIHdp dGggaXQuICovCi0JCWludGVsX2RwX3Bwc19pbml0KGludGVsX2RwKTsKLQkJaW50ZWxfZWRwX3Bh bmVsX3ZkZF9zYW5pdGl6ZShpbnRlbF9kcCk7CisJCWlmIChpbnRlbF9kcF9pc19lZHAoaW50ZWxf ZHApKSB7CisJCQkvKgorCQkJICogUmVpbml0IHRoZSBwb3dlciBzZXF1ZW5jZXIsIGluIGNhc2Ug QklPUyBkaWQKKwkJCSAqIHNvbWV0aGluZyBuYXN0eSB3aXRoIGl0LgorCQkJICovCisJCQlpbnRl bF9kcF9wcHNfaW5pdChpbnRlbF9kcCk7CisJCQlpbnRlbF9lZHBfcGFuZWxfdmRkX3Nhbml0aXpl KGludGVsX2RwKTsKKwkJfQogCX0KLQotCXBwc191bmxvY2soaW50ZWxfZHApOwogfQogCiBzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgaW50ZWxfZHBfY29ubmVjdG9yX2Z1 bmNzID0gewpAQCAtNjQxOCw4ICs2NDMwLDkgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2luaXRf Y29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmRvd25jbG9ja19tb2RlID0gTlVMTDsKIAlib29sIGhhc19kcGNkOwogCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICpzY2FuOwotCXN0cnVjdCBlZGlkICplZGlkOwogCWVudW0gcGlwZSBw aXBlID0gSU5WQUxJRF9QSVBFOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOworCXN0cnVjdCBl ZGlkICplZGlkOwogCiAJaWYgKCFpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKQogCQlyZXR1cm4g dHJ1ZTsKQEAgLTY0MzcsMTMgKzY0NTAsMTEgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2luaXRf Y29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCXJldHVybiBmYWxzZTsKIAl9 CiAKLQlwcHNfbG9jayhpbnRlbF9kcCk7Ci0KLQlpbnRlbF9kcF9pbml0X3BhbmVsX3Bvd2VyX3Rp bWVzdGFtcHMoaW50ZWxfZHApOwotCWludGVsX2RwX3Bwc19pbml0KGludGVsX2RwKTsKLQlpbnRl bF9lZHBfcGFuZWxfdmRkX3Nhbml0aXplKGludGVsX2RwKTsKLQotCXBwc191bmxvY2soaW50ZWxf ZHApOworCXdpdGhfcHBzX2xvY2soaW50ZWxfZHAsIHdha2VyZWYpIHsKKwkJaW50ZWxfZHBfaW5p dF9wYW5lbF9wb3dlcl90aW1lc3RhbXBzKGludGVsX2RwKTsKKwkJaW50ZWxfZHBfcHBzX2luaXQo aW50ZWxfZHApOworCQlpbnRlbF9lZHBfcGFuZWxfdmRkX3Nhbml0aXplKGludGVsX2RwKTsKKwl9 CiAKIAkvKiBDYWNoZSBEUENEIGFuZCBFRElEIGZvciBlZHAuICovCiAJaGFzX2RwY2QgPSBpbnRl bF9lZHBfaW5pdF9kcGNkKGludGVsX2RwKTsKQEAgLTY1MjgsOSArNjUzOSw4IEBAIHN0YXRpYyBi b29sIGludGVsX2VkcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAog CSAqIHZkZCBtaWdodCBzdGlsbCBiZSBlbmFibGVkIGRvIHRvIHRoZSBkZWxheWVkIHZkZCBvZmYu CiAJICogTWFrZSBzdXJlIHZkZCBpcyBhY3R1YWxseSB0dXJuZWQgb2ZmIGhlcmUuCiAJICovCi0J cHBzX2xvY2soaW50ZWxfZHApOwotCWVkcF9wYW5lbF92ZGRfb2ZmX3N5bmMoaW50ZWxfZHApOwot CXBwc191bmxvY2soaW50ZWxfZHApOworCXdpdGhfcHBzX2xvY2soaW50ZWxfZHAsIHdha2VyZWYp CisJCWVkcF9wYW5lbF92ZGRfb2ZmX3N5bmMoaW50ZWxfZHApOwogCiAJcmV0dXJuIGZhbHNlOwog fQotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK