From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anshuman Gupta Subject: [PATCH v10 5/6] drm/i915/tgl: Switch between dc3co and dc5 based on display idleness Date: Thu, 3 Oct 2019 13:47:37 +0530 Message-ID: <20191003081738.22101-6-anshuman.gupta@intel.com> References: <20191003081738.22101-1-anshuman.gupta@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1D14D6E2DD for ; Thu, 3 Oct 2019 08:23:49 +0000 (UTC) In-Reply-To: <20191003081738.22101-1-anshuman.gupta@intel.com> 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 REMzQ08gaXMgdXNlZnVsIHBvd2VyIHN0YXRlLCB3aGVuIERNQyBkZXRlY3RzIFBTUjIgaWRsZSBm cmFtZQp3aGlsZSBhbiBhY3RpdmUgdmlkZW8gcGxheWJhY2ssIHBsYXlpbmcgMzBmcHMgdmlkZW8g b24gNjBoeiBwYW5lbAppcyB0aGUgY2xhc3NpYyBleGFtcGxlIG9mIHRoaXMgdXNlIGNhc2UuCgpC LlNwZWNzOjQ5MTk2IGhhcyBhIHJlc3RyaWN0aW9uIHRvIGVuYWJsZSBEQzNDTyBvbmx5IGZvciBW aWRlbyBQbGF5YmFjay4KSXQgd2lsbCBiZSB3b3J0aHkgdG8gZW5hYmxlIERDM0NPIGFmdGVyIGNv bXBsZXRpb24gb2YgZWFjaCBwYWdlZmxpcAphbmQgc3dpdGNoIGJhY2sgdG8gREM1IHdoZW4gZGlz cGxheSBpcyBpZGxlIGJlY2F1c2UgZHJpdmVyIGRvZXNuJ3QKZGlmZmVyZW50aWF0ZSBiZXR3ZWVu IHZpZGVvIHBsYXliYWNrIGFuZCBhIG5vcm1hbCBwYWdlZmxpcC4KV2Ugd2lsbCB1c2UgRnJvbnRi dWZmZXIgZmx1c2ggY2FsbCB0Z2xfZGMzY29fZmx1c2goKSB0byBlbmFibGUgREMzQ08Kc3RhdGUg b25seSBmb3IgT1JJR0lOX0ZMSVAgZmx1c2ggY2FsbCwgYmVjYXVzZSBEQzNDTyBzdGF0ZSBoYXMg cHJpbWFyaWx5CnRhcmdldGVkIGZvciBWUEIgdXNlIGNhc2UuIFdlIGFyZSBub3QgaW50ZXJlc3Rl ZCBoZXJlIGZvciBmcm9udGJ1ZmZlcgppbnZhbGlkYXRlcyBjYWxscyBiZWNhdXNlIHRoYXQgdHJp Z2dlcnMgUFNSMiBleGl0LCB3aGljaCB3aWxsCmV4cGxpY2l0bHkgZGlzYWJsZSBEQzNDTy4KCkRD NSBhbmQgREM2IHNhdmVzIG1vcmUgcG93ZXIsIGJ1dCBjYW4ndCBiZSBlbnRlcmVkIGR1cmluZyB2 aWRlbwpwbGF5YmFjayBiZWNhdXNlIHRoZXJlIGFyZSBub3QgZW5vdWdoIGlkbGUgZnJhbWVzIGlu IGEgcm93IHRvIG1lZXQKbW9zdCBQU1IyIHBhbmVsIGRlZXAgc2xlZXAgZW50cnkgcmVxdWlyZW1l bnQgdHlwaWNhbGx5IDQgZnJhbWVzLgpBcyBQU1IyIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uIGlz IHVzaW5nIG1pbmltdW0gNiBpZGxlIGZyYW1lcyBmb3IKZGVlcCBzbGVlcCwgaXQgaXMgc2FmZXIg dG8gZW5hYmxlIERDNS82IGFmdGVyIDYgaWRsZSBmcmFtZXMKKEJ5IHNjaGVkdWxpbmcgYSBkZWxh eWVkIHdvcmsgb2YgNiBpZGxlIGZyYW1lcywgb25jZSBEQzNDTyBoYXMgYmVlbgplbmFibGVkIGFm dGVyIGEgcGFnZWZsaXApLgoKQWZ0ZXIgbWFudWFsbHkgd2FpdGluZyBmb3IgNiBpZGxlIGZyYW1l cyBEQzUvNiB3aWxsIGJlIGVuYWJsZWQgYW5kClBTUjIgZGVlcCBzbGVlcCBpZGxlIGZyYW1lcyB3 aWxsIGJlIHJlc3RvcmVkIHRvIDYgaWRsZSBmcmFtZXMsIGF0IHRoaXMKcG9pbnQgRE1DIHdpbGwg dHJpZ2dlcnMgREM1LzYgb25jZSBQU1IyIGVudGVycyB0byBkZWVwIHNsZWVwIGFmdGVyCjYgaWRs ZSBmcmFtZXMuCkluIGZ1dHVyZSB3aGVuIHdlIHdpbGwgZW5hYmxlIFMvVyBQU1IyIHRyYWNraW5n LCB3ZSBjYW4gY2hhbmdlIHRoZQpQU1IyIHJlcXVpcmVkIGRlZXAgc2xlZXAgaWRsZSBmcmFtZXMg dG8gMSBzbyBETUMgY2FuIHRyaWdnZXIgdGhlCkRDNS82IGltbWVkaWF0ZWx5IGFmdGVyIFMvVyBt YW51YWwgd2FpdGluZyBvZiA2IGlkbGUgZnJhbWVzIGdldApjb21wbGV0ZS4KCnYyOiBjYWxjdWxh dGVkIHMvdyBzdGF0ZSB0byBzd2l0Y2ggb3ZlciBkYzNjbyB3aGVuIHRoZXJlIGlzIGFuCiAgICB1 cGRhdGUuIFtJbXJlXQogICAgVXNlZCBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoKSBpbiBvcmRl ciB0byBhdm9pZCBhbnkgcmFjZQogICAgd2l0aCBhbHJlYWR5IHNjaGVkdWxlZCBkZWxheWVkIHdv cmsuIFtJbXJlXQp2MzogQ2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCkgbWF5IGJsb2NrZWQgdGhl IGNvbW1pdCB3b3JrLgogICAgaGVuY2UgZHJvcHBpbmcgaXQsIGRjNV9pZGxlX3RocmVhZCgpIGNo ZWNrcyB0aGUgdmFsaWQgd2FrZXJlZiBiZWZvcmUKICAgIHB1dHRpbmcgdGhlIHJlZmVyZW5jZSBj b3VudCwgd2hpY2ggYXZvaWRzIGFueSBjaGFuY2VzIG9mIGRyb3BwaW5nCiAgICBhIHplcm8gd2Fr ZXJlZi4gW0ltcmUgKElSQyldCnY0OiBVc2VkIGZyb250YnVmZmVyIGZsdXNoIG1lY2hhbmlzbS4g W0ltcmVdCnY1OiBVc2VkIHBzci5waXBlIHRvIGV4dHJhY3QgZnJvbnRidWZmZXIgYnVzeSBiaXRz LiBbSW1yZV0KICAgIFVzZWQgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCkgaW4gZW5jb2RlciBk aXNhYmxlIHBhdGguIFtJbXJlXQogICAgVXNlZCBtb2RfZGVsYXllZF93b3JrKCkgaW5zdGVhZCBv ZiBjYW5jZWxsaW5nIGFuZCBzY2hlZHVsaW5nIGEKICAgIGRlbGF5ZWQgd29yay4gW0ltcmVdCiAg ICBVc2VkIHBzci5sb2NrIGluIHRnbF9kYzVfaWRsZV90aHJlYWQoKSB0byBlbmFibGUgcHNyMiBk ZWVwCiAgICBzbGVlcC4gW0ltcmVdCiAgICBSZW1vdmVkIERDNV9SRVFfSURMRV9GUkFNRVMgbWFj cm8uIFtJbXJlXQp2NjogVXNlZCBkYzNjb19leGl0bGluZSBjaGVjayBpbnN0ZWFkIG9mIFRHTCBh bmQgZGMzY28gYWxsb3dlZF9kY19tYXNrCiAgICBjaGVja3MsIHVzZWQgZGVsYXllZF93b3JrX3Bl bmRpbmcgd2l0aCB0aGUgcHNyIGxvY2sgYW5kIHJlbW92ZWQgdGhlCiAgICBwc3IyX2RlZXBfc2xw X2Rpc2FibGVkIGZsYWcuIFtJbXJlXQp2NzogQ29kZSByZWZhY3RvcmluZywgbW92ZWQgbW9zdCBv ZiBmdW5jdGlvbmFsIGNvZGUgdG8gaW50ZV9wc3IuYyBbSW1yZV0KICAgIFVzaW5nIGZyb250YnVm ZmVyX2JpdHMgb24gcHNyLnBpcGUgY2hlY2sgaW5zdGVhZCBvZgogICAgYnVzeV9mcm9udGJ1ZmZl cl9iaXRzLiBbSW1yZV0KICAgIENhbGN1bGF0aW5nIGRjM2NvX2V4aXRfZGVsYXkgaW4gaW50ZWxf cHNyX2VuYWJsZV9sb2NrZWQuIFtJbXJlXQoKQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBp bnRlbC5jb20+CkNjOiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+CkNjOiBBbmltZXNo IE1hbm5hIDxhbmltZXNoLm1hbm5hQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEltcmUgRGVhayA8 aW1yZS5kZWFrQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQW5zaHVtYW4gR3VwdGEgPGFuc2h1 bWFuLmd1cHRhQGludGVsLmNvbT4KLS0tCiAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNw bGF5X3Bvd2VyLmMgICAgfCAgNDUgKysrKysrKwogLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheV9wb3dlci5oICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfcHNyLmMgICAgICB8IDExNCArKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAgMyArCiA0IGZpbGVzIGNoYW5nZWQs IDE2MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYwppbmRleCBjMmNiZmMyMTBiNTQu LjFlOTk1ZDAwNGJiOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kaXNwbGF5X3Bvd2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kaXNwbGF5X3Bvd2VyLmMKQEAgLTg3MCw2ICs4NzAsNTEgQEAgbG9va3VwX3Bvd2VyX3dl bGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXJldHVybiAmZGV2X3ByaXYt PnBvd2VyX2RvbWFpbnMucG93ZXJfd2VsbHNbMF07CiB9CiAKKy8qKgorICogaW50ZWxfZGlzcGxh eV9wb3dlcl9zZXRfdGFyZ2V0X2RjX3N0YXRlIC0gU2V0IHRhcmdldCBkYyBzdGF0ZS4KKyAqIEBk ZXZfcHJpdjogaTkxNSBkZXZpY2UKKyAqIEBzdGF0ZTogc3RhdGUgd2hpY2ggbmVlZHMgdG8gYmUg c2V0IGFzIHRhcmdldF9kY19zdGF0ZS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHNldCB0aGUgIkRD IG9mZiIgcG93ZXIgd2VsbCB0YXJnZXRfZGNfc3RhdGUsCisgKiBiYXNlZCB1cG9uIHRoaXMgdGFy Z2V0X2RjX3N0c3RlLCAiREMgb2ZmIiBwb3dlciB3ZWxsIHdpbGwKKyAqIGVuYWJsZSBkZXNpcmVk IERDIHN0YXRlLgorICovCit2b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfc2V0X3RhcmdldF9kY19z dGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJCSAgICAgdTMyIHN0 YXRlKQoreworCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGw7CisJYm9vbCBkY19v ZmZfZW5hYmxlZDsKKwlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0g JmRldl9wcml2LT5wb3dlcl9kb21haW5zOworCisJbXV0ZXhfbG9jaygmcG93ZXJfZG9tYWlucy0+ bG9jayk7CisJcG93ZXJfd2VsbCA9IGxvb2t1cF9wb3dlcl93ZWxsKGRldl9wcml2LCBTS0xfRElT UF9EQ19PRkYpOworCisJaWYgKFdBUk5fT04oIXBvd2VyX3dlbGwpKQorCQlnb3RvIHVubG9jazsK KworCXN0YXRlID0gc2FuaXRpemVfdGFyZ2V0X2RjX3N0YXRlKGRldl9wcml2LCBzdGF0ZSk7CisK KwlpZiAoc3RhdGUgPT0gZGV2X3ByaXYtPmNzci50YXJnZXRfZGNfc3RhdGUpCisJCWdvdG8gdW5s b2NrOworCisJZGNfb2ZmX2VuYWJsZWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5vcHMtPmlzX2VuYWJs ZWQoZGV2X3ByaXYsCisJCQkJCQkJICAgcG93ZXJfd2VsbCk7CisJLyoKKwkgKiBJZiBEQyBvZmYg cG93ZXIgd2VsbCBpcyBkaXNhYmxlZCwgbmVlZCB0byBlbmFibGUgYW5kIGRpc2FibGUgdGhlCisJ ICogREMgb2ZmIHBvd2VyIHdlbGwgdG8gZWZmZWN0IHRhcmdldCBEQyBzdGF0ZS4KKwkgKi8KKwlp ZiAoIWRjX29mZl9lbmFibGVkKQorCQlwb3dlcl93ZWxsLT5kZXNjLT5vcHMtPmVuYWJsZShkZXZf cHJpdiwgcG93ZXJfd2VsbCk7CisKKwlkZXZfcHJpdi0+Y3NyLnRhcmdldF9kY19zdGF0ZSA9IHN0 YXRlOworCisJaWYgKCFkY19vZmZfZW5hYmxlZCkKKwkJcG93ZXJfd2VsbC0+ZGVzYy0+b3BzLT5k aXNhYmxlKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKKwordW5sb2NrOgorCW11dGV4X3VubG9jaygm cG93ZXJfZG9tYWlucy0+bG9jayk7Cit9CisKIHN0YXRpYyB2b2lkIGFzc2VydF9jYW5fZW5hYmxl X2RjNShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJYm9vbCBwZzJfZW5h YmxlZCA9IGludGVsX2Rpc3BsYXlfcG93ZXJfd2VsbF9pc19lbmFibGVkKGRldl9wcml2LApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2Vy LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaApp bmRleCA3ZDcyZmFmNDc0YjIuLjFkYTA0ZjNlMGZiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgKQEAgLTI1Nyw2ICsyNTcsOCBA QCB2b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfc3VzcGVuZF9sYXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KTsKIHZvaWQgaW50ZWxfZGlzcGxheV9wb3dlcl9yZXN1bWVfZWFybHkoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwogdm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3N1 c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwogdm9pZCBpbnRlbF9kaXNwbGF5 X3Bvd2VyX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cit2b2lkIGludGVs X2Rpc3BsYXlfcG93ZXJfc2V0X3RhcmdldF9kY19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCisJCQkJCSAgICAgdTMyIHN0YXRlKTsKIAogY29uc3QgY2hhciAqCiBpbnRl bF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9zdHIoZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFp biBkb21haW4pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9wc3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMKaW5kZXgg YjNjN2VlZjUzYmYzLi41MGYyMmFiY2QzMGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9wc3IuYwpAQCAtNTM0LDYgKzUzNCw3MyBAQCB0cmFuc2NvZGVyX2hhc19wc3IyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSB0cmFuc2NvZGVyIHRyYW5zKQog CQlyZXR1cm4gdHJhbnMgPT0gVFJBTlNDT0RFUl9FRFA7CiB9CiAKK3N0YXRpYyB1MzIgaW50ZWxf Z2V0X2ZyYW1lX3RpbWVfdXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkK K3sKKwlpZiAoIWNzdGF0ZSB8fCAhY3N0YXRlLT5iYXNlLmFjdGl2ZSkKKwkJcmV0dXJuIDA7CisK KwlyZXR1cm4gRElWX1JPVU5EX1VQKDEwMDAgKiAxMDAwLAorCQkJICAgIGRybV9tb2RlX3ZyZWZy ZXNoKCZjc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZSkpOworfQorCitzdGF0aWMgdm9pZCBwc3Iy X3Byb2dyYW1faWRsZV9mcmFtZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAor CQkJCSAgICAgdTMyIGlkbGVfZnJhbWVzKQoreworCXUzMiB2YWw7CisKKwlpZGxlX2ZyYW1lcyA8 PD0gIEVEUF9QU1IyX0lETEVfRlJBTUVfU0hJRlQ7CisJdmFsID0gSTkxNV9SRUFEKEVEUF9QU1Iy X0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKKwl2YWwgJj0gfkVEUF9QU1IyX0lETEVf RlJBTUVfTUFTSzsKKwl2YWwgfD0gaWRsZV9mcmFtZXM7CisJSTkxNV9XUklURShFRFBfUFNSMl9D VEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwgdmFsKTsKK30KKworc3RhdGljIHZvaWQgdGds X3BzcjJfZW5hYmxlX2RjM2NvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sK Kwlwc3IyX3Byb2dyYW1faWRsZV9mcmFtZXMoZGV2X3ByaXYsIDApOworCWludGVsX2Rpc3BsYXlf cG93ZXJfc2V0X3RhcmdldF9kY19zdGF0ZShkZXZfcHJpdiwgRENfU1RBVEVfRU5fREMzQ08pOwor fQorCitzdGF0aWMgdm9pZCB0Z2xfcHNyMl9kaXNhYmxlX2RjM2NvKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKK3sKKwlpbnQgaWRsZV9mcmFtZXM7CisKKwlpbnRlbF9kaXNwbGF5 X3Bvd2VyX3NldF90YXJnZXRfZGNfc3RhdGUoZGV2X3ByaXYsIERDX1NUQVRFX0VOX1VQVE9fREM2 KTsKKwkvKgorCSAqIFJlc3RvcmUgUFNSMiBpZGxlIGZyYW1lIGxldCdzIHVzZSA2IGFzIHRoZSBt aW5pbXVtIHRvIGNvdmVyIGFsbCBrbm93bgorCSAqIGNhc2VzIGluY2x1ZGluZyB0aGUgb2ZmLWJ5 LW9uZSBpc3N1ZSB0aGF0IEhXIGhhcyBpbiBzb21lIGNhc2VzLgorCSAqLworCWlkbGVfZnJhbWVz ID0gbWF4KDYsIGRldl9wcml2LT52YnQucHNyLmlkbGVfZnJhbWVzKTsKKwlpZGxlX2ZyYW1lcyA9 IG1heChpZGxlX2ZyYW1lcywgZGV2X3ByaXYtPnBzci5zaW5rX3N5bmNfbGF0ZW5jeSArIDEpOwor CXBzcjJfcHJvZ3JhbV9pZGxlX2ZyYW1lcyhkZXZfcHJpdiwgaWRsZV9mcmFtZXMpOworfQorCitz dGF0aWMgdm9pZCB0Z2xfZGM1X2lkbGVfdGhyZWFkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQorCQljb250YWluZXJfb2Yo d29yaywgdHlwZW9mKCpkZXZfcHJpdiksIHBzci5pZGxlX3dvcmsud29yayk7CisKKwltdXRleF9s b2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOworCS8qIElmIGRlbGF5ZWQgd29yayBpcyBwZW5kaW5n LCBpdCBpcyBub3QgaWRsZSAqLworCWlmIChkZWxheWVkX3dvcmtfcGVuZGluZygmZGV2X3ByaXYt PnBzci5pZGxlX3dvcmspKQorCQlnb3RvIHVubG9jazsKKworCURSTV9ERUJVR19LTVMoIkRDNS82 IGlkbGUgdGhyZWFkXG4iKTsKKwl0Z2xfcHNyMl9kaXNhYmxlX2RjM2NvKGRldl9wcml2KTsKK3Vu bG9jazoKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cit9CisKK3N0YXRpYyB2 b2lkIHRnbF9kaXNhbGxvd19kYzNjb19vbl9wc3IyX2V4aXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQoreworCWlmICghZGV2X3ByaXYtPnBzci5kYzNjb19lbmFibGVkKQorCQly ZXR1cm47CisKKwljYW5jZWxfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+cHNyLmlkbGVfd29yayk7 CisJLyogQmVmb3JlIFBTUjIgZXhpdCBkaXNhbGxvdyBkYzNjbyovCisJdGdsX3BzcjJfZGlzYWJs ZV9kYzNjbyhkZXZfcHJpdik7Cit9CisKIHN0YXRpYyBib29sIGludGVsX3BzcjJfY29uZmlnX3Zh bGlkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQogewpAQCAtNzQ2LDYgKzgxMyw4IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3Bzcl9lbmFibGVfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAlkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCA9IGludGVsX3BzcjJfZW5hYmxlZChkZXZfcHJp diwgY3J0Y19zdGF0ZSk7CiAJZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgPSAw OwogCWRldl9wcml2LT5wc3IucGlwZSA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5j cnRjKS0+cGlwZTsKKwlkZXZfcHJpdi0+cHNyLmRjM2NvX2VuYWJsZWQgPSAhIWNydGNfc3RhdGUt PmRjM2NvX2V4aXRsaW5lOworCWRldl9wcml2LT5wc3IuZGMzY29fZXhpdF9kZWxheSA9IGludGVs X2dldF9mcmFtZV90aW1lX3VzKGNydGNfc3RhdGUpOwogCWRldl9wcml2LT5wc3IudHJhbnNjb2Rl ciA9IGNydGNfc3RhdGUtPmNwdV90cmFuc2NvZGVyOwogCiAJLyoKQEAgLTgyOSw2ICs4OTgsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZXhpdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJfQogCiAJaWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKSB7CisJCXRnbF9k aXNhbGxvd19kYzNjb19vbl9wc3IyX2V4aXQoZGV2X3ByaXYpOwogCQl2YWwgPSBJOTE1X1JFQUQo RURQX1BTUjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOwogCQlXQVJOX09OKCEodmFs ICYgRURQX1BTUjJfRU5BQkxFKSk7CiAJCXZhbCAmPSB+RURQX1BTUjJfRU5BQkxFOwpAQCAtOTAx LDYgKzk3MSw3IEBAIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwKIAogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKIAljYW5jZWxfd29y a19zeW5jKCZkZXZfcHJpdi0+cHNyLndvcmspOworCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygm ZGV2X3ByaXYtPnBzci5pZGxlX3dvcmspOwogfQogCiBzdGF0aWMgdm9pZCBwc3JfZm9yY2VfaHdf dHJhY2tpbmdfZXhpdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCkBAIC0xMjA4 LDYgKzEyNzksNDQgQEAgdm9pZCBpbnRlbF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwog fQogCisvKgorICogV2hlbiB3ZSB3aWxsIGJlIGNvbXBsZXRlbHkgcmVseSBvbiBQU1IyIFMvVyB0 cmFja2luZyBpbiBmdXR1cmUsCisgKiBpbnRlbF9wc3JfZmx1c2goKSB3aWxsIGludmFsaWRhdGUg YW5kIGZsdXNoIHRoZSBQU1IgZm9yIE9SSUdJTl9GTElQCisgKiBldmVudCBhbHNvIHRoZXJlZm9y ZSB0Z2xfZGMzY29fZmx1c2goKSByZXF1aXJlIHRvIGJlIGNoYW5nZWQKKyAqIGFjY3JvZGluZ2x5 IGluIGZ1dHVyZS4KKyAqLworc3RhdGljIHZvaWQKK3RnbF9kYzNjb19mbHVzaChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCXVuc2lnbmVkIGludCBmcm9udGJ1ZmZlcl9iaXRz LCBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pCit7CisJdTMyIGRlbGF5OworCisJbXV0ZXhfbG9j aygmZGV2X3ByaXYtPnBzci5sb2NrKTsKKworCWlmICghZGV2X3ByaXYtPnBzci5kYzNjb19lbmFi bGVkKQorCQlnb3RvIHVubG9jazsKKworCWlmICghZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQg fHwgIWRldl9wcml2LT5wc3IuYWN0aXZlKQorCQlnb3RvIHVubG9jazsKKworCS8qCisJICogQXQg ZXZlcnkgZnJvbnRidWZmZXIgZmx1c2ggZmxpcCBldmVudCBtb2RpZmllZCBkZWxheSBvZiBkZWxh eWVkIHdvcmssCisJICogd2hlbiBkZWxheWVkIHdvcmsgc2NoZWR1bGVzIHRoYXQgbWVhbnMgZGlz cGxheSBoYXMgYmVlbiBpZGxlLgorCSAqLworCWlmICghKGZyb250YnVmZmVyX2JpdHMgJgorCSAg ICBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhkZXZfcHJpdi0+cHNyLnBpcGUpKSkKKwkJZ290 byB1bmxvY2s7CisKKwl0Z2xfcHNyMl9lbmFibGVfZGMzY28oZGV2X3ByaXYpOworCS8qIERDNS9E QzYgcmVxdWlyZWQgaWRsZSBmcmFtZXMgPSA2ICovCisJZGVsYXkgPSA2ICogZGV2X3ByaXYtPnBz ci5kYzNjb19leGl0X2RlbGF5OworCW1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCAmZGV2X3By aXYtPnBzci5pZGxlX3dvcmssCisJCQkgdXNlY3NfdG9famlmZmllcyhkZWxheSkpOworCit1bmxv Y2s6CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOworfQorCiAvKioKICAqIGlu dGVsX3Bzcl9mbHVzaCAtIEZsdXNoIFBTUgogICogQGRldl9wcml2OiBpOTE1IGRldmljZQpAQCAt MTIyNyw4ICsxMzM2LDEwIEBAIHZvaWQgaW50ZWxfcHNyX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQogCQlyZXR1cm47CiAK LQlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQKQorCWlmIChvcmlnaW4gPT0gT1JJR0lOX0ZMSVAp IHsKKwkJdGdsX2RjM2NvX2ZsdXNoKGRldl9wcml2LCBmcm9udGJ1ZmZlcl9iaXRzLCBvcmlnaW4p OwogCQlyZXR1cm47CisJfQogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKIAlp ZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCkgewpAQCAtMTI4NCw2ICsxMzk1LDcgQEAgdm9pZCBp bnRlbF9wc3JfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWRldl9w cml2LT5wc3IubGlua19zdGFuZGJ5ID0gZGV2X3ByaXYtPnZidC5wc3IuZnVsbF9saW5rOwogCiAJ SU5JVF9XT1JLKCZkZXZfcHJpdi0+cHNyLndvcmssIGludGVsX3Bzcl93b3JrKTsKKwlJTklUX0RF TEFZRURfV09SSygmZGV2X3ByaXYtPnBzci5pZGxlX3dvcmssIHRnbF9kYzVfaWRsZV90aHJlYWQp OwogCW11dGV4X2luaXQoJmRldl9wcml2LT5wc3IubG9jayk7CiB9CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCmluZGV4IDY1MjFhNjJlNjgxNy4uYWMwMTYwOTg5NjU2IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKQEAgLTUwMSw2ICs1MDEsOSBAQCBzdHJ1Y3QgaTkxNV9wc3IgewogCWJvb2wgc2lu a19ub3RfcmVsaWFibGU7CiAJYm9vbCBpcnFfYXV4X2Vycm9yOwogCXUxNiBzdV94X2dyYW51bGFy aXR5OworCWJvb2wgZGMzY29fZW5hYmxlZDsKKwl1MzIgZGMzY29fZXhpdF9kZWxheTsKKwlzdHJ1 Y3QgZGVsYXllZF93b3JrIGlkbGVfd29yazsKIH07CiAKICNkZWZpbmUgUVVJUktfTFZEU19TU0Nf RElTQUJMRSAoMTw8MSkKLS0gCjIuMjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4