Am 18. Februar 2024 10:47:26 UTC schrieb "Philippe Mathieu-Daudé"
<phi...@linaro.org>:
>On 17/2/24 11:46, Bernhard Beschow wrote:
>> The interrupt handlers need to be populated before the device is realized
>> since
>> internal devices such as the RTC are wired during realize(). If the interrupt
>> handlers aren't populated, devices such as the RTC will be wired with a NULL
>> interrupt handler, i.e. MC146818RtcState::irq is NULL.
>
>Why no CI test caught that?
Good question. I think the missing IRQ connection would even be hardly
noticeable when running a full and modern graphical Linux distro as guest.
There is rtc-test.c but I don't know if wiring is in its scope.
Best regards,
Bernhard
>
>> Fixes: fc11ca08bc29 "hw/i386/q35: Realize LPC PCI function before accessing
>> it"
>>
>> Cc: Philippe Mathieu-Daudé <phi...@linaro.org>
>> Signed-off-by: Bernhard Beschow <shen...@gmail.com>
>> ---
>> hw/i386/pc_q35.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
>> index d346fa3b1d..43675bf597 100644
>> --- a/hw/i386/pc_q35.c
>> +++ b/hw/i386/pc_q35.c
>> @@ -240,10 +240,10 @@ static void pc_q35_init(MachineState *machine)
>> lpc_dev = DEVICE(lpc);
>> qdev_prop_set_bit(lpc_dev, "smm-enabled",
>> x86_machine_is_smm_enabled(x86ms));
>> - pci_realize_and_unref(lpc, host_bus, &error_fatal);
>> for (i = 0; i < IOAPIC_NUM_PINS; i++) {
>> qdev_connect_gpio_out_named(lpc_dev, ICH9_GPIO_GSI, i,
>> x86ms->gsi[i]);
>> }
>> + pci_realize_and_unref(lpc, host_bus, &error_fatal);
>> rtc_state = ISA_DEVICE(object_resolve_path_component(OBJECT(lpc),
>> "rtc"));
>>
>