Am 26. April 2023 12:50:08 UTC schrieb Mark Cave-Ayland 
<mark.cave-ayl...@ilande.co.uk>:
>On 02/03/2023 22:40, Philippe Mathieu-Daudé wrote:
>
>> Since pc_init1() has access to the ISABus*, retrieve the
>> ISA IRQs with isa_bus_get_irq().
>> 
>> Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org>
>> ---
>>   hw/i386/pc_piix.c | 8 +++++++-
>>   1 file changed, 7 insertions(+), 1 deletion(-)
>> 
>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
>> index 126b6c11df..1e90b9ff0d 100644
>> --- a/hw/i386/pc_piix.c
>> +++ b/hw/i386/pc_piix.c
>> @@ -277,7 +277,13 @@ static void pc_init1(MachineState *machine,
>>       if (pcmc->pci_enabled) {
>>           PCIDevice *dev;
>>   -        dev = pci_create_simple(pci_bus, piix3_devfn + 1, TYPE_PIIX3_IDE);
>> +        dev = pci_new_multifunction(piix3_devfn + 1, false, TYPE_PIIX3_IDE);
>> +        qdev_connect_gpio_out_named(DEVICE(dev), "ide-irq", 0,
>> +                                    isa_bus_get_irq(isa_bus, 14));
>> +        qdev_connect_gpio_out_named(DEVICE(dev), "ide-irq", 1,
>> +                                    isa_bus_get_irq(isa_bus, 15));
>> +        pci_realize_and_unref(dev, pci_bus, &error_fatal);
>> +
>>           pci_ide_create_devs(dev);
>>           idebus[0] = qdev_get_child_bus(&dev->qdev, "ide.0");
>>           idebus[1] = qdev_get_child_bus(&dev->qdev, "ide.1");
>
>Another reason this probably isn't a good idea: you're having to call 
>qdev_connect_gpio_*() before realizing the device :(

Just curious: Resources like memory regions are assigned before realization, 
see e.g. i440fx or q35. Interrupts are also resources. What makes them special?

I'm asking since this issue seems to be the main blocker for the piix 
consolidation to be merged.

Best regards,
Bernhard

>
>
>ATB,
>
>Mark.

Reply via email to