From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandre Courbot Subject: [PATCH v5 2/4] drm: implement explicitly coherent BOs Date: Mon, 27 Oct 2014 18:49:17 +0900 Message-ID: <1414403359-22332-3-git-send-email-acourbot@nvidia.com> References: <1414403359-22332-1-git-send-email-acourbot@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1414403359-22332-1-git-send-email-acourbot@nvidia.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ben Skeggs , David Airlie , David Herrmann , Lucas Stach , Thierry Reding , Maarten Lankhorst Cc: gnurou@gmail.com, nouveau@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org QWxsb3cgbm91dmVhdV9ib19uZXcoKSB0byByZWNvZ25pemUgdGhlIFRUTV9QTF9GTEFHX1VOQ0FD SEVEIGZsYWcsIHdoaWNoCm1lYW5zIHRoYXQgd2Ugd2FudCB0aGUgYWxsb2NhdGVkIEJPIHRvIGJl IHBlcmZlY3RseSBjb2hlcmVudCBiZXR3ZWVuIHRoZQpDUFUgYW5kIEdQVS4gVGhpcyBpcyB1c2Vm dWwgb24gbm9uLWNvaGVyZW50IGFyY2hpdGVjdHVyZXMgZm9yIHdoaWNoIHdlCmRvIG5vdCB3YW50 IHRvIG1hbnVhbGx5IHN5bmMgc29tZSByYXJlbHktYWNjZXNzZWQgYnVmZmVyczogdHlwaWNhbGx5 LApmZW5jZXMgYW5kIHB1c2hidWZmZXJzLgoKQSBUVE0gQk8gYWxsb2NhdGVkIHdpdGggdGhlIFRU TV9QTF9GTEFHX1VOQ0FDSEVEIG9uIGEgbm9uLWNvaGVyZW50CmFyY2hpdGVjdHVyZSB3aWxsIGJl IHBvcHVsYXRlZCB1c2luZyB0aGUgRE1BIEFQSSwgYW5kIGFjY2Vzc2VzIHRvIGl0CnBlcmZvcm1l ZCB1c2luZyB0aGUgY29oZXJlbnQgbWFwcGluZyBwZXJmb3JtZWQgYnkgZG1hX2FsbG9jX2NvaGVy ZW50KCkuCgpTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgQ291cmJvdCA8YWNvdXJib3RAbnZpZGlh LmNvbT4KLS0tCiBkcm0vbm91dmVhdV9iby5jIHwgODAgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIGRybS9ub3V2ZWF1X2JvLmggfCAgMSAr CiAyIGZpbGVzIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJtL25vdXZlYXVfYm8uYyBiL2RybS9ub3V2ZWF1X2JvLmMKaW5kZXggOWE4YWRl ZWM4MGNkLi5lZDlhNjk0NmY2ZDYgMTAwNjQ0Ci0tLSBhL2RybS9ub3V2ZWF1X2JvLmMKKysrIGIv ZHJtL25vdXZlYXVfYm8uYwpAQCAtMjE0LDYgKzIxNCw5IEBAIG5vdXZlYXVfYm9fbmV3KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGludCBzaXplLCBpbnQgYWxpZ24sCiAJbnZiby0+dGlsZV9mbGFn cyA9IHRpbGVfZmxhZ3M7CiAJbnZiby0+Ym8uYmRldiA9ICZkcm0tPnR0bS5iZGV2OwogCisJaWYg KCFudl9kZXZpY2VfaXNfY3B1X2NvaGVyZW50KG52a21fZGV2aWNlKCZkcm0tPmRldmljZSkpKQor CQludmJvLT5mb3JjZV9jb2hlcmVudCA9IGZsYWdzICYgVFRNX1BMX0ZMQUdfVU5DQUNIRUQ7CisK IAludmJvLT5wYWdlX3NoaWZ0ID0gMTI7CiAJaWYgKGRybS0+Y2xpZW50LnZtKSB7CiAJCWlmICgh KGZsYWdzICYgVFRNX1BMX0ZMQUdfVFQpICYmIHNpemUgPiAyNTYgKiAxMDI0KQpAQCAtMjkxLDgg KzI5NCw5IEBAIHZvaWQKIG5vdXZlYXVfYm9fcGxhY2VtZW50X3NldChzdHJ1Y3Qgbm91dmVhdV9i byAqbnZibywgdWludDMyX3QgdHlwZSwgdWludDMyX3QgYnVzeSkKIHsKIAlzdHJ1Y3QgdHRtX3Bs YWNlbWVudCAqcGwgPSAmbnZiby0+cGxhY2VtZW50OwotCXVpbnQzMl90IGZsYWdzID0gVFRNX1BM X01BU0tfQ0FDSElORyB8Ci0JCShudmJvLT5waW5fcmVmY250ID8gVFRNX1BMX0ZMQUdfTk9fRVZJ Q1QgOiAwKTsKKwl1aW50MzJfdCBmbGFncyA9IChudmJvLT5mb3JjZV9jb2hlcmVudCA/IFRUTV9Q TF9GTEFHX1VOQ0FDSEVEIDoKKwkJCQkJCSBUVE1fUExfTUFTS19DQUNISU5HKSB8CisJCQkgKG52 Ym8tPnBpbl9yZWZjbnQgPyBUVE1fUExfRkxBR19OT19FVklDVCA6IDApOwogCiAJcGwtPnBsYWNl bWVudCA9IG52Ym8tPnBsYWNlbWVudHM7CiAJc2V0X3BsYWNlbWVudF9saXN0KG52Ym8tPnBsYWNl bWVudHMsICZwbC0+bnVtX3BsYWNlbWVudCwKQEAgLTM5Niw3ICs0MDAsMTQgQEAgbm91dmVhdV9i b19tYXAoc3RydWN0IG5vdXZlYXVfYm8gKm52Ym8pCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK IAotCXJldCA9IHR0bV9ib19rbWFwKCZudmJvLT5ibywgMCwgbnZiby0+Ym8ubWVtLm51bV9wYWdl cywgJm52Ym8tPmttYXApOworCS8qCisJICogVFRNIGJ1ZmZlcnMgYWxsb2NhdGVkIHVzaW5nIHRo ZSBETUEgQVBJIGFscmVhZHkgaGF2ZSBhIG1hcHBpbmcsIGxldCdzCisJICogdXNlIGl0IGluc3Rl YWQuCisJICovCisJaWYgKCFudmJvLT5mb3JjZV9jb2hlcmVudCkKKwkJcmV0ID0gdHRtX2JvX2tt YXAoJm52Ym8tPmJvLCAwLCBudmJvLT5iby5tZW0ubnVtX3BhZ2VzLAorCQkJCSAgJm52Ym8tPmtt YXApOworCiAJdHRtX2JvX3VucmVzZXJ2ZSgmbnZiby0+Ym8pOwogCXJldHVybiByZXQ7CiB9CkBA IC00MDQsNyArNDE1LDE0IEBAIG5vdXZlYXVfYm9fbWFwKHN0cnVjdCBub3V2ZWF1X2JvICpudmJv KQogdm9pZAogbm91dmVhdV9ib191bm1hcChzdHJ1Y3Qgbm91dmVhdV9ibyAqbnZibykKIHsKLQlp ZiAobnZibykKKwlpZiAoIW52Ym8pCisJCXJldHVybjsKKworCS8qCisJICogVFRNIGJ1ZmZlcnMg YWxsb2NhdGVkIHVzaW5nIHRoZSBETUEgQVBJIGFscmVhZHkgaGFkIGEgY29oZXJlbnQKKwkgKiBt YXBwaW5nIHdoaWNoIHdlIHVzZWQsIG5vIG5lZWQgdG8gdW5tYXAuCisJICovCisJaWYgKCFudmJv LT5mb3JjZV9jb2hlcmVudCkKIAkJdHRtX2JvX2t1bm1hcCgmbnZiby0+a21hcCk7CiB9CiAKQEAg LTQyMiwxMiArNDQwLDM2IEBAIG5vdXZlYXVfYm9fdmFsaWRhdGUoc3RydWN0IG5vdXZlYXVfYm8g Km52Ym8sIGJvb2wgaW50ZXJydXB0aWJsZSwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGlubGlu ZSB2b2lkICoKK19ub3V2ZWF1X2JvX21lbV9pbmRleChzdHJ1Y3Qgbm91dmVhdV9ibyAqbnZibywg dW5zaWduZWQgaW5kZXgsIHZvaWQgKm1lbSwgdTggc3opCit7CisJc3RydWN0IHR0bV9kbWFfdHQg KmRtYV90dDsKKwl1OCAqbSA9IG1lbTsKKworCWluZGV4ICo9IHN6OworCisJaWYgKG0pIHsKKwkJ Lyoga21hcCdkIGFkZHJlc3MsIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBvZmZzZXQgKi8KKwkJ bSArPSBpbmRleDsKKwl9IGVsc2UgeworCQkvKiBETUEtQVBJIG1hcHBpbmcsIGxvb2t1cCB0aGUg cmlnaHQgYWRkcmVzcyAqLworCQlkbWFfdHQgPSAoc3RydWN0IHR0bV9kbWFfdHQgKiludmJvLT5i by50dG07CisJCW0gPSBkbWFfdHQtPmNwdV9hZGRyZXNzW2luZGV4IC8gUEFHRV9TSVpFXTsKKwkJ bSArPSBpbmRleCAlIFBBR0VfU0laRTsKKwl9CisKKwlyZXR1cm4gbTsKK30KKyNkZWZpbmUgbm91 dmVhdV9ib19tZW1faW5kZXgobywgaSwgbSkgX25vdXZlYXVfYm9fbWVtX2luZGV4KG8sIGksIG0s IHNpemVvZigqbSkpCisKIHUxNgogbm91dmVhdV9ib19yZDE2KHN0cnVjdCBub3V2ZWF1X2JvICpu dmJvLCB1bnNpZ25lZCBpbmRleCkKIHsKIAlib29sIGlzX2lvbWVtOwogCXUxNiAqbWVtID0gdHRt X2ttYXBfb2JqX3ZpcnR1YWwoJm52Ym8tPmttYXAsICZpc19pb21lbSk7Ci0JbWVtID0gJm1lbVtp bmRleF07CisKKwltZW0gPSBub3V2ZWF1X2JvX21lbV9pbmRleChudmJvLCBpbmRleCwgbWVtKTsK KwogCWlmIChpc19pb21lbSkKIAkJcmV0dXJuIGlvcmVhZDE2X25hdGl2ZSgodm9pZCBfX2ZvcmNl IF9faW9tZW0gKiltZW0pOwogCWVsc2UKQEAgLTQzOSw3ICs0ODEsOSBAQCBub3V2ZWF1X2JvX3dy MTYoc3RydWN0IG5vdXZlYXVfYm8gKm52Ym8sIHVuc2lnbmVkIGluZGV4LCB1MTYgdmFsKQogewog CWJvb2wgaXNfaW9tZW07CiAJdTE2ICptZW0gPSB0dG1fa21hcF9vYmpfdmlydHVhbCgmbnZiby0+ a21hcCwgJmlzX2lvbWVtKTsKLQltZW0gPSAmbWVtW2luZGV4XTsKKworCW1lbSA9IG5vdXZlYXVf Ym9fbWVtX2luZGV4KG52Ym8sIGluZGV4LCBtZW0pOworCiAJaWYgKGlzX2lvbWVtKQogCQlpb3dy aXRlMTZfbmF0aXZlKHZhbCwgKHZvaWQgX19mb3JjZSBfX2lvbWVtICopbWVtKTsKIAllbHNlCkBA IC00NTEsNyArNDk1LDkgQEAgbm91dmVhdV9ib19yZDMyKHN0cnVjdCBub3V2ZWF1X2JvICpudmJv LCB1bnNpZ25lZCBpbmRleCkKIHsKIAlib29sIGlzX2lvbWVtOwogCXUzMiAqbWVtID0gdHRtX2tt YXBfb2JqX3ZpcnR1YWwoJm52Ym8tPmttYXAsICZpc19pb21lbSk7Ci0JbWVtID0gJm1lbVtpbmRl eF07CisKKwltZW0gPSBub3V2ZWF1X2JvX21lbV9pbmRleChudmJvLCBpbmRleCwgbWVtKTsKKwog CWlmIChpc19pb21lbSkKIAkJcmV0dXJuIGlvcmVhZDMyX25hdGl2ZSgodm9pZCBfX2ZvcmNlIF9f aW9tZW0gKiltZW0pOwogCWVsc2UKQEAgLTQ2Myw3ICs1MDksOSBAQCBub3V2ZWF1X2JvX3dyMzIo c3RydWN0IG5vdXZlYXVfYm8gKm52Ym8sIHVuc2lnbmVkIGluZGV4LCB1MzIgdmFsKQogewogCWJv b2wgaXNfaW9tZW07CiAJdTMyICptZW0gPSB0dG1fa21hcF9vYmpfdmlydHVhbCgmbnZiby0+a21h cCwgJmlzX2lvbWVtKTsKLQltZW0gPSAmbWVtW2luZGV4XTsKKworCW1lbSA9IG5vdXZlYXVfYm9f bWVtX2luZGV4KG52Ym8sIGluZGV4LCBtZW0pOworCiAJaWYgKGlzX2lvbWVtKQogCQlpb3dyaXRl MzJfbmF0aXZlKHZhbCwgKHZvaWQgX19mb3JjZSBfX2lvbWVtICopbWVtKTsKIAllbHNlCkBAIC0x MzgzLDYgKzE0MzEsMTQgQEAgbm91dmVhdV90dG1fdHRfcG9wdWxhdGUoc3RydWN0IHR0bV90dCAq dHRtKQogCWRldiA9IGRybS0+ZGV2OwogCXBkZXYgPSBudl9kZXZpY2VfYmFzZShkZXZpY2UpOwog CisJLyoKKwkgKiBPYmplY3RzIG1hdGNoaW5nIHRoaXMgY29uZGl0aW9uIGhhdmUgYmVlbiBtYXJr ZWQgYXMgZm9yY2VfY29oZXJlbnQsCisJICogc28gdXNlIHRoZSBETUEgQVBJIGZvciB0aGVtLgor CSAqLworCWlmICghbnZfZGV2aWNlX2lzX2NwdV9jb2hlcmVudChkZXZpY2UpICYmCisJICAgIHR0 bS0+Y2FjaGluZ19zdGF0ZSA9PSB0dF91bmNhY2hlZCkKKwkJcmV0dXJuIHR0bV9kbWFfcG9wdWxh dGUodHRtX2RtYSwgZGV2LT5kZXYpOworCiAjaWYgX19PU19IQVNfQUdQCiAJaWYgKGRybS0+YWdw LnN0YXQgPT0gRU5BQkxFRCkgewogCQlyZXR1cm4gdHRtX2FncF90dF9wb3B1bGF0ZSh0dG0pOwpA QCAtMTQ0MCw2ICsxNDk2LDE0IEBAIG5vdXZlYXVfdHRtX3R0X3VucG9wdWxhdGUoc3RydWN0IHR0 bV90dCAqdHRtKQogCWRldiA9IGRybS0+ZGV2OwogCXBkZXYgPSBudl9kZXZpY2VfYmFzZShkZXZp Y2UpOwogCisJLyoKKwkgKiBPYmplY3RzIG1hdGNoaW5nIHRoaXMgY29uZGl0aW9uIGhhdmUgYmVl biBtYXJrZWQgYXMgZm9yY2VfY29oZXJlbnQsCisJICogc28gdXNlIHRoZSBETUEgQVBJIGZvciB0 aGVtLgorCSAqLworCWlmICghbnZfZGV2aWNlX2lzX2NwdV9jb2hlcmVudChkZXZpY2UpICYmCisJ ICAgIHR0bS0+Y2FjaGluZ19zdGF0ZSA9PSB0dF91bmNhY2hlZCkKKwkJdHRtX2RtYV91bnBvcHVs YXRlKHR0bV9kbWEsIGRldi0+ZGV2KTsKKwogI2lmIF9fT1NfSEFTX0FHUAogCWlmIChkcm0tPmFn cC5zdGF0ID09IEVOQUJMRUQpIHsKIAkJdHRtX2FncF90dF91bnBvcHVsYXRlKHR0bSk7CmRpZmYg LS1naXQgYS9kcm0vbm91dmVhdV9iby5oIGIvZHJtL25vdXZlYXVfYm8uaAppbmRleCAyMmQyYzc2 NGQ4MGIuLjBmOGJiZDQ4YTBiOSAxMDA2NDQKLS0tIGEvZHJtL25vdXZlYXVfYm8uaAorKysgYi9k cm0vbm91dmVhdV9iby5oCkBAIC0xMyw2ICsxMyw3IEBAIHN0cnVjdCBub3V2ZWF1X2JvIHsKIAl1 MzIgdmFsaWRfZG9tYWluczsKIAlzdHJ1Y3QgdHRtX3BsYWNlIHBsYWNlbWVudHNbM107CiAJc3Ry dWN0IHR0bV9wbGFjZSBidXN5X3BsYWNlbWVudHNbM107CisJYm9vbCBmb3JjZV9jb2hlcmVudDsK IAlzdHJ1Y3QgdHRtX2JvX2ttYXBfb2JqIGttYXA7CiAJc3RydWN0IGxpc3RfaGVhZCBoZWFkOwog Ci0tIAoyLjEuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK