Cao jin <caoj.f...@cn.fujitsu.com> writes: > Hi > > On 04/08/2016 04:44 PM, Markus Armbruster wrote: > >>> diff --git a/hw/ide/ich.c b/hw/ide/ich.c >>> index 0a13334..db4fdb5 100644 >>> --- a/hw/ide/ich.c >>> +++ b/hw/ide/ich.c >>> @@ -146,7 +146,7 @@ static void pci_ich9_ahci_realize(PCIDevice *dev, Error >>> **errp) >>> /* Although the AHCI 1.3 specification states that the first >>> capability >>> * should be PMCAP, the Intel ICH9 data sheet specifies that the ICH9 >>> * AHCI device puts the MSI capability first, pointing to 0x80. */ >>> - msi_init(dev, ICH9_MSI_CAP_OFFSET, 1, true, false); >>> + msi_init(dev, ICH9_MSI_CAP_OFFSET, 1, true, false, errp); >> >> Sure there's nothing to undo on error? Instead of undoing, you may want >> to move msi_init() before the stuff that needs undoing. >> > > ich9-ahci is a on-board device of Q35, like cover-letter says: when it > fail, qemu will exit. So, is it necessary to undo on error?
Yes, it's a Q35 onboard device, but it's not only that: QEMU happily accepts -device ich9-ahci. A realize() method should fail cleanly unless its device has cannot_instantiate_with_device_add_yet set. > maybe you saw, I did move msi_init() for some other devices. Yes. Appreciated! [...]