From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 18/41] drm/i915: Move object backing storage manipulation to its own locking Date: Fri, 14 Oct 2016 13:18:10 +0100 Message-ID: <20161014121833.439-19-chris@chris-wilson.co.uk> References: <20161014121833.439-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-x243.google.com (mail-lf0-x243.google.com [IPv6:2a00:1450:4010:c07::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 824F76E11E for ; Fri, 14 Oct 2016 12:19:00 +0000 (UTC) Received: by mail-lf0-x243.google.com with SMTP id l131so15055666lfl.0 for ; Fri, 14 Oct 2016 05:19:00 -0700 (PDT) In-Reply-To: <20161014121833.439-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 cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICB8IDM0ICsrKystLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICB8IDkzICsrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtl ci5jIHwgNTEgKysrKysrKysrKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV90aWxpbmcuYyAgIHwgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0 ci5jICB8IDEwICsrLS0KIDUgZmlsZXMgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDc4IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGViYWRiNWU1NTQ3Ni4uZTA2 NjI4NGFhY2U5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTIyNjEsNyArMjI2MSw4IEBA IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAl1bnNpZ25lZCBpbnQgcGluX2Rpc3BsYXk7 CiAKIAlzdHJ1Y3QgewotCQl1bnNpZ25lZCBpbnQgcGFnZXNfcGluX2NvdW50OworCQlzdHJ1Y3Qg bXV0ZXggbG9jazsKKwkJYXRvbWljX3QgcGFnZXNfcGluX2NvdW50OwogCiAJCXN0cnVjdCBzZ190 YWJsZSAqcGFnZXM7CiAJCXZvaWQgKm1hcHBpbmc7CkBAIC0yMzc0LDEzICsyMzc1LDYgQEAgaTkx NV9nZW1fb2JqZWN0X2lzX2RlYWQoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKIAlyZXR1cm4gYXRvbWljX3JlYWQoJm9iai0+YmFzZS5yZWZjb3VudC5yZWZjb3VudCkgPT0g MDsKIH0KIAotI2lmIElTX0VOQUJMRUQoQ09ORklHX0xPQ0tERVApCi0jZGVmaW5lIGxvY2tkZXBf YXNzZXJ0X2hlbGRfdW5sZXNzKGxvY2ssIGNvbmQpIFwKLQlHRU1fQlVHX09OKGRlYnVnX2xvY2tz ICYmICFsb2NrZGVwX2lzX2hlbGQobG9jaykgJiYgIShjb25kKSkKLSNlbHNlCi0jZGVmaW5lIGxv Y2tkZXBfYXNzZXJ0X2hlbGRfdW5sZXNzKGxvY2ssIGNvbmQpCi0jZW5kaWYKLQogc3RhdGljIGlu bGluZSBib29sCiBpOTE1X2dlbV9vYmplY3RfaGFzX3N0cnVjdF9wYWdlKGNvbnN0IHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CkBAIC0zMjE0LDkgKzMyMDgsNyBAQCBpbnQgX19p OTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop Owogc3RhdGljIGlubGluZSBpbnQgX19tdXN0X2NoZWNrCiBpOTE1X2dlbV9vYmplY3RfcGluX3Bh Z2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7Ci0JbG9ja2RlcF9hc3NlcnRf aGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKLQotCWlmIChvYmotPm1tLnBhZ2Vz X3Bpbl9jb3VudCsrKQorCWlmIChhdG9taWNfaW5jX25vdF96ZXJvKCZvYmotPm1tLnBhZ2VzX3Bp bl9jb3VudCkpCiAJCXJldHVybiAwOwogCiAJcmV0dXJuIF9faTkxNV9nZW1fb2JqZWN0X2dldF9w YWdlcyhvYmopOwpAQCAtMzIyNSwzMSArMzIxNywyOCBAQCBpOTE1X2dlbV9vYmplY3RfcGluX3Bh Z2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiBzdGF0aWMgaW5saW5lIHZvaWQK IF9faTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQogewotCWxvY2tkZXBfYXNzZXJ0X2hlbGRfdW5sZXNzKCZvYmotPmJhc2UuZGV2LT5zdHJ1 Y3RfbXV0ZXgsCi0JCQkJICAgaTkxNV9nZW1fb2JqZWN0X2lzX2RlYWQob2JqKSk7CiAJR0VNX0JV R19PTighb2JqLT5tbS5wYWdlcyk7CiAKLQlvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCsrOworCWF0 b21pY19pbmMoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50KTsKIH0KIAogc3RhdGljIGlubGluZSBi b29sCiBpOTE1X2dlbV9vYmplY3RfaGFzX3Bpbm5lZF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQogewotCXJldHVybiBvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudDsKKwlyZXR1 cm4gYXRvbWljX3JlYWQoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50KTsKIH0KIAogc3RhdGljIGlu bGluZSB2b2lkCiBfX2k5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQogewotCWxvY2tkZXBfYXNzZXJ0X2hlbGRfdW5sZXNzKCZvYmotPmJh c2UuZGV2LT5zdHJ1Y3RfbXV0ZXgsCi0JCQkJICAgaTkxNV9nZW1fb2JqZWN0X2lzX2RlYWQob2Jq KSk7CiAJR0VNX0JVR19PTighaTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMob2JqKSk7 CiAJR0VNX0JVR19PTighb2JqLT5tbS5wYWdlcyk7CiAKLQlvYmotPm1tLnBhZ2VzX3Bpbl9jb3Vu dC0tOworCWF0b21pY19kZWMoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50KTsKIH0KIAotc3RhdGlj IGlubGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQorc3RhdGljIGlubGluZSB2b2lkCitpOTE1X2dlbV9vYmplY3RfdW5w aW5fcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKIAlfX2k5MTVfZ2Vt X29iamVjdF91bnBpbl9wYWdlcyhvYmopOwogfQpAQCAtMzI3Miw4ICszMjYxLDggQEAgZW51bSBp OTE1X21hcF90eXBlIHsKICAqIHRoZSBrZXJuZWwgYWRkcmVzcyBzcGFjZS4gQmFzZWQgb24gdGhl IEB0eXBlIG9mIG1hcHBpbmcsIHRoZSBQVEUgd2lsbCBiZQogICogc2V0IHRvIGVpdGhlciBXcml0 ZUJhY2sgb3IgV3JpdGVDb21iaW5lICh2aWEgcGdwcm90X3QpLgogICoKLSAqIFRoZSBjYWxsZXIg bXVzdCBob2xkIHRoZSBzdHJ1Y3RfbXV0ZXgsIGFuZCBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGlu ZwotICogaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcCgpIHdoZW4gdGhlIG1hcHBpbmcgaXMgbm8g bG9uZ2VyIHJlcXVpcmVkLgorICogVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGlu ZyBpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKCkgd2hlbiB0aGUKKyAqIG1hcHBpbmcgaXMgbm8g bG9uZ2VyIHJlcXVpcmVkLgogICoKICAqIFJldHVybnMgdGhlIHBvaW50ZXIgdGhyb3VnaCB3aGlj aCB0byBhY2Nlc3MgdGhlIG1hcHBlZCBvYmplY3QsIG9yIGFuCiAgKiBFUlJfUFRSKCkgb24gZXJy b3IuCkBAIC0zMjg5LDEyICszMjc4LDkgQEAgdm9pZCAqX19tdXN0X2NoZWNrIGk5MTVfZ2VtX29i amVjdF9waW5fbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAgKiB3aXRoIHlv dXIgYWNjZXNzLCBjYWxsIGk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoKSB0byByZWxlYXNlIHRo ZSBwaW4KICAqIHVwb24gdGhlIG1hcHBpbmcuIE9uY2UgdGhlIHBpbiBjb3VudCByZWFjaGVzIHpl cm8sIHRoYXQgbWFwcGluZyBtYXkgYmUKICAqIHJlbW92ZWQuCi0gKgotICogVGhlIGNhbGxlciBt dXN0IGhvbGQgdGhlIHN0cnVjdF9tdXRleC4KICAqLwogc3RhdGljIGlubGluZSB2b2lkIGk5MTVf Z2VtX29iamVjdF91bnBpbl9tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsK LQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCWk5 MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YwppbmRleCA0ZmFlZjRiZDEzNWIuLjEzYWE1MGUzOGJmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCkBAIC0yMjcyLDYgKzIyNzIsOSBAQCB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X2ludmFsaWRh dGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKIAlzdHJ1Y3QgYWRkcmVzc19z cGFjZSAqbWFwcGluZzsKIAorCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+bW0ubG9jayk7CisJ R0VNX0JVR19PTihvYmotPm1tLnBhZ2VzKTsKKwogCXN3aXRjaCAob2JqLT5tbS5tYWR2KSB7CiAJ Y2FzZSBJOTE1X01BRFZfRE9OVE5FRUQ6CiAJCWk5MTVfZ2VtX29iamVjdF90cnVuY2F0ZShvYmop OwpAQCAtMjMyOCwxMiArMjMzMSwxNyBAQCB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdl cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXN0cnVjdCBzZ190YWJsZSAq cGFnZXM7CiAKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0 ZXgpOwotCiAJaWYgKGk5MTVfZ2VtX29iamVjdF9oYXNfcGlubmVkX3BhZ2VzKG9iaikpCiAJCXJl dHVybjsKIAogCUdFTV9CVUdfT04ob2JqLT5iaW5kX2NvdW50KTsKKwlpZiAoIVJFQURfT05DRShv YmotPm1tLnBhZ2VzKSkKKwkJcmV0dXJuOworCisJLyogTWF5IGJlIGNhbGxlZCBieSBzaHJpbmtl ciBmcm9tIHdpdGhpbiBnZXRfcGFnZXMoKSAob24gYW5vdGhlciBibykgKi8KKwltdXRleF9sb2Nr X25lc3RlZCgmb2JqLT5tbS5sb2NrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7CisJaWYgKHVubGlr ZWx5KGF0b21pY19yZWFkKCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCkpKQorCQlnb3RvIHVubG9j azsKIAogCS8qIC0+cHV0X3BhZ2VzIG1pZ2h0IG5lZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0 aGUgYml0MTcgc3dpenpsZQogCSAqIGFycmF5LCBoZW5jZSBwcm90ZWN0IHRoZW0gZnJvbSBiZWlu ZyByZWFwZWQgYnkgcmVtb3ZpbmcgdGhlbSBmcm9tIGd0dApAQCAtMjM1Niw2ICsyMzY0LDggQEAg dm9pZCBfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKIAlfX2k5MTVfZ2VtX29iamVjdF9yZXNldF9wYWdlX2l0ZXIob2JqKTsKIAogCW9i ai0+b3BzLT5wdXRfcGFnZXMob2JqLCBwYWdlcyk7Cit1bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZv YmotPm1tLmxvY2spOwogfQogCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBzd2lvdGxiX21heF9zaXpl KHZvaWQpCkBAIC0yNDg5LDcgKzI0OTksNyBAQCBlcnJfcGFnZXM6CiB2b2lkIF9faTkxNV9nZW1f b2JqZWN0X3NldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJCSBz dHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKQogewotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFz ZS5kZXYtPnN0cnVjdF9tdXRleCk7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5tbS5sb2Nr KTsKIAogCW9iai0+bW0uZ2V0X3BhZ2Uuc2dfcG9zID0gcGFnZXMtPnNnbDsKIAlvYmotPm1tLmdl dF9wYWdlLnNnX2lkeCA9IDA7CkBAIC0yNTE1LDkgKzI1MjUsOSBAQCBzdGF0aWMgaW50IF9fX19p OTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop CiB9CiAKIC8qIEVuc3VyZSB0aGF0IHRoZSBhc3NvY2lhdGVkIHBhZ2VzIGFyZSBnYXRoZXJlZCBm cm9tIHRoZSBiYWNraW5nIHN0b3JhZ2UKLSAqIGFuZCBwaW5uZWQgaW50byBvdXIgb2JqZWN0LiBp OTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKCkgbWF5IGJlIGNhbGxlZAorICogYW5kIHBpbm5lZCBp bnRvIG91ciBvYmplY3QuIGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMoKSBtYXkgYmUgY2FsbGVk CiAgKiBtdWx0aXBsZSB0aW1lcyBiZWZvcmUgdGhleSBhcmUgcmVsZWFzZWQgYnkgYSBzaW5nbGUg Y2FsbCB0bwotICogaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcygpIC0gb25jZSB0aGUgcGFnZXMg YXJlIG5vIGxvbmdlciByZWZlcmVuY2VkCisgKiBpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMo KSAtIG9uY2UgdGhlIHBhZ2VzIGFyZSBubyBsb25nZXIgcmVmZXJlbmNlZAogICogZWl0aGVyIGFz IGEgcmVzdWx0IG9mIG1lbW9yeSBwcmVzc3VyZSAocmVhcGluZyBwYWdlcyB1bmRlciB0aGUgc2hy aW5rZXIpCiAgKiBvciBhcyB0aGUgb2JqZWN0IGlzIGl0c2VsZiByZWxlYXNlZC4KICAqLwpAQCAt MjUyNSwxNSArMjUzNSwyMyBAQCBpbnQgX19pOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJaW50IGVycjsKIAotCWxvY2tkZXBfYXNz ZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CisJZXJyID0gbXV0ZXhfbG9j a19pbnRlcnJ1cHRpYmxlKCZvYmotPm1tLmxvY2spOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7 CiAKLQlpZiAob2JqLT5tbS5wYWdlcykKLQkJcmV0dXJuIDA7CisJaWYgKGxpa2VseShvYmotPm1t LnBhZ2VzKSkgeworCQlfX2k5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKKwkJZ290byB1 bmxvY2s7CisJfQorCisJR0VNX0JVR19PTihpOTE1X2dlbV9vYmplY3RfaGFzX3Bpbm5lZF9wYWdl cyhvYmopKTsKIAogCWVyciA9IF9fX19pOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9iaik7Ci0J aWYgKGVycikKLQkJX19pOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKKwlpZiAoIWVy cikKKwkJYXRvbWljX3NldF9yZWxlYXNlKCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCwgMSk7CiAK K3VubG9jazoKKwltdXRleF91bmxvY2soJm9iai0+bW0ubG9jayk7CiAJcmV0dXJuIGVycjsKIH0K IApAQCAtMjU5MywyMCArMjYxMSwyOSBAQCB2b2lkICppOTE1X2dlbV9vYmplY3RfcGluX21hcChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCXZvaWQgKnB0cjsKIAlpbnQgcmV0Owog Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKIAlH RU1fQlVHX09OKCFpOTE1X2dlbV9vYmplY3RfaGFzX3N0cnVjdF9wYWdlKG9iaikpOwogCi0JcmV0 ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOworCXJldCA9IG11dGV4X2xvY2tfaW50 ZXJydXB0aWJsZSgmb2JqLT5tbS5sb2NrKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gRVJSX1BUUihy ZXQpOwogCi0JcGlubmVkID0gb2JqLT5tbS5wYWdlc19waW5fY291bnQgPiAxOworCXBpbm5lZCA9 IHRydWU7CisJaWYgKCFhdG9taWNfaW5jX25vdF96ZXJvKCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3Vu dCkpIHsKKwkJcmV0ID0gX19fX2k5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKKwkJaWYg KHJldCkKKwkJCWdvdG8gZXJyX3VubG9jazsKKworCQlHRU1fQlVHX09OKGF0b21pY19yZWFkKCZv YmotPm1tLnBhZ2VzX3Bpbl9jb3VudCkpOworCQlhdG9taWNfc2V0X3JlbGVhc2UoJm9iai0+bW0u cGFnZXNfcGluX2NvdW50LCAxKTsKKwkJcGlubmVkID0gZmFsc2U7CisJfQorCUdFTV9CVUdfT04o IW9iai0+bW0ucGFnZXMpOwogCiAJcHRyID0gcHRyX3VucGFja19iaXRzKG9iai0+bW0ubWFwcGlu ZywgaGFzX3R5cGUpOwogCWlmIChwdHIgJiYgaGFzX3R5cGUgIT0gdHlwZSkgewogCQlpZiAocGlu bmVkKSB7CiAJCQlyZXQgPSAtRUJVU1k7Ci0JCQlnb3RvIGVycjsKKwkJCWdvdG8gZXJyX3VucGlu OwogCQl9CiAKIAkJaWYgKGlzX3ZtYWxsb2NfYWRkcihwdHIpKQpAQCAtMjYyMSwxNyArMjY0OCwy MSBAQCB2b2lkICppOTE1X2dlbV9vYmplY3RfcGluX21hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAogCQlwdHIgPSBpOTE1X2dlbV9vYmplY3RfbWFwKG9iaiwgdHlwZSk7CiAJCWlm ICghcHRyKSB7CiAJCQlyZXQgPSAtRU5PTUVNOwotCQkJZ290byBlcnI7CisJCQlnb3RvIGVycl91 bnBpbjsKIAkJfQogCiAJCW9iai0+bW0ubWFwcGluZyA9IHB0cl9wYWNrX2JpdHMocHRyLCB0eXBl KTsKIAl9CiAKK291dF91bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZvYmotPm1tLmxvY2spOwogCXJl dHVybiBwdHI7CiAKLWVycjoKLQlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKLQly ZXR1cm4gRVJSX1BUUihyZXQpOworZXJyX3VucGluOgorCWF0b21pY19kZWMoJm9iai0+bW0ucGFn ZXNfcGluX2NvdW50KTsKK2Vycl91bmxvY2s6CisJcHRyID0gRVJSX1BUUihyZXQpOworCWdvdG8g b3V0X3VubG9jazsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQyNjksNyArNDMwMCw3IEBAIGk5MTVf Z2VtX21hZHZpc2VfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0 IGRybV9pOTE1X2dlbV9tYWR2aXNlICphcmdzID0gZGF0YTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqOwotCWludCByZXQ7CisJaW50IGVycjsKIAogCXN3aXRjaCAoYXJncy0+bWFk dikgewogCWNhc2UgSTkxNV9NQURWX0RPTlRORUVEOgpAQCAtNDI3OSwxNSArNDMxMCwxMyBAQCBp OTE1X2dlbV9tYWR2aXNlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CiAJICAgIHJldHVybiAtRUlOVkFMOwogCX0KIAotCXJldCA9IGk5MTVfbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKGRldik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQogCW9iaiA9IGk5MTVf Z2VtX29iamVjdF9sb29rdXAoZmlsZV9wcml2LCBhcmdzLT5oYW5kbGUpOwotCWlmICghb2JqKSB7 Ci0JCXJldCA9IC1FTk9FTlQ7Ci0JCWdvdG8gdW5sb2NrOwotCX0KKwlpZiAoIW9iaikKKwkJcmV0 dXJuIC1FTk9FTlQ7CisKKwllcnIgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJm9iai0+bW0u bG9jayk7CisJaWYgKGVycikKKwkJZ290byBvdXQ7CiAKIAlpZiAob2JqLT5tbS5wYWdlcyAmJgog CSAgICBpOTE1X2dlbV9vYmplY3RfaXNfdGlsZWQob2JqKSAmJgpAQCAtNDMwNiwxMSArNDMzNSwx MSBAQCBpOTE1X2dlbV9tYWR2aXNlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJCWk5MTVfZ2VtX29iamVjdF90cnVuY2F0ZShvYmopOwogCiAJYXJncy0+cmV0YWlu ZWQgPSBvYmotPm1tLm1hZHYgIT0gX19JOTE1X01BRFZfUFVSR0VEOworCW11dGV4X3VubG9jaygm b2JqLT5tbS5sb2NrKTsKIAorb3V0OgogCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKLXVubG9j azoKLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKLQlyZXR1cm4gcmV0OworCXJl dHVybiBlcnI7CiB9CiAKIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2luaXQoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKQEAgLTQzMTgsNiArNDM0Nyw4IEBAIHZvaWQgaTkxNV9nZW1fb2Jq ZWN0X2luaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIHsKIAlpbnQgaTsKIAor CW11dGV4X2luaXQoJm9iai0+bW0ubG9jayk7CisKIAlJTklUX0xJU1RfSEVBRCgmb2JqLT5nbG9i YWxfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJm9iai0+dXNlcmZhdWx0X2xpbmspOwogCWZvciAo aSA9IDA7IGkgPCBJOTE1X05VTV9FTkdJTkVTOyBpKyspCkBAIC00NDY1LDcgKzQ0OTYsNyBAQCB2 b2lkIGk5MTVfZ2VtX2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaikK IAkJb2JqLT5vcHMtPnJlbGVhc2Uob2JqKTsKIAogCWlmIChXQVJOX09OKGk5MTVfZ2VtX29iamVj dF9oYXNfcGlubmVkX3BhZ2VzKG9iaikpKQotCQlvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCA9IDA7 CisJCWF0b21pY19zZXQoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50LCAwKTsKIAlpZiAoZGlzY2Fy ZF9iYWNraW5nX3N0b3JhZ2Uob2JqKSkKIAkJb2JqLT5tbS5tYWR2ID0gSTkxNV9NQURWX0RPTlRO RUVEOwogCV9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmopOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKaW5kZXggZjk1MDYxZmFlYWU2Li5jOGE0YzQwZWMyYzIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwpAQCAtNDgsNiArNDgs MjAgQEAgc3RhdGljIGJvb2wgbXV0ZXhfaXNfbG9ja2VkX2J5KHN0cnVjdCBtdXRleCAqbXV0ZXgs IHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKICNlbmRpZgogfQogCitzdGF0aWMgYm9vbCBpOTE1 X2dlbV9zaHJpbmtlcl9sb2NrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgKnVubG9jaykK K3sKKwlpZiAoIW11dGV4X3RyeWxvY2soJmRldi0+c3RydWN0X211dGV4KSkgeworCQlpZiAoIW11 dGV4X2lzX2xvY2tlZF9ieSgmZGV2LT5zdHJ1Y3RfbXV0ZXgsIGN1cnJlbnQpKQorCQkJcmV0dXJu IGZhbHNlOworCisJCSp1bmxvY2sgPSBmYWxzZTsKKwl9IGVsc2UgeworCQkqdW5sb2NrID0gdHJ1 ZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGJvb2wgYW55X3ZtYV9waW5uZWQo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZt YTsKQEAgLTY2LDYgKzgwLDkgQEAgc3RhdGljIGJvb2wgc3dhcF9hdmFpbGFibGUodm9pZCkKIAog c3RhdGljIGJvb2wgY2FuX3JlbGVhc2VfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKIHsKKwlpZiAoIW9iai0+bW0ucGFnZXMpCisJCXJldHVybiBmYWxzZTsKKwogCS8qIE9u bHkgc2htZW1mcyBvYmplY3RzIGFyZSBiYWNrZWQgYnkgc3dhcCAqLwogCWlmICghb2JqLT5iYXNl LmZpbHApCiAJCXJldHVybiBmYWxzZTsKQEAgLTc4LDcgKzk1LDcgQEAgc3RhdGljIGJvb2wgY2Fu X3JlbGVhc2VfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkgKiB0byB0 aGUgR1BVLCBzaW1wbHkgdW5iaW5kaW5nIGZyb20gdGhlIEdQVSBpcyBub3QgZ29pbmcgdG8gc3Vj Y2VlZAogCSAqIGluIHJlbGVhc2luZyBvdXIgcGluIGNvdW50IG9uIHRoZSBwYWdlcyB0aGVtc2Vs dmVzLgogCSAqLwotCWlmIChvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCA+IG9iai0+YmluZF9jb3Vu dCkKKwlpZiAoYXRvbWljX3JlYWQoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50KSA+IG9iai0+Ymlu ZF9jb3VudCkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKGFueV92bWFfcGlubmVkKG9iaikpCkBA IC05NSw3ICsxMTIsNyBAQCBzdGF0aWMgYm9vbCB1bnNhZmVfZHJvcF9wYWdlcyhzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCWlmIChpOTE1X2dlbV9vYmplY3RfdW5iaW5kKG9i aikgPT0gMCkKIAkJX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaik7Ci0JcmV0dXJuICFv YmotPm1tLnBhZ2VzOworCXJldHVybiAhUkVBRF9PTkNFKG9iai0+bW0ucGFnZXMpOwogfQogCiAv KioKQEAgLTEzNSw2ICsxNTIsMTAgQEAgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAkJeyBOVUxMLCAwIH0sCiAJfSwgKnBoYXNlOwogCXVuc2lnbmVk IGxvbmcgY291bnQgPSAwOworCWJvb2wgdW5sb2NrOworCisJaWYgKCFpOTE1X2dlbV9zaHJpbmtl cl9sb2NrKCZkZXZfcHJpdi0+ZHJtLCAmdW5sb2NrKSkKKwkJcmV0dXJuIDA7CiAKIAl0cmFjZV9p OTE1X2dlbV9zaHJpbmsoZGV2X3ByaXYsIHRhcmdldCwgZmxhZ3MpOwogCWk5MTVfZ2VtX3JldGly ZV9yZXF1ZXN0cyhkZXZfcHJpdik7CkBAIC0xOTksOCArMjIwLDE0IEBAIGk5MTVfZ2VtX3Nocmlu ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAkJCWk5MTVfZ2VtX29iamVj dF9nZXQob2JqKTsKIAotCQkJaWYgKHVuc2FmZV9kcm9wX3BhZ2VzKG9iaikpCi0JCQkJY291bnQg Kz0gb2JqLT5iYXNlLnNpemUgPj4gUEFHRV9TSElGVDsKKwkJCWlmICh1bnNhZmVfZHJvcF9wYWdl cyhvYmopKSB7CisJCQkJbXV0ZXhfbG9jaygmb2JqLT5tbS5sb2NrKTsKKwkJCQlpZiAoIW9iai0+ bW0ucGFnZXMpIHsKKwkJCQkJX19pOTE1X2dlbV9vYmplY3RfaW52YWxpZGF0ZShvYmopOworCQkJ CQljb3VudCArPSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOworCQkJCX0KKwkJCQltdXRl eF91bmxvY2soJm9iai0+bW0ubG9jayk7CisJCQl9CiAKIAkJCWk5MTVfZ2VtX29iamVjdF9wdXQo b2JqKTsKIAkJfQpAQCAtMjExLDYgKzIzOCw5IEBAIGk5MTVfZ2VtX3NocmluayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2 KTsKIAogCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdik7CisJaWYgKHVubG9jaykK KwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CisKIAkvKiBleHBl ZGl0ZSB0aGUgUkNVIGdyYWNlIHBlcmlvZCB0byBmcmVlIHNvbWUgcmVxdWVzdCBzbGFicyAqLwog CXN5bmNocm9uaXplX3JjdV9leHBlZGl0ZWQoKTsKIApAQCAtMjQ0LDE5ICsyNzQsNiBAQCB1bnNp Z25lZCBsb25nIGk5MTVfZ2VtX3Nocmlua19hbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCXJldHVybiBmcmVlZDsKIH0KIAotc3RhdGljIGJvb2wgaTkxNV9nZW1fc2hyaW5r ZXJfbG9jayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sICp1bmxvY2spCi17Ci0JaWYgKCFt dXRleF90cnlsb2NrKCZkZXYtPnN0cnVjdF9tdXRleCkpIHsKLQkJaWYgKCFtdXRleF9pc19sb2Nr ZWRfYnkoJmRldi0+c3RydWN0X211dGV4LCBjdXJyZW50KSkKLQkJCXJldHVybiBmYWxzZTsKLQot CQkqdW5sb2NrID0gZmFsc2U7Ci0JfSBlbHNlCi0JCSp1bmxvY2sgPSB0cnVlOwotCi0JcmV0dXJu IHRydWU7Ci19Ci0KIHN0YXRpYyB1bnNpZ25lZCBsb25nCiBpOTE1X2dlbV9zaHJpbmtlcl9jb3Vu dChzdHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2VyLCBzdHJ1Y3Qgc2hyaW5rX2NvbnRyb2wgKnNjKQog ewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYwppbmRleCAzNGQ1YWRhNDk3MjAu LjY2MDg3OTllZTFmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f dGlsaW5nLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKQEAg LTI1OSw2ICsyNTksNyBAQCBpOTE1X2dlbV9zZXRfdGlsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCiAJCWlmICghZXJyKSB7CiAJCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsK IAorCQkJbXV0ZXhfbG9jaygmb2JqLT5tbS5sb2NrKTsKIAkJCWlmIChvYmotPm1tLnBhZ2VzICYm CiAJCQkgICAgb2JqLT5tbS5tYWR2ID09IEk5MTVfTUFEVl9XSUxMTkVFRCAmJgogCQkJICAgIGRl dl9wcml2LT5xdWlya3MgJiBRVUlSS19QSU5fU1dJWlpMRURfUEFHRVMpIHsKQEAgLTI2Nyw2ICsy NjgsNyBAQCBpOTE1X2dlbV9zZXRfdGlsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJCQkJaWYgKCFpOTE1X2dlbV9vYmplY3RfaXNfdGlsZWQob2JqKSkKIAkJCQkJX19p OTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CiAJCQl9CisJCQltdXRleF91bmxvY2soJm9i ai0+bW0ubG9jayk7CiAKIAkJCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWFfbGlz dCwgb2JqX2xpbmspIHsKIAkJCQlpZiAoIXZtYS0+ZmVuY2UpCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV91c2VycHRyLmMKaW5kZXggZTk3YzdiNTg5NDM5Li4xMzZjNDkzYjE1YjIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKQEAgLTc5LDcgKzc5LDcgQEAgc3Rh dGljIHZvaWQgY2FuY2VsX3VzZXJwdHIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCVdBUk5f T05DRShvYmotPm1tLnBhZ2VzLAogCQkgICJGYWlsZWQgdG8gcmVsZWFzZSBwYWdlczogYmluZF9j b3VudD0lZCwgcGFnZXNfcGluX2NvdW50PSVkLCBwaW5fZGlzcGxheT0lZFxuIiwKIAkJICBvYmot PmJpbmRfY291bnQsCi0JCSAgb2JqLT5tbS5wYWdlc19waW5fY291bnQsCisJCSAgYXRvbWljX3Jl YWQoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50KSwKIAkJICBvYmotPnBpbl9kaXNwbGF5KTsKIAog CWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKQEAgLTQ5MSw3ICs0OTEsNiBAQCBfX2k5MTVfZ2Vt X3VzZXJwdHJfZ2V0X3BhZ2VzX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl93b3JrKQogewog CXN0cnVjdCBnZXRfcGFnZXNfd29yayAqd29yayA9IGNvbnRhaW5lcl9vZihfd29yaywgdHlwZW9m KCp3b3JrKSwgd29yayk7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHdvcmst Pm9iajsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKIAljb25zdCBp bnQgbnBhZ2VzID0gb2JqLT5iYXNlLnNpemUgPj4gUEFHRV9TSElGVDsKIAlzdHJ1Y3QgcGFnZSAq KnB2ZWM7CiAJaW50IHBpbm5lZCwgcmV0OwpAQCAtNTIzLDcgKzUyMiw3IEBAIF9faTkxNV9nZW1f dXNlcnB0cl9nZXRfcGFnZXNfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqX3dvcmspCiAJCX0K IAl9CiAKLQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJbXV0ZXhfbG9jaygmb2Jq LT5tbS5sb2NrKTsKIAlpZiAob2JqLT51c2VycHRyLndvcmsgPT0gJndvcmstPndvcmspIHsKIAkJ c3RydWN0IHNnX3RhYmxlICpwYWdlcyA9IEVSUl9QVFIocmV0KTsKIApAQCAtNTM4LDEzICs1Mzcs MTIgQEAgX19pOTE1X2dlbV91c2VycHRyX2dldF9wYWdlc193b3JrZXIoc3RydWN0IHdvcmtfc3Ry dWN0ICpfd29yaykKIAogCQlvYmotPnVzZXJwdHIud29yayA9IEVSUl9DQVNUKHBhZ2VzKTsKIAl9 Ci0KLQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Ci0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7CisJbXV0ZXhfdW5sb2NrKCZvYmotPm1tLmxvY2spOwogCiAJcmVsZWFzZV9wYWdl cyhwdmVjLCBwaW5uZWQsIDApOwogCWRybV9mcmVlX2xhcmdlKHB2ZWMpOwogCisJaTkxNV9nZW1f b2JqZWN0X3B1dF91bmxvY2tlZChvYmopOwogCXB1dF90YXNrX3N0cnVjdCh3b3JrLT50YXNrKTsK IAlrZnJlZSh3b3JrKTsKIH0KLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK