diff options
author | Anthony Liguori <aliguori@us.ibm.com> | 2012-06-18 10:18:44 -0500 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2012-06-18 10:18:44 -0500 |
commit | df6606f4556a752d30a4eab26c626b6c34717ea8 (patch) | |
tree | 095df894fd2f1e40f6a8a5a6393e10a953d8054d /hw/msix.c | |
parent | 49023ff78cf1efeb861b475c40dd04262efe61d3 (diff) | |
parent | 80aa796bf38b7ef21daa42673b4711510c450d8a (diff) |
Merge remote-tracking branch 'mst/tags/for_anthony' into staging
* mst/tags/for_anthony:
pci_bridge_dev: fix error path in pci_bridge_dev_initfn()
qdev: release parent properties on dc->init failure
msi: Use msi/msix_present more consistently
msi: Invoke msi/msix_write_config from PCI core
msi: Guard msi/msix_write_config with msi_present
msi: Invoke msi/msix_reset from PCI core
msi: Guard msi_reset with msi_present
ahci: Clean up reset functions
intel-hda: Fix reset of MSI function
ahci: Fix reset of MSI function
rtl8139: honor RxOverflow flag in can_receive method
shpc: unparent device before free
Diffstat (limited to 'hw/msix.c')
-rw-r--r-- | hw/msix.c | 15 |
1 files changed, 9 insertions, 6 deletions
@@ -187,7 +187,7 @@ void msix_write_config(PCIDevice *dev, uint32_t addr, int vector; bool was_masked; - if (!range_covers_byte(addr, len, enable_pos)) { + if (!msix_present(dev) || !range_covers_byte(addr, len, enable_pos)) { return; } @@ -319,8 +319,9 @@ static void msix_free_irq_entries(PCIDevice *dev) /* Clean up resources for the device. */ int msix_uninit(PCIDevice *dev, MemoryRegion *bar) { - if (!(dev->cap_present & QEMU_PCI_CAP_MSIX)) + if (!msix_present(dev)) { return 0; + } pci_del_capability(dev, PCI_CAP_ID_MSIX, MSIX_CAP_LENGTH); dev->msix_cap = 0; msix_free_irq_entries(dev); @@ -339,7 +340,7 @@ void msix_save(PCIDevice *dev, QEMUFile *f) { unsigned n = dev->msix_entries_nr; - if (!(dev->cap_present & QEMU_PCI_CAP_MSIX)) { + if (!msix_present(dev)) { return; } @@ -353,7 +354,7 @@ void msix_load(PCIDevice *dev, QEMUFile *f) unsigned n = dev->msix_entries_nr; unsigned int vector; - if (!(dev->cap_present & QEMU_PCI_CAP_MSIX)) { + if (!msix_present(dev)) { return; } @@ -407,8 +408,9 @@ void msix_notify(PCIDevice *dev, unsigned vector) void msix_reset(PCIDevice *dev) { - if (!(dev->cap_present & QEMU_PCI_CAP_MSIX)) + if (!msix_present(dev)) { return; + } msix_free_irq_entries(dev); dev->config[dev->msix_cap + MSIX_CONTROL_OFFSET] &= ~dev->wmask[dev->msix_cap + MSIX_CONTROL_OFFSET]; @@ -447,8 +449,9 @@ void msix_vector_unuse(PCIDevice *dev, unsigned vector) void msix_unuse_all_vectors(PCIDevice *dev) { - if (!(dev->cap_present & QEMU_PCI_CAP_MSIX)) + if (!msix_present(dev)) { return; + } msix_free_irq_entries(dev); } |