From patchwork Fri Jul 24 09:00:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Renata Saiakhova X-Patchwork-Id: 74738 X-Patchwork-Delegate: david.marchand@redhat.com 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 684D3A0518; Fri, 24 Jul 2020 11:02:08 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 487281C012; Fri, 24 Jul 2020 11:02:08 +0200 (CEST) Received: from FRA01-PR2-obe.outbound.protection.outlook.com (mail-eopbgr120117.outbound.protection.outlook.com [40.107.12.117]) by dpdk.org (Postfix) with ESMTP id 9A8F2E07 for ; Fri, 24 Jul 2020 11:02:06 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rv6x2O/N9OqxMWo29fa85hotNnnDTBOTt4OMZEmL11A+7+4jEA9wvz9b5gYcM2OEUpn5thTzIbyL1hvFuB2pphhmliU0pocPhDFfEw8geOnK/inFN1WUCK481OUaZRpx/1bcyUs5azKEqyb8Wftu99ltOOdkp9jBkvPauMeJKXnOw5sT52YnGuZlYG+T6FdxuhYxCtE+O3nrxWAtK7tK2nWi1CnQ+rQM81sDCihp6D/JLjiTOkURzxE7sojyMPVZM0sNK/O+ryrL90Q5e2iOKvtIiVR1B9Tm6llalMLRrDyM6zDhXLDT8kyIt9TMVfWQrng2VSiOipgEhA37y5IgBg== 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=0o5+1wYO3frRvCpk7nbvihFf/mZsg80ipKQNF/hWdWk=; b=LNz8oFvcZHX5y06o3oMWbgNGkfqXnu8IPJo6n+tZkZ82rAj8lVDLVx7YWrhunHtrOatGGOs+grum7GpFG/iS2O/JdHAgcv9aV0hnVvXhyKg8onNEKvQ9Y+dbH7eayS8JIRnVDPg7ABJzk9s1E3OsMwNJytjHNDkvU7bjD3tuI3X/DuSI+Mdt7tLxBS9TwLotx+Vhq2RUGXFzYxjDa+uA3qEMSVBZ5ODWNWaTWfHYdNki/8sFlo/p8UDmd43nH0YAX1+SgVqlmvz4h/YlqxLUFkNsBDR/F5n88qCoBV+NF4ZTK1PIaWLde31inUusZ82emkGWeua72YjpICG73KnaDg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ekinops.com; dmarc=pass action=none header.from=ekinops.com; dkim=pass header.d=ekinops.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ekinops.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0o5+1wYO3frRvCpk7nbvihFf/mZsg80ipKQNF/hWdWk=; b=aIkDr28WaLSmfX6NRi+BvUDcpUKr5uIYIdAOJ7F5FNirRjhT0aWdEwHFV48MD3wZXL6N+GbZIne/5GyWYP+3DYPlfNZmO6sF8VpXW1Q8uhAEBZHi0yE9kzsCnXUphFM6fcqHuOgwpdvFu5bX7Yu2UnRtXnbYsOXeFQ1fuVJ32Nk= Authentication-Results: marvell.com; dkim=none (message not signed) header.d=none;marvell.com; dmarc=none action=none header.from=ekinops.com; Received: from MRXP264MB0120.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:1b::10) by MRXP264MB0503.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:21::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.22; Fri, 24 Jul 2020 09:02:06 +0000 Received: from MRXP264MB0120.FRAP264.PROD.OUTLOOK.COM ([fe80::b9c3:a77c:6837:2548]) by MRXP264MB0120.FRAP264.PROD.OUTLOOK.COM ([fe80::b9c3:a77c:6837:2548%6]) with mapi id 15.20.3216.024; Fri, 24 Jul 2020 09:02:06 +0000 From: Renata Saiakhova To: Harman Kalra , Bruce Richardson Cc: dev@dpdk.org, Renata Saiakhova Date: Fri, 24 Jul 2020 11:00:11 +0200 Message-Id: <20200724090011.17157-2-Renata.Saiakhova@ekinops.com> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20200724090011.17157-1-Renata.Saiakhova@ekinops.com> References: <20200724090011.17157-1-Renata.Saiakhova@ekinops.com> X-ClientProxiedBy: AM3PR05CA0117.eurprd05.prod.outlook.com (2603:10a6:207:2::19) To MRXP264MB0120.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:1b::10) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from renataOAB.oneaccess.intra (91.183.184.98) by AM3PR05CA0117.eurprd05.prod.outlook.com (2603:10a6:207:2::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.22 via Frontend Transport; Fri, 24 Jul 2020 09:02:05 +0000 X-Mailer: git-send-email 2.17.2 X-Originating-IP: [91.183.184.98] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f9f86a35-b8a2-4012-379b-08d82fb03d20 X-MS-TrafficTypeDiagnostic: MRXP264MB0503: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5236; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5NanHL9J1GgradFA4Heg3uY/xV51stDQ3iv7trJGQj6O2DIABv5fnf9v41KWBNxCak4Vb5LUgS8JfhFN5Hyx2sPo7kl/0ijk02MASiJPWZk0DDqqjbia+CjcRjny+isJnOC8nbGBou1kTVqDoZF/SqxpAnhap/sUZ9hahzWio9tMz4WO7PpPL6JjQL01SP6vXJ7QTtpSHvODls2gBH+4IhzsWyKqO0Wv7e0SesdmnT5s7+opdCd70e1+pphpZ4wzeAkSEPLu7CV85K0Qtb0lSc2j4TuB5NPHJ4n4KTh+R60FjtKy/Ea82B4+9766zl57nOv8QMoZnYazXrTvdYHMOw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MRXP264MB0120.FRAP264.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFTY:; SFS:(39850400004)(396003)(346002)(376002)(136003)(366004)(2906002)(186003)(83380400001)(66946007)(16526019)(1076003)(66556008)(6666004)(36756003)(6506007)(4326008)(2616005)(956004)(107886003)(26005)(52116002)(66476007)(478600001)(8676002)(316002)(110136005)(6486002)(8936002)(86362001)(6512007)(5660300002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: Re/Co1Hl4rvmCFCkKzafBjxpr2pGIDcl5StYCm8LQc/BhvnGbDlbXBHY8TecxCT0ChOtKfBVn49yuC2EZF4QuuHiyTJ4nL9tUbTIpEcMCuGkUGqtC240TLFiHZbv7StRXD+z3W5K3xfIEr2ROoa78MziggSKqyKViJ9uSXSUMas3+DUNsSG6nfa51EhlYExomA2AvSfOvAoOBQAZKqlmCV3qZLeleLchdA21uC6P6aupTGIPR9fdRIoTrcFBBc2JH9VNjuGWXMnX7Jl8ovAvxAYoL11xf+QffxV/2/fX/iXCADaLjPA1zBs6YJeZdIltK813+SQbdulOtsSYhp9WjvjWF9ZHUV/Gzqwyf5v4XU5JAKYEc7JqlCQ7wSvE8LW2m1g5fWQXlYy/bR146Tsquy+1XTLHNmVo9XQ9ym8e4IUoTuQvbhU1r6mDKqXWtMVGxQ5eb9FMrFFeIgtBlsSOohfu005Ov10sGLbN0EkdRb0= X-OriginatorOrg: ekinops.com X-MS-Exchange-CrossTenant-Network-Message-Id: f9f86a35-b8a2-4012-379b-08d82fb03d20 X-MS-Exchange-CrossTenant-AuthSource: MRXP264MB0120.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2020 09:02:06.0315 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f57b78a6-c654-4771-a72f-837275f46179 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5m2V9tS+3VhtnGZ+2Qd6Ox7vtAO+ZueGRSCJvPLH6TckyRFr2o2W2iNZirMvvLd/FlGknVfo72BgpSgcnpPIU0bNo5SnJ+KQ4LUcsMB3CV8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRXP264MB0503 Subject: [dpdk-dev] [PATCH 1/1] librte_eal: wrapper around rte_intr_callback_unregister(). 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" Avoid race with unregister interrupt hanlder if interrupt source has some active callbacks at the moment, use wrapper around rte_intr_callback_unregister() to check for -EAGAIN return value. Signed-off-by: Renata Saiakhova --- lib/librte_eal/freebsd/eal_interrupts.c | 16 ++++++++++++++-- lib/librte_eal/linux/eal_interrupts.c | 16 ++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/lib/librte_eal/freebsd/eal_interrupts.c b/lib/librte_eal/freebsd/eal_interrupts.c index 6d53d33c8..a92a7a025 100644 --- a/lib/librte_eal/freebsd/eal_interrupts.c +++ b/lib/librte_eal/freebsd/eal_interrupts.c @@ -259,8 +259,8 @@ rte_intr_callback_unregister_pending(const struct rte_intr_handle *intr_handle, return ret; } -int -rte_intr_callback_unregister(const struct rte_intr_handle *intr_handle, +static int +__rte_intr_callback_unregister(const struct rte_intr_handle *intr_handle, rte_intr_callback_fn cb_fn, void *cb_arg) { int ret; @@ -345,6 +345,18 @@ rte_intr_callback_unregister(const struct rte_intr_handle *intr_handle, return ret; } +int +rte_intr_callback_unregister(const struct rte_intr_handle *intr_handle, + rte_intr_callback_fn cb_fn, void *cb_arg) +{ + int ret = 0; + + while ((ret = __rte_intr_callback_unregister(intr_handle, cb_fn, cb_arg)) == -EAGAIN) + rte_pause(); + + return ret; +} + int rte_intr_enable(const struct rte_intr_handle *intr_handle) { diff --git a/lib/librte_eal/linux/eal_interrupts.c b/lib/librte_eal/linux/eal_interrupts.c index 13db5c4e8..d5dcfc36b 100644 --- a/lib/librte_eal/linux/eal_interrupts.c +++ b/lib/librte_eal/linux/eal_interrupts.c @@ -596,8 +596,8 @@ rte_intr_callback_unregister_pending(const struct rte_intr_handle *intr_handle, return ret; } -int -rte_intr_callback_unregister(const struct rte_intr_handle *intr_handle, +static int +__rte_intr_callback_unregister(const struct rte_intr_handle *intr_handle, rte_intr_callback_fn cb_fn, void *cb_arg) { int ret; @@ -662,6 +662,18 @@ rte_intr_callback_unregister(const struct rte_intr_handle *intr_handle, return ret; } +int +rte_intr_callback_unregister(const struct rte_intr_handle *intr_handle, + rte_intr_callback_fn cb_fn, void *cb_arg) +{ + int ret = 0; + + while ((ret = __rte_intr_callback_unregister(intr_handle, cb_fn, cb_arg)) == -EAGAIN) + rte_pause(); + + return ret; +} + int rte_intr_enable(const struct rte_intr_handle *intr_handle) {