From patchwork Fri Aug 25 10:19:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyansh Jain X-Patchwork-Id: 27950 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 820927D22; Fri, 25 Aug 2017 12:10:29 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0055.outbound.protection.outlook.com [104.47.32.55]) by dpdk.org (Postfix) with ESMTP id 7380C7D22 for ; Fri, 25 Aug 2017 12:10:27 +0200 (CEST) Received: from CY4PR03CA0016.namprd03.prod.outlook.com (2603:10b6:903:33::26) by MWHSPR01MB180.namprd03.prod.outlook.com (2603:10b6:301:7b::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1385.9; Fri, 25 Aug 2017 10:10:26 +0000 Received: from BN1BFFO11FD025.protection.gbl (2a01:111:f400:7c10::1:132) by CY4PR03CA0016.outlook.office365.com (2603:10b6:903:33::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1362.18 via Frontend Transport; Fri, 25 Aug 2017 10:10:25 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1BFFO11FD025.mail.protection.outlook.com (10.58.144.88) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1341.15 via Frontend Transport; Fri, 25 Aug 2017 10:10:25 +0000 Received: from Tophie.ap.freescale.net ([10.232.14.39]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v7PAAHBx025398; Fri, 25 Aug 2017 03:10:21 -0700 From: Shreyansh Jain To: CC: , , , Shreyansh Jain Date: Fri, 25 Aug 2017 15:49:49 +0530 Message-ID: <20170825101954.28124-2-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170825101954.28124-1-shreyansh.jain@nxp.com> References: <20170818125127.22346-1-shreyansh.jain@nxp.com> <20170825101954.28124-1-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131481294256267082; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39380400002)(39860400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(5003940100001)(498600001)(104016004)(110136004)(8676002)(81166006)(81156014)(86362001)(2351001)(106466001)(33646002)(356003)(48376002)(68736007)(105606002)(4326008)(305945005)(5660300001)(36756003)(50466002)(8656003)(626005)(54906002)(53936002)(47776003)(189998001)(76176999)(50986999)(97736004)(50226002)(1076002)(6666003)(2906002)(6916009)(2950100002)(85426001)(8936002)(77096006); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHSPR01MB180; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD025; 1:o6mnTE9fdyu4FTLKjdQ6U8W+H6BWw/Ct3PgQhiyZ6P1m8vKUWLPSSYki+yhzTSrQDN9eBDi3tTfee76mkB86TFYYjifvT1dlqfPcWxpRBKvYdYcd47iwjW+4tbBCfsf2 MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 824cba47-6e74-438c-7dec-08d4eba18135 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603199)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:MWHSPR01MB180; X-Microsoft-Exchange-Diagnostics: 1; MWHSPR01MB180; 3:uYU5tHOIVoIEg4Z839s4Q+S3tRLP42kZ2EiLooBcGg+a2ewGb5NnUQUNqUxNqsxUrR1vDmqG1DSpjW/qC/tWl4I2XV6TrPbNEWJH/p537F5ZNSJkJB+kN6q0LYCEBlRn6XTU57XXduQrlzGRGPII6Abtk2uipquXJ1A6dP2LaMqGRJU8VjQU6KS+8h3wYqTTegJToIs56ZeqxHqsHg+yG9bYHL1BOw4xCIjMlGrj0SRYWpm4HXqC3xcM5tkPloGjW61DyiKoXo0c5rtsAd13Gu/hqrNJQAyANvTUJ6mMySR+xkVEx3juqbxdzhIP1QFTbi1kkBZ3cfv/9/p4nrzbuSqAoBjJK5eHnrzC5l+GHTU=; 25:97+i70M1JKOjejsDHaIGmFNJ4xvyZCGeKez/PiUkj7vTS+D4lYYAjl6WspBZYhN4oYt4pbvqOkiTvO4E2h08WxikBb9NSLPobnTUhbRKH62SqSEKWyHMjV1aw0smN6KNsnpbsmNtDnW9dE4fM0cKtMYWNGBjuBToSXeyTCxtmvClRQsy1epq737WKkaTLOKkkrtE90namFQVIH54BanMgmbccCtsjgJn6K2dn9ai4/aElKBTcNX+YxtjHlgDyFJsLme8OuTDJU6Q5gFg7YzmAWbN+iS/AP5flXep+ar8gFv/AIeJWFIfqhcMGhaPyeI/tZUnG4z1jvUlLEJ3K9PnYw== X-MS-TrafficTypeDiagnostic: MWHSPR01MB180: X-Microsoft-Exchange-Diagnostics: 1; MWHSPR01MB180; 31:H+tYkNJ9sWCnuyhUXtc9nsE+1li322UpQ3tsoRLUeggLcvXU5bL4iLXJOZDD2omOvAbFRsgrsqABhq+CosZhg9eiWXB+6fzyjiH6ltKl93QlesZj3V20IV/65bQWVf3UTwk2Jnbt2XgVkfW599Netz0Jfw4AhGf3K3HUB/4KI1dLx9jngAPTIXUJAaT4J774/kK4/AEHtWugGRCKvXsZcXwD5bLNwaoAiJJNadabRfo=; 4:s02KS4hWnbK5rrSpCbd14olfHlKudW2aTKdEBKBxSyOgd0XMInNO1I5A0GAhaXGih8C/4A/WGrWr7pf86RB2c1QekuvL+micsKj/3LS4xeoSX0YSocUviF0mdHPlHdQsX2tpZK4h/Xk3+MbxE/gnzxWeMHivMEuVNSpJShu6FaNxKQMoHReJi96zsW3VQo0riwXyJFgUNQtzLY3Ivdo9AkoQmgRsQCPjPNO3o2POQWU/flpQYsllPPonpvaiN9VxLoRw1EilIjLGSD1a47hnOf+9HqyU/brhy+aE97PKs8qEMVTPDJhRR8D3NSJ+XNCyCjw684bFDoHAf0k3tkyPmz/4HquguQ2OuGD532F4xss= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684)(21532816269658); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(5005006)(8121501046)(13018025)(13016025)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6096035)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259150)(20161123563025)(20161123559100)(20161123565025)(20161123556025)(20161123561025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHSPR01MB180; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHSPR01MB180; X-Forefront-PRVS: 041032FF37 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHSPR01MB180; 23:UlH/TWDb8DWAhcItuqk8nnPxjaQjGkxJw4MDbtj0f?= L42oXsM2wE8UV8o21mlvz9cOHfhhlJjtZUU5LTEmWbgv0LnI8WunlSSdaX6VtGAlpNKsbUdBg+FzPIOthvlwD12i7Wkrt+sdKUIZ7IUbKd5awEDc4TS7YM7Td1WsOSt7XH6tTjRYgjwkWz0xRSvYV6WNlD2HOK3tL0SqZXD6mDf92JkFQH9N1VjE+QPML7+CkHfmeTZ9Om7JvZ+wLFROQ3gMzRWnwnASXRTFKh5Kpfq0UF1ntdK4YtZ3Z/j08LPz6VBOE85w1HKGxaOh+M2w3H8ZZOrz0YyCFz6xaTEUkzZTDfcLenX+rtjI0BjkrQZYvI0n51htTfMRDmIVyvIdBYREPiimB2pEToW0lX2IzVvwRpuPTKGX+988wy/yqSy+yAQoz9bz0RQajPRzKwGVmuN9pB32oSkokymOCAQLuukvpKIFVw08lDd0wSNZYUI1gZW0j0kUvzk0d3KRBEc01yiTccO55Kx4RznqhH5RUbdIrSF7exu5RLFvgBPPy3MiDbFkA1VW5q2oekwnp8UsXx1trTXY10hmqm2En7QiUW6GOKkWcE9HkUnfak0b64WBEorAVZWsMUDEwaj9q7Eq9ARhf6MD0JTnCtUKI8mkVTpiiq1O240fD0hd10DOVtye0cwgh0YIqJNuCGjUQK6j9jEJp4u5aMUrfsCVVVDS9Vd/9f86QlgCLRnY1VI/B5mcT93CAuZ11lsUr+WdMME9dtSLGgxlViGzg4yXEusJ5D2Adhl/XNYIyECGkcc807iRr7TSuQFsXpz3RBCo5iR1roZKwYAyaei6uJThxhdCkbFHWOLCrUDm67IKJJv3csfyJqVSuyGkV7vyg6dzAFj+K6PGvtHIufVy+w/J/uiLsjHc0ipGuFOMB1D1tnbynX6vWRFcopJ2JI3gCTA8gp5mqLUu68F0G71behb3f5raDwGylDDYpNXbU5P0VJ0AS0ASFDNsFiOfWz5UPXlGxiUNoK6W4xsf7N4MvlOxZ9ZcPO/LFAsGU2oFZcbziwCJ0wFktwDiVzHKH0eZ1n2SunduyLsX6Yf2ZZGH5ui1FbZcwFBJ/Tx4UxXmu5IANyZgL8vvlX01v9YUAG5dmKNzJjF8K9M X-Microsoft-Exchange-Diagnostics: 1; MWHSPR01MB180; 6:ydSR9m4roZTxjdphBaXldN1u+ESBccw+sh95skNN5j9yM5I7CMPV5ESNah3Ov1rPmYmNscvwZRNXu31OadadtXN0HvQhf9lpIRvOC2NaaQCAn2DMawBsC31LQLQQCod5ip6Br7H7iIDXZyr7zXs/E3aMXD1KVQs2HLeknRrCGeqHkP5HDR1KxSWuwNsMVpTlelYeBZtrHPQyJKucEjjZQ1HKvwDAqvFtx6hAt/+vV51/F1WZIHxHF9TcJwkwPbKDQx4KCnPWEeOaTgRNva7WgRzSGOHkQLknmVwGtNq/K44t6mhv8RLz2Ba/3P5Rz0A7jhKke4XZ+T3INqBOA+1sdA==; 5:mLtn483EGqSgU+syjduhNWqRuK0vZmqgzRwt5TYtYzKHFMJWG6Snxt6W8SMPL39Dl7TNHx8IFg6YpwmDeVe86ehRyfSRw4UvfiwTV1C33qkkU1KaazbFwQerkQ1UJDriiMt8oo4Jq3kgVIVNMJEfNg==; 24:oGto6G8rx3WjWKnwKfmpSsfpYYHObIuPxPVmzSj98YFfRDwjgw+8bnSIg5LjWxGhIWhasxxARI9fMhGugco3VMT7ZsYv6s0fqCBbNeI+Vpw=; 7:LNfQafWtfF+BHrgeB9kloZqAlb7gmL7TLmHiIQTXF5gR27txBL/utxl84J6cR3PRMD0YhxuhKIQvOL20BuWcamYS+V8OKytGLu9R02uoUbWjPGQgXw7nmRYYHmT0JbnrlU4wi+uFFSXUebxBBJP1EMDoZeqJyKdBAk+WYhKIBTWKyub7ygN4xkT9PXVrJ+0D0ZRelPPrjp0WqqorKruSjKiThz79PLRTygu5rsBVVB8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2017 10:10:25.4395 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHSPR01MB180 Subject: [dpdk-dev] [PATCH v2 1/6] bus/fslmc: support only single group and container X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Currently DPAA2 code doesn't support multiple groups and containers. Remove such provision in code to simplify code. Signed-off-by: Shreyansh Jain Reviewed-by: Santosh Shukla --- drivers/bus/fslmc/fslmc_vfio.c | 70 +++++++++++++++--------------------------- drivers/bus/fslmc/fslmc_vfio.h | 3 +- 2 files changed, 26 insertions(+), 47 deletions(-) diff --git a/drivers/bus/fslmc/fslmc_vfio.c b/drivers/bus/fslmc/fslmc_vfio.c index 45e5927..3423b57 100644 --- a/drivers/bus/fslmc/fslmc_vfio.c +++ b/drivers/bus/fslmc/fslmc_vfio.c @@ -62,8 +62,6 @@ #include "portal/dpaa2_hw_pvt.h" #include "portal/dpaa2_hw_dpio.h" -#define VFIO_MAX_CONTAINERS 1 - #define FSLMC_VFIO_LOG(level, fmt, args...) \ RTE_LOG(level, EAL, "%s(): " fmt "\n", __func__, ##args) @@ -71,8 +69,8 @@ #define SYSFS_FSL_MC_DEVICES "/sys/bus/fsl-mc/devices" /* Number of VFIO containers & groups with in */ -static struct fslmc_vfio_group vfio_groups[VFIO_MAX_GRP]; -static struct fslmc_vfio_container vfio_containers[VFIO_MAX_CONTAINERS]; +static struct fslmc_vfio_group vfio_group; +static struct fslmc_vfio_container vfio_container; static int container_device_fd; static uint32_t *msi_intr_vaddr; void *(*rte_mcp_ptr_list); @@ -90,22 +88,18 @@ rte_fslmc_object_register(struct rte_dpaa2_object *object) TAILQ_INSERT_TAIL(&fslmc_obj_list, object, next); } -static int vfio_connect_container(struct fslmc_vfio_group *vfio_group) +static int vfio_connect_container(void) { - struct fslmc_vfio_container *container; - int i, fd, ret; + int fd, ret; /* Try connecting to vfio container if already created */ - for (i = 0; i < VFIO_MAX_CONTAINERS; i++) { - container = &vfio_containers[i]; - if (!ioctl(vfio_group->fd, VFIO_GROUP_SET_CONTAINER, - &container->fd)) { - FSLMC_VFIO_LOG(INFO, - "Container pre-exists with FD[0x%x] for this group", - container->fd); - vfio_group->container = container; - return 0; - } + if (!ioctl(vfio_group.fd, VFIO_GROUP_SET_CONTAINER, + &vfio_container.fd)) { + FSLMC_VFIO_LOG(INFO, + "Container pre-exists with FD[0x%x] for this group", + vfio_container.fd); + vfio_group.container = &vfio_container; + return 0; } /* Opens main vfio file descriptor which represents the "container" */ @@ -118,7 +112,7 @@ static int vfio_connect_container(struct fslmc_vfio_group *vfio_group) /* Check whether support for SMMU type IOMMU present or not */ if (ioctl(fd, VFIO_CHECK_EXTENSION, VFIO_TYPE1_IOMMU)) { /* Connect group to container */ - ret = ioctl(vfio_group->fd, VFIO_GROUP_SET_CONTAINER, &fd); + ret = ioctl(vfio_group.fd, VFIO_GROUP_SET_CONTAINER, &fd); if (ret) { FSLMC_VFIO_LOG(ERR, "Failed to setup group container"); close(fd); @@ -137,23 +131,11 @@ static int vfio_connect_container(struct fslmc_vfio_group *vfio_group) return -EINVAL; } - container = NULL; - for (i = 0; i < VFIO_MAX_CONTAINERS; i++) { - if (vfio_containers[i].used) - continue; - container = &vfio_containers[i]; - } - if (!container) { - FSLMC_VFIO_LOG(ERR, "No free container found"); - close(fd); - return -ENOMEM; - } + vfio_container.used = 1; + vfio_container.fd = fd; + vfio_container.group = &vfio_group; + vfio_group.container = &vfio_container; - container->used = 1; - container->fd = fd; - container->group_list[container->index] = vfio_group; - vfio_group->container = container; - container->index++; return 0; } @@ -222,7 +204,7 @@ int rte_fslmc_vfio_dmamap(void) #endif /* SET DMA MAP for IOMMU */ - group = &vfio_groups[0]; + group = &vfio_group; if (!group->container) { FSLMC_VFIO_LOG(ERR, "Container is not connected "); @@ -392,7 +374,7 @@ int fslmc_vfio_process_group(void) char path[PATH_MAX]; int64_t v_addr; int ndev_count; - struct fslmc_vfio_group *group = &vfio_groups[0]; + struct fslmc_vfio_group *group = &vfio_group; static int process_once; /* if already done once */ @@ -569,7 +551,7 @@ int fslmc_vfio_setup_group(void) { struct fslmc_vfio_group *group = NULL; int groupid; - int ret, i; + int ret; char *container; struct vfio_group_status status = { .argsz = sizeof(status) }; @@ -599,13 +581,11 @@ int fslmc_vfio_setup_group(void) FSLMC_VFIO_LOG(DEBUG, "VFIO iommu group id = %d", groupid); /* Check if group already exists */ - for (i = 0; i < VFIO_MAX_GRP; i++) { - group = &vfio_groups[i]; - if (group->groupid == groupid) { - FSLMC_VFIO_LOG(ERR, "groupid already exists %d", - groupid); - return 0; - } + group = &vfio_group; + if (group->groupid == groupid) { + FSLMC_VFIO_LOG(ERR, "groupid already exists %d", + groupid); + return 0; } /* get the actual group fd */ @@ -637,7 +617,7 @@ int fslmc_vfio_setup_group(void) /* check if group does not have a container yet */ if (!(status.flags & VFIO_GROUP_FLAGS_CONTAINER_SET)) { /* Now connect this IOMMU group to given container */ - ret = vfio_connect_container(group); + ret = vfio_connect_container(); if (ret) { FSLMC_VFIO_LOG(ERR, "VFIO error connecting container" " with groupid %d", groupid); diff --git a/drivers/bus/fslmc/fslmc_vfio.h b/drivers/bus/fslmc/fslmc_vfio.h index 0aff9b1..942a33c 100644 --- a/drivers/bus/fslmc/fslmc_vfio.h +++ b/drivers/bus/fslmc/fslmc_vfio.h @@ -44,7 +44,6 @@ #define DPAA2_MC_DPBP_DEVID 10 #define DPAA2_MC_DPCI_DEVID 11 -#define VFIO_MAX_GRP 1 typedef struct fslmc_vfio_device { int fd; /* fslmc root container device ?? */ @@ -64,7 +63,7 @@ typedef struct fslmc_vfio_container { int fd; /* /dev/vfio/vfio */ int used; int index; /* index in group list */ - struct fslmc_vfio_group *group_list[VFIO_MAX_GRP]; + struct fslmc_vfio_group *group; } fslmc_vfio_container; struct rte_dpaa2_object;