qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] hw/i386/pc_piix: Fix RTC ISA IRQ wiring of isapc machine
@ 2025-05-12 21:09 Bernhard Beschow
  2025-05-13  9:02 ` Mark Cave-Ayland
  0 siblings, 1 reply; 3+ messages in thread
From: Bernhard Beschow @ 2025-05-12 21:09 UTC (permalink / raw)
  To: qemu-devel
  Cc: Michael S. Tsirkin, Richard Henderson, Paolo Bonzini,
	Eduardo Habkost, Marcel Apfelbaum, Bernhard Beschow

Commit 56b1f50e3c10 ("hw/i386/pc: Wire RTC ISA IRQs in south bridges")
attempted to refactor RTC IRQ wiring which was previously done in
pc_basic_device_init() but forgot about the isapc machine. Fix this by
wiring in the code section dedicated exclusively to the isapc machine.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2961
Fixes: 56b1f50e3c10 ("hw/i386/pc: Wire RTC ISA IRQs in south bridges")
cc: qemu-stable
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
---
 hw/i386/pc_piix.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 0dce512f18..4c37f5419a 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -285,6 +285,8 @@ static void pc_init1(MachineState *machine, const char *pci_type)
         pcms->idebus[0] = qdev_get_child_bus(dev, "ide.0");
         pcms->idebus[1] = qdev_get_child_bus(dev, "ide.1");
     } else {
+        uint32_t irq;
+
         isa_bus = isa_bus_new(NULL, system_memory, system_io,
                               &error_abort);
         isa_bus_register_input_irqs(isa_bus, x86ms->gsi);
@@ -292,6 +294,9 @@ static void pc_init1(MachineState *machine, const char *pci_type)
         x86ms->rtc = isa_new(TYPE_MC146818_RTC);
         qdev_prop_set_int32(DEVICE(x86ms->rtc), "base_year", 2000);
         isa_realize_and_unref(x86ms->rtc, isa_bus, &error_fatal);
+        irq = object_property_get_uint(OBJECT(x86ms->rtc), "irq",
+                                       &error_fatal);
+        isa_connect_gpio_out(x86ms->rtc, 0, irq);
 
         i8257_dma_init(OBJECT(machine), isa_bus, 0);
         pcms->hpet_enabled = false;
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] hw/i386/pc_piix: Fix RTC ISA IRQ wiring of isapc machine
  2025-05-12 21:09 [PATCH] hw/i386/pc_piix: Fix RTC ISA IRQ wiring of isapc machine Bernhard Beschow
@ 2025-05-13  9:02 ` Mark Cave-Ayland
  2025-05-15  9:38   ` Bernhard Beschow
  0 siblings, 1 reply; 3+ messages in thread
From: Mark Cave-Ayland @ 2025-05-13  9:02 UTC (permalink / raw)
  To: Bernhard Beschow, qemu-devel
  Cc: Michael S. Tsirkin, Richard Henderson, Paolo Bonzini,
	Eduardo Habkost, Marcel Apfelbaum

On 12/05/2025 22:09, Bernhard Beschow wrote:

> Commit 56b1f50e3c10 ("hw/i386/pc: Wire RTC ISA IRQs in south bridges")
> attempted to refactor RTC IRQ wiring which was previously done in
> pc_basic_device_init() but forgot about the isapc machine. Fix this by
> wiring in the code section dedicated exclusively to the isapc machine.
> 
> Resolves: https://urldefense.proofpoint.com/v2/url?u=https-3A__gitlab.com_qemu-2Dproject_qemu_-2D_issues_2961&d=DwIDAg&c=s883GpUCOChKOHiocYtGcg&r=c23RpsaH4D2MKyD3EPJTDa0BAxz6tV8aUJqVSoytEiY&m=zy9ANkk1dnktvDbix39oQju-ro1U35C5_dEQr6pECga8-YnCMKMlisUou43EzMJ-&s=0BQaI4PyU_roe0kyQTESxn57VNCBnJV3kEV6F-GpL8I&e=
> Fixes: 56b1f50e3c10 ("hw/i386/pc: Wire RTC ISA IRQs in south bridges")
> cc: qemu-stable
> Signed-off-by: Bernhard Beschow <shentey@gmail.com>
> ---
>   hw/i386/pc_piix.c | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 0dce512f18..4c37f5419a 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -285,6 +285,8 @@ static void pc_init1(MachineState *machine, const char *pci_type)
>           pcms->idebus[0] = qdev_get_child_bus(dev, "ide.0");
>           pcms->idebus[1] = qdev_get_child_bus(dev, "ide.1");
>       } else {
> +        uint32_t irq;
> +
>           isa_bus = isa_bus_new(NULL, system_memory, system_io,
>                                 &error_abort);
>           isa_bus_register_input_irqs(isa_bus, x86ms->gsi);
> @@ -292,6 +294,9 @@ static void pc_init1(MachineState *machine, const char *pci_type)
>           x86ms->rtc = isa_new(TYPE_MC146818_RTC);
>           qdev_prop_set_int32(DEVICE(x86ms->rtc), "base_year", 2000);
>           isa_realize_and_unref(x86ms->rtc, isa_bus, &error_fatal);
> +        irq = object_property_get_uint(OBJECT(x86ms->rtc), "irq",
> +                                       &error_fatal);
> +        isa_connect_gpio_out(x86ms->rtc, 0, irq);
>   
>           i8257_dma_init(OBJECT(machine), isa_bus, 0);
>           pcms->hpet_enabled = false;

I see in 56b1f50e3c10 that the commit also introduced the ISA_DEVICE() 
QOM cast in isa_connect_gpio_out() as a safety check, so it's probably 
worth adding it here too. Otherwise looks good to me - nice detective work!

Reviewed-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>


ATB,

Mark.



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] hw/i386/pc_piix: Fix RTC ISA IRQ wiring of isapc machine
  2025-05-13  9:02 ` Mark Cave-Ayland
@ 2025-05-15  9:38   ` Bernhard Beschow
  0 siblings, 0 replies; 3+ messages in thread
From: Bernhard Beschow @ 2025-05-15  9:38 UTC (permalink / raw)
  To: Mark Cave-Ayland, qemu-devel
  Cc: Michael S. Tsirkin, Richard Henderson, Paolo Bonzini,
	Eduardo Habkost, Marcel Apfelbaum



Am 13. Mai 2025 09:02:56 UTC schrieb Mark Cave-Ayland <mark.caveayland@nutanix.com>:
>On 12/05/2025 22:09, Bernhard Beschow wrote:
>
>> Commit 56b1f50e3c10 ("hw/i386/pc: Wire RTC ISA IRQs in south bridges")
>> attempted to refactor RTC IRQ wiring which was previously done in
>> pc_basic_device_init() but forgot about the isapc machine. Fix this by
>> wiring in the code section dedicated exclusively to the isapc machine.
>> 
>> Resolves: https://urldefense.proofpoint.com/v2/url?u=https-3A__gitlab.com_qemu-2Dproject_qemu_-2D_issues_2961&d=DwIDAg&c=s883GpUCOChKOHiocYtGcg&r=c23RpsaH4D2MKyD3EPJTDa0BAxz6tV8aUJqVSoytEiY&m=zy9ANkk1dnktvDbix39oQju-ro1U35C5_dEQr6pECga8-YnCMKMlisUou43EzMJ-&s=0BQaI4PyU_roe0kyQTESxn57VNCBnJV3kEV6F-GpL8I&e=
>> Fixes: 56b1f50e3c10 ("hw/i386/pc: Wire RTC ISA IRQs in south bridges")
>> cc: qemu-stable
>> Signed-off-by: Bernhard Beschow <shentey@gmail.com>
>> ---
>>   hw/i386/pc_piix.c | 5 +++++
>>   1 file changed, 5 insertions(+)
>> 
>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
>> index 0dce512f18..4c37f5419a 100644
>> --- a/hw/i386/pc_piix.c
>> +++ b/hw/i386/pc_piix.c
>> @@ -285,6 +285,8 @@ static void pc_init1(MachineState *machine, const char *pci_type)
>>           pcms->idebus[0] = qdev_get_child_bus(dev, "ide.0");
>>           pcms->idebus[1] = qdev_get_child_bus(dev, "ide.1");
>>       } else {
>> +        uint32_t irq;
>> +
>>           isa_bus = isa_bus_new(NULL, system_memory, system_io,
>>                                 &error_abort);
>>           isa_bus_register_input_irqs(isa_bus, x86ms->gsi);
>> @@ -292,6 +294,9 @@ static void pc_init1(MachineState *machine, const char *pci_type)
>>           x86ms->rtc = isa_new(TYPE_MC146818_RTC);
>>           qdev_prop_set_int32(DEVICE(x86ms->rtc), "base_year", 2000);
>>           isa_realize_and_unref(x86ms->rtc, isa_bus, &error_fatal);
>> +        irq = object_property_get_uint(OBJECT(x86ms->rtc), "irq",
>> +                                       &error_fatal);
>> +        isa_connect_gpio_out(x86ms->rtc, 0, irq);
>>             i8257_dma_init(OBJECT(machine), isa_bus, 0);
>>           pcms->hpet_enabled = false;
>
>I see in 56b1f50e3c10 that the commit also introduced the ISA_DEVICE() QOM cast in isa_connect_gpio_out() as a safety check, so it's probably worth adding it here too. Otherwise looks good to me - nice detective work!
>
>Reviewed-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>

Hi Mark,

thanks for the tag!

I deliberately removed the ISA_DEVICE() QOM cast since it is not needed. That said I'd still prefer to have it as you suggest because x86ms->rtc could be a pointer to MC146818RtcState. I'll send a v2 let Michael pick his favorite solution.

Best regards,
Bernhard

>
>
>ATB,
>
>Mark.
>


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-05-15  9:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-12 21:09 [PATCH] hw/i386/pc_piix: Fix RTC ISA IRQ wiring of isapc machine Bernhard Beschow
2025-05-13  9:02 ` Mark Cave-Ayland
2025-05-15  9:38   ` Bernhard Beschow

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).