Am 11. Januar 2023 17:08:28 UTC schrieb "Philippe Mathieu-Daudé"
<[email protected]>:
>On 9/1/23 18:23, Bernhard Beschow wrote:
>> Aligns the code with PIIX3 such that PIIXState can be used in PIIX4,
>> too.
>>
>> Signed-off-by: Bernhard Beschow <[email protected]>
>> Reviewed-by: Michael S. Tsirkin <[email protected]>
>> Message-Id: <[email protected]>
>> ---
>> hw/isa/piix4.c | 28 ++++++++++------------------
>> hw/mips/malta.c | 11 +++++++++--
>> hw/mips/Kconfig | 1 +
>> 3 files changed, 20 insertions(+), 20 deletions(-)
>
>> @@ -1459,7 +1461,12 @@ void mips_malta_init(MachineState *machine)
>> pci_ide_create_devs(PCI_DEVICE(dev));
>> /* Interrupt controller */
>> - qdev_connect_gpio_out_named(DEVICE(piix4), "intr", 0, i8259_irq);
>> + dev = DEVICE(object_resolve_path_component(OBJECT(piix4), "pic"));
>> + i8259 = i8259_init(isa_bus, i8259_irq);
>> + for (i = 0; i < ISA_NUM_IRQS; i++) {
>> + qdev_connect_gpio_out(dev, i, i8259[i]);
>> + }
>> + g_free(i8259);
>> /* generate SPD EEPROM data */
>> dev = DEVICE(object_resolve_path_component(OBJECT(piix4), "pm"));
>> diff --git a/hw/mips/Kconfig b/hw/mips/Kconfig
>> index 4e7042f03d..d156de812c 100644
>> --- a/hw/mips/Kconfig
>> +++ b/hw/mips/Kconfig
>> @@ -1,5 +1,6 @@
>> config MALTA
>> bool
>> + select I8259
>> select ISA_SUPERIO
>> select PIIX4
>
>The PIIX4 owns / exposes the I8259, so we don't need to select it here.
>The Malta board only initializes it. Why did you have to add this?
The Malta board instantiates a real I8259 while PIIX4 instantiates the
TYPE_ISA_PIC proxy. Both are implemented pragmatically in the same source file,
so both Malta and PIIX4 select it for different reasons.
In previous iterations using the TYPE_PROXY_PIC this might have been clearer:
PIIX4 would select PROXY_PIC (and not I8259) while Malta would select I8259.
OK?
Best regards,
Bernhard