PCI: remove redundant __msi_set_enable()
We have the 'pos' of the MSI capability at all locations which call msi_set_enable(), so pass it to msi_set_enable() instead of making it find the capability every time. Reviewed-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> Signed-off-by: Matthew Wilcox <willy@linux.intel.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
This commit is contained in:
committed by
Jesse Barnes
parent
7d9a73f6dc
commit
110828c9cd
@@ -75,22 +75,17 @@ void arch_teardown_msi_irqs(struct pci_dev *dev)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void __msi_set_enable(struct pci_dev *dev, int pos, int enable)
|
static void msi_set_enable(struct pci_dev *dev, int pos, int enable)
|
||||||
{
|
{
|
||||||
u16 control;
|
u16 control;
|
||||||
|
|
||||||
if (pos) {
|
BUG_ON(!pos);
|
||||||
|
|
||||||
pci_read_config_word(dev, pos + PCI_MSI_FLAGS, &control);
|
pci_read_config_word(dev, pos + PCI_MSI_FLAGS, &control);
|
||||||
control &= ~PCI_MSI_FLAGS_ENABLE;
|
control &= ~PCI_MSI_FLAGS_ENABLE;
|
||||||
if (enable)
|
if (enable)
|
||||||
control |= PCI_MSI_FLAGS_ENABLE;
|
control |= PCI_MSI_FLAGS_ENABLE;
|
||||||
pci_write_config_word(dev, pos + PCI_MSI_FLAGS, control);
|
pci_write_config_word(dev, pos + PCI_MSI_FLAGS, control);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void msi_set_enable(struct pci_dev *dev, int enable)
|
|
||||||
{
|
|
||||||
__msi_set_enable(dev, pci_find_capability(dev, PCI_CAP_ID_MSI), enable);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void msix_set_enable(struct pci_dev *dev, int enable)
|
static void msix_set_enable(struct pci_dev *dev, int enable)
|
||||||
@@ -300,7 +295,7 @@ static void __pci_restore_msi_state(struct pci_dev *dev)
|
|||||||
pos = entry->msi_attrib.pos;
|
pos = entry->msi_attrib.pos;
|
||||||
|
|
||||||
pci_intx_for_msi(dev, 0);
|
pci_intx_for_msi(dev, 0);
|
||||||
msi_set_enable(dev, 0);
|
msi_set_enable(dev, pos, 0);
|
||||||
write_msi_msg(dev->irq, &entry->msg);
|
write_msi_msg(dev->irq, &entry->msg);
|
||||||
|
|
||||||
pci_read_config_word(dev, pos + PCI_MSI_FLAGS, &control);
|
pci_read_config_word(dev, pos + PCI_MSI_FLAGS, &control);
|
||||||
@@ -362,9 +357,9 @@ static int msi_capability_init(struct pci_dev *dev, int nvec)
|
|||||||
u16 control;
|
u16 control;
|
||||||
unsigned mask;
|
unsigned mask;
|
||||||
|
|
||||||
msi_set_enable(dev, 0); /* Ensure msi is disabled as I set it up */
|
|
||||||
|
|
||||||
pos = pci_find_capability(dev, PCI_CAP_ID_MSI);
|
pos = pci_find_capability(dev, PCI_CAP_ID_MSI);
|
||||||
|
msi_set_enable(dev, pos, 0); /* Disable MSI during set up */
|
||||||
|
|
||||||
pci_read_config_word(dev, msi_control_reg(pos), &control);
|
pci_read_config_word(dev, msi_control_reg(pos), &control);
|
||||||
/* MSI Entry Initialization */
|
/* MSI Entry Initialization */
|
||||||
entry = alloc_msi_entry(dev);
|
entry = alloc_msi_entry(dev);
|
||||||
@@ -396,7 +391,7 @@ static int msi_capability_init(struct pci_dev *dev, int nvec)
|
|||||||
|
|
||||||
/* Set MSI enabled bits */
|
/* Set MSI enabled bits */
|
||||||
pci_intx_for_msi(dev, 0);
|
pci_intx_for_msi(dev, 0);
|
||||||
msi_set_enable(dev, 1);
|
msi_set_enable(dev, pos, 1);
|
||||||
dev->msi_enabled = 1;
|
dev->msi_enabled = 1;
|
||||||
|
|
||||||
dev->irq = entry->irq;
|
dev->irq = entry->irq;
|
||||||
@@ -593,17 +588,20 @@ void pci_msi_shutdown(struct pci_dev *dev)
|
|||||||
struct msi_desc *desc;
|
struct msi_desc *desc;
|
||||||
u32 mask;
|
u32 mask;
|
||||||
u16 ctrl;
|
u16 ctrl;
|
||||||
|
unsigned pos;
|
||||||
|
|
||||||
if (!pci_msi_enable || !dev || !dev->msi_enabled)
|
if (!pci_msi_enable || !dev || !dev->msi_enabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
msi_set_enable(dev, 0);
|
BUG_ON(list_empty(&dev->msi_list));
|
||||||
|
desc = list_first_entry(&dev->msi_list, struct msi_desc, list);
|
||||||
|
pos = desc->msi_attrib.pos;
|
||||||
|
|
||||||
|
msi_set_enable(dev, pos, 0);
|
||||||
pci_intx_for_msi(dev, 1);
|
pci_intx_for_msi(dev, 1);
|
||||||
dev->msi_enabled = 0;
|
dev->msi_enabled = 0;
|
||||||
|
|
||||||
BUG_ON(list_empty(&dev->msi_list));
|
pci_read_config_word(dev, pos + PCI_MSI_FLAGS, &ctrl);
|
||||||
desc = list_first_entry(&dev->msi_list, struct msi_desc, list);
|
|
||||||
pci_read_config_word(dev, desc->msi_attrib.pos + PCI_MSI_FLAGS, &ctrl);
|
|
||||||
mask = msi_capable_mask(ctrl);
|
mask = msi_capable_mask(ctrl);
|
||||||
msi_mask_irq(desc, mask, ~mask);
|
msi_mask_irq(desc, mask, ~mask);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user