From mboxrd@z Thu Jan 1 00:00:00 1970 From: jglisse@redhat.com Subject: [RFC PATCH 01/13] drm/nouveau/vmm: enable page table iterator over non populated range Date: Fri, 9 Mar 2018 22:21:29 -0500 Message-ID: <20180310032141.6096-2-jglisse@redhat.com> References: <20180310032141.6096-1-jglisse@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180310032141.6096-1-jglisse@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org Cc: Ralph Campbell , Evgeny Baskakov , linux-mm@kvack.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Ben Skeggs , John Hubbard List-Id: dri-devel@lists.freedesktop.org RnJvbTogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+CgpUaGlzIHBhdGNoIG1v ZGlmeSB0aGUgcGFnZSB0YWJsZSBpdGVyYXRvciB0byBzdXBwb3J0IGVtcHR5IHJhbmdlIHdoZW4K dW5tYXBpbmcgYSByYW5nZSAoaWUgd2hlbiBpdCBpcyBub3QgdHJ5aW5nIHRvIHBvcHVsYXRlIHRo ZSByYW5nZSkuCgpTaWduZWQtb2ZmLWJ5OiBKw6lyw7RtZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0 LmNvbT4KQ2M6IEJlbiBTa2VnZ3MgPGJza2VnZ3NAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL2dw dS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9tbXUvdm1tLmMgfCA3NSArKysrKysrKysrKysrKysr KystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9t bXUvdm1tLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9tbXUvdm1tLmMK aW5kZXggOTM5NDZkY2VlMzE5Li4yMGQzMTUyNmJhOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L21tdS92bW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0v bm91dmVhdS9udmttL3N1YmRldi9tbXUvdm1tLmMKQEAgLTc1LDYgKzc1LDcgQEAgc3RydWN0IG52 a21fdm1tX2l0ZXIgewogCXN0cnVjdCBudmttX3ZtbSAqdm1tOwogCXU2NCBjbnQ7CiAJdTE2IG1h eCwgbHZsOworCXU2NCBzdGFydCwgYWRkcjsKIAl1MzIgcHRlW05WS01fVk1NX0xFVkVMU19NQVhd OwogCXN0cnVjdCBudmttX3ZtbV9wdCAqcHRbTlZLTV9WTU1fTEVWRUxTX01BWF07CiAJaW50IGZs dXNoOwpAQCAtNDg1LDYgKzQ4NiwyMyBAQCBudmttX3ZtbV9yZWZfc3dwdChzdHJ1Y3QgbnZrbV92 bW1faXRlciAqaXQsIHN0cnVjdCBudmttX3ZtbV9wdCAqcGdkLCB1MzIgcGRlaSkKIAlyZXR1cm4g dHJ1ZTsKIH0KIAorc3RhdGljIGlubGluZSB1NjQKK252a21fdm1tX2l0ZXJfYWRkcihjb25zdCBz dHJ1Y3QgbnZrbV92bW1faXRlciAqaXQsCisJCSAgIGNvbnN0IHN0cnVjdCBudmttX3ZtbV9kZXNj ICpkZXNjKQoreworCWludCBtYXggPSBpdC0+bWF4OworCXU2NCBhZGRyOworCisJLyogUmVjb25z dHJ1Y3QgYWRkcmVzcyAqLworCWFkZHIgPSBpdC0+cHRlW21heC0tXTsKKwlkbyB7CisJCWFkZHIg ID0gYWRkciA8PCBkZXNjW21heF0uYml0czsKKwkJYWRkciB8PSBpdC0+cHRlW21heF07CisJfSB3 aGlsZSAobWF4LS0pOworCisJcmV0dXJuIGFkZHI7Cit9CisKIHN0YXRpYyBpbmxpbmUgdTY0CiBu dmttX3ZtbV9pdGVyKHN0cnVjdCBudmttX3ZtbSAqdm1tLCBjb25zdCBzdHJ1Y3QgbnZrbV92bW1f cGFnZSAqcGFnZSwKIAkgICAgICB1NjQgYWRkciwgdTY0IHNpemUsIGNvbnN0IGNoYXIgKm5hbWUs IGJvb2wgcmVmLApAQCAtNDk0LDIxICs1MTIsMjMgQEAgbnZrbV92bW1faXRlcihzdHJ1Y3QgbnZr bV92bW0gKnZtbSwgY29uc3Qgc3RydWN0IG52a21fdm1tX3BhZ2UgKnBhZ2UsCiB7CiAJY29uc3Qg c3RydWN0IG52a21fdm1tX2Rlc2MgKmRlc2MgPSBwYWdlLT5kZXNjOwogCXN0cnVjdCBudmttX3Zt bV9pdGVyIGl0OwotCXU2NCBiaXRzID0gYWRkciA+PiBwYWdlLT5zaGlmdDsKKwl1NjQgYWRkcl9i aXRzID0gYWRkciA+PiBwYWdlLT5zaGlmdDsKIAogCWl0LnBhZ2UgPSBwYWdlOwogCWl0LmRlc2Mg PSBkZXNjOwogCWl0LnZtbSA9IHZtbTsKIAlpdC5jbnQgPSBzaXplID4+IHBhZ2UtPnNoaWZ0Owog CWl0LmZsdXNoID0gTlZLTV9WTU1fTEVWRUxTX01BWDsKKwlpdC5zdGFydCA9IGl0LmFkZHIgPSBh ZGRyOwogCiAJLyogRGVjb25zdHJ1Y3QgYWRkcmVzcyBpbnRvIFBURSBpbmRpY2VzIGZvciBlYWNo IG1hcHBpbmcgbGV2ZWwuICovCiAJZm9yIChpdC5sdmwgPSAwOyBkZXNjW2l0Lmx2bF0uYml0czsg aXQubHZsKyspIHsKLQkJaXQucHRlW2l0Lmx2bF0gPSBiaXRzICYgKCgxIDw8IGRlc2NbaXQubHZs XS5iaXRzKSAtIDEpOwotCQliaXRzID4+PSBkZXNjW2l0Lmx2bF0uYml0czsKKwkJaXQucHRlW2l0 Lmx2bF0gPSBhZGRyX2JpdHMgJiAoKDEgPDwgZGVzY1tpdC5sdmxdLmJpdHMpIC0gMSk7CisJCWFk ZHJfYml0cyA+Pj0gZGVzY1tpdC5sdmxdLmJpdHM7CiAJfQogCWl0Lm1heCA9IC0taXQubHZsOwog CWl0LnB0W2l0Lm1heF0gPSB2bW0tPnBkOworCWFkZHJfYml0cyA9IGFkZHIgPj4gcGFnZS0+c2hp ZnQ7CiAKIAlpdC5sdmwgPSAwOwogCVRSQSgmaXQsICIlczogJTAxNmxseCAlMDE2bGx4ICVkICVs bGQgUFRFcyIsIG5hbWUsCkBAIC01MjEsNyArNTQxLDggQEAgbnZrbV92bW1faXRlcihzdHJ1Y3Qg bnZrbV92bW0gKnZtbSwgY29uc3Qgc3RydWN0IG52a21fdm1tX3BhZ2UgKnBhZ2UsCiAJCWNvbnN0 IGludCB0eXBlID0gZGVzYy0+dHlwZSA9PSBTUFQ7CiAJCWNvbnN0IHUzMiBwdGVuID0gMSA8PCBk ZXNjLT5iaXRzOwogCQljb25zdCB1MzIgcHRlaSA9IGl0LnB0ZVswXTsKLQkJY29uc3QgdTMyIHB0 ZXMgPSBtaW5fdCh1NjQsIGl0LmNudCwgcHRlbiAtIHB0ZWkpOworCQl1MzIgcHRlcyA9IG1pbl90 KHU2NCwgaXQuY250LCBwdGVuIC0gcHRlaSk7CisJCXU2NCB0bXA7CiAKIAkJLyogV2FsayBkb3du IHRoZSB0cmVlLCBmaW5kaW5nIHBhZ2UgdGFibGVzIGZvciBlYWNoIGxldmVsLiAqLwogCQlmb3Ig KDsgaXQubHZsOyBpdC5sdmwtLSkgewpAQCAtNTI5LDkgKzU1MCwxNCBAQCBudmttX3ZtbV9pdGVy KHN0cnVjdCBudmttX3ZtbSAqdm1tLCBjb25zdCBzdHJ1Y3QgbnZrbV92bW1fcGFnZSAqcGFnZSwK IAkJCXN0cnVjdCBudmttX3ZtbV9wdCAqcGdkID0gcGd0OwogCiAJCQkvKiBTb2Z0d2FyZSBQVC4g Ki8KLQkJCWlmIChyZWYgJiYgTlZLTV9WTU1fUERFX0lOVkFMSUQocGdkLT5wZGVbcGRlaV0pKSB7 Ci0JCQkJaWYgKCFudmttX3ZtbV9yZWZfc3dwdCgmaXQsIHBnZCwgcGRlaSkpCi0JCQkJCWdvdG8g ZmFpbDsKKwkJCWlmIChOVktNX1ZNTV9QREVfSU5WQUxJRChwZ2QtPnBkZVtwZGVpXSkpIHsKKwkJ CQlpZiAocmVmKSB7CisJCQkJCWlmICghbnZrbV92bW1fcmVmX3N3cHQoJml0LCBwZ2QsIHBkZWkp KQorCQkJCQkJZ290byBmYWlsOworCQkJCX0gZWxzZSB7CisJCQkJCWl0LnB0ZVtpdC5sdmxdICs9 IDE7CisJCQkJCWdvdG8gbmV4dDsKKwkJCQl9CiAJCQl9CiAJCQlpdC5wdFtpdC5sdmwgLSAxXSA9 IHBndCA9IHBnZC0+cGRlW3BkZWldOwogCkBAIC01NDUsOSArNTcxLDE2IEBAIG52a21fdm1tX2l0 ZXIoc3RydWN0IG52a21fdm1tICp2bW0sIGNvbnN0IHN0cnVjdCBudmttX3ZtbV9wYWdlICpwYWdl LAogCQkJCWlmICghbnZrbV92bW1fcmVmX2h3cHQoJml0LCBwZ2QsIHBkZWkpKQogCQkJCQlnb3Rv IGZhaWw7CiAJCQl9CisKKwkJCS8qIFdpdGggSE1NIHdlIG1pZ2h0IHdhbGsgZG93biB1bi1wb3B1 bGF0ZWQgcmFuZ2UgKi8KKwkJCWlmICghcGd0KSB7CisJCQkJaXQucHRlW2l0Lmx2bF0gKz0gMTsK KwkJCQlnb3RvIG5leHQ7CisJCQl9CiAJCX0KIAogCQkvKiBIYW5kbGUgUFRFIHVwZGF0ZXMuICov CisJCWl0LmFkZHIgPSBudmttX3ZtbV9pdGVyX2FkZHIoJml0LCBkZXNjKSA8PCBQQUdFX1NISUZU OwogCQlpZiAoIVJFRl9QVEVTIHx8IFJFRl9QVEVTKCZpdCwgcHRlaSwgcHRlcykpIHsKIAkJCXN0 cnVjdCBudmttX21tdV9wdCAqcHQgPSBwZ3QtPnB0W3R5cGVdOwogCQkJaWYgKE1BUF9QVEVTIHx8 IENMUl9QVEVTKSB7CkBAIC01NTgsMzIgKzU5MSwyNiBAQCBudmttX3ZtbV9pdGVyKHN0cnVjdCBu dmttX3ZtbSAqdm1tLCBjb25zdCBzdHJ1Y3QgbnZrbV92bW1fcGFnZSAqcGFnZSwKIAkJCQludmtt X3ZtbV9mbHVzaF9tYXJrKCZpdCk7CiAJCQl9CiAJCX0KKwkJaXQucHRlW2l0Lmx2bF0gKz0gcHRl czsKIAorbmV4dDoKIAkJLyogV2FsayBiYWNrIHVwIHRoZSB0cmVlIHRvIHRoZSBuZXh0IHBvc2l0 aW9uLiAqLwotCQlpdC5wdGVbaXQubHZsXSArPSBwdGVzOwotCQlpdC5jbnQgLT0gcHRlczsKLQkJ aWYgKGl0LmNudCkgewotCQkJd2hpbGUgKGl0LnB0ZVtpdC5sdmxdID09ICgxIDw8IGRlc2NbaXQu bHZsXS5iaXRzKSkgewotCQkJCWl0LnB0ZVtpdC5sdmwrK10gPSAwOwotCQkJCWl0LnB0ZVtpdC5s dmxdKys7Ci0JCQl9CisJCXdoaWxlIChpdC5wdGVbaXQubHZsXSA9PSAoMSA8PCBkZXNjW2l0Lmx2 bF0uYml0cykpIHsKKwkJCWl0LnB0ZVtpdC5sdmwrK10gPSAwOworCQkJaWYgKGl0Lmx2bCA9PSBp dC5tYXgpCisJCQkJYnJlYWs7CisJCQlpdC5wdGVbaXQubHZsXSsrOwogCQl9CisJCXRtcCA9IG52 a21fdm1tX2l0ZXJfYWRkcigmaXQsIGRlc2MpOworCQlpdC5jbnQgLT0gbWluX3QodTY0LCBpdC5j bnQsIHRtcCAtIGFkZHJfYml0cyk7CisJCWFkZHJfYml0cyA9IHRtcDsKIAl9OwogCiAJbnZrbV92 bW1fZmx1c2goJml0KTsKIAlyZXR1cm4gfjBVTEw7CiAKIGZhaWw6Ci0JLyogUmVjb25zdHJ1Y3Qg dGhlIGZhaWx1cmUgYWRkcmVzcyBzbyB0aGUgY2FsbGVyIGlzIGFibGUgdG8KLQkgKiByZXZlcnNl IGFueSBwYXJ0aWFsbHkgY29tcGxldGVkIG9wZXJhdGlvbnMuCi0JICovCi0JYWRkciA9IGl0LnB0 ZVtpdC5tYXgtLV07Ci0JZG8gewotCQlhZGRyICA9IGFkZHIgPDwgZGVzY1tpdC5tYXhdLmJpdHM7 Ci0JCWFkZHIgfD0gaXQucHRlW2l0Lm1heF07Ci0JfSB3aGlsZSAoaXQubWF4LS0pOwotCi0JcmV0 dXJuIGFkZHIgPDwgcGFnZS0+c2hpZnQ7CisJcmV0dXJuIGFkZHJfYml0cyA8PCBwYWdlLT5zaGlm dDsKIH0KIAogc3RhdGljIHZvaWQKLS0gCjIuMTQuMwoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==