From patchwork Fri Sep 11 07:59:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Sachin Saxena (OSS)" X-Patchwork-Id: 77346 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 53FD7A04B5; Fri, 11 Sep 2020 09:59:45 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B857D1C0D9; Fri, 11 Sep 2020 09:59:31 +0200 (CEST) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2041.outbound.protection.outlook.com [40.107.20.41]) by dpdk.org (Postfix) with ESMTP id C62921C0CA for ; Fri, 11 Sep 2020 09:59:29 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JECn08ttsrEUMB6BMQD+pLMu2zopZ2ZVXqtWoeo9nW2oAmYm2FvMXKMML1Vb7f4xqYPvRKoukeIFPIvMode4IzdtYhlqeFlMBbpRA7YMPkz0yzKm8ClHVKQ9dfHyrLNXw6guTeLiPLpzmwOsLZ+HUBt11bHtH5bTp+cpzmwO577EzPYNuWl03U0Yir6l/rwPXGyNFGDONfd/bAMTvRPN1QMbTbbWRjKX1f20dILgjjSrc++ByVthklE2M7QfnxgR+VgD7ORINJRN3x9GxUGmp11Bv0apBxc9IlGiQue3V3bckJy6y74tLWiM2B7hlRfjR5gCKUTRPcotHw6y46Ls/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DhYf9P/m+pT4CvVKKftzKE/DGU8A+VbjMrbRkHzFVrU=; b=DTRk317NzV7Kx+Afg1SW59Cg2+OeJHWiOPDsUMAsGgvDY53Xj8Pyfzuy908mPjzzB4KqYcQuqWc9i51DzWwFJEH+pyhC0F84o0u2PNPp1kFdAIS6nxQyMXtNnWOCv8jQ42AkdzRnwMPBgEHYZ0a4c/jat6TGEGVvfHh2jZdtECasZYX5y8gMh2FUjjT5KRHktJosO0qPm+IClbGIIqHPNe5ti/WN4t/CeZMlSeFP476TySfvFYQYlrOtVRZmKL7ahvYDqLoQneAFbV/lZ4Vz2t68bMAG0ogWNw70F4dP1v8TMYcGP2B5Ocu7W9/qqjZ+xlj3W1i9v3WPcE/9oqW7DQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DhYf9P/m+pT4CvVKKftzKE/DGU8A+VbjMrbRkHzFVrU=; b=lLrKQb+HGxuZNUWtsLhW6Oy//ej1DovpiQHRROcb8xA4WfZ0g14gLLqYJxdfnXh1yni/Nq4CCVPW77KMuOZ9ALbT/nZq4+d9rOLh8QY6e88eT9fyAv/ef9Q4jc3TJB3EzP0zvcB8MOHtYrPdBMcfQoEL2DPCebqAWHQHchMDAeU= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=oss.nxp.com; Received: from VI1PR04MB5837.eurprd04.prod.outlook.com (2603:10a6:803:ec::28) by VI1PR04MB4878.eurprd04.prod.outlook.com (2603:10a6:803:5b::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3370.16; Fri, 11 Sep 2020 07:59:28 +0000 Received: from VI1PR04MB5837.eurprd04.prod.outlook.com ([fe80::cc01:9fe2:2544:8a4b]) by VI1PR04MB5837.eurprd04.prod.outlook.com ([fe80::cc01:9fe2:2544:8a4b%7]) with mapi id 15.20.3348.019; Fri, 11 Sep 2020 07:59:28 +0000 From: "Sachin Saxena (OSS)" To: dev@dpdk.org, ferruh.yigit@intel.com Cc: Sachin Saxena Date: Fri, 11 Sep 2020 13:29:05 +0530 Message-Id: <20200911075911.3214-3-sachin.saxena@oss.nxp.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200911075911.3214-1-sachin.saxena@oss.nxp.com> References: <20200911075911.3214-1-sachin.saxena@oss.nxp.com> X-ClientProxiedBy: SG2PR06CA0136.apcprd06.prod.outlook.com (2603:1096:1:1f::14) To VI1PR04MB5837.eurprd04.prod.outlook.com (2603:10a6:803:ec::28) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from lsv03161.swis.in-blr01.nxp.com (14.142.151.118) by SG2PR06CA0136.apcprd06.prod.outlook.com (2603:1096:1:1f::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.3370.16 via Frontend Transport; Fri, 11 Sep 2020 07:59:27 +0000 X-Mailer: git-send-email 2.28.0 X-Originating-IP: [14.142.151.118] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: bd976fdf-b361-4a9c-5a01-08d856289baa X-MS-TrafficTypeDiagnostic: VI1PR04MB4878: X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2582; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9IfDUU6Ul7gvSsOtbhvFEBsVf28qepCHr45zaJp1407TIMScQuIgdmkCcwOHLhnYyuBDY8RpYRLFW0GjCO4F55gf3aBd9iwHWnN+FBN8Tbe6/OVTJFFiiYHAqeTbReou002H7TYZ6ccubQb0kgrARhJWFMJM7I+ABGzmR2dancd8VI9MMQypU2pOAlvcZnrEllQtKBI2lr2XcKQTANxey/pyMYwst+0R3HihVDFqa9KjaXxJ5rXaV62hrOahY+K5TVc5vycXooJJDK6k8mkuNK1rrtOkteZ6H7qHbIyNZyzVgYtSfVmOV6HktA3q7l5UDjHgH5oGNqVJmXVgu2RaThTIMdswQgtMYEdbpKJMygI8weEl05goJtcP0stqL75L X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB5837.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(366004)(39860400002)(396003)(2906002)(8676002)(66946007)(66476007)(66556008)(956004)(2616005)(5660300002)(6506007)(6512007)(4326008)(52116002)(8936002)(186003)(86362001)(478600001)(16526019)(26005)(1076003)(6666004)(1006002)(83380400001)(316002)(6486002)(55236004)(110426005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: Xr9/OcfsHY3ma6cQETsNd95oMGOHnBS9mUGJHu08zYSYSfPQcoVL2gMwYeE7cPKLN3lQqYGmaOFMq1zq//DDVQP0rwd3J1GKl8ivvdaJuJCE+KzKjgScB8prWqv34vjVQR63tbsV+juSLUhZ+jmICR51Z7YvxnnAO5tvRyPkjg6wN6aWK5cw13H9Lo2pUK4MoqrU6RS1TBFkNoinkw+FnODOAMZ1iQuZwPyw2QrhgyOT1iJPMJRkhLpiha/0hGZvWYdOEXwwoIoLQkzL6PYqRU+0PPpruvNHbYftDTbFakz0v2+Qlgr1tXXDWDCTMSL0yBd2n2OnYo+04DpnCYG132V3iSThK/aLjw97SrTU9s4cssNpZ+nqlZWgKGngQeRZS5YdILBUxAvedlbqF69aHvS++aWmqB5D7CNchN2fVpAQS50FnYhlBZzbKKn3726nBUcqpArfBBGKopL147XgswQW5+dZY3jhr6XfJPMm3RLnJaGSQYrfedRRutQMcvhYAJyEsM98iIrmjJN8g/jsXxgJHU7lQhg2HnKtVewiH/eJsBn/0WlvCX2IhFKyoXNndWjF8snm0GOwdwyUwvCz0+2jvHl9w5TVCspiuvSG0j9zhOwsnNru89Ibstrw5YlSLF5i49M11wcYU+f5zQjSnw== X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: bd976fdf-b361-4a9c-5a01-08d856289baa X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5837.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2020 07:59:28.7685 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Adv34oBlIh8lU5GdvVDSuwLRH4BLlGNMz8Zu2IaccyOWjHinUmsnw7IDby2z0PGGF7vJZCsByLdrf00P0U5fQw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4878 Subject: [dpdk-dev] [PATCH v1 2/8] bus/fslmc: run secondary debug app without blocklist devices 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" From: Rohit Raj dpaa2 hw impose limits on some HW access devices like DPMCP(Mnagement control Port) and DPIO (HW portal). This causes issue in their usages in shared uses in case of multi-process applications. It can overcome by using allowlist/blocklist in primary and secondary applications. However it imposes restrictions on standard debugging apps like dpdk-procinfo, which can be used to debug any existing application. This patch introduces reserving extra DPMCP and DPIO to be used by secondary process if devices are not blocked previously in primary application. This leaves the last DPMCP and DPIO for the secondary process usages. Signed-off-by: Rohit Raj Reviewed-by: Sachin Saxena --- drivers/bus/fslmc/fslmc_vfio.c | 66 +++++++++++++++++++++++++++++++--- 1 file changed, 61 insertions(+), 5 deletions(-) diff --git a/drivers/bus/fslmc/fslmc_vfio.c b/drivers/bus/fslmc/fslmc_vfio.c index 9134ec552..6dd797632 100644 --- a/drivers/bus/fslmc/fslmc_vfio.c +++ b/drivers/bus/fslmc/fslmc_vfio.c @@ -802,10 +802,29 @@ fslmc_vfio_process_group(void) int ret; int found_mportal = 0; struct rte_dpaa2_device *dev, *dev_temp; + bool is_dpmcp_in_blocklist = false, is_dpio_in_blocklist = false; + int dpmcp_count = 0, dpio_count = 0, current_device; + + TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next, dev_temp) { + if (dev->dev_type == DPAA2_MPORTAL) { + dpmcp_count++; + if (dev->device.devargs && + dev->device.devargs->policy == RTE_DEV_BLACKLISTED) + is_dpmcp_in_blocklist = true; + } + if (dev->dev_type == DPAA2_IO) { + dpio_count++; + if (dev->device.devargs && + dev->device.devargs->policy == RTE_DEV_BLACKLISTED) + is_dpmcp_in_blocklist = true; + } + } /* Search the MCP as that should be initialized first. */ + current_device = 0; TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next, dev_temp) { if (dev->dev_type == DPAA2_MPORTAL) { + current_device++; if (dev->device.devargs && dev->device.devargs->policy == RTE_DEV_BLACKLISTED) { DPAA2_BUS_LOG(DEBUG, "%s Blacklisted, skipping", @@ -815,13 +834,24 @@ fslmc_vfio_process_group(void) continue; } - ret = fslmc_process_mcp(dev); - if (ret) { - DPAA2_BUS_ERR("Unable to map MC Portal"); - return -1; + if (rte_eal_process_type() == RTE_PROC_SECONDARY && + !is_dpmcp_in_blocklist) { + if (dpmcp_count == 1 || + current_device != dpmcp_count) { + TAILQ_REMOVE(&rte_fslmc_bus.device_list, + dev, next); + continue; + } } - if (!found_mportal) + + if (!found_mportal) { + ret = fslmc_process_mcp(dev); + if (ret) { + DPAA2_BUS_ERR("Unable to map MC Portal"); + return -1; + } found_mportal = 1; + } TAILQ_REMOVE(&rte_fslmc_bus.device_list, dev, next); free(dev); @@ -838,7 +868,10 @@ fslmc_vfio_process_group(void) return -1; } + current_device = 0; TAILQ_FOREACH_SAFE(dev, &rte_fslmc_bus.device_list, next, dev_temp) { + if (dev->dev_type == DPAA2_IO) + current_device++; if (dev->device.devargs && dev->device.devargs->policy == RTE_DEV_BLACKLISTED) { DPAA2_BUS_LOG(DEBUG, "%s Blacklisted, skipping", @@ -846,6 +879,14 @@ fslmc_vfio_process_group(void) TAILQ_REMOVE(&rte_fslmc_bus.device_list, dev, next); continue; } + if (rte_eal_process_type() == RTE_PROC_SECONDARY && + dev->dev_type != DPAA2_ETH && + dev->dev_type != DPAA2_CRYPTO && + dev->dev_type != DPAA2_QDMA && + dev->dev_type != DPAA2_IO) { + TAILQ_REMOVE(&rte_fslmc_bus.device_list, dev, next); + continue; + } switch (dev->dev_type) { case DPAA2_ETH: case DPAA2_CRYPTO: @@ -882,6 +923,21 @@ fslmc_vfio_process_group(void) break; case DPAA2_IO: + if (!is_dpio_in_blocklist && dpio_count > 1) { + if (rte_eal_process_type() == RTE_PROC_SECONDARY + && current_device != dpio_count) { + TAILQ_REMOVE(&rte_fslmc_bus.device_list, + dev, next); + break; + } + if (rte_eal_process_type() == RTE_PROC_PRIMARY + && current_device == dpio_count) { + TAILQ_REMOVE(&rte_fslmc_bus.device_list, + dev, next); + break; + } + } + ret = fslmc_process_iodevices(dev); if (ret) { DPAA2_BUS_DEBUG("Dev (%s) init failed",