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 BDA7A45804 for ; Fri, 23 Aug 2024 18:24:07 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B87C84336D; Fri, 23 Aug 2024 18:24:07 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mails.dpdk.org (Postfix) with ESMTP id 1964D402BE for ; Fri, 23 Aug 2024 18:24:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1724430245; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6GZ/kzT/Jp1iNSR39E5Rb88SUeFJOD3nyxvWpcBUXXQ=; b=WmBpQ+Zuql53a3BHBRh+eLNga+aojlW0FgPzufpx9qQEFGvM4O6TGj0q9HaBUwQFjN9BEb f5AAOgSkadSvGcoWDuDPe1xl4O8PjkMyxFIJftHRcQ5Az5G2Zmt8KWD4Y4E/NAy9iQ/suR sCrGNsi2LU1EA9l9mmvgj9XUNj3spBY= Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-523-y_poPUspPdeb-nB-9siIeg-1; Fri, 23 Aug 2024 12:24:04 -0400 X-MC-Unique: y_poPUspPdeb-nB-9siIeg-1 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id BC4DF1955D4A; Fri, 23 Aug 2024 16:24:02 +0000 (UTC) Received: from rh.redhat.com (unknown [10.39.193.224]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 01FE51956053; Fri, 23 Aug 2024 16:23:59 +0000 (UTC) From: Kevin Traynor To: Zerun Fu Cc: Chaoyong He , Long Wu , Peng Zhang , Anatoly Burakov , Chenbo Xia , dpdk stable Subject: patch 'bus/pci: fix FD in secondary process' has been queued to stable release 21.11.8 Date: Fri, 23 Aug 2024 17:19:15 +0100 Message-ID: <20240823161929.1004778-127-ktraynor@redhat.com> In-Reply-To: <20240823161929.1004778-1-ktraynor@redhat.com> References: <20240823161929.1004778-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 21.11.8 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 08/28/24. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/79e957cc34ae379d33847bb0e5e652b9ddbde823 Thanks. Kevin --- >From 79e957cc34ae379d33847bb0e5e652b9ddbde823 Mon Sep 17 00:00:00 2001 From: Zerun Fu Date: Tue, 2 Jul 2024 15:40:07 +0800 Subject: [PATCH] bus/pci: fix FD in secondary process [ upstream commit 847d78fb9530fff401bf167298aad22766a1f04a ] In the previous logic the 'fd' was only saved in the primary process, but for some devices this value is also used in the secondary logic. For example, the call of 'rte_pci_find_ext_capability()' will fail in the secondary process. Fix this problem by getting and saving the value of 'fd' also in the secondary process logic. Fixes: 9b957f378abf ("pci: merge uio functions for linux and bsd") Signed-off-by: Zerun Fu Reviewed-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang Acked-by: Anatoly Burakov Reviewed-by: Chenbo Xia --- drivers/bus/pci/linux/pci_uio.c | 5 ++++- drivers/bus/pci/pci_common_uio.c | 34 ++++++++++++++++---------------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/drivers/bus/pci/linux/pci_uio.c b/drivers/bus/pci/linux/pci_uio.c index d52125e49b..81a1ed6fa0 100644 --- a/drivers/bus/pci/linux/pci_uio.c +++ b/drivers/bus/pci/linux/pci_uio.c @@ -246,5 +246,5 @@ pci_uio_alloc_resource(struct rte_pci_device *dev, snprintf(devname, sizeof(devname), "/dev/uio%u", uio_num); - /* save fd if in primary process */ + /* save fd */ fd = open(devname, O_RDWR); if (fd < 0) { @@ -284,4 +284,7 @@ pci_uio_alloc_resource(struct rte_pci_device *dev, } + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; + /* allocate the mapping details for secondary processes*/ *uio_res = rte_zmalloc("UIO_RES", sizeof(**uio_res), 0); diff --git a/drivers/bus/pci/pci_common_uio.c b/drivers/bus/pci/pci_common_uio.c index f44ccdf27c..a06378b239 100644 --- a/drivers/bus/pci/pci_common_uio.c +++ b/drivers/bus/pci/pci_common_uio.c @@ -107,8 +107,4 @@ pci_uio_map_resource(struct rte_pci_device *dev) return -1; - /* secondary processes - use already recorded details */ - if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return pci_uio_map_secondary(dev); - /* allocate uio resource */ ret = pci_uio_alloc_resource(dev, &uio_res); @@ -116,4 +112,8 @@ pci_uio_map_resource(struct rte_pci_device *dev) return ret; + /* secondary processes - use already recorded details */ + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return pci_uio_map_secondary(dev); + /* Map all BARs */ for (i = 0; i != PCI_MAX_RESOURCE; i++) { @@ -231,17 +231,5 @@ pci_uio_unmap_resource(struct rte_pci_device *dev) return; - /* secondary processes - just free maps */ - if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return pci_uio_unmap(uio_res); - - TAILQ_REMOVE(uio_res_list, uio_res, next); - - /* unmap all resources */ - pci_uio_unmap(uio_res); - - /* free uio resource */ - rte_free(uio_res); - - /* close fd if in primary process */ + /* close fd */ if (rte_intr_fd_get(dev->intr_handle) >= 0) close(rte_intr_fd_get(dev->intr_handle)); @@ -254,3 +242,15 @@ pci_uio_unmap_resource(struct rte_pci_device *dev) rte_intr_fd_set(dev->intr_handle, -1); rte_intr_type_set(dev->intr_handle, RTE_INTR_HANDLE_UNKNOWN); + + /* secondary processes - just free maps */ + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return pci_uio_unmap(uio_res); + + TAILQ_REMOVE(uio_res_list, uio_res, next); + + /* unmap all resources */ + pci_uio_unmap(uio_res); + + /* free uio resource */ + rte_free(uio_res); } -- 2.46.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2024-08-23 17:18:13.518594406 +0100 +++ 0127-bus-pci-fix-FD-in-secondary-process.patch 2024-08-23 17:18:09.891430703 +0100 @@ -1 +1 @@ -From 847d78fb9530fff401bf167298aad22766a1f04a Mon Sep 17 00:00:00 2001 +From 79e957cc34ae379d33847bb0e5e652b9ddbde823 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 847d78fb9530fff401bf167298aad22766a1f04a ] + @@ -16 +17,0 @@ -Cc: stable@dpdk.org @@ -30 +31 @@ -index f7d990d33f..4c1d3327a9 100644 +index d52125e49b..81a1ed6fa0 100644 @@ -33 +34 @@ -@@ -235,5 +235,5 @@ pci_uio_alloc_resource(struct rte_pci_device *dev, +@@ -246,5 +246,5 @@ pci_uio_alloc_resource(struct rte_pci_device *dev, @@ -40 +41 @@ -@@ -271,4 +271,7 @@ pci_uio_alloc_resource(struct rte_pci_device *dev, +@@ -284,4 +284,7 @@ pci_uio_alloc_resource(struct rte_pci_device *dev, @@ -49 +50 @@ -index 65f72b7cc6..30503bd23a 100644 +index f44ccdf27c..a06378b239 100644 @@ -52 +53 @@ -@@ -106,8 +106,4 @@ pci_uio_map_resource(struct rte_pci_device *dev) +@@ -107,8 +107,4 @@ pci_uio_map_resource(struct rte_pci_device *dev) @@ -61 +62 @@ -@@ -115,4 +111,8 @@ pci_uio_map_resource(struct rte_pci_device *dev) +@@ -116,4 +112,8 @@ pci_uio_map_resource(struct rte_pci_device *dev) @@ -70 +71 @@ -@@ -226,17 +226,5 @@ pci_uio_unmap_resource(struct rte_pci_device *dev) +@@ -231,17 +231,5 @@ pci_uio_unmap_resource(struct rte_pci_device *dev) @@ -89 +90 @@ -@@ -249,3 +237,15 @@ pci_uio_unmap_resource(struct rte_pci_device *dev) +@@ -254,3 +242,15 @@ pci_uio_unmap_resource(struct rte_pci_device *dev)