From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoph Hellwig Subject: [PATCH 06/10] nouveau: simplify nouveau_dmem_migrate_to_ram Date: Wed, 14 Aug 2019 09:59:24 +0200 Message-ID: <20190814075928.23766-7-hch@lst.de> References: <20190814075928.23766-1-hch@lst.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190814075928.23766-1-hch-jcswGhMUV9g@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Jason Gunthorpe , Ben Skeggs Cc: Ralph Campbell , nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Bharata B Rao , linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org, Andrew Morton List-Id: dri-devel@lists.freedesktop.org RmFjdG9yIHRoZSBtYWluIGNvcHkgcGFnZSB0byByYW0gcm91dGluZSBvdXQgaW50byBhIGhlbHBl ciB0aGF0IGFjdHMgb24KYSBzaW5nbGUgcGFnZSBhbmQgd2hpY2ggZG9lc24ndCByZXF1aXJlIHRo ZSBub3V2ZWF1X2RtZW1fZmF1bHQKc3RydWN0dXJlIGZvciBhcmd1bWVudCBwYXNzaW5nLiAgQWxz byByZW1vdmUgdGhlIGxvb3Agb3ZlciBtdWx0aXBsZQpwYWdlcyBhcyB3ZSBvbmx5IGhhbmRsZSBv bmUgYXQgdGhlIG1vbWVudCwgYWx0aG91Z2ggdGhlIHN0cnVjdHVyZSBvZgp0aGUgbWFpbiB3b3Jr ZXIgZnVuY3Rpb24gbWFrZXMgaXQgcmVsYXRpdmVseSBlYXN5IHRvIGFkZCBtdWx0aSBwYWdlCnN1 cHBvcnQgYmFjayBpZiBuZWVkZWQgaW4gdGhlIGZ1dHVyZS4gIEJ1dCBhdCBsZWFzdCBmb3Igbm93 IHRoaXMgYXZvaWQKdGhlIG5lZWRlZCB0byBkeW5hbWljYWxseSBhbGxvY2F0ZSBtZW1vcnkgZm9y IHRoZSBkbWEgYWRkcmVzc2VzIGluCndoYXQgaXMgZXNzZW50aWFsbHkgdGhlIHBhZ2UgZmF1bHQg cGF0aC4KClNpZ25lZC1vZmYtYnk6IENocmlzdG9waCBIZWxsd2lnIDxoY2hAbHN0LmRlPgpSZXZp ZXdlZC1ieTogUmFscGggQ2FtcGJlbGwgPHJjYW1wYmVsbEBudmlkaWEuY29tPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jIHwgMTYxICsrKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAxMjEgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYwppbmRleCAyMTA1MmE0YWFm NjkuLjdkZGVkODY0MDIyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91 dmVhdV9kbWVtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMK QEAgLTg2LDEzICs4Niw2IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IG5vdXZlYXVfZG1lbSAqcGFn ZV90b19kbWVtKHN0cnVjdCBwYWdlICpwYWdlKQogCXJldHVybiBjb250YWluZXJfb2YocGFnZS0+ cGdtYXAsIHN0cnVjdCBub3V2ZWF1X2RtZW0sIHBhZ2VtYXApOwogfQogCi1zdHJ1Y3Qgbm91dmVh dV9kbWVtX2ZhdWx0IHsKLQlzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybTsKLQlzdHJ1Y3Qgbm91dmVh dV9mZW5jZSAqZmVuY2U7Ci0JZG1hX2FkZHJfdCAqZG1hOwotCXVuc2lnbmVkIGxvbmcgbnBhZ2Vz OwotfTsKLQogc3RydWN0IG5vdXZlYXVfbWlncmF0ZSB7CiAJc3RydWN0IHZtX2FyZWFfc3RydWN0 ICp2bWE7CiAJc3RydWN0IG5vdXZlYXVfZHJtICpkcm07CkBAIC0xNDYsMTMwICsxMzksNTUgQEAg c3RhdGljIHZvaWQgbm91dmVhdV9kbWVtX2ZlbmNlX2RvbmUoc3RydWN0IG5vdXZlYXVfZmVuY2Ug KipmZW5jZSkKIAl9CiB9CiAKLXN0YXRpYyB2b2lkCi1ub3V2ZWF1X2RtZW1fZmF1bHRfYWxsb2Nf YW5kX2NvcHkoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCi0JCQkJICBjb25zdCB1bnNpZ25l ZCBsb25nICpzcmNfcGZucywKLQkJCQkgIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLAotCQkJCSAg dW5zaWduZWQgbG9uZyBzdGFydCwKLQkJCQkgIHVuc2lnbmVkIGxvbmcgZW5kLAotCQkJCSAgc3Ry dWN0IG5vdXZlYXVfZG1lbV9mYXVsdCAqZmF1bHQpCitzdGF0aWMgdm1fZmF1bHRfdCBub3V2ZWF1 X2RtZW1fZmF1bHRfY29weV9vbmUoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0sCisJCXN0cnVjdCB2 bV9mYXVsdCAqdm1mLCBzdHJ1Y3QgbWlncmF0ZV92bWEgKmFyZ3MsCisJCWRtYV9hZGRyX3QgKmRt YV9hZGRyKQogewotCXN0cnVjdCBub3V2ZWF1X2RybSAqZHJtID0gZmF1bHQtPmRybTsKIAlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSBkcm0tPmRldi0+ZGV2OwotCXVuc2lnbmVkIGxvbmcgYWRkciwgaSwg bnBhZ2VzID0gMDsKLQlub3V2ZWF1X21pZ3JhdGVfY29weV90IGNvcHk7Ci0JaW50IHJldDsKLQot Ci0JLyogRmlyc3QgYWxsb2NhdGUgbmV3IG1lbW9yeSAqLwotCWZvciAoYWRkciA9IHN0YXJ0LCBp ID0gMDsgYWRkciA8IGVuZDsgYWRkciArPSBQQUdFX1NJWkUsIGkrKykgewotCQlzdHJ1Y3QgcGFn ZSAqZHBhZ2UsICpzcGFnZTsKLQotCQlkc3RfcGZuc1tpXSA9IDA7Ci0JCXNwYWdlID0gbWlncmF0 ZV9wZm5fdG9fcGFnZShzcmNfcGZuc1tpXSk7Ci0JCWlmICghc3BhZ2UgfHwgIShzcmNfcGZuc1tp XSAmIE1JR1JBVEVfUEZOX01JR1JBVEUpKQotCQkJY29udGludWU7Ci0KLQkJZHBhZ2UgPSBhbGxv Y19wYWdlX3ZtYShHRlBfSElHSFVTRVIsIHZtYSwgYWRkcik7Ci0JCWlmICghZHBhZ2UpIHsKLQkJ CWRzdF9wZm5zW2ldID0gTUlHUkFURV9QRk5fRVJST1I7Ci0JCQljb250aW51ZTsKLQkJfQotCQls b2NrX3BhZ2UoZHBhZ2UpOwotCi0JCWRzdF9wZm5zW2ldID0gbWlncmF0ZV9wZm4ocGFnZV90b19w Zm4oZHBhZ2UpKSB8Ci0JCQkgICAgICBNSUdSQVRFX1BGTl9MT0NLRUQ7Ci0JCW5wYWdlcysrOwot CX0KLQotCS8qIEFsbG9jYXRlIHN0b3JhZ2UgZm9yIERNQSBhZGRyZXNzZXMsIHNvIHdlIGNhbiB1 bm1hcCBsYXRlci4gKi8KLQlmYXVsdC0+ZG1hID0ga21hbGxvYyhzaXplb2YoKmZhdWx0LT5kbWEp ICogbnBhZ2VzLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWZhdWx0LT5kbWEpCi0JCWdvdG8gZXJyb3I7 Ci0KLQkvKiBDb3B5IHRoaW5ncyBvdmVyICovCi0JY29weSA9IGRybS0+ZG1lbS0+bWlncmF0ZS5j b3B5X2Z1bmM7Ci0JZm9yIChhZGRyID0gc3RhcnQsIGkgPSAwOyBhZGRyIDwgZW5kOyBhZGRyICs9 IFBBR0VfU0laRSwgaSsrKSB7Ci0JCXN0cnVjdCBwYWdlICpzcGFnZSwgKmRwYWdlOwotCi0JCWRw YWdlID0gbWlncmF0ZV9wZm5fdG9fcGFnZShkc3RfcGZuc1tpXSk7Ci0JCWlmICghZHBhZ2UgfHwg ZHN0X3BmbnNbaV0gPT0gTUlHUkFURV9QRk5fRVJST1IpCi0JCQljb250aW51ZTsKLQotCQlzcGFn ZSA9IG1pZ3JhdGVfcGZuX3RvX3BhZ2Uoc3JjX3BmbnNbaV0pOwotCQlpZiAoIXNwYWdlIHx8ICEo c3JjX3BmbnNbaV0gJiBNSUdSQVRFX1BGTl9NSUdSQVRFKSkgewotCQkJZHN0X3BmbnNbaV0gPSBN SUdSQVRFX1BGTl9FUlJPUjsKLQkJCV9fZnJlZV9wYWdlKGRwYWdlKTsKLQkJCWNvbnRpbnVlOwot CQl9CisJc3RydWN0IHBhZ2UgKmRwYWdlLCAqc3BhZ2U7CiAKLQkJZmF1bHQtPmRtYVtmYXVsdC0+ bnBhZ2VzXSA9Ci0JCQlkbWFfbWFwX3BhZ2VfYXR0cnMoZGV2LCBkcGFnZSwgMCwgUEFHRV9TSVpF LAotCQkJCQkgICBQQ0lfRE1BX0JJRElSRUNUSU9OQUwsCi0JCQkJCSAgIERNQV9BVFRSX1NLSVBf Q1BVX1NZTkMpOwotCQlpZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LCBmYXVsdC0+ZG1hW2ZhdWx0 LT5ucGFnZXNdKSkgewotCQkJZHN0X3BmbnNbaV0gPSBNSUdSQVRFX1BGTl9FUlJPUjsKLQkJCV9f ZnJlZV9wYWdlKGRwYWdlKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KLQkJcmV0ID0gY29weShkcm0s IDEsIE5PVVZFQVVfQVBFUl9IT1NULAotCQkJCWZhdWx0LT5kbWFbZmF1bHQtPm5wYWdlcysrXSwK LQkJCQlOT1VWRUFVX0FQRVJfVlJBTSwKLQkJCQlub3V2ZWF1X2RtZW1fcGFnZV9hZGRyKHNwYWdl KSk7Ci0JCWlmIChyZXQpIHsKLQkJCWRzdF9wZm5zW2ldID0gTUlHUkFURV9QRk5fRVJST1I7Ci0J CQlfX2ZyZWVfcGFnZShkcGFnZSk7Ci0JCQljb250aW51ZTsKLQkJfQotCX0KLQotCW5vdXZlYXVf ZmVuY2VfbmV3KGRybS0+ZG1lbS0+bWlncmF0ZS5jaGFuLCBmYWxzZSwgJmZhdWx0LT5mZW5jZSk7 Ci0KLQlyZXR1cm47Ci0KLWVycm9yOgotCWZvciAoYWRkciA9IHN0YXJ0LCBpID0gMDsgYWRkciA8 IGVuZDsgYWRkciArPSBQQUdFX1NJWkUsICsraSkgewotCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKLQot CQlpZiAoIWRzdF9wZm5zW2ldIHx8IGRzdF9wZm5zW2ldID09IE1JR1JBVEVfUEZOX0VSUk9SKQot CQkJY29udGludWU7CisJc3BhZ2UgPSBtaWdyYXRlX3Bmbl90b19wYWdlKGFyZ3MtPnNyY1swXSk7 CisJaWYgKCFzcGFnZSB8fCAhKGFyZ3MtPnNyY1swXSAmIE1JR1JBVEVfUEZOX01JR1JBVEUpKQor CQlyZXR1cm4gMDsKIAotCQlwYWdlID0gbWlncmF0ZV9wZm5fdG9fcGFnZShkc3RfcGZuc1tpXSk7 Ci0JCWRzdF9wZm5zW2ldID0gTUlHUkFURV9QRk5fRVJST1I7Ci0JCWlmIChwYWdlID09IE5VTEwp Ci0JCQljb250aW51ZTsKKwlkcGFnZSA9IGFsbG9jX3BhZ2Vfdm1hKEdGUF9ISUdIVVNFUiwgdm1m LT52bWEsIHZtZi0+YWRkcmVzcyk7CisJaWYgKCFkcGFnZSkKKwkJcmV0dXJuIFZNX0ZBVUxUX1NJ R0JVUzsKKwlsb2NrX3BhZ2UoZHBhZ2UpOwogCi0JCV9fZnJlZV9wYWdlKHBhZ2UpOwotCX0KLX0K KwkqZG1hX2FkZHIgPSBkbWFfbWFwX3BhZ2UoZGV2LCBkcGFnZSwgMCwgUEFHRV9TSVpFLCBETUFf QklESVJFQ1RJT05BTCk7CisJaWYgKGRtYV9tYXBwaW5nX2Vycm9yKGRldiwgKmRtYV9hZGRyKSkK KwkJZ290byBlcnJvcl9mcmVlX3BhZ2U7CiAKLXN0YXRpYyB2b2lkCi1ub3V2ZWF1X2RtZW1fZmF1 bHRfZmluYWxpemVfYW5kX21hcChzdHJ1Y3Qgbm91dmVhdV9kbWVtX2ZhdWx0ICpmYXVsdCkKLXsK LQlzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSA9IGZhdWx0LT5kcm07CisJaWYgKGRybS0+ZG1lbS0+ bWlncmF0ZS5jb3B5X2Z1bmMoZHJtLCAxLCBOT1VWRUFVX0FQRVJfSE9TVCwgKmRtYV9hZGRyLAor CQkJTk9VVkVBVV9BUEVSX1ZSQU0sIG5vdXZlYXVfZG1lbV9wYWdlX2FkZHIoc3BhZ2UpKSkKKwkJ Z290byBlcnJvcl9kbWFfdW5tYXA7CiAKLQlub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZSgmZmF1bHQt PmZlbmNlKTsKKwlhcmdzLT5kc3RbMF0gPSBtaWdyYXRlX3BmbihwYWdlX3RvX3BmbihkcGFnZSkp IHwgTUlHUkFURV9QRk5fTE9DS0VEOworCXJldHVybiAwOwogCi0Jd2hpbGUgKGZhdWx0LT5ucGFn ZXMtLSkgewotCQlkbWFfdW5tYXBfcGFnZShkcm0tPmRldi0+ZGV2LCBmYXVsdC0+ZG1hW2ZhdWx0 LT5ucGFnZXNdLAotCQkJICAgICAgIFBBR0VfU0laRSwgUENJX0RNQV9CSURJUkVDVElPTkFMKTsK LQl9Ci0Ja2ZyZWUoZmF1bHQtPmRtYSk7CitlcnJvcl9kbWFfdW5tYXA6CisJZG1hX3VubWFwX3Bh Z2UoZGV2LCAqZG1hX2FkZHIsIFBBR0VfU0laRSwgRE1BX0JJRElSRUNUSU9OQUwpOworZXJyb3Jf ZnJlZV9wYWdlOgorCV9fZnJlZV9wYWdlKGRwYWdlKTsKKwlyZXR1cm4gVk1fRkFVTFRfU0lHQlVT OwogfQogCiBzdGF0aWMgdm1fZmF1bHRfdCBub3V2ZWF1X2RtZW1fbWlncmF0ZV90b19yYW0oc3Ry dWN0IHZtX2ZhdWx0ICp2bWYpCiB7CiAJc3RydWN0IG5vdXZlYXVfZG1lbSAqZG1lbSA9IHBhZ2Vf dG9fZG1lbSh2bWYtPnBhZ2UpOwotCXVuc2lnbmVkIGxvbmcgc3JjWzFdID0gezB9LCBkc3RbMV0g PSB7MH07CisJc3RydWN0IG5vdXZlYXVfZHJtICpkcm0gPSBkbWVtLT5kcm07CisJc3RydWN0IG5v dXZlYXVfZmVuY2UgKmZlbmNlOworCXVuc2lnbmVkIGxvbmcgc3JjID0gMCwgZHN0ID0gMDsKKwlk bWFfYWRkcl90IGRtYV9hZGRyID0gMDsKKwl2bV9mYXVsdF90IHJldDsKIAlzdHJ1Y3QgbWlncmF0 ZV92bWEgYXJncyA9IHsKIAkJLnZtYQkJPSB2bWYtPnZtYSwKIAkJLnN0YXJ0CQk9IHZtZi0+YWRk cmVzcywKIAkJLmVuZAkJPSB2bWYtPmFkZHJlc3MgKyBQQUdFX1NJWkUsCi0JCS5zcmMJCT0gc3Jj LAotCQkuZHN0CQk9IGRzdCwKKwkJLnNyYwkJPSAmc3JjLAorCQkuZHN0CQk9ICZkc3QsCiAJfTsK LQlzdHJ1Y3Qgbm91dmVhdV9kbWVtX2ZhdWx0IGZhdWx0ID0geyAuZHJtID0gZG1lbS0+ZHJtIH07 CiAKIAkvKgogCSAqIEZJWE1FIHdoYXQgd2UgcmVhbGx5IHdhbnQgaXMgdG8gZmluZCBzb21lIGhl dXJpc3RpYyB0byBtaWdyYXRlIG1vcmUKQEAgLTI4MSwxNiArMTk5LDE3IEBAIHN0YXRpYyB2bV9m YXVsdF90IG5vdXZlYXVfZG1lbV9taWdyYXRlX3RvX3JhbShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikK IAlpZiAoIWFyZ3MuY3BhZ2VzKQogCQlyZXR1cm4gMDsKIAotCW5vdXZlYXVfZG1lbV9mYXVsdF9h bGxvY19hbmRfY29weShhcmdzLnZtYSwgc3JjLCBkc3QsIGFyZ3Muc3RhcnQsCi0JCQlhcmdzLmVu ZCwgJmZhdWx0KTsKLQltaWdyYXRlX3ZtYV9wYWdlcygmYXJncyk7Ci0Jbm91dmVhdV9kbWVtX2Zh dWx0X2ZpbmFsaXplX2FuZF9tYXAoJmZhdWx0KTsKKwlyZXQgPSBub3V2ZWF1X2RtZW1fZmF1bHRf Y29weV9vbmUoZHJtLCB2bWYsICZhcmdzLCAmZG1hX2FkZHIpOworCWlmIChyZXQgfHwgZHN0ID09 IDApCisJCWdvdG8gZG9uZTsKIAorCW5vdXZlYXVfZmVuY2VfbmV3KGRtZW0tPm1pZ3JhdGUuY2hh biwgZmFsc2UsICZmZW5jZSk7CisJbWlncmF0ZV92bWFfcGFnZXMoJmFyZ3MpOworCW5vdXZlYXVf ZG1lbV9mZW5jZV9kb25lKCZmZW5jZSk7CisJZG1hX3VubWFwX3BhZ2UoZHJtLT5kZXYtPmRldiwg ZG1hX2FkZHIsIFBBR0VfU0laRSwgRE1BX0JJRElSRUNUSU9OQUwpOworZG9uZToKIAltaWdyYXRl X3ZtYV9maW5hbGl6ZSgmYXJncyk7Ci0JaWYgKGRzdFswXSA9PSBNSUdSQVRFX1BGTl9FUlJPUikK LQkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKLQotCXJldHVybiAwOworCXJldHVybiByZXQ7CiB9 CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BhZ2VtYXBfb3BzIG5vdXZlYXVfZG1lbV9wYWdl bWFwX29wcyA9IHsKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KTm91dmVhdSBtYWlsaW5nIGxpc3QKTm91dmVhdUBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9u b3V2ZWF1