From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandra Yates Subject: [PATCH 1/5] drm/i915: Add sys PSR toggle interface Date: Tue, 12 Apr 2016 12:18:44 -0700 Message-ID: <1460488728-23319-2-git-send-email-alexandra.yates@linux.intel.com> References: <1460488728-23319-1-git-send-email-alexandra.yates@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 2D5786E770 for ; Tue, 12 Apr 2016 19:14:12 +0000 (UTC) In-Reply-To: <1460488728-23319-1-git-send-email-alexandra.yates@linux.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, rodrigo.vivi@intel.com, nivedita.swaminathan@intel.com, joe.konno@intel.com Cc: Alexandra Yates List-Id: intel-gfx@lists.freedesktop.org VGhpcyBpbnRlcmZhY2UgYWxsb3dzIGFuIGltbWVkaWF0ZSBlbmFibGluZyBvZiBQU1IgZmVhdHVy ZS4gV2hhdCBhbGxvdyB1cwp0byBzZWUgaW1tZWRpYXRlbHkgdGhlIFBTUiBzYXZpbmdzIGFuZCB3 aWxsIGFsbG93IHVzIHRvIGV4cG9zZSB0aGlzCnRocm91Z2ggc3lzZnMgaW50ZXJmYWNlIGZvciBw b3dlcnRvcCB0byBsZXZlcmFnZSBpdHMgZnVuY3Rpb25hbGl0eS4KClNpZ25lZC1vZmYtYnk6IEFs ZXhhbmRyYSBZYXRlcyA8YWxleGFuZHJhLnlhdGVzQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgfCAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3N5c2ZzLmMgfCA3OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICB8ICA2ICsrLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgIHwgMTEgKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgfCAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMg IHwgMzYgKysrKysrKysrKysrKystLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDEyMiBpbnNlcnRpb25z KCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBmNWM5MWIw Li5jOTZkYTRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTk3Niw2ICs5NzYsNyBAQCBz dHJ1Y3QgaTkxNV9wc3IgewogCWJvb2wgcHNyMl9zdXBwb3J0OwogCWJvb2wgYXV4X2ZyYW1lX3N5 bmM7CiAJYm9vbCBsaW5rX3N0YW5kYnk7CisJYm9vbCBzeXNmc19zZXQ7CiB9OwogCiBlbnVtIGlu dGVsX3BjaCB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKaW5kZXggMmQ1NzZiNy4uMjA4YzZl YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwpAQCAtMTA2LDEyICsxMDYsODQgQEAgc2hv d19tZWRpYV9yYzZfbXMoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsIGNoYXIgKmJ1ZikKIAlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIl dVxuIiwgcmM2X3Jlc2lkZW5jeSk7CiB9CiAKK3N0YXRpYyBzc2l6ZV90CitzaG93X3BzcihzdHJ1 Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVm KQoreworCXN0cnVjdCBkcm1fbWlub3IgKmRtaW5vciA9IGRldl90b19kcm1fbWlub3Ioa2Rldik7 CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRtaW5vci0+ZGV2OworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3NpemVfdCByZXQ7CisK KwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOworCXJldCA9IHNucHJpbnRmKGJ1Ziwg UEFHRV9TSVpFLCAiJXNcbiIsIGRldl9wcml2LT5wc3IuZW5hYmxlZCA/CisJCQkiZW5hYmxlZCI6 ImRpc2FibGVkIik7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90Cit0b2dnbGVfcHNyKHN0cnVjdCBkZXZpY2UgKmtk ZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCWNvbnN0IGNoYXIgKmJ1Ziwgc2l6 ZV90IGNvdW50KQoreworCXN0cnVjdCBkcm1fbWlub3IgKmRtaW5vciA9IGRldl90b19kcm1fbWlu b3Ioa2Rldik7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRtaW5vci0+ZGV2OworCXN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcjsKKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlcjsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IE5VTEw7CisJdTMyIHZhbDsKKwlzc2l6 ZV90IHJldDsKKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gTlVMTDsKKwlib29sIHN5c2Zz X3NldCA9IHRydWU7CisKKwlyZXQgPSBrc3RydG91MzIoYnVmLCAwLCAmdmFsKTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCisJZm9yX2VhY2hfaW50ZWxfY29ubmVjdG9yKGRldiwgY29ubmVj dG9yKSB7CisJCWlmICghY29ubmVjdG9yLT5iYXNlLmVuY29kZXIpCisJCQljb250aW51ZTsKKwkJ ZW5jb2RlciA9IHRvX2ludGVsX2VuY29kZXIoY29ubmVjdG9yLT5iYXNlLmVuY29kZXIpOworCQlj cnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOworCQlpbnRlbF9kcCA9IGVu Y190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7CisJfQorCisJaWYgKCFjcnRjKQorCQlyZXR1 cm4gLUVOT0RFVjsKKwlzd2l0Y2ggKHZhbCkgeworCWNhc2UgMDoKKwkJcmV0ID0gaW50ZWxfcHNy X2Rpc2FibGUoaW50ZWxfZHAsIHN5c2ZzX3NldCk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0 OworCQlicmVhazsKKwljYXNlIDE6CisJCXJldCA9IGludGVsX3Bzcl9lbmFibGUoaW50ZWxfZHAs IHN5c2ZzX3NldCk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCQlicmVhazsKKwlkZWZh dWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKworCX0KKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRp YyBERVZJQ0VfQVRUUihwc3JfZW5hYmxlLCBTX0lSVUdPIHwgU19JV1VTUiwgc2hvd19wc3IsIHRv Z2dsZV9wc3IpOwogc3RhdGljIERFVklDRV9BVFRSKHJjNl9lbmFibGUsIFNfSVJVR08sIHNob3df cmM2X21hc2ssIE5VTEwpOwogc3RhdGljIERFVklDRV9BVFRSKHJjNl9yZXNpZGVuY3lfbXMsIFNf SVJVR08sIHNob3dfcmM2X21zLCBOVUxMKTsKIHN0YXRpYyBERVZJQ0VfQVRUUihyYzZwX3Jlc2lk ZW5jeV9tcywgU19JUlVHTywgc2hvd19yYzZwX21zLCBOVUxMKTsKIHN0YXRpYyBERVZJQ0VfQVRU UihyYzZwcF9yZXNpZGVuY3lfbXMsIFNfSVJVR08sIHNob3dfcmM2cHBfbXMsIE5VTEwpOwogc3Rh dGljIERFVklDRV9BVFRSKG1lZGlhX3JjNl9yZXNpZGVuY3lfbXMsIFNfSVJVR08sIHNob3dfbWVk aWFfcmM2X21zLCBOVUxMKTsKIAorc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnBzcl9hdHRyc1td ID0geworCSZkZXZfYXR0cl9wc3JfZW5hYmxlLmF0dHIsCisJTlVMTAorfTsKKworc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgcHNyX2F0dHJfZ3JvdXAgPSB7CisJLm5hbWUgPSBwb3dlcl9n cm91cF9uYW1lLAorCS5hdHRycyA9IHBzcl9hdHRycworfTsKKwogc3RhdGljIHN0cnVjdCBhdHRy aWJ1dGUgKnJjNl9hdHRyc1tdID0gewogCSZkZXZfYXR0cl9yYzZfZW5hYmxlLmF0dHIsCiAJJmRl dl9hdHRyX3JjNl9yZXNpZGVuY3lfbXMuYXR0ciwKQEAgLTU5Niw2ICs2NjgsMTIgQEAgdm9pZCBp OTE1X3NldHVwX3N5c2ZzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaW50IHJldDsKIAogI2lm ZGVmIENPTkZJR19QTQorCWlmIChIQVNfUFNSKGRldikpIHsKKwkJcmV0ID0gc3lzZnNfbWVyZ2Vf Z3JvdXAoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwKKwkJCQkJJnBzcl9hdHRyX2dyb3VwKTsK KwkJaWYgKHJldCkKKwkJCURSTV9FUlJPUigiUFNSIHN5c2ZzIHNldHVwIGZhaWxlZFxuIik7CisJ fQogCWlmIChIQVNfUkM2KGRldikpIHsKIAkJcmV0ID0gc3lzZnNfbWVyZ2VfZ3JvdXAoJmRldi0+ cHJpbWFyeS0+a2Rldi0+a29iaiwKIAkJCQkJJnJjNl9hdHRyX2dyb3VwKTsKQEAgLTY1Miw2ICs3 MzAsNyBAQCB2b2lkIGk5MTVfdGVhcmRvd25fc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAlkZXZpY2VfcmVtb3ZlX2Jpbl9maWxlKGRldi0+cHJpbWFyeS0+a2RldiwgICZkcGZfYXR0cnNf MSk7CiAJZGV2aWNlX3JlbW92ZV9iaW5fZmlsZShkZXYtPnByaW1hcnktPmtkZXYsICAmZHBmX2F0 dHJzKTsKICNpZmRlZiBDT05GSUdfUE0KKwlzeXNmc191bm1lcmdlX2dyb3VwKCZkZXYtPnByaW1h cnktPmtkZXYtPmtvYmosICZwc3JfYXR0cl9ncm91cCk7CiAJc3lzZnNfdW5tZXJnZV9ncm91cCgm ZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCAmcmM2X2F0dHJfZ3JvdXApOwogCXN5c2ZzX3VubWVy Z2VfZ3JvdXAoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwgJnJjNnBfYXR0cl9ncm91cCk7CiAj ZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKaW5kZXggOTIxZWRmMS4uOGUzODRlNSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKQEAgLTE2ODksNyArMTY4OSw4IEBAIHN0YXRpYyB2b2lk IGludGVsX2VuYWJsZV9kZGkoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCiAJ CQlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOwogCiAJCWludGVsX2VkcF9iYWNr bGlnaHRfb24oaW50ZWxfZHApOwotCQlpbnRlbF9wc3JfZW5hYmxlKGludGVsX2RwKTsKKwkJaWYg KGRldl9wcml2LT5wc3Iuc3lzZnNfc2V0ICE9IHRydWUpCisJCQlpbnRlbF9wc3JfZW5hYmxlKGlu dGVsX2RwLCBkZXZfcHJpdi0+cHNyLnN5c2ZzX3NldCk7CiAJCWludGVsX2VkcF9kcnJzX2VuYWJs ZShpbnRlbF9kcCk7CiAJfQogCkBAIC0xNzE3LDcgKzE3MTgsOCBAQCBzdGF0aWMgdm9pZCBpbnRl bF9kaXNhYmxlX2RkaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKIAkJc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsKIAogCQlp bnRlbF9lZHBfZHJyc19kaXNhYmxlKGludGVsX2RwKTsKLQkJaW50ZWxfcHNyX2Rpc2FibGUoaW50 ZWxfZHApOworCQlpZiAoZGV2X3ByaXYtPnBzci5zeXNmc19zZXQgIT0gdHJ1ZSkKKwkJCWludGVs X3Bzcl9kaXNhYmxlKGludGVsX2RwLCBkZXZfcHJpdi0+cHNyLnN5c2ZzX3NldCk7CiAJCWludGVs X2VkcF9iYWNrbGlnaHRfb2ZmKGludGVsX2RwKTsKIAl9CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu YwppbmRleCA3NTIzNTU4Li4xODNhNjBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKQEAgLTI0 MjEsMTMgKzI0MjEsMTYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGlzYWJsZV9kcChzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5j X3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g ZW5jb2Rlci0+YmFzZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2Ny dGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKIAogCWlmIChjcnRjLT5jb25maWctPmhhc19hdWRpbykK IAkJaW50ZWxfYXVkaW9fY29kZWNfZGlzYWJsZShlbmNvZGVyKTsKIAotCWlmIChIQVNfUFNSKGRl dikgJiYgIUhBU19EREkoZGV2KSkKLQkJaW50ZWxfcHNyX2Rpc2FibGUoaW50ZWxfZHApOworCWlm IChIQVNfUFNSKGRldikgJiYgIUhBU19EREkoZGV2KSkgeworCQlpZiAoZGV2X3ByaXYtPnBzci5z eXNmc19zZXQgIT0gdHJ1ZSkKKwkJCWludGVsX3Bzcl9kaXNhYmxlKGludGVsX2RwLCBkZXZfcHJp di0+cHNyLnN5c2ZzX3NldCk7CisJfQogCiAJLyogTWFrZSBzdXJlIHRoZSBwYW5lbCBpcyBvZmYg YmVmb3JlIHRyeWluZyB0byBjaGFuZ2UgdGhlIG1vZGUuIEJ1dCBhbHNvCiAJICogZW5zdXJlIHRo YXQgd2UgaGF2ZSB2ZGQgd2hpbGUgd2Ugc3dpdGNoIG9mZiB0aGUgcGFuZWwuICovCkBAIC0yNjg5 LDkgKzI2OTIsMTEgQEAgc3RhdGljIHZvaWQgZzR4X2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlcikKIHN0YXRpYyB2b2lkIHZsdl9lbmFibGVfZHAoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIpCiB7CiAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19p bnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CiAKIAlpbnRlbF9lZHBfYmFja2xpZ2h0 X29uKGludGVsX2RwKTsKLQlpbnRlbF9wc3JfZW5hYmxlKGludGVsX2RwKTsKKwlpZiAoZGV2X3By aXYtPnBzci5zeXNmc19zZXQgIT0gdHJ1ZSkKKwkJaW50ZWxfcHNyX2VuYWJsZShpbnRlbF9kcCwg ZGV2X3ByaXYtPnBzci5zeXNmc19zZXQpOwogfQogCiBzdGF0aWMgdm9pZCBnNHhfcHJlX2VuYWJs ZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKaW5kZXggZTBmY2ZhMS4uMTk5ZThjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAg LTE0NDYsOCArMTQ0Niw4IEBAIHZvaWQgaW50ZWxfYmFja2xpZ2h0X3VucmVnaXN0ZXIoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7CiAKIAogLyogaW50ZWxfcHNyLmMgKi8KLXZvaWQgaW50ZWxfcHNy X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKLXZvaWQgaW50ZWxfcHNyX2Rpc2Fi bGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7CitpbnQgaW50ZWxfcHNyX2VuYWJsZShzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBib29sIHN5c2ZzX3NldCk7CitpbnQgaW50ZWxfcHNyX2Rp c2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgYm9vbCBzeXNmc19zZXQpOwogdm9pZCBp bnRlbF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJICB1bnNpZ25l ZCBmcm9udGJ1ZmZlcl9iaXRzKTsKIHZvaWQgaW50ZWxfcHNyX2ZsdXNoKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCmluZGV4IGMzYWJhZTQuLjY0Y2I3MTQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCkBAIC0zNzgsMzQgKzM3OCw0MyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9wc3JfYWN0aXZhdGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIC8qKgog ICogaW50ZWxfcHNyX2VuYWJsZSAtIEVuYWJsZSBQU1IKICAqIEBpbnRlbF9kcDogSW50ZWwgRFAK KyAqIEBzeXNmc19zZXQ6IElkZW50aWZpZXMgaWYgdGhpcyBmZWF0dXJlIGlzIHNldCBmcm9tIHN5 c2ZzCiAgKgogICogVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHBp cGUgaXMgZnVsbHkgdHJhaW5lZCBhbmQgZW5hYmxlZC4KKyAqCisgKiBSZXR1cm5zOgorICogMCBv biBzdWNjZXNzIGFuZCAtZXJybm8gb3RoZXJ3aXNlLgogICovCi12b2lkIGludGVsX3Bzcl9lbmFi bGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK2ludCBpbnRlbF9wc3JfZW5hYmxlKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsIGJvb2wgc3lzZnNfc2V0KQogewogCXN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwog CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRldjsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwog CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhpbnRlbF9kaWdfcG9ydC0+ YmFzZS5iYXNlLmNydGMpOworCWludCByZXQgPSAwOworCiAKIAlpZiAoIUhBU19QU1IoZGV2KSkg ewogCQlEUk1fREVCVUdfS01TKCJQU1Igbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtXG4i KTsKLQkJcmV0dXJuOworCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKIAlpZiAoIWlzX2VkcF9wc3Io aW50ZWxfZHApKSB7CiAJCURSTV9ERUJVR19LTVMoIlBTUiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMg cGFuZWxcbiIpOwotCQlyZXR1cm47CisJCXJldHVybiAtRUlOVkFMOwogCX0KIAogCW11dGV4X2xv Y2soJmRldl9wcml2LT5wc3IubG9jayk7CiAJaWYgKGRldl9wcml2LT5wc3IuZW5hYmxlZCkgewog CQlEUk1fREVCVUdfS01TKCJQU1IgYWxyZWFkeSBpbiB1c2VcbiIpOworCQlyZXQgPSAtRUFMUkVB RFk7CiAJCWdvdG8gdW5sb2NrOwogCX0KIAotCWlmICghaW50ZWxfcHNyX21hdGNoX2NvbmRpdGlv bnMoaW50ZWxfZHApKQorCWlmICghaW50ZWxfcHNyX21hdGNoX2NvbmRpdGlvbnMoaW50ZWxfZHAp KSB7CisJCXJldCA9IC1FTk9UVFk7CiAJCWdvdG8gdW5sb2NrOworCX0KIAogCWRldl9wcml2LT5w c3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzID0gMDsKIApAQCAtNDY0LDggKzQ3MywxMiBAQCB2b2lk IGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAkJCQkgICAgICBt c2Vjc190b19qaWZmaWVzKGludGVsX2RwLT5wYW5lbF9wb3dlcl9jeWNsZV9kZWxheSAqIDUpKTsK IAogCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IGludGVsX2RwOworCWlmIChzeXNmc19zZXQpCisJ CWRldl9wcml2LT5wc3Iuc3lzZnNfc2V0ID0gc3lzZnNfc2V0OworCiB1bmxvY2s6CiAJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2 b2lkIHZsdl9wc3JfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQpAQCAtNTIwLDEw ICs1MzMsMTEgQEAgc3RhdGljIHZvaWQgaHN3X3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApCiAvKioKICAqIGludGVsX3Bzcl9kaXNhYmxlIC0gRGlzYWJsZSBQU1IKICAqIEBp bnRlbF9kcDogSW50ZWwgRFAKKyAqIEBzeXNmc19zZXQ6IElkZW50aWZpZXMgaWYgdGhpcyBmZWF0 dXJlIGlzIHNldCBmcm9tIHN5c2ZzCiAgKgogICogVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSBj YWxsZWQgYmVmb3JlIGRpc2FibGluZyBwaXBlLgogICovCi12b2lkIGludGVsX3Bzcl9kaXNhYmxl KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCitpbnQgaW50ZWxfcHNyX2Rpc2FibGUoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwgYm9vbCBzeXNmc19zZXQpCiB7CiAJc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7CiAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2OwpA QCAtNTMyLDcgKzU0Niw3IEBAIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwogCWlmICghZGV2 X3ByaXYtPnBzci5lbmFibGVkKSB7CiAJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2Nr KTsKLQkJcmV0dXJuOworCQlyZXR1cm4gLUVBTFJFQURZOwogCX0KIAogCS8qIERpc2FibGUgUFNS IG9uIFNvdXJjZSAqLwpAQCAtNTQ1LDkgKzU1OSwxMyBAQCB2b2lkIGludGVsX3Bzcl9kaXNhYmxl KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJZHJtX2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9k cC0+YXV4LCBEUF9QU1JfRU5fQ0ZHLCAwKTsKIAogCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IE5V TEw7CisJaWYgKHN5c2ZzX3NldCkKKwkJZGV2X3ByaXYtPnBzci5zeXNmc19zZXQgPSBzeXNmc19z ZXQ7CisKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7CiAKIAljYW5jZWxfZGVs YXllZF93b3JrX3N5bmMoJmRldl9wcml2LT5wc3Iud29yayk7CisJcmV0dXJuIDA7CiB9CiAKIHN0 YXRpYyB2b2lkIGludGVsX3Bzcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKQEAgLTc4 MSw4ICs3OTksMTAgQEAgdm9pZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCiAJLyogUGVyIHBsYXRmb3JtIGRlZmF1bHQgKi8KIAlpZiAoaTkxNS5lbmFibGVfcHNyID09 IC0xKSB7Ci0JCWlmIChJU19IQVNXRUxMKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpCi0JCQlp OTE1LmVuYWJsZV9wc3IgPSAxOworCQlpZiAoSVNfSEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VM TChkZXYpKSB7CisJCQlpZiAoZGV2X3ByaXYtPnBzci5zeXNmc19zZXQgIT0gdHJ1ZSkKKwkJCQlp OTE1LmVuYWJsZV9wc3IgPSAxOworCQl9CiAJCWVsc2UKIAkJCWk5MTUuZW5hYmxlX3BzciA9IDA7 CiAJfQotLSAKMi41LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=