From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932598AbdEDSqM (ORCPT ); Thu, 4 May 2017 14:46:12 -0400 Received: from mail-qt0-f182.google.com ([209.85.216.182]:35770 "EHLO mail-qt0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932343AbdEDSp7 (ORCPT ); Thu, 4 May 2017 14:45:59 -0400 From: Laura Abbott To: Daniel Vetter , Chris Wilson , Sean Paul Cc: Laura Abbott , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Sumit Semwal , intel-gfx@lists.freedesktop.org, Joonas Lahtinen Subject: [PATCHv4 2/3] drm/prime: Introduce drm_gem_prime_import_dev Date: Thu, 4 May 2017 11:45:47 -0700 Message-Id: <1493923548-20878-3-git-send-email-labbott@redhat.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493923548-20878-1-git-send-email-labbott@redhat.com> References: <1493923548-20878-1-git-send-email-labbott@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The existing drm_gem_prime_import function uses the underlying struct device of a drm_device for attaching to a dma_buf. Some drivers (notably vgem) may not have an underlying device structure. Offer an alternate function to attach using any available device structure. Signed-off-by: Laura Abbott --- v4: Alternate implemntation to take an arbitrary struct dev instead of just a platform device. This was different enough that I dropped the previous Reviewed-by --- drivers/gpu/drm/drm_prime.c | 30 ++++++++++++++++++++++++------ include/drm/drm_prime.h | 5 +++++ 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c index 9fb65b7..5ad9a26 100644 --- a/drivers/gpu/drm/drm_prime.c +++ b/drivers/gpu/drm/drm_prime.c @@ -595,15 +595,18 @@ int drm_gem_prime_handle_to_fd(struct drm_device *dev, EXPORT_SYMBOL(drm_gem_prime_handle_to_fd); /** - * drm_gem_prime_import - helper library implementation of the import callback + * drm_gem_prime_import_dev - core implementation of the import callback * @dev: drm_device to import into * @dma_buf: dma-buf object to import + * @attach_dev: struct device to dma_buf attach * - * This is the implementation of the gem_prime_import functions for GEM drivers - * using the PRIME helpers. + * This is the core of drm_gem_prime_import. It's designed to be called by + * drivers who want to use a different device structure than dev->dev for + * attaching via dma_buf. */ -struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev, - struct dma_buf *dma_buf) +struct drm_gem_object *drm_gem_prime_import_dev(struct drm_device *dev, + struct dma_buf *dma_buf, + struct device *attach_dev) { struct dma_buf_attachment *attach; struct sg_table *sgt; @@ -625,7 +628,7 @@ struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev, if (!dev->driver->gem_prime_import_sg_table) return ERR_PTR(-EINVAL); - attach = dma_buf_attach(dma_buf, dev->dev); + attach = dma_buf_attach(dma_buf, attach_dev); if (IS_ERR(attach)) return ERR_CAST(attach); @@ -655,6 +658,21 @@ struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev, return ERR_PTR(ret); } +EXPORT_SYMBOL(drm_gem_prime_import_dev); + +/** + * drm_gem_prime_import - helper library implementation of the import callback + * @dev: drm_device to import into + * @dma_buf: dma-buf object to import + * + * This is the implementation of the gem_prime_import functions for GEM drivers + * using the PRIME helpers. + */ +struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev, + struct dma_buf *dma_buf) +{ + return drm_gem_prime_import_dev(dev, dma_buf, dev->dev); +} EXPORT_SYMBOL(drm_gem_prime_import); /** diff --git a/include/drm/drm_prime.h b/include/drm/drm_prime.h index 0b2a235..46fd1fb 100644 --- a/include/drm/drm_prime.h +++ b/include/drm/drm_prime.h @@ -65,6 +65,11 @@ int drm_gem_prime_handle_to_fd(struct drm_device *dev, int *prime_fd); struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev, struct dma_buf *dma_buf); + +struct drm_gem_object *drm_gem_prime_import_dev(struct drm_device *dev, + struct dma_buf *dma_buf, + struct device *attach_dev); + int drm_gem_prime_fd_to_handle(struct drm_device *dev, struct drm_file *file_priv, int prime_fd, uint32_t *handle); struct dma_buf *drm_gem_dmabuf_export(struct drm_device *dev, -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laura Abbott Subject: [PATCHv4 2/3] drm/prime: Introduce drm_gem_prime_import_dev Date: Thu, 4 May 2017 11:45:47 -0700 Message-ID: <1493923548-20878-3-git-send-email-labbott@redhat.com> References: <1493923548-20878-1-git-send-email-labbott@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt0-f177.google.com (mail-qt0-f177.google.com [209.85.216.177]) by gabe.freedesktop.org (Postfix) with ESMTPS id 099756E5AF for ; Thu, 4 May 2017 18:45:59 +0000 (UTC) Received: by mail-qt0-f177.google.com with SMTP id j29so17619110qtj.1 for ; Thu, 04 May 2017 11:45:59 -0700 (PDT) In-Reply-To: <1493923548-20878-1-git-send-email-labbott@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , Chris Wilson , Sean Paul Cc: intel-gfx@lists.freedesktop.org, Joonas Lahtinen , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org ClRoZSBleGlzdGluZyBkcm1fZ2VtX3ByaW1lX2ltcG9ydCBmdW5jdGlvbiB1c2VzIHRoZSB1bmRl cmx5aW5nCnN0cnVjdCBkZXZpY2Ugb2YgYSBkcm1fZGV2aWNlIGZvciBhdHRhY2hpbmcgdG8gYSBk bWFfYnVmLiBTb21lIGRyaXZlcnMKKG5vdGFibHkgdmdlbSkgbWF5IG5vdCBoYXZlIGFuIHVuZGVy bHlpbmcgZGV2aWNlIHN0cnVjdHVyZS4gT2ZmZXIKYW4gYWx0ZXJuYXRlIGZ1bmN0aW9uIHRvIGF0 dGFjaCB1c2luZyBhbnkgYXZhaWxhYmxlIGRldmljZSBzdHJ1Y3R1cmUuCgpTaWduZWQtb2ZmLWJ5 OiBMYXVyYSBBYmJvdHQgPGxhYmJvdHRAcmVkaGF0LmNvbT4KLS0tCnY0OiBBbHRlcm5hdGUgaW1w bGVtbnRhdGlvbiB0byB0YWtlIGFuIGFyYml0cmFyeSBzdHJ1Y3QgZGV2IGluc3RlYWQgb2YganVz dAphIHBsYXRmb3JtIGRldmljZS4KClRoaXMgd2FzIGRpZmZlcmVudCBlbm91Z2ggdGhhdCBJIGRy b3BwZWQgdGhlIHByZXZpb3VzIFJldmlld2VkLWJ5Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9w cmltZS5jIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiBpbmNsdWRlL2RybS9k cm1fcHJpbWUuaCAgICAgfCAgNSArKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25z KCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJp bWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYwppbmRleCA5ZmI2NWI3Li41YWQ5YTI2 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9wcmltZS5jCkBAIC01OTUsMTUgKzU5NSwxOCBAQCBpbnQgZHJtX2dlbV9wcmlt ZV9oYW5kbGVfdG9fZmQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIEVYUE9SVF9TWU1CT0woZHJt X2dlbV9wcmltZV9oYW5kbGVfdG9fZmQpOwogCiAvKioKLSAqIGRybV9nZW1fcHJpbWVfaW1wb3J0 IC0gaGVscGVyIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gb2YgdGhlIGltcG9ydCBjYWxsYmFjawor ICogZHJtX2dlbV9wcmltZV9pbXBvcnRfZGV2IC0gY29yZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg aW1wb3J0IGNhbGxiYWNrCiAgKiBAZGV2OiBkcm1fZGV2aWNlIHRvIGltcG9ydCBpbnRvCiAgKiBA ZG1hX2J1ZjogZG1hLWJ1ZiBvYmplY3QgdG8gaW1wb3J0CisgKiBAYXR0YWNoX2Rldjogc3RydWN0 IGRldmljZSB0byBkbWFfYnVmIGF0dGFjaAogICoKLSAqIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0 aW9uIG9mIHRoZSBnZW1fcHJpbWVfaW1wb3J0IGZ1bmN0aW9ucyBmb3IgR0VNIGRyaXZlcnMKLSAq IHVzaW5nIHRoZSBQUklNRSBoZWxwZXJzLgorICogVGhpcyBpcyB0aGUgY29yZSBvZiBkcm1fZ2Vt X3ByaW1lX2ltcG9ydC4gSXQncyBkZXNpZ25lZCB0byBiZSBjYWxsZWQgYnkKKyAqIGRyaXZlcnMg d2hvIHdhbnQgdG8gdXNlIGEgZGlmZmVyZW50IGRldmljZSBzdHJ1Y3R1cmUgdGhhbiBkZXYtPmRl diBmb3IKKyAqIGF0dGFjaGluZyB2aWEgZG1hX2J1Zi4KICAqLwotc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpkcm1fZ2VtX3ByaW1lX2ltcG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJCQkg ICAgc3RydWN0IGRtYV9idWYgKmRtYV9idWYpCitzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmRybV9n ZW1fcHJpbWVfaW1wb3J0X2RldihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCQkgICAgc3Ry dWN0IGRtYV9idWYgKmRtYV9idWYsCisJCQkJCSAgICBzdHJ1Y3QgZGV2aWNlICphdHRhY2hfZGV2 KQogewogCXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaDsKIAlzdHJ1Y3Qgc2dfdGFi bGUgKnNndDsKQEAgLTYyNSw3ICs2MjgsNyBAQCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmRybV9n ZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKCFkZXYtPmRyaXZl ci0+Z2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7 CiAKLQlhdHRhY2ggPSBkbWFfYnVmX2F0dGFjaChkbWFfYnVmLCBkZXYtPmRldik7CisJYXR0YWNo ID0gZG1hX2J1Zl9hdHRhY2goZG1hX2J1ZiwgYXR0YWNoX2Rldik7CiAJaWYgKElTX0VSUihhdHRh Y2gpKQogCQlyZXR1cm4gRVJSX0NBU1QoYXR0YWNoKTsKIApAQCAtNjU1LDYgKzY1OCwyMSBAQCBz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmRybV9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCiAKIAlyZXR1cm4gRVJSX1BUUihyZXQpOwogfQorRVhQT1JUX1NZTUJPTChkcm1f Z2VtX3ByaW1lX2ltcG9ydF9kZXYpOworCisvKioKKyAqIGRybV9nZW1fcHJpbWVfaW1wb3J0IC0g aGVscGVyIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gb2YgdGhlIGltcG9ydCBjYWxsYmFjaworICog QGRldjogZHJtX2RldmljZSB0byBpbXBvcnQgaW50bworICogQGRtYV9idWY6IGRtYS1idWYgb2Jq ZWN0IHRvIGltcG9ydAorICoKKyAqIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBn ZW1fcHJpbWVfaW1wb3J0IGZ1bmN0aW9ucyBmb3IgR0VNIGRyaXZlcnMKKyAqIHVzaW5nIHRoZSBQ UklNRSBoZWxwZXJzLgorICovCitzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmRybV9nZW1fcHJpbWVf aW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJCSAgICBzdHJ1Y3QgZG1hX2J1ZiAq ZG1hX2J1ZikKK3sKKwlyZXR1cm4gZHJtX2dlbV9wcmltZV9pbXBvcnRfZGV2KGRldiwgZG1hX2J1 ZiwgZGV2LT5kZXYpOworfQogRVhQT1JUX1NZTUJPTChkcm1fZ2VtX3ByaW1lX2ltcG9ydCk7CiAK IC8qKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3ByaW1lLmggYi9pbmNsdWRlL2RybS9k cm1fcHJpbWUuaAppbmRleCAwYjJhMjM1Li40NmZkMWZiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2Ry bS9kcm1fcHJpbWUuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fcHJpbWUuaApAQCAtNjUsNiArNjUs MTEgQEAgaW50IGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2ZkKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiAJCQkgICAgICAgaW50ICpwcmltZV9mZCk7CiBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmRy bV9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCSAgICBzdHJ1 Y3QgZG1hX2J1ZiAqZG1hX2J1Zik7CisKK3N0cnVjdCBkcm1fZ2VtX29iamVjdCAqZHJtX2dlbV9w cmltZV9pbXBvcnRfZGV2KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJCQlzdHJ1Y3QgZG1h X2J1ZiAqZG1hX2J1ZiwKKwkJCQkJCXN0cnVjdCBkZXZpY2UgKmF0dGFjaF9kZXYpOworCiBpbnQg ZHJtX2dlbV9wcmltZV9mZF90b19oYW5kbGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAg ICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwgaW50IHByaW1lX2ZkLCB1aW50MzJfdCAq aGFuZGxlKTsKIHN0cnVjdCBkbWFfYnVmICpkcm1fZ2VtX2RtYWJ1Zl9leHBvcnQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK