From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 22/26] drm/i915: Track the wakeref used to initialise display power domains Date: Tue, 11 Sep 2018 12:58:06 +0100 Message-ID: <20180911115810.8917-22-chris@chris-wilson.co.uk> References: <20180911115810.8917-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 4DCC06E378 for ; Tue, 11 Sep 2018 12:00:23 +0000 (UTC) In-Reply-To: <20180911115810.8917-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 T24gbW9kdWxlIGxvYWQgYW5kIHVubG9hZCwgd2UgZ3JhYiB0aGUgUE9XRVJfRE9NQUlOX0lOSVQg cG93ZXJ3ZWxscyBhbmQKdHJhbnNmZXIgdGhlbSB0byB0aGUgcnVudGltZS1wbSBjb2RlLiBXZSBj YW4gdXNlIG91ciB3YWtlcmVmIHRyYWNraW5nIHRvCnZlcmlmeSB0aGF0IHRoZSB3YWtlcmVmIGlz IGluZGVlZCBwYXNzZWQgZnJvbSBpbml0IHRvIGVuYWJsZSwgYW5kCmRpc2FibGUgdG8gZmluaTsg YW5kIGFjcm9zcyBzdXNwZW5kLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0Bj aHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8 ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgfCAxNDYgKysr KysrKysrKysrKy0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDg1IGluc2VydGlvbnMoKyks IDY2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggODQ0 ZGNlYWU2MmRlLi5iMzRmYjBjNmJkMGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j CkBAIC0yNjk1LDYgKzI2OTUsOSBAQCBzdGF0aWMgaW50IGk5MTVfcnVudGltZV9wbV9zdGF0dXMo c3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJaWYgKCFIQVNfUlVOVElNRV9QTShk ZXZfcHJpdikpCiAJCXNlcV9wdXRzKG0sICJSdW50aW1lIHBvd2VyIG1hbmFnZW1lbnQgbm90IHN1 cHBvcnRlZFxuIik7CiAKKwlzZXFfcHJpbnRmKG0sICJSdW50aW1lIHBvd2VyIG1hbmFnZW1lbnQ6 ICVzXG4iLAorCQkgICBlbmFibGVkZGlzYWJsZWQoIWRldl9wcml2LT5wb3dlcl9kb21haW5zLndh a2VyZWYpKTsKKwogCXNlcV9wcmludGYobSwgIkdQVSBpZGxlOiAlcyAoZXBvY2ggJXUpXG4iLAog CQkgICB5ZXNubyghZGV2X3ByaXYtPmd0LmF3YWtlKSwgZGV2X3ByaXYtPmd0LmVwb2NoKTsKIAlz ZXFfcHJpbnRmKG0sICJJUlFzIGRpc2FibGVkOiAlc1xuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CmluZGV4IDVhM2IzY2E4OWM0ZC4uMmE3MDQ4Y2NhODBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKQEAgLTk0NCw2ICs5NDQsOCBAQCBzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zIHsKIAlib29s IGRpc3BsYXlfY29yZV9zdXNwZW5kZWQ7CiAJaW50IHBvd2VyX3dlbGxfY291bnQ7CiAKKwlpbnRl bF93YWtlcmVmX3Qgd2FrZXJlZjsKKwogCXN0cnVjdCBtdXRleCBsb2NrOwogCWludCBkb21haW5f dXNlX2NvdW50W1BPV0VSX0RPTUFJTl9OVU1dOwogCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBv d2VyX3dlbGxzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGlt ZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCmluZGV4IGYw ZGViZTc1Nzg0MC4uMjBmNTQ2ZGMyNDkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ydW50aW1lX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVu dGltZV9wbS5jCkBAIC0zOTc0LDcgKzM5NzQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl9k b21haW5zX3ZlcmlmeV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwog CiAvKioKICAqIGludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdF9odyAtIGluaXRpYWxpemUgaGFyZHdh cmUgcG93ZXIgZG9tYWluIHN0YXRlCi0gKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNl CisgKiBAaTkxNTogaTkxNSBkZXZpY2UgaW5zdGFuY2UKICAqIEByZXN1bWU6IENhbGxlZCBmcm9t IHJlc3VtZSBjb2RlIHBhdGhzIG9yIG5vdAogICoKICAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6 ZXMgdGhlIGhhcmR3YXJlIHBvd2VyIGRvbWFpbiBzdGF0ZSBhbmQgZW5hYmxlcyBhbGwKQEAgLTM5 ODgsMjcgKzM5ODgsMjcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc192ZXJpZnlf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKICAqIGludGVsX3Bvd2Vy X2RvbWFpbnNfZW5hYmxlKCkpIGFuZCBtdXN0IGJlIHBhaXJlZCB3aXRoCiAgKiBpbnRlbF9wb3dl cl9kb21haW5zX2ZpbmlfaHcoKS4KICAqLwotdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX2luaXRf aHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIHJlc3VtZSkKK3ZvaWQg aW50ZWxfcG93ZXJfZG9tYWluc19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LCBib29sIHJlc3VtZSkKIHsKLQlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21h aW5zID0gJmRldl9wcml2LT5wb3dlcl9kb21haW5zOworCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFp bnMgKnBvd2VyX2RvbWFpbnMgPSAmaTkxNS0+cG93ZXJfZG9tYWluczsKIAogCXBvd2VyX2RvbWFp bnMtPmluaXRpYWxpemluZyA9IHRydWU7CiAKLQlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpIHsK LQkJaWNsX2Rpc3BsYXlfY29yZV9pbml0KGRldl9wcml2LCByZXN1bWUpOwotCX0gZWxzZSBpZiAo SVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpIHsKLQkJY25sX2Rpc3BsYXlfY29yZV9pbml0KGRldl9w cml2LCByZXN1bWUpOwotCX0gZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKLQkJc2ts X2Rpc3BsYXlfY29yZV9pbml0KGRldl9wcml2LCByZXN1bWUpOwotCX0gZWxzZSBpZiAoSVNfR0VO OV9MUChkZXZfcHJpdikpIHsKLQkJYnh0X2Rpc3BsYXlfY29yZV9pbml0KGRldl9wcml2LCByZXN1 bWUpOwotCX0gZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKKwlpZiAoSVNfSUNF TEFLRShpOTE1KSkgeworCQlpY2xfZGlzcGxheV9jb3JlX2luaXQoaTkxNSwgcmVzdW1lKTsKKwl9 IGVsc2UgaWYgKElTX0NBTk5PTkxBS0UoaTkxNSkpIHsKKwkJY25sX2Rpc3BsYXlfY29yZV9pbml0 KGk5MTUsIHJlc3VtZSk7CisJfSBlbHNlIGlmIChJU19HRU45X0JDKGk5MTUpKSB7CisJCXNrbF9k aXNwbGF5X2NvcmVfaW5pdChpOTE1LCByZXN1bWUpOworCX0gZWxzZSBpZiAoSVNfR0VOOV9MUChp OTE1KSkgeworCQlieHRfZGlzcGxheV9jb3JlX2luaXQoaTkxNSwgcmVzdW1lKTsKKwl9IGVsc2Ug aWYgKElTX0NIRVJSWVZJRVcoaTkxNSkpIHsKIAkJbXV0ZXhfbG9jaygmcG93ZXJfZG9tYWlucy0+ bG9jayk7Ci0JCWNodl9waHlfY29udHJvbF9pbml0KGRldl9wcml2KTsKKwkJY2h2X3BoeV9jb250 cm9sX2luaXQoaTkxNSk7CiAJCW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7Ci0J fSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkgeworCX0gZWxzZSBpZiAoSVNfVkFM TEVZVklFVyhpOTE1KSkgewogCQltdXRleF9sb2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsKLQkJ dmx2X2NtbmxhbmVfd2EoZGV2X3ByaXYpOworCQl2bHZfY21ubGFuZV93YShpOTE1KTsKIAkJbXV0 ZXhfdW5sb2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsKIAl9CiAKQEAgLTQwMTgsMTggKzQwMTgs MjAgQEAgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBib29sIHJlc3VtZSkKIAkgKiByZXNvdXJjZXMgcG93ZXJlZCB1bnRp bCBkaXNwbGF5IEhXIHJlYWRvdXQgaXMgY29tcGxldGUuIFdlIGRyb3AKIAkgKiB0aGlzIHJlZmVy ZW5jZSBpbiBpbnRlbF9wb3dlcl9kb21haW5zX2VuYWJsZSgpLgogCSAqLwotCWludGVsX2Rpc3Bs YXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7CisJcG93ZXJfZG9tYWlu cy0+d2FrZXJlZiA9CisJCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGk5MTUsIFBPV0VSX0RPTUFJ Tl9JTklUKTsKKwogCS8qIERpc2FibGUgcG93ZXIgc3VwcG9ydCBpZiB0aGUgdXNlciBhc2tlZCBz by4gKi8KIAlpZiAoIWk5MTVfbW9kcGFyYW1zLmRpc2FibGVfcG93ZXJfd2VsbCkKLQkJaW50ZWxf ZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklUKTsKLQlpbnRlbF9w b3dlcl9kb21haW5zX3N5bmNfaHcoZGV2X3ByaXYpOworCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dl dChpOTE1LCBQT1dFUl9ET01BSU5fSU5JVCk7CisJaW50ZWxfcG93ZXJfZG9tYWluc19zeW5jX2h3 KGk5MTUpOwogCiAJcG93ZXJfZG9tYWlucy0+aW5pdGlhbGl6aW5nID0gZmFsc2U7CiB9CiAKIC8q KgogICogaW50ZWxfcG93ZXJfZG9tYWluc19maW5pX2h3IC0gZGVpbml0aWFsaXplIGh3IHBvd2Vy IGRvbWFpbiBzdGF0ZQotICogQGRldl9wcml2OiBpOTE1IGRldmljZSBpbnN0YW5jZQorICogQGk5 MTU6IGk5MTUgZGV2aWNlIGluc3RhbmNlCiAgKgogICogRGUtaW5pdGlhbGl6ZXMgdGhlIGRpc3Bs YXkgcG93ZXIgZG9tYWluIEhXIHN0YXRlLiBJdCBhbHNvIGVuc3VyZXMgdGhhdCB0aGUKICAqIGRl dmljZSBzdGF5cyBwb3dlcmVkIHVwIHNvIHRoYXQgdGhlIGRyaXZlciBjYW4gYmUgcmVsb2FkZWQu CkBAIC00MDM4LDIxICs0MDQwLDI0IEBAIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0X2h3 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCByZXN1bWUpCiAgKiBpbnRl bF9wb3dlcl9kb21haW5zX2Rpc2FibGUoKSkgYW5kIG11c3QgYmUgcGFpcmVkIHdpdGgKICAqIGlu dGVsX3Bvd2VyX2RvbWFpbnNfaW5pdF9odygpLgogICovCi12b2lkIGludGVsX3Bvd2VyX2RvbWFp bnNfZmluaV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit2b2lkIGludGVs X3Bvd2VyX2RvbWFpbnNfZmluaV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsK LQkvKiBLZWVwIHRoZSBwb3dlciB3ZWxsIGVuYWJsZWQsIGJ1dCBjYW5jZWwgaXRzIHJwbSB3YWtl cmVmLiAqLwotCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7CisJaW50 ZWxfd2FrZXJlZl90IHdha2VyZWYgX19tYXliZV91bnVzZWQgPQorCQlmZXRjaF9hbmRfemVybygm aTkxNS0+cG93ZXJfZG9tYWlucy53YWtlcmVmKTsKIAogCS8qIFJlbW92ZSB0aGUgcmVmY291bnQg d2UgdG9vayB0byBrZWVwIHBvd2VyIHdlbGwgc3VwcG9ydCBkaXNhYmxlZC4gKi8KIAlpZiAoIWk5 MTVfbW9kcGFyYW1zLmRpc2FibGVfcG93ZXJfd2VsbCkKLQkJaW50ZWxfZGlzcGxheV9wb3dlcl9w dXRfdW5jaGVja2VkKGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7CisJCWludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0X3VuY2hlY2tlZChpOTE1LCBQT1dFUl9ET01BSU5fSU5JVCk7CisKKwlpbnRl bF9wb3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShpOTE1KTsKIAotCWludGVsX3Bvd2VyX2RvbWFp bnNfdmVyaWZ5X3N0YXRlKGRldl9wcml2KTsKKwkvKiBLZWVwIHRoZSBwb3dlciB3ZWxsIGVuYWJs ZWQsIGJ1dCBjYW5jZWwgaXRzIHJwbSB3YWtlcmVmLiAqLworCWludGVsX3J1bnRpbWVfcG1fcHV0 KGk5MTUsIHdha2VyZWYpOwogfQogCiAvKioKICAqIGludGVsX3Bvd2VyX2RvbWFpbnNfZW5hYmxl IC0gZW5hYmxlIHRvZ2dsaW5nIG9mIGRpc3BsYXkgcG93ZXIgd2VsbHMKLSAqIEBkZXZfcHJpdjog aTkxNSBkZXZpY2UgaW5zdGFuY2UKKyAqIEBpOTE1OiBpOTE1IGRldmljZSBpbnN0YW5jZQogICoK ICAqIEVuYWJsZSB0aGUgb25kZW1hbmQgZW5hYmxpbmcvZGlzYWJsaW5nIG9mIHRoZSBkaXNwbGF5 IHBvd2VyIHdlbGxzLiBOb3RlIHRoYXQKICAqIHBvd2VyIHdlbGxzIG5vdCBiZWxvbmdpbmcgdG8g UE9XRVJfRE9NQUlOX0lOSVQgYXJlIGFsbG93ZWQgdG8gYmUgdG9nZ2xlZApAQCAtNDA2MiwzMCAr NDA2NywzNiBAQCB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfZmluaV9odyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAgKiBvZiBkaXNwbGF5IEhXIHJlYWRvdXQgKHdoaWNoIHdp bGwgYWNxdWlyZSB0aGUgcG93ZXIgcmVmZXJlbmNlcyByZWZsZWN0aW5nCiAgKiB0aGUgY3VycmVu dCBIVyBzdGF0ZSkuCiAgKi8KLXZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19lbmFibGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQordm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX2Vu YWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKLQlpbnRlbF9kaXNwbGF5X3Bv d2VyX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklUKTsKKwlpbnRlbF93 YWtlcmVmX3Qgd2FrZXJlZiBfX21heWJlX3VudXNlZCA9CisJCWZldGNoX2FuZF96ZXJvKCZpOTE1 LT5wb3dlcl9kb21haW5zLndha2VyZWYpOwogCi0JaW50ZWxfcG93ZXJfZG9tYWluc192ZXJpZnlf c3RhdGUoZGV2X3ByaXYpOworCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGk5MTUsIFBPV0VSX0RP TUFJTl9JTklULCB3YWtlcmVmKTsKKwlpbnRlbF9wb3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShp OTE1KTsKIH0KIAogLyoqCiAgKiBpbnRlbF9wb3dlcl9kb21haW5zX2Rpc2FibGUgLSBkaXNhYmxl IHRvZ2dsaW5nIG9mIGRpc3BsYXkgcG93ZXIgd2VsbHMKLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZp Y2UgaW5zdGFuY2UKKyAqIEBpOTE1OiBpOTE1IGRldmljZSBpbnN0YW5jZQogICoKICAqIERpc2Fi bGUgdGhlIG9uZGVtYW5kIGVuYWJsaW5nL2Rpc2FibGluZyBvZiB0aGUgZGlzcGxheSBwb3dlciB3 ZWxscy4gU2VlCiAgKiBpbnRlbF9wb3dlcl9kb21haW5zX2VuYWJsZSgpIGZvciB3aGljaCBwb3dl ciB3ZWxscyB0aGlzIGNhbGwgY29udHJvbHMuCiAgKi8KLXZvaWQgaW50ZWxfcG93ZXJfZG9tYWlu c19kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3ZvaWQgaW50ZWxf cG93ZXJfZG9tYWluc19kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewot CWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7CisJ c3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZpOTE1LT5wb3dlcl9k b21haW5zOworCisJV0FSTl9PTihwb3dlcl9kb21haW5zLT53YWtlcmVmKTsKKwlwb3dlcl9kb21h aW5zLT53YWtlcmVmID0KKwkJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoaTkxNSwgUE9XRVJfRE9N QUlOX0lOSVQpOwogCi0JaW50ZWxfcG93ZXJfZG9tYWluc192ZXJpZnlfc3RhdGUoZGV2X3ByaXYp OworCWludGVsX3Bvd2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRlKGk5MTUpOwogfQogCiAvKioKICAq IGludGVsX3Bvd2VyX2RvbWFpbnNfc3VzcGVuZCAtIHN1c3BlbmQgcG93ZXIgZG9tYWluIHN0YXRl Ci0gKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNlCisgKiBAaTkxNTogaTkxNSBkZXZp Y2UgaW5zdGFuY2UKICAqIEBzdXNwZW5kX21vZGU6IHNwZWNpZmllcyB0aGUgdGFyZ2V0IHN1c3Bl bmQgc3RhdGUgKGlkbGUsIG1lbSwgaGliZXJuYXRpb24pCiAgKgogICogVGhpcyBmdW5jdGlvbiBw cmVwYXJlcyB0aGUgaGFyZHdhcmUgcG93ZXIgZG9tYWluIHN0YXRlIGJlZm9yZSBlbnRlcmluZwpA QCAtNDA5NCwxMiArNDEwNSwxNCBAQCB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfZGlzYWJsZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAgKiBJdCBtdXN0IGJlIGNhbGxlZCB3 aXRoIHBvd2VyIGRvbWFpbnMgYWxyZWFkeSBkaXNhYmxlZCAoYWZ0ZXIgYSBjYWxsIHRvCiAgKiBp bnRlbF9wb3dlcl9kb21haW5zX2Rpc2FibGUoKSkgYW5kIHBhaXJlZCB3aXRoIGludGVsX3Bvd2Vy X2RvbWFpbnNfcmVzdW1lKCkuCiAgKi8KLXZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19zdXNwZW5k KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKK3ZvaWQgaW50ZWxfcG93ZXJfZG9t YWluc19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJCSBlbnVtIGk5 MTVfZHJtX3N1c3BlbmRfbW9kZSBzdXNwZW5kX21vZGUpCiB7Ci0Jc3RydWN0IGk5MTVfcG93ZXJf ZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93ZXJfZG9tYWluczsKKwlzdHJ1 Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmk5MTUtPnBvd2VyX2RvbWFp bnM7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWYgX19tYXliZV91bnVzZWQgPQorCQlmZXRjaF9h bmRfemVybygmcG93ZXJfZG9tYWlucy0+d2FrZXJlZik7CiAKLQlpbnRlbF9kaXNwbGF5X3Bvd2Vy X3B1dF91bmNoZWNrZWQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklUKTsKKwlpbnRlbF9kaXNw bGF5X3Bvd2VyX3B1dChpOTE1LCBQT1dFUl9ET01BSU5fSU5JVCwgd2FrZXJlZik7CiAKIAkvKgog CSAqIEluIGNhc2Ugb2Ygc3VzcGVuZC10by1pZGxlIChha2EgUzBpeCkgb24gYSBETUMgcGxhdGZv cm0gd2l0aG91dCBEQzkKQEAgLTQxMDgsMTAgKzQxMjEsMTAgQEAgdm9pZCBpbnRlbF9wb3dlcl9k b21haW5zX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAqIHJl c291cmNlcyBhcyByZXF1aXJlZCBhbmQgYWxzbyBlbmFibGUgZGVlcGVyIHN5c3RlbSBwb3dlciBz dGF0ZXMKIAkgKiB0aGF0IHdvdWxkIGJlIGJsb2NrZWQgaWYgdGhlIGZpcm13YXJlIHdhcyBpbmFj dGl2ZS4KIAkgKi8KLQlpZiAoIShkZXZfcHJpdi0+Y3NyLmFsbG93ZWRfZGNfbWFzayAmIERDX1NU QVRFX0VOX0RDOSkgJiYKKwlpZiAoIShpOTE1LT5jc3IuYWxsb3dlZF9kY19tYXNrICYgRENfU1RB VEVfRU5fREM5KSAmJgogCSAgICBzdXNwZW5kX21vZGUgPT0gSTkxNV9EUk1fU1VTUEVORF9JRExF ICYmCi0JICAgIGRldl9wcml2LT5jc3IuZG1jX3BheWxvYWQgIT0gTlVMTCkgewotCQlpbnRlbF9w b3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShkZXZfcHJpdik7CisJICAgIGk5MTUtPmNzci5kbWNf cGF5bG9hZCAhPSBOVUxMKSB7CisJCWludGVsX3Bvd2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRlKGk5 MTUpOwogCQlyZXR1cm47CiAJfQogCkBAIC00MTIwLDI1ICs0MTMzLDI1IEBAIHZvaWQgaW50ZWxf cG93ZXJfZG9tYWluc19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAkgKiBwb3dlciB3ZWxscyBpZiBwb3dlciBkb21haW5zIG11c3QgYmUgZGVpbml0aWFsaXplZCBm b3Igc3VzcGVuZC4KIAkgKi8KIAlpZiAoIWk5MTVfbW9kcGFyYW1zLmRpc2FibGVfcG93ZXJfd2Vs bCkgewotCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYsIFBPV0VS X0RPTUFJTl9JTklUKTsKLQkJaW50ZWxfcG93ZXJfZG9tYWluc192ZXJpZnlfc3RhdGUoZGV2X3By aXYpOworCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF91bmNoZWNrZWQoaTkxNSwgUE9XRVJfRE9N QUlOX0lOSVQpOworCQlpbnRlbF9wb3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShpOTE1KTsKIAl9 CiAKLQlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCi0JCWljbF9kaXNwbGF5X2NvcmVfdW5pbml0 KGRldl9wcml2KTsKLQllbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKLQkJY25sX2Rp c3BsYXlfY29yZV91bmluaXQoZGV2X3ByaXYpOwotCWVsc2UgaWYgKElTX0dFTjlfQkMoZGV2X3By aXYpKQotCQlza2xfZGlzcGxheV9jb3JlX3VuaW5pdChkZXZfcHJpdik7Ci0JZWxzZSBpZiAoSVNf R0VOOV9MUChkZXZfcHJpdikpCi0JCWJ4dF9kaXNwbGF5X2NvcmVfdW5pbml0KGRldl9wcml2KTsK KwlpZiAoSVNfSUNFTEFLRShpOTE1KSkKKwkJaWNsX2Rpc3BsYXlfY29yZV91bmluaXQoaTkxNSk7 CisJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShpOTE1KSkKKwkJY25sX2Rpc3BsYXlfY29yZV91bmlu aXQoaTkxNSk7CisJZWxzZSBpZiAoSVNfR0VOOV9CQyhpOTE1KSkKKwkJc2tsX2Rpc3BsYXlfY29y ZV91bmluaXQoaTkxNSk7CisJZWxzZSBpZiAoSVNfR0VOOV9MUChpOTE1KSkKKwkJYnh0X2Rpc3Bs YXlfY29yZV91bmluaXQoaTkxNSk7CiAKIAlwb3dlcl9kb21haW5zLT5kaXNwbGF5X2NvcmVfc3Vz cGVuZGVkID0gdHJ1ZTsKIH0KIAogLyoqCiAgKiBpbnRlbF9wb3dlcl9kb21haW5zX3Jlc3VtZSAt IHJlc3VtZSBwb3dlciBkb21haW4gc3RhdGUKLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5z dGFuY2UKKyAqIEBpOTE1OiBpOTE1IGRldmljZSBpbnN0YW5jZQogICoKICAqIFRoaXMgZnVuY3Rp b24gcmVzdW1lIHRoZSBoYXJkd2FyZSBwb3dlciBkb21haW4gc3RhdGUgZHVyaW5nIHN5c3RlbSBy ZXN1bWUuCiAgKgpAQCAtNDE0NiwyOCArNDE1OSwzMCBAQCB2b2lkIGludGVsX3Bvd2VyX2RvbWFp bnNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAgKiBpbnRlbF9w b3dlcl9kb21haW5zX2VuYWJsZSgpKSBhbmQgbXVzdCBiZSBwYWlyZWQgd2l0aAogICogaW50ZWxf cG93ZXJfZG9tYWluc19zdXNwZW5kKCkuCiAgKi8KLXZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19y ZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQordm9pZCBpbnRlbF9wb3dl cl9kb21haW5zX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKLQlzdHJ1 Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmRldl9wcml2LT5wb3dlcl9k b21haW5zOworCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmaTkx NS0+cG93ZXJfZG9tYWluczsKIAogCWlmIChwb3dlcl9kb21haW5zLT5kaXNwbGF5X2NvcmVfc3Vz cGVuZGVkKSB7Ci0JCWludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdF9odyhkZXZfcHJpdiwgdHJ1ZSk7 CisJCWludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdF9odyhpOTE1LCB0cnVlKTsKIAkJcG93ZXJfZG9t YWlucy0+ZGlzcGxheV9jb3JlX3N1c3BlbmRlZCA9IGZhbHNlOwogCX0gZWxzZSB7Ci0JCWludGVs X2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7CisJCVdBUk5f T04ocG93ZXJfZG9tYWlucy0+d2FrZXJlZik7CisJCXBvd2VyX2RvbWFpbnMtPndha2VyZWYgPQor CQkJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoaTkxNSwgUE9XRVJfRE9NQUlOX0lOSVQpOwogCX0K IAotCWludGVsX3Bvd2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRlKGRldl9wcml2KTsKKwlpbnRlbF9w b3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShpOTE1KTsKIH0KIAogI2lmIElTX0VOQUJMRUQoQ09O RklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pCiAKLXN0YXRpYyB2b2lkIGludGVsX3Bvd2Vy X2RvbWFpbnNfZHVtcF9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0 YXRpYyB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfZHVtcF9pbmZvKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQogewotCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFp bnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7CisJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlu cyAqcG93ZXJfZG9tYWlucyA9ICZpOTE1LT5wb3dlcl9kb21haW5zOwogCXN0cnVjdCBpOTE1X3Bv d2VyX3dlbGwgKnBvd2VyX3dlbGw7CiAKLQlmb3JfZWFjaF9wb3dlcl93ZWxsKGRldl9wcml2LCBw b3dlcl93ZWxsKSB7CisJZm9yX2VhY2hfcG93ZXJfd2VsbChpOTE1LCBwb3dlcl93ZWxsKSB7CiAJ CWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluOwogCiAJCURSTV9ERUJVR19E UklWRVIoIiUtMjVzICVkXG4iLApAQCAtNDE4Miw3ICs0MTk3LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfcG93ZXJfZG9tYWluc19kdW1wX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCiAvKioKICAqIGludGVsX3Bvd2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRlIC0gdmVyaWZ5 IHRoZSBIVy9TVyBzdGF0ZSBmb3IgYWxsIHBvd2VyIHdlbGxzCi0gKiBAZGV2X3ByaXY6IGk5MTUg ZGV2aWNlIGluc3RhbmNlCisgKiBAaTkxNTogaTkxNSBkZXZpY2UgaW5zdGFuY2UKICAqCiAgKiBW ZXJpZnkgaWYgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBlYWNoIHBvd2VyIHdlbGwgbWF0Y2hlcyBp dHMgSFcgZW5hYmxlZAogICogc3RhdGUgYW5kIHRoZSB0b3RhbCByZWZjb3VudCBvZiB0aGUgZG9t YWlucyBpdCBiZWxvbmdzIHRvLiBUaGlzIG11c3QgYmUKQEAgLTQxOTAsMTYgKzQyMDUsMTYgQEAg c3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19kdW1wX2luZm8oc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogICogYWNxdWlyaW5nIHJlZmVyZW5jZSBjb3VudHMgZm9yIGFu eSBwb3dlciB3ZWxscyBpbiB1c2UgYW5kIGRpc2FibGluZyB0aGUKICAqIG9uZXMgbGVmdCBvbiBi eSBCSU9TIGJ1dCBub3QgcmVxdWlyZWQgYnkgYW55IGFjdGl2ZSBvdXRwdXQuCiAgKi8KLXN0YXRp YyB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfdmVyaWZ5 X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewotCXN0cnVjdCBpOTE1X3Bv d2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7CisJ c3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZpOTE1LT5wb3dlcl9k b21haW5zOwogCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGw7CiAJYm9vbCBkdW1w X2RvbWFpbl9pbmZvOwogCiAJbXV0ZXhfbG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7CiAKIAlk dW1wX2RvbWFpbl9pbmZvID0gZmFsc2U7Ci0JZm9yX2VhY2hfcG93ZXJfd2VsbChkZXZfcHJpdiwg cG93ZXJfd2VsbCkgeworCWZvcl9lYWNoX3Bvd2VyX3dlbGwoaTkxNSwgcG93ZXJfd2VsbCkgewog CQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbjsKIAkJaW50IGRvbWFpbnNf Y291bnQ7CiAJCWJvb2wgZW5hYmxlZDsKQEAgLTQyMTIsOCArNDIyNyw3IEBAIHN0YXRpYyB2b2lk IGludGVsX3Bvd2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAkJaWYgKCFwb3dlcl93ZWxsLT5kZXNjLT5kb21haW5zKQogCQkJY29udGlu dWU7CiAKLQkJZW5hYmxlZCA9IHBvd2VyX3dlbGwtPmRlc2MtPm9wcy0+aXNfZW5hYmxlZChkZXZf cHJpdiwKLQkJCQkJCQkgICAgcG93ZXJfd2VsbCk7CisJCWVuYWJsZWQgPSBwb3dlcl93ZWxsLT5k ZXNjLT5vcHMtPmlzX2VuYWJsZWQoaTkxNSwgcG93ZXJfd2VsbCk7CiAJCWlmICgocG93ZXJfd2Vs bC0+Y291bnQgfHwgcG93ZXJfd2VsbC0+ZGVzYy0+YWx3YXlzX29uKSAhPQogCQkgICAgZW5hYmxl ZCkKIAkJCURSTV9FUlJPUigicG93ZXIgd2VsbCAlcyBzdGF0ZSBtaXNtYXRjaCAocmVmY291bnQg JWQvZW5hYmxlZCAlZCkiLApAQCAtNDIzNyw3ICs0MjUxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf cG93ZXJfZG9tYWluc192ZXJpZnlfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCQlzdGF0aWMgYm9vbCBkdW1wZWQ7CiAKIAkJaWYgKCFkdW1wZWQpIHsKLQkJCWludGVs X3Bvd2VyX2RvbWFpbnNfZHVtcF9pbmZvKGRldl9wcml2KTsKKwkJCWludGVsX3Bvd2VyX2RvbWFp bnNfZHVtcF9pbmZvKGk5MTUpOwogCQkJZHVtcGVkID0gdHJ1ZTsKIAkJfQogCX0KQEAgLTQyNDcs NyArNDI2MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogI2Vsc2UKIAotc3RhdGljIHZv aWQgaW50ZWxfcG93ZXJfZG9tYWluc192ZXJpZnlfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc192ZXJpZnlfc3Rh dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CiB9CiAKLS0gCjIuMTkuMC5yYzIK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=