From mboxrd@z Thu Jan 1 00:00:00 1970 From: akash.goel@intel.com Subject: [PATCH v2 2/2] drm/i915: Make pages of GFX allocations movable Date: Thu, 24 Mar 2016 23:52:59 +0530 Message-ID: <1458843779-27904-1-git-send-email-akash.goel@intel.com> References: <20160324081308.GA26929@nuc-i3427.alporthouse.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 D90B66E077 for ; Thu, 24 Mar 2016 18:10:20 +0000 (UTC) In-Reply-To: <20160324081308.GA26929@nuc-i3427.alporthouse.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: linux-mm@kvack.org, Sourab Gupta , Hugh Dickins , Akash Goel List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CgpPbiBhIGxvbmcg cnVuIG9mIG1vcmUgdGhhbiAyLTMgZGF5cywgcGh5c2ljYWwgbWVtb3J5IHRlbmRzIHRvIGdldCBm cmFnbWVudGVkCnNldmVyZWx5LCB3aGljaCBjb25zaWRlcmFibHkgc2xvd3MgZG93biB0aGUgc3lz dGVtLiBJbiBzdWNoIGEgc2NlbmFyaW8sClNocmlua2VyIGlzIGFsc28gdW5hYmxlIHRvIGhlbHAg YXMgbGFjayBvZiBtZW1vcnkgaXMgbm90IHRoZSBhY3R1YWwgcHJvYmxlbSwKc2luY2UgaXQgaGFz IGJlZW4gb2JzZXJ2ZWQgdGhhdCB0aGVyZSBhcmUgZW5vdWdoIGZyZWUgcGFnZXMgb2YgMCBvcmRl ci4KClRvIGFkZHJlc3MgdGhlIGlzc3VlIG9mIGV4dGVybmFsIGZyYWdlbWVudGF0aW9uLCBrZXJu ZWwgZG9lcyBhIGNvbXBhY3Rpb24KKHdoaWNoIGludm9sdmVzIG1pZ3JhdGlvbiBvZiBwYWdlcykg YnV0IGl0J3MgZWZmaWNhY3kgZGVwZW5kcyB1cG9uIGhvdyBtYW55CnBhZ2VzIGFyZSBtYXJrZWQg YXMgTU9WQUJMRSwgYXMgb25seSB0aG9zZSBwYWdlcyBjYW4gYmUgbWlncmF0ZWQuCgpDdXJyZW50 bHkgdGhlIGJhY2tpbmcgcGFnZXMgZm9yIEdGWCBidWZmZXJzIGFyZSBhbGxvY2F0ZWQgZnJvbSBz aG1lbWZzCndpdGggR0ZQX1JFQ0xBSU1BQkxFIGZsYWcsIGluIHVuaXRzIG9mIDRLQiBwYWdlcy4K SW4gdGhlIGNhc2Ugb2YgbGltaXRlZCBTd2FwIHNwYWNlLCBpdCBtYXkgbm90IGJlIHBvc3NpYmxl IGFsd2F5cyB0byByZWNsYWltCm9yIHN3YXAtb3V0IHBhZ2VzIG9mIGFsbCB0aGUgaW5hY3RpdmUg b2JqZWN0cywgdG8gbWFrZSB3YXkgZm9yIGZyZWUgc3BhY2UKYWxsb3dpbmcgZm9ybWF0aW9uIG9m IGhpZ2hlciBvcmRlciBncm91cHMgb2YgcGh5c2ljYWxseS1jb250aWd1b3VzIHBhZ2VzCm9uIGNv bXBhY3Rpb24uCgpKdXN0IG1hcmtpbmcgdGhlIEdGWCBwYWdlcyBhcyBNT1ZBQkxFIHdpbGwgbm90 IHN1ZmZpY2UsIGFzIGk5MTUgRHJpdmVyCmhhcyB0byBwaW4gdGhlIHBhZ2VzIGlmIHRoZXkgYXJl IGluIHVzZSBieSBHUFUsIHdoaWNoIHdpbGwgcHJldmVudCB0aGVpcgptaWdyYXRpb24uIFNvIHRo ZSBtaWdyYXRlcGFnZSBjYWxsYmFjayBpbiBzaG1lbSBpcyBhbHNvIGhvb2tlZCB1cCB0byBnZXQg YQpub3RpZmljYXRpb24gd2hlbiBrZXJuZWwgaW5pdGlhdGVzIHRoZSBwYWdlIG1pZ3JhdGlvbi4g T24gdGhlIG5vdGlmaWNhdGlvbiwKaTkxNSBEcml2ZXIgYXBwcm9wcmlhdGVseSB1bnBpbiB0aGUg cGFnZXMuCldpdGggdGhpcyBEcml2ZXIgY2FuIGVmZmVjdGl2ZWx5IG1hcmsgdGhlIEdGWCBwYWdl cyBhcyBNT1ZBQkxFIGFuZCBoZW5jZQptaXRpZ2F0ZSB0aGUgZnJhZ21lbnRhdGlvbiBwcm9ibGVt LgoKdjI6CiAtIFJlbmFtZSB0aGUgbWlncmF0aW9uIHJvdXRpbmUgdG8gZ2VtX3Nocmlua19taWdy YXRlcGFnZSwgbW92ZSBpdCB0byB0aGUKICAgc2hyaW5rZXIgZmlsZSwgYW5kIHVzZSB0aGUgZXhp c3RpbmcgY29uc3RydWN0cyAoQ2hyaXMpCiAtIFRvIGNsZWFudXAsIGFkZCBhIG5ldyBoZWxwZXIg ZnVuY3Rpb24gdG8gZW5jYXBzdWxhdGUgYWxsIHBhZ2UgbWlncmF0aW9uCiAgIHNraXAgY29uZGl0 aW9ucyAoQ2hyaXMpCiAtIEFkZCBhIG5ldyBsb2NhbCBoZWxwZXIgZnVuY3Rpb24gaW4gc2hyaW5r ZXIgZmlsZSwgZm9yIGRyb3BwaW5nIHRoZQogICBiYWNraW5nIHBhZ2VzLCBhbmQgY2FsbCB0aGUg c2FtZSBmcm9tIGdlbV9zaHJpbmsoKSBhbHNvIChDaHJpcykKCkNjOiBIdWdoIERpY2tpbnMgPGh1 Z2hkQGdvb2dsZS5jb20+CkNjOiBsaW51eC1tbUBrdmFjay5vcmcKU2lnbmVkLW9mZi1ieTogU291 cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBa2FzaCBH b2VsIDxha2FzaC5nb2VsQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oICAgICAgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMg ICAgICAgICAgfCAgMTYgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtl ci5jIHwgMTczICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIDMgZmlsZXMgY2hhbmdl ZCwgMTc3IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCmluZGV4IGYzMzBhNTMuLjI4ZTUwYzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAt NTIsNiArNTIsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2ludGVsLWlvbW11Lmg+CiAjaW5jbHVkZSA8 bGludXgva3JlZi5oPgogI2luY2x1ZGUgPGxpbnV4L3BtX3Fvcy5oPgorI2luY2x1ZGUgPGxpbnV4 L3NobWVtX2ZzLmg+CiAjaW5jbHVkZSAiaW50ZWxfZ3VjLmgiCiAjaW5jbHVkZSAiaW50ZWxfZHBs bF9tZ3IuaCIKIApAQCAtMTk2Niw2ICsxOTY3LDggQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg ewogCiAJc3RydWN0IGludGVsX2VuY29kZXIgKmRpZ19wb3J0X21hcFtJOTE1X01BWF9QT1JUU107 CiAKKwlzdHJ1Y3Qgc2htZW1fZGV2X2luZm8gIG1pZ3JhdGVfaW5mbzsKKwogCS8qCiAJICogTk9U RTogVGhpcyBpcyB0aGUgZHJpMS91bXMgZHVuZ2VvbiwgZG9uJ3QgYWRkIHN0dWZmIGhlcmUuIFlv dXIgcGF0Y2gKIAkgKiB3aWxsIGJlIHJlamVjdGVkLiBJbnN0ZWFkIGxvb2sgZm9yIGEgYmV0dGVy IHBsYWNlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggODU4OGM4My4uNTlhYjU4YSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC0yMjA0LDYgKzIyMDQsNyBAQCBpOTE1X2dlbV9vYmpl Y3RfcHV0X3BhZ2VzX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCQlpZiAo b2JqLT5tYWR2ID09IEk5MTVfTUFEVl9XSUxMTkVFRCkKIAkJCW1hcmtfcGFnZV9hY2Nlc3NlZChw YWdlKTsKIAorCQlzZXRfcGFnZV9wcml2YXRlKHBhZ2UsIDApOwogCQlwYWdlX2NhY2hlX3JlbGVh c2UocGFnZSk7CiAJfQogCW9iai0+ZGlydHkgPSAwOwpAQCAtMjMxOCw2ICsyMzE5LDcgQEAgaTkx NV9nZW1fb2JqZWN0X2dldF9wYWdlc19ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKIAkJCXNnLT5sZW5ndGggKz0gUEFHRV9TSVpFOwogCQl9CiAJCWxhc3RfcGZuID0gcGFnZV90 b19wZm4ocGFnZSk7CisJCXNldF9wYWdlX3ByaXZhdGUocGFnZSwgKHVuc2lnbmVkIGxvbmcpb2Jq KTsKIAogCQkvKiBDaGVjayB0aGF0IHRoZSBpOTY1Zy9nbSB3b3JrYXJvdW5kIHdvcmtzLiAqLwog CQlXQVJOX09OKChnZnAgJiBfX0dGUF9ETUEzMikgJiYgKGxhc3RfcGZuID49IDB4MDAxMDAwMDBV TCkpOwpAQCAtMjM0Myw4ICsyMzQ1LDExIEBAIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfZ3R0 KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAKIGVycl9wYWdlczoKIAlzZ19tYXJr X2VuZChzZyk7Ci0JZm9yX2VhY2hfc2dfcGFnZShzdC0+c2dsLCAmc2dfaXRlciwgc3QtPm5lbnRz LCAwKQotCQlwYWdlX2NhY2hlX3JlbGVhc2Uoc2dfcGFnZV9pdGVyX3BhZ2UoJnNnX2l0ZXIpKTsK Kwlmb3JfZWFjaF9zZ19wYWdlKHN0LT5zZ2wsICZzZ19pdGVyLCBzdC0+bmVudHMsIDApIHsKKwkJ cGFnZSA9IHNnX3BhZ2VfaXRlcl9wYWdlKCZzZ19pdGVyKTsKKwkJc2V0X3BhZ2VfcHJpdmF0ZShw YWdlLCAwKTsKKwkJcGFnZV9jYWNoZV9yZWxlYXNlKHBhZ2UpOworCX0KIAlzZ19mcmVlX3RhYmxl KHN0KTsKIAlrZnJlZShzdCk7CiAKQEAgLTQ0NjgsNiArNDQ3Myw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgaTkxNV9nZW1fb2JqZWN0X29wcyA9IHsKIHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICppOTE1X2dlbV9hbGxvY19vYmplY3Qoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAkJCQkJCSAgc2l6ZV90IHNpemUpCiB7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqOwogCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOwogCWdmcF90 IG1hc2s7CkBAIC00NDgxLDcgKzQ0ODcsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq aTkxNV9nZW1fYWxsb2Nfb2JqZWN0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXJldHVybiBO VUxMOwogCX0KIAotCW1hc2sgPSBHRlBfSElHSFVTRVIgfCBfX0dGUF9SRUNMQUlNQUJMRTsKKwlt YXNrID0gR0ZQX0hJR0hVU0VSX01PVkFCTEU7CiAJaWYgKElTX0NSRVNUTElORShkZXYpIHx8IElT X0JST0FEV0FURVIoZGV2KSkgewogCQkvKiA5NjVnbSBjYW5ub3QgcmVsb2NhdGUgb2JqZWN0cyBh Ym92ZSA0R2lCLiAqLwogCQltYXNrICY9IH5fX0dGUF9ISUdITUVNOwpAQCAtNDQ5MSw2ICs0NDk3 LDEwIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICppOTE1X2dlbV9hbGxvY19vYmplY3Qo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAltYXBwaW5nID0gZmlsZV9pbm9kZShvYmotPmJhc2Uu ZmlscCktPmlfbWFwcGluZzsKIAltYXBwaW5nX3NldF9nZnBfbWFzayhtYXBwaW5nLCBtYXNrKTsK IAorI2lmZGVmIENPTkZJR19NSUdSQVRJT04KKwlzaG1lbV9zZXRfZGV2aWNlX29wcyhtYXBwaW5n LCAmZGV2X3ByaXYtPm1pZ3JhdGVfaW5mbyk7CisjZW5kaWYKKwogCWk5MTVfZ2VtX29iamVjdF9p bml0KG9iaiwgJmk5MTVfZ2VtX29iamVjdF9vcHMpOwogCiAJb2JqLT5iYXNlLndyaXRlX2RvbWFp biA9IEk5MTVfR0VNX0RPTUFJTl9DUFU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9zaHJpbmtlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hy aW5rZXIuYwppbmRleCBkM2M0NzNmLi5mNmMyYzIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3Nocmlua2VyLmMKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgPGxpbnV4L29v bS5oPgogI2luY2x1ZGUgPGxpbnV4L3NobWVtX2ZzLmg+CisjaW5jbHVkZSA8bGludXgvbWlncmF0 ZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9zd2FwLmg+CiAj aW5jbHVkZSA8bGludXgvcGNpLmg+CkBAIC04Nyw2ICs4OCw3MSBAQCBzdGF0aWMgYm9vbCBjYW5f cmVsZWFzZV9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXJldHVybiBz d2FwX2F2YWlsYWJsZSgpIHx8IG9iai0+bWFkdiA9PSBJOTE1X01BRFZfRE9OVE5FRUQ7CiB9CiAK K3N0YXRpYyBib29sIGNhbl9taWdyYXRlX3BhZ2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKK3sKKwkvKiBBdm9pZCB0aGUgbWlncmF0aW9uIG9mIHBhZ2UgaWYgYmVpbmcgYWN0aXZl bHkgdXNlZCBieSBHUFUgKi8KKwlpZiAob2JqLT5hY3RpdmUpCisJCXJldHVybiBmYWxzZTsKKwor CS8qIFNraXAgdGhlIG1pZ3JhdGlvbiBmb3IgcHVyZ2VhYmxlIG9iamVjdHMgb3RoZXJ3aXNlIHRo ZXJlCisJICogd2lsbCBiZSBhIGRlYWRsb2NrIHdoZW4gc2htZW0gd2lsbCB0cnkgdG8gbG9jayB0 aGUgcGFnZSBmb3IKKwkgKiB0cnVuY2F0aW9uLCB3aGljaCBpcyBhbHJlYWR5IGxvY2tlZCBieSB0 aGUgY2FsbGVyIGJlZm9yZQorCSAqIG1pZ3JhdGlvbi4KKwkgKi8KKwlpZiAob2JqLT5tYWR2ID09 IEk5MTVfTUFEVl9ET05UTkVFRCkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogU2tpcCB0aGUgbWln cmF0aW9uIGZvciBhIHBpbm5lZCBvYmplY3QgKi8KKwlpZiAob2JqLT5wYWdlc19waW5fY291bnQg IT0gbnVtX3ZtYV9ib3VuZChvYmopKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsK K30KKworc3RhdGljIGludAordW5zYWZlX2Ryb3BfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKK3sKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKm5leHQ7CisJaW50IHJldDsK KworCWRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZSgmb2JqLT5iYXNlKTsKKwlsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUodm1hLCBuZXh0LCAmb2JqLT52bWFfbGlzdCwgb2JqX2xpbmspCisJCWlmIChp OTE1X3ZtYV91bmJpbmQodm1hKSkKKwkJCWJyZWFrOworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0 X3B1dF9wYWdlcyhvYmopOworCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2Up OworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAorZG9fbWlncmF0ZV9wYWdlKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7CisJaW50IHJldCA9IDA7CisK KwlpZiAoIWNhbl9taWdyYXRlX3BhZ2Uob2JqKSkKKwkJcmV0dXJuIC1FQlVTWTsKKworCS8qIEhX IGFjY2VzcyB3b3VsZCBiZSByZXF1aXJlZCBmb3IgYSBib3VuZCBvYmplY3QgZm9yIHdoaWNoCisJ ICogZGV2aWNlIGhhcyB0byBiZSBrZXB0IHJ1bnRpbWUgYWN0aXZlLiBCdXQgYSBkZWFkbG9jayBz Y2VuYXJpbworCSAqIGNhbiBhcmlzZSBpZiB0aGUgYXR0ZW1wdCBpcyBtYWRlIHRvIHJlc3VtZSB0 aGUgZGV2aWNlLCB3aGVuCisJICogZWl0aGVyIGEgc3VzcGVuZCBvciBhIHJlc3VtZSBvcGVyYXRp b24gaXMgYWxyZWFkeSBoYXBwZW5pbmcKKwkgKiBjb25jdXJyZW50bHkgZnJvbSBzb21lIG90aGVy IHBhdGggYW5kIHRoYXQgb25seSBhY3R1YWxseQorCSAqIHRyaWdnZXJlZCB0aGUgY29tcGFjdGlv bi4gU28gb25seSB1bmJpbmQgaWYgdGhlIGRldmljZSBpcworCSAqIGN1cnJlbnRseSBydW50aW1l IGFjdGl2ZS4KKwkgKi8KKwlpZiAoIWludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShkZXZf cHJpdikpCisJCXJldHVybiAtRUJVU1k7CisKKwlpZiAoIXVuc2FmZV9kcm9wX3BhZ2VzKG9iaikp CisJCXJldCA9IC1FQlVTWTsKKworCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwly ZXR1cm4gcmV0OworfQorCiAvKioKICAqIGk5MTVfZ2VtX3NocmluayAtIFNocmluayBidWZmZXIg b2JqZWN0IGNhY2hlcwogICogQGRldl9wcml2OiBpOTE1IGRldmljZQpAQCAtMTU2LDcgKzIyMiw2 IEBAIGk5MTVfZ2VtX3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CUlOSVRfTElTVF9IRUFEKCZzdGlsbF9pbl9saXN0KTsKIAkJd2hpbGUgKGNvdW50IDwgdGFyZ2V0 ICYmICFsaXN0X2VtcHR5KHBoYXNlLT5saXN0KSkgewogCQkJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iajsKLQkJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hLCAqdjsKIAogCQkJb2JqID0gbGlz dF9maXJzdF9lbnRyeShwaGFzZS0+bGlzdCwKIAkJCQkJICAgICAgIHR5cGVvZigqb2JqKSwgZ2xv YmFsX2xpc3QpOwpAQCAtMTcyLDE4ICsyMzcsOCBAQCBpOTE1X2dlbV9zaHJpbmsoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJaWYgKCFjYW5fcmVsZWFzZV9wYWdlcyhvYmop KQogCQkJCWNvbnRpbnVlOwogCi0JCQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2UoJm9iai0+YmFz ZSk7Ci0KLQkJCS8qIEZvciB0aGUgdW5ib3VuZCBwaGFzZSwgdGhpcyBzaG91bGQgYmUgYSBuby1v cCEgKi8KLQkJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh2bWEsIHYsCi0JCQkJCQkgJm9iai0+ dm1hX2xpc3QsIG9ial9saW5rKQotCQkJCWlmIChpOTE1X3ZtYV91bmJpbmQodm1hKSkKLQkJCQkJ YnJlYWs7Ci0KLQkJCWlmIChpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaikgPT0gMCkKKwkJ CWlmICh1bnNhZmVfZHJvcF9wYWdlcyhvYmopID09IDApCiAJCQkJY291bnQgKz0gb2JqLT5iYXNl LnNpemUgPj4gUEFHRV9TSElGVDsKLQotCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9i ai0+YmFzZSk7CiAJCX0KIAkJbGlzdF9zcGxpY2UoJnN0aWxsX2luX2xpc3QsIHBoYXNlLT5saXN0 KTsKIAl9CkBAIC0zNTYsNiArNDExLDk1IEBAIGk5MTVfZ2VtX3Nocmlua2VyX29vbShzdHJ1Y3Qg bm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpCiAJcmV0 dXJuIE5PVElGWV9ET05FOwogfQogCisjaWZkZWYgQ09ORklHX01JR1JBVElPTgorc3RhdGljIGlu dCBpOTE1X2dlbV9zaHJpbmtfbWlncmF0ZXBhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBp bmcsCisJCQkgICAgc3RydWN0IHBhZ2UgKm5ld3BhZ2UsIHN0cnVjdCBwYWdlICpwYWdlLAorCQkJ ICAgIGVudW0gbWlncmF0ZV9tb2RlIG1vZGUsIHZvaWQgKmRldl9wcml2X2RhdGEpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2X3ByaXZfZGF0YTsKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqOworCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoMTAp ICsgMTsKKwlib29sIHVubG9jazsKKwlpbnQgcmV0ID0gMDsKKworCVdBUk4oKHBhZ2VfY291bnQo bmV3cGFnZSkgIT0gMSksICJVbmV4cGVjdGVkIHJlZiBjb3VudCBmb3IgbmV3cGFnZVxuIik7CisK KwkvKgorCSAqIENsZWFyIHRoZSBwcml2YXRlIGZpZWxkIG9mIHRoZSBuZXcgdGFyZ2V0IHBhZ2Ug YXMgaXQgY291bGQgaGF2ZSBhCisJICogc3RhbGUgdmFsdWUgaW4gdGhlIHByaXZhdGUgZmllbGQu IE90aGVyd2lzZSBsYXRlciBvbiBpZiB0aGlzIHBhZ2UKKwkgKiBpdHNlbGYgZ2V0cyBtaWdyYXRl ZCwgd2l0aG91dCBnZXR0aW5nIHJlZmVycmVkIGJ5IHRoZSBEcml2ZXIKKwkgKiBpbiBiZXR3ZWVu LCB0aGUgc3RhbGUgdmFsdWUgd291bGQgY2F1c2UgdGhlIGk5MTVfbWlncmF0ZXBhZ2UKKwkgKiBm dW5jdGlvbiB0byBnbyBmb3IgYSB0b3NzIGFzIG9iamVjdCBwb2ludGVyIGlzIGRlcml2ZWQgZnJv bSBpdC4KKwkgKiBUaGlzIHNob3VsZCBiZSBzYWZlIHNpbmNlIGF0IHRoZSB0aW1lIG9mIG1pZ3Jh dGlvbiwgcHJpdmF0ZSBmaWVsZAorCSAqIG9mIHRoZSBuZXcgcGFnZSAod2hpY2ggaXMgYWN0dWFs bHkgYW4gaW5kZXBlbmRlbnQgZnJlZSA0S0IgcGFnZSBub3cpCisJICogc2hvdWxkIGJlIGxpa2Ug YSBkb24ndCBjYXJlIGZvciB0aGUga2VybmVsLgorCSAqLworCXNldF9wYWdlX3ByaXZhdGUobmV3 cGFnZSwgMCk7CisKKwlpZiAoIXBhZ2VfcHJpdmF0ZShwYWdlKSkKKwkJZ290byBtaWdyYXRlOwor CisJLyoKKwkgKiBDaGVjayB0aGUgcGFnZSBjb3VudCwgaWYgRHJpdmVyIGFsc28gaGFzIGEgcmVm ZXJlbmNlIHRoZW4gaXQgc2hvdWxkCisJICogYmUgbW9yZSB0aGFuIDIsIGFzIHNobWVtIHdpbGwg aGF2ZSBvbmUgcmVmZXJlbmNlIGFuZCBvbmUgcmVmZXJlbmNlCisJICogd291bGQgaGF2ZSBiZWVu IHRha2VuIGJ5IHRoZSBtaWdyYXRpb24gcGF0aCBpdHNlbGYuIFNvIGlmIHJlZmVyZW5jZQorCSAq IGlzIDw9Miwgd2UgY2FuIGRpcmVjdGx5IGludm9rZSB0aGUgbWlncmF0aW9uIGZ1bmN0aW9uLgor CSAqLworCWlmIChwYWdlX2NvdW50KHBhZ2UpIDw9IDIpCisJCWdvdG8gbWlncmF0ZTsKKworCS8q CisJICogVXNlIHRyeWxvY2sgaGVyZSwgd2l0aCBhIHRpbWVvdXQsIGZvciBzdHJ1Y3RfbXV0ZXgg YXMKKwkgKiBvdGhlcndpc2UgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSBvZiBkZWFkbG9jayBkdWUg dG8gbG9jaworCSAqIGludmVyc2lvbi4gVGhpcyBwYXRoLCB3aGljaCB0cmllcyB0byBtaWdyYXRl IGEgcGFydGljdWxhcgorCSAqIHBhZ2UgYWZ0ZXIgbG9ja2luZyB0aGF0IHBhZ2UsIGNhbiByYWNl IHdpdGggYSBwYXRoIHdoaWNoCisJICogdHJ1bmNhdGUvcHVyZ2UgcGFnZXMgb2YgdGhlIGNvcnJl c3BvbmRpbmcgb2JqZWN0IChhZnRlcgorCSAqIGFjcXVpcmluZyBzdHJ1Y3RfbXV0ZXgpLiBTaW5j ZSBwYWdlIHRydW5jYXRpb24gd2lsbCBhbHNvCisJICogdHJ5IHRvIGxvY2sgdGhlIHBhZ2UsIGEg c2NlbmFyaW8gb2YgZGVhZGxvY2sgY2FuIGFyaXNlLgorCSAqLworCXdoaWxlICghaTkxNV9nZW1f c2hyaW5rZXJfbG9jayhkZXYsICZ1bmxvY2spICYmIC0tdGltZW91dCkKKwkJc2NoZWR1bGVfdGlt ZW91dF9raWxsYWJsZSgxKTsKKwlpZiAodGltZW91dCA9PSAwKSB7CisJCURSTV9ERUJVR19EUklW RVIoIlVuYWJsZSB0byBhY3F1aXJlIGRldmljZSBtdXRleC5cbiIpOworCQlyZXR1cm4gLUVCVVNZ OworCX0KKworCW9iaiA9IChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqKXBhZ2VfcHJpdmF0 ZShwYWdlKTsKKworCWlmICghUGFnZVN3YXBDYWNoZShwYWdlKSAmJiBvYmopIHsKKwkJcmV0ID0g ZG9fbWlncmF0ZV9wYWdlKG9iaik7CisJCUJVR19PTighcmV0ICYmIHBhZ2VfcHJpdmF0ZShwYWdl KSk7CisJfQorCisJaWYgKHVubG9jaykKKwkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7CisKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyoKKwkgKiBJZGVhbGx5IGhlcmUg d2UgZG9uJ3QgZXhwZWN0IHRoZSBwYWdlIGNvdW50IHRvIGJlID4gMiwgYXMgZHJpdmVyCisJICog d291bGQgaGF2ZSBkcm9wcGVkIGl0cyByZWZlcmVuY2UsIGJ1dCBvY2Nhc2lvbmFsbHkgaXQgaGFz IGJlZW4gc2VlbgorCSAqIGNvbWluZyBhcyAzICYgNC4gVGhpcyBsZWFkcyB0byBhIHNpdHVhdGlv biBvZiB1bmV4cGVjdGVkIHBhZ2UgY291bnQsCisJICogY2F1c2luZyBtaWdyYXRpb24gZmFpbHVy ZSwgd2l0aCAtRUdBSU4gZXJyb3IuIFRoaXMgdGhlbiBsZWFkcyB0bworCSAqIG11bHRpcGxlIGF0 dGVtcHRzIGJ5IHRoZSBrZXJuZWwgdG8gbWlncmF0ZSB0aGUgc2FtZSBzZXQgb2YgcGFnZXMuCisJ ICogQW5kIHNvbWV0aW1lcyB0aGUgcmVwZWF0ZWQgYXR0ZW1wdHMgcHJvdmVzIGRldHJpbWVudGFs IGZvciBzdGFiaWxpdHkuCisJICogQWxzbyBzaW5jZSB3ZSBkb24ndCBrbm93IHdobyBpcyB0aGUg b3RoZXIgb3duZXIsIGFuZCBmb3IgaG93IGxvbmcgaXRzCisJICogZ29ubmEga2VlcCB0aGUgcmVm ZXJlbmNlLCBpdHMgYmV0dGVyIHRvIHJldHVybiAtRUJVU1kuCisJICovCisJaWYgKHBhZ2VfY291 bnQocGFnZSkgPiAyKQorCQlyZXR1cm4gLUVCVVNZOworCittaWdyYXRlOgorCXJldCA9IG1pZ3Jh dGVfcGFnZShtYXBwaW5nLCBuZXdwYWdlLCBwYWdlLCBtb2RlKTsKKwlpZiAocmV0KQorCQlEUk1f REVCVUdfRFJJVkVSKCJwYWdlPSVwIG1pZ3JhdGlvbiByZXR1cm5lZCAlZFxuIiwgcGFnZSwgcmV0 KTsKKworCXJldHVybiByZXQ7Cit9CisjZW5kaWYKKwogLyoqCiAgKiBpOTE1X2dlbV9zaHJpbmtl cl9pbml0IC0gSW5pdGlhbGl6ZSBpOTE1IHNocmlua2VyCiAgKiBAZGV2X3ByaXY6IGk5MTUgZGV2 aWNlCkBAIC0zNzEsNiArNTE1LDExIEBAIHZvaWQgaTkxNV9nZW1fc2hyaW5rZXJfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlkZXZfcHJpdi0+bW0ub29tX25vdGlm aWVyLm5vdGlmaWVyX2NhbGwgPSBpOTE1X2dlbV9zaHJpbmtlcl9vb207CiAJV0FSTl9PTihyZWdp c3Rlcl9vb21fbm90aWZpZXIoJmRldl9wcml2LT5tbS5vb21fbm90aWZpZXIpKTsKKworI2lmZGVm IENPTkZJR19NSUdSQVRJT04KKwlkZXZfcHJpdi0+bWlncmF0ZV9pbmZvLmRldl9wcml2YXRlX2Rh dGEgPSBkZXZfcHJpdjsKKwlkZXZfcHJpdi0+bWlncmF0ZV9pbmZvLmRldl9taWdyYXRlcGFnZSA9 IGk5MTVfZ2VtX3Nocmlua19taWdyYXRlcGFnZTsKKyNlbmRpZgogfQogCiAvKioKLS0gCjEuOS4y CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK