On 2011-04-04 17:28, Avi Kivity wrote: > Signed-off-by: Avi Kivity <a...@redhat.com> > --- > hw/ide/ahci.c | 9 --------- > hw/ide/ahci.h | 3 --- > hw/ide/ich.c | 3 +-- > 3 files changed, 1 insertions(+), 14 deletions(-) > > diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c > index 98bdf70..c6e0c77 100644 > --- a/hw/ide/ahci.c > +++ b/hw/ide/ahci.c > @@ -1129,15 +1129,6 @@ void ahci_uninit(AHCIState *s) > qemu_free(s->dev); > } > > -void ahci_pci_map(PCIDevice *pci_dev, int region_num, > - pcibus_t addr, pcibus_t size, int type) > -{ > - struct AHCIPCIState *d = (struct AHCIPCIState *)pci_dev; > - AHCIState *s = &d->ahci; > - > - cpu_register_physical_memory(addr, size, s->mem); > -} > - > void ahci_reset(void *opaque) > { > struct AHCIPCIState *d = opaque; > diff --git a/hw/ide/ahci.h b/hw/ide/ahci.h > index a4560c4..dc86951 100644 > --- a/hw/ide/ahci.h > +++ b/hw/ide/ahci.h > @@ -325,9 +325,6 @@ typedef struct NCQFrame { > void ahci_init(AHCIState *s, DeviceState *qdev, int ports); > void ahci_uninit(AHCIState *s); > > -void ahci_pci_map(PCIDevice *pci_dev, int region_num, > - pcibus_t addr, pcibus_t size, int type); > - > void ahci_reset(void *opaque); > > #endif /* HW_IDE_AHCI_H */ > diff --git a/hw/ide/ich.c b/hw/ide/ich.c > index f242d7a..eb00f03 100644 > --- a/hw/ide/ich.c > +++ b/hw/ide/ich.c > @@ -95,8 +95,7 @@ static int pci_ich9_ahci_init(PCIDevice *dev) > qemu_register_reset(ahci_reset, d); > > /* XXX BAR size should be 1k, but that breaks, so bump it to 4k for now > */ > - pci_register_bar(&d->card, 5, 0x1000, PCI_BASE_ADDRESS_SPACE_MEMORY, > - ahci_pci_map); > + pci_register_bar_simple(&d->card, 5, 0x1000, 0, d->ahci.mem); > > msi_init(dev, 0x50, 1, true, false); >
This breaks AHCI as ahci.mem is not initialized at this point. Fix below. Did you check the rest of your series regarding such issues? Jan -----------8<---------- From: Jan Kiszka <jan.kis...@siemens.com> Fix regression of 667bb59: ahci_init initializes ahci.mem, so we have to move bar registration after it. Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> --- hw/ide/ich.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/ide/ich.c b/hw/ide/ich.c index e44339b..6150ce3 100644 --- a/hw/ide/ich.c +++ b/hw/ide/ich.c @@ -93,14 +93,14 @@ static int pci_ich9_ahci_init(PCIDevice *dev) qemu_register_reset(ahci_reset, d); - /* XXX BAR size should be 1k, but that breaks, so bump it to 4k for now */ - pci_register_bar_simple(&d->card, 5, 0x1000, 0, d->ahci.mem); - msi_init(dev, 0x50, 1, true, false); ahci_init(&d->ahci, &dev->qdev, 6); d->ahci.irq = d->card.irq[0]; + /* XXX BAR size should be 1k, but that breaks, so bump it to 4k for now */ + pci_register_bar_simple(&d->card, 5, 0x1000, 0, d->ahci.mem); + return 0; }