pci/aer: factor out common code
Same logic is used to assert interrupts and send msix messages, so add a static functin for this. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
5f47c187d9
commit
513691b7ff
@ -273,6 +273,17 @@ static uint32_t pcie_aer_status_to_cmd(uint32_t status)
|
|||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void pcie_aer_root_notify(PCIDevice *dev)
|
||||||
|
{
|
||||||
|
if (msix_enabled(dev)) {
|
||||||
|
msix_notify(dev, pcie_aer_root_get_vector(dev));
|
||||||
|
} else if (msi_enabled(dev)) {
|
||||||
|
msi_notify(dev, pcie_aer_root_get_vector(dev));
|
||||||
|
} else {
|
||||||
|
qemu_set_irq(dev->irq[dev->exp.aer_intx], 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 6.2.6 Error Message Control
|
* 6.2.6 Error Message Control
|
||||||
* Figure 6-3
|
* Figure 6-3
|
||||||
@ -344,13 +355,7 @@ static void pcie_aer_msg_root_port(PCIDevice *dev, const PCIEAERMsg *msg)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (msix_enabled(dev)) {
|
pcie_aer_root_notify(dev);
|
||||||
msix_notify(dev, pcie_aer_root_get_vector(dev));
|
|
||||||
} else if (msi_enabled(dev)) {
|
|
||||||
msi_notify(dev, pcie_aer_root_get_vector(dev));
|
|
||||||
} else {
|
|
||||||
qemu_set_irq(dev->irq[dev->exp.aer_intx], 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -760,13 +765,7 @@ void pcie_aer_root_write_config(PCIDevice *dev,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (msix_enabled(dev)) {
|
pcie_aer_root_notify(dev);
|
||||||
msix_notify(dev, pcie_aer_root_get_vector(dev));
|
|
||||||
} else if (msi_enabled(dev)) {
|
|
||||||
msi_notify(dev, pcie_aer_root_get_vector(dev));
|
|
||||||
} else {
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const VMStateDescription vmstate_pcie_aer_err = {
|
static const VMStateDescription vmstate_pcie_aer_err = {
|
||||||
|
Loading…
Reference in New Issue
Block a user