From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [REPOST PATCH 3/8] dma-buf: use reservation objects Date: Wed, 18 Jun 2014 12:37:05 +0200 Message-ID: <20140618103705.15728.70914.stgit@patser> References: <20140618102957.15728.43525.stgit@patser> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20140618102957.15728.43525.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 dmVycy9iYXNlL2RtYS1idWYuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjIgKysrKysr KysrKysrKysrKysrKystLQogZHJpdmVycy9ncHUvZHJtL2FybWFkYS9hcm1hZGFfZ2VtLmMgICAg ICAgICAgICB8ICAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYyAgICAgICAgICAg ICAgICAgICAgfCAgICA4ICsrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19k cm1fZG1hYnVmLmMgICAgIHwgICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f ZG1hYnVmLmMgICAgICAgICB8ICAgIDMgKystCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2 ZWF1X2RybS5jICAgICAgICAgIHwgICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2 ZWF1X2dlbS5oICAgICAgICAgIHwgICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2 ZWF1X3ByaW1lLmMgICAgICAgIHwgICAgNyArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vb21hcGRy bS9vbWFwX2dlbV9kbWFidWYuYyAgICAgIHwgICAgMiArLQogZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb25fZHJ2LmMgICAgICAgICAgICB8ICAgIDIgKysKIGRyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX3ByaW1lLmMgICAgICAgICAgfCAgICA4ICsrKysrKysrCiBkcml2ZXJzL2dwdS9k cm0vdGVncmEvZ2VtLmMgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogZHJpdmVycy9ncHUv ZHJtL3R0bS90dG1fb2JqZWN0LmMgICAgICAgICAgICAgICB8ICAgIDIgKy0KIGRyaXZlcnMvbWVk aWEvdjRsMi1jb3JlL3ZpZGVvYnVmMi1kbWEtY29udGlnLmMgfCAgICAyICstCiBkcml2ZXJzL3N0 YWdpbmcvYW5kcm9pZC9pb24vaW9uLmMgICAgICAgICAgICAgIHwgICAgMyArKy0KIGluY2x1ZGUv ZHJtL2RybVAuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsrKwogaW5jbHVk ZS9saW51eC9kbWEtYnVmLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKysrKysrLS0t CiAxNyBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvZG1hLWJ1Zi5jIGIvZHJpdmVycy9iYXNlL2RtYS1idWYu YwppbmRleCA4NDBjN2ZhODA5ODMuLmNkNDBjYTIyOTExZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9i YXNlL2RtYS1idWYuYworKysgYi9kcml2ZXJzL2Jhc2UvZG1hLWJ1Zi5jCkBAIC0yNSwxMCArMjUs MTIgQEAKICNpbmNsdWRlIDxsaW51eC9mcy5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNp bmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CisjaW5jbHVkZSA8bGludXgvZmVuY2UuaD4KICNpbmNs dWRlIDxsaW51eC9hbm9uX2lub2Rlcy5oPgogI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgogI2lu Y2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4KICNpbmNsdWRlIDxsaW51eC9zZXFfZmlsZS5oPgorI2lu Y2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+CiAKIHN0YXRpYyBpbmxpbmUgaW50IGlzX2RtYV9i dWZfZmlsZShzdHJ1Y3QgZmlsZSAqKTsKIApAQCAtNTYsNiArNTgsOSBAQCBzdGF0aWMgaW50IGRt YV9idWZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAls aXN0X2RlbCgmZG1hYnVmLT5saXN0X25vZGUpOwogCW11dGV4X3VubG9jaygmZGJfbGlzdC5sb2Nr KTsKIAorCWlmIChkbWFidWYtPnJlc3YgPT0gKHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKikm ZG1hYnVmWzFdKQorCQlyZXNlcnZhdGlvbl9vYmplY3RfZmluaShkbWFidWYtPnJlc3YpOworCiAJ a2ZyZWUoZG1hYnVmKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTEyOCw2ICsxMzMsNyBAQCBzdGF0aWMg aW5saW5lIGludCBpc19kbWFfYnVmX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpCiAgKiBAc2l6ZToJ W2luXQlTaXplIG9mIHRoZSBidWZmZXIKICAqIEBmbGFnczoJW2luXQltb2RlIGZsYWdzIGZvciB0 aGUgZmlsZS4KICAqIEBleHBfbmFtZToJW2luXQluYW1lIG9mIHRoZSBleHBvcnRpbmcgbW9kdWxl IC0gdXNlZnVsIGZvciBkZWJ1Z2dpbmcuCisgKiBAcmVzdjoJW2luXQlyZXNlcnZhdGlvbi1vYmpl Y3QsIE5VTEwgdG8gYWxsb2NhdGUgZGVmYXVsdCBvbmUuCiAgKgogICogUmV0dXJucywgb24gc3Vj Y2VzcywgYSBuZXdseSBjcmVhdGVkIGRtYV9idWYgb2JqZWN0LCB3aGljaCB3cmFwcyB0aGUKICAq IHN1cHBsaWVkIHByaXZhdGUgZGF0YSBhbmQgb3BlcmF0aW9ucyBmb3IgZG1hX2J1Zl9vcHMuIE9u IGVpdGhlciBtaXNzaW5nCkBAIC0xMzUsMTAgKzE0MSwxNyBAQCBzdGF0aWMgaW5saW5lIGludCBp c19kbWFfYnVmX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpCiAgKgogICovCiBzdHJ1Y3QgZG1hX2J1 ZiAqZG1hX2J1Zl9leHBvcnRfbmFtZWQodm9pZCAqcHJpdiwgY29uc3Qgc3RydWN0IGRtYV9idWZf b3BzICpvcHMsCi0JCQkJc2l6ZV90IHNpemUsIGludCBmbGFncywgY29uc3QgY2hhciAqZXhwX25h bWUpCisJCQkJc2l6ZV90IHNpemUsIGludCBmbGFncywgY29uc3QgY2hhciAqZXhwX25hbWUsCisJ CQkJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdikKIHsKIAlzdHJ1Y3QgZG1hX2J1ZiAq ZG1hYnVmOwogCXN0cnVjdCBmaWxlICpmaWxlOworCXNpemVfdCBhbGxvY19zaXplID0gc2l6ZW9m KHN0cnVjdCBkbWFfYnVmKTsKKwlpZiAoIXJlc3YpCisJCWFsbG9jX3NpemUgKz0gc2l6ZW9mKHN0 cnVjdCByZXNlcnZhdGlvbl9vYmplY3QpOworCWVsc2UKKwkJLyogcHJldmVudCAmZG1hX2J1Zlsx XSA9PSBkbWFfYnVmLT5yZXN2ICovCisJCWFsbG9jX3NpemUgKz0gMTsKIAogCWlmIChXQVJOX09O KCFwcml2IHx8ICFvcHMKIAkJCSAgfHwgIW9wcy0+bWFwX2RtYV9idWYKQEAgLTE1MCw3ICsxNjMs NyBAQCBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9leHBvcnRfbmFtZWQodm9pZCAqcHJpdiwgY29u c3Qgc3RydWN0IGRtYV9idWZfb3BzICpvcHMsCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwog CX0KIAotCWRtYWJ1ZiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkbWFfYnVmKSwgR0ZQX0tFUk5F TCk7CisJZG1hYnVmID0ga3phbGxvYyhhbGxvY19zaXplLCBHRlBfS0VSTkVMKTsKIAlpZiAoZG1h YnVmID09IE5VTEwpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCkBAIC0xNTgsNiArMTcx LDExIEBAIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmX2V4cG9ydF9uYW1lZCh2b2lkICpwcml2LCBj b25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgKm9wcywKIAlkbWFidWYtPm9wcyA9IG9wczsKIAlkbWFi dWYtPnNpemUgPSBzaXplOwogCWRtYWJ1Zi0+ZXhwX25hbWUgPSBleHBfbmFtZTsKKwlpZiAoIXJl c3YpIHsKKwkJcmVzdiA9IChzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICopJmRtYWJ1ZlsxXTsK KwkJcmVzZXJ2YXRpb25fb2JqZWN0X2luaXQocmVzdik7CisJfQorCWRtYWJ1Zi0+cmVzdiA9IHJl c3Y7CiAKIAlmaWxlID0gYW5vbl9pbm9kZV9nZXRmaWxlKCJkbWFidWYiLCAmZG1hX2J1Zl9mb3Bz LCBkbWFidWYsIGZsYWdzKTsKIAlpZiAoSVNfRVJSKGZpbGUpKSB7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm1hZGEv YXJtYWRhX2dlbS5jCmluZGV4IGJiOWI2NDJkODQ4NS4uNzQ5NmY1NTYxMWE1IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9k cm0vYXJtYWRhL2FybWFkYV9nZW0uYwpAQCAtNTM5LDcgKzUzOSw3IEBAIGFybWFkYV9nZW1fcHJp bWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqLAogCWludCBmbGFncykKIHsKIAlyZXR1cm4gZG1hX2J1Zl9leHBvcnQob2JqLCAmYXJtYWRh X2dlbV9wcmltZV9kbWFidWZfb3BzLCBvYmotPnNpemUsCi0JCQkgICAgICBPX1JEV1IpOworCQkJ ICAgICAgT19SRFdSLCBOVUxMKTsKIH0KIAogc3RydWN0IGRybV9nZW1fb2JqZWN0ICoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f cHJpbWUuYwppbmRleCAzMDRjYThjYWNiYzQuLjk5ZDU3OGJhZDE3ZSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2RybV9wcmltZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUu YwpAQCAtMzM2LDcgKzMzNiwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzIGRy bV9nZW1fcHJpbWVfZG1hYnVmX29wcyA9ICB7CiBzdHJ1Y3QgZG1hX2J1ZiAqZHJtX2dlbV9wcmlt ZV9leHBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICAgIHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqLCBpbnQgZmxhZ3MpCiB7Ci0JcmV0dXJuIGRtYV9idWZfZXhwb3J0KG9iaiwg JmRybV9nZW1fcHJpbWVfZG1hYnVmX29wcywgb2JqLT5zaXplLCBmbGFncyk7CisJc3RydWN0IHJl c2VydmF0aW9uX29iamVjdCAqcm9iaiA9IE5VTEw7CisKKwlpZiAoZGV2LT5kcml2ZXItPmdlbV9w cmltZV9yZXNfb2JqKQorCQlyb2JqID0gZGV2LT5kcml2ZXItPmdlbV9wcmltZV9yZXNfb2JqKG9i aik7CisKKwlyZXR1cm4gZG1hX2J1Zl9leHBvcnQob2JqLCAmZHJtX2dlbV9wcmltZV9kbWFidWZf b3BzLCBvYmotPnNpemUsCisJCQkgICAgICBmbGFncywgcm9iaik7CiB9CiBFWFBPUlRfU1lNQk9M KGRybV9nZW1fcHJpbWVfZXhwb3J0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4 eW5vcy9leHlub3NfZHJtX2RtYWJ1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3Nf ZHJtX2RtYWJ1Zi5jCmluZGV4IDJhM2FkMjQyNzZmOC4uNjAxOTJlZDU0NGYwIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZG1hYnVmLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RtYWJ1Zi5jCkBAIC0xODcsNyArMTg3LDcgQEAg c3RydWN0IGRtYV9idWYgKmV4eW5vc19kbWFidWZfcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2 aWNlICpkcm1fZGV2LAogCXN0cnVjdCBleHlub3NfZHJtX2dlbV9vYmogKmV4eW5vc19nZW1fb2Jq ID0gdG9fZXh5bm9zX2dlbV9vYmoob2JqKTsKIAogCXJldHVybiBkbWFfYnVmX2V4cG9ydChvYmos ICZleHlub3NfZG1hYnVmX29wcywKLQkJCQlleHlub3NfZ2VtX29iai0+YmFzZS5zaXplLCBmbGFn cyk7CisJCQkJZXh5bm9zX2dlbV9vYmotPmJhc2Uuc2l6ZSwgZmxhZ3MsIE5VTEwpOwogfQogCiBz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmV4eW5vc19kbWFidWZfcHJpbWVfaW1wb3J0KHN0cnVjdCBk cm1fZGV2aWNlICpkcm1fZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZG1hYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYwpp bmRleCA1ODBhYTQyNDQzZWQuLjgyYTFmNGI1Nzc3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZG1hYnVmLmMKQEAgLTIzNyw3ICsyMzcsOCBAQCBzdHJ1Y3QgZG1hX2J1ZiAqaTkxNV9n ZW1fcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQlyZXR1cm4gRVJSX1BU UihyZXQpOwogCX0KIAotCXJldHVybiBkbWFfYnVmX2V4cG9ydChnZW1fb2JqLCAmaTkxNV9kbWFi dWZfb3BzLCBnZW1fb2JqLT5zaXplLCBmbGFncyk7CisJcmV0dXJuIGRtYV9idWZfZXhwb3J0KGdl bV9vYmosICZpOTE1X2RtYWJ1Zl9vcHMsIGdlbV9vYmotPnNpemUsIGZsYWdzLAorCQkJICAgICAg TlVMTCk7CiB9CiAKIHN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19kbWFidWYo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2 ZWF1X2RybS5jCmluZGV4IGRkZDgzNzU2YjlhMi4uZThhZTY4YTlhYWYxIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMKQEAgLTg0NCw2ICs4NDQsNyBAQCBkcml2ZXIgPSB7CiAJ LmdlbV9wcmltZV9leHBvcnQgPSBkcm1fZ2VtX3ByaW1lX2V4cG9ydCwKIAkuZ2VtX3ByaW1lX2lt cG9ydCA9IGRybV9nZW1fcHJpbWVfaW1wb3J0LAogCS5nZW1fcHJpbWVfcGluID0gbm91dmVhdV9n ZW1fcHJpbWVfcGluLAorCS5nZW1fcHJpbWVfcmVzX29iaiA9IG5vdXZlYXVfZ2VtX3ByaW1lX3Jl c19vYmosCiAJLmdlbV9wcmltZV91bnBpbiA9IG5vdXZlYXVfZ2VtX3ByaW1lX3VucGluLAogCS5n ZW1fcHJpbWVfZ2V0X3NnX3RhYmxlID0gbm91dmVhdV9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlLAog CS5nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlID0gbm91dmVhdV9nZW1fcHJpbWVfaW1wb3J0X3Nn X3RhYmxlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9nZW0u aCBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmgKaW5kZXggN2NhY2EwNTdi YzM4Li5kZGFiNzYyZDgxZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25v dXZlYXVfZ2VtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9nZW0uaApA QCAtMzUsNiArMzUsNyBAQCBleHRlcm4gaW50IG5vdXZlYXVfZ2VtX2lvY3RsX2luZm8oc3RydWN0 IGRybV9kZXZpY2UgKiwgdm9pZCAqLAogCQkJCSAgc3RydWN0IGRybV9maWxlICopOwogCiBleHRl cm4gaW50IG5vdXZlYXVfZ2VtX3ByaW1lX3BpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKik7Citz dHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpub3V2ZWF1X2dlbV9wcmltZV9yZXNfb2JqKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqKTsKIGV4dGVybiB2b2lkIG5vdXZlYXVfZ2VtX3ByaW1lX3VucGlu KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqKTsKIGV4dGVybiBzdHJ1Y3Qgc2dfdGFibGUgKm5vdXZl YXVfZ2VtX3ByaW1lX2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKik7CiBleHRl cm4gc3RydWN0IGRybV9nZW1fb2JqZWN0ICpub3V2ZWF1X2dlbV9wcmltZV9pbXBvcnRfc2dfdGFi bGUoCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ByaW1lLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ByaW1lLmMKaW5kZXggNTFhMmNiMTAy YjQ0Li4xZjUxMDA4ZTRkMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25v dXZlYXVfcHJpbWUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ByaW1l LmMKQEAgLTEwMiwzICsxMDIsMTAgQEAgdm9pZCBub3V2ZWF1X2dlbV9wcmltZV91bnBpbihzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIAogCW5vdXZlYXVfYm9fdW5waW4obnZibyk7CiB9CisK K3N0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKm5vdXZlYXVfZ2VtX3ByaW1lX3Jlc19vYmooc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCit7CisJc3RydWN0IG5vdXZlYXVfYm8gKm52Ym8gPSBu b3V2ZWF1X2dlbV9vYmplY3Qob2JqKTsKKworCXJldHVybiBudmJvLT5iby5yZXN2OworfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9nZW1fZG1hYnVmLmMgYi9kcml2 ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2dlbV9kbWFidWYuYwppbmRleCA0ZmNjYThkNDI3OTYu LmEyZGJmYjE3MzdiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9n ZW1fZG1hYnVmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9nZW1fZG1hYnVm LmMKQEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0aWMgc3RydWN0IGRtYV9idWZfb3BzIG9tYXBfZG1h YnVmX29wcyA9IHsKIHN0cnVjdCBkbWFfYnVmICpvbWFwX2dlbV9wcmltZV9leHBvcnQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKIAkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIGludCBmbGFn cykKIHsKLQlyZXR1cm4gZG1hX2J1Zl9leHBvcnQob2JqLCAmb21hcF9kbWFidWZfb3BzLCBvYmot PnNpemUsIGZsYWdzKTsKKwlyZXR1cm4gZG1hX2J1Zl9leHBvcnQob2JqLCAmb21hcF9kbWFidWZf b3BzLCBvYmotPnNpemUsIGZsYWdzLCBOVUxMKTsKIH0KIAogc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvbWFwX2dlbV9wcmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJt L3JhZGVvbi9yYWRlb25fZHJ2LmMKaW5kZXggNmUzMDE3NDEzMzg2Li45YjMwZTBjZThhNGQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rydi5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rydi5jCkBAIC0xMzIsNiArMTMyLDcgQEAgc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpyYWRlb25fZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogCQkJCQkJCXN0cnVjdCBzZ190YWJsZSAqc2cpOwogaW50IHJhZGVv bl9nZW1fcHJpbWVfcGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKIHZvaWQgcmFkZW9u X2dlbV9wcmltZV91bnBpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7CitzdHJ1Y3QgcmVz ZXJ2YXRpb25fb2JqZWN0ICpyYWRlb25fZ2VtX3ByaW1lX3Jlc19vYmooc3RydWN0IGRybV9nZW1f b2JqZWN0ICopOwogdm9pZCAqcmFkZW9uX2dlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqKTsKIHZvaWQgcmFkZW9uX2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKTsKIGV4dGVybiBsb25nIHJhZGVvbl9rbXNfY29tcGF0 X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLApAQCAtNTYyLDYgKzU2 Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBrbXNfZHJpdmVyID0gewogCS5nZW1fcHJp bWVfaW1wb3J0ID0gZHJtX2dlbV9wcmltZV9pbXBvcnQsCiAJLmdlbV9wcmltZV9waW4gPSByYWRl b25fZ2VtX3ByaW1lX3BpbiwKIAkuZ2VtX3ByaW1lX3VucGluID0gcmFkZW9uX2dlbV9wcmltZV91 bnBpbiwKKwkuZ2VtX3ByaW1lX3Jlc19vYmogPSByYWRlb25fZ2VtX3ByaW1lX3Jlc19vYmosCiAJ LmdlbV9wcmltZV9nZXRfc2dfdGFibGUgPSByYWRlb25fZ2VtX3ByaW1lX2dldF9zZ190YWJsZSwK IAkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9IHJhZGVvbl9nZW1fcHJpbWVfaW1wb3J0X3Nn X3RhYmxlLAogCS5nZW1fcHJpbWVfdm1hcCA9IHJhZGVvbl9nZW1fcHJpbWVfdm1hcCwKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3ByaW1lLmMgYi9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbl9wcmltZS5jCmluZGV4IDIwMDc0NTYwZmMyNS4uMjhkNzEwNzBj Mzg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9wcmltZS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3ByaW1lLmMKQEAgLTEwMywzICsxMDMs MTEgQEAgdm9pZCByYWRlb25fZ2VtX3ByaW1lX3VucGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqKQogCXJhZGVvbl9ib191bnBpbihibyk7CiAJcmFkZW9uX2JvX3VucmVzZXJ2ZShibyk7CiB9 CisKKworc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmFkZW9uX2dlbV9wcmltZV9yZXNfb2Jq KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQoreworCXN0cnVjdCByYWRlb25fYm8gKmJvID0g Z2VtX3RvX3JhZGVvbl9ibyhvYmopOworCisJcmV0dXJuIGJvLT50Ym8ucmVzdjsKK30KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdy YS9nZW0uYwppbmRleCBhYTg1YjdiMjZmMTAuLjc4Y2M4MTQzNzYwYSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3RlZ3JhL2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9nZW0u YwpAQCAtNDIwLDcgKzQyMCw3IEBAIHN0cnVjdCBkbWFfYnVmICp0ZWdyYV9nZW1fcHJpbWVfZXhw b3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCiAJCQkJICAgICAgIGludCBmbGFncykKIHsKIAly ZXR1cm4gZG1hX2J1Zl9leHBvcnQoZ2VtLCAmdGVncmFfZ2VtX3ByaW1lX2RtYWJ1Zl9vcHMsIGdl bS0+c2l6ZSwKLQkJCSAgICAgIGZsYWdzKTsKKwkJCSAgICAgIGZsYWdzLCBOVUxMKTsKIH0KIAog c3RydWN0IGRybV9nZW1fb2JqZWN0ICp0ZWdyYV9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1f ZGV2aWNlICpkcm0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9vYmplY3Qu YyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX29iamVjdC5jCmluZGV4IGQyYTA1MzM1Mjc4OS4u MTJjODcxMTBkYjNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9vYmplY3Qu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9vYmplY3QuYwpAQCAtNjk1LDcgKzY5NSw3 IEBAIGludCB0dG1fcHJpbWVfaGFuZGxlX3RvX2ZkKHN0cnVjdCB0dG1fb2JqZWN0X2ZpbGUgKnRm aWxlLAogCQl9CiAKIAkJZG1hX2J1ZiA9IGRtYV9idWZfZXhwb3J0KHByaW1lLCAmdGRldi0+b3Bz LAotCQkJCQkgcHJpbWUtPnNpemUsIGZsYWdzKTsKKwkJCQkJIHByaW1lLT5zaXplLCBmbGFncywg TlVMTCk7CiAJCWlmIChJU19FUlIoZG1hX2J1ZikpIHsKIAkJCXJldCA9IFBUUl9FUlIoZG1hX2J1 Zik7CiAJCQl0dG1fbWVtX2dsb2JhbF9mcmVlKHRkZXYtPm1lbV9nbG9iLApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdmlkZW9idWYyLWRtYS1jb250aWcuYyBiL2RyaXZlcnMv bWVkaWEvdjRsMi1jb3JlL3ZpZGVvYnVmMi1kbWEtY29udGlnLmMKaW5kZXggODgwYmUwNzgyZGQ5 Li5jNGU0ZGZhODEyM2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3ZpZGVv YnVmMi1kbWEtY29udGlnLmMKKysrIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdmlkZW9idWYy LWRtYS1jb250aWcuYwpAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyBzdHJ1Y3QgZG1hX2J1ZiAq dmIyX2RjX2dldF9kbWFidWYodm9pZCAqYnVmX3ByaXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiAJ aWYgKFdBUk5fT04oIWJ1Zi0+c2d0X2Jhc2UpKQogCQlyZXR1cm4gTlVMTDsKIAotCWRidWYgPSBk bWFfYnVmX2V4cG9ydChidWYsICZ2YjJfZGNfZG1hYnVmX29wcywgYnVmLT5zaXplLCBmbGFncyk7 CisJZGJ1ZiA9IGRtYV9idWZfZXhwb3J0KGJ1ZiwgJnZiMl9kY19kbWFidWZfb3BzLCBidWYtPnNp emUsIGZsYWdzLCBOVUxMKTsKIAlpZiAoSVNfRVJSKGRidWYpKQogCQlyZXR1cm4gTlVMTDsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbi5jIGIvZHJpdmVycy9z dGFnaW5nL2FuZHJvaWQvaW9uL2lvbi5jCmluZGV4IDM4OWI4ZjY3YTJlYy4uMjcwMzYwOTEyYjJj IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9uLmMKKysrIGIvZHJp dmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbi5jCkBAIC0xMTIwLDcgKzExMjAsOCBAQCBzdHJ1 Y3QgZG1hX2J1ZiAqaW9uX3NoYXJlX2RtYV9idWYoc3RydWN0IGlvbl9jbGllbnQgKmNsaWVudCwK IAlpb25fYnVmZmVyX2dldChidWZmZXIpOwogCW11dGV4X3VubG9jaygmY2xpZW50LT5sb2NrKTsK IAotCWRtYWJ1ZiA9IGRtYV9idWZfZXhwb3J0KGJ1ZmZlciwgJmRtYV9idWZfb3BzLCBidWZmZXIt PnNpemUsIE9fUkRXUik7CisJZG1hYnVmID0gZG1hX2J1Zl9leHBvcnQoYnVmZmVyLCAmZG1hX2J1 Zl9vcHMsIGJ1ZmZlci0+c2l6ZSwgT19SRFdSLAorCQkJCU5VTEwpOwogCWlmIChJU19FUlIoZG1h YnVmKSkgewogCQlpb25fYnVmZmVyX3B1dChidWZmZXIpOwogCQlyZXR1cm4gZG1hYnVmOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtUC5oIGIvaW5jbHVkZS9kcm0vZHJtUC5oCmluZGV4IDhh ZjcxYThlMmMwMC4uZTQxZjE3ZWExZjEzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1QLmgK KysrIGIvaW5jbHVkZS9kcm0vZHJtUC5oCkBAIC04Myw2ICs4Myw3IEBAIHN0cnVjdCBkcm1fZGV2 aWNlOwogCiBzdHJ1Y3QgZGV2aWNlX25vZGU7CiBzdHJ1Y3QgdmlkZW9tb2RlOworc3RydWN0IHJl c2VydmF0aW9uX29iamVjdDsKIAogI2luY2x1ZGUgPGRybS9kcm1fb3NfbGludXguaD4KICNpbmNs dWRlIDxkcm0vZHJtX2hhc2h0YWIuaD4KQEAgLTkyMyw2ICs5MjQsOCBAQCBzdHJ1Y3QgZHJtX2Ry aXZlciB7CiAJLyogbG93LWxldmVsIGludGVyZmFjZSB1c2VkIGJ5IGRybV9nZW1fcHJpbWVfe2lt cG9ydCxleHBvcnR9ICovCiAJaW50ICgqZ2VtX3ByaW1lX3Bpbikoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmopOwogCXZvaWQgKCpnZW1fcHJpbWVfdW5waW4pKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqKTsKKwlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICogKCpnZW1fcHJpbWVfcmVzX29i aikoCisJCQkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwogCXN0cnVjdCBzZ190YWJsZSAq KCpnZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7CiAJ c3RydWN0IGRybV9nZW1fb2JqZWN0ICooKmdlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUpKAogCQkJ CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLApkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9saW51eC9kbWEtYnVmLmggYi9pbmNsdWRlL2xpbnV4L2RtYS1idWYuaAppbmRleCBmODg2OTg1 YTI4YjIuLmZkN2RlZjJlMGFlMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgK KysrIGIvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKQEAgLTExNSw2ICsxMTUsNyBAQCBzdHJ1Y3Qg ZG1hX2J1Zl9vcHMgewogICogQGV4cF9uYW1lOiBuYW1lIG9mIHRoZSBleHBvcnRlcjsgdXNlZnVs IGZvciBkZWJ1Z2dpbmcuCiAgKiBAbGlzdF9ub2RlOiBub2RlIGZvciBkbWFfYnVmIGFjY291bnRp bmcgYW5kIGRlYnVnZ2luZy4KICAqIEBwcml2OiBleHBvcnRlciBzcGVjaWZpYyBwcml2YXRlIGRh dGEgZm9yIHRoaXMgYnVmZmVyIG9iamVjdC4KKyAqIEByZXN2OiByZXNlcnZhdGlvbiBvYmplY3Qg bGlua2VkIHRvIHRoaXMgZG1hLWJ1ZgogICovCiBzdHJ1Y3QgZG1hX2J1ZiB7CiAJc2l6ZV90IHNp emU7CkBAIC0xMjgsNiArMTI5LDcgQEAgc3RydWN0IGRtYV9idWYgewogCWNvbnN0IGNoYXIgKmV4 cF9uYW1lOwogCXN0cnVjdCBsaXN0X2hlYWQgbGlzdF9ub2RlOwogCXZvaWQgKnByaXY7CisJc3Ry dWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsKIH07CiAKIC8qKgpAQCAtMTY4LDEwICsxNzAs MTEgQEAgdm9pZCBkbWFfYnVmX2RldGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAogCQkJCXN0 cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYWJ1Zl9hdHRhY2gpOwogCiBzdHJ1Y3QgZG1hX2J1 ZiAqZG1hX2J1Zl9leHBvcnRfbmFtZWQodm9pZCAqcHJpdiwgY29uc3Qgc3RydWN0IGRtYV9idWZf b3BzICpvcHMsCi0JCQkgICAgICAgc2l6ZV90IHNpemUsIGludCBmbGFncywgY29uc3QgY2hhciAq KTsKKwkJCSAgICAgICBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzLCBjb25zdCBjaGFyICosCisJCQkg ICAgICAgc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqKTsKIAotI2RlZmluZSBkbWFfYnVmX2V4 cG9ydChwcml2LCBvcHMsIHNpemUsIGZsYWdzKQlcCi0JZG1hX2J1Zl9leHBvcnRfbmFtZWQocHJp diwgb3BzLCBzaXplLCBmbGFncywgS0JVSUxEX01PRE5BTUUpCisjZGVmaW5lIGRtYV9idWZfZXhw b3J0KHByaXYsIG9wcywgc2l6ZSwgZmxhZ3MsIHJlc3YpCVwKKwlkbWFfYnVmX2V4cG9ydF9uYW1l ZChwcml2LCBvcHMsIHNpemUsIGZsYWdzLCBLQlVJTERfTU9ETkFNRSwgcmVzdikKIAogaW50IGRt YV9idWZfZmQoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwgaW50IGZsYWdzKTsKIHN0cnVjdCBkbWFf YnVmICpkbWFfYnVmX2dldChpbnQgZmQpOwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from adelie.canonical.com ([91.189.90.139]:41764 "EHLO adelie.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S966138AbaFRLJR convert rfc822-to-8bit (ORCPT ); Wed, 18 Jun 2014 07:09:17 -0400 Subject: [REPOST PATCH 3/8] dma-buf: use reservation objects From: Maarten Lankhorst Date: Wed, 18 Jun 2014 12:37:05 +0200 Message-ID: <20140618103705.15728.70914.stgit@patser> In-Reply-To: <20140618102957.15728.43525.stgit@patser> References: <20140618102957.15728.43525.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: <20140618103705.aBOJhVB39fiW1wvBvEwRDVeKb9Y4VvBoPnXLYCWl3T0@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/base/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/base/dma-buf.c b/drivers/base/dma-buf.c index 840c7fa80983..cd40ca22911f 100644 --- a/drivers/base/dma-buf.c +++ b/drivers/base/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);