提交 a021f301 编写于 作者: B Bjorn Helgaas

PCI: Clean up ATS error handling

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: NBjorn Helgaas <bhelgaas@google.com>
Reviewed-by: NJoerg Roedel <jroedel@suse.de>
上级 c39127db
...@@ -44,11 +44,12 @@ int pci_enable_ats(struct pci_dev *dev, int ps) ...@@ -44,11 +44,12 @@ int pci_enable_ats(struct pci_dev *dev, int ps)
u16 ctrl; u16 ctrl;
struct pci_dev *pdev; struct pci_dev *pdev;
BUG_ON(dev->ats_cap && dev->ats_enabled);
if (!dev->ats_cap) if (!dev->ats_cap)
return -EINVAL; return -EINVAL;
if (WARN_ON(pci_ats_enabled(dev)))
return -EBUSY;
if (ps < PCI_ATS_MIN_STU) if (ps < PCI_ATS_MIN_STU)
return -EINVAL; return -EINVAL;
...@@ -83,7 +84,8 @@ void pci_disable_ats(struct pci_dev *dev) ...@@ -83,7 +84,8 @@ void pci_disable_ats(struct pci_dev *dev)
struct pci_dev *pdev; struct pci_dev *pdev;
u16 ctrl; 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)) if (atomic_read(&dev->ats_ref_cnt))
return; /* VFs still enabled */ return; /* VFs still enabled */
...@@ -107,8 +109,6 @@ void pci_restore_ats_state(struct pci_dev *dev) ...@@ -107,8 +109,6 @@ void pci_restore_ats_state(struct pci_dev *dev)
if (!pci_ats_enabled(dev)) if (!pci_ats_enabled(dev))
return; return;
if (!pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ATS))
BUG();
ctrl = PCI_ATS_CTRL_ENABLE; ctrl = PCI_ATS_CTRL_ENABLE;
if (!dev->is_virtfn) if (!dev->is_virtfn)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册