From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id EB48742CBC; Thu, 15 Jun 2023 03:55:03 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7CF0042D75; Thu, 15 Jun 2023 03:55:03 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2100.outbound.protection.outlook.com [40.107.220.100]) by mails.dpdk.org (Postfix) with ESMTP id EBD5340DDA for ; Thu, 15 Jun 2023 03:55:01 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HJh3XOzquzFidgsqtF/9hEoBWvyLZCdVnW2Yyeh5QaVUjSWDowHJsQCbf23QgMCqp+vFjpNXsKjFAScsixyf/yNpq/RxvHJpGn4ySGvXGK61Urx+D/4s4WkpsVQllPoP4Q41FEvPNdvbG9c4N8XXQ/2jeIRq/llxT/myZITKJEU1LuaHnKLq99FLQlhWFkUy8tbMGm17QH4TxtVuKT9bNCMtAqKeSloE+/wS7PYonZGONfxYWo0l4AJgM/Y9fvrDnsu+bn8MZ5T+fXd87pRUOV++E4Y4Mo82Nkd5Yk1F0CBOXW4RoLjW00fYY0FUEU/3CL9PwC69iNWt42nP+XefYQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=iyUuSb3UOtkrgYLQZtppnhKEFMSkiQNflG4eJdRRiy0=; b=li2OfV8onFyhJV+CAS8BmgQCIz4VAPYr1bXjiWv2gYEyW15JMVCklxc7Uaa1LsU/pzDYD9cx3sjw95p7UuXzj0M2R8n3Wt/kM/sY/1gmhP//TP1HGkShzX1weMQNq840NFlEGQoeReRlBtRBY2MUQIRFUtXolfX++XxbVSi/WzJKgo84gqgaqq4O79O6DpsMPRaoE2/Ia5N7m+53XQ3Otp0kn79kclsmJAXH5Zc3KQDC6p/UvlwqA8tmM56VH/LBa/zpl13V3lLZi2vvOtLTeeL3/LqFZET6L4Nqf0fZhduj03iMSu5qEyxugCqVI7SlUmQLFCAI5IeDOr2YYIVLJw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iyUuSb3UOtkrgYLQZtppnhKEFMSkiQNflG4eJdRRiy0=; b=cMogprHaqHMTaiv6LI/wgwKflRBUZAPVq0iWBFzYeCr1EzKFUzBeRzajwQOIzcuCcp4LJ8J2dvTEVCspUR9nvMf5iFhR6UKQt1+dv4lJabQqBNZio2FDenU+ofv8coNoguXckb6UcboaLqhr7G4Uujg04fBBgJPKTDRBOuM7X70= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by PH0PR13MB5613.namprd13.prod.outlook.com (2603:10b6:510:142::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.29; Thu, 15 Jun 2023 01:54:58 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::d2cb:a650:e1ce:2174]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::d2cb:a650:e1ce:2174%3]) with mapi id 15.20.6455.045; Thu, 15 Jun 2023 01:54:57 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Peng Zhang , Chaoyong He Subject: [PATCH] net/nfp: allow more then one secondary process on the PF Date: Thu, 15 Jun 2023 09:54:36 +0800 Message-Id: <20230615015436.1243643-1-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SG2PR02CA0110.apcprd02.prod.outlook.com (2603:1096:4:92::26) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH0PR13MB5613:EE_ X-MS-Office365-Filtering-Correlation-Id: aaaf67cf-af34-4feb-6ca4-08db6d4385b8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GHpJyQkjPUGKiWF9ktU4tBGpLH8fEIH9ZO5CMTDAdPUX5HOhvlmKh5V4XMvxUsueuKTzNxstlwQb89KWk0WDTWHdE2ZdLbzQ4jCDJNOsNr/JKjNtpyQfiircxcHcmkABZVg3Fc8IB09Mg2JUZIJ2zhiosCSbF60fuLEKmiSxrpjJIdQNj61iBNi2hyXZAVVkVCRqZM7p1MRE5WY+m1d4herEYFug/WlM+1Px11LD8HApg+ZaAQOexjqdQQCW6lZhPfvBiFPQPTsTCYP+5NApstY2OVuo4rZw88j7mjiqq2a0B2w1xnQ5LiS04AWQXo5Q38EJdmmGdDU6rfOde0sZ3QF//b6/PnUdBWTuolmkh+XCamkLx0KShuvZc3bJvMpGf6Fv9rWWLZB59Uc1YgsPbdkNwcMFUXJ0jE0tzD9wvZZXrg3B/WmjLpaBgFTscDXmpDmemiks45zKhQEod3M5dnZOpxJsqjr1GD4vV7gYTsD+A1tvytqkvh5D+Elq/RBWMsYo4v/iQyePZDVttKwaJRqSPZmyoUG3Nr0bGILUCIWXJ60z7wOwC5Utg8/ub5WBlrI2BYT/guK/Eu+oS1uDCw/Sjd+Jm30mHCch+vtdIf2byw+lJH17wORY54m1a5qu X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(366004)(136003)(376002)(346002)(396003)(39840400004)(451199021)(66946007)(66556008)(66476007)(54906003)(478600001)(8936002)(6916009)(6666004)(8676002)(36756003)(5660300002)(4326008)(52116002)(41300700001)(6486002)(316002)(38350700002)(38100700002)(26005)(6506007)(186003)(1076003)(2906002)(6512007)(44832011)(2616005)(107886003)(86362001)(83380400001)(66574015); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bnVxV1U5WEttckVUb2lCeE93dlN3Nyt5b0pIUHREL04rcnRnSG93SUNFOXB3?= =?utf-8?B?Z2ovQUZid3d4UGhsSVlCaEhhYUtqc094ZnVSS2pNQnp5Q3ZMT25pMytvc3Fz?= =?utf-8?B?NHpVMjBOelFBbkV6VzBRQVMweHR2UEoyNVhuMWJFWCtlYWM4K1BPbVp0QUNW?= =?utf-8?B?MnJGNUtjSjhiVHJpYjFZSVpXb3FiRkVaMlZva3g1QVBQeWluN3Y3V3dzVkM4?= =?utf-8?B?eG02UjJJam1vQU5ZcU5lSkxCZ05EUU40WFBLSTVYZWxuWHhhcG91NkhrRXJW?= =?utf-8?B?Nmt3TFg1S2w1S01XSkNvb2pmYmZGR3JkTEVWRDFGSk5jTEJqVFQ3M0dOTmRY?= =?utf-8?B?MlZyNWxZNEZHNXk4Z2pKZWpZVmNPQk04Z2NIelBPaFpNVkg5NmdLaFI4cGZS?= =?utf-8?B?MFF1dlY2RktUKzk2aThId05xM3hDOVRJSTc0bTRQTWRaNjJRQTV4UmNFeFhK?= =?utf-8?B?OGpTSm96YWRjQ21La2hXN01RSjE0czdrTUpsY1h6eHBSVWVFQXhjT28rWUhM?= =?utf-8?B?ZWw2SS82SFJsRXlMbmV1Y1E5SHZQd2ZLcEE1WXJqVTFRVk1BY1FGWGZveVps?= =?utf-8?B?K1F6QlU3OHU1VXNnaUxDUE9MSTVHRzlsdG1TT0pWRXN6RUk0emRlNUNTYzFr?= =?utf-8?B?ejIyelR2dXlmbllFRDVuNm11Zk5BYTlnQXBZZXo4YkJjaUhXK1ZKbXdsTEJh?= =?utf-8?B?ejRYUjFja3d2RCtpV0FuR0NoTDFFZVBNa1hQNVhCRURTNXR0ZVV0alFjNU9R?= =?utf-8?B?MXUyZ01ETUgzNFdlVGV0WEVCcWdxTWFPRWpkd2ltMjA1RjlkUHBMa282NUxR?= =?utf-8?B?anJXZ2xWemtqbEd0QVB6MDBOWVpPOElLQks4OHl2cmxRSDcyM1V6d0pvSXZ3?= =?utf-8?B?ZWdXOVp6RXFpbG56NTN4ck9zeTlPeWE3WTAzeU9wOVhUckc1b3pNNXh3RmxH?= =?utf-8?B?SVFUa01zWE5FYUpHNkhNOXk5eWl2bUhUdmdrOFJOM2NjZzRFTnNSSDVtK2xN?= =?utf-8?B?M2JjbE04bC9GODVlaVY0VVJDVzNOa1JPNnRtTHJVR3JpM0NJT1dJQUxpYm53?= =?utf-8?B?ejMydndGTlUwMUFkZnFESEE1alZiT09XTmowT3RIUE5ZTm5PaHJNOUNGL1pp?= =?utf-8?B?UFQwb0dsUjlnNUdDK05SN3FRc2dZOHA4V2hucGljZjBxVWlsUS81RFFRRm5v?= =?utf-8?B?WmtGR1hnaEJkN2I2dTJNLzNQWlFrMnYva29PN1l6ekRCdlJ0dVltbUozQitD?= =?utf-8?B?VVBjMEJYRmNaeU9Uc1Rqbk1iWVBVVld0RHRlNVI4emFCcTdQWStKK2JObThh?= =?utf-8?B?QjNqMjA3YVB4WTZMbTdWRU5TU3ZHdGtqOVo5ZG1welArcmNuOFhzTmwyaTRW?= =?utf-8?B?RmVuUVhQNFk2NG55RkI4MnZkWVU1aTF6UG1XR3JNa1BSSHNoSVpuUURFdGJi?= =?utf-8?B?QkwyMVlibVRHNDBVR1NCY3ZUMmdaaDJTVHFxdFR2VzV0eU1hTUFmZDZVdnZr?= =?utf-8?B?VHNPZGtFUzVtZktlbjJuUnB0ZktxOHdwYjFwdWRueHRhWnNiQzNMZW9KcjQ0?= =?utf-8?B?NC9jOVJIalErbkhWTXJ3emRiOVlmWVdmbWpWTEl0SjgycTBPYlQ2TnhxRDdT?= =?utf-8?B?RXMxL1VhU1hvWkpIcWhSLy95N1JYRk5RZTJOdjI1MW5xNVV5REprbElqYW1T?= =?utf-8?B?YWpPU1FxZVdkYUZWb1dvZ3RqYUNhMlVQeGlhSmNGbVFOZlZPN1NHRjNRa3d1?= =?utf-8?B?cnQrd0RsZ1lOZTFDeFpXN0kyK01RYUpST29aK3BQeDBhWHAwK0RNUUFiaWkr?= =?utf-8?B?VjhmYmx1bjZQWXM3VkdGWXlqcUp3aktvbXhQYXJTRkpCZzNOZ0w0Yy9lNGEw?= =?utf-8?B?dEhLMUFUSTFCQUUwZlhKamtXVnB5RW9ac0dNSmkxdlZxM1JwQ3BtOGpTYjUv?= =?utf-8?B?aDhPSTVmUk82Z2t5VC84NUtPNjcybDN3aHczOE9jZW1pRWpGRUlIMllKTXFp?= =?utf-8?B?bmZEUXc5VW1CRDVaczBKbG1GS1BZZ3Q0a0U4ZWxWeUxRNW1PUmNFUzJDVDBI?= =?utf-8?B?NTZvWXliRVZqVXJndmdleVY0OEdGVzRHdzlTUmFsQ1lkZFhSeitLdzNUenVk?= =?utf-8?B?S2pqSnFKcWJXaXVPMzhPTjFHT2c0a1M0bWRidWV0RVZubk95YjVLdk9yaXps?= =?utf-8?B?NkE9PQ==?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: aaaf67cf-af34-4feb-6ca4-08db6d4385b8 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2023 01:54:57.9256 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6lS/TSuqYxQRQ7ZHQu7NxUohop/BafS6e2n4fLbMSoe0uUDjA4HpN3vklHSkM3vQn59eelzEFIhc7TZYDT0X71uDA1Qx+r/Ly0o/Vzk/fC8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR13MB5613 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Peng Zhang When adding support for multiple processes the number of secondary process on the PF was limited by the way NFP access registers on the device over the CPP interface. The limitation on the CPP interface appears to have been addressed since the initial multi processes work was merged in 2018. No particular change have been identified that in itself solved the issue, but after extensive testing without any issues, multiple secondary process on the PF works without issues. Remove the limitation allowing only one single secondary process on PF. Signed-off-by: Peng Zhang Reviewed-by: Chaoyong He Reviewed-by: Niklas Söderlund --- doc/guides/nics/nfp.rst | 13 ++--- drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c | 61 +--------------------- 2 files changed, 5 insertions(+), 69 deletions(-) diff --git a/doc/guides/nics/nfp.rst b/doc/guides/nics/nfp.rst index f102238a28..16e0b862e1 100644 --- a/doc/guides/nics/nfp.rst +++ b/doc/guides/nics/nfp.rst @@ -134,15 +134,10 @@ suffix added to the PCI ID: wwww:xx:yy.z_portn. For example, a PF with PCI ID PF multiprocess support ----------------------- -Due to how the driver needs to access the NFP through a CPP interface, which -implies to use specific registers inside the chip, the number of secondary -processes with PF ports is limited to only one. - -This limitation will be solved in future versions, but having basic -multiprocess support is important for allowing development and debugging -through the PF using a secondary process, which will create a CPP bridge -for user space tools accessing the NFP. - +The current NFP PMD supports the PF multiprocess. Having basic multiprocess +support is important for allowing development and debugging through the PF +using a secondary process, which will create a CPP bridge for user space tools +accessing the NFP. System configuration -------------------- diff --git a/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c b/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c index 9d63e0ee73..e230c40051 100644 --- a/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c +++ b/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c @@ -114,7 +114,6 @@ struct nfp_pcie_user { int device; int lock; - int secondary_lock; char busdev[BUSDEV_SZ]; int barsz; char *cfg; @@ -287,10 +286,7 @@ nfp_reconfigure_bar(struct nfp_pcie_user *nfp, struct nfp_bar *bar, int tgt, * for setting the link up or down. Secondary processes do not need * to map the first two slots again, but it requires one slot for * accessing the link, even if it is not likely the secondary process - * starting the port. This implies a limit of secondary processes - * supported. Due to this requirement and future extensions requiring - * new slots per process, only one secondary process is supported by - * now. + * starting the port. * For Flower firmware: * NFP PMD need another fixed slots, used as the configureation BAR * for ctrl vNIC. @@ -659,52 +655,6 @@ nfp_acquire_process_lock(struct nfp_pcie_user *desc) return 0; } -static int -nfp_acquire_secondary_process_lock(struct nfp_pcie_user *desc) -{ - int rc; - struct flock lock; - const char *lockname = "/.lock_nfp_secondary"; - char *home_path; - char *lockfile; - - memset(&lock, 0, sizeof(lock)); - - /* - * Using user's home directory. Note this can be called in a DPDK app - * being executed as non-root. This is not the case for the previous - * function nfp_acquire_process_lock which is invoked only when UIO - * driver is used because that implies root user. - */ - home_path = getenv("HOME"); - lockfile = calloc(strlen(home_path) + strlen(lockname) + 1, - sizeof(char)); - - if (lockfile == NULL) - return -ENOMEM; - - strcat(lockfile, home_path); - strcat(lockfile, "/.lock_nfp_secondary"); - desc->secondary_lock = open(lockfile, O_RDWR | O_CREAT | O_NONBLOCK, - 0666); - if (desc->secondary_lock < 0) { - PMD_DRV_LOG(ERR, "NFP lock for secondary process failed"); - free(lockfile); - return desc->secondary_lock; - } - - lock.l_type = F_WRLCK; - lock.l_whence = SEEK_SET; - rc = fcntl(desc->secondary_lock, F_SETLK, &lock); - if (rc < 0) { - PMD_DRV_LOG(ERR, "NFP lock for secondary process failed"); - close(desc->secondary_lock); - } - - free(lockfile); - return rc; -} - static int nfp6000_set_model(struct rte_pci_device *dev, struct nfp_cpp *cpp) { @@ -819,13 +769,6 @@ nfp6000_init(struct nfp_cpp *cpp, struct rte_pci_device *dev) goto error; } - /* Just support for one secondary process */ - if (rte_eal_process_type() != RTE_PROC_PRIMARY) { - ret = nfp_acquire_secondary_process_lock(desc); - if (ret) - goto error; - } - if (nfp6000_set_model(dev, cpp) < 0) goto error; if (nfp6000_set_interface(dev, cpp) < 0) @@ -856,8 +799,6 @@ nfp6000_free(struct nfp_cpp *cpp) nfp_disable_bars(desc); if (cpp->driver_lock_needed) close(desc->lock); - if (rte_eal_process_type() != RTE_PROC_PRIMARY) - close(desc->secondary_lock); close(desc->device); free(desc); } -- 2.39.1