From mboxrd@z Thu Jan 1 00:00:00 1970 From: jglisse@redhat.com Subject: [RFC PATCH 4/5] mm/hmm: add support for peer to peer to HMM device memory Date: Tue, 29 Jan 2019 12:47:27 -0500 Message-ID: <20190129174728.6430-5-jglisse@redhat.com> References: <20190129174728.6430-1-jglisse@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0B9D16E90E for ; Tue, 29 Jan 2019 17:47:54 +0000 (UTC) In-Reply-To: <20190129174728.6430-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: linux-mm@kvack.org Cc: Joerg Roedel , "Rafael J . Wysocki" , Greg Kroah-Hartman , Felix Kuehling , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Christoph Hellwig , iommu@lists.linux-foundation.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Jason Gunthorpe , linux-pci@vger.kernel.org, Bjorn Helgaas , Robin Murphy , Logan Gunthorpe , Christian Koenig , Marek Szyprowski List-Id: dri-devel@lists.freedesktop.org RnJvbTogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+CgpTaWduZWQtb2ZmLWJ5 OiBKw6lyw7RtZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0LmNvbT4KQ2M6IExvZ2FuIEd1bnRob3Jw ZSA8bG9nYW5nQGRlbHRhdGVlLmNvbT4KQ2M6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxp bnV4Zm91bmRhdGlvbi5vcmc+CkNjOiBSYWZhZWwgSi4gV3lzb2NraSA8cmFmYWVsQGtlcm5lbC5v cmc+CkNjOiBCam9ybiBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPgpDYzogQ2hyaXN0aWFu IEtvZW5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgpDYzogRmVsaXggS3VlaGxpbmcgPEZl bGl4Lkt1ZWhsaW5nQGFtZC5jb20+CkNjOiBKYXNvbiBHdW50aG9ycGUgPGpnZ0BtZWxsYW5veC5j b20+CkNjOiBsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCkNjOiBkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCkNjOiBDaHJpc3RvcGggSGVsbHdpZyA8aGNoQGxzdC5kZT4KQ2M6IE1hcmVr IFN6eXByb3dza2kgPG0uc3p5cHJvd3NraUBzYW1zdW5nLmNvbT4KQ2M6IFJvYmluIE11cnBoeSA8 cm9iaW4ubXVycGh5QGFybS5jb20+CkNjOiBKb2VyZyBSb2VkZWwgPGpyb2VkZWxAc3VzZS5kZT4K Q2M6IGlvbW11QGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCi0tLQogaW5jbHVkZS9saW51eC9o bW0uaCB8IDQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbW0vaG1tLmMgICAg ICAgICAgICB8IDYzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LQogMiBmaWxlcyBjaGFuZ2VkLCAxMDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2htbS5oIGIvaW5jbHVkZS9saW51eC9obW0uaAppbmRl eCA0YTE0NTRlM2VmYmEuLjdhM2FjMTgyY2M0OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9o bW0uaAorKysgYi9pbmNsdWRlL2xpbnV4L2htbS5oCkBAIC03MTAsNiArNzEwLDUzIEBAIHN0cnVj dCBobW1fZGV2bWVtX29wcyB7CiAJCSAgICAgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsCiAJCSAg ICAgdW5zaWduZWQgaW50IGZsYWdzLAogCQkgICAgIHBtZF90ICpwbWRwKTsKKworCS8qCisJICog cDJwX21hcCgpIC0gbWFwIHBhZ2UgZm9yIHBlZXIgdG8gcGVlciBiZXR3ZWVuIGRldmljZQorCSAq IEBkZXZtZW06IGRldmljZSBtZW1vcnkgc3RydWN0dXJlIChzZWUgc3RydWN0IGhtbV9kZXZtZW0p CisJICogQHJhbmdlOiByYW5nZSBvZiB2aXJ0dWFsIGFkZHJlc3MgdGhhdCBpcyBiZWluZyBtYXBw ZWQKKwkgKiBAZGV2aWNlOiBkZXZpY2UgdGhlIHJhbmdlIGlzIGJlaW5nIG1hcCB0bworCSAqIEBh ZGRyOiBmaXJzdCB2aXJ0dWFsIGFkZHJlc3MgaW4gdGhlIHJhbmdlIHRvIGNvbnNpZGVyCisJICog QHBhOiBkZXZpY2UgYWRkcmVzcyAod2hlcmUgYWN0dWFsIG1hcHBpbmcgaXMgc3RvcmUpCisJICog UmV0dXJuczogbnVtYmVyIG9mIHBhZ2Ugc3VjY2Vzc2Z1bHkgbWFwcGVkLCAwIG90aGVyd2lzZQor CSAqCisJICogTWFwIHBhZ2UgYmVsb25naW5nIHRvIGRldm1lbSB0byBhbm90aGVyIGRldmljZSBm b3IgcGVlciB0byBwZWVyCisJICogYWNjZXNzLiBEZXZpY2UgY2FuIGRlY2lkZSBub3QgdG8gbWFw IGluIHdoaWNoIGNhc2UgbWVtb3J5IHdpbGwKKwkgKiBiZSBtaWdyYXRlZCB0byBtYWluIG1lbW9y eS4KKwkgKgorCSAqIEFsc28gdGhlcmUgaXMgbm8gZ2FyYW50ZWUgdGhhdCBhbGwgdGhlIHBhZ2Vz IGluIHRoZSByYW5nZSBkb2VzCisJICogYmVsb25ncyB0byB0aGUgZGV2bWVtIHNvIGl0IGlzIHVw IHRvIHRoZSBmdW5jdGlvbiB0byBjaGVjayB0aGF0CisJICogZXZlcnkgc2luZ2xlIHBhZ2UgZG9l cyBiZWxvbmcgdG8gZGV2bWVtLgorCSAqCisJICogTm90ZSBmb3Igbm93IHdlIGRvIG5vdCBjYXJl IGFib3V0IGVycm9yIGV4ZWN0IGVycm9yLCBzbyBvbiBmYWlsdXJlCisJICogZnVuY3Rpb24gc2hv dWxkIGp1c3QgcmV0dXJuIDAuCisJICovCisJbG9uZyAoKnAycF9tYXApKHN0cnVjdCBobW1fZGV2 bWVtICpkZXZtZW0sCisJCQlzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSwKKwkJCXN0cnVjdCBkZXZp Y2UgKmRldmljZSwKKwkJCXVuc2lnbmVkIGxvbmcgYWRkciwKKwkJCWRtYV9hZGRyX3QgKnBhcyk7 CisKKwkvKgorCSAqIHAycF91bm1hcCgpIC0gdW5tYXAgcGFnZSBmcm9tIHBlZXIgdG8gcGVlciBi ZXR3ZWVuIGRldmljZQorCSAqIEBkZXZtZW06IGRldmljZSBtZW1vcnkgc3RydWN0dXJlIChzZWUg c3RydWN0IGhtbV9kZXZtZW0pCisJICogQHJhbmdlOiByYW5nZSBvZiB2aXJ0dWFsIGFkZHJlc3Mg dGhhdCBpcyBiZWluZyBtYXBwZWQKKwkgKiBAZGV2aWNlOiBkZXZpY2UgdGhlIHJhbmdlIGlzIGJl aW5nIG1hcCB0bworCSAqIEBhZGRyOiBmaXJzdCB2aXJ0dWFsIGFkZHJlc3MgaW4gdGhlIHJhbmdl IHRvIGNvbnNpZGVyCisJICogQHBhOiBkZXZpY2UgYWRkcmVzcyAod2hlcmUgYWN0dWFsIG1hcHBp bmcgaXMgc3RvcmUpCisJICogUmV0dXJuczogbnVtYmVyIG9mIHBhZ2Ugc3VjY2Vzc2Z1bHkgdW5t YXBwZWQsIDAgb3RoZXJ3aXNlCisJICoKKwkgKiBVbm1hcCBwYWdlIGJlbG9uZ2luZyB0byBkZXZt ZW0gcHJldmlvdXNseSBtYXAgd2l0aCBwMnBfbWFwKCkuCisJICoKKwkgKiBOb3RlIHRoZXJlIGlz IG5vIGdhcmFudGVlIHRoYXQgYWxsIHRoZSBwYWdlcyBpbiB0aGUgcmFuZ2UgZG9lcworCSAqIGJl bG9uZ3MgdG8gdGhlIGRldm1lbSBzbyBpdCBpcyB1cCB0byB0aGUgZnVuY3Rpb24gdG8gY2hlY2sg dGhhdAorCSAqIGV2ZXJ5IHNpbmdsZSBwYWdlIGRvZXMgYmVsb25nIHRvIGRldm1lbS4KKwkgKi8K Kwl1bnNpZ25lZCBsb25nICgqcDJwX3VubWFwKShzdHJ1Y3QgaG1tX2Rldm1lbSAqZGV2bWVtLAor CQkJCSAgIHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLAorCQkJCSAgIHN0cnVjdCBkZXZpY2UgKmRl dmljZSwKKwkJCQkgICB1bnNpZ25lZCBsb25nIGFkZHIsCisJCQkJICAgZG1hX2FkZHJfdCAqcGFz KTsKIH07CiAKIC8qCmRpZmYgLS1naXQgYS9tbS9obW0uYyBiL21tL2htbS5jCmluZGV4IDFhNDQ0 ODg1NDA0ZS4uZmQ0OWIxZTExNmQwIDEwMDY0NAotLS0gYS9tbS9obW0uYworKysgYi9tbS9obW0u YwpAQCAtMTE5MywxNiArMTE5MywxOSBAQCBsb25nIGhtbV9yYW5nZV9kbWFfbWFwKHN0cnVjdCBo bW1fcmFuZ2UgKnJhbmdlLAogCQkgICAgICAgZG1hX2FkZHJfdCAqZGFkZHJzLAogCQkgICAgICAg Ym9vbCBibG9jaykKIHsKLQl1bnNpZ25lZCBsb25nIGksIG5wYWdlcywgbWFwcGVkLCBwYWdlX3Np emU7CisJdW5zaWduZWQgbG9uZyBpLCBucGFnZXMsIG1hcHBlZCwgcGFnZV9zaXplLCBhZGRyOwog CWxvbmcgcmV0OwogCithZ2FpbjoKIAlyZXQgPSBobW1fcmFuZ2VfZmF1bHQocmFuZ2UsIGJsb2Nr KTsKIAlpZiAocmV0IDw9IDApCiAJCXJldHVybiByZXQgPyByZXQgOiAtRUJVU1k7CiAKKwltYXBw ZWQgPSAwOworCWFkZHIgPSByYW5nZS0+c3RhcnQ7CiAJcGFnZV9zaXplID0gaG1tX3JhbmdlX3Bh Z2Vfc2l6ZShyYW5nZSk7CiAJbnBhZ2VzID0gKHJhbmdlLT5lbmQgLSByYW5nZS0+c3RhcnQpID4+ IHJhbmdlLT5wYWdlX3NoaWZ0OwotCWZvciAoaSA9IDAsIG1hcHBlZCA9IDA7IGkgPCBucGFnZXM7 ICsraSkgeworCWZvciAoaSA9IDA7IGkgPCBucGFnZXM7ICsraSwgYWRkciArPSBwYWdlX3NpemUp IHsKIAkJZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyID0gRE1BX0ZST01fREVWSUNFOwogCQlz dHJ1Y3QgcGFnZSAqcGFnZTsKIApAQCAtMTIyNiw2ICsxMjI5LDI5IEBAIGxvbmcgaG1tX3Jhbmdl X2RtYV9tYXAoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UsCiAJCQlnb3RvIHVubWFwOwogCQl9CiAK KwkJaWYgKGlzX2RldmljZV9wcml2YXRlX3BhZ2UocGFnZSkpIHsKKwkJCXN0cnVjdCBobW1fZGV2 bWVtICpkZXZtZW0gPSBwYWdlLT5wZ21hcC0+ZGF0YTsKKworCQkJaWYgKCFkZXZtZW0tPm9wcy0+ cDJwX21hcCB8fCAhZGV2bWVtLT5vcHMtPnAycF91bm1hcCkgeworCQkJCS8qIEZhbGwtYmFjayB0 byBtYWluIG1lbW9yeS4gKi8KKwkJCQlyYW5nZS0+ZGVmYXVsdF9mbGFncyB8PQorCQkJCQlyYW5n ZS0+ZmxhZ3NbSE1NX1BGTl9ERVZJQ0VfUFJJVkFURV07CisJCQkJZ290byBhZ2FpbjsKKwkJCX0K KworCQkJcmV0ID0gZGV2bWVtLT5vcHMtPnAycF9tYXAoZGV2bWVtLCByYW5nZSwgZGV2aWNlLAor CQkJCQkJICAgYWRkciwgZGFkZHJzKTsKKwkJCWlmIChyZXQgPD0gMCkgeworCQkJCS8qIEZhbGwt YmFjayB0byBtYWluIG1lbW9yeS4gKi8KKwkJCQlyYW5nZS0+ZGVmYXVsdF9mbGFncyB8PQorCQkJ CQlyYW5nZS0+ZmxhZ3NbSE1NX1BGTl9ERVZJQ0VfUFJJVkFURV07CisJCQkJZ290byBhZ2FpbjsK KwkJCX0KKwkJCW1hcHBlZCArPSByZXQ7CisJCQlpICs9IHJldDsKKwkJCWNvbnRpbnVlOworCQl9 CisKIAkJLyogSWYgaXQgaXMgcmVhZCBhbmQgd3JpdGUgdGhhbiBtYXAgYmktZGlyZWN0aW9uYWwu ICovCiAJCWlmIChyYW5nZS0+cGZuc1tpXSAmIHJhbmdlLT52YWx1ZXNbSE1NX1BGTl9XUklURV0p CiAJCQlkaXIgPSBETUFfQklESVJFQ1RJT05BTDsKQEAgLTEyNDIsNyArMTI2OCw5IEBAIGxvbmcg aG1tX3JhbmdlX2RtYV9tYXAoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UsCiAJcmV0dXJuIG1hcHBl ZDsKIAogdW5tYXA6Ci0JZm9yIChucGFnZXMgPSBpLCBpID0gMDsgKGkgPCBucGFnZXMpICYmIG1h cHBlZDsgKytpKSB7CisJbnBhZ2VzID0gaTsKKwlhZGRyID0gcmFuZ2UtPnN0YXJ0OworCWZvciAo aSA9IDA7IChpIDwgbnBhZ2VzKSAmJiBtYXBwZWQ7ICsraSwgYWRkciArPSBwYWdlX3NpemUpIHsK IAkJZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyID0gRE1BX0ZST01fREVWSUNFOwogCQlzdHJ1 Y3QgcGFnZSAqcGFnZTsKIApAQCAtMTI1Myw2ICsxMjgxLDE4IEBAIGxvbmcgaG1tX3JhbmdlX2Rt YV9tYXAoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UsCiAJCWlmIChkbWFfbWFwcGluZ19lcnJvcihk ZXZpY2UsIGRhZGRyc1tpXSkpCiAJCQljb250aW51ZTsKIAorCQlpZiAoaXNfZGV2aWNlX3ByaXZh dGVfcGFnZShwYWdlKSkgeworCQkJc3RydWN0IGhtbV9kZXZtZW0gKmRldm1lbSA9IHBhZ2UtPnBn bWFwLT5kYXRhOworCQkJdW5zaWduZWQgbG9uZyBpbmM7CisKKwkJCWluYyA9IGRldm1lbS0+b3Bz LT5wMnBfdW5tYXAoZGV2bWVtLCByYW5nZSwgZGV2aWNlLAorCQkJCQkJICAgICBhZGRyLCAmZGFk ZHJzW2ldKTsKKwkJCUJVR19PTihpbmMgPiBucGFnZXMpOworCQkJbWFwcGVkICs9IGluYzsKKwkJ CWkgKz0gaW5jOworCQkJY29udGludWU7CisJCX0KKwogCQkvKiBJZiBpdCBpcyByZWFkIGFuZCB3 cml0ZSB0aGFuIG1hcCBiaS1kaXJlY3Rpb25hbC4gKi8KIAkJaWYgKHJhbmdlLT5wZm5zW2ldICYg cmFuZ2UtPnZhbHVlc1tITU1fUEZOX1dSSVRFXSkKIAkJCWRpciA9IERNQV9CSURJUkVDVElPTkFM OwpAQCAtMTI4NSw3ICsxMzI1LDcgQEAgbG9uZyBobW1fcmFuZ2VfZG1hX3VubWFwKHN0cnVjdCBo bW1fcmFuZ2UgKnJhbmdlLAogCQkJIGRtYV9hZGRyX3QgKmRhZGRycywKIAkJCSBib29sIGRpcnR5 KQogewotCXVuc2lnbmVkIGxvbmcgaSwgbnBhZ2VzLCBwYWdlX3NpemU7CisJdW5zaWduZWQgbG9u ZyBpLCBucGFnZXMsIHBhZ2Vfc2l6ZSwgYWRkcjsKIAlsb25nIGNwYWdlcyA9IDA7CiAKIAkvKiBT YW5pdHkgY2hlY2suICovCkBAIC0xMjk4LDcgKzEzMzgsNyBAQCBsb25nIGhtbV9yYW5nZV9kbWFf dW5tYXAoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UsCiAKIAlwYWdlX3NpemUgPSBobW1fcmFuZ2Vf cGFnZV9zaXplKHJhbmdlKTsKIAlucGFnZXMgPSAocmFuZ2UtPmVuZCAtIHJhbmdlLT5zdGFydCkg Pj4gcmFuZ2UtPnBhZ2Vfc2hpZnQ7Ci0JZm9yIChpID0gMDsgaSA8IG5wYWdlczsgKytpKSB7CisJ Zm9yIChpID0gMCwgYWRkciA9IHJhbmdlLT5zdGFydDsgaSA8IG5wYWdlczsgKytpLCBhZGRyICs9 IHBhZ2Vfc2l6ZSkgewogCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIgPSBETUFfRlJPTV9E RVZJQ0U7CiAJCXN0cnVjdCBwYWdlICpwYWdlOwogCkBAIC0xMzE4LDYgKzEzNTgsMTkgQEAgbG9u ZyBobW1fcmFuZ2VfZG1hX3VubWFwKHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLAogCQkJCXNldF9w YWdlX2RpcnR5KHBhZ2UpOwogCQl9CiAKKwkJaWYgKGlzX2RldmljZV9wcml2YXRlX3BhZ2UocGFn ZSkpIHsKKwkJCXN0cnVjdCBobW1fZGV2bWVtICpkZXZtZW0gPSBwYWdlLT5wZ21hcC0+ZGF0YTsK KwkJCXVuc2lnbmVkIGxvbmcgcmV0OworCisJCQlCVUdfT04oIWRldm1lbS0+b3BzLT5wMnBfdW5t YXApOworCisJCQlyZXQgPSBkZXZtZW0tPm9wcy0+cDJwX3VubWFwKGRldm1lbSwgcmFuZ2UsIGRl dmljZSwKKwkJCQkJCSAgICAgYWRkciwgJmRhZGRyc1tpXSk7CisJCQlCVUdfT04ocmV0ID4gbnBh Z2VzKTsKKwkJCWkgKz0gcmV0OworCQkJY29udGludWU7CisJCX0KKwogCQkvKiBVbm1hcCBhbmQg Y2xlYXIgcGZucy9kbWEgYWRkcmVzcyAqLwogCQlkbWFfdW5tYXBfcGFnZShkZXZpY2UsIGRhZGRy c1tpXSwgcGFnZV9zaXplLCBkaXIpOwogCQlyYW5nZS0+cGZuc1tpXSA9IHJhbmdlLT52YWx1ZXNb SE1NX1BGTl9OT05FXTsKLS0gCjIuMTcuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==