From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH] drm/i915/userptr: Avoid struct_mutex recursion for mmu_invalidate_range_start Date: Tue, 23 Oct 2018 08:27:56 +0100 Message-ID: <20181023072756.13705-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 fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id C31146E0C1 for ; Tue, 23 Oct 2018 07:28:05 +0000 (UTC) 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 U2luY2UgY29tbWl0IDkzMDY1YWM3NTNlNCAoIm1tLCBvb206IGRpc3Rpbmd1aXNoIGJsb2NrYWJs ZSBtb2RlIGZvciBtbXUKbm90aWZpZXJzIikgd2UgaGF2ZSBiZWVuIGFibGUgdG8gcmVwb3J0IGZh aWx1cmUgZnJvbQptbXVfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCB3aGljaCBhbGxvd3MgdXMgdG8g dXNlIGEgdHJ5bG9jayBvbiB0aGUKc3RydWN0X211dGV4IHRvIGF2b2lkIHBvdGVudGlhbCByZWN1 cnNpb24gYW5kIHJlcG9ydCAtRUJVU1kgaW5zdGVhZC4KRnVydGhlcm1vcmUsIHRoaXMgYWxsb3dz IHVzIHRvIHB1bGwgdGhlIHdvcmsgaW50byB0aGUgbWFpbiBjYWxsYmFjayBhbmQKYXZvaWQgdGhl IHNsZWlnaHQtb2YtaGFuZCBpbiB1c2luZyBhIHdvcmtxdWV1ZSB0byBhdm9pZCBsb2NrZGVwLgoK SG93ZXZlciwgbm90IGFsbCBwYXRocyB0byBtbXVfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCBhcmUg cHJlcGFyZWQgdG8KaGFuZGxlIGZhaWx1cmUsIHNvIGluc3RlYWQgb2YgcmVwb3J0aW5nIHRoZSBy ZWN1cnNpb24sIGRlYWwgd2l0aCBpdC4KCkJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0 b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgzNzUKUmVmZXJlbmNlczogOTMwNjVhYzc1M2U0ICgi bW0sIG9vbTogZGlzdGluZ3Vpc2ggYmxvY2thYmxlIG1vZGUgZm9yIG1tdSBub3RpZmllcnMiKQpT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMgfCAxNDQgKysrKysrKysr KysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgNjcgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNl cnB0ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jCmluZGV4IDJj OWIyODQwMzZkMS4uNjRmMmVkN2U0OWVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV91c2VycHRyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f dXNlcnB0ci5jCkBAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCBpOTE1X21tdV9ub3RpZmllciB7CiAJ c3RydWN0IGhsaXN0X25vZGUgbm9kZTsKIAlzdHJ1Y3QgbW11X25vdGlmaWVyIG1uOwogCXN0cnVj dCByYl9yb290X2NhY2hlZCBvYmplY3RzOwotCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTsK KwlzdHJ1Y3QgaTkxNV9tbV9zdHJ1Y3QgKm1tOwogfTsKIAogc3RydWN0IGk5MTVfbW11X29iamVj dCB7CkBAIC01OCw0MiArNTgsOSBAQCBzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0IHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCXN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgaXQ7 CiAJc3RydWN0IGxpc3RfaGVhZCBsaW5rOwotCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwogCWJv b2wgYXR0YWNoZWQ7CiB9OwogCi1zdGF0aWMgdm9pZCBjYW5jZWxfdXNlcnB0cihzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspCi17Ci0Jc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW8gPSBjb250YWlu ZXJfb2Yod29yaywgdHlwZW9mKCptbyksIHdvcmspOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmogPSBtby0+b2JqOwotCXN0cnVjdCB3b3JrX3N0cnVjdCAqYWN0aXZlOwotCi0JLyog Q2FuY2VsIGFueSBhY3RpdmUgd29ya2VyIGFuZCBmb3JjZSB1cyB0byByZS1ldmFsdWF0ZSBndXAg Ki8KLQltdXRleF9sb2NrKCZvYmotPm1tLmxvY2spOwotCWFjdGl2ZSA9IGZldGNoX2FuZF96ZXJv KCZvYmotPnVzZXJwdHIud29yayk7Ci0JbXV0ZXhfdW5sb2NrKCZvYmotPm1tLmxvY2spOwotCWlm IChhY3RpdmUpCi0JCWdvdG8gb3V0OwotCi0JaTkxNV9nZW1fb2JqZWN0X3dhaXQob2JqLCBJOTE1 X1dBSVRfQUxMLCBNQVhfU0NIRURVTEVfVElNRU9VVCwgTlVMTCk7Ci0KLQltdXRleF9sb2NrKCZv YmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCi0JLyogV2UgYXJlIGluc2lkZSBhIGt0aHJl YWQgY29udGV4dCBhbmQgY2FuJ3QgYmUgaW50ZXJydXB0ZWQgKi8KLQlpZiAoaTkxNV9nZW1fb2Jq ZWN0X3VuYmluZChvYmopID09IDApCi0JCV9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmos IEk5MTVfTU1fTk9STUFMKTsKLQlXQVJOX09OQ0UoaTkxNV9nZW1fb2JqZWN0X2hhc19wYWdlcyhv YmopLAotCQkgICJGYWlsZWQgdG8gcmVsZWFzZSBwYWdlczogYmluZF9jb3VudD0lZCwgcGFnZXNf cGluX2NvdW50PSVkLCBwaW5fZ2xvYmFsPSVkXG4iLAotCQkgIG9iai0+YmluZF9jb3VudCwKLQkJ ICBhdG9taWNfcmVhZCgmb2JqLT5tbS5wYWdlc19waW5fY291bnQpLAotCQkgIG9iai0+cGluX2ds b2JhbCk7Ci0KLQltdXRleF91bmxvY2soJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7Ci0K LW91dDoKLQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Ci19Ci0KIHN0YXRpYyB2b2lkIGFkZF9v YmplY3Qoc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW8pCiB7CiAJaWYgKG1vLT5hdHRhY2hlZCkK QEAgLTExMiwxNyArNzksMzMgQEAgc3RhdGljIHZvaWQgZGVsX29iamVjdChzdHJ1Y3QgaTkxNV9t bXVfb2JqZWN0ICptbykKIAltby0+YXR0YWNoZWQgPSBmYWxzZTsKIH0KIAorc3RhdGljIHN0cnVj dCBtdXRleCAqX19pOTE1X211dGV4X2xvY2tfcmVjdXJzaXZlKHN0cnVjdCBtdXRleCAqbSkKK3sK Kwlzd2l0Y2ggKG11dGV4X3RyeWxvY2tfcmVjdXJzaXZlKG0pKSB7CisJZGVmYXVsdDoKKwljYXNl IE1VVEVYX1RSWUxPQ0tfRkFJTEVEOgorCQltdXRleF9sb2NrKG0pOworCWNhc2UgTVVURVhfVFJZ TE9DS19TVUNDRVNTOgorCQlyZXR1cm4gbTsKKworCWNhc2UgTVVURVhfVFJZTE9DS19SRUNVUlNJ VkU6CisJCXJldHVybiBOVUxMOworCX0KK30KKwogc3RhdGljIGludCBpOTE1X2dlbV91c2VycHRy X21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqX21uLAotCQkJ CQkJICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAotCQkJCQkJICAgICAgIHVuc2lnbmVkIGxv bmcgc3RhcnQsCi0JCQkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBlbmQsCi0JCQkJCQkgICAgICAg Ym9vbCBibG9ja2FibGUpCisJCQkJCQkgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKKwkJCQkJ CSAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCisJCQkJCQkgICAgICB1bnNpZ25lZCBsb25nIGVu ZCwKKwkJCQkJCSAgICAgIGJvb2wgYmxvY2thYmxlKQogewogCXN0cnVjdCBpOTE1X21tdV9ub3Rp ZmllciAqbW4gPQogCQljb250YWluZXJfb2YoX21uLCBzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIs IG1uKTsKLQlzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0ICptbzsKKwlzdHJ1Y3QgaTkxNV9tbXVfb2Jq ZWN0ICptbywgKm5leHQ7CiAJc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7CiAJTElTVF9I RUFEKGNhbmNlbGxlZCk7CisJc3RydWN0IG11dGV4ICp1bmxvY2s7CisJaW50IHJldDsKIAogCWlm IChSQl9FTVBUWV9ST09UKCZtbi0+b2JqZWN0cy5yYl9yb290KSkKIAkJcmV0dXJuIDA7CkBAIC0x NDgsMTkgKzEzMSw2MSBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX3VzZXJwdHJfbW5faW52YWxpZGF0 ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICpfbW4sCiAJCSAqLwogCQltbyA9IGNv bnRhaW5lcl9vZihpdCwgc3RydWN0IGk5MTVfbW11X29iamVjdCwgaXQpOwogCQlpZiAoa3JlZl9n ZXRfdW5sZXNzX3plcm8oJm1vLT5vYmotPmJhc2UucmVmY291bnQpKQotCQkJcXVldWVfd29yayht bi0+d3EsICZtby0+d29yayk7CisJCQlsaXN0X2FkZCgmbW8tPmxpbmssICZjYW5jZWxsZWQpOwog Ci0JCWxpc3RfYWRkKCZtby0+bGluaywgJmNhbmNlbGxlZCk7CiAJCWl0ID0gaW50ZXJ2YWxfdHJl ZV9pdGVyX25leHQoaXQsIHN0YXJ0LCBlbmQpOwogCX0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG1v LCAmY2FuY2VsbGVkLCBsaW5rKQotCQlkZWxfb2JqZWN0KG1vKTsKIAlzcGluX3VubG9jaygmbW4t PmxvY2spOwogCi0JaWYgKCFsaXN0X2VtcHR5KCZjYW5jZWxsZWQpKQotCQlmbHVzaF93b3JrcXVl dWUobW4tPndxKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobW8sIG5leHQsICZjYW5jZWxs ZWQsIGxpbmspIHsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IG1vLT5vYmo7 CisJCWJvb2wgcGVuZGluZzsKIAotCXJldHVybiAwOworCQkvKiBDYW5jZWwgYW55IHBlbmRpbmcg d29ya2VyIGFuZCBmb3JjZSB1cyB0byByZS1ldmFsdWF0ZSBndXAgKi8KKwkJbXV0ZXhfbG9ja19u ZXN0ZWQoJm9iai0+bW0ubG9jaywgSTkxNV9NTV9TSFJJTktFUik7CisJCXBlbmRpbmcgPSBmZXRj aF9hbmRfemVybygmb2JqLT51c2VycHRyLndvcmspOworCQltdXRleF91bmxvY2soJm9iai0+bW0u bG9jayk7CisJCWlmIChwZW5kaW5nKSB7CisJCQlsaXN0X2RlbCgmbW8tPmxpbmspOworCisJCQlz cGluX2xvY2soJm1uLT5sb2NrKTsKKwkJCWRlbF9vYmplY3QobW8pOworCQkJc3Bpbl91bmxvY2so Jm1uLT5sb2NrKTsKKworCQkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOworCQl9CisJfQorCisJ aWYgKGxpc3RfZW1wdHkoJmNhbmNlbGxlZCkpCisJCXJldHVybiAwOworCisJdW5sb2NrID0gX19p OTE1X211dGV4X2xvY2tfcmVjdXJzaXZlKCZtbi0+bW0tPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp OworCisJcmV0ID0gMDsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobW8sIG5leHQsICZjYW5j ZWxsZWQsIGxpbmspIHsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IG1vLT5v Ymo7CisJCWludCBlcnI7CisKKwkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3VuYmluZChvYmopOwor CQlpZiAoZXJyID09IDApIHsKKwkJCV9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmosIEk5 MTVfTU1fU0hSSU5LRVIpOworCQkJR0VNX0JVR19PTihvYmotPm1tLnBhZ2VzKTsKKworCQkJc3Bp bl9sb2NrKCZtbi0+bG9jayk7CisJCQlkZWxfb2JqZWN0KG1vKTsKKwkJCXNwaW5fdW5sb2NrKCZt bi0+bG9jayk7CisJCX0gZWxzZSB7CisJCQlpZiAocmV0ID09IDApCisJCQkJcmV0ID0gZXJyOwor CQl9CisKKwkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOworCX0KKworCWlmICh1bmxvY2spCisJ CW11dGV4X3VubG9jayh1bmxvY2spOworCisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIGk5MTVfZ2VtX3VzZXJwdHJfbm90aWZpZXIgPSB7CkBA IC0xNjgsNyArMTkzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIGk5 MTVfZ2VtX3VzZXJwdHJfbm90aWZpZXIgPSB7CiB9OwogCiBzdGF0aWMgc3RydWN0IGk5MTVfbW11 X25vdGlmaWVyICoKLWk5MTVfbW11X25vdGlmaWVyX2NyZWF0ZShzdHJ1Y3QgbW1fc3RydWN0ICpt bSkKK2k5MTVfbW11X25vdGlmaWVyX2NyZWF0ZShzdHJ1Y3QgaTkxNV9tbV9zdHJ1Y3QgKm1tKQog ewogCXN0cnVjdCBpOTE1X21tdV9ub3RpZmllciAqbW47CiAKQEAgLTE3OSwxMyArMjA0LDcgQEAg aTkxNV9tbXVfbm90aWZpZXJfY3JlYXRlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogCXNwaW5fbG9j a19pbml0KCZtbi0+bG9jayk7CiAJbW4tPm1uLm9wcyA9ICZpOTE1X2dlbV91c2VycHRyX25vdGlm aWVyOwogCW1uLT5vYmplY3RzID0gUkJfUk9PVF9DQUNIRUQ7Ci0JbW4tPndxID0gYWxsb2Nfd29y a3F1ZXVlKCJpOTE1LXVzZXJwdHItcmVsZWFzZSIsCi0JCQkJIFdRX1VOQk9VTkQgfCBXUV9NRU1f UkVDTEFJTSwKLQkJCQkgMCk7Ci0JaWYgKG1uLT53cSA9PSBOVUxMKSB7Ci0JCWtmcmVlKG1uKTsK LQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Ci0JfQorCW1uLT5tbSA9IG1tOwogCiAJcmV0dXJu IG1uOwogfQpAQCAtMjE3LDcgKzIzNiw3IEBAIGk5MTVfbW11X25vdGlmaWVyX2ZpbmQoc3RydWN0 IGk5MTVfbW1fc3RydWN0ICptbSkKIAlpZiAobW4pCiAJCXJldHVybiBtbjsKIAotCW1uID0gaTkx NV9tbXVfbm90aWZpZXJfY3JlYXRlKG1tLT5tbSk7CisJbW4gPSBpOTE1X21tdV9ub3RpZmllcl9j cmVhdGUobW0pOwogCWlmIChJU19FUlIobW4pKQogCQllcnIgPSBQVFJfRVJSKG1uKTsKIApAQCAt MjQwLDEwICsyNTksOCBAQCBpOTE1X21tdV9ub3RpZmllcl9maW5kKHN0cnVjdCBpOTE1X21tX3N0 cnVjdCAqbW0pCiAJbXV0ZXhfdW5sb2NrKCZtbS0+aTkxNS0+bW1fbG9jayk7CiAJdXBfd3JpdGUo Jm1tLT5tbS0+bW1hcF9zZW0pOwogCi0JaWYgKG1uICYmICFJU19FUlIobW4pKSB7Ci0JCWRlc3Ry b3lfd29ya3F1ZXVlKG1uLT53cSk7CisJaWYgKG1uICYmICFJU19FUlIobW4pKQogCQlrZnJlZSht bik7Ci0JfQogCiAJcmV0dXJuIGVyciA/IEVSUl9QVFIoZXJyKSA6IG1tLT5tbjsKIH0KQEAgLTI3 Myw3ICsyOTAsNiBAQCBpOTE1X2dlbV91c2VycHRyX2luaXRfX21tdV9ub3RpZmllcihzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCW1vLT5vYmogPSBvYmo7CiAJbW8tPml0LnN0YXJ0 ID0gb2JqLT51c2VycHRyLnB0cjsKIAltby0+aXQubGFzdCA9IG9iai0+dXNlcnB0ci5wdHIgKyBv YmotPmJhc2Uuc2l6ZSAtIDE7Ci0JSU5JVF9XT1JLKCZtby0+d29yaywgY2FuY2VsX3VzZXJwdHIp OwogCiAJb2JqLT51c2VycHRyLm1tdV9vYmplY3QgPSBtbzsKIAlyZXR1cm4gMDsKQEAgLTI4Nyw3 ICszMDMsNiBAQCBpOTE1X21tdV9ub3RpZmllcl9mcmVlKHN0cnVjdCBpOTE1X21tdV9ub3RpZmll ciAqbW4sCiAJCXJldHVybjsKIAogCW1tdV9ub3RpZmllcl91bnJlZ2lzdGVyKCZtbi0+bW4sIG1t KTsKLQlkZXN0cm95X3dvcmtxdWV1ZShtbi0+d3EpOwogCWtmcmVlKG1uKTsKIH0KIApAQCAtNDgy LDE1ICs0OTcsMTAgQEAgX19pOTE1X2dlbV91c2VycHRyX3NldF9hY3RpdmUoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJcmV0dXJuIDA7CiAKIAlzcGluX2xvY2soJm9iai0+dXNl cnB0ci5tbXVfb2JqZWN0LT5tbi0+bG9jayk7Ci0JLyogSW4gb3JkZXIgdG8gc2VyaWFsaXNlIGdl dF9wYWdlcyB3aXRoIGFuIG91dHN0YW5kaW5nCi0JICogY2FuY2VsX3VzZXJwdHIsIHdlIG11c3Qg ZHJvcCB0aGUgc3RydWN0X211dGV4IGFuZCB0cnkgYWdhaW4uCi0JICovCi0JaWYgKCF2YWx1ZSkK LQkJZGVsX29iamVjdChvYmotPnVzZXJwdHIubW11X29iamVjdCk7Ci0JZWxzZSBpZiAoIXdvcmtf cGVuZGluZygmb2JqLT51c2VycHRyLm1tdV9vYmplY3QtPndvcmspKQorCWlmICh2YWx1ZSkKIAkJ YWRkX29iamVjdChvYmotPnVzZXJwdHIubW11X29iamVjdCk7CiAJZWxzZQotCQlyZXQgPSAtRUFH QUlOOworCQlkZWxfb2JqZWN0KG9iai0+dXNlcnB0ci5tbXVfb2JqZWN0KTsKIAlzcGluX3VubG9j aygmb2JqLT51c2VycHRyLm1tdV9vYmplY3QtPm1uLT5sb2NrKTsKICNlbmRpZgogCi0tIAoyLjE5 LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=