From patchwork Wed Nov 1 14:49:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: William Tu X-Patchwork-Id: 1857982 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4SL90X5164z1yQ6 for ; Thu, 2 Nov 2023 01:50:19 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qyCXp-0001p9-Hx; Wed, 01 Nov 2023 14:50:09 +0000 Received: from mail-dm6nam04on2086.outbound.protection.outlook.com ([40.107.102.86] helo=NAM04-DM6-obe.outbound.protection.outlook.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qyCXf-0001mt-Vc for kernel-team@lists.ubuntu.com; Wed, 01 Nov 2023 14:50:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IgWzn/ubajo0nqfGSWYk1Ikxim5eMRbHM0gjyLe8eDJ8nekcprW6VuX1Bol81AkgPc2inZIBTbvlWTWMVqew6B4Ufl+W8k7jmDNZ31pjpwzh3z0msO8Q+HrT0M/1u3ImHcKq0Z1NNHloe3Dkb0EgqIK6igyQsENpzopVcAapZLA9c+lRzN9mbRdTaVlthAw9Uo6Lp+wVQPMPBBTIjGxFOn59uh7qUw3suqoVkYprVFfWjOiBoRbEAR/Wnvlit8qPUDd0wnnbEYwqSSjK2ycw0BENUo8iR/ouXkWmZtlD+UXHqa+HyGVcRbRe3hXhY31NiU0pquc5kYkekPOk7O/NNA== 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=t0x+VXKqhOiapLZ50rymPWDQxmHKLYr6N97NQVIqsFk=; b=KEeiQToG1gagtNII1RLekNvwyeejA43lT++UiuM/sfO2eXynpMi2yQ8RU8LcvDTQNWimZTgXajUSTm83hro+rICqWT2ijPW2hBLEj923PaFygHHGgHf3lt1H+lect62f7V9+XUUnr3A7u8DsgPVUGH8ezxQJW54BombFeR9zoPT7QBFei/zWdOIDaBGowQVKsGK8sQ0xgScJ5Yy4REme8Vx+UTTuP3uKcVw0LqCR08UKW86E8a7r3YuEXpYWPx0+cRMW0FptR+nvugPilzUCwUCmbV6vSwNqrq8Ygfnuo0OiB2z4PKgXGDl+Q0joTGEfcVJUbTLmyrLEhaG23YJFFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=lists.ubuntu.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) Received: from CY8PR19CA0032.namprd19.prod.outlook.com (2603:10b6:930:6::23) by BY5PR12MB4307.namprd12.prod.outlook.com (2603:10b6:a03:20c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.28; Wed, 1 Nov 2023 14:49:56 +0000 Received: from CY4PEPF0000EE3D.namprd03.prod.outlook.com (2603:10b6:930:6:cafe::2e) by CY8PR19CA0032.outlook.office365.com (2603:10b6:930:6::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.19 via Frontend Transport; Wed, 1 Nov 2023 14:49:56 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by CY4PEPF0000EE3D.mail.protection.outlook.com (10.167.242.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.19 via Frontend Transport; Wed, 1 Nov 2023 14:49:56 +0000 Received: from drhqmail203.nvidia.com (10.126.190.182) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Wed, 1 Nov 2023 07:49:54 -0700 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail203.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Wed, 1 Nov 2023 07:49:54 -0700 Received: from witu-mlt.nvidia.com (10.127.8.13) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.986.41 via Frontend Transport; Wed, 1 Nov 2023 07:49:53 -0700 From: William Tu To: Subject: [SRU][J:linux-bluefield][PATCH 3/7] net: devlink: add unlocked variants of devlink_sb*() functions Date: Wed, 1 Nov 2023 07:49:47 -0700 Message-ID: <20231101144951.26198-4-witu@nvidia.com> X-Mailer: git-send-email 2.37.1 (Apple Git-137.1) In-Reply-To: <20231101144951.26198-1-witu@nvidia.com> References: <20231101144951.26198-1-witu@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE3D:EE_|BY5PR12MB4307:EE_ X-MS-Office365-Filtering-Correlation-Id: 9919a834-4890-4496-ecdb-08dbdae9d073 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cUP54hzxH5nj0EwcxvyZmJspFFhrank+jMokWBxjWBTErULpqq2hXeWAUOoegEGv7Pbq6QLG2BnaUOEWVtrpAKuXUdBTaV3aEpIaiNfxdt9k32HuVT7ShiJdcUJKcbL+DxJ4qjya9zOSS8/F/voSO51Oh06SYqzRnIWzWMAvFHXT00t7VuMKLL4jFSv9q1EsHNIVRwb2KHCYBthaxY1yr4b9SBdT5WJ2wd5vk9aVV9uIAC3Foa4aVH/8ptWlRGrKTuzOvHkvzETFwBcBYeOLs/nYlo5WZWFUXDsv85gOU03sRih8gh3qL1OQyfkzxDlg6LfOsLV3FMp10R0ZLPRwe3f2NZ6TY8AHRovW14HKQslo4wq8hrjpO3G3+byXRp3/ZWlNJQeZnZpsOtd1Rek6aKinpVbYefvKLz4lEBxU768OQzQ87J6iYKbwTf2l3ohaFFB667vTsrNkAK2zgjLc98N8JhLwcqK9pnSFm70ZrZJehNhtPm0lKQLcKyQ570AeZFAgQavDUXEfI06nRqcvrCW10GoNripY/mt+iKw1NKl+1ADslKytYf8l0yAjMWxgb8lpBWxvUAc28pLadcx0HxVRzMs9d2XXHPpphYBQQLqst/EPcyouQbIUuvrT32yNFsHu32Bii4rrg6qJjuTVH8HTD/UqLDBnJ6X0lpKtyLVrqvc7t6P1i8ipgreOgUGSBiLWWvTblvpY3dLvUz6Ej6bbdYFWtmPsb+qrrZ+jR9XNtkZ5GsDrOjuG0AHNfeBFUuHK/yhZsWM+hzNeaD+T+zzt2yp+IVlzysK4HZvznpw= X-Forefront-Antispam-Report: CIP:216.228.118.233; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc7edge2.nvidia.com; CAT:NONE; SFS:(13230031)(4636009)(136003)(39860400002)(396003)(376002)(346002)(230922051799003)(64100799003)(82310400011)(186009)(1800799009)(451199024)(40470700004)(46966006)(36840700001)(4326008)(8936002)(8676002)(83380400001)(5660300002)(6916009)(70206006)(70586007)(54906003)(41300700001)(316002)(966005)(2906002)(6666004)(478600001)(7696005)(40460700003)(2616005)(47076005)(107886003)(1076003)(26005)(40480700001)(336012)(426003)(36860700001)(36756003)(356005)(82740400003)(86362001)(7636003); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Nov 2023 14:49:56.1456 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9919a834-4890-4496-ecdb-08dbdae9d073 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.118.233]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000EE3D.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4307 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: vlad@nvidia.com, bodong@nvidia.com, majd@nvidia.com Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Jiri Pirko BugLink: https://bugs.launchpad.net/bugs/2042455 Add unlocked variants of devlink_sb*() functions to be used in drivers called-in with devlink->lock held. Signed-off-by: Jiri Pirko Signed-off-by: Jakub Kicinski (cherry picked from commit 755cfa69c4ece770c5a15dd51a9da2a7aafafa7c) Signed-off-by: William Tu --- include/net/devlink.h | 5 ++++ net/core/devlink.c | 54 ++++++++++++++++++++++++++++--------------- 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/include/net/devlink.h b/include/net/devlink.h index 3af76b044df6..5aba4fcd3c1a 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -1593,10 +1593,15 @@ void devlink_linecard_provision_clear(struct devlink_linecard *linecard); void devlink_linecard_provision_fail(struct devlink_linecard *linecard); void devlink_linecard_activate(struct devlink_linecard *linecard); void devlink_linecard_deactivate(struct devlink_linecard *linecard); +int devl_sb_register(struct devlink *devlink, unsigned int sb_index, + u32 size, u16 ingress_pools_count, + u16 egress_pools_count, u16 ingress_tc_count, + u16 egress_tc_count); int devlink_sb_register(struct devlink *devlink, unsigned int sb_index, u32 size, u16 ingress_pools_count, u16 egress_pools_count, u16 ingress_tc_count, u16 egress_tc_count); +void devl_sb_unregister(struct devlink *devlink, unsigned int sb_index); void devlink_sb_unregister(struct devlink *devlink, unsigned int sb_index); int devlink_dpipe_table_register(struct devlink *devlink, const char *table_name, diff --git a/net/core/devlink.c b/net/core/devlink.c index 688a1b774822..86cc18ce0f46 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -10685,25 +10685,21 @@ void devlink_linecard_deactivate(struct devlink_linecard *linecard) } EXPORT_SYMBOL_GPL(devlink_linecard_deactivate); -int devlink_sb_register(struct devlink *devlink, unsigned int sb_index, - u32 size, u16 ingress_pools_count, - u16 egress_pools_count, u16 ingress_tc_count, - u16 egress_tc_count) +int devl_sb_register(struct devlink *devlink, unsigned int sb_index, + u32 size, u16 ingress_pools_count, + u16 egress_pools_count, u16 ingress_tc_count, + u16 egress_tc_count) { struct devlink_sb *devlink_sb; - int err = 0; - devl_lock(devlink); - if (devlink_sb_index_exists(devlink, sb_index)) { - err = -EEXIST; - goto unlock; - } + lockdep_assert_held(&devlink->lock); + + if (devlink_sb_index_exists(devlink, sb_index)) + return -EEXIST; devlink_sb = kzalloc(sizeof(*devlink_sb), GFP_KERNEL); - if (!devlink_sb) { - err = -ENOMEM; - goto unlock; - } + if (!devlink_sb) + return -ENOMEM; devlink_sb->index = sb_index; devlink_sb->size = size; devlink_sb->ingress_pools_count = ingress_pools_count; @@ -10711,23 +10707,45 @@ int devlink_sb_register(struct devlink *devlink, unsigned int sb_index, devlink_sb->ingress_tc_count = ingress_tc_count; devlink_sb->egress_tc_count = egress_tc_count; list_add_tail(&devlink_sb->list, &devlink->sb_list); -unlock: + return 0; +} +EXPORT_SYMBOL_GPL(devl_sb_register); + +int devlink_sb_register(struct devlink *devlink, unsigned int sb_index, + u32 size, u16 ingress_pools_count, + u16 egress_pools_count, u16 ingress_tc_count, + u16 egress_tc_count) +{ + int err; + + devl_lock(devlink); + err = devl_sb_register(devlink, sb_index, size, ingress_pools_count, + egress_pools_count, ingress_tc_count, + egress_tc_count); devl_unlock(devlink); return err; } EXPORT_SYMBOL_GPL(devlink_sb_register); -void devlink_sb_unregister(struct devlink *devlink, unsigned int sb_index) +void devl_sb_unregister(struct devlink *devlink, unsigned int sb_index) { struct devlink_sb *devlink_sb; - devl_lock(devlink); + lockdep_assert_held(&devlink->lock); + devlink_sb = devlink_sb_get_by_index(devlink, sb_index); WARN_ON(!devlink_sb); list_del(&devlink_sb->list); - devl_unlock(devlink); kfree(devlink_sb); } +EXPORT_SYMBOL_GPL(devl_sb_unregister); + +void devlink_sb_unregister(struct devlink *devlink, unsigned int sb_index) +{ + devl_lock(devlink); + devl_sb_unregister(devlink, sb_index); + devl_unlock(devlink); +} EXPORT_SYMBOL_GPL(devlink_sb_unregister); /**