On Tue, Feb 19, 2019 at 07:24:40PM +0100, Paolo Bonzini wrote: > On 19/02/19 17:07, Thomas Huth wrote: > > Some machines have an AHCI adapter, but no PCI. To be able to > > compile hw/ide/ahci.c without CONFIG_PCI, we still need the two > > functions msi_enabled() and msi_notify() for linking. > > This is required for the upcoming Kconfig-like build system, if > > a user wants to compile a QEMU binary with just one machine that > > has AHCI, but no PCI, like the ARM "cubieboard" for example. > > > > Signed-off-by: Thomas Huth <th...@redhat.com> > > --- > > hw/pci/pci-stub.c | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/hw/pci/pci-stub.c b/hw/pci/pci-stub.c > > index b941a0e..c04a5df 100644 > > --- a/hw/pci/pci-stub.c > > +++ b/hw/pci/pci-stub.c > > @@ -53,3 +53,14 @@ uint16_t pci_requester_id(PCIDevice *dev) > > g_assert(false); > > return 0; > > } > > + > > +/* Required by ahci.c */ > > +bool msi_enabled(const PCIDevice *dev) > > +{ > > + return false; > > +} > > + > > +void msi_notify(PCIDevice *dev, unsigned int vector) > > +{ > > + g_assert_not_reached(); > > +} > > > > Makes sense, but it is also abstraction time. :) What if instead there > was a function > > void msi_allocate_irqs(PCIDevice *pdev, int num, bool fallback_to_intx); > > and then ich.c did > > irqs = msi_allocate_irqs(pdev, 1, true); > s->irq = irqs[0]; > g_free(irqs); > > ? "if msi_enabled raise MSI else raise INTX" is really a common idiom. > > Thanks, > > Paolo
Maybe it is but the specific issue is not about fallback to INTX of PCI (is the fallback broken for ahci? I don't know). The trick is there's no pdev at all. -- MST