hw/ide/ahci: Do not pass 'ports' argument to ahci_realize()

Explicitly set AHCIState::ports before calling ahci_realize().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20240213081201.78951-8-philmd@linaro.org>
This commit is contained in:
Philippe Mathieu-Daudé 2024-02-13 06:24:04 +01:00
parent 44c11b2e69
commit be02150167
3 changed files with 8 additions and 6 deletions

View File

@ -1614,14 +1614,14 @@ void ahci_init(AHCIState *s, DeviceState *qdev)
"ahci-idp", 32); "ahci-idp", 32);
} }
void ahci_realize(AHCIState *s, DeviceState *qdev, AddressSpace *as, int ports) void ahci_realize(AHCIState *s, DeviceState *qdev, AddressSpace *as)
{ {
qemu_irq *irqs; qemu_irq *irqs;
int i; int i;
s->as = as; s->as = as;
s->ports = ports; assert(s->ports > 0);
s->dev = g_new0(AHCIDevice, ports); s->dev = g_new0(AHCIDevice, s->ports);
ahci_reg_init(s); ahci_reg_init(s);
irqs = qemu_allocate_irqs(ahci_irq_set, s, s->ports); irqs = qemu_allocate_irqs(ahci_irq_set, s, s->ports);
for (i = 0; i < s->ports; i++) { for (i = 0; i < s->ports; i++) {
@ -1862,7 +1862,8 @@ static void sysbus_ahci_realize(DeviceState *dev, Error **errp)
{ {
SysbusAHCIState *s = SYSBUS_AHCI(dev); SysbusAHCIState *s = SYSBUS_AHCI(dev);
ahci_realize(&s->ahci, dev, &address_space_memory, s->num_ports); s->ahci.ports = s->num_ports;
ahci_realize(&s->ahci, dev, &address_space_memory);
} }
static Property sysbus_ahci_properties[] = { static Property sysbus_ahci_properties[] = {

View File

@ -377,7 +377,7 @@ typedef struct SDBFIS {
uint32_t payload; uint32_t payload;
} QEMU_PACKED SDBFIS; } QEMU_PACKED SDBFIS;
void ahci_realize(AHCIState *s, DeviceState *qdev, AddressSpace *as, int ports); void ahci_realize(AHCIState *s, DeviceState *qdev, AddressSpace *as);
void ahci_init(AHCIState *s, DeviceState *qdev); void ahci_init(AHCIState *s, DeviceState *qdev);
void ahci_uninit(AHCIState *s); void ahci_uninit(AHCIState *s);

View File

@ -113,7 +113,8 @@ static void pci_ich9_ahci_realize(PCIDevice *dev, Error **errp)
d = ICH9_AHCI(dev); d = ICH9_AHCI(dev);
int ret; int ret;
ahci_realize(&d->ahci, DEVICE(dev), pci_get_address_space(dev), 6); d->ahci.ports = 6;
ahci_realize(&d->ahci, DEVICE(dev), pci_get_address_space(dev));
pci_config_set_prog_interface(dev->config, AHCI_PROGMODE_MAJOR_REV_1); pci_config_set_prog_interface(dev->config, AHCI_PROGMODE_MAJOR_REV_1);