On 03/07/19 17:49, Julio Montes wrote: > In pc_init1(), ISA IDE is initialized without checking if ISAPC or IDE_ISA > configs are enabled. This results in a link error when > CONFIG_ISAPC is set to 'n' in the file default-configs/i386-softmmu.mak: > > hw/i386/pc_piix.o: In function `pc_init1': > hw/i386/pc_piix.c:261: undefined reference to `isa_ide_init' > hw/i386/pc_piix.c:261: undefined reference to `isa_ide_init' > > Place ide_isa code under #ifdef CONFIG_IDE_ISA to fix linker errors
But there is nothing that defines CONFIG_IDE_ISA, right? Paolo > Signed-off-by: Julio Montes <julio.mon...@intel.com> > --- > hw/i386/pc_piix.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c > index c07c4a5b38..b93f9327be 100644 > --- a/hw/i386/pc_piix.c > +++ b/hw/i386/pc_piix.c > @@ -61,9 +61,11 @@ > > #define MAX_IDE_BUS 2 > > +#ifdef CONFIG_IDE_ISA > static const int ide_iobase[MAX_IDE_BUS] = { 0x1f0, 0x170 }; > static const int ide_iobase2[MAX_IDE_BUS] = { 0x3f6, 0x376 }; > static const int ide_irq[MAX_IDE_BUS] = { 14, 15 }; > +#endif > > /* PC hardware initialisation */ > static void pc_init1(MachineState *machine, > @@ -254,7 +256,10 @@ static void pc_init1(MachineState *machine, > } > idebus[0] = qdev_get_child_bus(&dev->qdev, "ide.0"); > idebus[1] = qdev_get_child_bus(&dev->qdev, "ide.1"); > - } else { > + pc_cmos_init(pcms, idebus[0], idebus[1], rtc_state); > + } > +#ifdef CONFIG_IDE_ISA > +else { > for(i = 0; i < MAX_IDE_BUS; i++) { > ISADevice *dev; > char busname[] = "ide.0"; > @@ -268,9 +273,9 @@ static void pc_init1(MachineState *machine, > busname[4] = '0' + i; > idebus[i] = qdev_get_child_bus(DEVICE(dev), busname); > } > + pc_cmos_init(pcms, idebus[0], idebus[1], rtc_state); > } > - > - pc_cmos_init(pcms, idebus[0], idebus[1], rtc_state); > +#endif > > if (pcmc->pci_enabled && machine_usb(machine)) { > pci_create_simple(pci_bus, piix3_devfn + 2, "piix3-usb-uhci"); >