From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v2 4/9] dma-buf: use reservation objects Date: Tue, 01 Jul 2014 12:57:26 +0200 Message-ID: <20140701105726.12718.58338.stgit@patser> References: <20140701103432.12718.82795.stgit@patser> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20140701103432.12718.82795.stgit@patser> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: gregkh@linuxfoundation.org Cc: linux-arch@vger.kernel.org, thellstrom@vmware.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, ccross@google.com, linux-media@vger.kernel.org List-Id: linux-arch.vger.kernel.org VGhpcyBhbGxvd3MgcmVzZXJ2YXRpb24gb2JqZWN0cyB0byBiZSB1c2VkIGluIGRtYS1idWYuIGl0 J3MgcmVxdWlyZWQKZm9yIGltcGxlbWVudGluZyBwb2xsaW5nIHN1cHBvcnQgb24gdGhlIGZlbmNl cyB0aGF0IGJlbG9uZyB0byBhIGRtYS1idWYuCgpTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmto b3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAY2Fub25pY2FsLmNvbT4KQWNrZWQtYnk6IE1hdXJvIENh cnZhbGhvIENoZWhhYiA8bS5jaGVoYWJAc2Ftc3VuZy5jb20+ICNkcml2ZXJzL21lZGlhL3Y0bDIt Y29yZS8KQWNrZWQtYnk6IFRob21hcyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNvbT4g I2RyaXZlcnMvZ3B1L2RybS90dG0KU2lnbmVkLW9mZi1ieTogVmluY2VudCBTdGVobMOpIDx2aW5j ZW50LnN0ZWhsZUBsYXBvc3RlLm5ldD4gI2RyaXZlcnMvZ3B1L2RybS9hcm1hZGEvCi0tLQogZHJp dmVycy9kbWEtYnVmL2RtYS1idWYuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgMjIgKysrKysr KysrKysrKysrKysrKystLQogZHJpdmVycy9ncHUvZHJtL2FybWFkYS9hcm1hZGFfZ2VtLmMgICAg ICAgICAgICB8ICAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYyAgICAgICAgICAg ICAgICAgICAgfCAgICA4ICsrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19k cm1fZG1hYnVmLmMgICAgIHwgICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f ZG1hYnVmLmMgICAgICAgICB8ICAgIDMgKystCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2 ZWF1X2RybS5jICAgICAgICAgIHwgICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2 ZWF1X2dlbS5oICAgICAgICAgIHwgICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2 ZWF1X3ByaW1lLmMgICAgICAgIHwgICAgNyArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vb21hcGRy bS9vbWFwX2dlbV9kbWFidWYuYyAgICAgIHwgICAgMiArLQogZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb25fZHJ2LmMgICAgICAgICAgICB8ICAgIDIgKysKIGRyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX3ByaW1lLmMgICAgICAgICAgfCAgICA4ICsrKysrKysrCiBkcml2ZXJzL2dwdS9k cm0vdGVncmEvZ2VtLmMgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogZHJpdmVycy9ncHUv ZHJtL3R0bS90dG1fb2JqZWN0LmMgICAgICAgICAgICAgICB8ICAgIDIgKy0KIGRyaXZlcnMvbWVk aWEvdjRsMi1jb3JlL3ZpZGVvYnVmMi1kbWEtY29udGlnLmMgfCAgICAyICstCiBkcml2ZXJzL3N0 YWdpbmcvYW5kcm9pZC9pb24vaW9uLmMgICAgICAgICAgICAgIHwgICAgMyArKy0KIGluY2x1ZGUv ZHJtL2RybVAuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsrKwogaW5jbHVk ZS9saW51eC9kbWEtYnVmLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKysrKysrLS0t CiAxNyBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jIGIvZHJpdmVycy9kbWEtYnVmL2Rt YS1idWYuYwppbmRleCA4NDBjN2ZhODA5ODMuLmNkNDBjYTIyOTExZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9kbWEtYnVmL2RtYS1idWYuYworKysgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCkBA IC0yNSwxMCArMjUsMTIgQEAKICNpbmNsdWRlIDxsaW51eC9mcy5oPgogI2luY2x1ZGUgPGxpbnV4 L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CisjaW5jbHVkZSA8bGludXgvZmVu Y2UuaD4KICNpbmNsdWRlIDxsaW51eC9hbm9uX2lub2Rlcy5oPgogI2luY2x1ZGUgPGxpbnV4L2V4 cG9ydC5oPgogI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4KICNpbmNsdWRlIDxsaW51eC9zZXFf ZmlsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+CiAKIHN0YXRpYyBpbmxpbmUg aW50IGlzX2RtYV9idWZfZmlsZShzdHJ1Y3QgZmlsZSAqKTsKIApAQCAtNTYsNiArNTgsOSBAQCBz dGF0aWMgaW50IGRtYV9idWZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmls ZSAqZmlsZSkKIAlsaXN0X2RlbCgmZG1hYnVmLT5saXN0X25vZGUpOwogCW11dGV4X3VubG9jaygm ZGJfbGlzdC5sb2NrKTsKIAorCWlmIChkbWFidWYtPnJlc3YgPT0gKHN0cnVjdCByZXNlcnZhdGlv bl9vYmplY3QgKikmZG1hYnVmWzFdKQorCQlyZXNlcnZhdGlvbl9vYmplY3RfZmluaShkbWFidWYt PnJlc3YpOworCiAJa2ZyZWUoZG1hYnVmKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTEyOCw2ICsxMzMs NyBAQCBzdGF0aWMgaW5saW5lIGludCBpc19kbWFfYnVmX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUp CiAgKiBAc2l6ZToJW2luXQlTaXplIG9mIHRoZSBidWZmZXIKICAqIEBmbGFnczoJW2luXQltb2Rl IGZsYWdzIGZvciB0aGUgZmlsZS4KICAqIEBleHBfbmFtZToJW2luXQluYW1lIG9mIHRoZSBleHBv cnRpbmcgbW9kdWxlIC0gdXNlZnVsIGZvciBkZWJ1Z2dpbmcuCisgKiBAcmVzdjoJW2luXQlyZXNl cnZhdGlvbi1vYmplY3QsIE5VTEwgdG8gYWxsb2NhdGUgZGVmYXVsdCBvbmUuCiAgKgogICogUmV0 dXJucywgb24gc3VjY2VzcywgYSBuZXdseSBjcmVhdGVkIGRtYV9idWYgb2JqZWN0LCB3aGljaCB3 cmFwcyB0aGUKICAqIHN1cHBsaWVkIHByaXZhdGUgZGF0YSBhbmQgb3BlcmF0aW9ucyBmb3IgZG1h X2J1Zl9vcHMuIE9uIGVpdGhlciBtaXNzaW5nCkBAIC0xMzUsMTAgKzE0MSwxNyBAQCBzdGF0aWMg aW5saW5lIGludCBpc19kbWFfYnVmX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpCiAgKgogICovCiBz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9leHBvcnRfbmFtZWQodm9pZCAqcHJpdiwgY29uc3Qgc3Ry dWN0IGRtYV9idWZfb3BzICpvcHMsCi0JCQkJc2l6ZV90IHNpemUsIGludCBmbGFncywgY29uc3Qg Y2hhciAqZXhwX25hbWUpCisJCQkJc2l6ZV90IHNpemUsIGludCBmbGFncywgY29uc3QgY2hhciAq ZXhwX25hbWUsCisJCQkJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdikKIHsKIAlzdHJ1 Y3QgZG1hX2J1ZiAqZG1hYnVmOwogCXN0cnVjdCBmaWxlICpmaWxlOworCXNpemVfdCBhbGxvY19z aXplID0gc2l6ZW9mKHN0cnVjdCBkbWFfYnVmKTsKKwlpZiAoIXJlc3YpCisJCWFsbG9jX3NpemUg Kz0gc2l6ZW9mKHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QpOworCWVsc2UKKwkJLyogcHJldmVu dCAmZG1hX2J1ZlsxXSA9PSBkbWFfYnVmLT5yZXN2ICovCisJCWFsbG9jX3NpemUgKz0gMTsKIAog CWlmIChXQVJOX09OKCFwcml2IHx8ICFvcHMKIAkJCSAgfHwgIW9wcy0+bWFwX2RtYV9idWYKQEAg LTE1MCw3ICsxNjMsNyBAQCBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9leHBvcnRfbmFtZWQodm9p ZCAqcHJpdiwgY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzICpvcHMsCiAJCXJldHVybiBFUlJfUFRS KC1FSU5WQUwpOwogCX0KIAotCWRtYWJ1ZiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkbWFfYnVm KSwgR0ZQX0tFUk5FTCk7CisJZG1hYnVmID0ga3phbGxvYyhhbGxvY19zaXplLCBHRlBfS0VSTkVM KTsKIAlpZiAoZG1hYnVmID09IE5VTEwpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCkBA IC0xNTgsNiArMTcxLDExIEBAIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmX2V4cG9ydF9uYW1lZCh2 b2lkICpwcml2LCBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgKm9wcywKIAlkbWFidWYtPm9wcyA9 IG9wczsKIAlkbWFidWYtPnNpemUgPSBzaXplOwogCWRtYWJ1Zi0+ZXhwX25hbWUgPSBleHBfbmFt ZTsKKwlpZiAoIXJlc3YpIHsKKwkJcmVzdiA9IChzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICop JmRtYWJ1ZlsxXTsKKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2luaXQocmVzdik7CisJfQorCWRtYWJ1 Zi0+cmVzdiA9IHJlc3Y7CiAKIAlmaWxlID0gYW5vbl9pbm9kZV9nZXRmaWxlKCJkbWFidWYiLCAm ZG1hX2J1Zl9mb3BzLCBkbWFidWYsIGZsYWdzKTsKIAlpZiAoSVNfRVJSKGZpbGUpKSB7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9nZW0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9hcm1hZGEvYXJtYWRhX2dlbS5jCmluZGV4IGJiOWI2NDJkODQ4NS4uNzQ5NmY1NTYxMWE1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9nZW0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9nZW0uYwpAQCAtNTM5LDcgKzUzOSw3IEBAIGFy bWFkYV9nZW1fcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqLAogCWludCBmbGFncykKIHsKIAlyZXR1cm4gZG1hX2J1Zl9leHBvcnQo b2JqLCAmYXJtYWRhX2dlbV9wcmltZV9kbWFidWZfb3BzLCBvYmotPnNpemUsCi0JCQkgICAgICBP X1JEV1IpOworCQkJICAgICAgT19SRFdSLCBOVUxMKTsKIH0KIAogc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fcHJpbWUuYwppbmRleCAzMDRjYThjYWNiYzQuLjk5ZDU3OGJhZDE3ZSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fcHJpbWUuYwpAQCAtMzM2LDcgKzMzNiwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRt YV9idWZfb3BzIGRybV9nZW1fcHJpbWVfZG1hYnVmX29wcyA9ICB7CiBzdHJ1Y3QgZG1hX2J1ZiAq ZHJtX2dlbV9wcmltZV9leHBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICAgIHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBpbnQgZmxhZ3MpCiB7Ci0JcmV0dXJuIGRtYV9idWZf ZXhwb3J0KG9iaiwgJmRybV9nZW1fcHJpbWVfZG1hYnVmX29wcywgb2JqLT5zaXplLCBmbGFncyk7 CisJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcm9iaiA9IE5VTEw7CisKKwlpZiAoZGV2LT5k cml2ZXItPmdlbV9wcmltZV9yZXNfb2JqKQorCQlyb2JqID0gZGV2LT5kcml2ZXItPmdlbV9wcmlt ZV9yZXNfb2JqKG9iaik7CisKKwlyZXR1cm4gZG1hX2J1Zl9leHBvcnQob2JqLCAmZHJtX2dlbV9w cmltZV9kbWFidWZfb3BzLCBvYmotPnNpemUsCisJCQkgICAgICBmbGFncywgcm9iaik7CiB9CiBF WFBPUlRfU1lNQk9MKGRybV9nZW1fcHJpbWVfZXhwb3J0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RtYWJ1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2V4 eW5vcy9leHlub3NfZHJtX2RtYWJ1Zi5jCmluZGV4IDJhM2FkMjQyNzZmOC4uNjAxOTJlZDU0NGYw IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZG1hYnVmLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RtYWJ1Zi5jCkBAIC0xODcs NyArMTg3LDcgQEAgc3RydWN0IGRtYV9idWYgKmV4eW5vc19kbWFidWZfcHJpbWVfZXhwb3J0KHN0 cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LAogCXN0cnVjdCBleHlub3NfZHJtX2dlbV9vYmogKmV4 eW5vc19nZW1fb2JqID0gdG9fZXh5bm9zX2dlbV9vYmoob2JqKTsKIAogCXJldHVybiBkbWFfYnVm X2V4cG9ydChvYmosICZleHlub3NfZG1hYnVmX29wcywKLQkJCQlleHlub3NfZ2VtX29iai0+YmFz ZS5zaXplLCBmbGFncyk7CisJCQkJZXh5bm9zX2dlbV9vYmotPmJhc2Uuc2l6ZSwgZmxhZ3MsIE5V TEwpOwogfQogCiBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmV4eW5vc19kbWFidWZfcHJpbWVfaW1w b3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9kbWFidWYuYwppbmRleCA1ODBhYTQyNDQzZWQuLjgyYTFmNGI1Nzc3OCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKQEAgLTIzNyw3ICsyMzcsOCBAQCBzdHJ1Y3QgZG1h X2J1ZiAqaTkxNV9nZW1fcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQly ZXR1cm4gRVJSX1BUUihyZXQpOwogCX0KIAotCXJldHVybiBkbWFfYnVmX2V4cG9ydChnZW1fb2Jq LCAmaTkxNV9kbWFidWZfb3BzLCBnZW1fb2JqLT5zaXplLCBmbGFncyk7CisJcmV0dXJuIGRtYV9i dWZfZXhwb3J0KGdlbV9vYmosICZpOTE1X2RtYWJ1Zl9vcHMsIGdlbV9vYmotPnNpemUsIGZsYWdz LAorCQkJICAgICAgTlVMTCk7CiB9CiAKIHN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2dldF9w YWdlc19kbWFidWYoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMgYi9kcml2ZXJzL2dwdS9kcm0v bm91dmVhdS9ub3V2ZWF1X2RybS5jCmluZGV4IGRkZDgzNzU2YjlhMi4uZThhZTY4YTlhYWYxIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMKQEAgLTg0NCw2ICs4NDQsNyBAQCBk cml2ZXIgPSB7CiAJLmdlbV9wcmltZV9leHBvcnQgPSBkcm1fZ2VtX3ByaW1lX2V4cG9ydCwKIAku Z2VtX3ByaW1lX2ltcG9ydCA9IGRybV9nZW1fcHJpbWVfaW1wb3J0LAogCS5nZW1fcHJpbWVfcGlu ID0gbm91dmVhdV9nZW1fcHJpbWVfcGluLAorCS5nZW1fcHJpbWVfcmVzX29iaiA9IG5vdXZlYXVf Z2VtX3ByaW1lX3Jlc19vYmosCiAJLmdlbV9wcmltZV91bnBpbiA9IG5vdXZlYXVfZ2VtX3ByaW1l X3VucGluLAogCS5nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlID0gbm91dmVhdV9nZW1fcHJpbWVfZ2V0 X3NnX3RhYmxlLAogCS5nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlID0gbm91dmVhdV9nZW1fcHJp bWVfaW1wb3J0X3NnX3RhYmxlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUv bm91dmVhdV9nZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmgKaW5k ZXggN2NhY2EwNTdiYzM4Li5kZGFiNzYyZDgxZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91 dmVhdV9nZW0uaApAQCAtMzUsNiArMzUsNyBAQCBleHRlcm4gaW50IG5vdXZlYXVfZ2VtX2lvY3Rs X2luZm8oc3RydWN0IGRybV9kZXZpY2UgKiwgdm9pZCAqLAogCQkJCSAgc3RydWN0IGRybV9maWxl ICopOwogCiBleHRlcm4gaW50IG5vdXZlYXVfZ2VtX3ByaW1lX3BpbihzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKik7CitzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpub3V2ZWF1X2dlbV9wcmltZV9y ZXNfb2JqKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqKTsKIGV4dGVybiB2b2lkIG5vdXZlYXVfZ2Vt X3ByaW1lX3VucGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqKTsKIGV4dGVybiBzdHJ1Y3Qgc2df dGFibGUgKm5vdXZlYXVfZ2VtX3ByaW1lX2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKik7CiBleHRlcm4gc3RydWN0IGRybV9nZW1fb2JqZWN0ICpub3V2ZWF1X2dlbV9wcmltZV9p bXBvcnRfc2dfdGFibGUoCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2 ZWF1X3ByaW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ByaW1lLmMKaW5k ZXggNTFhMmNiMTAyYjQ0Li4xZjUxMDA4ZTRkMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L25vdXZlYXVfcHJpbWUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9u b3V2ZWF1X3ByaW1lLmMKQEAgLTEwMiwzICsxMDIsMTAgQEAgdm9pZCBub3V2ZWF1X2dlbV9wcmlt ZV91bnBpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIAogCW5vdXZlYXVfYm9fdW5waW4o bnZibyk7CiB9CisKK3N0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKm5vdXZlYXVfZ2VtX3ByaW1l X3Jlc19vYmooc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCit7CisJc3RydWN0IG5vdXZlYXVf Ym8gKm52Ym8gPSBub3V2ZWF1X2dlbV9vYmplY3Qob2JqKTsKKworCXJldHVybiBudmJvLT5iby5y ZXN2OworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9nZW1fZG1h YnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2dlbV9kbWFidWYuYwppbmRleCA0 ZmNjYThkNDI3OTYuLmEyZGJmYjE3MzdiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL29t YXBkcm0vb21hcF9nZW1fZG1hYnVmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21h cF9nZW1fZG1hYnVmLmMKQEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0aWMgc3RydWN0IGRtYV9idWZf b3BzIG9tYXBfZG1hYnVmX29wcyA9IHsKIHN0cnVjdCBkbWFfYnVmICpvbWFwX2dlbV9wcmltZV9l eHBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmosIGludCBmbGFncykKIHsKLQlyZXR1cm4gZG1hX2J1Zl9leHBvcnQob2JqLCAmb21hcF9kbWFi dWZfb3BzLCBvYmotPnNpemUsIGZsYWdzKTsKKwlyZXR1cm4gZG1hX2J1Zl9leHBvcnQob2JqLCAm b21hcF9kbWFidWZfb3BzLCBvYmotPnNpemUsIGZsYWdzLCBOVUxMKTsKIH0KIAogc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvbWFwX2dlbV9wcmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rydi5jIGIvZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZHJ2LmMKaW5kZXggNmUzMDE3NDEzMzg2Li45YjMw ZTBjZThhNGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rydi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rydi5jCkBAIC0xMzIsNiArMTMy LDcgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpyYWRlb25fZ2VtX3ByaW1lX2ltcG9ydF9zZ190 YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCQkJCXN0cnVjdCBzZ190YWJsZSAqc2cp OwogaW50IHJhZGVvbl9nZW1fcHJpbWVfcGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsK IHZvaWQgcmFkZW9uX2dlbV9wcmltZV91bnBpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7 CitzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyYWRlb25fZ2VtX3ByaW1lX3Jlc19vYmooc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICopOwogdm9pZCAqcmFkZW9uX2dlbV9wcmltZV92bWFwKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKIHZvaWQgcmFkZW9uX2dlbV9wcmltZV92dW5tYXAoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKTsKIGV4dGVybiBsb25nIHJhZGVv bl9rbXNfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLApA QCAtNTYyLDYgKzU2Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBrbXNfZHJpdmVyID0g ewogCS5nZW1fcHJpbWVfaW1wb3J0ID0gZHJtX2dlbV9wcmltZV9pbXBvcnQsCiAJLmdlbV9wcmlt ZV9waW4gPSByYWRlb25fZ2VtX3ByaW1lX3BpbiwKIAkuZ2VtX3ByaW1lX3VucGluID0gcmFkZW9u X2dlbV9wcmltZV91bnBpbiwKKwkuZ2VtX3ByaW1lX3Jlc19vYmogPSByYWRlb25fZ2VtX3ByaW1l X3Jlc19vYmosCiAJLmdlbV9wcmltZV9nZXRfc2dfdGFibGUgPSByYWRlb25fZ2VtX3ByaW1lX2dl dF9zZ190YWJsZSwKIAkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9IHJhZGVvbl9nZW1fcHJp bWVfaW1wb3J0X3NnX3RhYmxlLAogCS5nZW1fcHJpbWVfdm1hcCA9IHJhZGVvbl9nZW1fcHJpbWVf dm1hcCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3ByaW1lLmMg Yi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9wcmltZS5jCmluZGV4IDIwMDc0NTYwZmMy NS4uMjhkNzEwNzBjMzg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVv bl9wcmltZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3ByaW1lLmMKQEAg LTEwMywzICsxMDMsMTEgQEAgdm9pZCByYWRlb25fZ2VtX3ByaW1lX3VucGluKHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqKQogCXJhZGVvbl9ib191bnBpbihibyk7CiAJcmFkZW9uX2JvX3VucmVz ZXJ2ZShibyk7CiB9CisKKworc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmFkZW9uX2dlbV9w cmltZV9yZXNfb2JqKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQoreworCXN0cnVjdCByYWRl b25fYm8gKmJvID0gZ2VtX3RvX3JhZGVvbl9ibyhvYmopOworCisJcmV0dXJuIGJvLT50Ym8ucmVz djsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9nZW0uYyBiL2RyaXZlcnMv Z3B1L2RybS90ZWdyYS9nZW0uYwppbmRleCBhYTg1YjdiMjZmMTAuLjc4Y2M4MTQzNzYwYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS90ZWdyYS9nZW0uYwpAQCAtNDIwLDcgKzQyMCw3IEBAIHN0cnVjdCBkbWFfYnVmICp0ZWdyYV9n ZW1fcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCiAJCQkJICAgICAgIGludCBm bGFncykKIHsKIAlyZXR1cm4gZG1hX2J1Zl9leHBvcnQoZ2VtLCAmdGVncmFfZ2VtX3ByaW1lX2Rt YWJ1Zl9vcHMsIGdlbS0+c2l6ZSwKLQkJCSAgICAgIGZsYWdzKTsKKwkJCSAgICAgIGZsYWdzLCBO VUxMKTsKIH0KIAogc3RydWN0IGRybV9nZW1fb2JqZWN0ICp0ZWdyYV9nZW1fcHJpbWVfaW1wb3J0 KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRt L3R0bV9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX29iamVjdC5jCmluZGV4IGQy YTA1MzM1Mjc4OS4uMTJjODcxMTBkYjNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRt L3R0bV9vYmplY3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9vYmplY3QuYwpAQCAt Njk1LDcgKzY5NSw3IEBAIGludCB0dG1fcHJpbWVfaGFuZGxlX3RvX2ZkKHN0cnVjdCB0dG1fb2Jq ZWN0X2ZpbGUgKnRmaWxlLAogCQl9CiAKIAkJZG1hX2J1ZiA9IGRtYV9idWZfZXhwb3J0KHByaW1l LCAmdGRldi0+b3BzLAotCQkJCQkgcHJpbWUtPnNpemUsIGZsYWdzKTsKKwkJCQkJIHByaW1lLT5z aXplLCBmbGFncywgTlVMTCk7CiAJCWlmIChJU19FUlIoZG1hX2J1ZikpIHsKIAkJCXJldCA9IFBU Ul9FUlIoZG1hX2J1Zik7CiAJCQl0dG1fbWVtX2dsb2JhbF9mcmVlKHRkZXYtPm1lbV9nbG9iLApk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdmlkZW9idWYyLWRtYS1jb250aWcu YyBiL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3ZpZGVvYnVmMi1kbWEtY29udGlnLmMKaW5kZXgg ODgwYmUwNzgyZGQ5Li5jNGU0ZGZhODEyM2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdjRs Mi1jb3JlL3ZpZGVvYnVmMi1kbWEtY29udGlnLmMKKysrIGIvZHJpdmVycy9tZWRpYS92NGwyLWNv cmUvdmlkZW9idWYyLWRtYS1jb250aWcuYwpAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyBzdHJ1 Y3QgZG1hX2J1ZiAqdmIyX2RjX2dldF9kbWFidWYodm9pZCAqYnVmX3ByaXYsIHVuc2lnbmVkIGxv bmcgZmxhZ3MpCiAJaWYgKFdBUk5fT04oIWJ1Zi0+c2d0X2Jhc2UpKQogCQlyZXR1cm4gTlVMTDsK IAotCWRidWYgPSBkbWFfYnVmX2V4cG9ydChidWYsICZ2YjJfZGNfZG1hYnVmX29wcywgYnVmLT5z aXplLCBmbGFncyk7CisJZGJ1ZiA9IGRtYV9idWZfZXhwb3J0KGJ1ZiwgJnZiMl9kY19kbWFidWZf b3BzLCBidWYtPnNpemUsIGZsYWdzLCBOVUxMKTsKIAlpZiAoSVNfRVJSKGRidWYpKQogCQlyZXR1 cm4gTlVMTDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbi5j IGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbi5jCmluZGV4IDM4OWI4ZjY3YTJlYy4u MjcwMzYwOTEyYjJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9u LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbi5jCkBAIC0xMTIwLDcgKzEx MjAsOCBAQCBzdHJ1Y3QgZG1hX2J1ZiAqaW9uX3NoYXJlX2RtYV9idWYoc3RydWN0IGlvbl9jbGll bnQgKmNsaWVudCwKIAlpb25fYnVmZmVyX2dldChidWZmZXIpOwogCW11dGV4X3VubG9jaygmY2xp ZW50LT5sb2NrKTsKIAotCWRtYWJ1ZiA9IGRtYV9idWZfZXhwb3J0KGJ1ZmZlciwgJmRtYV9idWZf b3BzLCBidWZmZXItPnNpemUsIE9fUkRXUik7CisJZG1hYnVmID0gZG1hX2J1Zl9leHBvcnQoYnVm ZmVyLCAmZG1hX2J1Zl9vcHMsIGJ1ZmZlci0+c2l6ZSwgT19SRFdSLAorCQkJCU5VTEwpOwogCWlm IChJU19FUlIoZG1hYnVmKSkgewogCQlpb25fYnVmZmVyX3B1dChidWZmZXIpOwogCQlyZXR1cm4g ZG1hYnVmOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtUC5oIGIvaW5jbHVkZS9kcm0vZHJt UC5oCmluZGV4IDhhZjcxYThlMmMwMC4uZTQxZjE3ZWExZjEzIDEwMDY0NAotLS0gYS9pbmNsdWRl L2RybS9kcm1QLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtUC5oCkBAIC04Myw2ICs4Myw3IEBAIHN0 cnVjdCBkcm1fZGV2aWNlOwogCiBzdHJ1Y3QgZGV2aWNlX25vZGU7CiBzdHJ1Y3QgdmlkZW9tb2Rl Oworc3RydWN0IHJlc2VydmF0aW9uX29iamVjdDsKIAogI2luY2x1ZGUgPGRybS9kcm1fb3NfbGlu dXguaD4KICNpbmNsdWRlIDxkcm0vZHJtX2hhc2h0YWIuaD4KQEAgLTkyMyw2ICs5MjQsOCBAQCBz dHJ1Y3QgZHJtX2RyaXZlciB7CiAJLyogbG93LWxldmVsIGludGVyZmFjZSB1c2VkIGJ5IGRybV9n ZW1fcHJpbWVfe2ltcG9ydCxleHBvcnR9ICovCiAJaW50ICgqZ2VtX3ByaW1lX3Bpbikoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmopOwogCXZvaWQgKCpnZW1fcHJpbWVfdW5waW4pKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqb2JqKTsKKwlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICogKCpnZW1f cHJpbWVfcmVzX29iaikoCisJCQkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwogCXN0cnVj dCBzZ190YWJsZSAqKCpnZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKShzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaik7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICooKmdlbV9wcmltZV9pbXBvcnRfc2df dGFibGUpKAogCQkJCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLApkaWZmIC0t Z2l0IGEvaW5jbHVkZS9saW51eC9kbWEtYnVmLmggYi9pbmNsdWRlL2xpbnV4L2RtYS1idWYuaApp bmRleCBmODg2OTg1YTI4YjIuLmZkN2RlZjJlMGFlMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51 eC9kbWEtYnVmLmgKKysrIGIvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKQEAgLTExNSw2ICsxMTUs NyBAQCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgewogICogQGV4cF9uYW1lOiBuYW1lIG9mIHRoZSBleHBv cnRlcjsgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuCiAgKiBAbGlzdF9ub2RlOiBub2RlIGZvciBkbWFf YnVmIGFjY291bnRpbmcgYW5kIGRlYnVnZ2luZy4KICAqIEBwcml2OiBleHBvcnRlciBzcGVjaWZp YyBwcml2YXRlIGRhdGEgZm9yIHRoaXMgYnVmZmVyIG9iamVjdC4KKyAqIEByZXN2OiByZXNlcnZh dGlvbiBvYmplY3QgbGlua2VkIHRvIHRoaXMgZG1hLWJ1ZgogICovCiBzdHJ1Y3QgZG1hX2J1ZiB7 CiAJc2l6ZV90IHNpemU7CkBAIC0xMjgsNiArMTI5LDcgQEAgc3RydWN0IGRtYV9idWYgewogCWNv bnN0IGNoYXIgKmV4cF9uYW1lOwogCXN0cnVjdCBsaXN0X2hlYWQgbGlzdF9ub2RlOwogCXZvaWQg KnByaXY7CisJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsKIH07CiAKIC8qKgpAQCAt MTY4LDEwICsxNzAsMTEgQEAgdm9pZCBkbWFfYnVmX2RldGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1h YnVmLAogCQkJCXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYWJ1Zl9hdHRhY2gpOwogCiBz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9leHBvcnRfbmFtZWQodm9pZCAqcHJpdiwgY29uc3Qgc3Ry dWN0IGRtYV9idWZfb3BzICpvcHMsCi0JCQkgICAgICAgc2l6ZV90IHNpemUsIGludCBmbGFncywg Y29uc3QgY2hhciAqKTsKKwkJCSAgICAgICBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzLCBjb25zdCBj aGFyICosCisJCQkgICAgICAgc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqKTsKIAotI2RlZmlu ZSBkbWFfYnVmX2V4cG9ydChwcml2LCBvcHMsIHNpemUsIGZsYWdzKQlcCi0JZG1hX2J1Zl9leHBv cnRfbmFtZWQocHJpdiwgb3BzLCBzaXplLCBmbGFncywgS0JVSUxEX01PRE5BTUUpCisjZGVmaW5l IGRtYV9idWZfZXhwb3J0KHByaXYsIG9wcywgc2l6ZSwgZmxhZ3MsIHJlc3YpCVwKKwlkbWFfYnVm X2V4cG9ydF9uYW1lZChwcml2LCBvcHMsIHNpemUsIGZsYWdzLCBLQlVJTERfTU9ETkFNRSwgcmVz dikKIAogaW50IGRtYV9idWZfZmQoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwgaW50IGZsYWdzKTsK IHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmX2dldChpbnQgZmQpOwoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from adelie.canonical.com ([91.189.90.139]:60227 "EHLO adelie.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756300AbaGAK6E convert rfc822-to-8bit (ORCPT ); Tue, 1 Jul 2014 06:58:04 -0400 Subject: [PATCH v2 4/9] dma-buf: use reservation objects From: Maarten Lankhorst Date: Tue, 01 Jul 2014 12:57:26 +0200 Message-ID: <20140701105726.12718.58338.stgit@patser> In-Reply-To: <20140701103432.12718.82795.stgit@patser> References: <20140701103432.12718.82795.stgit@patser> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8BIT Sender: linux-arch-owner@vger.kernel.org List-ID: To: gregkh@linuxfoundation.org Cc: linux-arch@vger.kernel.org, thellstrom@vmware.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, robdclark@gmail.com, thierry.reding@gmail.com, ccross@google.com, daniel@ffwll.ch, sumit.semwal@linaro.org, linux-media@vger.kernel.org Message-ID: <20140701105726.gL9NIu3vEKWY4e_ZLR3NDsWDK0YjgeygPXLVC7aSt_M@z> This allows reservation objects to be used in dma-buf. it's required for implementing polling support on the fences that belong to a dma-buf. Signed-off-by: Maarten Lankhorst Acked-by: Mauro Carvalho Chehab #drivers/media/v4l2-core/ Acked-by: Thomas Hellstrom #drivers/gpu/drm/ttm Signed-off-by: Vincent Stehlé #drivers/gpu/drm/armada/ --- drivers/dma-buf/dma-buf.c | 22 ++++++++++++++++++++-- drivers/gpu/drm/armada/armada_gem.c | 2 +- drivers/gpu/drm/drm_prime.c | 8 +++++++- drivers/gpu/drm/exynos/exynos_drm_dmabuf.c | 2 +- drivers/gpu/drm/i915/i915_gem_dmabuf.c | 3 ++- drivers/gpu/drm/nouveau/nouveau_drm.c | 1 + drivers/gpu/drm/nouveau/nouveau_gem.h | 1 + drivers/gpu/drm/nouveau/nouveau_prime.c | 7 +++++++ drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c | 2 +- drivers/gpu/drm/radeon/radeon_drv.c | 2 ++ drivers/gpu/drm/radeon/radeon_prime.c | 8 ++++++++ drivers/gpu/drm/tegra/gem.c | 2 +- drivers/gpu/drm/ttm/ttm_object.c | 2 +- drivers/media/v4l2-core/videobuf2-dma-contig.c | 2 +- drivers/staging/android/ion/ion.c | 3 ++- include/drm/drmP.h | 3 +++ include/linux/dma-buf.h | 9 ++++++--- 17 files changed, 65 insertions(+), 14 deletions(-) diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index 840c7fa80983..cd40ca22911f 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -25,10 +25,12 @@ #include #include #include +#include #include #include #include #include +#include static inline int is_dma_buf_file(struct file *); @@ -56,6 +58,9 @@ static int dma_buf_release(struct inode *inode, struct file *file) list_del(&dmabuf->list_node); mutex_unlock(&db_list.lock); + if (dmabuf->resv == (struct reservation_object *)&dmabuf[1]) + reservation_object_fini(dmabuf->resv); + kfree(dmabuf); return 0; } @@ -128,6 +133,7 @@ static inline int is_dma_buf_file(struct file *file) * @size: [in] Size of the buffer * @flags: [in] mode flags for the file. * @exp_name: [in] name of the exporting module - useful for debugging. + * @resv: [in] reservation-object, NULL to allocate default one. * * Returns, on success, a newly created dma_buf object, which wraps the * supplied private data and operations for dma_buf_ops. On either missing @@ -135,10 +141,17 @@ static inline int is_dma_buf_file(struct file *file) * */ struct dma_buf *dma_buf_export_named(void *priv, const struct dma_buf_ops *ops, - size_t size, int flags, const char *exp_name) + size_t size, int flags, const char *exp_name, + struct reservation_object *resv) { struct dma_buf *dmabuf; struct file *file; + size_t alloc_size = sizeof(struct dma_buf); + if (!resv) + alloc_size += sizeof(struct reservation_object); + else + /* prevent &dma_buf[1] == dma_buf->resv */ + alloc_size += 1; if (WARN_ON(!priv || !ops || !ops->map_dma_buf @@ -150,7 +163,7 @@ struct dma_buf *dma_buf_export_named(void *priv, const struct dma_buf_ops *ops, return ERR_PTR(-EINVAL); } - dmabuf = kzalloc(sizeof(struct dma_buf), GFP_KERNEL); + dmabuf = kzalloc(alloc_size, GFP_KERNEL); if (dmabuf == NULL) return ERR_PTR(-ENOMEM); @@ -158,6 +171,11 @@ struct dma_buf *dma_buf_export_named(void *priv, const struct dma_buf_ops *ops, dmabuf->ops = ops; dmabuf->size = size; dmabuf->exp_name = exp_name; + if (!resv) { + resv = (struct reservation_object *)&dmabuf[1]; + reservation_object_init(resv); + } + dmabuf->resv = resv; file = anon_inode_getfile("dmabuf", &dma_buf_fops, dmabuf, flags); if (IS_ERR(file)) { diff --git a/drivers/gpu/drm/armada/armada_gem.c b/drivers/gpu/drm/armada/armada_gem.c index bb9b642d8485..7496f55611a5 100644 --- a/drivers/gpu/drm/armada/armada_gem.c +++ b/drivers/gpu/drm/armada/armada_gem.c @@ -539,7 +539,7 @@ armada_gem_prime_export(struct drm_device *dev, struct drm_gem_object *obj, int flags) { return dma_buf_export(obj, &armada_gem_prime_dmabuf_ops, obj->size, - O_RDWR); + O_RDWR, NULL); } struct drm_gem_object * diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c index 304ca8cacbc4..99d578bad17e 100644 --- a/drivers/gpu/drm/drm_prime.c +++ b/drivers/gpu/drm/drm_prime.c @@ -336,7 +336,13 @@ static const struct dma_buf_ops drm_gem_prime_dmabuf_ops = { struct dma_buf *drm_gem_prime_export(struct drm_device *dev, struct drm_gem_object *obj, int flags) { - return dma_buf_export(obj, &drm_gem_prime_dmabuf_ops, obj->size, flags); + struct reservation_object *robj = NULL; + + if (dev->driver->gem_prime_res_obj) + robj = dev->driver->gem_prime_res_obj(obj); + + return dma_buf_export(obj, &drm_gem_prime_dmabuf_ops, obj->size, + flags, robj); } EXPORT_SYMBOL(drm_gem_prime_export); diff --git a/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c b/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c index 2a3ad24276f8..60192ed544f0 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c @@ -187,7 +187,7 @@ struct dma_buf *exynos_dmabuf_prime_export(struct drm_device *drm_dev, struct exynos_drm_gem_obj *exynos_gem_obj = to_exynos_gem_obj(obj); return dma_buf_export(obj, &exynos_dmabuf_ops, - exynos_gem_obj->base.size, flags); + exynos_gem_obj->base.size, flags, NULL); } struct drm_gem_object *exynos_dmabuf_prime_import(struct drm_device *drm_dev, diff --git a/drivers/gpu/drm/i915/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/i915_gem_dmabuf.c index 580aa42443ed..82a1f4b57778 100644 --- a/drivers/gpu/drm/i915/i915_gem_dmabuf.c +++ b/drivers/gpu/drm/i915/i915_gem_dmabuf.c @@ -237,7 +237,8 @@ struct dma_buf *i915_gem_prime_export(struct drm_device *dev, return ERR_PTR(ret); } - return dma_buf_export(gem_obj, &i915_dmabuf_ops, gem_obj->size, flags); + return dma_buf_export(gem_obj, &i915_dmabuf_ops, gem_obj->size, flags, + NULL); } static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj) diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c index ddd83756b9a2..e8ae68a9aaf1 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -844,6 +844,7 @@ driver = { .gem_prime_export = drm_gem_prime_export, .gem_prime_import = drm_gem_prime_import, .gem_prime_pin = nouveau_gem_prime_pin, + .gem_prime_res_obj = nouveau_gem_prime_res_obj, .gem_prime_unpin = nouveau_gem_prime_unpin, .gem_prime_get_sg_table = nouveau_gem_prime_get_sg_table, .gem_prime_import_sg_table = nouveau_gem_prime_import_sg_table, diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.h b/drivers/gpu/drm/nouveau/nouveau_gem.h index 7caca057bc38..ddab762d81fe 100644 --- a/drivers/gpu/drm/nouveau/nouveau_gem.h +++ b/drivers/gpu/drm/nouveau/nouveau_gem.h @@ -35,6 +35,7 @@ extern int nouveau_gem_ioctl_info(struct drm_device *, void *, struct drm_file *); extern int nouveau_gem_prime_pin(struct drm_gem_object *); +struct reservation_object *nouveau_gem_prime_res_obj(struct drm_gem_object *); extern void nouveau_gem_prime_unpin(struct drm_gem_object *); extern struct sg_table *nouveau_gem_prime_get_sg_table(struct drm_gem_object *); extern struct drm_gem_object *nouveau_gem_prime_import_sg_table( diff --git a/drivers/gpu/drm/nouveau/nouveau_prime.c b/drivers/gpu/drm/nouveau/nouveau_prime.c index 51a2cb102b44..1f51008e4d26 100644 --- a/drivers/gpu/drm/nouveau/nouveau_prime.c +++ b/drivers/gpu/drm/nouveau/nouveau_prime.c @@ -102,3 +102,10 @@ void nouveau_gem_prime_unpin(struct drm_gem_object *obj) nouveau_bo_unpin(nvbo); } + +struct reservation_object *nouveau_gem_prime_res_obj(struct drm_gem_object *obj) +{ + struct nouveau_bo *nvbo = nouveau_gem_object(obj); + + return nvbo->bo.resv; +} diff --git a/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c b/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c index 4fcca8d42796..a2dbfb1737b4 100644 --- a/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c +++ b/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c @@ -171,7 +171,7 @@ static struct dma_buf_ops omap_dmabuf_ops = { struct dma_buf *omap_gem_prime_export(struct drm_device *dev, struct drm_gem_object *obj, int flags) { - return dma_buf_export(obj, &omap_dmabuf_ops, obj->size, flags); + return dma_buf_export(obj, &omap_dmabuf_ops, obj->size, flags, NULL); } struct drm_gem_object *omap_gem_prime_import(struct drm_device *dev, diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c index 6e3017413386..9b30e0ce8a4d 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c @@ -132,6 +132,7 @@ struct drm_gem_object *radeon_gem_prime_import_sg_table(struct drm_device *dev, struct sg_table *sg); int radeon_gem_prime_pin(struct drm_gem_object *obj); void radeon_gem_prime_unpin(struct drm_gem_object *obj); +struct reservation_object *radeon_gem_prime_res_obj(struct drm_gem_object *); void *radeon_gem_prime_vmap(struct drm_gem_object *obj); void radeon_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr); extern long radeon_kms_compat_ioctl(struct file *filp, unsigned int cmd, @@ -562,6 +563,7 @@ static struct drm_driver kms_driver = { .gem_prime_import = drm_gem_prime_import, .gem_prime_pin = radeon_gem_prime_pin, .gem_prime_unpin = radeon_gem_prime_unpin, + .gem_prime_res_obj = radeon_gem_prime_res_obj, .gem_prime_get_sg_table = radeon_gem_prime_get_sg_table, .gem_prime_import_sg_table = radeon_gem_prime_import_sg_table, .gem_prime_vmap = radeon_gem_prime_vmap, diff --git a/drivers/gpu/drm/radeon/radeon_prime.c b/drivers/gpu/drm/radeon/radeon_prime.c index 20074560fc25..28d71070c389 100644 --- a/drivers/gpu/drm/radeon/radeon_prime.c +++ b/drivers/gpu/drm/radeon/radeon_prime.c @@ -103,3 +103,11 @@ void radeon_gem_prime_unpin(struct drm_gem_object *obj) radeon_bo_unpin(bo); radeon_bo_unreserve(bo); } + + +struct reservation_object *radeon_gem_prime_res_obj(struct drm_gem_object *obj) +{ + struct radeon_bo *bo = gem_to_radeon_bo(obj); + + return bo->tbo.resv; +} diff --git a/drivers/gpu/drm/tegra/gem.c b/drivers/gpu/drm/tegra/gem.c index aa85b7b26f10..78cc8143760a 100644 --- a/drivers/gpu/drm/tegra/gem.c +++ b/drivers/gpu/drm/tegra/gem.c @@ -420,7 +420,7 @@ struct dma_buf *tegra_gem_prime_export(struct drm_device *drm, int flags) { return dma_buf_export(gem, &tegra_gem_prime_dmabuf_ops, gem->size, - flags); + flags, NULL); } struct drm_gem_object *tegra_gem_prime_import(struct drm_device *drm, diff --git a/drivers/gpu/drm/ttm/ttm_object.c b/drivers/gpu/drm/ttm/ttm_object.c index d2a053352789..12c87110db3a 100644 --- a/drivers/gpu/drm/ttm/ttm_object.c +++ b/drivers/gpu/drm/ttm/ttm_object.c @@ -695,7 +695,7 @@ int ttm_prime_handle_to_fd(struct ttm_object_file *tfile, } dma_buf = dma_buf_export(prime, &tdev->ops, - prime->size, flags); + prime->size, flags, NULL); if (IS_ERR(dma_buf)) { ret = PTR_ERR(dma_buf); ttm_mem_global_free(tdev->mem_glob, diff --git a/drivers/media/v4l2-core/videobuf2-dma-contig.c b/drivers/media/v4l2-core/videobuf2-dma-contig.c index 880be0782dd9..c4e4dfa8123a 100644 --- a/drivers/media/v4l2-core/videobuf2-dma-contig.c +++ b/drivers/media/v4l2-core/videobuf2-dma-contig.c @@ -404,7 +404,7 @@ static struct dma_buf *vb2_dc_get_dmabuf(void *buf_priv, unsigned long flags) if (WARN_ON(!buf->sgt_base)) return NULL; - dbuf = dma_buf_export(buf, &vb2_dc_dmabuf_ops, buf->size, flags); + dbuf = dma_buf_export(buf, &vb2_dc_dmabuf_ops, buf->size, flags, NULL); if (IS_ERR(dbuf)) return NULL; diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c index 389b8f67a2ec..270360912b2c 100644 --- a/drivers/staging/android/ion/ion.c +++ b/drivers/staging/android/ion/ion.c @@ -1120,7 +1120,8 @@ struct dma_buf *ion_share_dma_buf(struct ion_client *client, ion_buffer_get(buffer); mutex_unlock(&client->lock); - dmabuf = dma_buf_export(buffer, &dma_buf_ops, buffer->size, O_RDWR); + dmabuf = dma_buf_export(buffer, &dma_buf_ops, buffer->size, O_RDWR, + NULL); if (IS_ERR(dmabuf)) { ion_buffer_put(buffer); return dmabuf; diff --git a/include/drm/drmP.h b/include/drm/drmP.h index 8af71a8e2c00..e41f17ea1f13 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h @@ -83,6 +83,7 @@ struct drm_device; struct device_node; struct videomode; +struct reservation_object; #include #include @@ -923,6 +924,8 @@ struct drm_driver { /* low-level interface used by drm_gem_prime_{import,export} */ int (*gem_prime_pin)(struct drm_gem_object *obj); void (*gem_prime_unpin)(struct drm_gem_object *obj); + struct reservation_object * (*gem_prime_res_obj)( + struct drm_gem_object *obj); struct sg_table *(*gem_prime_get_sg_table)(struct drm_gem_object *obj); struct drm_gem_object *(*gem_prime_import_sg_table)( struct drm_device *dev, size_t size, diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h index f886985a28b2..fd7def2e0ae2 100644 --- a/include/linux/dma-buf.h +++ b/include/linux/dma-buf.h @@ -115,6 +115,7 @@ struct dma_buf_ops { * @exp_name: name of the exporter; useful for debugging. * @list_node: node for dma_buf accounting and debugging. * @priv: exporter specific private data for this buffer object. + * @resv: reservation object linked to this dma-buf */ struct dma_buf { size_t size; @@ -128,6 +129,7 @@ struct dma_buf { const char *exp_name; struct list_head list_node; void *priv; + struct reservation_object *resv; }; /** @@ -168,10 +170,11 @@ void dma_buf_detach(struct dma_buf *dmabuf, struct dma_buf_attachment *dmabuf_attach); struct dma_buf *dma_buf_export_named(void *priv, const struct dma_buf_ops *ops, - size_t size, int flags, const char *); + size_t size, int flags, const char *, + struct reservation_object *); -#define dma_buf_export(priv, ops, size, flags) \ - dma_buf_export_named(priv, ops, size, flags, KBUILD_MODNAME) +#define dma_buf_export(priv, ops, size, flags, resv) \ + dma_buf_export_named(priv, ops, size, flags, KBUILD_MODNAME, resv) int dma_buf_fd(struct dma_buf *dmabuf, int flags); struct dma_buf *dma_buf_get(int fd);