[dpdk-stable] patch 'vfio: do not needlessly setup device in secondary process' has been queued to LTS release 17.11.5
Yongseok Koh
yskoh at mellanox.com
Thu Dec 20 01:22:03 CET 2018
Hi,
This patch is being removed from stable/17.11 as it was mistakenly merged.
Patches having 'fix' keyword in the title were merged even though those don't
have "Cc: stable at dpdk.org" tag in the commit message.
If you think this patch is still needed for stable/17.11, please let me know.
Then I'll take it back.
Thanks,
Yongseok
> On Nov 29, 2018, at 3:12 PM, Yongseok Koh <yskoh at mellanox.com> wrote:
>
> Hi,
>
> FYI, your patch has been queued to LTS release 17.11.5
>
> Note it hasn't been pushed to https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fdpdk.org%2Fbrowse%2Fdpdk-stable&data=02%7C01%7Cyskoh%40mellanox.com%7C984a5148ee3f4d0911c508d65650a735%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C636791301732433081&sdata=xSYO3rfdcp080xZsdFughJwuHl10CW%2B6njLe8SLNR5o%3D&reserved=0 yet.
> It will be pushed if I get no objections before 12/01/18. 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. If the code is different (ie: not only metadata diffs), due for example to
> a change in context or macro names, please double check it.
>
> Thanks.
>
> Yongseok
>
> ---
> From ff44ba8002e2db8c02eb769d547bfd7659af14e1 Mon Sep 17 00:00:00 2001
> From: Darek Stojaczyk <dariusz.stojaczyk at intel.com>
> Date: Wed, 21 Nov 2018 19:41:32 +0100
> Subject: [PATCH] vfio: do not needlessly setup device in secondary process
>
> [ upstream commit 047e3f9f2a4a4b73da86b707af8a32039ba1cad7 ]
>
> Setting up a device that wasn't setup in the primary
> process will possibly break the primary process. That's
> because the IPC message to retrieve the group fd in the
> primary will also *open* that group if it wasn't opened
> before. Even though the secondary process closes that fd
> soon after as a part of its error handling path, the
> primary process leaks it.
>
> What's worse, opening that fd on the primary will
> increment the process-local counter of opened groups.
> If it was 0 before, then the group will never be added
> to the vfio container, nor dpdk memory will be ever
> mapped.
>
> This patch moves the proper error checks earlier in the
> code to fully prevent setting up devices in secondary
> processes that weren't setup in the primary process.
>
> Fixes: 2f4adfad0a69 ("vfio: add multiprocess support")
>
> Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk at intel.com>
> Acked-by: Anatoly Burakov <anatoly.burakov at intel.com>
> Reviewed-by: Maxime Coquelin <maxime.coquelin at redhat.com>
> ---
> drivers/bus/pci/linux/pci_vfio.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c
> index 745db260c..654897284 100644
> --- a/drivers/bus/pci/linux/pci_vfio.c
> +++ b/drivers/bus/pci/linux/pci_vfio.c
> @@ -580,11 +580,6 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
> snprintf(pci_addr, sizeof(pci_addr), PCI_PRI_FMT,
> loc->domain, loc->bus, loc->devid, loc->function);
>
> - ret = rte_vfio_setup_device(rte_pci_get_sysfs_path(), pci_addr,
> - &vfio_dev_fd, &device_info);
> - if (ret)
> - return ret;
> -
> /* if we're in a secondary process, just find our tailq entry */
> TAILQ_FOREACH(vfio_res, vfio_res_list, next) {
> if (rte_pci_addr_cmp(&vfio_res->pci_addr,
> @@ -596,9 +591,14 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
> if (vfio_res == NULL) {
> RTE_LOG(ERR, EAL, " %s cannot find TAILQ entry for PCI device!\n",
> pci_addr);
> - goto err_vfio_dev_fd;
> + return -1;
> }
>
> + ret = rte_vfio_setup_device(rte_pci_get_sysfs_path(), pci_addr,
> + &vfio_dev_fd, &device_info);
> + if (ret)
> + return ret;
> +
> /* map BARs */
> maps = vfio_res->maps;
>
> --
> 2.11.0
>
> ---
> Diff of the applied patch vs upstream commit (please double-check if non-empty:
> ---
> --- - 2018-11-29 15:01:50.745484864 -0800
> +++ 0127-vfio-do-not-needlessly-setup-device-in-secondary-pro.patch 2018-11-29 15:01:45.335961000 -0800
> @@ -1,8 +1,10 @@
> -From 047e3f9f2a4a4b73da86b707af8a32039ba1cad7 Mon Sep 17 00:00:00 2001
> +From ff44ba8002e2db8c02eb769d547bfd7659af14e1 Mon Sep 17 00:00:00 2001
> From: Darek Stojaczyk <dariusz.stojaczyk at intel.com>
> Date: Wed, 21 Nov 2018 19:41:32 +0100
> Subject: [PATCH] vfio: do not needlessly setup device in secondary process
>
> +[ upstream commit 047e3f9f2a4a4b73da86b707af8a32039ba1cad7 ]
> +
> Setting up a device that wasn't setup in the primary
> process will possibly break the primary process. That's
> because the IPC message to retrieve the group fd in the
> @@ -31,10 +33,10 @@
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c
> -index ffd26f195..54a4c959e 100644
> +index 745db260c..654897284 100644
> --- a/drivers/bus/pci/linux/pci_vfio.c
> +++ b/drivers/bus/pci/linux/pci_vfio.c
> -@@ -794,11 +794,6 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
> +@@ -580,11 +580,6 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
> snprintf(pci_addr, sizeof(pci_addr), PCI_PRI_FMT,
> loc->domain, loc->bus, loc->devid, loc->function);
>
> @@ -46,7 +48,7 @@
> /* if we're in a secondary process, just find our tailq entry */
> TAILQ_FOREACH(vfio_res, vfio_res_list, next) {
> if (rte_pci_addr_cmp(&vfio_res->pci_addr,
> -@@ -810,9 +805,14 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
> +@@ -596,9 +591,14 @@ pci_vfio_map_resource_secondary(struct rte_pci_device *dev)
> if (vfio_res == NULL) {
> RTE_LOG(ERR, EAL, " %s cannot find TAILQ entry for PCI device!\n",
> pci_addr);
More information about the stable
mailing list