public inbox for qemu-devel@nongnu.org
 help / color / mirror / Atom feed
From: chen huacai <zltjiangshi@gmail.com>
To: lixianglai <lixianglai@loongson.cn>
Cc: qemu-devel@nongnu.org, Song Gao <gaosong@loongson.cn>,
	 Bibo Mao <maobibo@loongson.cn>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>
Subject: Re: [PATCH V2] hw/loongarch: add rtc acpi table
Date: Sat, 21 Mar 2026 12:02:54 +0800	[thread overview]
Message-ID: <CABDp7Vp=xvz=D9AjQaqZNVteLX=UrbLyaQBBiNjGA2E6qc6WbQ@mail.gmail.com> (raw)
In-Reply-To: <a845bc6a-8ba7-cec6-1a38-41732b738b02@loongson.cn>

On Thu, Mar 19, 2026 at 10:35 AM lixianglai <lixianglai@loongson.cn> wrote:
>
> Hi huacai :
> > Hi, Xianglai,
> >
> > On Thu, Mar 12, 2026 at 10:40 AM Xianglai Li <lixianglai@loongson.cn> wrote:
> >> Add the acpi table to the loongson rtc hardware so that the virtual machine
> >> kernel can use the loongson RTC-related drivers.
> >>
> >> Delete the interrupt information in the rtc fdt table.
> > Why not use virtio-rtc? In this way we don't need to modify the ls7a rtc driver.
> Sorry for the late reply.
> However, I did not find the device simulation model of virtio-rtc under
> the hw/rtc directory.
virtio-rtc was added to the Linux kernel some time ago, it is very
new. But goldfish_rtc is another virtual rtc which is widely used and
has a long time in QEMU, you can consider it.

>
> But, there is a simulation model for the ls7a rtc device, which is
> strongly related to
> the virtualization of our loongarch platform.
>
> So it makes perfect sense to use the ls7a rtc here. Otherwise, no
> platform would need to use the ls7a rtc,
> and changing the simulation model of the rtc device at this stage,
> our bios would also need to be modified accordingly. This would result
> in a very high cost of modification.
I don't strongly object to ls7a rtc, but if you use it please try your
best to make it the same as real hardware. It is unacceptable to
modify the kernel driver to adapt the virtual ls7a rtc.

Huacai

>
> Thanks!
> Xianglai.
>
> > Huacai
> >
> >> Signed-off-by: Xianglai Li <lixianglai@loongson.cn>
> >> ---
> >> Cc: Song Gao <gaosong@loongson.cn>
> >> Cc: Bibo Mao <maobibo@loongson.cn>
> >> Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>
> >>
> >> change:
> >> V1->V2:
> >> 1.Add a comment to explain why the acpi table no longer provides interrupt numbers
> >> 2.Delete the interrupt number from the rtc fdt table
> >>
> >>   hw/loongarch/virt-acpi-build.c | 25 +++++++++++++++++++++++++
> >>   hw/loongarch/virt-fdt-build.c  | 16 ++++++++--------
> >>   2 files changed, 33 insertions(+), 8 deletions(-)
> >>
> >> diff --git a/hw/loongarch/virt-acpi-build.c b/hw/loongarch/virt-acpi-build.c
> >> index 3e34bedcd6..42820001d7 100644
> >> --- a/hw/loongarch/virt-acpi-build.c
> >> +++ b/hw/loongarch/virt-acpi-build.c
> >> @@ -460,6 +460,30 @@ static void acpi_dsdt_add_tpm(Aml *scope, LoongArchVirtMachineState *vms)
> >>   }
> >>   #endif
> >>
> >> +static void acpi_dsdt_add_rtc(Aml *scope)
> >> +{
> >> +    Aml *dev = aml_device("RTC");
> >> +
> >> +    aml_append(dev, aml_name_decl("_HID", aml_string("LOON0001")));
> >> +    aml_append(dev, aml_name_decl("_UID", aml_int(0)));
> >> +
> >> +    Aml *crs = aml_resource_template();
> >> +    aml_append(crs,
> >> +        aml_qword_memory(AML_POS_DECODE, AML_MIN_FIXED, AML_MAX_FIXED,
> >> +                         AML_NON_CACHEABLE, AML_READ_WRITE,
> >> +                         0, VIRT_RTC_REG_BASE,
> >> +                         VIRT_RTC_REG_BASE + VIRT_RTC_LEN - 1,
> >> +                         0, VIRT_RTC_LEN));
> >> +    /*
> >> +     * The virtual machine model does not support suspend and wake-up,
> >> +     * and rtc is no longer the wake-up source. Therefore, the current
> >> +     * rtc table no longer provides the rtc alarm interrupt number to
> >> +     * avoid the software initializing alarm.
> >> +     */
> >> +    aml_append(dev, aml_name_decl("_CRS", crs));
> >> +    aml_append(scope, dev);
> >> +}
> >> +
> >>   /* build DSDT */
> >>   static void
> >>   build_dsdt(GArray *table_data, BIOSLinker *linker, MachineState *machine)
> >> @@ -475,6 +499,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, MachineState *machine)
> >>       for (i = 0; i < VIRT_UART_COUNT; i++) {
> >>           build_uart_device_aml(dsdt, i);
> >>       }
> >> +    acpi_dsdt_add_rtc(dsdt);
> >>       build_pci_device_aml(dsdt, lvms);
> >>       build_la_ged_aml(dsdt, machine);
> >>       build_flash_aml(dsdt, lvms);
> >> diff --git a/hw/loongarch/virt-fdt-build.c b/hw/loongarch/virt-fdt-build.c
> >> index 6c06b36fca..42f014a7bd 100644
> >> --- a/hw/loongarch/virt-fdt-build.c
> >> +++ b/hw/loongarch/virt-fdt-build.c
> >> @@ -458,8 +458,7 @@ static void fdt_add_uart_node(LoongArchVirtMachineState *lvms,
> >>       g_free(nodename);
> >>   }
> >>
> >> -static void fdt_add_rtc_node(LoongArchVirtMachineState *lvms,
> >> -                             uint32_t *pch_pic_phandle)
> >> +static void fdt_add_rtc_node(LoongArchVirtMachineState *lvms)
> >>   {
> >>       char *nodename;
> >>       hwaddr base = VIRT_RTC_REG_BASE;
> >> @@ -470,12 +469,13 @@ static void fdt_add_rtc_node(LoongArchVirtMachineState *lvms,
> >>       qemu_fdt_add_subnode(ms->fdt, nodename);
> >>       qemu_fdt_setprop_string(ms->fdt, nodename, "compatible",
> >>                               "loongson,ls7a-rtc");
> >> +    /*
> >> +     * The virtual machine model does not support suspend and wake-up,
> >> +     * and rtc is no longer the wake-up source. Therefore, the current
> >> +     * rtc table no longer provides the rtc alarm interrupt number to
> >> +     * avoid the software initializing alarm.
> >> +     */
> >>       qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", 2, base, 2, size);
> >> -    qemu_fdt_setprop_cells(ms->fdt, nodename, "interrupts",
> >> -                           VIRT_RTC_IRQ - VIRT_GSI_BASE ,
> >> -                           FDT_IRQ_TYPE_LEVEL_HIGH);
> >> -    qemu_fdt_setprop_cell(ms->fdt, nodename, "interrupt-parent",
> >> -                          *pch_pic_phandle);
> >>       g_free(nodename);
> >>   }
> >>
> >> @@ -550,7 +550,7 @@ void virt_fdt_setup(LoongArchVirtMachineState *lvms)
> >>           fdt_add_uart_node(lvms, &pch_pic_phandle, base, irq, i == 0);
> >>       }
> >>
> >> -    fdt_add_rtc_node(lvms, &pch_pic_phandle);
> >> +    fdt_add_rtc_node(lvms);
> >>       fdt_add_ged_reset(lvms);
> >>       platform_bus_add_all_fdt_nodes(machine->fdt, "/platic",
> >>                                      VIRT_PLATFORM_BUS_BASEADDRESS,
> >> --
> >> 2.39.1
> >>
> >>
> >
>


-- 
Huacai Chen


  reply	other threads:[~2026-03-21  4:03 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-12  2:13 [PATCH V2] hw/loongarch: add rtc acpi table Xianglai Li
2026-03-12  3:55 ` gaosong
2026-03-12  8:19   ` lixianglai
2026-03-17  1:32 ` chen huacai
2026-03-19  2:27   ` lixianglai
2026-03-21  4:02     ` chen huacai [this message]
2026-03-26  8:41       ` lixianglai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CABDp7Vp=xvz=D9AjQaqZNVteLX=UrbLyaQBBiNjGA2E6qc6WbQ@mail.gmail.com' \
    --to=zltjiangshi@gmail.com \
    --cc=gaosong@loongson.cn \
    --cc=jiaxun.yang@flygoat.com \
    --cc=lixianglai@loongson.cn \
    --cc=maobibo@loongson.cn \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox