From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 1/3] drm/i915: Extract knowledge of register forcewake domains Date: Thu, 7 Apr 2016 15:05:38 +0100 Message-ID: <1460037940-14094-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id F334B8982C for ; Thu, 7 Apr 2016 14:06:18 +0000 (UTC) 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 RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCktub3dsZWRn ZSBvZiB3aGljaCByZWdpc3RlciBwZXIgcGxhdGZvcm0gYmVsb25kcyBpbiB3aGljaApmb3JjZXdh a2UgZG9tYWluIHdhcyBlbWJlZGRlZCBpbiB0aGUgTU1JTyBhY2Nlc3NvcnMgdGhlbXNlbHZlcy4K CkV4dHJhY3QgaXQgaW50byBzdGFuZGFsb25lIG1hY3JvcyBzbyB0aGV5IGNhbiBiZSB1c2VkIGZy b20KbmV3IGNvZGUgaW4gdGhlIGZvbGxvd2luZyBwYXRjaGVzLgoKVGhpcyBjYXVzZXMgR0NDIHRv IGNvbXBpbGUgc29tZSBvZiB0aGUgTU1JTyBhY2Nlc3NvcnMgc2xpZ2h0bHkKZGlmZmVyZW50bHkg YW5kIGdyb3dzIHRoZSBjb2RlIGEgdGlueSBhbW91bnQuIEJ1dCBub25lIG9mIHRoZQpncm93dGgg aXMgb24gdGhlIGZhc3QtcGF0aCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIgaHVnZWx5LgoKQWZmZWN0 ZWQgc2l6ZXMgYmVmb3JlOgoKMDAwMDAwMDAwMDAwMjZmMCAwMDAwMDAwMDAwMDAwMWE1IHQgZ2Vu Nl9yZWFkMTYKMDAwMDAwMDAwMDAwMjM5MCAwMDAwMDAwMDAwMDAwMWE1IHQgZ2VuNl9yZWFkMzIK MDAwMDAwMDAwMDAwMjhhMCAwMDAwMDAwMDAwMDAwMWE1IHQgZ2VuNl9yZWFkNjQKCjAwMDAwMDAw MDAwMDYxZDAgMDAwMDAwMDAwMDAwMDE5ZSB0IGdlbjhfd3JpdGUxNgowMDAwMDAwMDAwMDA2NTEw IDAwMDAwMDAwMDAwMDAxOWQgdCBnZW44X3dyaXRlMzIKMDAwMDAwMDAwMDAwNjM3MCAwMDAwMDAw MDAwMDAwMTlkIHQgZ2VuOF93cml0ZTY0CjAwMDAwMDAwMDAwMDIxZjAgMDAwMDAwMDAwMDAwMDE5 ZCB0IGdlbjhfd3JpdGU4CgpBZmZlY3RlZCBzaXplcyBhZnRlcjoKCjAwMDAwMDAwMDAwMDI4NDAg MDAwMDAwMDAwMDAwMDFhYSB0IGdlbjZfcmVhZDE2CjAwMDAwMDAwMDAwMDI0ZTAgMDAwMDAwMDAw MDAwMDFhOSB0IGdlbjZfcmVhZDMyCjAwMDAwMDAwMDAwMDI5ZjAgMDAwMDAwMDAwMDAwMDFhOSB0 IGdlbjZfcmVhZDY0CgowMDAwMDAwMDAwMDA0ZjIwIDAwMDAwMDAwMDAwMDAxYjUgdCBnZW44X3dy aXRlMTYKMDAwMDAwMDAwMDAwNGJhMCAwMDAwMDAwMDAwMDAwMWI0IHQgZ2VuOF93cml0ZTMyCjAw MDAwMDAwMDAwMDUwZTAgMDAwMDAwMDAwMDAwMDFiNCB0IGdlbjhfd3JpdGU2NAowMDAwMDAwMDAw MDA0ZDYwIDAwMDAwMDAwMDAwMDAxYjQgdCBnZW44X3dyaXRlOAoKT3RoZXIgTU1JTyBhY2Nlc3Nv cnMgYXJlIG5vdCBhZmZlY3RlZCBpbiBzaXplLgoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3Vs aW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQWNrZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Vu Y29yZS5jIHwgMjU1ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDE1NSBpbnNlcnRpb25zKCspLCAxMDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91bmNvcmUuYwppbmRleCBhYzJhYzA3YjUwNWIuLjIyY2NhZjY2YjQ3NiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKQEAgLTU1MSw2ICs1NTEsMTYgQEAgdm9pZCBh c3NlcnRfZm9yY2V3YWtlc19pbmFjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAvKiBXZSBnaXZlIGZhc3QgcGF0aHMgZm9yIHRoZSByZWFsbHkgY29vbCByZWdpc3RlcnMg Ki8KICNkZWZpbmUgTkVFRFNfRk9SQ0VfV0FLRShyZWcpICgocmVnKSA8IDB4NDAwMDApCiAKKyNk ZWZpbmUgX19nZW42X3JlZ19yZWFkX2Z3X2RvbWFpbnMob2Zmc2V0KSBcCisoeyBcCisJZW51bSBm b3JjZXdha2VfZG9tYWlucyBfX2Z3ZDsgXAorCWlmIChORUVEU19GT1JDRV9XQUtFKG9mZnNldCkp IFwKKwkJX19md2QgPSBGT1JDRVdBS0VfUkVOREVSOyBcCisJZWxzZSBcCisJCV9fZndkID0gMDsg XAorCV9fZndkOyBcCit9KQorCiAjZGVmaW5lIFJFR19SQU5HRShyZWcsIHN0YXJ0LCBlbmQpICgo cmVnKSA+PSAoc3RhcnQpICYmIChyZWcpIDwgKGVuZCkpCiAKICNkZWZpbmUgRk9SQ0VXQUtFX1ZM Vl9SRU5ERVJfUkFOR0VfT0ZGU0VUKHJlZykgXApAQCAtNTY0LDYgKzU3NCw0OSBAQCB2b2lkIGFz c2VydF9mb3JjZXdha2VzX2luYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAkgUkVHX1JBTkdFKChyZWcpLCAweDIyMDAwLCAweDI0MDAwKSB8fCBcCiAJIFJFR19SQU5H RSgocmVnKSwgMHgzMDAwMCwgMHg0MDAwMCkpCiAKKyNkZWZpbmUgX192bHZfcmVnX3JlYWRfZndf ZG9tYWlucyhvZmZzZXQpIFwKKyh7IFwKKwllbnVtIGZvcmNld2FrZV9kb21haW5zIF9fZndkID0g MDsgXAorCWlmICghTkVFRFNfRk9SQ0VfV0FLRShvZmZzZXQpKSBcCisJCV9fZndkID0gMDsgXAor CWVsc2UgaWYgKEZPUkNFV0FLRV9WTFZfUkVOREVSX1JBTkdFX09GRlNFVChvZmZzZXQpKSBcCisJ CV9fZndkID0gRk9SQ0VXQUtFX1JFTkRFUjsgXAorCWVsc2UgaWYgKEZPUkNFV0FLRV9WTFZfTUVE SUFfUkFOR0VfT0ZGU0VUKG9mZnNldCkpIFwKKwkJX19md2QgPSBGT1JDRVdBS0VfTUVESUE7IFwK KwlfX2Z3ZDsgXAorfSkKKworc3RhdGljIGNvbnN0IGk5MTVfcmVnX3QgZ2VuOF9zaGFkb3dlZF9y ZWdzW10gPSB7CisJRk9SQ0VXQUtFX01ULAorCUdFTjZfUlBOU1dSRVEsCisJR0VONl9SQ19WSURF T19GUkVRLAorCVJJTkdfVEFJTChSRU5ERVJfUklOR19CQVNFKSwKKwlSSU5HX1RBSUwoR0VONl9C U0RfUklOR19CQVNFKSwKKwlSSU5HX1RBSUwoVkVCT1hfUklOR19CQVNFKSwKKwlSSU5HX1RBSUwo QkxUX1JJTkdfQkFTRSksCisJLyogVE9ETzogT3RoZXIgcmVnaXN0ZXJzIGFyZSBub3QgeWV0IHVz ZWQgKi8KK307CisKK3N0YXRpYyBib29sIGlzX2dlbjhfc2hhZG93ZWQodTMyIG9mZnNldCkKK3sK KwlpbnQgaTsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShnZW44X3NoYWRvd2VkX3JlZ3Mp OyBpKyspCisJCWlmIChvZmZzZXQgPT0gZ2VuOF9zaGFkb3dlZF9yZWdzW2ldLnJlZykKKwkJCXJl dHVybiB0cnVlOworCisJcmV0dXJuIGZhbHNlOworfQorCisjZGVmaW5lIF9fZ2VuOF9yZWdfd3Jp dGVfZndfZG9tYWlucyhvZmZzZXQpIFwKKyh7IFwKKwllbnVtIGZvcmNld2FrZV9kb21haW5zIF9f ZndkOyBcCisJaWYgKE5FRURTX0ZPUkNFX1dBS0Uob2Zmc2V0KSAmJiAhaXNfZ2VuOF9zaGFkb3dl ZChvZmZzZXQpKSBcCisJCV9fZndkID0gRk9SQ0VXQUtFX1JFTkRFUjsgXAorCWVsc2UgXAorCQlf X2Z3ZCA9IDA7IFwKKwlfX2Z3ZDsgXAorfSkKKwogI2RlZmluZSBGT1JDRVdBS0VfQ0hWX1JFTkRF Ul9SQU5HRV9PRkZTRVQocmVnKSBcCiAJKFJFR19SQU5HRSgocmVnKSwgMHgyMDAwLCAweDQwMDAp IHx8IFwKIAkgUkVHX1JBTkdFKChyZWcpLCAweDUyMDAsIDB4ODAwMCkgfHwgXApAQCAtNTg2LDYg KzYzOSwzNCBAQCB2b2lkIGFzc2VydF9mb3JjZXdha2VzX2luYWN0aXZlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIAkgUkVHX1JBTkdFKChyZWcpLCAweDkwMDAsIDB4QjAwMCkg fHwgXAogCSBSRUdfUkFOR0UoKHJlZyksIDB4RjAwMCwgMHgxMDAwMCkpCiAKKyNkZWZpbmUgX19j aHZfcmVnX3JlYWRfZndfZG9tYWlucyhvZmZzZXQpIFwKKyh7IFwKKwllbnVtIGZvcmNld2FrZV9k b21haW5zIF9fZndkID0gMDsgXAorCWlmICghTkVFRFNfRk9SQ0VfV0FLRShvZmZzZXQpKSBcCisJ CV9fZndkID0gMDsgXAorCWVsc2UgaWYgKEZPUkNFV0FLRV9DSFZfUkVOREVSX1JBTkdFX09GRlNF VChvZmZzZXQpKSBcCisJCV9fZndkID0gRk9SQ0VXQUtFX1JFTkRFUjsgXAorCWVsc2UgaWYgKEZP UkNFV0FLRV9DSFZfTUVESUFfUkFOR0VfT0ZGU0VUKG9mZnNldCkpIFwKKwkJX19md2QgPSBGT1JD RVdBS0VfTUVESUE7IFwKKwllbHNlIGlmIChGT1JDRVdBS0VfQ0hWX0NPTU1PTl9SQU5HRV9PRkZT RVQob2Zmc2V0KSkgXAorCQlfX2Z3ZCA9IEZPUkNFV0FLRV9SRU5ERVIgfCBGT1JDRVdBS0VfTUVE SUE7IFwKKwlfX2Z3ZDsgXAorfSkKKworI2RlZmluZSBfX2Nodl9yZWdfd3JpdGVfZndfZG9tYWlu cyhvZmZzZXQpIFwKKyh7IFwKKwllbnVtIGZvcmNld2FrZV9kb21haW5zIF9fZndkID0gMDsgXAor CWlmICghTkVFRFNfRk9SQ0VfV0FLRShvZmZzZXQpIHx8IGlzX2dlbjhfc2hhZG93ZWQob2Zmc2V0 KSkgXAorCQlfX2Z3ZCA9IDA7IFwKKwllbHNlIGlmIChGT1JDRVdBS0VfQ0hWX1JFTkRFUl9SQU5H RV9PRkZTRVQob2Zmc2V0KSkgXAorCQlfX2Z3ZCA9IEZPUkNFV0FLRV9SRU5ERVI7IFwKKwllbHNl IGlmIChGT1JDRVdBS0VfQ0hWX01FRElBX1JBTkdFX09GRlNFVChvZmZzZXQpKSBcCisJCV9fZndk ID0gRk9SQ0VXQUtFX01FRElBOyBcCisJZWxzZSBpZiAoRk9SQ0VXQUtFX0NIVl9DT01NT05fUkFO R0VfT0ZGU0VUKG9mZnNldCkpIFwKKwkJX19md2QgPSBGT1JDRVdBS0VfUkVOREVSIHwgRk9SQ0VX QUtFX01FRElBOyBcCisJX19md2Q7IFwKK30pCisKICNkZWZpbmUgRk9SQ0VXQUtFX0dFTjlfVU5D T1JFX1JBTkdFX09GRlNFVChyZWcpIFwKIAlSRUdfUkFOR0UoKHJlZyksIDB4QjAwLCAgMHgyMDAw KQogCkBAIC02MTgsNiArNjk5LDY0IEBAIHZvaWQgYXNzZXJ0X2ZvcmNld2FrZXNfaW5hY3RpdmUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAhRk9SQ0VXQUtFX0dFTjlfTUVE SUFfUkFOR0VfT0ZGU0VUKHJlZykgJiYgXAogCSAhRk9SQ0VXQUtFX0dFTjlfQ09NTU9OX1JBTkdF X09GRlNFVChyZWcpKQogCisjZGVmaW5lIFNLTF9ORUVEU19GT1JDRV9XQUtFKHJlZykgXAorCSgo cmVnKSA8IDB4NDAwMDAgJiYgIUZPUkNFV0FLRV9HRU45X1VOQ09SRV9SQU5HRV9PRkZTRVQocmVn KSkKKworI2RlZmluZSBfX2dlbjlfcmVnX3JlYWRfZndfZG9tYWlucyhvZmZzZXQpIFwKKyh7IFwK KwllbnVtIGZvcmNld2FrZV9kb21haW5zIF9fZndkOyBcCisJaWYgKCFTS0xfTkVFRFNfRk9SQ0Vf V0FLRShvZmZzZXQpKSBcCisJCV9fZndkID0gMDsgXAorCWVsc2UgaWYgKEZPUkNFV0FLRV9HRU45 X1JFTkRFUl9SQU5HRV9PRkZTRVQob2Zmc2V0KSkgXAorCQlfX2Z3ZCA9IEZPUkNFV0FLRV9SRU5E RVI7IFwKKwllbHNlIGlmIChGT1JDRVdBS0VfR0VOOV9NRURJQV9SQU5HRV9PRkZTRVQob2Zmc2V0 KSkgXAorCQlfX2Z3ZCA9IEZPUkNFV0FLRV9NRURJQTsgXAorCWVsc2UgaWYgKEZPUkNFV0FLRV9H RU45X0NPTU1PTl9SQU5HRV9PRkZTRVQob2Zmc2V0KSkgXAorCQlfX2Z3ZCA9IEZPUkNFV0FLRV9S RU5ERVIgfCBGT1JDRVdBS0VfTUVESUE7IFwKKwllbHNlIFwKKwkJX19md2QgPSBGT1JDRVdBS0Vf QkxJVFRFUjsgXAorCV9fZndkOyBcCit9KQorCitzdGF0aWMgY29uc3QgaTkxNV9yZWdfdCBnZW45 X3NoYWRvd2VkX3JlZ3NbXSA9IHsKKwlSSU5HX1RBSUwoUkVOREVSX1JJTkdfQkFTRSksCisJUklO R19UQUlMKEdFTjZfQlNEX1JJTkdfQkFTRSksCisJUklOR19UQUlMKFZFQk9YX1JJTkdfQkFTRSks CisJUklOR19UQUlMKEJMVF9SSU5HX0JBU0UpLAorCUZPUkNFV0FLRV9CTElUVEVSX0dFTjksCisJ Rk9SQ0VXQUtFX1JFTkRFUl9HRU45LAorCUZPUkNFV0FLRV9NRURJQV9HRU45LAorCUdFTjZfUlBO U1dSRVEsCisJR0VONl9SQ19WSURFT19GUkVRLAorCS8qIFRPRE86IE90aGVyIHJlZ2lzdGVycyBh cmUgbm90IHlldCB1c2VkICovCit9OworCitzdGF0aWMgYm9vbCBpc19nZW45X3NoYWRvd2VkKHUz MiBvZmZzZXQpCit7CisJaW50IGk7CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZ2VuOV9z aGFkb3dlZF9yZWdzKTsgaSsrKQorCQlpZiAob2Zmc2V0ID09IGdlbjlfc2hhZG93ZWRfcmVnc1tp XS5yZWcpCisJCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVybiBmYWxzZTsKK30KKworI2RlZmluZSBf X2dlbjlfcmVnX3dyaXRlX2Z3X2RvbWFpbnMob2Zmc2V0KSBcCisoeyBcCisJZW51bSBmb3JjZXdh a2VfZG9tYWlucyBfX2Z3ZDsgXAorCWlmICghU0tMX05FRURTX0ZPUkNFX1dBS0Uob2Zmc2V0KSB8 fCBpc19nZW45X3NoYWRvd2VkKG9mZnNldCkpIFwKKwkJX19md2QgPSAwOyBcCisJZWxzZSBpZiAo Rk9SQ0VXQUtFX0dFTjlfUkVOREVSX1JBTkdFX09GRlNFVChvZmZzZXQpKSBcCisJCV9fZndkID0g Rk9SQ0VXQUtFX1JFTkRFUjsgXAorCWVsc2UgaWYgKEZPUkNFV0FLRV9HRU45X01FRElBX1JBTkdF X09GRlNFVChvZmZzZXQpKSBcCisJCV9fZndkID0gRk9SQ0VXQUtFX01FRElBOyBcCisJZWxzZSBp ZiAoRk9SQ0VXQUtFX0dFTjlfQ09NTU9OX1JBTkdFX09GRlNFVChvZmZzZXQpKSBcCisJCV9fZndk ID0gRk9SQ0VXQUtFX1JFTkRFUiB8IEZPUkNFV0FLRV9NRURJQTsgXAorCWVsc2UgXAorCQlfX2Z3 ZCA9IEZPUkNFV0FLRV9CTElUVEVSOyBcCisJX19md2Q7IFwKK30pCisKIHN0YXRpYyB2b2lkCiBp bGtfZHVtbXlfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewpAQCAt NzQzLDkgKzg4MiwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19mb3JjZV93YWtlX2F1dG8oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogI2RlZmluZSBfX2dlbjZfcmVhZCh4KSBc CiBzdGF0aWMgdSMjeCBcCiBnZW42X3JlYWQjI3goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCBpOTE1X3JlZ190IHJlZywgYm9vbCB0cmFjZSkgeyBcCisJZW51bSBmb3JjZXdha2Vf ZG9tYWlucyBmd19lbmdpbmU7IFwKIAlHRU42X1JFQURfSEVBREVSKHgpOyBcCi0JaWYgKE5FRURT X0ZPUkNFX1dBS0Uob2Zmc2V0KSkgXAotCQlfX2ZvcmNlX3dha2VfYXV0byhkZXZfcHJpdiwgRk9S Q0VXQUtFX1JFTkRFUik7IFwKKwlmd19lbmdpbmUgPSBfX2dlbjZfcmVnX3JlYWRfZndfZG9tYWlu cyhvZmZzZXQpOyBcCisJaWYgKGZ3X2VuZ2luZSkgXAorCQlfX2ZvcmNlX3dha2VfYXV0byhkZXZf cHJpdiwgZndfZW5naW5lKTsgXAogCXZhbCA9IF9fcmF3X2k5MTVfcmVhZCMjeChkZXZfcHJpdiwg cmVnKTsgXAogCUdFTjZfUkVBRF9GT09URVI7IFwKIH0KQEAgLTc1MywxNCArODk0LDkgQEAgZ2Vu Nl9yZWFkIyN4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaTkxNV9yZWdfdCBy ZWcsIGJvb2wgdHJhY2UpIHsgXAogI2RlZmluZSBfX3Zsdl9yZWFkKHgpIFwKIHN0YXRpYyB1IyN4 IFwKIHZsdl9yZWFkIyN4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaTkxNV9y ZWdfdCByZWcsIGJvb2wgdHJhY2UpIHsgXAotCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZW5n aW5lID0gMDsgXAorCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZW5naW5lOyBcCiAJR0VONl9S RUFEX0hFQURFUih4KTsgXAotCWlmICghTkVFRFNfRk9SQ0VfV0FLRShvZmZzZXQpKSBcCi0JCWZ3 X2VuZ2luZSA9IDA7IFwKLQllbHNlIGlmIChGT1JDRVdBS0VfVkxWX1JFTkRFUl9SQU5HRV9PRkZT RVQob2Zmc2V0KSkgXAotCQlmd19lbmdpbmUgPSBGT1JDRVdBS0VfUkVOREVSOyBcCi0JZWxzZSBp ZiAoRk9SQ0VXQUtFX1ZMVl9NRURJQV9SQU5HRV9PRkZTRVQob2Zmc2V0KSkgXAotCQlmd19lbmdp bmUgPSBGT1JDRVdBS0VfTUVESUE7IFwKKwlmd19lbmdpbmUgPSBfX3Zsdl9yZWdfcmVhZF9md19k b21haW5zKG9mZnNldCk7IFwKIAlpZiAoZndfZW5naW5lKSBcCiAJCV9fZm9yY2Vfd2FrZV9hdXRv KGRldl9wcml2LCBmd19lbmdpbmUpOyBcCiAJdmFsID0gX19yYXdfaTkxNV9yZWFkIyN4KGRldl9w cml2LCByZWcpOyBcCkBAIC03NzAsNDAgKzkwNiwyMSBAQCB2bHZfcmVhZCMjeChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGk5MTVfcmVnX3QgcmVnLCBib29sIHRyYWNlKSB7IFwK ICNkZWZpbmUgX19jaHZfcmVhZCh4KSBcCiBzdGF0aWMgdSMjeCBcCiBjaHZfcmVhZCMjeChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGk5MTVfcmVnX3QgcmVnLCBib29sIHRyYWNl KSB7IFwKLQllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2VuZ2luZSA9IDA7IFwKKwllbnVtIGZv cmNld2FrZV9kb21haW5zIGZ3X2VuZ2luZTsgXAogCUdFTjZfUkVBRF9IRUFERVIoeCk7IFwKLQlp ZiAoIU5FRURTX0ZPUkNFX1dBS0Uob2Zmc2V0KSkgXAotCQlmd19lbmdpbmUgPSAwOyBcCi0JZWxz ZSBpZiAoRk9SQ0VXQUtFX0NIVl9SRU5ERVJfUkFOR0VfT0ZGU0VUKG9mZnNldCkpIFwKLQkJZndf ZW5naW5lID0gRk9SQ0VXQUtFX1JFTkRFUjsgXAotCWVsc2UgaWYgKEZPUkNFV0FLRV9DSFZfTUVE SUFfUkFOR0VfT0ZGU0VUKG9mZnNldCkpIFwKLQkJZndfZW5naW5lID0gRk9SQ0VXQUtFX01FRElB OyBcCi0JZWxzZSBpZiAoRk9SQ0VXQUtFX0NIVl9DT01NT05fUkFOR0VfT0ZGU0VUKG9mZnNldCkp IFwKLQkJZndfZW5naW5lID0gRk9SQ0VXQUtFX1JFTkRFUiB8IEZPUkNFV0FLRV9NRURJQTsgXAor CWZ3X2VuZ2luZSA9IF9fY2h2X3JlZ19yZWFkX2Z3X2RvbWFpbnMob2Zmc2V0KTsgXAogCWlmIChm d19lbmdpbmUpIFwKIAkJX19mb3JjZV93YWtlX2F1dG8oZGV2X3ByaXYsIGZ3X2VuZ2luZSk7IFwK IAl2YWwgPSBfX3Jhd19pOTE1X3JlYWQjI3goZGV2X3ByaXYsIHJlZyk7IFwKIAlHRU42X1JFQURf Rk9PVEVSOyBcCiB9CiAKLSNkZWZpbmUgU0tMX05FRURTX0ZPUkNFX1dBS0UocmVnKSBcCi0JKChy ZWcpIDwgMHg0MDAwMCAmJiAhRk9SQ0VXQUtFX0dFTjlfVU5DT1JFX1JBTkdFX09GRlNFVChyZWcp KQotCiAjZGVmaW5lIF9fZ2VuOV9yZWFkKHgpIFwKIHN0YXRpYyB1IyN4IFwKIGdlbjlfcmVhZCMj eChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGk5MTVfcmVnX3QgcmVnLCBib29s IHRyYWNlKSB7IFwKIAllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2VuZ2luZTsgXAogCUdFTjZf UkVBRF9IRUFERVIoeCk7IFwKLQlpZiAoIVNLTF9ORUVEU19GT1JDRV9XQUtFKG9mZnNldCkpIFwK LQkJZndfZW5naW5lID0gMDsgXAotCWVsc2UgaWYgKEZPUkNFV0FLRV9HRU45X1JFTkRFUl9SQU5H RV9PRkZTRVQob2Zmc2V0KSkgXAotCQlmd19lbmdpbmUgPSBGT1JDRVdBS0VfUkVOREVSOyBcCi0J ZWxzZSBpZiAoRk9SQ0VXQUtFX0dFTjlfTUVESUFfUkFOR0VfT0ZGU0VUKG9mZnNldCkpIFwKLQkJ ZndfZW5naW5lID0gRk9SQ0VXQUtFX01FRElBOyBcCi0JZWxzZSBpZiAoRk9SQ0VXQUtFX0dFTjlf Q09NTU9OX1JBTkdFX09GRlNFVChvZmZzZXQpKSBcCi0JCWZ3X2VuZ2luZSA9IEZPUkNFV0FLRV9S RU5ERVIgfCBGT1JDRVdBS0VfTUVESUE7IFwKLQllbHNlIFwKLQkJZndfZW5naW5lID0gRk9SQ0VX QUtFX0JMSVRURVI7IFwKKwlmd19lbmdpbmUgPSBfX2dlbjlfcmVnX3JlYWRfZndfZG9tYWlucyhv ZmZzZXQpOyBcCiAJaWYgKGZ3X2VuZ2luZSkgXAogCQlfX2ZvcmNlX3dha2VfYXV0byhkZXZfcHJp diwgZndfZW5naW5lKTsgXAogCXZhbCA9IF9fcmF3X2k5MTVfcmVhZCMjeChkZXZfcHJpdiwgcmVn KTsgXApAQCAtOTQyLDM0ICsxMDU5LDE0IEBAIGhzd193cml0ZSMjeChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGk5MTVfcmVnX3QgcmVnLCB1IyN4IHZhbCwgYm9vbCB0CiAJR0VO Nl9XUklURV9GT09URVI7IFwKIH0KIAotc3RhdGljIGNvbnN0IGk5MTVfcmVnX3QgZ2VuOF9zaGFk b3dlZF9yZWdzW10gPSB7Ci0JRk9SQ0VXQUtFX01ULAotCUdFTjZfUlBOU1dSRVEsCi0JR0VONl9S Q19WSURFT19GUkVRLAotCVJJTkdfVEFJTChSRU5ERVJfUklOR19CQVNFKSwKLQlSSU5HX1RBSUwo R0VONl9CU0RfUklOR19CQVNFKSwKLQlSSU5HX1RBSUwoVkVCT1hfUklOR19CQVNFKSwKLQlSSU5H X1RBSUwoQkxUX1JJTkdfQkFTRSksCi0JLyogVE9ETzogT3RoZXIgcmVnaXN0ZXJzIGFyZSBub3Qg eWV0IHVzZWQgKi8KLX07Ci0KLXN0YXRpYyBib29sIGlzX2dlbjhfc2hhZG93ZWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgICBpOTE1X3JlZ190IHJlZykKLXsKLQlp bnQgaTsKLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShnZW44X3NoYWRvd2VkX3JlZ3MpOyBp KyspCi0JCWlmIChpOTE1X21taW9fcmVnX2VxdWFsKHJlZywgZ2VuOF9zaGFkb3dlZF9yZWdzW2ld KSkKLQkJCXJldHVybiB0cnVlOwotCi0JcmV0dXJuIGZhbHNlOwotfQotCiAjZGVmaW5lIF9fZ2Vu OF93cml0ZSh4KSBcCiBzdGF0aWMgdm9pZCBcCiBnZW44X3dyaXRlIyN4KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgaTkxNV9yZWdfdCByZWcsIHUjI3ggdmFsLCBib29sIHRyYWNl KSB7IFwKKwllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2VuZ2luZTsgXAogCUdFTjZfV1JJVEVf SEVBREVSOyBcCi0JaWYgKE5FRURTX0ZPUkNFX1dBS0Uob2Zmc2V0KSAmJiAhaXNfZ2VuOF9zaGFk b3dlZChkZXZfcHJpdiwgcmVnKSkgXAotCQlfX2ZvcmNlX3dha2VfYXV0byhkZXZfcHJpdiwgRk9S Q0VXQUtFX1JFTkRFUik7IFwKKwlmd19lbmdpbmUgPSBfX2dlbjhfcmVnX3dyaXRlX2Z3X2RvbWFp bnMob2Zmc2V0KTsgXAorCWlmIChmd19lbmdpbmUpIFwKKwkJX19mb3JjZV93YWtlX2F1dG8oZGV2 X3ByaXYsIGZ3X2VuZ2luZSk7IFwKIAlfX3Jhd19pOTE1X3dyaXRlIyN4KGRldl9wcml2LCByZWcs IHZhbCk7IFwKIAlHRU42X1dSSVRFX0ZPT1RFUjsgXAogfQpAQCAtOTc3LDY0ICsxMDc0LDIyIEBA IGdlbjhfd3JpdGUjI3goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpOTE1X3Jl Z190IHJlZywgdSMjeCB2YWwsIGJvb2wKICNkZWZpbmUgX19jaHZfd3JpdGUoeCkgXAogc3RhdGlj IHZvaWQgXAogY2h2X3dyaXRlIyN4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg aTkxNV9yZWdfdCByZWcsIHUjI3ggdmFsLCBib29sIHRyYWNlKSB7IFwKLQllbnVtIGZvcmNld2Fr ZV9kb21haW5zIGZ3X2VuZ2luZSA9IDA7IFwKKwllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2Vu Z2luZTsgXAogCUdFTjZfV1JJVEVfSEVBREVSOyBcCi0JaWYgKCFORUVEU19GT1JDRV9XQUtFKG9m ZnNldCkgfHwgXAotCSAgICBpc19nZW44X3NoYWRvd2VkKGRldl9wcml2LCByZWcpKSBcCi0JCWZ3 X2VuZ2luZSA9IDA7IFwKLQllbHNlIGlmIChGT1JDRVdBS0VfQ0hWX1JFTkRFUl9SQU5HRV9PRkZT RVQob2Zmc2V0KSkgXAotCQlmd19lbmdpbmUgPSBGT1JDRVdBS0VfUkVOREVSOyBcCi0JZWxzZSBp ZiAoRk9SQ0VXQUtFX0NIVl9NRURJQV9SQU5HRV9PRkZTRVQob2Zmc2V0KSkgXAotCQlmd19lbmdp bmUgPSBGT1JDRVdBS0VfTUVESUE7IFwKLQllbHNlIGlmIChGT1JDRVdBS0VfQ0hWX0NPTU1PTl9S QU5HRV9PRkZTRVQob2Zmc2V0KSkgXAotCQlmd19lbmdpbmUgPSBGT1JDRVdBS0VfUkVOREVSIHwg Rk9SQ0VXQUtFX01FRElBOyBcCisJZndfZW5naW5lID0gX19jaHZfcmVnX3dyaXRlX2Z3X2RvbWFp bnMob2Zmc2V0KTsgXAogCWlmIChmd19lbmdpbmUpIFwKIAkJX19mb3JjZV93YWtlX2F1dG8oZGV2 X3ByaXYsIGZ3X2VuZ2luZSk7IFwKIAlfX3Jhd19pOTE1X3dyaXRlIyN4KGRldl9wcml2LCByZWcs IHZhbCk7IFwKIAlHRU42X1dSSVRFX0ZPT1RFUjsgXAogfQogCi1zdGF0aWMgY29uc3QgaTkxNV9y ZWdfdCBnZW45X3NoYWRvd2VkX3JlZ3NbXSA9IHsKLQlSSU5HX1RBSUwoUkVOREVSX1JJTkdfQkFT RSksCi0JUklOR19UQUlMKEdFTjZfQlNEX1JJTkdfQkFTRSksCi0JUklOR19UQUlMKFZFQk9YX1JJ TkdfQkFTRSksCi0JUklOR19UQUlMKEJMVF9SSU5HX0JBU0UpLAotCUZPUkNFV0FLRV9CTElUVEVS X0dFTjksCi0JRk9SQ0VXQUtFX1JFTkRFUl9HRU45LAotCUZPUkNFV0FLRV9NRURJQV9HRU45LAot CUdFTjZfUlBOU1dSRVEsCi0JR0VONl9SQ19WSURFT19GUkVRLAotCS8qIFRPRE86IE90aGVyIHJl Z2lzdGVycyBhcmUgbm90IHlldCB1c2VkICovCi19OwotCi1zdGF0aWMgYm9vbCBpc19nZW45X3No YWRvd2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSAgICAgaTkxNV9y ZWdfdCByZWcpCi17Ci0JaW50IGk7Ci0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZ2VuOV9z aGFkb3dlZF9yZWdzKTsgaSsrKQotCQlpZiAoaTkxNV9tbWlvX3JlZ19lcXVhbChyZWcsIGdlbjlf c2hhZG93ZWRfcmVnc1tpXSkpCi0JCQlyZXR1cm4gdHJ1ZTsKLQotCXJldHVybiBmYWxzZTsKLX0K LQogI2RlZmluZSBfX2dlbjlfd3JpdGUoeCkgXAogc3RhdGljIHZvaWQgXAogZ2VuOV93cml0ZSMj eChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGk5MTVfcmVnX3QgcmVnLCB1IyN4 IHZhbCwgXAogCQlib29sIHRyYWNlKSB7IFwKIAllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2Vu Z2luZTsgXAogCUdFTjZfV1JJVEVfSEVBREVSOyBcCi0JaWYgKCFTS0xfTkVFRFNfRk9SQ0VfV0FL RShvZmZzZXQpIHx8IFwKLQkgICAgaXNfZ2VuOV9zaGFkb3dlZChkZXZfcHJpdiwgcmVnKSkgXAot CQlmd19lbmdpbmUgPSAwOyBcCi0JZWxzZSBpZiAoRk9SQ0VXQUtFX0dFTjlfUkVOREVSX1JBTkdF X09GRlNFVChvZmZzZXQpKSBcCi0JCWZ3X2VuZ2luZSA9IEZPUkNFV0FLRV9SRU5ERVI7IFwKLQll bHNlIGlmIChGT1JDRVdBS0VfR0VOOV9NRURJQV9SQU5HRV9PRkZTRVQob2Zmc2V0KSkgXAotCQlm d19lbmdpbmUgPSBGT1JDRVdBS0VfTUVESUE7IFwKLQllbHNlIGlmIChGT1JDRVdBS0VfR0VOOV9D T01NT05fUkFOR0VfT0ZGU0VUKG9mZnNldCkpIFwKLQkJZndfZW5naW5lID0gRk9SQ0VXQUtFX1JF TkRFUiB8IEZPUkNFV0FLRV9NRURJQTsgXAotCWVsc2UgXAotCQlmd19lbmdpbmUgPSBGT1JDRVdB S0VfQkxJVFRFUjsgXAorCWZ3X2VuZ2luZSA9IF9fZ2VuOV9yZWdfd3JpdGVfZndfZG9tYWlucyhv ZmZzZXQpOyBcCiAJaWYgKGZ3X2VuZ2luZSkgXAogCQlfX2ZvcmNlX3dha2VfYXV0byhkZXZfcHJp diwgZndfZW5naW5lKTsgXAogCV9fcmF3X2k5MTVfd3JpdGUjI3goZGV2X3ByaXYsIHJlZywgdmFs KTsgXAotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=