| Message ID | 20261001092227.3004747-14-smadhavan@nvidia.com |
|---|---|
| State | New |
| Headers | show |
| Series | PCI/CXL: Add CXL reset support for Type 2 devices | expand |
> The per-device PCI reset interface must not reset sibling functions. > Reject cxl_reset and cxl_bus for multifunction devices and PFs with > enabled VFs. > > Suggested-by: Alex Williamson <alwilliamson@nvidia.com> > Link: https://lore.kernel.org/linux-cxl/20260626160846.426e71b6@nvidia.com/ > Link: https://lore.kernel.org/linux-cxl/6a50441e2bb5e_3cabcb1003e@djbw-dev.notmuch/ > Signed-off-by: Srirangan Madhavan <smadhavan@nvidia.com> Sashiko has reviewed this patch and found no issues. It looks great!
On Thu, Oct 01, 2026 at 09:22:24AM +0000, Srirangan Madhavan wrote: > The per-device PCI reset interface must not reset sibling functions. > Reject cxl_reset and cxl_bus for multifunction devices and PFs with > enabled VFs. > > Suggested-by: Alex Williamson <alwilliamson@nvidia.com> > Link: https://lore.kernel.org/linux-cxl/20260626160846.426e71b6@nvidia.com/ > Link: https://lore.kernel.org/linux-cxl/6a50441e2bb5e_3cabcb1003e@djbw-dev.notmuch/ > Signed-off-by: Srirangan Madhavan <smadhavan@nvidia.com> Acked-by: Bjorn Helgaas <bhelgaas@google.com> > --- > drivers/cxl/core/resource.c | 3 +++ > drivers/pci/pci.c | 3 +++ > 2 files changed, 6 insertions(+) > > diff --git a/drivers/cxl/core/resource.c b/drivers/cxl/core/resource.c > index 584b51cd9e28..679a605da24c 100644 > --- a/drivers/cxl/core/resource.c > +++ b/drivers/cxl/core/resource.c > @@ -903,6 +903,9 @@ int cxl_reset_function(struct pci_dev *pdev, bool probe) > !(ctrl & PCI_DVSEC_CXL_MEM_ENABLE)) > return -ENOTTY; > > + if (pdev->multifunction || pci_num_vf(pdev)) > + return -ENOTTY; > + > if (probe) > return 0; > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index b2879a6be5f8..fe611340f5ab 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -5026,6 +5026,9 @@ static int cxl_reset_bus_function(struct pci_dev *dev, bool probe) > if (!dvsec) > return -ENOTTY; > > + if (dev->multifunction || pci_num_vf(dev)) > + return -ENOTTY; > + > if (probe) > return 0; > > -- > 2.43.0 >
diff --git a/drivers/cxl/core/resource.c b/drivers/cxl/core/resource.c index 584b51cd9e28..679a605da24c 100644 --- a/drivers/cxl/core/resource.c +++ b/drivers/cxl/core/resource.c @@ -903,6 +903,9 @@ int cxl_reset_function(struct pci_dev *pdev, bool probe) !(ctrl & PCI_DVSEC_CXL_MEM_ENABLE)) return -ENOTTY; + if (pdev->multifunction || pci_num_vf(pdev)) + return -ENOTTY; + if (probe) return 0; diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index b2879a6be5f8..fe611340f5ab 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -5026,6 +5026,9 @@ static int cxl_reset_bus_function(struct pci_dev *dev, bool probe) if (!dvsec) return -ENOTTY; + if (dev->multifunction || pci_num_vf(dev)) + return -ENOTTY; + if (probe) return 0;
The per-device PCI reset interface must not reset sibling functions. Reject cxl_reset and cxl_bus for multifunction devices and PFs with enabled VFs. Suggested-by: Alex Williamson <alwilliamson@nvidia.com> Link: https://lore.kernel.org/linux-cxl/20260626160846.426e71b6@nvidia.com/ Link: https://lore.kernel.org/linux-cxl/6a50441e2bb5e_3cabcb1003e@djbw-dev.notmuch/ Signed-off-by: Srirangan Madhavan <smadhavan@nvidia.com> --- drivers/cxl/core/resource.c | 3 +++ drivers/pci/pci.c | 3 +++ 2 files changed, 6 insertions(+)