From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 4/6] drm/i915: Add support for stealing purgable stolen pages Date: Wed, 11 Nov 2015 16:06:11 +0530 Message-ID: <1447238173-31347-5-git-send-email-ankitprasad.r.sharma@intel.com> References: <1447238173-31347-1-git-send-email-ankitprasad.r.sharma@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 D41276E3E2 for ; Wed, 11 Nov 2015 02:55:49 -0800 (PST) In-Reply-To: <1447238173-31347-1-git-send-email-ankitprasad.r.sharma@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 Cc: Ankitprasad Sharma , akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQ2hyaXMgV2lsc29uIDxjaHJpcyBhdCBjaHJpcy13aWxzb24uY28udWs+CgpJZiB3ZSBy dW4gb3V0IG9mIHN0b2xlbiBtZW1vcnkgd2hlbiB0cnlpbmcgdG8gYWxsb2NhdGUgYW4gb2JqZWN0 LCBzZWUgaWYKd2UgY2FuIHJlYXAgZW5vdWdoIHB1cmdlYWJsZSBvYmplY3RzIHRvIGZyZWUgdXAg ZW5vdWdoIGNvbnRpZ3VvdXMgZnJlZQpzcGFjZSBmb3IgdGhlIGFsbG9jYXRpb24uIFRoaXMgaXMg aW4gcHJpbmNpcGxlIHZlcnkgbXVjaCBsaWtlIGV2aWN0aW5nCm9iamVjdHMgdG8gZnJlZSB1cCBl bm91Z2ggY29udGlndW91cyBzcGFjZSBpbiB0aGUgdm1hIHdoZW4gYmluZGluZwphIG5ldyBvYmpl Y3QgLSBhbmQgeW91IHdpbGwgYmUgZm9yZ2l2ZW4gZm9yIHRoaW5raW5nIHRoYXQgdGhlIGNvZGUg bG9va3MKdmVyeSBzaW1pbGFyLgoKQXQgdGhlIG1vbWVudCwgd2UgZG8gbm90IGFsbG93IHVzZXJz cGFjZSB0byBhbGxvY2F0ZSBvYmplY3RzIGluIHN0b2xlbiwKc28gdGhlcmUgaXMgbmVpdGhlciB0 aGUgbWVtb3J5IHByZXNzdXJlIHRvIHRyaWdnZXIgc3RvbGVuIGV2aWN0aW9uIG5vcgphbnkgcHVy Z2VhYmxlIG9iamVjdHMgaW5zaWRlIHRoZSBzdG9sZW4gYXJlbmEuIEhvd2V2ZXIsIHRoaXMgd2ls bCBjaGFuZ2UKaW4gdGhlIG5lYXIgZnV0dXJlLCBhbmQgc28gYmV0dGVyIG1hbmFnZW1lbnQgYW5k IGRlZnJhZ21lbnRhdGlvbiBvZgpzdG9sZW4gbWVtb3J5IHdpbGwgYmVjb21lIGEgcmVhbCBpc3N1 ZS4KCnYyOiBSZW1lbWJlciB0byByZW1vdmUgdGhlIGRybV9tbV9ub2RlLgoKdjM6IFJlYmFzZWQg dG8gdGhlIGxhdGVzdCBkcm0taW50ZWwtbmlnaHRseSAoQW5raXQpCgp2NDogY29ycmVjdGVkIGlm LWVsc2UgYnJhY2VzIGZvcm1hdCAoVHZydGtvL2tlcm5lbGRvYykKCnY1OiBSZWJhc2VkIHRvIHRo ZSBsYXRlc3QgZHJtLWludGVsLW5pZ2h0bHkgKEFua2l0KQpBZGRlZCBhIHNlcGVyYXRlIGxpc3Qg dG8gbWFpbnRhaW4gcHVyZ2FibGUgb2JqZWN0cyBmcm9tIHN0b2xlbiBtZW1vcnkKcmVnaW9uIChD aHJpcy9EYW5pZWwpCgp2NjogQ29tcGlsZXIgb3B0aW1pemF0aW9uIChtZXJnaW5nIDIgc2luZ2xl IGxvb3BzIGludG8gb25lIGZvcigpIGxvb3ApLApjb3JyZWN0ZWQgY29kZSBmb3Igb2JqZWN0IGV2 aWN0aW9uLCByZXRpcmVfcmVxdWVzdHMgYmVmb3JlIHN0YXJ0aW5nCm9iamVjdCBldmljdGlvbiAo Q2hyaXMpCgp2NzogQWRkZWQga2VybmVsIGRvYyBmb3IgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9z dG9sZW4oKQoKdjg6IENoZWNrIGZvciBzdHJ1Y3RfbXV0ZXggbG9jayBiZWZvcmUgY3JlYXRpbmcg b2JqZWN0IGZyb20gc3RvbGVuCnJlZ2lvbiAoVHZydGtvKQoKVGVzdGNhc2U6IGlndC9nZW1fc3Rv bGVuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzIGF0IGNocmlzLXdpbHNvbi5j by51az4KU2lnbmVkLW9mZi1ieTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNo YXJtYUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMg ICAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgIHwgIDE3 ICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgIHwgIDE2ICsrKysK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jIHwgMTcwICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAg ICAgICAgfCAgIDQgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTg4IGluc2VydGlvbnMoKyksIDI1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggNTY1OWQ0Yy4u ODliMGZlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTE3NCw3ICsxNzQs NyBAQCBkZXNjcmliZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQogCQkJc2VxX3B1dHMobSwgIikiKTsKIAl9CiAJaWYgKG9iai0+c3RvbGVu KQotCQlzZXFfcHJpbnRmKG0sICIgKHN0b2xlbjogJTA4bGx4KSIsIG9iai0+c3RvbGVuLT5zdGFy dCk7CisJCXNlcV9wcmludGYobSwgIiAoc3RvbGVuOiAlMDhsbHgpIiwgb2JqLT5zdG9sZW4tPmJh c2Uuc3RhcnQpOwogCWlmIChvYmotPnBpbl9kaXNwbGF5IHx8IG9iai0+ZmF1bHRfbWFwcGFibGUp IHsKIAkJY2hhciBzWzNdLCAqdCA9IHM7CiAJCWlmIChvYmotPnBpbl9kaXNwbGF5KQpAQCAtMjUz LDkgKzI1Myw5IEBAIHN0YXRpYyBpbnQgb2JqX3JhbmtfYnlfc3RvbGVuKHZvaWQgKnByaXYsCiAJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmIgPQogCQljb250YWluZXJfb2YoQiwgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QsIG9ial9leGVjX2xpbmspOwogCi0JaWYgKGEtPnN0b2xlbi0+ c3RhcnQgPCBiLT5zdG9sZW4tPnN0YXJ0KQorCWlmIChhLT5zdG9sZW4tPmJhc2Uuc3RhcnQgPCBi LT5zdG9sZW4tPmJhc2Uuc3RhcnQpCiAJCXJldHVybiAtMTsKLQlpZiAoYS0+c3RvbGVuLT5zdGFy dCA+IGItPnN0b2xlbi0+c3RhcnQpCisJaWYgKGEtPnN0b2xlbi0+YmFzZS5zdGFydCA+IGItPnN0 b2xlbi0+YmFzZS5zdGFydCkKIAkJcmV0dXJuIDE7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAppbmRleCA5YzczMWY2Li4yYzc1YzMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKQEAgLTg0MSw2ICs4NDEsMTIgQEAgc3RydWN0IGk5MTVfY3R4X2hhbmdfc3RhdHMgewogCWJv b2wgYmFubmVkOwogfTsKIAorc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgeworCXN0cnVjdCBkcm1f bW1fbm9kZSBiYXNlOworCXN0cnVjdCBsaXN0X2hlYWQgbW1fbGluazsKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqOworfTsKKwogLyogVGhpcyBtdXN0IG1hdGNoIHVwIHdpdGggdGhl IHZhbHVlIHByZXZpb3VzbHkgdXNlZCBmb3IgZXhlY2J1ZjIucnN2ZDEuICovCiAjZGVmaW5lIERF RkFVTFRfQ09OVEVYVF9IQU5ETEUgMAogCkBAIC0xMjUyLDYgKzEyNTgsMTMgQEAgc3RydWN0IGk5 MTVfZ2VtX21tIHsKIAkgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIHVuYm91bmRfbGlzdDsKIAorCS8q KgorCSAqIExpc3Qgb2Ygc3RvbGVuIG9iamVjdHMgdGhhdCBoYXZlIGJlZW4gbWFya2VkIGFzIHB1 cmdlYWJsZSBhbmQKKwkgKiB0aHVzIGF2YWlsYWJsZSBmb3IgcmVhcGluZyBpZiB3ZSBuZWVkIG1v cmUgc3BhY2UgZm9yIGEgbmV3CisJICogYWxsb2NhdGlvbi4gT3JkZXJlZCBieSB0aW1lIG9mIG1h cmtpbmcgcHVyZ2VhYmxlLgorCSAqLworCXN0cnVjdCBsaXN0X2hlYWQgc3RvbGVuX2xpc3Q7CisK IAkvKiogVXNhYmxlIHBvcnRpb24gb2YgdGhlIEdUVCBmb3IgR0VNICovCiAJdW5zaWduZWQgbG9u ZyBzdG9sZW5fYmFzZTsgLyogbGltaXRlZCB0byBsb3cgbWVtb3J5ICgzMi1iaXQpICovCiAKQEAg LTIwMzIsNyArMjA0NSw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAlzdHJ1Y3Qg bGlzdF9oZWFkIHZtYV9saXN0OwogCiAJLyoqIFN0b2xlbiBtZW1vcnkgZm9yIHRoaXMgb2JqZWN0 LCBpbnN0ZWFkIG9mIGJlaW5nIGJhY2tlZCBieSBzaG1lbS4gKi8KLQlzdHJ1Y3QgZHJtX21tX25v ZGUgKnN0b2xlbjsKKwlzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqc3RvbGVuOwogCXN0cnVjdCBs aXN0X2hlYWQgZ2xvYmFsX2xpc3Q7CiAKIAlzdHJ1Y3QgbGlzdF9oZWFkIHJpbmdfbGlzdFtJOTE1 X05VTV9SSU5HU107CkBAIC0yMDQwLDYgKzIwNTMsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCB7CiAJc3RydWN0IGxpc3RfaGVhZCBvYmpfZXhlY19saW5rOwogCiAJc3RydWN0IGxpc3Rf aGVhZCBiYXRjaF9wb29sX2xpbms7CisJc3RydWN0IGxpc3RfaGVhZCB0bXBfbGluazsKIAogCS8q KgogCSAqIFRoaXMgaXMgc2V0IGlmIHRoZSBvYmplY3QgaXMgb24gdGhlIGFjdGl2ZSBsaXN0cyAo aGFzIHBlbmRpbmcKQEAgLTIxNTYsNiArMjE3MCw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0IHsKIAl9OwogfTsKICNkZWZpbmUgdG9faW50ZWxfYm8oeCkgY29udGFpbmVyX29mKHgsIHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LCBiYXNlKQorI2RlZmluZSBJOTE1X0JPX0lTX0FDVElW RShfX29iaikgKF9fb2JqLT5hY3RpdmUpCiAKIHZvaWQgaTkxNV9nZW1fdHJhY2tfZmIoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZCwKIAkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpuZXcsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCA1N2YwMmFhLi4yZDhjOWUw IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTQzNTksNiArNDM1OSwyMCBAQCBpOTE1X2dl bV9tYWR2aXNlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYg KG9iai0+bWFkdiA9PSBJOTE1X01BRFZfRE9OVE5FRUQgJiYgb2JqLT5wYWdlcyA9PSBOVUxMKQog CQlpOTE1X2dlbV9vYmplY3RfdHJ1bmNhdGUob2JqKTsKIAorCWlmIChvYmotPnN0b2xlbikgewor CQlzd2l0Y2ggKG9iai0+bWFkdikgeworCQljYXNlIEk5MTVfTUFEVl9XSUxMTkVFRDoKKwkJCWxp c3RfZGVsX2luaXQoJm9iai0+c3RvbGVuLT5tbV9saW5rKTsKKwkJCWJyZWFrOworCQljYXNlIEk5 MTVfTUFEVl9ET05UTkVFRDoKKwkJCWxpc3RfbW92ZSgmb2JqLT5zdG9sZW4tPm1tX2xpbmssCisJ CQkJICAmZGV2X3ByaXYtPm1tLnN0b2xlbl9saXN0KTsKKwkJCWJyZWFrOworCQlkZWZhdWx0Ogor CQkJYnJlYWs7CisJCX0KKwl9CisKIAlhcmdzLT5yZXRhaW5lZCA9IG9iai0+bWFkdiAhPSBfX0k5 MTVfTUFEVl9QVVJHRUQ7CiAKIG91dDoKQEAgLTQzNzksNiArNDM5Myw3IEBAIHZvaWQgaTkxNV9n ZW1fb2JqZWN0X2luaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlJTklUX0xJ U1RfSEVBRCgmb2JqLT5vYmpfZXhlY19saW5rKTsKIAlJTklUX0xJU1RfSEVBRCgmb2JqLT52bWFf bGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJm9iai0+YmF0Y2hfcG9vbF9saW5rKTsKKwlJTklUX0xJ U1RfSEVBRCgmb2JqLT50bXBfbGluayk7CiAKIAlvYmotPm9wcyA9IG9wczsKIApAQCAtNDk5Niw2 ICs1MDExLDcgQEAgaTkxNV9nZW1fbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCUlOSVRf TElTVF9IRUFEKCZkZXZfcHJpdi0+Y29udGV4dF9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmZGV2 X3ByaXYtPm1tLnVuYm91bmRfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5i b3VuZF9saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLnN0b2xlbl9saXN0KTsK IAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLmZlbmNlX2xpc3QpOwogCWZvciAoaSA9IDA7 IGkgPCBJOTE1X05VTV9SSU5HUzsgaSsrKQogCQlpbml0X3JpbmdfbGlzdHMoJmRldl9wcml2LT5y aW5nW2ldKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xl bi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKaW5kZXggMGIwY2Ux MS4uYjk0MTBhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3Rv bGVuLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKQEAgLTU0 Miw3ICs1NDIsOCBAQCBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9zdG9sZW4oc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBvYmotPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKIAogCWlmIChvYmotPnN0b2xlbikgewotCQlp OTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsIG9iai0+c3RvbGVuKTsKKwkJbGlz dF9kZWwoJm9iai0+c3RvbGVuLT5tbV9saW5rKTsKKwkJaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9u b2RlKGRldl9wcml2LCAmb2JqLT5zdG9sZW4tPmJhc2UpOwogCQlrZnJlZShvYmotPnN0b2xlbik7 CiAJCW9iai0+c3RvbGVuID0gTlVMTDsKIAl9CkBAIC01NTUsNyArNTU2LDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1X2dlbV9vYmplY3Rfc3RvbGVu X29wcyA9IHsKIAogc3RhdGljIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKIF9pOTE1X2dl bV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJICAgICAg IHN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVuKQorCQkJICAgICAgIHN0cnVjdCBpOTE1X3N0b2xl bl9ub2RlICpzdG9sZW4pCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAlp bnQgcmV0ID0gMDsKQEAgLTU2NCwxMSArNTY1LDEyIEBAIF9pOTE1X2dlbV9vYmplY3RfY3JlYXRl X3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChvYmogPT0gTlVMTCkKIAkJcmV0 dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKLQlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2 LCAmb2JqLT5iYXNlLCBzdG9sZW4tPnNpemUpOworCWRybV9nZW1fcHJpdmF0ZV9vYmplY3RfaW5p dChkZXYsICZvYmotPmJhc2UsIHN0b2xlbi0+YmFzZS5zaXplKTsKIAlpOTE1X2dlbV9vYmplY3Rf aW5pdChvYmosICZpOTE1X2dlbV9vYmplY3Rfc3RvbGVuX29wcyk7CiAKIAlvYmotPnBhZ2VzID0g aTkxNV9wYWdlc19jcmVhdGVfZm9yX3N0b2xlbihkZXYsCi0JCQkJCQkgIHN0b2xlbi0+c3RhcnQs IHN0b2xlbi0+c2l6ZSk7CisJCQkJCQkgIHN0b2xlbi0+YmFzZS5zdGFydCwKKwkJCQkJCSAgc3Rv bGVuLT5iYXNlLnNpemUpOwogCWlmIChJU19FUlIob2JqLT5wYWdlcykpIHsKIAkJcmV0ID0gUFRS X0VSUihvYmotPnBhZ2VzKTsKIAkJZ290byBjbGVhbnVwOwpAQCAtNTc3LDYgKzU3OSw5IEBAIF9p OTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWk5 MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAlvYmotPnN0b2xlbiA9IHN0b2xlbjsKIAor CXN0b2xlbi0+b2JqID0gb2JqOworCUlOSVRfTElTVF9IRUFEKCZzdG9sZW4tPm1tX2xpbmspOwor CiAJb2JqLT5iYXNlLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DUFUgfCBJOTE1X0dF TV9ET01BSU5fR1RUOwogCW9iai0+Y2FjaGVfbGV2ZWwgPSBIQVNfTExDKGRldikgPyBJOTE1X0NB Q0hFX0xMQyA6IEk5MTVfQ0FDSEVfTk9ORTsKIApAQCAtNTg3LDE4ICs1OTIsMTAyIEBAIGNsZWFu dXA6CiAJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0KIAotc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKgotaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdTY0IHNpemUpCitzdGF0aWMgYm9vbAorbWFya19mcmVlKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosIHN0cnVjdCBsaXN0X2hlYWQgKnVud2luZCkKK3sKKwlCVUdfT04ob2JqLT5z dG9sZW4gPT0gTlVMTCk7CisKKwlpZiAob2JqLT5tYWR2ICE9IEk5MTVfTUFEVl9ET05UTkVFRCkK KwkJcmV0dXJuIGZhbHNlOworCisJaWYgKG9iai0+cGluX2Rpc3BsYXkpCisJCXJldHVybiBmYWxz ZTsKKworCWxpc3RfYWRkKCZvYmotPnRtcF9saW5rLCB1bndpbmQpOworCXJldHVybiBkcm1fbW1f c2Nhbl9hZGRfYmxvY2soJm9iai0+c3RvbGVuLT5iYXNlKTsKK30KKworc3RhdGljIGludAorc3Rv bGVuX2V2aWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IHNpemUpCiB7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwotCXN0cnVjdCBkcm1fbW1fbm9kZSAq c3RvbGVuOwotCWludCByZXQ7CisJc3RydWN0IGxpc3RfaGVhZCB1bndpbmQsIGV2aWN0OworCXN0 cnVjdCBpOTE1X3N0b2xlbl9ub2RlICppdGVyOworCWludCByZXQsIGFjdGl2ZTsKIAotCWlmICgh ZHJtX21tX2luaXRpYWxpemVkKCZkZXZfcHJpdi0+bW0uc3RvbGVuKSkKLQkJcmV0dXJuIEVSUl9Q VFIoLUVOT0RFVik7CisJZHJtX21tX2luaXRfc2NhbigmZGV2X3ByaXYtPm1tLnN0b2xlbiwgc2l6 ZSwgMCwgMCk7CisJSU5JVF9MSVNUX0hFQUQoJnVud2luZCk7CisKKwkvKiBSZXRpcmUgYWxsIHJl cXVlc3RzIGJlZm9yZSBjcmVhdGluZyB0aGUgZXZpY3QgbGlzdCAqLworCWk5MTVfZ2VtX3JldGly ZV9yZXF1ZXN0cyhkZXZfcHJpdi0+ZGV2KTsKKworCWZvciAoYWN0aXZlID0gMDsgYWN0aXZlIDw9 IDE7IGFjdGl2ZSsrKSB7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkoaXRlciwgJmRldl9wcml2LT5t bS5zdG9sZW5fbGlzdCwgbW1fbGluaykgeworCQkJaWYgKEk5MTVfQk9fSVNfQUNUSVZFKGl0ZXIt Pm9iaikgIT0gYWN0aXZlKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAobWFya19mcmVlKGl0ZXIt Pm9iaiwgJnVud2luZCkpCisJCQkJZ290byBmb3VuZDsKKwkJfQorCX0KKworZm91bmQ6CisJSU5J VF9MSVNUX0hFQUQoJmV2aWN0KTsKKwl3aGlsZSAoIWxpc3RfZW1wdHkoJnVud2luZCkpIHsKKwkJ b2JqID0gbGlzdF9maXJzdF9lbnRyeSgmdW53aW5kLAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCwKKwkJCQkgICAgICAgdG1wX2xpbmspOworCQlsaXN0X2RlbCgmb2JqLT50 bXBfbGluayk7CisKKwkJaWYgKGRybV9tbV9zY2FuX3JlbW92ZV9ibG9jaygmb2JqLT5zdG9sZW4t PmJhc2UpKSB7CisJCQlsaXN0X2FkZCgmb2JqLT50bXBfbGluaywgJmV2aWN0KTsKKwkJCWRybV9n ZW1fb2JqZWN0X3JlZmVyZW5jZSgmb2JqLT5iYXNlKTsKKwkJfQorCX0KKworCXJldCA9IDA7CisJ d2hpbGUgKCFsaXN0X2VtcHR5KCZldmljdCkpIHsKKwkJb2JqID0gbGlzdF9maXJzdF9lbnRyeSgm ZXZpY3QsCisJCQkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LAorCQkJCSAgICAg ICB0bXBfbGluayk7CisJCWxpc3RfZGVsKCZvYmotPnRtcF9saW5rKTsKKworCQlpZiAocmV0ID09 IDApIHsKKwkJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hLCAqdm1hX25leHQ7CisKKwkJCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZSh2bWEsIHZtYV9uZXh0LAorCQkJCQkJICZvYmotPnZtYV9saXN0LAor CQkJCQkJIHZtYV9saW5rKQorCQkJCWlmIChpOTE1X3ZtYV91bmJpbmQodm1hKSkKKwkJCQkJYnJl YWs7CisKKwkJCS8qIFN0b2xlbiBwaW5zIGl0cyBwYWdlcyB0byBwcmV2ZW50IHRoZQorCQkJICog bm9ybWFsIHNocmlua2VyIGZyb20gcHJvY2Vzc2luZyBzdG9sZW4KKwkJCSAqIG9iamVjdHMuCisJ CQkgKi8KKwkJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOworCisJCQlyZXQgPSBp OTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaik7CisJCQlpZiAocmV0ID09IDApIHsKKwkJCQlp OTE1X2dlbV9vYmplY3RfcmVsZWFzZV9zdG9sZW4ob2JqKTsKKwkJCQlvYmotPm1hZHYgPSBfX0k5 MTVfTUFEVl9QVVJHRUQ7CisJCQl9IGVsc2UgeworCQkJCWk5MTVfZ2VtX29iamVjdF9waW5fcGFn ZXMob2JqKTsKKwkJCX0KKwkJfQorCisJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZvYmot PmJhc2UpOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9zdG9s ZW5fbm9kZSAqCitzdG9sZW5fYWxsb2Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCB1NjQgc2l6ZSkKK3sKKwlzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqc3RvbGVuOworCWludCBy ZXQ7CiAKLQlEUk1fREVCVUdfS01TKCJjcmVhdGluZyBzdG9sZW4gb2JqZWN0OiBzaXplPSVsbHhc biIsIHNpemUpOwogCWlmIChzaXplID09IDApCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwog CkBAIC02MDYsMTcgKzY5NSw2MCBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1NjQgc2l6ZSkKIAlpZiAoIXN0b2xlbikKIAkJcmV0dXJuIEVS Ul9QVFIoLUVOT01FTSk7CiAKLQlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUoZGV2 X3ByaXYsIHN0b2xlbiwgc2l6ZSwgNDA5Nik7CisJcmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2Vy dF9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5iYXNlLCBzaXplLCA0MDk2KTsKKwlpZiAocmV0ID09 IDApCisJCWdvdG8gb3V0OworCisJLyogTm8gbW9yZSBzdG9sZW4gbWVtb3J5IGF2YWlsYWJsZSwg b3IgdG9vIGZyYWdtZW50ZWQuCisJICogVHJ5IGV2aWN0aW5nIHB1cmdlYWJsZSBvYmplY3RzIGFu ZCBzZWFyY2ggYWdhaW4uCisJICovCisJcmV0ID0gc3RvbGVuX2V2aWN0KGRldl9wcml2LCBzaXpl KTsKKwlpZiAocmV0ID09IDApCisJCXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShk ZXZfcHJpdiwgJnN0b2xlbi0+YmFzZSwKKwkJCQkJCSAgc2l6ZSwgMCk7CitvdXQ6CiAJaWYgKHJl dCkgewogCQlrZnJlZShzdG9sZW4pOwogCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCX0KIAorCXJl dHVybiBzdG9sZW47Cit9CisKKy8qKgorICogaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4o KSAtIGNyZWF0ZXMgb2JqZWN0IHVzaW5nIHRoZSBzdG9sZW4gbWVtb3J5CisgKiBAZGV2Oglkcm0g ZGV2aWNlCisgKiBAc2l6ZToJc2l6ZSBvZiB0aGUgb2JqZWN0IHJlcXVlc3RlZAorICoKKyAqIGk5 MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKCkgdHJpZXMgdG8gYWxsb2NhdGUgbWVtb3J5IGZv ciB0aGUgb2JqZWN0CisgKiBmcm9tIHRoZSBzdG9sZW4gbWVtb3J5IHJlZ2lvbi4gSWYgbm90IGVu b3VnaCBtZW1vcnkgaXMgZm91bmQsIGl0IHRyaWVzCisgKiBldmljdGluZyBwdXJnZWFibGUgb2Jq ZWN0cyBhbmQgc2VhcmNoaW5nIGFnYWluLgorICoKKyAqIFJldHVybnM6IE9iamVjdCBwb2ludGVy IC0gc3VjY2VzcyBhbmQgZXJyb3IgcG9pbnRlciAtIGZhaWx1cmUKKyAqLworc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKgoraTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdTY0IHNpemUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqOworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47CisKKwlXQVJOX09OKCFtdXRl eF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7CisKKwlpZiAoIWRybV9tbV9pbml0aWFs aXplZCgmZGV2X3ByaXYtPm1tLnN0b2xlbikpCisJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwor CisJRFJNX0RFQlVHX0tNUygiY3JlYXRpbmcgc3RvbGVuIG9iamVjdDogc2l6ZT0lbGx4XG4iLCBz aXplKTsKKworCXN0b2xlbiA9IHN0b2xlbl9hbGxvYyhkZXZfcHJpdiwgc2l6ZSk7CisJaWYgKElT X0VSUihzdG9sZW4pKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwogCW9iaiA9IF9pOTE1 X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihkZXYsIHN0b2xlbik7CiAJaWYgKCFJU19FUlIob2Jq KSkKIAkJcmV0dXJuIG9iajsKIAotCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJp diwgc3RvbGVuKTsKKwlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZzdG9s ZW4tPmJhc2UpOwogCWtmcmVlKHN0b2xlbik7CiAJcmV0dXJuIG9iajsKIH0KQEAgLTYzMCw3ICs3 NjIsNyBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICpnZ3R0ID0g JmRldl9wcml2LT5ndHQuYmFzZTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwot CXN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVuOworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpz dG9sZW47CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJaW50IHJldDsKIApAQCAtNjQ5LDEwICs3 ODEsMTAgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmICghc3RvbGVuKQogCQlyZXR1cm4gRVJSX1BUUigt RU5PTUVNKTsKIAotCXN0b2xlbi0+c3RhcnQgPSBzdG9sZW5fb2Zmc2V0OwotCXN0b2xlbi0+c2l6 ZSA9IHNpemU7CisJc3RvbGVuLT5iYXNlLnN0YXJ0ID0gc3RvbGVuX29mZnNldDsKKwlzdG9sZW4t PmJhc2Uuc2l6ZSA9IHNpemU7CiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPm1tLnN0b2xlbl9sb2Nr KTsKLQlyZXQgPSBkcm1fbW1fcmVzZXJ2ZV9ub2RlKCZkZXZfcHJpdi0+bW0uc3RvbGVuLCBzdG9s ZW4pOworCXJldCA9IGRybV9tbV9yZXNlcnZlX25vZGUoJmRldl9wcml2LT5tbS5zdG9sZW4sICZz dG9sZW4tPmJhc2UpOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPm1tLnN0b2xlbl9sb2NrKTsK IAlpZiAocmV0KSB7CiAJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBhbGxvY2F0ZSBzdG9sZW4g c3BhY2VcbiIpOwpAQCAtNjYzLDcgKzc5NSw3IEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3Rv bGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlvYmogPSBfaTkx NV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oZGV2LCBzdG9sZW4pOwogCWlmIChJU19FUlIob2Jq KSkgewogCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3RvbGVuIG9iamVjdFxu Iik7Ci0JCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgc3RvbGVuKTsKKwkJ aTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5iYXNlKTsKIAkJ a2ZyZWUoc3RvbGVuKTsKIAkJcmV0dXJuIG9iajsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpp bmRleCA2ZGVlOTA4Li4wM2FkMjc2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTUxMDMs NyArNTEwMyw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfY2hlY2tfcGN0eChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJdW5zaWduZWQgbG9uZyBwY3R4X2FkZHIgPSBJOTE1 X1JFQUQoVkxWX1BDQlIpICYgfjQwOTU7CiAKIAlXQVJOX09OKHBjdHhfYWRkciAhPSBkZXZfcHJp di0+bW0uc3RvbGVuX2Jhc2UgKwotCQkJICAgICBkZXZfcHJpdi0+dmx2X3BjdHgtPnN0b2xlbi0+ c3RhcnQpOworCQkJICAgICBkZXZfcHJpdi0+dmx2X3BjdHgtPnN0b2xlbi0+YmFzZS5zdGFydCk7 CiB9CiAKIApAQCAtNTE3Nyw3ICs1MTc3LDcgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19zZXR1 cF9wY3R4KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCXJldHVybjsKIAl9CiAKLQlwY3R4X3Bh ZGRyID0gZGV2X3ByaXYtPm1tLnN0b2xlbl9iYXNlICsgcGN0eC0+c3RvbGVuLT5zdGFydDsKKwlw Y3R4X3BhZGRyID0gZGV2X3ByaXYtPm1tLnN0b2xlbl9iYXNlICsgcGN0eC0+c3RvbGVuLT5iYXNl LnN0YXJ0OwogCUk5MTVfV1JJVEUoVkxWX1BDQlIsIHBjdHhfcGFkZHIpOwogCiBvdXQ6Ci0tIAox LjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK