Received: by 10.223.185.116 with SMTP id b49csp1430065wrg; Wed, 21 Feb 2018 19:05:43 -0800 (PST) X-Google-Smtp-Source: AH8x227D7Eyt+1fjAeAmvKG5EPt/cgO6mM3drIDkpr4Dwx9RukgYYCB7vWTTtW0g790FLhAcxbJV X-Received: by 10.98.34.139 with SMTP id p11mr5435233pfj.119.1519268743035; Wed, 21 Feb 2018 19:05:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519268742; cv=none; d=google.com; s=arc-20160816; b=keedC5Qiv1lCDAYY8tozZVZj56LsGcQUbryrs3rv33xquWmbNVqSPypdvEH98r+c0Z daS6JgV2rMJ5W9jaurR0GKZk3RGlb8KdWEiTil5PqVL5SlaMwzEXKyH10Fk0S7mXJ6NK Rj5RPYoZeZHZEcItY/uDp8LCH9hsb0MCT0euozjBFaF3Dygg8UX33X6j0qrcocj2QZbY X7QavBW0wnSa3gMBC5Re8V2c5ROuNJNsjQCN4uanYUv59aqItWYwj+rLX7jbe93I4lNE lIC+0P/Iws4tX4wT534RvRqA/c6K0Si+2BL480h86BGigFHtAXNJZMMLOB+8SFB5k6te AOXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:references:in-reply-to:date :subject:cc:to:from:arc-authentication-results; bh=BzbeQmlxLXOdPaZ6c41xLKG9Xt+aQCC+elXz00mLPww=; b=tUBT5XFDp0YW9ZkXWbr//YLQ9/1x4p/WKqBTTJA1VQnKDWbiHyEc0YtP1EH2JnZqp5 +4B7FWFPy8l+Y6+/ETmtGyrrd9Cpq4qqD4sr2YKxM3/pMe3raWVGmuQwajGHSugl/1st 4ixwSWxC7GEAoUdPLRLX92cE5oDpfpFnM08AZA3P8EdrD9OefyPHz5c3m88uXGWe/sJb 8Bc//rIBju/2o1sMkWMCKVmZX+HCLhLUeY3Z9pwgrt7aHLgtovAFp3rHRtnB3ulW6fas WLogAfxIVkR3Lk2WMsx5jabPSL1qePrbekqbO2EH8BFvUa7ClSDR7Coonw6P2mul9OwX 1IBA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z19si1940160pgc.353.2018.02.21.19.05.27; Wed, 21 Feb 2018 19:05:42 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752063AbeBVDEp (ORCPT + 99 others); Wed, 21 Feb 2018 22:04:45 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:59478 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751810AbeBVDEm (ORCPT ); Wed, 21 Feb 2018 22:04:42 -0500 Received: from pps.filterd (m0098396.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w1M32UbJ030943 for ; Wed, 21 Feb 2018 22:04:42 -0500 Received: from e06smtp11.uk.ibm.com (e06smtp11.uk.ibm.com [195.75.94.107]) by mx0a-001b2d01.pphosted.com with ESMTP id 2g9ka04m16-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 21 Feb 2018 22:04:42 -0500 Received: from localhost by e06smtp11.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 22 Feb 2018 03:04:39 -0000 Received: from b06cxnps3075.portsmouth.uk.ibm.com (9.149.109.195) by e06smtp11.uk.ibm.com (192.168.101.141) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 22 Feb 2018 03:04:38 -0000 Received: from d06av21.portsmouth.uk.ibm.com (d06av21.portsmouth.uk.ibm.com [9.149.105.232]) by b06cxnps3075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w1M34bdo59113588; Thu, 22 Feb 2018 03:04:37 GMT Received: from d06av21.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EEA355204D; Thu, 22 Feb 2018 01:56:30 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.192.253.14]) by d06av21.portsmouth.uk.ibm.com (Postfix) with ESMTP id 9CD7A52041; Thu, 22 Feb 2018 01:56:30 +0000 (GMT) Received: from adsilva.ozlabs.ibm.com (haven.au.ibm.com [9.192.254.114]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.au.ibm.com (Postfix) with ESMTPSA id 2F988A0146; Thu, 22 Feb 2018 14:04:36 +1100 (AEDT) From: "Alastair D'Silva" To: linuxppc-dev@ozlabs.org, linux-kernel@vger.kernel.org Cc: frederic.barrat@fr.ibm.com, andrew.donnellan@au1.ibm.com, arnd@arndb.de, gregkh@linuxfoundation.org, alastair@au1.ibm.com, "Alastair D'Silva" Subject: [PATCH v2 1/2] ocxl: Add get_metadata IOCTL to share OCXL information to userspace Date: Thu, 22 Feb 2018 14:03:33 +1100 X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180222030334.14060-1-alastair@au1.ibm.com> References: <20180222030334.14060-1-alastair@au1.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18022203-0040-0000-0000-000004364FF1 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18022203-0041-0000-0000-000020D866E4 Message-Id: <20180222030334.14060-2-alastair@au1.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-02-22_01:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=2 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1802220038 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alastair D'Silva Some required information is not exposed to userspace currently (eg. the PASID), pass this information back, along with other information which is currently communicated via sysfs, which saves some parsing effort in userspace. Signed-off-by: Alastair D'Silva --- drivers/misc/ocxl/file.c | 27 +++++++++++++++++++++++++++ include/uapi/misc/ocxl.h | 22 ++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/drivers/misc/ocxl/file.c b/drivers/misc/ocxl/file.c index d9aa407db06a..11514a8444e5 100644 --- a/drivers/misc/ocxl/file.c +++ b/drivers/misc/ocxl/file.c @@ -102,10 +102,32 @@ static long afu_ioctl_attach(struct ocxl_context *ctx, return rc; } +static long afu_ioctl_get_metadata(struct ocxl_context *ctx, + struct ocxl_ioctl_get_metadata __user *uarg) +{ + struct ocxl_ioctl_get_metadata arg; + + memset(&arg, 0, sizeof(arg)); + + arg.version = 0; + + arg.afu_version_major = ctx->afu->config.version_major; + arg.afu_version_minor = ctx->afu->config.version_minor; + arg.pasid = ctx->pasid; + arg.pp_mmio_size = ctx->afu->config.pp_mmio_stride; + arg.global_mmio_size = ctx->afu->config.global_mmio_size; + + if (copy_to_user(uarg, &arg, sizeof(arg))) + return -EFAULT; + + return 0; +} + #define CMD_STR(x) (x == OCXL_IOCTL_ATTACH ? "ATTACH" : \ x == OCXL_IOCTL_IRQ_ALLOC ? "IRQ_ALLOC" : \ x == OCXL_IOCTL_IRQ_FREE ? "IRQ_FREE" : \ x == OCXL_IOCTL_IRQ_SET_FD ? "IRQ_SET_FD" : \ + x == OCXL_IOCTL_GET_METADATA ? "GET_METADATA" : \ "UNKNOWN") static long afu_ioctl(struct file *file, unsigned int cmd, @@ -157,6 +179,11 @@ static long afu_ioctl(struct file *file, unsigned int cmd, irq_fd.eventfd); break; + case OCXL_IOCTL_GET_METADATA: + rc = afu_ioctl_get_metadata(ctx, + (struct ocxl_ioctl_get_metadata __user *) args); + break; + default: rc = -EINVAL; } diff --git a/include/uapi/misc/ocxl.h b/include/uapi/misc/ocxl.h index 4b0b0b756f3e..16e1f48ce280 100644 --- a/include/uapi/misc/ocxl.h +++ b/include/uapi/misc/ocxl.h @@ -32,6 +32,27 @@ struct ocxl_ioctl_attach { __u64 reserved3; }; +/* + * Version contains the version of the struct. + * Versions will always be backwards compatible, that is, new versions will not + * alter existing fields + */ +struct ocxl_ioctl_get_metadata { + __u16 version; + + // Version 0 fields + __u8 afu_version_major; + __u8 afu_version_minor; + __u32 pasid; + + __u64 pp_mmio_size; + __u64 global_mmio_size; + + // End version 0 fields + + __u64 reserved[13]; // Total of 16*u64 +}; + struct ocxl_ioctl_irq_fd { __u64 irq_offset; __s32 eventfd; @@ -45,5 +66,6 @@ struct ocxl_ioctl_irq_fd { #define OCXL_IOCTL_IRQ_ALLOC _IOR(OCXL_MAGIC, 0x11, __u64) #define OCXL_IOCTL_IRQ_FREE _IOW(OCXL_MAGIC, 0x12, __u64) #define OCXL_IOCTL_IRQ_SET_FD _IOW(OCXL_MAGIC, 0x13, struct ocxl_ioctl_irq_fd) +#define OCXL_IOCTL_GET_METADATA _IOR(OCXL_MAGIC, 0x14, struct ocxl_ioctl_get_metadata) #endif /* _UAPI_MISC_OCXL_H */ -- 2.14.3