From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 18/42] drm/i915: Move object backing storage manipulation to its own locking Date: Fri, 7 Oct 2016 10:46:11 +0100 Message-ID: <20161007094635.28319-19-chris@chris-wilson.co.uk> References: <20161007094635.28319-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-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id E16B56EB3D for ; Fri, 7 Oct 2016 09:47:01 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id 123so2084594wmb.3 for ; Fri, 07 Oct 2016 02:47:01 -0700 (PDT) In-Reply-To: <20161007094635.28319-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+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICB8IDI2ICsrKystLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgfCA4OSArKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyB8IDUx ICsrKysrKysrKysrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5n LmMgICB8ICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyAgfCAx MCArKy0tCiA1IGZpbGVzIGNoYW5nZWQsIDExMCBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCAyNzFlNjNjOGYwMzcuLjdlOWRmMTkwYzg5 MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yMjY2LDcgKzIyNjYsOCBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJdW5zaWduZWQgaW50IHBpbl9kaXNwbGF5OwogCiAJc3Ry dWN0IHsKLQkJdW5zaWduZWQgaW50IHBhZ2VzX3Bpbl9jb3VudDsKKwkJc3RydWN0IG11dGV4IGxv Y2s7CisJCWF0b21pY190IHBhZ2VzX3Bpbl9jb3VudDsKIAogCQlzdHJ1Y3Qgc2dfdGFibGUgKnBh Z2VzOwogCQl2b2lkICptYXBwaW5nOwpAQCAtMzIwNiw4ICszMjA3LDcgQEAgaW50IF9faTkxNV9n ZW1fb2JqZWN0X2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKIHN0 YXRpYyBpbmxpbmUgaW50IF9fbXVzdF9jaGVjawogaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewotCWxvY2tkZXBfYXNzZXJ0X2hlbGQo Jm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7Ci0JaWYgKG9iai0+bW0ucGFnZXNfcGluX2Nv dW50KyspCisJaWYgKGF0b21pY19pbmNfbm90X3plcm8oJm9iai0+bW0ucGFnZXNfcGluX2NvdW50 KSkKIAkJcmV0dXJuIDA7CiAKIAlyZXR1cm4gX19pOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9i aik7CkBAIC0zMjE2LDI5ICszMjE2LDI2IEBAIGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHN0YXRpYyBpbmxpbmUgdm9pZAogX19pOTE1 X2dlbV9vYmplY3RfcGluX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7 Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZF91bmxlc3MoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRl eCwKLQkJCQkgICBpOTE1X2dlbV9vYmplY3RfaXNfZGVhZChvYmopKTsKIAlHRU1fQlVHX09OKCFv YmotPm1tLnBhZ2VzKTsKLQlvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCsrOworCWF0b21pY19pbmMo Jm9iai0+bW0ucGFnZXNfcGluX2NvdW50KTsKIH0KIAogc3RhdGljIGlubGluZSBib29sCiBpOTE1 X2dlbV9vYmplY3RfaGFzX3Bpbm5lZF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQogewotCXJldHVybiBvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudDsKKwlyZXR1cm4gYXRvbWlj X3JlYWQoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50KTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lk CiBfX2k5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQogewotCWxvY2tkZXBfYXNzZXJ0X2hlbGRfdW5sZXNzKCZvYmotPmJhc2UuZGV2LT5z dHJ1Y3RfbXV0ZXgsCi0JCQkJICAgaTkxNV9nZW1fb2JqZWN0X2lzX2RlYWQob2JqKSk7CiAJR0VN X0JVR19PTighaTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMob2JqKSk7CiAJR0VNX0JV R19PTighb2JqLT5tbS5wYWdlcyk7Ci0Jb2JqLT5tbS5wYWdlc19waW5fY291bnQtLTsKKwlhdG9t aWNfZGVjKCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9p ZCBpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKK3N0YXRpYyBpbmxpbmUgdm9pZAoraTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJX19pOTE1X2dlbV9vYmplY3RfdW5w aW5fcGFnZXMob2JqKTsKIH0KQEAgLTMyNjEsOCArMzI1OCw4IEBAIGVudW0gaTkxNV9tYXBfdHlw ZSB7CiAgKiB0aGUga2VybmVsIGFkZHJlc3Mgc3BhY2UuIEJhc2VkIG9uIHRoZSBAdHlwZSBvZiBt YXBwaW5nLCB0aGUgUFRFIHdpbGwgYmUKICAqIHNldCB0byBlaXRoZXIgV3JpdGVCYWNrIG9yIFdy aXRlQ29tYmluZSAodmlhIHBncHJvdF90KS4KICAqCi0gKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0 aGUgc3RydWN0X211dGV4LCBhbmQgaXMgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcKLSAqIGk5MTVf Z2VtX29iamVjdF91bnBpbl9tYXAoKSB3aGVuIHRoZSBtYXBwaW5nIGlzIG5vIGxvbmdlciByZXF1 aXJlZC4KKyAqIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgaTkxNV9nZW1f b2JqZWN0X3VucGluX21hcCgpIHdoZW4gdGhlCisgKiBtYXBwaW5nIGlzIG5vIGxvbmdlciByZXF1 aXJlZC4KICAqCiAgKiBSZXR1cm5zIHRoZSBwb2ludGVyIHRocm91Z2ggd2hpY2ggdG8gYWNjZXNz IHRoZSBtYXBwZWQgb2JqZWN0LCBvciBhbgogICogRVJSX1BUUigpIG9uIGVycm9yLgpAQCAtMzI3 OCwxMiArMzI3NSw5IEBAIHZvaWQgKl9fbXVzdF9jaGVjayBpOTE1X2dlbV9vYmplY3RfcGluX21h cChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogICogd2l0aCB5b3VyIGFjY2Vzcywg Y2FsbCBpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKCkgdG8gcmVsZWFzZSB0aGUgcGluCiAgKiB1 cG9uIHRoZSBtYXBwaW5nLiBPbmNlIHRoZSBwaW4gY291bnQgcmVhY2hlcyB6ZXJvLCB0aGF0IG1h cHBpbmcgbWF5IGJlCiAgKiByZW1vdmVkLgotICoKLSAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRo ZSBzdHJ1Y3RfbXV0ZXguCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9vYmplY3Rf dW5waW5fbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7Ci0JbG9ja2RlcF9h c3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKIAlpOTE1X2dlbV9vYmpl Y3RfdW5waW5fcGFnZXMob2JqKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggNjIw ZmU4YWM2NDc3Li5mNGE3NzNjYTkzMzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtMjIz MSw2ICsyMjMxLDkgQEAgdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9pbnZhbGlkYXRlKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBp bmc7CiAKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZvYmotPm1tLmxvY2spOworCUdFTV9CVUdfT04o b2JqLT5tbS5wYWdlcyk7CisKIAlzd2l0Y2ggKG9iai0+bW0ubWFkdikgewogCWNhc2UgSTkxNV9N QURWX0RPTlRORUVEOgogCQlpOTE1X2dlbV9vYmplY3RfdHJ1bmNhdGUob2JqKTsKQEAgLTIyODcs MTIgKzIyOTAsMTcgQEAgdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKIAlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzOwogCi0J bG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKLQogCWlm IChpOTE1X2dlbV9vYmplY3RfaGFzX3Bpbm5lZF9wYWdlcyhvYmopKQogCQlyZXR1cm47CiAKIAlH RU1fQlVHX09OKG9iai0+YmluZF9jb3VudCk7CisJaWYgKCFSRUFEX09OQ0Uob2JqLT5tbS5wYWdl cykpCisJCXJldHVybjsKKworCS8qIE1heSBiZSBjYWxsZWQgYnkgc2hyaW5rZXIgZnJvbSB3aXRo aW4gZ2V0X3BhZ2VzKCkgKG9uIGFub3RoZXIgYm8pICovCisJbXV0ZXhfbG9ja19uZXN0ZWQoJm9i ai0+bW0ubG9jaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpOworCWlmICh1bmxpa2VseShhdG9taWNf cmVhZCgmb2JqLT5tbS5wYWdlc19waW5fY291bnQpKSkKKwkJZ290byB1bmxvY2s7CiAKIAkvKiAt PnB1dF9wYWdlcyBtaWdodCBuZWVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGJpdDE3IHN3 aXp6bGUKIAkgKiBhcnJheSwgaGVuY2UgcHJvdGVjdCB0aGVtIGZyb20gYmVpbmcgcmVhcGVkIGJ5 IHJlbW92aW5nIHRoZW0gZnJvbSBndHQKQEAgLTIzMTUsNiArMjMyMyw4IEBAIHZvaWQgX19pOTE1 X2dlbV9vYmplY3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJ X19pOTE1X2dlbV9vYmplY3RfcmVzZXRfcGFnZV9pdGVyKG9iaik7CiAKIAlvYmotPm9wcy0+cHV0 X3BhZ2VzKG9iaiwgcGFnZXMpOwordW5sb2NrOgorCW11dGV4X3VubG9jaygmb2JqLT5tbS5sb2Nr KTsKIH0KIAogc3RhdGljIHN0cnVjdCBzZ190YWJsZSAqCkBAIC0yNDQzLDcgKzI0NTMsNyBAQCBl cnJfcGFnZXM6CiB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3NldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJCSBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKQogewotCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CisJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmb2JqLT5tbS5sb2NrKTsKIAogCW9iai0+bW0uZ2V0X3BhZ2Uuc2dfcG9z ID0gcGFnZXMtPnNnbDsKIAlvYmotPm1tLmdldF9wYWdlLnNnX2lkeCA9IDA7CkBAIC0yNDY5LDkg KzI0NzksOSBAQCBzdGF0aWMgaW50IF9fX19pOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB9CiAKIC8qIEVuc3VyZSB0aGF0IHRoZSBhc3Nv Y2lhdGVkIHBhZ2VzIGFyZSBnYXRoZXJlZCBmcm9tIHRoZSBiYWNraW5nIHN0b3JhZ2UKLSAqIGFu ZCBwaW5uZWQgaW50byBvdXIgb2JqZWN0LiBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKCkgbWF5 IGJlIGNhbGxlZAorICogYW5kIHBpbm5lZCBpbnRvIG91ciBvYmplY3QuIGk5MTVfZ2VtX29iamVj dF9waW5fcGFnZXMoKSBtYXkgYmUgY2FsbGVkCiAgKiBtdWx0aXBsZSB0aW1lcyBiZWZvcmUgdGhl eSBhcmUgcmVsZWFzZWQgYnkgYSBzaW5nbGUgY2FsbCB0bwotICogaTkxNV9nZW1fb2JqZWN0X3B1 dF9wYWdlcygpIC0gb25jZSB0aGUgcGFnZXMgYXJlIG5vIGxvbmdlciByZWZlcmVuY2VkCisgKiBp OTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMoKSAtIG9uY2UgdGhlIHBhZ2VzIGFyZSBubyBsb25n ZXIgcmVmZXJlbmNlZAogICogZWl0aGVyIGFzIGEgcmVzdWx0IG9mIG1lbW9yeSBwcmVzc3VyZSAo cmVhcGluZyBwYWdlcyB1bmRlciB0aGUgc2hyaW5rZXIpCiAgKiBvciBhcyB0aGUgb2JqZWN0IGlz IGl0c2VsZiByZWxlYXNlZC4KICAqLwpAQCAtMjQ3OSwxNSArMjQ4OSwyMyBAQCBpbnQgX19pOTE1 X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7 CiAJaW50IGVycjsKIAotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVj dF9tdXRleCk7CisJZXJyID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZvYmotPm1tLmxvY2sp OworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CiAKLQlpZiAob2JqLT5tbS5wYWdlcykKLQkJcmV0 dXJuIDA7CisJaWYgKGxpa2VseShvYmotPm1tLnBhZ2VzKSkgeworCQlfX2k5MTVfZ2VtX29iamVj dF9waW5fcGFnZXMob2JqKTsKKwkJZ290byB1bmxvY2s7CisJfQorCisJR0VNX0JVR19PTihpOTE1 X2dlbV9vYmplY3RfaGFzX3Bpbm5lZF9wYWdlcyhvYmopKTsKIAogCWVyciA9IF9fX19pOTE1X2dl bV9vYmplY3RfZ2V0X3BhZ2VzKG9iaik7Ci0JaWYgKGVycikKLQkJX19pOTE1X2dlbV9vYmplY3Rf dW5waW5fcGFnZXMob2JqKTsKKwlpZiAoIWVycikKKwkJYXRvbWljX3NldF9yZWxlYXNlKCZvYmot Pm1tLnBhZ2VzX3Bpbl9jb3VudCwgMSk7CiAKK3VubG9jazoKKwltdXRleF91bmxvY2soJm9iai0+ bW0ubG9jayk7CiAJcmV0dXJuIGVycjsKIH0KIApAQCAtMjU0NywyMCArMjU2NSwyOSBAQCB2b2lk ICppOTE1X2dlbV9vYmplY3RfcGluX21hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAogCXZvaWQgKnB0cjsKIAlpbnQgcmV0OwogCi0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5i YXNlLmRldi0+c3RydWN0X211dGV4KTsKIAlHRU1fQlVHX09OKCFpOTE1X2dlbV9vYmplY3RfaGFz X3N0cnVjdF9wYWdlKG9iaikpOwogCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhv YmopOworCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmb2JqLT5tbS5sb2NrKTsKIAlp ZiAocmV0KQogCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCi0JcGlubmVkID0gb2JqLT5tbS5wYWdl c19waW5fY291bnQgPiAxOworCXBpbm5lZCA9IHRydWU7CisJaWYgKCFhdG9taWNfaW5jX25vdF96 ZXJvKCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCkpIHsKKwkJcmV0ID0gX19fX2k5MTVfZ2VtX29i amVjdF9nZXRfcGFnZXMob2JqKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyX3VubG9jazsKKwor CQlHRU1fQlVHX09OKGF0b21pY19yZWFkKCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCkpOworCQlh dG9taWNfc2V0X3JlbGVhc2UoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50LCAxKTsKKwkJcGlubmVk ID0gZmFsc2U7CisJfQorCUdFTV9CVUdfT04oIW9iai0+bW0ucGFnZXMpOwogCiAJcHRyID0gcHRy X3VucGFja19iaXRzKG9iai0+bW0ubWFwcGluZywgaGFzX3R5cGUpOwogCWlmIChwdHIgJiYgaGFz X3R5cGUgIT0gdHlwZSkgewogCQlpZiAocGlubmVkKSB7CiAJCQlyZXQgPSAtRUJVU1k7Ci0JCQln b3RvIGVycjsKKwkJCWdvdG8gZXJyX3VucGluOwogCQl9CiAKIAkJaWYgKGlzX3ZtYWxsb2NfYWRk cihwdHIpKQpAQCAtMjU3NSwxNyArMjYwMiwyMSBAQCB2b2lkICppOTE1X2dlbV9vYmplY3RfcGlu X21hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQlwdHIgPSBpOTE1X2dlbV9v YmplY3RfbWFwKG9iaiwgdHlwZSk7CiAJCWlmICghcHRyKSB7CiAJCQlyZXQgPSAtRU5PTUVNOwot CQkJZ290byBlcnI7CisJCQlnb3RvIGVycl91bnBpbjsKIAkJfQogCiAJCW9iai0+bW0ubWFwcGlu ZyA9IHB0cl9wYWNrX2JpdHMocHRyLCB0eXBlKTsKIAl9CiAKK291dF91bmxvY2s6CisJbXV0ZXhf dW5sb2NrKCZvYmotPm1tLmxvY2spOwogCXJldHVybiBwdHI7CiAKLWVycjoKLQlpOTE1X2dlbV9v YmplY3RfdW5waW5fcGFnZXMob2JqKTsKLQlyZXR1cm4gRVJSX1BUUihyZXQpOworZXJyX3VucGlu OgorCWF0b21pY19kZWMoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50KTsKK2Vycl91bmxvY2s6CisJ cHRyID0gRVJSX1BUUihyZXQpOworCWdvdG8gb3V0X3VubG9jazsKIH0KIAogc3RhdGljIHZvaWQK QEAgLTQxODQsMTUgKzQyMTUsMTMgQEAgaTkxNV9nZW1fbWFkdmlzZV9pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCSAgICByZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQly ZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShkZXYpOwotCWlmIChyZXQpCi0JCXJl dHVybiByZXQ7Ci0KIAlvYmogPSBpOTE1X2dlbV9vYmplY3RfbG9va3VwKGZpbGVfcHJpdiwgYXJn cy0+aGFuZGxlKTsKLQlpZiAoIW9iaikgewotCQlyZXQgPSAtRU5PRU5UOwotCQlnb3RvIHVubG9j azsKLQl9CisJaWYgKCFvYmopCisJCXJldHVybiAtRU5PRU5UOworCisJcmV0ID0gbXV0ZXhfbG9j a19pbnRlcnJ1cHRpYmxlKCZvYmotPm1tLmxvY2spOworCWlmIChyZXQpCisJCWdvdG8gZXJyOwog CiAJaWYgKG9iai0+bW0ucGFnZXMgJiYKIAkgICAgaTkxNV9nZW1fb2JqZWN0X2lzX3RpbGVkKG9i aikgJiYKQEAgLTQyMTEsMTAgKzQyNDAsMTAgQEAgaTkxNV9nZW1fbWFkdmlzZV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlpOTE1X2dlbV9vYmplY3RfdHJ1bmNh dGUob2JqKTsKIAogCWFyZ3MtPnJldGFpbmVkID0gb2JqLT5tbS5tYWR2ICE9IF9fSTkxNV9NQURW X1BVUkdFRDsKKwltdXRleF91bmxvY2soJm9iai0+bW0ubG9jayk7CiAKK2VycjoKIAlpOTE1X2dl bV9vYmplY3RfcHV0KG9iaik7Ci11bmxvY2s6Ci0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtNDIyMyw2ICs0MjUyLDggQEAgdm9pZCBpOTE1 X2dlbV9vYmplY3RfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogewogCWlu dCBpOwogCisJbXV0ZXhfaW5pdCgmb2JqLT5tbS5sb2NrKTsKKwogCUlOSVRfTElTVF9IRUFEKCZv YmotPmdsb2JhbF9saXN0KTsKIAlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fRU5HSU5FUzsgaSsr KQogCQlpbml0X3JlcXVlc3RfYWN0aXZlKCZvYmotPmxhc3RfcmVhZFtpXSwKQEAgLTQzNjksNyAr NDQwMCw3IEBAIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpnZW1fb2JqKQogCQlvYmotPm9wcy0+cmVsZWFzZShvYmopOwogCiAJaWYgKFdBUk5fT04oaTkx NV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMob2JqKSkpCi0JCW9iai0+bW0ucGFnZXNfcGlu X2NvdW50ID0gMDsKKwkJYXRvbWljX3NldCgmb2JqLT5tbS5wYWdlc19waW5fY291bnQsIDApOwog CWlmIChkaXNjYXJkX2JhY2tpbmdfc3RvcmFnZShvYmopKQogCQlvYmotPm1tLm1hZHYgPSBJOTE1 X01BRFZfRE9OVE5FRUQ7CiAJX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaik7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwppbmRleCBhOGMzZDM3Yjk1YjkuLjg2 OGRhMGJhZTc1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hy aW5rZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCkBA IC00OCw2ICs0OCwyMCBAQCBzdGF0aWMgYm9vbCBtdXRleF9pc19sb2NrZWRfYnkoc3RydWN0IG11 dGV4ICptdXRleCwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQogI2VuZGlmCiB9CiAKK3N0YXRp YyBib29sIGk5MTVfZ2VtX3Nocmlua2VyX2xvY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9v bCAqdW5sb2NrKQoreworCWlmICghbXV0ZXhfdHJ5bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpKSB7 CisJCWlmICghbXV0ZXhfaXNfbG9ja2VkX2J5KCZkZXYtPnN0cnVjdF9tdXRleCwgY3VycmVudCkp CisJCQlyZXR1cm4gZmFsc2U7CisKKwkJKnVubG9jayA9IGZhbHNlOworCX0gZWxzZSB7CisJCSp1 bmxvY2sgPSB0cnVlOworCX0KKworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMgYm9vbCBhbnlf dm1hX3Bpbm5lZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXN0cnVjdCBp OTE1X3ZtYSAqdm1hOwpAQCAtNjYsNiArODAsOSBAQCBzdGF0aWMgYm9vbCBzd2FwX2F2YWlsYWJs ZSh2b2lkKQogCiBzdGF0aWMgYm9vbCBjYW5fcmVsZWFzZV9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQogeworCWlmICghb2JqLT5tbS5wYWdlcykKKwkJcmV0dXJuIGZhbHNl OworCiAJLyogT25seSBzaG1lbWZzIG9iamVjdHMgYXJlIGJhY2tlZCBieSBzd2FwICovCiAJaWYg KCFvYmotPmJhc2UuZmlscCkKIAkJcmV0dXJuIGZhbHNlOwpAQCAtNzgsNyArOTUsNyBAQCBzdGF0 aWMgYm9vbCBjYW5fcmVsZWFzZV9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQogCSAqIHRvIHRoZSBHUFUsIHNpbXBseSB1bmJpbmRpbmcgZnJvbSB0aGUgR1BVIGlzIG5vdCBn b2luZyB0byBzdWNjZWVkCiAJICogaW4gcmVsZWFzaW5nIG91ciBwaW4gY291bnQgb24gdGhlIHBh Z2VzIHRoZW1zZWx2ZXMuCiAJICovCi0JaWYgKG9iai0+bW0ucGFnZXNfcGluX2NvdW50ID4gb2Jq LT5iaW5kX2NvdW50KQorCWlmIChhdG9taWNfcmVhZCgmb2JqLT5tbS5wYWdlc19waW5fY291bnQp ID4gb2JqLT5iaW5kX2NvdW50KQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoYW55X3ZtYV9waW5u ZWQob2JqKSkKQEAgLTk1LDcgKzExMiw3IEBAIHN0YXRpYyBib29sIHVuc2FmZV9kcm9wX3BhZ2Vz KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJaWYgKGk5MTVfZ2VtX29iamVj dF91bmJpbmQob2JqKSA9PSAwKQogCQlfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqKTsK LQlyZXR1cm4gIW9iai0+bW0ucGFnZXM7CisJcmV0dXJuICFSRUFEX09OQ0Uob2JqLT5tbS5wYWdl cyk7CiB9CiAKIC8qKgpAQCAtMTM1LDYgKzE1MiwxMCBAQCBpOTE1X2dlbV9zaHJpbmsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQl7IE5VTEwsIDAgfSwKIAl9LCAqcGhhc2U7 CiAJdW5zaWduZWQgbG9uZyBjb3VudCA9IDA7CisJYm9vbCB1bmxvY2s7CisKKwlpZiAoIWk5MTVf Z2VtX3Nocmlua2VyX2xvY2soJmRldl9wcml2LT5kcm0sICZ1bmxvY2spKQorCQlyZXR1cm4gMDsK IAogCXRyYWNlX2k5MTVfZ2VtX3NocmluayhkZXZfcHJpdiwgdGFyZ2V0LCBmbGFncyk7CiAJaTkx NV9nZW1fcmV0aXJlX3JlcXVlc3RzKGRldl9wcml2KTsKQEAgLTE5OCw4ICsyMTksMTQgQEAgaTkx NV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCQkJaTkx NV9nZW1fb2JqZWN0X2dldChvYmopOwogCi0JCQlpZiAodW5zYWZlX2Ryb3BfcGFnZXMob2JqKSkK LQkJCQljb3VudCArPSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOworCQkJaWYgKHVuc2Fm ZV9kcm9wX3BhZ2VzKG9iaikpIHsKKwkJCQltdXRleF9sb2NrKCZvYmotPm1tLmxvY2spOworCQkJ CWlmICghb2JqLT5tbS5wYWdlcykgeworCQkJCQlfX2k5MTVfZ2VtX29iamVjdF9pbnZhbGlkYXRl KG9iaik7CisJCQkJCWNvdW50ICs9IG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQ7CisJCQkJ fQorCQkJCW11dGV4X3VubG9jaygmb2JqLT5tbS5sb2NrKTsKKwkJCX0KIAogCQkJaTkxNV9nZW1f b2JqZWN0X3B1dChvYmopOwogCQl9CkBAIC0yMTAsNiArMjM3LDkgQEAgaTkxNV9nZW1fc2hyaW5r KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJaW50ZWxfcnVudGltZV9wbV9w dXQoZGV2X3ByaXYpOwogCiAJaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKGRldl9wcml2KTsKKwlp ZiAodW5sb2NrKQorCQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsK KwogCS8qIGV4cGVkaXRlIHRoZSBSQ1UgZ3JhY2UgcGVyaW9kIHRvIGZyZWUgc29tZSByZXF1ZXN0 IHNsYWJzICovCiAJc3luY2hyb25pemVfcmN1X2V4cGVkaXRlZCgpOwogCkBAIC0yNDMsMTkgKzI3 Myw2IEBAIHVuc2lnbmVkIGxvbmcgaTkxNV9nZW1fc2hyaW5rX2FsbChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJuIGZyZWVkOwogfQogCi1zdGF0aWMgYm9vbCBpOTE1 X2dlbV9zaHJpbmtlcl9sb2NrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgKnVubG9jaykK LXsKLQlpZiAoIW11dGV4X3RyeWxvY2soJmRldi0+c3RydWN0X211dGV4KSkgewotCQlpZiAoIW11 dGV4X2lzX2xvY2tlZF9ieSgmZGV2LT5zdHJ1Y3RfbXV0ZXgsIGN1cnJlbnQpKQotCQkJcmV0dXJu IGZhbHNlOwotCi0JCSp1bmxvY2sgPSBmYWxzZTsKLQl9IGVsc2UKLQkJKnVubG9jayA9IHRydWU7 Ci0KLQlyZXR1cm4gdHJ1ZTsKLX0KLQogc3RhdGljIHVuc2lnbmVkIGxvbmcKIGk5MTVfZ2VtX3No cmlua2VyX2NvdW50KHN0cnVjdCBzaHJpbmtlciAqc2hyaW5rZXIsIHN0cnVjdCBzaHJpbmtfY29u dHJvbCAqc2MpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90 aWxpbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCmluZGV4IDcy ODZkZTdiZDI1ZS4uMTFlMmUwZjU3YWMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV90aWxpbmcuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90 aWxpbmcuYwpAQCAtMjYwLDYgKzI2MCw3IEBAIGk5MTVfZ2VtX3NldF90aWxpbmcoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJaWYgKCFlcnIpIHsKIAkJCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwogCisJCQltdXRleF9sb2NrKCZvYmotPm1tLmxvY2spOwogCQkJaWYgKG9iai0+ bW0ucGFnZXMgJiYKIAkJCSAgICBvYmotPm1tLm1hZHYgPT0gSTkxNV9NQURWX1dJTExORUVEICYm CiAJCQkgICAgZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJLX1BJTl9TV0laWkxFRF9QQUdFUykgewpA QCAtMjY4LDYgKzI2OSw3IEBAIGk5MTVfZ2VtX3NldF90aWxpbmcoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKIAkJCQlpZiAoIWk5MTVfZ2VtX29iamVjdF9pc190aWxlZChvYmop KQogCQkJCQlfX2k5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAkJCX0KKwkJCW11dGV4 X3VubG9jaygmb2JqLT5tbS5sb2NrKTsKIAogCQkJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZv YmotPnZtYV9saXN0LCBvYmpfbGluaykgewogCQkJCWlmICghdm1hLT5mZW5jZSkKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwppbmRleCBlOTdjN2I1ODk0MzkuLjEzNmM0OTNi MTViMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwpAQCAtNzksNyAr NzksNyBAQCBzdGF0aWMgdm9pZCBjYW5jZWxfdXNlcnB0cihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCiAJV0FSTl9PTkNFKG9iai0+bW0ucGFnZXMsCiAJCSAgIkZhaWxlZCB0byByZWxlYXNlIHBh Z2VzOiBiaW5kX2NvdW50PSVkLCBwYWdlc19waW5fY291bnQ9JWQsIHBpbl9kaXNwbGF5PSVkXG4i LAogCQkgIG9iai0+YmluZF9jb3VudCwKLQkJICBvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCwKKwkJ ICBhdG9taWNfcmVhZCgmb2JqLT5tbS5wYWdlc19waW5fY291bnQpLAogCQkgIG9iai0+cGluX2Rp c3BsYXkpOwogCiAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwpAQCAtNDkxLDcgKzQ5MSw2IEBA IF9faTkxNV9nZW1fdXNlcnB0cl9nZXRfcGFnZXNfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAq X3dvcmspCiB7CiAJc3RydWN0IGdldF9wYWdlc193b3JrICp3b3JrID0gY29udGFpbmVyX29mKF93 b3JrLCB0eXBlb2YoKndvcmspLCB3b3JrKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqID0gd29yay0+b2JqOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2 OwogCWNvbnN0IGludCBucGFnZXMgPSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOwogCXN0 cnVjdCBwYWdlICoqcHZlYzsKIAlpbnQgcGlubmVkLCByZXQ7CkBAIC01MjMsNyArNTIyLDcgQEAg X19pOTE1X2dlbV91c2VycHRyX2dldF9wYWdlc193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICpf d29yaykKIAkJfQogCX0KIAotCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwltdXRl eF9sb2NrKCZvYmotPm1tLmxvY2spOwogCWlmIChvYmotPnVzZXJwdHIud29yayA9PSAmd29yay0+ d29yaykgewogCQlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzID0gRVJSX1BUUihyZXQpOwogCkBAIC01 MzgsMTMgKzUzNywxMiBAQCBfX2k5MTVfZ2VtX3VzZXJwdHJfZ2V0X3BhZ2VzX3dvcmtlcihzdHJ1 Y3Qgd29ya19zdHJ1Y3QgKl93b3JrKQogCiAJCW9iai0+dXNlcnB0ci53b3JrID0gRVJSX0NBU1Qo cGFnZXMpOwogCX0KLQotCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKLQltdXRleF91bmxvY2so JmRldi0+c3RydWN0X211dGV4KTsKKwltdXRleF91bmxvY2soJm9iai0+bW0ubG9jayk7CiAKIAly ZWxlYXNlX3BhZ2VzKHB2ZWMsIHBpbm5lZCwgMCk7CiAJZHJtX2ZyZWVfbGFyZ2UocHZlYyk7CiAK KwlpOTE1X2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7CiAJcHV0X3Rhc2tfc3RydWN0KHdv cmstPnRhc2spOwogCWtmcmVlKHdvcmspOwogfQotLSAKMi45LjMKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=