From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yang, Philip" Subject: [PATCH 2/3] drm/amdgpu: support userptr cross VMAs case with HMM v2 Date: Thu, 7 Mar 2019 02:42:05 +0000 Message-ID: <20190307024145.11656-2-Philip.Yang@amd.com> References: <20190307024145.11656-1-Philip.Yang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190307024145.11656-1-Philip.Yang-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Yang, Philip" dXNlcnB0ciBtYXkgY3Jvc3MgdHdvIFZNQXMgaWYgdGhlIGZvcmtlZCBjaGlsZCBwcm9jZXNzIChu b3QgY2FsbCBleGVjCmFmdGVyIGZvcmspIG1hbGxvYyBidWZmZXIsIHRoZW4gZnJlZSBpdCwgYW5k IHRoZW4gbWFsbG9jIGxhcmdlciBzaXplCmJ1Ziwga2VyZW5sIHdpbGwgY3JlYXRlIG5ldyBWTUEg YWRqYWNlbnQgdG8gb2xkIFZNQSB3aGljaCB3YXMgY2xvbmVkCmZyb20gcGFyZW50IHByb2Nlc3Ms IHNvbWUgcGFnZXMgb2YgdXNlcnB0ciBhcmUgaW4gdGhlIGZpcnN0IFZNQSwgdGhlCnJlc3QgcGFn ZXMgYXJlIGluIHRoZSBzZWNvbmQgVk1BLgoKSE1NIGV4cGVjdHMgcmFuZ2Ugb25seSBoYXZlIG9u ZSBWTUEsIGxvb3Agb3ZlciBhbGwgVk1BcyBpbiB0aGUgYWRkcmVzcwpyYW5nZSwgY3JlYXRlIG11 bHRpcGxlIHJhbmdlcyB0byBoYW5kbGUgdGhpcyBjYXNlLiBTZWUKaXNfbWVyZ2VhYmxlX2Fub25f dm1hIGluIG1tL21tYXAuYyBmb3IgZGV0YWlscy4KCkNoYW5nZS1JZDogSTBjYThjNzdlMjhkZWFi Y2NjMTM5OTA2ZjlmZmVlMDRiN2UzODMzMTQKU2lnbmVkLW9mZi1ieTogUGhpbGlwIFlhbmcgPFBo aWxpcC5ZYW5nQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3R0bS5jIHwgMTIzICsrKysrKysrKysrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDg4 IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV90dG0uYwppbmRleCA3Y2MwYmEyNDM2OWQuLjgwMmJlYzdlZjkxNyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uYwpAQCAtNzExLDcgKzcxMSw4IEBAIHN0cnVj dCBhbWRncHVfdHRtX3R0IHsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QJKnVzZXJ0YXNrOwogCXVpbnQz Ml90CQl1c2VyZmxhZ3M7CiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0FNREdQVV9VU0VSUFRS KQotCXN0cnVjdCBobW1fcmFuZ2UJcmFuZ2U7CisJc3RydWN0IGhtbV9yYW5nZQkqcmFuZ2VzOwor CWludAkJCW5yX3JhbmdlczsKICNlbmRpZgogfTsKIApAQCAtNzIzLDYyICs3MjQsMTA1IEBAIHN0 cnVjdCBhbWRncHVfdHRtX3R0IHsKICAqIG9uY2UgYWZ0ZXJ3YXJkcyB0byBzdG9wIEhNTSB0cmFj a2luZwogICovCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0FNREdQVV9VU0VSUFRSKQorCisv KiBTdXBwb3J0IFVzZXJwdHIgcGFnZXMgY3Jvc3MgbWF4IDE2IHZtYXMgKi8KKyNkZWZpbmUgTUFY X05SX1ZNQVMJKDE2KQorCiBpbnQgYW1kZ3B1X3R0bV90dF9nZXRfdXNlcl9wYWdlcyhzdHJ1Y3Qg dHRtX3R0ICp0dG0sIHN0cnVjdCBwYWdlICoqcGFnZXMpCiB7CiAJc3RydWN0IGFtZGdwdV90dG1f dHQgKmd0dCA9ICh2b2lkICopdHRtOwogCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gZ3R0LT51c2Vy dGFzay0+bW07Ci0JdW5zaWduZWQgbG9uZyBlbmQgPSBndHQtPnVzZXJwdHIgKyB0dG0tPm51bV9w YWdlcyAqIFBBR0VfU0laRTsKLQlzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSA9ICZndHQtPnJhbmdl OwotCWludCByID0gMCwgaTsKKwl1bnNpZ25lZCBsb25nIHN0YXJ0ID0gZ3R0LT51c2VycHRyOwor CXVuc2lnbmVkIGxvbmcgZW5kID0gc3RhcnQgKyB0dG0tPm51bV9wYWdlcyAqIFBBR0VfU0laRTsK KwlzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZXM7CisJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEg PSBOVUxMLCAqdm1hc1tNQVhfTlJfVk1BU107CisJdWludDY0X3QgKnBmbnMsIGY7CisJaW50IHIg PSAwLCBpLCBucl9wYWdlczsKIAogCWlmICghbW0pIC8qIEhhcHBlbnMgZHVyaW5nIHByb2Nlc3Mg c2h1dGRvd24gKi8KIAkJcmV0dXJuIC1FU1JDSDsKIAotCWFtZGdwdV9obW1faW5pdF9yYW5nZShy YW5nZSk7Ci0KIAlkb3duX3JlYWQoJm1tLT5tbWFwX3NlbSk7CiAKLQlyYW5nZS0+dm1hID0gZmlu ZF92bWEobW0sIGd0dC0+dXNlcnB0cik7Ci0JaWYgKCFyYW5nZV9pbl92bWEocmFuZ2UtPnZtYSwg Z3R0LT51c2VycHRyLCBlbmQpKQotCQlyID0gLUVGQVVMVDsKLQllbHNlIGlmICgoZ3R0LT51c2Vy ZmxhZ3MgJiBBTURHUFVfR0VNX1VTRVJQVFJfQU5PTk9OTFkpICYmCi0JCXJhbmdlLT52bWEtPnZt X2ZpbGUpCisJLyogdXNlciBwYWdlcyBtYXkgY3Jvc3MgbXVsdGlwbGUgVk1BcyAqLworCWd0dC0+ bnJfcmFuZ2VzID0gMDsKKwlkbyB7CisJCWlmIChndHQtPm5yX3JhbmdlcyA+PSBNQVhfTlJfVk1B UykgeworCQkJRFJNX0VSUk9SKCJUb28gbWFueSBWTUFzIGluIHVzZXJwdHIgcmFuZ2VcbiIpOwor CQkJciA9IC1FRkFVTFQ7CisJCQlnb3RvIG91dDsKKwkJfQorCisJCXZtYSA9IGZpbmRfdm1hKG1t LCB2bWEgPyB2bWEtPnZtX2VuZCA6IHN0YXJ0KTsKKwkJaWYgKHVubGlrZWx5KCF2bWEpKSB7CisJ CQlyID0gLUVGQVVMVDsKKwkJCWdvdG8gb3V0OworCQl9CisJCXZtYXNbZ3R0LT5ucl9yYW5nZXMr K10gPSB2bWE7CisJfSB3aGlsZSAoZW5kID4gdm1hLT52bV9lbmQpOworCisJRFJNX0RFQlVHX0RS SVZFUigiMHglbHggbnJfcmFuZ2VzICVkIHBhZ2VzIDB4JWx4XG4iLAorCQlzdGFydCwgZ3R0LT5u cl9yYW5nZXMsIHR0bS0+bnVtX3BhZ2VzKTsKKworCWlmICh1bmxpa2VseSgoZ3R0LT51c2VyZmxh Z3MgJiBBTURHUFVfR0VNX1VTRVJQVFJfQU5PTk9OTFkpICYmCisJCXZtYXNbMF0tPnZtX2ZpbGUp KSB7CiAJCXIgPSAtRVBFUk07Ci0JaWYgKHIpCiAJCWdvdG8gb3V0OworCX0KIAotCXJhbmdlLT5w Zm5zID0ga3ZtYWxsb2NfYXJyYXkodHRtLT5udW1fcGFnZXMsIHNpemVvZih1aW50NjRfdCksCi0J CQkJICAgICBHRlBfS0VSTkVMKTsKLQlpZiAocmFuZ2UtPnBmbnMgPT0gTlVMTCkgeworCXJhbmdl cyA9IGt2bWFsbG9jX2FycmF5KGd0dC0+bnJfcmFuZ2VzLCBzaXplb2YoKnJhbmdlcyksIEdGUF9L RVJORUwpOworCWlmICh1bmxpa2VseSghcmFuZ2VzKSkgewogCQlyID0gLUVOT01FTTsKIAkJZ290 byBvdXQ7CiAJfQotCXJhbmdlLT5zdGFydCA9IGd0dC0+dXNlcnB0cjsKLQlyYW5nZS0+ZW5kID0g ZW5kOwogCi0JcmFuZ2UtPnBmbnNbMF0gPSByYW5nZS0+ZmxhZ3NbSE1NX1BGTl9WQUxJRF07Ci0J cmFuZ2UtPnBmbnNbMF0gfD0gYW1kZ3B1X3R0bV90dF9pc19yZWFkb25seSh0dG0pID8KLQkJCQkw IDogcmFuZ2UtPmZsYWdzW0hNTV9QRk5fV1JJVEVdOwotCWZvciAoaSA9IDE7IGkgPCB0dG0tPm51 bV9wYWdlczsgaSsrKQotCQlyYW5nZS0+cGZuc1tpXSA9IHJhbmdlLT5wZm5zWzBdOworCXBmbnMg PSBrdm1hbGxvY19hcnJheSh0dG0tPm51bV9wYWdlcywgc2l6ZW9mKCpwZm5zKSwgR0ZQX0tFUk5F TCk7CisJaWYgKHVubGlrZWx5KCFwZm5zKSkgeworCQlyID0gLUVOT01FTTsKKwkJZ290byBvdXRf ZnJlZV9yYW5nZXM7CisJfQorCisJZm9yIChpID0gMDsgaSA8IGd0dC0+bnJfcmFuZ2VzOyBpKysp CisJCWFtZGdwdV9obW1faW5pdF9yYW5nZSgmcmFuZ2VzW2ldKTsKKworCWYgPSByYW5nZXNbMF0u ZmxhZ3NbSE1NX1BGTl9WQUxJRF07CisJZiB8PSBhbWRncHVfdHRtX3R0X2lzX3JlYWRvbmx5KHR0 bSkgPworCQkJCTAgOiByYW5nZXNbMF0uZmxhZ3NbSE1NX1BGTl9XUklURV07CisJbWVtc2V0NjQo cGZucywgZiwgdHRtLT5udW1fcGFnZXMpOworCisJZm9yIChucl9wYWdlcyA9IDAsIGkgPSAwOyBp IDwgZ3R0LT5ucl9yYW5nZXM7IGkrKykgeworCQlyYW5nZXNbaV0udm1hID0gdm1hc1tpXTsKKwkJ cmFuZ2VzW2ldLnN0YXJ0ID0gbWF4KHN0YXJ0LCB2bWFzW2ldLT52bV9zdGFydCk7CisJCXJhbmdl c1tpXS5lbmQgPSBtaW4oZW5kLCB2bWFzW2ldLT52bV9lbmQpOworCQlyYW5nZXNbaV0ucGZucyA9 IHBmbnMgKyBucl9wYWdlczsKKwkJbnJfcGFnZXMgKz0gKHJhbmdlc1tpXS5lbmQgLSByYW5nZXNb aV0uc3RhcnQpIC8gUEFHRV9TSVpFOworCisJCXIgPSBobW1fdm1hX2ZhdWx0KCZyYW5nZXNbaV0s IHRydWUpOworCQlpZiAodW5saWtlbHkocikpCisJCQlicmVhazsKKwl9CisJaWYgKHVubGlrZWx5 KHIpKSB7CisJCXdoaWxlIChpLS0pCisJCQlobW1fdm1hX3JhbmdlX2RvbmUoJnJhbmdlc1tpXSk7 CiAKLQkvKiBUaGlzIG1heSB0cmlnZ2VyIHBhZ2UgdGFibGUgdXBkYXRlICovCi0JciA9IGhtbV92 bWFfZmF1bHQocmFuZ2UsIHRydWUpOwotCWlmIChyKQogCQlnb3RvIG91dF9mcmVlX3BmbnM7CisJ fQogCiAJdXBfcmVhZCgmbW0tPm1tYXBfc2VtKTsKIAogCWZvciAoaSA9IDA7IGkgPCB0dG0tPm51 bV9wYWdlczsgaSsrKQotCQlwYWdlc1tpXSA9IGhtbV9wZm5fdG9fcGFnZShyYW5nZSwgcmFuZ2Ut PnBmbnNbaV0pOworCQlwYWdlc1tpXSA9IGhtbV9wZm5fdG9fcGFnZSgmcmFuZ2VzWzBdLCBwZm5z W2ldKTsKKwlndHQtPnJhbmdlcyA9IHJhbmdlczsKIAogCXJldHVybiAwOwogCiBvdXRfZnJlZV9w Zm5zOgotCWt2ZnJlZShyYW5nZS0+cGZucyk7Ci0JcmFuZ2UtPnBmbnMgPSBOVUxMOworCWt2ZnJl ZShwZm5zKTsKK291dF9mcmVlX3JhbmdlczoKKwlrdmZyZWUocmFuZ2VzKTsKIG91dDoKIAl1cF9y ZWFkKCZtbS0+bW1hcF9zZW0pOworCiAJcmV0dXJuIHI7CiB9CiAKQEAgLTc5MiwxNSArODM2LDIz IEBAIGJvb2wgYW1kZ3B1X3R0bV90dF9nZXRfdXNlcl9wYWdlc19kb25lKHN0cnVjdCB0dG1fdHQg KnR0bSkKIHsKIAlzdHJ1Y3QgYW1kZ3B1X3R0bV90dCAqZ3R0ID0gKHZvaWQgKil0dG07CiAJYm9v bCByID0gZmFsc2U7CisJaW50IGk7CiAKIAlpZiAoIWd0dCB8fCAhZ3R0LT51c2VycHRyKQogCQly ZXR1cm4gZmFsc2U7CiAKLQlXQVJOX09OQ0UoIWd0dC0+cmFuZ2UucGZucywgIk5vIHVzZXIgcGFn ZXMgdG8gY2hlY2tcbiIpOwotCWlmIChndHQtPnJhbmdlLnBmbnMpIHsKLQkJciA9IGhtbV92bWFf cmFuZ2VfZG9uZSgmZ3R0LT5yYW5nZSk7Ci0JCWt2ZnJlZShndHQtPnJhbmdlLnBmbnMpOwotCQln dHQtPnJhbmdlLnBmbnMgPSBOVUxMOworCURSTV9ERUJVR19EUklWRVIoInVzZXJfcGFnZXNfZG9u ZSAweCVsbHggbnJfcmFuZ2VzICVkIHBhZ2VzIDB4JWx4XG4iLAorCQlndHQtPnVzZXJwdHIsIGd0 dC0+bnJfcmFuZ2VzLCB0dG0tPm51bV9wYWdlcyk7CisKKwlXQVJOX09OQ0UoIWd0dC0+cmFuZ2Vz IHx8ICFndHQtPnJhbmdlc1swXS5wZm5zLAorCQkiTm8gdXNlciBwYWdlcyB0byBjaGVja1xuIik7 CisKKwlpZiAoZ3R0LT5yYW5nZXMpIHsKKwkJZm9yIChpID0gMDsgaSA8IGd0dC0+bnJfcmFuZ2Vz OyBpKyspCisJCQlyIHw9IGhtbV92bWFfcmFuZ2VfZG9uZSgmZ3R0LT5yYW5nZXNbaV0pOworCQlr dmZyZWUoZ3R0LT5yYW5nZXNbMF0ucGZucyk7CisJCWt2ZnJlZShndHQtPnJhbmdlcyk7CisJCWd0 dC0+cmFuZ2VzID0gTlVMTDsKIAl9CiAKIAlyZXR1cm4gcjsKQEAgLTg4NCw4ICs5MzYsOSBAQCBz dGF0aWMgdm9pZCBhbWRncHVfdHRtX3R0X3VucGluX3VzZXJwdHIoc3RydWN0IHR0bV90dCAqdHRt KQogCXNnX2ZyZWVfdGFibGUodHRtLT5zZyk7CiAKICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1f QU1ER1BVX1VTRVJQVFIpCi0JaWYgKGd0dC0+cmFuZ2UucGZucyAmJgotCSAgICB0dG0tPnBhZ2Vz WzBdID09IGhtbV9wZm5fdG9fcGFnZSgmZ3R0LT5yYW5nZSwgZ3R0LT5yYW5nZS5wZm5zWzBdKSkK KwlpZiAoZ3R0LT5yYW5nZXMgJiYKKwkgICAgdHRtLT5wYWdlc1swXSA9PSBobW1fcGZuX3RvX3Bh Z2UoJmd0dC0+cmFuZ2VzWzBdLAorCQkJCQkgICAgIGd0dC0+cmFuZ2VzWzBdLnBmbnNbMF0pKQog CQlXQVJOX09OQ0UoMSwgIk1pc3NpbmcgZ2V0X3VzZXJfcGFnZV9kb25lXG4iKTsKICNlbmRpZgog fQotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZng=