From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 06/10] drm/i915: Add support for stealing purgable stolen pages Date: Tue, 22 Dec 2015 11:50:49 +0530 Message-ID: <1450765253-32104-7-git-send-email-ankitprasad.r.sharma@intel.com> References: <1450765253-32104-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 4C7F989237 for ; Mon, 21 Dec 2015 22:43:09 -0800 (PST) In-Reply-To: <1450765253-32104-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 b2JqZWN0IGZyb20gc3RvbGVuCnJlZ2lvbiAoVHZydGtvKQoKdjk6IFJlbmFtZWQgdmFyaWFibGVz IHRvIG1ha2UgdXNhZ2UgY2xlYXIsIGFkZGVkIGNvbW1lbnQsIHJlbW92ZWQgb25ldGltZQp1c2Vk IG1hY3JvIChUdnJ0a28pCgp2MTA6IEF2b2lkIG1hc2tpbmcgb2YgZXJyb3Igd2hlbiBzdG9sZW5f YWxsb2MgZmFpbHMgKFR2cnRrbykKCnYxMTogUmVuYW1lZCBzdG9sZW5fbGluayB0byB0bXBfbGlu aywgYXMgaXQgbWF5IGJlIHVzZWQgZm9yIG90aGVyCnB1cnBvc2VzIHRvbyAoQ2hyaXMpClVzZWQg RVJSX0NBU1QgdG8gY2FzdCBlcnJvciBwb2ludGVycyB3aGlsZSByZXR1cm5pbmcKCnYxMjogQWRk ZWQgbG9ja2RlcF9hc3NlcnQgYmVmb3JlIHN0YXJ0aW5nIHN0b2xlbi1iYWNrZWQgb2JqZWN0CmV2 aWN0aW9uIChDaHJpcykKClRlc3RjYXNlOiBpZ3QvZ2VtX3N0b2xlbgoKU2lnbmVkLW9mZi1ieTog Q2hyaXMgV2lsc29uIDxjaHJpcyBhdCBjaHJpcy13aWxzb24uY28udWs+ClNpZ25lZC1vZmYtYnk6 IEFua2l0cHJhc2FkIFNoYXJtYSA8YW5raXRwcmFzYWQuci5zaGFybWFAaW50ZWwuY29tPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgIHwgICA2ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICB8ICAxNyArKystCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICB8ICAxNSArKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3N0b2xlbi5jIHwgMTcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgfCAgIDQgKy0KIDUgZmls ZXMgY2hhbmdlZCwgMTg4IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggYTg3MjFmYy4uZjBhYTNkNCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTE3NCw3ICsxNzQsNyBAQCBkZXNjcmliZV9vYmooc3Ry dWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCQkJc2Vx X3B1dHMobSwgIikiKTsKIAl9CiAJaWYgKG9iai0+c3RvbGVuKQotCQlzZXFfcHJpbnRmKG0sICIg KHN0b2xlbjogJTA4bGx4KSIsIG9iai0+c3RvbGVuLT5zdGFydCk7CisJCXNlcV9wcmludGYobSwg IiAoc3RvbGVuOiAlMDhsbHgpIiwgb2JqLT5zdG9sZW4tPmJhc2Uuc3RhcnQpOwogCWlmIChvYmot PnBpbl9kaXNwbGF5IHx8IG9iai0+ZmF1bHRfbWFwcGFibGUpIHsKIAkJY2hhciBzWzNdLCAqdCA9 IHM7CiAJCWlmIChvYmotPnBpbl9kaXNwbGF5KQpAQCAtMjUzLDkgKzI1Myw5IEBAIHN0YXRpYyBp bnQgb2JqX3JhbmtfYnlfc3RvbGVuKHZvaWQgKnByaXYsCiAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKmIgPQogCQljb250YWluZXJfb2YoQiwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qs IG9ial9leGVjX2xpbmspOwogCi0JaWYgKGEtPnN0b2xlbi0+c3RhcnQgPCBiLT5zdG9sZW4tPnN0 YXJ0KQorCWlmIChhLT5zdG9sZW4tPmJhc2Uuc3RhcnQgPCBiLT5zdG9sZW4tPmJhc2Uuc3RhcnQp CiAJCXJldHVybiAtMTsKLQlpZiAoYS0+c3RvbGVuLT5zdGFydCA+IGItPnN0b2xlbi0+c3RhcnQp CisJaWYgKGEtPnN0b2xlbi0+YmFzZS5zdGFydCA+IGItPnN0b2xlbi0+YmFzZS5zdGFydCkKIAkJ cmV0dXJuIDE7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBkY2Rm Yjk3Li4yZjIxZTcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTg0MSw2ICs4NDEsMTIg QEAgc3RydWN0IGk5MTVfY3R4X2hhbmdfc3RhdHMgewogCWJvb2wgYmFubmVkOwogfTsKIAorc3Ry dWN0IGk5MTVfc3RvbGVuX25vZGUgeworCXN0cnVjdCBkcm1fbW1fbm9kZSBiYXNlOworCXN0cnVj dCBsaXN0X2hlYWQgbW1fbGluazsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwor fTsKKwogLyogVGhpcyBtdXN0IG1hdGNoIHVwIHdpdGggdGhlIHZhbHVlIHByZXZpb3VzbHkgdXNl ZCBmb3IgZXhlY2J1ZjIucnN2ZDEuICovCiAjZGVmaW5lIERFRkFVTFRfQ09OVEVYVF9IQU5ETEUg MAogCkBAIC0xMjUxLDYgKzEyNTcsMTMgQEAgc3RydWN0IGk5MTVfZ2VtX21tIHsKIAkgKi8KIAlz dHJ1Y3QgbGlzdF9oZWFkIHVuYm91bmRfbGlzdDsKIAorCS8qKgorCSAqIExpc3Qgb2Ygc3RvbGVu IG9iamVjdHMgdGhhdCBoYXZlIGJlZW4gbWFya2VkIGFzIHB1cmdlYWJsZSBhbmQKKwkgKiB0aHVz IGF2YWlsYWJsZSBmb3IgcmVhcGluZyBpZiB3ZSBuZWVkIG1vcmUgc3BhY2UgZm9yIGEgbmV3CisJ ICogYWxsb2NhdGlvbi4gT3JkZXJlZCBieSB0aW1lIG9mIG1hcmtpbmcgcHVyZ2VhYmxlLgorCSAq LworCXN0cnVjdCBsaXN0X2hlYWQgc3RvbGVuX2xpc3Q7CisKIAkvKiogVXNhYmxlIHBvcnRpb24g b2YgdGhlIEdUVCBmb3IgR0VNICovCiAJdW5zaWduZWQgbG9uZyBzdG9sZW5fYmFzZTsgLyogbGlt aXRlZCB0byBsb3cgbWVtb3J5ICgzMi1iaXQpICovCiAKQEAgLTIwMzEsNyArMjA0NCw3IEBAIHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHZtYV9saXN0Owog CiAJLyoqIFN0b2xlbiBtZW1vcnkgZm9yIHRoaXMgb2JqZWN0LCBpbnN0ZWFkIG9mIGJlaW5nIGJh Y2tlZCBieSBzaG1lbS4gKi8KLQlzdHJ1Y3QgZHJtX21tX25vZGUgKnN0b2xlbjsKKwlzdHJ1Y3Qg aTkxNV9zdG9sZW5fbm9kZSAqc3RvbGVuOwogCXN0cnVjdCBsaXN0X2hlYWQgZ2xvYmFsX2xpc3Q7 CiAKIAlzdHJ1Y3QgbGlzdF9oZWFkIHJpbmdfbGlzdFtJOTE1X05VTV9SSU5HU107CkBAIC0yMDM5 LDYgKzIwNTIsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJc3RydWN0IGxpc3Rf aGVhZCBvYmpfZXhlY19saW5rOwogCiAJc3RydWN0IGxpc3RfaGVhZCBiYXRjaF9wb29sX2xpbms7 CisJLyoqIFVzZWQgdG8gbGluayBhbiBvYmplY3QgdG8gYSBsaXN0IHRlbXBvcmFyaWx5ICovCisJ c3RydWN0IGxpc3RfaGVhZCB0bXBfbGluazsKIAogCS8qKgogCSAqIFRoaXMgaXMgc2V0IGlmIHRo ZSBvYmplY3QgaXMgb24gdGhlIGFjdGl2ZSBsaXN0cyAoaGFzIHBlbmRpbmcKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCmluZGV4IDMxZDY2ZTAuLjQ3ODljNjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YwpAQCAtNDQxOSw2ICs0NDE5LDIwIEBAIGk5MTVfZ2VtX21hZHZpc2VfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAob2JqLT5tYWR2ID09IEk5MTVfTUFEVl9E T05UTkVFRCAmJiBvYmotPnBhZ2VzID09IE5VTEwpCiAJCWk5MTVfZ2VtX29iamVjdF90cnVuY2F0 ZShvYmopOwogCisJaWYgKG9iai0+c3RvbGVuKSB7CisJCXN3aXRjaCAob2JqLT5tYWR2KSB7CisJ CWNhc2UgSTkxNV9NQURWX1dJTExORUVEOgorCQkJbGlzdF9kZWxfaW5pdCgmb2JqLT5zdG9sZW4t Pm1tX2xpbmspOworCQkJYnJlYWs7CisJCWNhc2UgSTkxNV9NQURWX0RPTlRORUVEOgorCQkJbGlz dF9tb3ZlKCZvYmotPnN0b2xlbi0+bW1fbGluaywKKwkJCQkgICZkZXZfcHJpdi0+bW0uc3RvbGVu X2xpc3QpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfQorCX0KKwogCWFy Z3MtPnJldGFpbmVkID0gb2JqLT5tYWR2ICE9IF9fSTkxNV9NQURWX1BVUkdFRDsKIAogb3V0OgpA QCAtNTA1NCw2ICs1MDY4LDcgQEAgaTkxNV9nZW1fbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+Y29udGV4dF9saXN0KTsKIAlJTklUX0xJU1Rf SEVBRCgmZGV2X3ByaXYtPm1tLnVuYm91bmRfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9w cml2LT5tbS5ib3VuZF9saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLnN0b2xl bl9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLmZlbmNlX2xpc3QpOwogCWZv ciAoaSA9IDA7IGkgPCBJOTE1X05VTV9SSU5HUzsgaSsrKQogCQlpbml0X3JpbmdfbGlzdHMoJmRl dl9wcml2LT5yaW5nW2ldKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3N0b2xlbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKaW5k ZXggODY5YmEyNS4uOGRiNTc1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fc3RvbGVuLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVu LmMKQEAgLTU0Miw3ICs1NDIsOCBAQCBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9zdG9sZW4oc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBvYmotPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKIAogCWlmIChvYmotPnN0b2xl bikgewotCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsIG9iai0+c3RvbGVu KTsKKwkJbGlzdF9kZWwoJm9iai0+c3RvbGVuLT5tbV9saW5rKTsKKwkJaTkxNV9nZW1fc3RvbGVu X3JlbW92ZV9ub2RlKGRldl9wcml2LCAmb2JqLT5zdG9sZW4tPmJhc2UpOwogCQlrZnJlZShvYmot PnN0b2xlbik7CiAJCW9iai0+c3RvbGVuID0gTlVMTDsKIAl9CkBAIC01NTUsNyArNTU2LDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1X2dlbV9vYmpl Y3Rfc3RvbGVuX29wcyA9IHsKIAogc3RhdGljIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoK IF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAot CQkJICAgICAgIHN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVuKQorCQkJICAgICAgIHN0cnVjdCBp OTE1X3N0b2xlbl9ub2RlICpzdG9sZW4pCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iajsKIAlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzOwpAQCAtNTY0LDExICs1NjUsMTIgQEAgX2k5 MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYg KG9iaiA9PSBOVUxMKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAotCWRybV9nZW1fcHJp dmF0ZV9vYmplY3RfaW5pdChkZXYsICZvYmotPmJhc2UsIHN0b2xlbi0+c2l6ZSk7CisJZHJtX2dl bV9wcml2YXRlX29iamVjdF9pbml0KGRldiwgJm9iai0+YmFzZSwgc3RvbGVuLT5iYXNlLnNpemUp OwogCWk5MTVfZ2VtX29iamVjdF9pbml0KG9iaiwgJmk5MTVfZ2VtX29iamVjdF9zdG9sZW5fb3Bz KTsKIAogCXBhZ2VzID0gaTkxNV9wYWdlc19jcmVhdGVfZm9yX3N0b2xlbihkZXYsCi0JCQkJCSAg ICAgc3RvbGVuLT5zdGFydCwgc3RvbGVuLT5zaXplKTsKKwkJCQkJICAgICBzdG9sZW4tPmJhc2Uu c3RhcnQsCisJCQkJCSAgICAgc3RvbGVuLT5iYXNlLnNpemUpOwogCWlmIChJU19FUlIocGFnZXMp KSB7CiAJCWk5MTVfZ2VtX29iamVjdF9mcmVlKG9iaik7CiAJCXJldHVybiBFUlJfQ0FTVChwYWdl cyk7CkBAIC01ODIsMjQgKzU4NCwxMTIgQEAgX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVu KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmop OwogCW9iai0+c3RvbGVuID0gc3RvbGVuOwogCisJc3RvbGVuLT5vYmogPSBvYmo7CisJSU5JVF9M SVNUX0hFQUQoJnN0b2xlbi0+bW1fbGluayk7CisKIAlvYmotPmJhc2UucmVhZF9kb21haW5zID0g STkxNV9HRU1fRE9NQUlOX0NQVSB8IEk5MTVfR0VNX0RPTUFJTl9HVFQ7CiAJb2JqLT5jYWNoZV9s ZXZlbCA9IEhBU19MTEMoZGV2KSA/IEk5MTVfQ0FDSEVfTExDIDogSTkxNV9DQUNIRV9OT05FOwog CiAJcmV0dXJuIG9iajsKIH0KIAotc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgotaTkxNV9n ZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTY0IHNpemUp CitzdGF0aWMgYm9vbAorbWFya19mcmVlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos IHN0cnVjdCBsaXN0X2hlYWQgKnVud2luZCkKK3sKKwlCVUdfT04ob2JqLT5zdG9sZW4gPT0gTlVM TCk7CisKKwlpZiAob2JqLT5tYWR2ICE9IEk5MTVfTUFEVl9ET05UTkVFRCkKKwkJcmV0dXJuIGZh bHNlOworCisJaWYgKG9iai0+cGluX2Rpc3BsYXkpCisJCXJldHVybiBmYWxzZTsKKworCWxpc3Rf YWRkKCZvYmotPnRtcF9saW5rLCB1bndpbmQpOworCXJldHVybiBkcm1fbW1fc2Nhbl9hZGRfYmxv Y2soJm9iai0+c3RvbGVuLT5iYXNlKTsKK30KKworc3RhdGljIGludAorc3RvbGVuX2V2aWN0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IHNpemUpCiB7Ci0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqOwotCXN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVuOwotCWlu dCByZXQ7CisJc3RydWN0IGxpc3RfaGVhZCB1bndpbmQsIGV2aWN0OworCXN0cnVjdCBpOTE1X3N0 b2xlbl9ub2RlICppdGVyOworCWludCByZXQsIGFjdGl2ZTsKIAotCWlmICghZHJtX21tX2luaXRp YWxpemVkKCZkZXZfcHJpdi0+bW0uc3RvbGVuKSkKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7 CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPmRldi0+c3RydWN0X211dGV4KTsKKwlk cm1fbW1faW5pdF9zY2FuKCZkZXZfcHJpdi0+bW0uc3RvbGVuLCBzaXplLCAwLCAwKTsKKwlJTklU X0xJU1RfSEVBRCgmdW53aW5kKTsKKworCS8qIFJldGlyZSBhbGwgcmVxdWVzdHMgYmVmb3JlIGNy ZWF0aW5nIHRoZSBldmljdCBsaXN0ICovCisJaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKGRldl9w cml2LT5kZXYpOworCisJZm9yIChhY3RpdmUgPSAwOyBhY3RpdmUgPD0gMTsgYWN0aXZlKyspIHsK KwkJbGlzdF9mb3JfZWFjaF9lbnRyeShpdGVyLCAmZGV2X3ByaXYtPm1tLnN0b2xlbl9saXN0LCBt bV9saW5rKSB7CisJCQlpZiAoaXRlci0+b2JqLT5hY3RpdmUgIT0gYWN0aXZlKQorCQkJCWNvbnRp bnVlOworCisJCQlpZiAobWFya19mcmVlKGl0ZXItPm9iaiwgJnVud2luZCkpCisJCQkJZ290byBm b3VuZDsKKwkJfQorCX0KKworZm91bmQ6CisJSU5JVF9MSVNUX0hFQUQoJmV2aWN0KTsKKwl3aGls ZSAoIWxpc3RfZW1wdHkoJnVud2luZCkpIHsKKwkJb2JqID0gbGlzdF9maXJzdF9lbnRyeSgmdW53 aW5kLAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwKKwkJCQkgICAgICAg dG1wX2xpbmspOworCQlsaXN0X2RlbCgmb2JqLT50bXBfbGluayk7CisKKwkJaWYgKGRybV9tbV9z Y2FuX3JlbW92ZV9ibG9jaygmb2JqLT5zdG9sZW4tPmJhc2UpKSB7CisJCQlsaXN0X2FkZCgmb2Jq LT50bXBfbGluaywgJmV2aWN0KTsKKwkJCWRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZSgmb2JqLT5i YXNlKTsKKwkJfQorCX0KKworCXJldCA9IDA7CisJd2hpbGUgKCFsaXN0X2VtcHR5KCZldmljdCkp IHsKKwkJb2JqID0gbGlzdF9maXJzdF9lbnRyeSgmZXZpY3QsCisJCQkJICAgICAgIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0LAorCQkJCSAgICAgICB0bXBfbGluayk7CisJCWxpc3RfZGVsKCZv YmotPnRtcF9saW5rKTsKKworCQlpZiAocmV0ID09IDApIHsKKwkJCXN0cnVjdCBpOTE1X3ZtYSAq dm1hLCAqdm1hX25leHQ7CisKKwkJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh2bWEsIHZtYV9u ZXh0LAorCQkJCQkJICZvYmotPnZtYV9saXN0LAorCQkJCQkJIHZtYV9saW5rKQorCQkJCWlmIChp OTE1X3ZtYV91bmJpbmQodm1hKSkKKwkJCQkJYnJlYWs7CisKKwkJCS8qIFN0b2xlbiBwaW5zIGl0 cyBwYWdlcyB0byBwcmV2ZW50IHRoZQorCQkJICogbm9ybWFsIHNocmlua2VyIGZyb20gcHJvY2Vz c2luZyBzdG9sZW4KKwkJCSAqIG9iamVjdHMuCisJCQkgKi8KKwkJCWk5MTVfZ2VtX29iamVjdF91 bnBpbl9wYWdlcyhvYmopOworCisJCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9i aik7CisJCQlpZiAocmV0ID09IDApIHsKKwkJCQlpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9zdG9s ZW4ob2JqKTsKKwkJCQlvYmotPm1hZHYgPSBfX0k5MTVfTUFEVl9QVVJHRUQ7CisJCQl9IGVsc2Ug eworCQkJCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKKwkJCX0KKwkJfQorCisJCWRy bV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOworCX0KKworCXJldHVybiByZXQ7 Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9zdG9sZW5fbm9kZSAqCitzdG9sZW5fYWxsb2Moc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgc2l6ZSkKK3sKKwlzdHJ1Y3QgaTkx NV9zdG9sZW5fbm9kZSAqc3RvbGVuOworCWludCByZXQ7CiAKLQlEUk1fREVCVUdfS01TKCJjcmVh dGluZyBzdG9sZW4gb2JqZWN0OiBzaXplPSVsbHhcbiIsIHNpemUpOwogCWlmIChzaXplID09IDAp CiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCkBAIC02MDcsMTcgKzY5Nyw2MCBAQCBpOTE1 X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1NjQgc2l6 ZSkKIAlpZiAoIXN0b2xlbikKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKLQlyZXQgPSBp OTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUoZGV2X3ByaXYsIHN0b2xlbiwgc2l6ZSwgNDA5Nik7 CisJcmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5i YXNlLCBzaXplLCA0MDk2KTsKKwlpZiAocmV0ID09IDApCisJCWdvdG8gb3V0OworCisJLyogTm8g bW9yZSBzdG9sZW4gbWVtb3J5IGF2YWlsYWJsZSwgb3IgdG9vIGZyYWdtZW50ZWQuCisJICogVHJ5 IGV2aWN0aW5nIHB1cmdlYWJsZSBvYmplY3RzIGFuZCBzZWFyY2ggYWdhaW4uCisJICovCisJcmV0 ID0gc3RvbGVuX2V2aWN0KGRldl9wcml2LCBzaXplKTsKKwlpZiAocmV0ID09IDApCisJCXJldCA9 IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShkZXZfcHJpdiwgJnN0b2xlbi0+YmFzZSwKKwkJ CQkJCSAgc2l6ZSwgNDA5Nik7CitvdXQ6CiAJaWYgKHJldCkgewogCQlrZnJlZShzdG9sZW4pOwog CQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCX0KIAorCXJldHVybiBzdG9sZW47Cit9CisKKy8qKgor ICogaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oKSAtIGNyZWF0ZXMgb2JqZWN0IHVzaW5n IHRoZSBzdG9sZW4gbWVtb3J5CisgKiBAZGV2Oglkcm0gZGV2aWNlCisgKiBAc2l6ZToJc2l6ZSBv ZiB0aGUgb2JqZWN0IHJlcXVlc3RlZAorICoKKyAqIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3Rv bGVuKCkgdHJpZXMgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgb2JqZWN0CisgKiBmcm9tIHRo ZSBzdG9sZW4gbWVtb3J5IHJlZ2lvbi4gSWYgbm90IGVub3VnaCBtZW1vcnkgaXMgZm91bmQsIGl0 IHRyaWVzCisgKiBldmljdGluZyBwdXJnZWFibGUgb2JqZWN0cyBhbmQgc2VhcmNoaW5nIGFnYWlu LgorICoKKyAqIFJldHVybnM6IE9iamVjdCBwb2ludGVyIC0gc3VjY2VzcyBhbmQgZXJyb3IgcG9p bnRlciAtIGZhaWx1cmUKKyAqLworc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgoraTkxNV9n ZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTY0IHNpemUp Cit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBpOTE1X3N0b2xl bl9ub2RlICpzdG9sZW47CisKKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0 X211dGV4KSk7CisKKwlpZiAoIWRybV9tbV9pbml0aWFsaXplZCgmZGV2X3ByaXYtPm1tLnN0b2xl bikpCisJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOworCisJRFJNX0RFQlVHX0tNUygiY3JlYXRp bmcgc3RvbGVuIG9iamVjdDogc2l6ZT0lbGx4XG4iLCBzaXplKTsKKworCXN0b2xlbiA9IHN0b2xl bl9hbGxvYyhkZXZfcHJpdiwgc2l6ZSk7CisJaWYgKElTX0VSUihzdG9sZW4pKQorCQlyZXR1cm4g RVJSX0NBU1Qoc3RvbGVuKTsKKwogCW9iaiA9IF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xl bihkZXYsIHN0b2xlbik7CiAJaWYgKCFJU19FUlIob2JqKSkKIAkJcmV0dXJuIG9iajsKIAotCWk5 MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgc3RvbGVuKTsKKwlpOTE1X2dlbV9z dG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZzdG9sZW4tPmJhc2UpOwogCWtmcmVlKHN0b2xl bik7CiAJcmV0dXJuIG9iajsKIH0KQEAgLTYzMSw3ICs3NjQsNyBAQCBpOTE1X2dlbV9vYmplY3Rf Y3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICpnZ3R0ID0gJmRldl9wcml2LT5ndHQuYmFzZTsKIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwotCXN0cnVjdCBkcm1fbW1fbm9kZSAqc3Rv bGVuOworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW47CiAJc3RydWN0IGk5MTVfdm1h ICp2bWE7CiAJaW50IHJldDsKIApAQCAtNjUwLDEwICs3ODMsMTAgQEAgaTkxNV9nZW1fb2JqZWN0 X2NyZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CWlmICghc3RvbGVuKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAotCXN0b2xlbi0+c3Rh cnQgPSBzdG9sZW5fb2Zmc2V0OwotCXN0b2xlbi0+c2l6ZSA9IHNpemU7CisJc3RvbGVuLT5iYXNl LnN0YXJ0ID0gc3RvbGVuX29mZnNldDsKKwlzdG9sZW4tPmJhc2Uuc2l6ZSA9IHNpemU7CiAJbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPm1tLnN0b2xlbl9sb2NrKTsKLQlyZXQgPSBkcm1fbW1fcmVzZXJ2 ZV9ub2RlKCZkZXZfcHJpdi0+bW0uc3RvbGVuLCBzdG9sZW4pOworCXJldCA9IGRybV9tbV9yZXNl cnZlX25vZGUoJmRldl9wcml2LT5tbS5zdG9sZW4sICZzdG9sZW4tPmJhc2UpOwogCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPm1tLnN0b2xlbl9sb2NrKTsKIAlpZiAocmV0KSB7CiAJCURSTV9ERUJV R19LTVMoImZhaWxlZCB0byBhbGxvY2F0ZSBzdG9sZW4gc3BhY2VcbiIpOwpAQCAtNjY0LDcgKzc5 Nyw3IEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAlvYmogPSBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9s ZW4oZGV2LCBzdG9sZW4pOwogCWlmIChJU19FUlIob2JqKSkgewogCQlEUk1fREVCVUdfS01TKCJm YWlsZWQgdG8gYWxsb2NhdGUgc3RvbGVuIG9iamVjdFxuIik7Ci0JCWk5MTVfZ2VtX3N0b2xlbl9y ZW1vdmVfbm9kZShkZXZfcHJpdiwgc3RvbGVuKTsKKwkJaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9u b2RlKGRldl9wcml2LCAmc3RvbGVuLT5iYXNlKTsKIAkJa2ZyZWUoc3RvbGVuKTsKIAkJcmV0dXJu IG9iajsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCAwYWZiODE5Li5jOTRiMzliIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTUxMTksNyArNTExOSw3IEBAIHN0YXRpYyB2b2lk IHZhbGxleXZpZXdfY2hlY2tfcGN0eChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJdW5zaWduZWQgbG9uZyBwY3R4X2FkZHIgPSBJOTE1X1JFQUQoVkxWX1BDQlIpICYgfjQwOTU7 CiAKIAlXQVJOX09OKHBjdHhfYWRkciAhPSBkZXZfcHJpdi0+bW0uc3RvbGVuX2Jhc2UgKwotCQkJ ICAgICBkZXZfcHJpdi0+dmx2X3BjdHgtPnN0b2xlbi0+c3RhcnQpOworCQkJICAgICBkZXZfcHJp di0+dmx2X3BjdHgtPnN0b2xlbi0+YmFzZS5zdGFydCk7CiB9CiAKIApAQCAtNTE5NCw3ICs1MTk0 LDcgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19zZXR1cF9wY3R4KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiAJCXJldHVybjsKIAl9CiAKLQlwY3R4X3BhZGRyID0gZGV2X3ByaXYtPm1tLnN0b2xl bl9iYXNlICsgcGN0eC0+c3RvbGVuLT5zdGFydDsKKwlwY3R4X3BhZGRyID0gZGV2X3ByaXYtPm1t LnN0b2xlbl9iYXNlICsgcGN0eC0+c3RvbGVuLT5iYXNlLnN0YXJ0OwogCUk5MTVfV1JJVEUoVkxW X1BDQlIsIHBjdHhfcGFkZHIpOwogCiBvdXQ6Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK