There's no need to BUG() if we enable ATS when it's already enabled. We
don't need to BUG() when disabling ATS on a device that doesn't support ATS
or if it's already disabled. If ATS is enabled, certainly we found an ATS
capability in the past, so it should still be there now.
Clean up these error paths.
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Joerg Roedel <jroedel@suse.de>
u16 ctrl;
struct pci_dev *pdev;
- BUG_ON(dev->ats_cap && dev->ats_enabled);
-
if (!dev->ats_cap)
return -EINVAL;
+ if (WARN_ON(pci_ats_enabled(dev)))
+ return -EBUSY;
+
if (ps < PCI_ATS_MIN_STU)
return -EINVAL;
struct pci_dev *pdev;
u16 ctrl;
- BUG_ON(!dev->ats_cap || !dev->ats_enabled);
+ if (WARN_ON(!pci_ats_enabled(dev)))
+ return;
if (atomic_read(&dev->ats_ref_cnt))
return; /* VFs still enabled */
if (!pci_ats_enabled(dev))
return;
- if (!pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ATS))
- BUG();
ctrl = PCI_ATS_CTRL_ENABLE;
if (!dev->is_virtfn)