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: Thu, 8 Oct 2015 11:54:27 +0530 Message-ID: <1444285469-8187-5-git-send-email-ankitprasad.r.sharma@intel.com> References: <1444285469-8187-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id A638A6E6D7 for ; Wed, 7 Oct 2015 23:44:13 -0700 (PDT) In-Reply-To: <1444285469-8187-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 dG9sZW4oKQoKVGVzdGNhc2U6IGlndC9nZW1fc3RvbGVuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBX aWxzb24gPGNocmlzIGF0IGNocmlzLXdpbHNvbi5jby51az4KU2lnbmVkLW9mZi1ieTogQW5raXRw cmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggICAgICAgIHwgIDE3ICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMgICAgICAgIHwgIDE2ICsrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3N0b2xlbi5jIHwgMTY5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgfCAgIDQgKy0KIDUgZmlsZXMgY2hh bmdlZCwgMTg2IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKaW5kZXggODc5NzcxNy4uMTM3NjJjMSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKQEAgLTE3NCw3ICsxNzQsNyBAQCBkZXNjcmliZV9vYmooc3RydWN0IHNl cV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCQkJc2VxX3B1dHMo bSwgIikiKTsKIAl9CiAJaWYgKG9iai0+c3RvbGVuKQotCQlzZXFfcHJpbnRmKG0sICIgKHN0b2xl bjogJTA4bGx4KSIsIG9iai0+c3RvbGVuLT5zdGFydCk7CisJCXNlcV9wcmludGYobSwgIiAoc3Rv bGVuOiAlMDhsbHgpIiwgb2JqLT5zdG9sZW4tPmJhc2Uuc3RhcnQpOwogCWlmIChvYmotPnBpbl9k aXNwbGF5IHx8IG9iai0+ZmF1bHRfbWFwcGFibGUpIHsKIAkJY2hhciBzWzNdLCAqdCA9IHM7CiAJ CWlmIChvYmotPnBpbl9kaXNwbGF5KQpAQCAtMjUzLDcgKzI1Myw3IEBAIHN0YXRpYyBpbnQgb2Jq X3JhbmtfYnlfc3RvbGVuKHZvaWQgKnByaXYsCiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg KmIgPQogCQljb250YWluZXJfb2YoQiwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsIG9ial9l eGVjX2xpbmspOwogCi0JcmV0dXJuIGEtPnN0b2xlbi0+c3RhcnQgLSBiLT5zdG9sZW4tPnN0YXJ0 OworCXJldHVybiBhLT5zdG9sZW4tPmJhc2Uuc3RhcnQgLSBiLT5zdG9sZW4tPmJhc2Uuc3RhcnQ7 CiB9CiAKIHN0YXRpYyBpbnQgaTkxNV9nZW1fc3RvbGVuX2xpc3RfaW5mbyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKmRhdGEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBiY2ExNTcyLi41 NjEyZGYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTg1MCw2ICs4NTAsMTIgQEAgc3Ry dWN0IGk5MTVfY3R4X2hhbmdfc3RhdHMgewogCWJvb2wgYmFubmVkOwogfTsKIAorc3RydWN0IGk5 MTVfc3RvbGVuX25vZGUgeworCXN0cnVjdCBkcm1fbW1fbm9kZSBiYXNlOworCXN0cnVjdCBsaXN0 X2hlYWQgbW1fbGluazsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworfTsKKwog LyogVGhpcyBtdXN0IG1hdGNoIHVwIHdpdGggdGhlIHZhbHVlIHByZXZpb3VzbHkgdXNlZCBmb3Ig ZXhlY2J1ZjIucnN2ZDEuICovCiAjZGVmaW5lIERFRkFVTFRfQ09OVEVYVF9IQU5ETEUgMAogCkBA IC0xMjc5LDYgKzEyODUsMTMgQEAgc3RydWN0IGk5MTVfZ2VtX21tIHsKIAkgKi8KIAlzdHJ1Y3Qg bGlzdF9oZWFkIHVuYm91bmRfbGlzdDsKIAorCS8qKgorCSAqIExpc3Qgb2Ygc3RvbGVuIG9iamVj dHMgdGhhdCBoYXZlIGJlZW4gbWFya2VkIGFzIHB1cmdlYWJsZSBhbmQKKwkgKiB0aHVzIGF2YWls YWJsZSBmb3IgcmVhcGluZyBpZiB3ZSBuZWVkIG1vcmUgc3BhY2UgZm9yIGEgbmV3CisJICogYWxs b2NhdGlvbi4gT3JkZXJlZCBieSB0aW1lIG9mIG1hcmtpbmcgcHVyZ2VhYmxlLgorCSAqLworCXN0 cnVjdCBsaXN0X2hlYWQgc3RvbGVuX2xpc3Q7CisKIAkvKiogVXNhYmxlIHBvcnRpb24gb2YgdGhl IEdUVCBmb3IgR0VNICovCiAJdW5zaWduZWQgbG9uZyBzdG9sZW5fYmFzZTsgLyogbGltaXRlZCB0 byBsb3cgbWVtb3J5ICgzMi1iaXQpICovCiAKQEAgLTIwNDcsNyArMjA2MCw3IEBAIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHZtYV9saXN0OwogCiAJLyoq IFN0b2xlbiBtZW1vcnkgZm9yIHRoaXMgb2JqZWN0LCBpbnN0ZWFkIG9mIGJlaW5nIGJhY2tlZCBi eSBzaG1lbS4gKi8KLQlzdHJ1Y3QgZHJtX21tX25vZGUgKnN0b2xlbjsKKwlzdHJ1Y3QgaTkxNV9z dG9sZW5fbm9kZSAqc3RvbGVuOwogCXN0cnVjdCBsaXN0X2hlYWQgZ2xvYmFsX2xpc3Q7CiAKIAlz dHJ1Y3QgbGlzdF9oZWFkIHJpbmdfbGlzdFtJOTE1X05VTV9SSU5HU107CkBAIC0yMDU1LDYgKzIw NjgsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJc3RydWN0IGxpc3RfaGVhZCBv YmpfZXhlY19saW5rOwogCiAJc3RydWN0IGxpc3RfaGVhZCBiYXRjaF9wb29sX2xpbms7CisJc3Ry dWN0IGxpc3RfaGVhZCB0bXBfbGluazsKIAogCS8qKgogCSAqIFRoaXMgaXMgc2V0IGlmIHRoZSBv YmplY3QgaXMgb24gdGhlIGFjdGl2ZSBsaXN0cyAoaGFzIHBlbmRpbmcKQEAgLTIxNzEsNiArMjE4 NSw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAl9OwogfTsKICNkZWZpbmUgdG9f aW50ZWxfYm8oeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LCBi YXNlKQorI2RlZmluZSBJOTE1X0JPX0lTX0FDVElWRShfX29iaikgKF9fb2JqLT5hY3RpdmUpCiAK IHZvaWQgaTkxNV9nZW1fdHJhY2tfZmIoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZCwK IAkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpuZXcsCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwppbmRleCA1NGY3ZGYxLi45MWEyZTk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK QEAgLTQyMzMsNiArNDIzMywyMCBAQCBpOTE1X2dlbV9tYWR2aXNlX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKG9iai0+bWFkdiA9PSBJOTE1X01BRFZfRE9O VE5FRUQgJiYgb2JqLT5wYWdlcyA9PSBOVUxMKQogCQlpOTE1X2dlbV9vYmplY3RfdHJ1bmNhdGUo b2JqKTsKIAorCWlmIChvYmotPnN0b2xlbikgeworCQlzd2l0Y2ggKG9iai0+bWFkdikgeworCQlj YXNlIEk5MTVfTUFEVl9XSUxMTkVFRDoKKwkJCWxpc3RfZGVsX2luaXQoJm9iai0+c3RvbGVuLT5t bV9saW5rKTsKKwkJCWJyZWFrOworCQljYXNlIEk5MTVfTUFEVl9ET05UTkVFRDoKKwkJCWxpc3Rf bW92ZSgmb2JqLT5zdG9sZW4tPm1tX2xpbmssCisJCQkJICAmZGV2X3ByaXYtPm1tLnN0b2xlbl9s aXN0KTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0KKwl9CisKIAlhcmdz LT5yZXRhaW5lZCA9IG9iai0+bWFkdiAhPSBfX0k5MTVfTUFEVl9QVVJHRUQ7CiAKIG91dDoKQEAg LTQyNTMsNiArNDI2Nyw3IEBAIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2luaXQoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwKIAlJTklUX0xJU1RfSEVBRCgmb2JqLT5vYmpfZXhlY19saW5r KTsKIAlJTklUX0xJU1RfSEVBRCgmb2JqLT52bWFfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJm9i ai0+YmF0Y2hfcG9vbF9saW5rKTsKKwlJTklUX0xJU1RfSEVBRCgmb2JqLT50bXBfbGluayk7CiAK IAlvYmotPm9wcyA9IG9wczsKIApAQCAtNDg5NSw2ICs0OTEwLDcgQEAgaTkxNV9nZW1fbG9hZChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+Y29udGV4 dF9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLnVuYm91bmRfbGlzdCk7CiAJ SU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS5ib3VuZF9saXN0KTsKKwlJTklUX0xJU1RfSEVB RCgmZGV2X3ByaXYtPm1tLnN0b2xlbl9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYt Pm1tLmZlbmNlX2xpc3QpOwogCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9SSU5HUzsgaSsrKQog CQlpbml0X3JpbmdfbGlzdHMoJmRldl9wcml2LT5yaW5nW2ldKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fc3RvbGVuLmMKaW5kZXggZDNlNjgxMy4uYmQ1YjJlYSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKQEAgLTQ1Niw3ICs0NTYsOCBAQCBpOTE1X2dlbV9vYmpl Y3RfcmVsZWFzZV9zdG9sZW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBvYmotPmJhc2UuZGV2LT5kZXZfcHJpdmF0 ZTsKIAogCWlmIChvYmotPnN0b2xlbikgewotCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUo ZGV2X3ByaXYsIG9iai0+c3RvbGVuKTsKKwkJbGlzdF9kZWwoJm9iai0+c3RvbGVuLT5tbV9saW5r KTsKKwkJaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCAmb2JqLT5zdG9sZW4t PmJhc2UpOwogCQlrZnJlZShvYmotPnN0b2xlbik7CiAJCW9iai0+c3RvbGVuID0gTlVMTDsKIAl9 CkBAIC00NjksNyArNDcwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0X29wcyBpOTE1X2dlbV9vYmplY3Rfc3RvbGVuX29wcyA9IHsKIAogc3RhdGljIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICoKIF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJICAgICAgIHN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVu KQorCQkJICAgICAgIHN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICpzdG9sZW4pCiB7CiAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAlpbnQgcmV0ID0gMDsKQEAgLTQ3OCwxMSArNDc5 LDEyIEBAIF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCWlmIChvYmogPT0gTlVMTCkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKLQlk cm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBzdG9sZW4tPnNpemUp OworCWRybV9nZW1fcHJpdmF0ZV9vYmplY3RfaW5pdChkZXYsICZvYmotPmJhc2UsIHN0b2xlbi0+ YmFzZS5zaXplKTsKIAlpOTE1X2dlbV9vYmplY3RfaW5pdChvYmosICZpOTE1X2dlbV9vYmplY3Rf c3RvbGVuX29wcyk7CiAKIAlvYmotPnBhZ2VzID0gaTkxNV9wYWdlc19jcmVhdGVfZm9yX3N0b2xl bihkZXYsCi0JCQkJCQkgIHN0b2xlbi0+c3RhcnQsIHN0b2xlbi0+c2l6ZSk7CisJCQkJCQkgIHN0 b2xlbi0+YmFzZS5zdGFydCwKKwkJCQkJCSAgc3RvbGVuLT5iYXNlLnNpemUpOwogCWlmIChJU19F UlIob2JqLT5wYWdlcykpIHsKIAkJcmV0ID0gUFRSX0VSUihvYmotPnBhZ2VzKTsKIAkJZ290byBj bGVhbnVwOwpAQCAtNDkxLDYgKzQ5Myw5IEBAIF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xl bihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2Jq KTsKIAlvYmotPnN0b2xlbiA9IHN0b2xlbjsKIAorCXN0b2xlbi0+b2JqID0gb2JqOworCUlOSVRf TElTVF9IRUFEKCZzdG9sZW4tPm1tX2xpbmspOworCiAJb2JqLT5iYXNlLnJlYWRfZG9tYWlucyA9 IEk5MTVfR0VNX0RPTUFJTl9DUFUgfCBJOTE1X0dFTV9ET01BSU5fR1RUOwogCW9iai0+Y2FjaGVf bGV2ZWwgPSBIQVNfTExDKGRldikgPyBJOTE1X0NBQ0hFX0xMQyA6IEk5MTVfQ0FDSEVfTk9ORTsK IApAQCAtNTAxLDE4ICs1MDYsMTAyIEBAIGNsZWFudXA6CiAJcmV0dXJuIEVSUl9QVFIocmV0KTsK IH0KIAotc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgotaTkxNV9nZW1fb2JqZWN0X2NyZWF0 ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTY0IHNpemUpCitzdGF0aWMgYm9vbAor bWFya19mcmVlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBsaXN0X2hl YWQgKnVud2luZCkKK3sKKwlCVUdfT04ob2JqLT5zdG9sZW4gPT0gTlVMTCk7CisKKwlpZiAob2Jq LT5tYWR2ICE9IEk5MTVfTUFEVl9ET05UTkVFRCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKG9i ai0+cGluX2Rpc3BsYXkpCisJCXJldHVybiBmYWxzZTsKKworCWxpc3RfYWRkKCZvYmotPnRtcF9s aW5rLCB1bndpbmQpOworCXJldHVybiBkcm1fbW1fc2Nhbl9hZGRfYmxvY2soJm9iai0+c3RvbGVu LT5iYXNlKTsKK30KKworc3RhdGljIGludAorc3RvbGVuX2V2aWN0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgdTY0IHNpemUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOwotCXN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVuOwotCWludCByZXQ7CisJc3RydWN0 IGxpc3RfaGVhZCB1bndpbmQsIGV2aWN0OworCXN0cnVjdCBpOTE1X3N0b2xlbl9ub2RlICppdGVy OworCWludCByZXQsIGFjdGl2ZTsKIAotCWlmICghZHJtX21tX2luaXRpYWxpemVkKCZkZXZfcHJp di0+bW0uc3RvbGVuKSkKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7CisJZHJtX21tX2luaXRf c2NhbigmZGV2X3ByaXYtPm1tLnN0b2xlbiwgc2l6ZSwgMCwgMCk7CisJSU5JVF9MSVNUX0hFQUQo JnVud2luZCk7CisKKwkvKiBSZXRpcmUgYWxsIHJlcXVlc3RzIGJlZm9yZSBjcmVhdGluZyB0aGUg ZXZpY3QgbGlzdCAqLworCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdi0+ZGV2KTsK KworCWZvciAoYWN0aXZlID0gMDsgYWN0aXZlIDw9IDE7IGFjdGl2ZSsrKSB7CisJCWxpc3RfZm9y X2VhY2hfZW50cnkoaXRlciwgJmRldl9wcml2LT5tbS5zdG9sZW5fbGlzdCwgbW1fbGluaykgewor CQkJaWYgKEk5MTVfQk9fSVNfQUNUSVZFKGl0ZXItPm9iaikgIT0gYWN0aXZlKQorCQkJCWNvbnRp 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 CiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCkBAIC01MjAsMTcgKzYwOSw1OSBAQCBpOTE1 X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1NjQgc2l6 ZSkKIAlpZiAoIXN0b2xlbikKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKLQlyZXQgPSBp OTE1X2dlbV9zdG9sZW5faW5zZXJ0X25vZGUoZGV2X3ByaXYsIHN0b2xlbiwgc2l6ZSwgNDA5Nik7 CisJcmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5i YXNlLCBzaXplLCA0MDk2KTsKKwlpZiAocmV0ID09IDApCisJCWdvdG8gb3V0OworCisJLyogTm8g bW9yZSBzdG9sZW4gbWVtb3J5IGF2YWlsYWJsZSwgb3IgdG9vIGZyYWdtZW50ZWQuCisJICogVHJ5 IGV2aWN0aW5nIHB1cmdlYWJsZSBvYmplY3RzIGFuZCBzZWFyY2ggYWdhaW4uCisJICovCisJcmV0 ID0gc3RvbGVuX2V2aWN0KGRldl9wcml2LCBzaXplKTsKKworCWlmIChyZXQgPT0gMCkKKwkJcmV0 ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2LCAmc3RvbGVuLT5iYXNlLAor CQkJCQkJICBzaXplLCAwKTsKK291dDoKIAlpZiAocmV0KSB7CiAJCWtmcmVlKHN0b2xlbik7CiAJ CXJldHVybiBFUlJfUFRSKHJldCk7CiAJfQogCisJcmV0dXJuIHN0b2xlbjsKK30KKworLyoqCisg KiBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbigpIC0gY3JlYXRlcyBvYmplY3QgdXNpbmcg dGhlIHN0b2xlbiBtZW1vcnkKKyAqIEBkZXY6CWRybSBkZXZpY2UKKyAqIEBzaXplOglzaXplIG9m IHRoZSBvYmplY3QgcmVxdWVzdGVkCisgKgorICogaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9s ZW4oKSB0cmllcyB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBvYmplY3QKKyAqIGZyb20gdGhl IHN0b2xlbiBtZW1vcnkgcmVnaW9uLiBJZiBub3QgZW5vdWdoIG1lbW9yeSBpcyBmb3VuZCwgaXQg dHJpZXMKKyAqIGV2aWN0aW5nIHB1cmdlYWJsZSBvYmplY3RzIGFuZCBzZWFyY2hpbmcgYWdhaW4u CisgKgorICogUmV0dXJuczogT2JqZWN0IHBvaW50ZXIgLSBzdWNjZXNzIGFuZCBlcnJvciBwb2lu dGVyIC0gZmFpbHVyZQorICovCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCitpOTE1X2dl bV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1NjQgc2l6ZSkK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl OworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGk5MTVfc3RvbGVu X25vZGUgKnN0b2xlbjsKKworCWlmICghZHJtX21tX2luaXRpYWxpemVkKCZkZXZfcHJpdi0+bW0u c3RvbGVuKSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7CisKKwlEUk1fREVCVUdfS01TKCJj cmVhdGluZyBzdG9sZW4gb2JqZWN0OiBzaXplPSVsbHhcbiIsIHNpemUpOworCisJc3RvbGVuID0g c3RvbGVuX2FsbG9jKGRldl9wcml2LCBzaXplKTsKKwlpZiAoSVNfRVJSKHN0b2xlbikpCisJCXJl dHVybiBFUlJfUFRSKC1FTk9NRU0pOworCiAJb2JqID0gX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVf c3RvbGVuKGRldiwgc3RvbGVuKTsKIAlpZiAoIUlTX0VSUihvYmopKQogCQlyZXR1cm4gb2JqOwog Ci0JaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCBzdG9sZW4pOworCWk5MTVf Z2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgJnN0b2xlbi0+YmFzZSk7CiAJa2ZyZWUo c3RvbGVuKTsKIAlyZXR1cm4gb2JqOwogfQpAQCAtNTQ0LDcgKzY3NSw3IEBAIGk5MTVfZ2VtX29i amVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl OwogCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKmdndHQgPSAmZGV2X3ByaXYtPmd0dC5iYXNl OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IGRybV9tbV9ub2Rl ICpzdG9sZW47CisJc3RydWN0IGk5MTVfc3RvbGVuX25vZGUgKnN0b2xlbjsKIAlzdHJ1Y3QgaTkx NV92bWEgKnZtYTsKIAlpbnQgcmV0OwogCkBAIC01NjMsMTAgKzY5NCwxMCBAQCBpOTE1X2dlbV9v YmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiAJaWYgKCFzdG9sZW4pCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCi0Jc3RvbGVu LT5zdGFydCA9IHN0b2xlbl9vZmZzZXQ7Ci0Jc3RvbGVuLT5zaXplID0gc2l6ZTsKKwlzdG9sZW4t PmJhc2Uuc3RhcnQgPSBzdG9sZW5fb2Zmc2V0OworCXN0b2xlbi0+YmFzZS5zaXplID0gc2l6ZTsK IAltdXRleF9sb2NrKCZkZXZfcHJpdi0+bW0uc3RvbGVuX2xvY2spOwotCXJldCA9IGRybV9tbV9y ZXNlcnZlX25vZGUoJmRldl9wcml2LT5tbS5zdG9sZW4sIHN0b2xlbik7CisJcmV0ID0gZHJtX21t X3Jlc2VydmVfbm9kZSgmZGV2X3ByaXYtPm1tLnN0b2xlbiwgJnN0b2xlbi0+YmFzZSk7CiAJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+bW0uc3RvbGVuX2xvY2spOwogCWlmIChyZXQpIHsKIAkJRFJN X0RFQlVHX0tNUygiZmFpbGVkIHRvIGFsbG9jYXRlIHN0b2xlbiBzcGFjZVxuIik7CkBAIC01Nzcs NyArNzA4LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRl ZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCW9iaiA9IF9pOTE1X2dlbV9vYmplY3RfY3JlYXRl X3N0b2xlbihkZXYsIHN0b2xlbik7CiAJaWYgKElTX0VSUihvYmopKSB7CiAJCURSTV9ERUJVR19L TVMoImZhaWxlZCB0byBhbGxvY2F0ZSBzdG9sZW4gb2JqZWN0XG4iKTsKLQkJaTkxNV9nZW1fc3Rv bGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCBzdG9sZW4pOworCQlpOTE1X2dlbV9zdG9sZW5fcmVt b3ZlX25vZGUoZGV2X3ByaXYsICZzdG9sZW4tPmJhc2UpOwogCQlrZnJlZShzdG9sZW4pOwogCQly ZXR1cm4gb2JqOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDBkMzVkN2YuLjEyYmYx NjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtNTMxOCw3ICs1MzE4LDcgQEAgc3RhdGlj IHZvaWQgdmFsbGV5dmlld19jaGVja19wY3R4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAl1bnNpZ25lZCBsb25nIHBjdHhfYWRkciA9IEk5MTVfUkVBRChWTFZfUENCUikgJiB+ NDA5NTsKIAogCVdBUk5fT04ocGN0eF9hZGRyICE9IGRldl9wcml2LT5tbS5zdG9sZW5fYmFzZSAr Ci0JCQkgICAgIGRldl9wcml2LT52bHZfcGN0eC0+c3RvbGVuLT5zdGFydCk7CisJCQkgICAgIGRl dl9wcml2LT52bHZfcGN0eC0+c3RvbGVuLT5iYXNlLnN0YXJ0KTsKIH0KIAogCkBAIC01MzkyLDcg KzUzOTIsNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X3NldHVwX3BjdHgoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAkJcmV0dXJuOwogCX0KIAotCXBjdHhfcGFkZHIgPSBkZXZfcHJpdi0+bW0u c3RvbGVuX2Jhc2UgKyBwY3R4LT5zdG9sZW4tPnN0YXJ0OworCXBjdHhfcGFkZHIgPSBkZXZfcHJp di0+bW0uc3RvbGVuX2Jhc2UgKyBwY3R4LT5zdG9sZW4tPmJhc2Uuc3RhcnQ7CiAJSTkxNV9XUklU RShWTFZfUENCUiwgcGN0eF9wYWRkcik7CiAKIG91dDoKLS0gCjEuOS4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=