mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 06:31:52 +00:00
PCI/MSI: Move D0 check into pci_msi_check_device()
Both callers of pci_msi_check_device() check that the device is in D0 state, so move the check from the callers into pci_msi_check_device() itself. In pci_enable_msi_range(), note that pci_msi_check_device() never returns a positive value any more, so the loop that called it until it returns zero or negative is no longer necessary. [bhelgaas: changelog, split to separate patch] Signed-off-by: Alexander Gordeev <agordeev@redhat.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
ad975ebad4
commit
27e20603c5
@ -810,7 +810,10 @@ static int pci_msi_check_device(struct pci_dev *dev, int nvec)
|
||||
struct pci_bus *bus;
|
||||
|
||||
/* MSI must be globally enabled and supported by the device */
|
||||
if (!pci_msi_enable || !dev || dev->no_msi)
|
||||
if (!pci_msi_enable)
|
||||
return -EINVAL;
|
||||
|
||||
if (!dev || dev->no_msi || dev->current_state != PCI_D0)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
@ -934,13 +937,13 @@ int pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries, int nvec)
|
||||
int status, nr_entries;
|
||||
int i, j;
|
||||
|
||||
if (!entries || !dev->msix_cap || dev->current_state != PCI_D0)
|
||||
return -EINVAL;
|
||||
|
||||
status = pci_msi_check_device(dev, nvec);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
if (!entries)
|
||||
return -EINVAL;
|
||||
|
||||
nr_entries = pci_msix_vec_count(dev);
|
||||
if (nr_entries < 0)
|
||||
return nr_entries;
|
||||
@ -1047,8 +1050,9 @@ int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec)
|
||||
int nvec;
|
||||
int rc;
|
||||
|
||||
if (dev->current_state != PCI_D0)
|
||||
return -EINVAL;
|
||||
rc = pci_msi_check_device(dev, minvec);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
WARN_ON(!!dev->msi_enabled);
|
||||
|
||||
@ -1070,17 +1074,6 @@ int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec)
|
||||
else if (nvec > maxvec)
|
||||
nvec = maxvec;
|
||||
|
||||
do {
|
||||
rc = pci_msi_check_device(dev, nvec);
|
||||
if (rc < 0) {
|
||||
return rc;
|
||||
} else if (rc > 0) {
|
||||
if (rc < minvec)
|
||||
return -ENOSPC;
|
||||
nvec = rc;
|
||||
}
|
||||
} while (rc);
|
||||
|
||||
do {
|
||||
rc = msi_capability_init(dev, nvec);
|
||||
if (rc < 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user