From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: [PATCH 2/4] drm/msm: rework GEM_INFO ioctl Date: Fri, 30 Nov 2018 10:00:40 -0500 Message-ID: <20181130150050.13762-3-robdclark@gmail.com> References: <20181130150050.13762-1-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181130150050.13762-1-robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: David Airlie , linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Rob Clark , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Jordan Crouse , freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org UHJlcCB3b3JrIHRvIGFkZCBhIHdheSB0byBnZXQvc2V0IHRoZSBHRU0gb2JqZWN0cyBkZWJ1ZyBu YW1lLgoKU2lnbmVkLW9mZi1ieTogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jIHwgMjUgKysrKysrKysrKysrKysrKy0tLS0t LS0tLQogaW5jbHVkZS91YXBpL2RybS9tc21fZHJtLmggICAgfCAxNyArKysrKysrKysrKystLS0t LQogMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbXNtX2Rydi5jCmluZGV4IDlmODIzYmY4ZDMxMi4uOTEzZjViMzY0MmI1IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL21zbV9kcnYuYwpAQCAtODYzLDIxICs4NjMsMjggQEAgc3RhdGljIGludCBtc21faW9jdGxf Z2VtX2luZm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iajsKIAlpbnQgcmV0ID0gMDsKIAotCWlmIChhcmdzLT5mbGFncyAmIH5N U01fSU5GT19GTEFHUykKKwlzd2l0Y2ggKGFyZ3MtPmluZm8pIHsKKwljYXNlIE1TTV9JTkZPX0dF VF9PRkZTRVQ6CisJY2FzZSBNU01fSU5GT19HRVRfSU9WQToKKwkJLyogdmFsdWUgcmV0dXJuZWQg YXMgaW1tZWRpYXRlLCBub3QgcG9pbnRlciwgc28gbGVuPT0wOiAqLworCQlpZiAoYXJncy0+bGVu KQorCQkJcmV0dXJuIC1FSU5WQUw7CisJCWJyZWFrOworCWRlZmF1bHQ6CiAJCXJldHVybiAtRUlO VkFMOworCX0KIAogCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBhcmdzLT5oYW5k bGUpOwogCWlmICghb2JqKQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCWlmIChhcmdzLT5mbGFncyAm IE1TTV9JTkZPX0lPVkEpIHsKLQkJdWludDY0X3QgaW92YTsKLQotCQlyZXQgPSBtc21faW9jdGxf Z2VtX2luZm9faW92YShkZXYsIG9iaiwgJmlvdmEpOwotCQlpZiAoIXJldCkKLQkJCWFyZ3MtPm9m ZnNldCA9IGlvdmE7Ci0JfSBlbHNlIHsKLQkJYXJncy0+b2Zmc2V0ID0gbXNtX2dlbV9tbWFwX29m ZnNldChvYmopOworCXN3aXRjaCAoYXJncy0+aW5mbykgeworCWNhc2UgTVNNX0lORk9fR0VUX09G RlNFVDoKKwkJYXJncy0+dmFsdWUgPSBtc21fZ2VtX21tYXBfb2Zmc2V0KG9iaik7CisJCWJyZWFr OworCWNhc2UgTVNNX0lORk9fR0VUX0lPVkE6CisJCXJldCA9IG1zbV9pb2N0bF9nZW1faW5mb19p b3ZhKGRldiwgb2JqLCAmYXJncy0+dmFsdWUpOworCQlicmVhazsKIAl9CiAKIAlkcm1fZ2VtX29i amVjdF9wdXRfdW5sb2NrZWQob2JqKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vbXNt X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9tc21fZHJtLmgKaW5kZXggM2MzYWY5MmM0YjNlLi5i YzE3NTc4NDhjN2MgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vbXNtX2RybS5oCisrKyBi L2luY2x1ZGUvdWFwaS9kcm0vbXNtX2RybS5oCkBAIC0xMDUsMTQgKzEwNSwyMSBAQCBzdHJ1Y3Qg ZHJtX21zbV9nZW1fbmV3IHsKIAlfX3UzMiBoYW5kbGU7ICAgICAgICAgLyogb3V0ICovCiB9Owog Ci0jZGVmaW5lIE1TTV9JTkZPX0lPVkEJMHgwMQotCi0jZGVmaW5lIE1TTV9JTkZPX0ZMQUdTIChN U01fSU5GT19JT1ZBKQorLyogR2V0IG9yIHNldCBHRU0gYnVmZmVyIGluZm8uICBUaGUgcmVxdWVz dGVkIHZhbHVlIGNhbiBiZSBwYXNzZWQKKyAqIGRpcmVjdGx5IGluICd2YWx1ZScsIG9yIGZvciBk YXRhIGxhcmdlciB0aGFuIDY0YiAndmFsdWUnIGlzIGEKKyAqIHBvaW50ZXIgdG8gdXNlcnNwYWNl IGJ1ZmZlciwgd2l0aCAnbGVuJyBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YKKyAqIGJ5dGVzIGNv cGllZCBpbnRvIHRoYXQgYnVmZmVyLiAgRm9yIGluZm8gcmV0dXJuZWQgYnkgcG9pbnRlciwKKyAq IGNhbGxpbmcgdGhlIEdFTV9JTkZPIGlvY3RsIHdpdGggbnVsbCAndmFsdWUnIHdpbGwgcmV0dXJu IHRoZQorICogcmVxdWlyZWQgYnVmZmVyIHNpemUgaW4gJ2xlbicKKyAqLworI2RlZmluZSBNU01f SU5GT19HRVRfT0ZGU0VUCTB4MDAgICAvKiBnZXQgbW1hcCgpIG9mZnNldCwgcmV0dXJuZWQgYnkg dmFsdWUgKi8KKyNkZWZpbmUgTVNNX0lORk9fR0VUX0lPVkEJMHgwMSAgIC8qIGdldCBpb3ZhLCBy ZXR1cm5lZCBieSB2YWx1ZSAqLwogCiBzdHJ1Y3QgZHJtX21zbV9nZW1faW5mbyB7CiAJX191MzIg aGFuZGxlOyAgICAgICAgIC8qIGluICovCi0JX191MzIgZmxhZ3M7CSAgICAgIC8qIGluIC0gY29t YmluYXRpb24gb2YgTVNNX0lORk9fKiBmbGFncyAqLwotCV9fdTY0IG9mZnNldDsgICAgICAgICAv KiBvdXQsIG1tYXAoKSBvZmZzZXQgb3IgaW92YSAqLworCV9fdTMyIGluZm87ICAgICAgICAgICAv KiBpbiAtIG9uZSBvZiBNU01fSU5GT18qICovCisJX191NjQgdmFsdWU7ICAgICAgICAgIC8qIGlu IG9yIG91dCAqLworCV9fdTMyIGxlbjsgICAgICAgICAgICAvKiBpbiBvciBvdXQgKi8KIH07CiAK ICNkZWZpbmUgTVNNX1BSRVBfUkVBRCAgICAgICAgMHgwMQotLSAKMi4xOS4yCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBs aXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4C297C64EB4 for ; Fri, 30 Nov 2018 15:01:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1382B20834 for ; Fri, 30 Nov 2018 15:01:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TmUVi7uo" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1382B20834 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726910AbeLACKl (ORCPT ); Fri, 30 Nov 2018 21:10:41 -0500 Received: from mail-qk1-f195.google.com ([209.85.222.195]:32997 "EHLO mail-qk1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726127AbeLACKl (ORCPT ); Fri, 30 Nov 2018 21:10:41 -0500 Received: by mail-qk1-f195.google.com with SMTP id o89so3324743qko.0; Fri, 30 Nov 2018 07:01:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZIIynXA0FFPSVLn3lu7FimIsuF4uLklcho7eShOE9ec=; b=TmUVi7uoMHE9+7zm1nah476S3HFnI3K0xa5lzAn5l9s/42bf6aUXQ44r4UAvTM58YN UdEeMkeWy2rBNurRdeAiOXIWh3vTc8WAvSQ5cz37L3Oobktzv/W7CO7DKvoC0o+fTB7S WY9/w9SQ+MzczIoZQdzQ6v3ryiX/k/+ikKeoSWo6BeGzwpKOWAvIQM4IXXfcLzsH5lQF srXBIFdg69x4z1ztnSsvNYaqwA1NvLMyiQgyJ6uMIpNp9JJo0q+zChR2BNnhviKZpcpS gaMcVi12qsNiA1KzJdyzzYd3hmyfoZMiiLkDkUw4zgJj+eneGO6O7ZwokGemKnnGiChW QQ6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZIIynXA0FFPSVLn3lu7FimIsuF4uLklcho7eShOE9ec=; b=nhKmJej1JFvwmtiEmh+N8t67D/5Q9gcmJa5HN0lUJ7LsT0WEUlfMgIgmHVC41wYLb7 iNLK51r2WhuGjqS/juFfHQajixVRFGST14u3lw/CbpzvH8SmQx04uqgDCGNf0HiQoZJB 8QfxWXg4ISur4W5Osoo/kE3Xp66nXm4wUqnmb15DryqwF0U9XWZPNO8uDU9VKPNyiMQ+ I5BYzKsMz0y82T9cw9chXdSVGhasKDLMXMCGdxn/J3mqo0SwKcBG3bobCheEr7AeF9Fi Th8Sv4sXg+4rxgmo8+u0Xvsj5DStVYGhE86ueb5ncfPzwD+A23PoIsmVV5cWqORyd4V7 /Mag== X-Gm-Message-State: AA+aEWbysSzyC/Z4D9OouGaphxAJxQWko/TlWI9MLTlrMsD2XGGtIjEi HVynS3vJBgVc8u4HChmy6jo= X-Google-Smtp-Source: AFSGD/VBclVMflf2PkhIstqjDgtpeWySWWZjjSUuJsaYqjszs6R9mPuxycA1WNmZR5V4Vo/iAaGdVw== X-Received: by 2002:a37:8d81:: with SMTP id p123mr5425667qkd.241.1543590064496; Fri, 30 Nov 2018 07:01:04 -0800 (PST) Received: from localhost ([144.121.20.162]) by smtp.gmail.com with ESMTPSA id k22sm2417808qtm.73.2018.11.30.07.01.03 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 30 Nov 2018 07:01:03 -0800 (PST) From: Rob Clark To: dri-devel@lists.freedesktop.org Cc: Jordan Crouse , Rob Clark , David Airlie , linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/4] drm/msm: rework GEM_INFO ioctl Date: Fri, 30 Nov 2018 10:00:40 -0500 Message-Id: <20181130150050.13762-3-robdclark@gmail.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181130150050.13762-1-robdclark@gmail.com> References: <20181130150050.13762-1-robdclark@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Prep work to add a way to get/set the GEM objects debug name. Signed-off-by: Rob Clark --- drivers/gpu/drm/msm/msm_drv.c | 25 ++++++++++++++++--------- include/uapi/drm/msm_drm.h | 17 ++++++++++++----- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 9f823bf8d312..913f5b3642b5 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -863,21 +863,28 @@ static int msm_ioctl_gem_info(struct drm_device *dev, void *data, struct drm_gem_object *obj; int ret = 0; - if (args->flags & ~MSM_INFO_FLAGS) + switch (args->info) { + case MSM_INFO_GET_OFFSET: + case MSM_INFO_GET_IOVA: + /* value returned as immediate, not pointer, so len==0: */ + if (args->len) + return -EINVAL; + break; + default: return -EINVAL; + } obj = drm_gem_object_lookup(file, args->handle); if (!obj) return -ENOENT; - if (args->flags & MSM_INFO_IOVA) { - uint64_t iova; - - ret = msm_ioctl_gem_info_iova(dev, obj, &iova); - if (!ret) - args->offset = iova; - } else { - args->offset = msm_gem_mmap_offset(obj); + switch (args->info) { + case MSM_INFO_GET_OFFSET: + args->value = msm_gem_mmap_offset(obj); + break; + case MSM_INFO_GET_IOVA: + ret = msm_ioctl_gem_info_iova(dev, obj, &args->value); + break; } drm_gem_object_put_unlocked(obj); diff --git a/include/uapi/drm/msm_drm.h b/include/uapi/drm/msm_drm.h index 3c3af92c4b3e..bc1757848c7c 100644 --- a/include/uapi/drm/msm_drm.h +++ b/include/uapi/drm/msm_drm.h @@ -105,14 +105,21 @@ struct drm_msm_gem_new { __u32 handle; /* out */ }; -#define MSM_INFO_IOVA 0x01 - -#define MSM_INFO_FLAGS (MSM_INFO_IOVA) +/* Get or set GEM buffer info. The requested value can be passed + * directly in 'value', or for data larger than 64b 'value' is a + * pointer to userspace buffer, with 'len' specifying the number of + * bytes copied into that buffer. For info returned by pointer, + * calling the GEM_INFO ioctl with null 'value' will return the + * required buffer size in 'len' + */ +#define MSM_INFO_GET_OFFSET 0x00 /* get mmap() offset, returned by value */ +#define MSM_INFO_GET_IOVA 0x01 /* get iova, returned by value */ struct drm_msm_gem_info { __u32 handle; /* in */ - __u32 flags; /* in - combination of MSM_INFO_* flags */ - __u64 offset; /* out, mmap() offset or iova */ + __u32 info; /* in - one of MSM_INFO_* */ + __u64 value; /* in or out */ + __u32 len; /* in or out */ }; #define MSM_PREP_READ 0x01 -- 2.19.2