Received: by 10.223.185.116 with SMTP id b49csp271518wrg; Tue, 20 Feb 2018 21:02:45 -0800 (PST) X-Google-Smtp-Source: AH8x226nbJwDx4GUTQAoNCa/l5gXcueqbhqy/tBfRjTkhVlEou7IoJHXCiusmTvKQMCHJgYdSw0b X-Received: by 2002:a17:902:32a2:: with SMTP id z31-v6mr1998956plb.32.1519189365411; Tue, 20 Feb 2018 21:02:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519189365; cv=none; d=google.com; s=arc-20160816; b=EfSVyjqZqIz6Zm3/Lb0lmVsV4oVPCZ3rEj1WKUHsB1a1d2QhFMXOi3/Gyo+Sam4Qky XXpXTTltziOePtWK7wnlNKRz511Sw/DZmBegsMKavmyDXTI+Bb8RlJBNA5TKs5Wf0dyx gwCNCEWu/hMCn4PC5Pai8tMi+3Aw1QdRFR/XMA6EoDYynm+rWGT9mWrDWtEtC5QJ9fqR FCKSjuTqPHJJuEAUH7p13MRL24oOnA+q6UYobsTh++eSVLuxRoF/Phv+N4WmQNcD9tec n2VSrovpJD/mY0wTwsg3R08N077Io8BwsLIMpPFv7S1qKOdIAfC7DuZIje7n+VPUpNaK 7FMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=BzbeQmlxLXOdPaZ6c41xLKG9Xt+aQCC+elXz00mLPww=; b=cIt70qMqKuU8rH+PWDQ16rYauDHZb8Ks1BtHiNJxjeFJuNMJMvV2/FVm45jQzqje6e wo7Sbodu5qtxrGDaL15/xv/68219NW66ybSGPnMd11Yr4ah7Y4Ot7XdtbgFxqlWocAwJ Rz/tsqZ9CSBSO7tF9+0FVCJBQSKnD1IqX0h88UzB6eEwJM9afvmrfcAL3nU0Hvk0x+yI zaY8YF4Xc3vfsXziMvna4jihtkfV8wKMqZDdebvh0Ni4Sd7w6gHykRoOQtu/Xlh8UxwU p0WCF3cCloquCiv3gpTU1/DHRg+oykam8QBuGjjxxnXdgx9bDO8VRMNW2eKo3y759/Pu dxOw== 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 v13si6277831pfl.342.2018.02.20.21.02.17; Tue, 20 Feb 2018 21:02:45 -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 S1751452AbeBUE6k (ORCPT + 99 others); Tue, 20 Feb 2018 23:58:40 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:47128 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751017AbeBUE6j (ORCPT ); Tue, 20 Feb 2018 23:58:39 -0500 Received: from pps.filterd (m0098420.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w1L4sVdX065622 for ; Tue, 20 Feb 2018 23:58:38 -0500 Received: from e06smtp11.uk.ibm.com (e06smtp11.uk.ibm.com [195.75.94.107]) by mx0b-001b2d01.pphosted.com with ESMTP id 2g8y2p5np9-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Tue, 20 Feb 2018 23:58:38 -0500 Received: from localhost by e06smtp11.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 21 Feb 2018 04:58:36 -0000 Received: from b06cxnps4074.portsmouth.uk.ibm.com (9.149.109.196) by e06smtp11.uk.ibm.com (192.168.101.141) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 21 Feb 2018 04:58:33 -0000 Received: from d06av21.portsmouth.uk.ibm.com (d06av21.portsmouth.uk.ibm.com [9.149.105.232]) by b06cxnps4074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w1L4wXtW47317164; Wed, 21 Feb 2018 04:58:33 GMT Received: from d06av21.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8A26E52041; Wed, 21 Feb 2018 03:50:27 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.192.253.14]) by d06av21.portsmouth.uk.ibm.com (Postfix) with ESMTP id 39F0652043; Wed, 21 Feb 2018 03:50:27 +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 69814A0135; Wed, 21 Feb 2018 15:58:30 +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] ocxl: Add get_metadata IOCTL to share OCXL information to userspace Date: Wed, 21 Feb 2018 15:57:36 +1100 X-Mailer: git-send-email 2.14.3 X-TM-AS-GCONF: 00 x-cbid: 18022104-0040-0000-0000-00000435DFAD X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18022104-0041-0000-0000-000020D7F27C Message-Id: <20180221045736.7614-1-alastair@au1.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-02-21_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=1011 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1802210059 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