From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 19/41] drm/i915: Move object backing storage manipulation to its own locking Date: Thu, 20 Oct 2016 16:04:01 +0100 Message-ID: <20161020150423.4560-20-chris@chris-wilson.co.uk> References: <20161020150423.4560-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x242.google.com (mail-lf0-x242.google.com [IPv6:2a00:1450:4010:c07::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 917B389229 for ; Thu, 20 Oct 2016 15:04:51 +0000 (UTC) Received: by mail-lf0-x242.google.com with SMTP id l131so459232lfl.0 for ; Thu, 20 Oct 2016 08:04:51 -0700 (PDT) In-Reply-To: <20161020150423.4560-1-chris@chris-wilson.co.uk> 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 QnJlYWsgdGhlIGFsbG9jYXRpb24gb2YgdGhlIGJhY2tpbmcgc3RvcmFnZSBhd2F5IGZyb20gc3Ry dWN0X211dGV4IGludG8KYSBwZXItb2JqZWN0IGxvY2suIFRoaXMgYWxsb3dzIHBhcmFsbGVsIHBh Z2UgYWxsb2NhdGlvbiwgcHJvdmlkZWQgd2UgY2FuCmRvIHNvIG91dHNpZGUgb2Ygc3RydWN0X211 dGV4IChpLmUuIHNldC1kb21haW4taW9jdGwsIHB3cml0ZSwgR1RUCmZhdWx0KSwgaS5lLiBiZWZv cmUgZXhlY2J1ZiEgVGhlIGluY3JlYXNlZCBjb3N0IG9mIHRoZSBhdG9taWMgY291bnRlcnMKYXJl IGhpZGRlbiBiZWhpbmQgaTkxNV92bWFfcGluKCkgZm9yIHRoZSB0eXBpY2FsIGNhc2Ugb2YgZXhl Y2J1ZiwgaS5lLgphcyB0aGUgb2JqZWN0IGlzIHR5cGljYWxseSBib3VuZCBiZXR3ZWVuIGV4ZWNi dWZzLCB0aGUgcGFnZV9waW5fY291bnQgaXMKc3RhdGljLiBUaGUgY29zdCB3aWxsIGJlIGZlbHQg YXJvdW5kIHNldC1kb21haW4gYW5kIHB3cml0ZSwgYnV0IG9mZnNldApieSB0aGUgaW1wcm92ZW1l bnQgZnJvbSByZWR1Y2VkIHN0cnVjdF9tdXRleCBjb250ZW50aW9uLgoKU2lnbmVkLW9mZi1ieTog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ClJldmlld2VkLWJ5OiBKb29u YXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICB8IDM2ICsrKysrLS0tLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgfCA5MyArKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5r ZXIuYyB8IDUxICsrKysrKysrKysrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fdGlsaW5nLmMgICB8ICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJw dHIuYyAgfCAxMCArKy0tCiA1IGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCA3OCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCAwODFhY2EyYzc2YzAuLjQ4 NzYxNDFkNTM5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yMjYxLDcgKzIyNjEsOCBA QCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJdW5zaWduZWQgaW50IHBpbl9kaXNwbGF5 OwogCiAJc3RydWN0IHsKLQkJdW5zaWduZWQgaW50IHBhZ2VzX3Bpbl9jb3VudDsKKwkJc3RydWN0 IG11dGV4IGxvY2s7IC8qIHByb3RlY3RzIHRoZSBwYWdlcyBhbmQgdGhlaXIgdXNlICovCisJCWF0 b21pY190IHBhZ2VzX3Bpbl9jb3VudDsKIAogCQlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzOwogCQl2 b2lkICptYXBwaW5nOwpAQCAtMjM3NCwxMyArMjM3NSw2IEBAIGk5MTVfZ2VtX29iamVjdF9pc19k ZWFkKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJcmV0dXJuIGF0b21p Y19yZWFkKCZvYmotPmJhc2UucmVmY291bnQucmVmY291bnQpID09IDA7CiB9CiAKLSNpZiBJU19F TkFCTEVEKENPTkZJR19MT0NLREVQKQotI2RlZmluZSBsb2NrZGVwX2Fzc2VydF9oZWxkX3VubGVz cyhsb2NrLCBjb25kKSBcCi0JR0VNX0JVR19PTihkZWJ1Z19sb2NrcyAmJiAhbG9ja2RlcF9pc19o ZWxkKGxvY2spICYmICEoY29uZCkpCi0jZWxzZQotI2RlZmluZSBsb2NrZGVwX2Fzc2VydF9oZWxk X3VubGVzcyhsb2NrLCBjb25kKQotI2VuZGlmCi0KIHN0YXRpYyBpbmxpbmUgYm9vbAogaTkxNV9n ZW1fb2JqZWN0X2hhc19zdHJ1Y3RfcGFnZShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQogewpAQCAtMzIxNiw5ICszMjEwLDkgQEAgaW50IF9faTkxNV9nZW1fb2JqZWN0X2dl dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKIHN0YXRpYyBpbmxpbmUg aW50IF9fbXVzdF9jaGVjawogaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQogewotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5k ZXYtPnN0cnVjdF9tdXRleCk7CisJbWlnaHRfbG9jaygmb2JqLT5tbS5sb2NrKTsKIAotCWlmIChv YmotPm1tLnBhZ2VzX3Bpbl9jb3VudCsrKQorCWlmIChhdG9taWNfaW5jX25vdF96ZXJvKCZvYmot Pm1tLnBhZ2VzX3Bpbl9jb3VudCkpCiAJCXJldHVybiAwOwogCiAJcmV0dXJuIF9faTkxNV9nZW1f b2JqZWN0X2dldF9wYWdlcyhvYmopOwpAQCAtMzIyNywzMiArMzIyMSwyOSBAQCBpOTE1X2dlbV9v YmplY3RfcGluX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiBzdGF0aWMg aW5saW5lIHZvaWQKIF9faTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQogewotCWxvY2tkZXBfYXNzZXJ0X2hlbGRfdW5sZXNzKCZvYmotPmJh c2UuZGV2LT5zdHJ1Y3RfbXV0ZXgsCi0JCQkJICAgaTkxNV9nZW1fb2JqZWN0X2lzX2RlYWQob2Jq KSk7CiAJR0VNX0JVR19PTighb2JqLT5tbS5wYWdlcyk7CiAKLQlvYmotPm1tLnBhZ2VzX3Bpbl9j b3VudCsrOworCWF0b21pY19pbmMoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50KTsKIH0KIAogc3Rh dGljIGlubGluZSBib29sCiBpOTE1X2dlbV9vYmplY3RfaGFzX3Bpbm5lZF9wYWdlcyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewotCXJldHVybiBvYmotPm1tLnBhZ2VzX3Bpbl9j b3VudDsKKwlyZXR1cm4gYXRvbWljX3JlYWQoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50KTsKIH0K IAogc3RhdGljIGlubGluZSB2b2lkCiBfX2k5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewotCWxvY2tkZXBfYXNzZXJ0X2hlbGRfdW5s ZXNzKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgsCi0JCQkJICAgaTkxNV9nZW1fb2JqZWN0 X2lzX2RlYWQob2JqKSk7CiAJR0VNX0JVR19PTighaTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRf cGFnZXMob2JqKSk7CiAJR0VNX0JVR19PTighb2JqLT5tbS5wYWdlcyk7CiAKLQlvYmotPm1tLnBh Z2VzX3Bpbl9jb3VudC0tOwotCUdFTV9CVUdfT04ob2JqLT5tbS5wYWdlc19waW5fY291bnQgPCBv YmotPmJpbmRfY291bnQpOworCWF0b21pY19kZWMoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50KTsK KwlHRU1fQlVHX09OKGF0b21pY19yZWFkKCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCkgPCBvYmot PmJpbmRfY291bnQpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3Vu cGluX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCitzdGF0aWMgaW5saW5l IHZvaWQKK2k5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQogewogCV9faTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CiB9CkBA IC0zMjc1LDggKzMyNjYsOCBAQCBlbnVtIGk5MTVfbWFwX3R5cGUgewogICogdGhlIGtlcm5lbCBh ZGRyZXNzIHNwYWNlLiBCYXNlZCBvbiB0aGUgQHR5cGUgb2YgbWFwcGluZywgdGhlIFBURSB3aWxs IGJlCiAgKiBzZXQgdG8gZWl0aGVyIFdyaXRlQmFjayBvciBXcml0ZUNvbWJpbmUgKHZpYSBwZ3By b3RfdCkuCiAgKgotICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIHN0cnVjdF9tdXRleCwgYW5k IGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nCi0gKiBpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFw KCkgd2hlbiB0aGUgbWFwcGluZyBpcyBubyBsb25nZXIgcmVxdWlyZWQuCisgKiBUaGUgY2FsbGVy IGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIGk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoKSB3 aGVuIHRoZQorICogbWFwcGluZyBpcyBubyBsb25nZXIgcmVxdWlyZWQuCiAgKgogICogUmV0dXJu cyB0aGUgcG9pbnRlciB0aHJvdWdoIHdoaWNoIHRvIGFjY2VzcyB0aGUgbWFwcGVkIG9iamVjdCwg b3IgYW4KICAqIEVSUl9QVFIoKSBvbiBlcnJvci4KQEAgLTMyOTIsMTIgKzMyODMsOSBAQCB2b2lk ICpfX211c3RfY2hlY2sgaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKICAqIHdpdGggeW91ciBhY2Nlc3MsIGNhbGwgaTkxNV9nZW1fb2JqZWN0 X3VucGluX21hcCgpIHRvIHJlbGVhc2UgdGhlIHBpbgogICogdXBvbiB0aGUgbWFwcGluZy4gT25j ZSB0aGUgcGluIGNvdW50IHJlYWNoZXMgemVybywgdGhhdCBtYXBwaW5nIG1heSBiZQogICogcmVt b3ZlZC4KLSAqCi0gKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgc3RydWN0X211dGV4LgogICov CiBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFz ZS5kZXYtPnN0cnVjdF9tdXRleCk7CiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7 CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IGRhMjk5ZTNlNDhkMS4uYmZhODAzMDJl MmQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTIyNzIsNiArMjI3Miw5IEBAIHZvaWQg X19pOTE1X2dlbV9vYmplY3RfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQogewogCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOwogCisJbG9ja2RlcF9hc3Nl cnRfaGVsZCgmb2JqLT5tbS5sb2NrKTsKKwlHRU1fQlVHX09OKG9iai0+bW0ucGFnZXMpOworCiAJ c3dpdGNoIChvYmotPm1tLm1hZHYpIHsKIAljYXNlIEk5MTVfTUFEVl9ET05UTkVFRDoKIAkJaTkx NV9nZW1fb2JqZWN0X3RydW5jYXRlKG9iaik7CkBAIC0yMzI4LDEyICsyMzMxLDE3IEBAIHZvaWQg X19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopCiB7CiAJc3RydWN0IHNnX3RhYmxlICpwYWdlczsKIAotCWxvY2tkZXBfYXNzZXJ0X2hlbGQo Jm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7Ci0KIAlpZiAoaTkxNV9nZW1fb2JqZWN0X2hh c19waW5uZWRfcGFnZXMob2JqKSkKIAkJcmV0dXJuOwogCiAJR0VNX0JVR19PTihvYmotPmJpbmRf Y291bnQpOworCWlmICghUkVBRF9PTkNFKG9iai0+bW0ucGFnZXMpKQorCQlyZXR1cm47CisKKwkv KiBNYXkgYmUgY2FsbGVkIGJ5IHNocmlua2VyIGZyb20gd2l0aGluIGdldF9wYWdlcygpIChvbiBh bm90aGVyIGJvKSAqLworCW11dGV4X2xvY2tfbmVzdGVkKCZvYmotPm1tLmxvY2ssIFNJTkdMRV9E RVBUSF9ORVNUSU5HKTsKKwlpZiAodW5saWtlbHkoYXRvbWljX3JlYWQoJm9iai0+bW0ucGFnZXNf cGluX2NvdW50KSkpCisJCWdvdG8gdW5sb2NrOwogCiAJLyogLT5wdXRfcGFnZXMgbWlnaHQgbmVl ZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBiaXQxNyBzd2l6emxlCiAJICogYXJyYXksIGhl bmNlIHByb3RlY3QgdGhlbSBmcm9tIGJlaW5nIHJlYXBlZCBieSByZW1vdmluZyB0aGVtIGZyb20g Z3R0CkBAIC0yMzU2LDYgKzIzNjQsOCBAQCB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdl cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCV9faTkxNV9nZW1fb2JqZWN0X3Jl c2V0X3BhZ2VfaXRlcihvYmopOwogCiAJb2JqLT5vcHMtPnB1dF9wYWdlcyhvYmosIHBhZ2VzKTsK K3VubG9jazoKKwltdXRleF91bmxvY2soJm9iai0+bW0ubG9jayk7CiB9CiAKIHN0YXRpYyB1bnNp Z25lZCBpbnQgc3dpb3RsYl9tYXhfc2l6ZSh2b2lkKQpAQCAtMjQ4OSw3ICsyNDk5LDcgQEAgaTkx NV9nZW1fb2JqZWN0X2dldF9wYWdlc19ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKIHZvaWQgX19pOTE1X2dlbV9vYmplY3Rfc2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCiAJCQkJIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpCiB7Ci0JbG9ja2RlcF9h c3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKKwlsb2NrZGVwX2Fzc2Vy dF9oZWxkKCZvYmotPm1tLmxvY2spOwogCiAJb2JqLT5tbS5nZXRfcGFnZS5zZ19wb3MgPSBwYWdl cy0+c2dsOwogCW9iai0+bW0uZ2V0X3BhZ2Uuc2dfaWR4ID0gMDsKQEAgLTI1MTUsOSArMjUyNSw5 IEBAIHN0YXRpYyBpbnQgX19fX2k5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKIH0KIAogLyogRW5zdXJlIHRoYXQgdGhlIGFzc29jaWF0ZWQg cGFnZXMgYXJlIGdhdGhlcmVkIGZyb20gdGhlIGJhY2tpbmcgc3RvcmFnZQotICogYW5kIHBpbm5l ZCBpbnRvIG91ciBvYmplY3QuIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMoKSBtYXkgYmUgY2Fs bGVkCisgKiBhbmQgcGlubmVkIGludG8gb3VyIG9iamVjdC4gaTkxNV9nZW1fb2JqZWN0X3Bpbl9w YWdlcygpIG1heSBiZSBjYWxsZWQKICAqIG11bHRpcGxlIHRpbWVzIGJlZm9yZSB0aGV5IGFyZSBy ZWxlYXNlZCBieSBhIHNpbmdsZSBjYWxsIHRvCi0gKiBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2Vz KCkgLSBvbmNlIHRoZSBwYWdlcyBhcmUgbm8gbG9uZ2VyIHJlZmVyZW5jZWQKKyAqIGk5MTVfZ2Vt X29iamVjdF91bnBpbl9wYWdlcygpIC0gb25jZSB0aGUgcGFnZXMgYXJlIG5vIGxvbmdlciByZWZl cmVuY2VkCiAgKiBlaXRoZXIgYXMgYSByZXN1bHQgb2YgbWVtb3J5IHByZXNzdXJlIChyZWFwaW5n IHBhZ2VzIHVuZGVyIHRoZSBzaHJpbmtlcikKICAqIG9yIGFzIHRoZSBvYmplY3QgaXMgaXRzZWxm IHJlbGVhc2VkLgogICovCkBAIC0yNTI1LDE1ICsyNTM1LDIzIEBAIGludCBfX2k5MTVfZ2VtX29i amVjdF9nZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKIAlpbnQg ZXJyOwogCi0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4 KTsKKwllcnIgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJm9iai0+bW0ubG9jayk7CisJaWYg KGVycikKKwkJcmV0dXJuIGVycjsKIAotCWlmIChvYmotPm1tLnBhZ2VzKQotCQlyZXR1cm4gMDsK KwlpZiAobGlrZWx5KG9iai0+bW0ucGFnZXMpKSB7CisJCV9faTkxNV9nZW1fb2JqZWN0X3Bpbl9w YWdlcyhvYmopOworCQlnb3RvIHVubG9jazsKKwl9CisKKwlHRU1fQlVHX09OKGk5MTVfZ2VtX29i amVjdF9oYXNfcGlubmVkX3BhZ2VzKG9iaikpOwogCiAJZXJyID0gX19fX2k5MTVfZ2VtX29iamVj dF9nZXRfcGFnZXMob2JqKTsKLQlpZiAoZXJyKQotCQlfX2k5MTVfZ2VtX29iamVjdF91bnBpbl9w YWdlcyhvYmopOworCWlmICghZXJyKQorCQlhdG9taWNfc2V0X3JlbGVhc2UoJm9iai0+bW0ucGFn ZXNfcGluX2NvdW50LCAxKTsKIAordW5sb2NrOgorCW11dGV4X3VubG9jaygmb2JqLT5tbS5sb2Nr KTsKIAlyZXR1cm4gZXJyOwogfQogCkBAIC0yNTkzLDIwICsyNjExLDI5IEBAIHZvaWQgKmk5MTVf Z2VtX29iamVjdF9waW5fbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJdm9p ZCAqcHRyOwogCWludCByZXQ7CiAKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZvYmotPmJhc2UuZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwogCUdFTV9CVUdfT04oIWk5MTVfZ2VtX29iamVjdF9oYXNfc3RydWN0 X3BhZ2Uob2JqKSk7CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CisJ cmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZvYmotPm1tLmxvY2spOwogCWlmIChyZXQp CiAJCXJldHVybiBFUlJfUFRSKHJldCk7CiAKLQlwaW5uZWQgPSBvYmotPm1tLnBhZ2VzX3Bpbl9j b3VudCA+IDE7CisJcGlubmVkID0gdHJ1ZTsKKwlpZiAoIWF0b21pY19pbmNfbm90X3plcm8oJm9i ai0+bW0ucGFnZXNfcGluX2NvdW50KSkgeworCQlyZXQgPSBfX19faTkxNV9nZW1fb2JqZWN0X2dl dF9wYWdlcyhvYmopOworCQlpZiAocmV0KQorCQkJZ290byBlcnJfdW5sb2NrOworCisJCUdFTV9C VUdfT04oYXRvbWljX3JlYWQoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50KSk7CisJCWF0b21pY19z ZXRfcmVsZWFzZSgmb2JqLT5tbS5wYWdlc19waW5fY291bnQsIDEpOworCQlwaW5uZWQgPSBmYWxz ZTsKKwl9CisJR0VNX0JVR19PTighb2JqLT5tbS5wYWdlcyk7CiAKIAlwdHIgPSBwdHJfdW5wYWNr X2JpdHMob2JqLT5tbS5tYXBwaW5nLCBoYXNfdHlwZSk7CiAJaWYgKHB0ciAmJiBoYXNfdHlwZSAh PSB0eXBlKSB7CiAJCWlmIChwaW5uZWQpIHsKIAkJCXJldCA9IC1FQlVTWTsKLQkJCWdvdG8gZXJy OworCQkJZ290byBlcnJfdW5waW47CiAJCX0KIAogCQlpZiAoaXNfdm1hbGxvY19hZGRyKHB0cikp CkBAIC0yNjIxLDE3ICsyNjQ4LDIxIEBAIHZvaWQgKmk5MTVfZ2VtX29iamVjdF9waW5fbWFwKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCXB0ciA9IGk5MTVfZ2VtX29iamVjdF9t YXAob2JqLCB0eXBlKTsKIAkJaWYgKCFwdHIpIHsKIAkJCXJldCA9IC1FTk9NRU07Ci0JCQlnb3Rv IGVycjsKKwkJCWdvdG8gZXJyX3VucGluOwogCQl9CiAKIAkJb2JqLT5tbS5tYXBwaW5nID0gcHRy X3BhY2tfYml0cyhwdHIsIHR5cGUpOwogCX0KIAorb3V0X3VubG9jazoKKwltdXRleF91bmxvY2so Jm9iai0+bW0ubG9jayk7CiAJcmV0dXJuIHB0cjsKIAotZXJyOgotCWk5MTVfZ2VtX29iamVjdF91 bnBpbl9wYWdlcyhvYmopOwotCXJldHVybiBFUlJfUFRSKHJldCk7CitlcnJfdW5waW46CisJYXRv bWljX2RlYygmb2JqLT5tbS5wYWdlc19waW5fY291bnQpOworZXJyX3VubG9jazoKKwlwdHIgPSBF UlJfUFRSKHJldCk7CisJZ290byBvdXRfdW5sb2NrOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNDI2 OSw3ICs0MzAwLDcgQEAgaTkxNV9nZW1fbWFkdmlzZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21hZHZpc2UgKmFyZ3MgPSBkYXRhOwog CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0JaW50IHJldDsKKwlpbnQgZXJyOwog CiAJc3dpdGNoIChhcmdzLT5tYWR2KSB7CiAJY2FzZSBJOTE1X01BRFZfRE9OVE5FRUQ6CkBAIC00 Mjc5LDE1ICs0MzEwLDEzIEBAIGk5MTVfZ2VtX21hZHZpc2VfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKIAkgICAgcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JcmV0ID0g aTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoZGV2KTsKLQlpZiAocmV0KQotCQlyZXR1cm4g cmV0OwotCiAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlX3ByaXYsIGFyZ3MtPmhh bmRsZSk7Ci0JaWYgKCFvYmopIHsKLQkJcmV0ID0gLUVOT0VOVDsKLQkJZ290byB1bmxvY2s7Ci0J fQorCWlmICghb2JqKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCWVyciA9IG11dGV4X2xvY2tfaW50 ZXJydXB0aWJsZSgmb2JqLT5tbS5sb2NrKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDsKIAogCWlm IChvYmotPm1tLnBhZ2VzICYmCiAJICAgIGk5MTVfZ2VtX29iamVjdF9pc190aWxlZChvYmopICYm CkBAIC00MzA2LDExICs0MzM1LDExIEBAIGk5MTVfZ2VtX21hZHZpc2VfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJaTkxNV9nZW1fb2JqZWN0X3RydW5jYXRlKG9i aik7CiAKIAlhcmdzLT5yZXRhaW5lZCA9IG9iai0+bW0ubWFkdiAhPSBfX0k5MTVfTUFEVl9QVVJH RUQ7CisJbXV0ZXhfdW5sb2NrKCZvYmotPm1tLmxvY2spOwogCitvdXQ6CiAJaTkxNV9nZW1fb2Jq ZWN0X3B1dChvYmopOwotdW5sb2NrOgotCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp OwotCXJldHVybiByZXQ7CisJcmV0dXJuIGVycjsKIH0KIAogdm9pZCBpOTE1X2dlbV9vYmplY3Rf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLApAQCAtNDMxOCw2ICs0MzQ3LDgg QEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAogewogCWludCBpOwogCisJbXV0ZXhfaW5pdCgmb2JqLT5tbS5sb2NrKTsKKwogCUlOSVRf TElTVF9IRUFEKCZvYmotPmdsb2JhbF9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmb2JqLT51c2Vy ZmF1bHRfbGluayk7CiAJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX0VOR0lORVM7IGkrKykKQEAg LTQ0ODAsNyArNDUxMSw3IEBAIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpnZW1fb2JqKQogCQlvYmotPm9wcy0+cmVsZWFzZShvYmopOwogCiAJaWYgKFdB Uk5fT04oaTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMob2JqKSkpCi0JCW9iai0+bW0u cGFnZXNfcGluX2NvdW50ID0gMDsKKwkJYXRvbWljX3NldCgmb2JqLT5tbS5wYWdlc19waW5fY291 bnQsIDApOwogCWlmIChkaXNjYXJkX2JhY2tpbmdfc3RvcmFnZShvYmopKQogCQlvYmotPm1tLm1h ZHYgPSBJOTE1X01BRFZfRE9OVE5FRUQ7CiAJX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9i aik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwppbmRleCBmOTUwNjFm YWVhZTYuLmM4YTRjNDBlYzJjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fc2hyaW5rZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJp bmtlci5jCkBAIC00OCw2ICs0OCwyMCBAQCBzdGF0aWMgYm9vbCBtdXRleF9pc19sb2NrZWRfYnko c3RydWN0IG11dGV4ICptdXRleCwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQogI2VuZGlmCiB9 CiAKK3N0YXRpYyBib29sIGk5MTVfZ2VtX3Nocmlua2VyX2xvY2soc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgYm9vbCAqdW5sb2NrKQoreworCWlmICghbXV0ZXhfdHJ5bG9jaygmZGV2LT5zdHJ1Y3Rf bXV0ZXgpKSB7CisJCWlmICghbXV0ZXhfaXNfbG9ja2VkX2J5KCZkZXYtPnN0cnVjdF9tdXRleCwg Y3VycmVudCkpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJKnVubG9jayA9IGZhbHNlOworCX0gZWxz ZSB7CisJCSp1bmxvY2sgPSB0cnVlOworCX0KKworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMg Ym9vbCBhbnlfdm1hX3Bpbm5lZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewog CXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwpAQCAtNjYsNiArODAsOSBAQCBzdGF0aWMgYm9vbCBzd2Fw X2F2YWlsYWJsZSh2b2lkKQogCiBzdGF0aWMgYm9vbCBjYW5fcmVsZWFzZV9wYWdlcyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogeworCWlmICghb2JqLT5tbS5wYWdlcykKKwkJcmV0 dXJuIGZhbHNlOworCiAJLyogT25seSBzaG1lbWZzIG9iamVjdHMgYXJlIGJhY2tlZCBieSBzd2Fw ICovCiAJaWYgKCFvYmotPmJhc2UuZmlscCkKIAkJcmV0dXJuIGZhbHNlOwpAQCAtNzgsNyArOTUs NyBAQCBzdGF0aWMgYm9vbCBjYW5fcmVsZWFzZV9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQogCSAqIHRvIHRoZSBHUFUsIHNpbXBseSB1bmJpbmRpbmcgZnJvbSB0aGUgR1BV IGlzIG5vdCBnb2luZyB0byBzdWNjZWVkCiAJICogaW4gcmVsZWFzaW5nIG91ciBwaW4gY291bnQg b24gdGhlIHBhZ2VzIHRoZW1zZWx2ZXMuCiAJICovCi0JaWYgKG9iai0+bW0ucGFnZXNfcGluX2Nv dW50ID4gb2JqLT5iaW5kX2NvdW50KQorCWlmIChhdG9taWNfcmVhZCgmb2JqLT5tbS5wYWdlc19w aW5fY291bnQpID4gb2JqLT5iaW5kX2NvdW50KQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoYW55 X3ZtYV9waW5uZWQob2JqKSkKQEAgLTk1LDcgKzExMiw3IEBAIHN0YXRpYyBib29sIHVuc2FmZV9k cm9wX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJaWYgKGk5MTVf Z2VtX29iamVjdF91bmJpbmQob2JqKSA9PSAwKQogCQlfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFn ZXMob2JqKTsKLQlyZXR1cm4gIW9iai0+bW0ucGFnZXM7CisJcmV0dXJuICFSRUFEX09OQ0Uob2Jq LT5tbS5wYWdlcyk7CiB9CiAKIC8qKgpAQCAtMTM1LDYgKzE1MiwxMCBAQCBpOTE1X2dlbV9zaHJp bmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQl7IE5VTEwsIDAgfSwKIAl9 LCAqcGhhc2U7CiAJdW5zaWduZWQgbG9uZyBjb3VudCA9IDA7CisJYm9vbCB1bmxvY2s7CisKKwlp ZiAoIWk5MTVfZ2VtX3Nocmlua2VyX2xvY2soJmRldl9wcml2LT5kcm0sICZ1bmxvY2spKQorCQly ZXR1cm4gMDsKIAogCXRyYWNlX2k5MTVfZ2VtX3NocmluayhkZXZfcHJpdiwgdGFyZ2V0LCBmbGFn cyk7CiAJaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKGRldl9wcml2KTsKQEAgLTE5OSw4ICsyMjAs MTQgQEAgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAogCQkJaTkxNV9nZW1fb2JqZWN0X2dldChvYmopOwogCi0JCQlpZiAodW5zYWZlX2Ryb3BfcGFn ZXMob2JqKSkKLQkJCQljb3VudCArPSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOworCQkJ aWYgKHVuc2FmZV9kcm9wX3BhZ2VzKG9iaikpIHsKKwkJCQltdXRleF9sb2NrKCZvYmotPm1tLmxv Y2spOworCQkJCWlmICghb2JqLT5tbS5wYWdlcykgeworCQkJCQlfX2k5MTVfZ2VtX29iamVjdF9p bnZhbGlkYXRlKG9iaik7CisJCQkJCWNvdW50ICs9IG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJ RlQ7CisJCQkJfQorCQkJCW11dGV4X3VubG9jaygmb2JqLT5tbS5sb2NrKTsKKwkJCX0KIAogCQkJ aTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwogCQl9CkBAIC0yMTEsNiArMjM4LDkgQEAgaTkxNV9n ZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJaW50ZWxfcnVu dGltZV9wbV9wdXQoZGV2X3ByaXYpOwogCiAJaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKGRldl9w cml2KTsKKwlpZiAodW5sb2NrKQorCQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0 X211dGV4KTsKKwogCS8qIGV4cGVkaXRlIHRoZSBSQ1UgZ3JhY2UgcGVyaW9kIHRvIGZyZWUgc29t ZSByZXF1ZXN0IHNsYWJzICovCiAJc3luY2hyb25pemVfcmN1X2V4cGVkaXRlZCgpOwogCkBAIC0y NDQsMTkgKzI3NCw2IEBAIHVuc2lnbmVkIGxvbmcgaTkxNV9nZW1fc2hyaW5rX2FsbChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJuIGZyZWVkOwogfQogCi1zdGF0aWMg Ym9vbCBpOTE1X2dlbV9zaHJpbmtlcl9sb2NrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wg KnVubG9jaykKLXsKLQlpZiAoIW11dGV4X3RyeWxvY2soJmRldi0+c3RydWN0X211dGV4KSkgewot CQlpZiAoIW11dGV4X2lzX2xvY2tlZF9ieSgmZGV2LT5zdHJ1Y3RfbXV0ZXgsIGN1cnJlbnQpKQot CQkJcmV0dXJuIGZhbHNlOwotCi0JCSp1bmxvY2sgPSBmYWxzZTsKLQl9IGVsc2UKLQkJKnVubG9j ayA9IHRydWU7Ci0KLQlyZXR1cm4gdHJ1ZTsKLX0KLQogc3RhdGljIHVuc2lnbmVkIGxvbmcKIGk5 MTVfZ2VtX3Nocmlua2VyX2NvdW50KHN0cnVjdCBzaHJpbmtlciAqc2hyaW5rZXIsIHN0cnVjdCBz aHJpbmtfY29udHJvbCAqc2MpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV90aWxpbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5j CmluZGV4IDM0ZDVhZGE0OTcyMC4uNjYwODc5OWVlMWY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV90aWxpbmcuYwpAQCAtMjU5LDYgKzI1OSw3IEBAIGk5MTVfZ2VtX3NldF90aWxpbmco c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJaWYgKCFlcnIpIHsKIAkJCXN0 cnVjdCBpOTE1X3ZtYSAqdm1hOwogCisJCQltdXRleF9sb2NrKCZvYmotPm1tLmxvY2spOwogCQkJ aWYgKG9iai0+bW0ucGFnZXMgJiYKIAkJCSAgICBvYmotPm1tLm1hZHYgPT0gSTkxNV9NQURWX1dJ TExORUVEICYmCiAJCQkgICAgZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJLX1BJTl9TV0laWkxFRF9Q QUdFUykgewpAQCAtMjY3LDYgKzI2OCw3IEBAIGk5MTVfZ2VtX3NldF90aWxpbmcoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQlpZiAoIWk5MTVfZ2VtX29iamVjdF9pc190 aWxlZChvYmopKQogCQkJCQlfX2k5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAkJCX0K KwkJCW11dGV4X3VubG9jaygmb2JqLT5tbS5sb2NrKTsKIAogCQkJbGlzdF9mb3JfZWFjaF9lbnRy eSh2bWEsICZvYmotPnZtYV9saXN0LCBvYmpfbGluaykgewogCQkJCWlmICghdm1hLT5mZW5jZSkK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwppbmRleCBlOTdjN2I1ODk0Mzku LjEzNmM0OTNiMTViMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f dXNlcnB0ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwpA QCAtNzksNyArNzksNyBAQCBzdGF0aWMgdm9pZCBjYW5jZWxfdXNlcnB0cihzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndvcmspCiAJV0FSTl9PTkNFKG9iai0+bW0ucGFnZXMsCiAJCSAgIkZhaWxlZCB0byBy ZWxlYXNlIHBhZ2VzOiBiaW5kX2NvdW50PSVkLCBwYWdlc19waW5fY291bnQ9JWQsIHBpbl9kaXNw bGF5PSVkXG4iLAogCQkgIG9iai0+YmluZF9jb3VudCwKLQkJICBvYmotPm1tLnBhZ2VzX3Bpbl9j b3VudCwKKwkJICBhdG9taWNfcmVhZCgmb2JqLT5tbS5wYWdlc19waW5fY291bnQpLAogCQkgIG9i ai0+cGluX2Rpc3BsYXkpOwogCiAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwpAQCAtNDkxLDcg KzQ5MSw2IEBAIF9faTkxNV9nZW1fdXNlcnB0cl9nZXRfcGFnZXNfd29ya2VyKHN0cnVjdCB3b3Jr X3N0cnVjdCAqX3dvcmspCiB7CiAJc3RydWN0IGdldF9wYWdlc193b3JrICp3b3JrID0gY29udGFp bmVyX29mKF93b3JrLCB0eXBlb2YoKndvcmspLCB3b3JrKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqID0gd29yay0+b2JqOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmot PmJhc2UuZGV2OwogCWNvbnN0IGludCBucGFnZXMgPSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NI SUZUOwogCXN0cnVjdCBwYWdlICoqcHZlYzsKIAlpbnQgcGlubmVkLCByZXQ7CkBAIC01MjMsNyAr NTIyLDcgQEAgX19pOTE1X2dlbV91c2VycHRyX2dldF9wYWdlc193b3JrZXIoc3RydWN0IHdvcmtf c3RydWN0ICpfd29yaykKIAkJfQogCX0KIAotCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4 KTsKKwltdXRleF9sb2NrKCZvYmotPm1tLmxvY2spOwogCWlmIChvYmotPnVzZXJwdHIud29yayA9 PSAmd29yay0+d29yaykgewogCQlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzID0gRVJSX1BUUihyZXQp OwogCkBAIC01MzgsMTMgKzUzNywxMiBAQCBfX2k5MTVfZ2VtX3VzZXJwdHJfZ2V0X3BhZ2VzX3dv cmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl93b3JrKQogCiAJCW9iai0+dXNlcnB0ci53b3JrID0g RVJSX0NBU1QocGFnZXMpOwogCX0KLQotCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKLQltdXRl eF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwltdXRleF91bmxvY2soJm9iai0+bW0ubG9j ayk7CiAKIAlyZWxlYXNlX3BhZ2VzKHB2ZWMsIHBpbm5lZCwgMCk7CiAJZHJtX2ZyZWVfbGFyZ2Uo cHZlYyk7CiAKKwlpOTE1X2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7CiAJcHV0X3Rhc2tf c3RydWN0KHdvcmstPnRhc2spOwogCWtmcmVlKHdvcmspOwogfQotLSAKMi45LjMKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=