From patchwork Fri Aug 18 12:51:22 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyansh Jain X-Patchwork-Id: 27642 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 57E3090F4; Fri, 18 Aug 2017 14:41:52 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0056.outbound.protection.outlook.com [104.47.41.56]) by dpdk.org (Postfix) with ESMTP id 2529D7D7F for ; Fri, 18 Aug 2017 14:41:50 +0200 (CEST) Received: from CY4PR03CA0095.namprd03.prod.outlook.com (2603:10b6:910:4d::36) by BL2PR03MB546.namprd03.prod.outlook.com (2a01:111:e400:c24::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1362.18; Fri, 18 Aug 2017 12:41:48 +0000 Received: from BN1BFFO11FD013.protection.gbl (2a01:111:f400:7c10::1:194) by CY4PR03CA0095.outlook.office365.com (2603:10b6:910:4d::36) 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, 18 Aug 2017 12:41:47 +0000 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 BN1BFFO11FD013.mail.protection.outlook.com (10.58.144.76) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1341.15 via Frontend Transport; Fri, 18 Aug 2017 12:41:45 +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 v7ICfeCH028231; Fri, 18 Aug 2017 05:41:43 -0700 From: Shreyansh Jain To: CC: , , Shreyansh Jain Date: Fri, 18 Aug 2017 18:21:22 +0530 Message-ID: <20170818125127.22346-2-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170818125127.22346-1-shreyansh.jain@nxp.com> References: <20170818125127.22346-1-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131475337075198817; (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)(39860400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(81166006)(8676002)(81156014)(86362001)(47776003)(68736007)(5660300001)(8936002)(356003)(305945005)(105606002)(48376002)(2351001)(50466002)(77096006)(50226002)(106466001)(2906002)(1076002)(53936002)(110136004)(6916009)(6666003)(33646002)(2950100002)(104016004)(498600001)(36756003)(50986999)(189998001)(76176999)(5003940100001)(97736004)(4326008)(626005)(54906002)(8656003); DIR:OUT; SFP:1101; SCL:1; SRVR:BL2PR03MB546; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD013; 1:/A63mVPnr+WWWfFyORaRXpkC2ZCogwhjyuOtry74nt+wF7L9P+yBKuiF8QGlMZgDrv/IutcVyupItix9Mg0D7ubo1kLBTBPqwb/IMRE1SceEuKhI93x7Uqd451SVlnPe MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c46b1f78-8dc8-4b3f-2a01-08d4e6367d8c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603157)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BL2PR03MB546; X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB546; 3:C0uGu1pkTt6A8Ri1JkDIWSeW40NqO4LeJgpTk+fO2suA4upQYb09AQ2LsVzBx94HqYRrQ57ZGPc1/TdB73WFbQ56xlnZM/rZPrDMxZdyL6PLh55aEAAtu6dmvgeFcrVbbUWJTGk/AsbJtlBq1P0QSkAQJLDSy/L4acY05D0lm+QD+G5uyujnzkIIylNEwyfYe+GqBudIKty0Xub/JvlSbN0Di+39AnzB4JO5p/APqR8Kyc1y70UcM1bXmqpdD2MUHAa0RSDJhyQdb+V574HzN+jFBgmwt0PfaS7uFHvcgkyUooarrxPvqXZp+zQvl87/czOEoc2zuHsZk9Ojz7biSbNn+kXW44559Pbo7Cw8gN8=; 25:exvx4gZN5I9VMr3bUGpkLDgNfjWXO0k3yjax2hs9QOtYr1t1fde7lwZCJJrqOpal7DIfCKSAxmDX/uaQQi4IigTUkZD3H/mBKnH6a7Lo5seP/+ekeGkuK9jMPfgMZ/VoAmxYakVVVK+04mF0r0jL4DV4BF8fvzuKhxdcdmkWRPhQLxUWaQooMDhGBRzwzACEZ9u84YzSvmJNQYHOJA0RWxYxdRrV4I155QnktovQOVHZzP45WotIZwihQde9krfxUvoKFhpfzVNl8BkhVD7w73nCUoLaio1aB3oW8wYJ1+R4VwSJyMJcUgGFDcAse4KjwRgKVPxaww22Pa6fWAhAig== X-MS-TrafficTypeDiagnostic: BL2PR03MB546: X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB546; 31:CgmMpcKgNRSeJtuGLyWGM3iOzGwf5PZ1UfyLj9GDytNvX+WiMO3LX16oKH6mAMSAWuJ/1FMrnOwo+CSA+M4IFejhgIhd2rxEkW1Geackd/quP9q9OJJtbbxBxbVGC2wyglbgQTJ4qha+9y19UbCt5ylrhNFJZ+oDYpOHfwdnPpCjAeZhQ740FGXhEHJdC0mjEgoL+f0MevUuaFHt8BYaHG8dPhAaBeufQpFq5uAljMY=; 4:oYcjGM5XeQ8/rg4DyTuVDjsduKU1AfGzSql53HgP1oBQBbIQQwJHPywCkE4NN8rP/cFfSVukhFahPMiLrF6h4MzyGfPCFEqWAdRzyMiMX7iZx0jLcMNGaCXUiOEzOsgbBmZ4k/HWVnFWnYDu3PQu8c47qF+injzx4BPW1jpqx37knnLGczIJk3XhEkb9IssClYPmWIIy+jI0DOmT8J7Qfou3QTRlnJdKvfpUfYkRSGKWex4n22PQ+Wa37M1T2ODSSjchKd01a+vd6H6MubGQylz4vH02rrGnWpAVgHalvGq0T3M74uMj07n0fGs/e204z5uo3PxeAQa23YAmoiFgome0PyfQi6Kfupx3uOwSWgc= 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)(13016025)(13018025)(8121501046)(5005006)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6055026)(6096035)(20161123565025)(20161123556025)(20161123563025)(20161123561025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123559100)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BL2PR03MB546; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BL2PR03MB546; X-Forefront-PRVS: 040359335D X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2PR03MB546; 23:rBwUNkyJgmaySp3lrQZIlyeaqKwCBf4zbh5eI8p+9X?= hqi7G2ueQh4/Kr++KS5vE0ssHChCHpDpG/PlC+YDmQI5evT/bdV4QBsmJZhpyY+TPA1K2bydJO4L+Pw9mHzgz59iOTJPT47YP4/xXe6uR3cUnnHrgBenjpqw1H8I4E5GiwTmWH63CbsS6Br1Cvnn5omgJhPvVjQ6Irgi4197a4lLVsHCdQFY9YiyiqHp0Oa4GLejv9YSdJy3d6ot4l3pmamKoRNpKjCEfzkNCcvczDh10XM9JEPAdXGBQP2PNx0xm9LhvON80va328w2wBa33y/SxsBLZbHW0O0v7QiKsX73Fm8beukdgndu7HdC++4DyMLBMKIHpSgiF4JFHhcUtJcIeRO+xA26lvGsvzLp/wvlHH5AkXzIbp9jY+2qEHcLrOdVuatDlga2g9hD9hW7i/E1zLpq1HaKrFx7JOnV2F+2McrafOidqKfiWJRFEsl/PqEw1UwZ/PGeNz3l6fyx64o9L//8cBIhLV/ujyk/tFwwQLMwvD5L0nWfJnmsciC6mL7Ml0tN28lxMuiBMYZgSC+v9d/TYK58KWMu+XA063CGVMPJJK2pJUPqlc6yhPzH2Obf1hrfk6g40DWWHamq+4CbR0DniyFUmBpeOPrjzXo3vk2nGJ9jwlaHORMoyK3dxvBCN3jKDm7LJODIqtLavixsvZ3zjPd7jsLebDqtewmLFm9F1/2nQjJ6v0LoCbBHjWVqUH/wlz0o9OkYR8OnctdLhu4uKBuOT+9CpwGKmbmlRHNvEGSKfqXWxZE8lQz0O3Aondp533f0WURnK4Y4aQlGwseFvdifMwrhiFw7aNLejkod1WfFFc8C8bzKvNYsPvzFgAU/crpOhJgWwqfwtqrDTVDRh54edHjT6dNFM1B4kR0vNlW1yfTCSCrvc7k4yh4MhpYg2IuJsbGMDKIKFxO5A2plE5elPW3Xa4Tl6T0g8HOFXBcYlnmT3K4vcjjOw1w6GzigYLYf5TWo670DqePgR2F//d4+oKmY7Q0Xpf7pQJSYiANReAzVqdNwGG9ZH4SU5JcdyU3+oyMImZNTJhIBo5Uim6JDivqlZpTNTVZeBy0BcR4wPyno/f0xYQYjA= X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB546; 6:VBnrIqD07DX4yspO83pvlXlHUXjfVFiJCdqCbvDbZ8PhrOhA17loujHtrEnjuIYO6eE6gkT818bkshtao0SV/TnLqufpdW2XcWEmDGu9UZx3e9KDazZdQpmQP2XbF/+HMcjPF1ksmwuLPdhbZ2GKhCsENSkXk/Y8S4yzDBK67o0feml8W92L+ua3Ek4GxWApQ4oLGAGQBgzD3sGYB8Ffff2FSIsP8mP8YBTf/BOAiJwiVSuZIAfbzvjtUvwT3CWTl+n2n5GFjOH3tGURC9V9xh/e/OkYfTAQaiHvpbmcQz87OSPqq25TiHI519Mvf+QsNeE2HSUHDlOv0EeiIZdtcQ==; 5:KCx037brqQjjjkNEXzWBmvO+KkOP/roqPgDW9bMGn6gIl8qUtInINSAjMkA73z1M3iekfV8f3S70v3thONSIN0vEaRaeaS02hx7Pge9ZQBywcT6EoUNgJfZptEhi/HvgHb8wx71R3jibTvaIGdpN9w==; 24:ibvJnTU+30x9amLPefFlxJcHmLvZL+yA9oo7s54cc04gvT3jjeLP+g0w7ySM7h6aTN4cjHU4/8ju9cpSt+R9wG/kgEcuLc7DlMSW8PNV8lo=; 7:nSudPdh/1hF7NlOJ9oVyuz+z0II0+abN+t9GCTBGukfmGzbTYvMaEkbPkNlI/FYgh3+LgHVGP870YMSkJLt9Cx38z0CEb1ChHF9u8wqhj0N0VmVgbAuSPBzWTziv5wWbouVxxSnKieHWPsTmRZ8me6tch4LQNO/GIb1YTbR/5xqegchRZZ+IoIStE5KgK6NfpGCW92VhXrbR5L2rphM3WC3wejKeivMWYFEivdOnBGk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2017 12:41:45.9442 (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: BL2PR03MB546 Subject: [dpdk-dev] [PATCH 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 --- 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;