From: lixianglai <lixianglai@loongson.cn>
To: chen huacai <zltjiangshi@gmail.com>
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: Thu, 19 Mar 2026 10:27:32 +0800 [thread overview]
Message-ID: <a845bc6a-8ba7-cec6-1a38-41732b738b02@loongson.cn> (raw)
In-Reply-To: <CABDp7VqCb6R9h8WYsseaD34fJEyhYNAoCAgC2QHFc7D-dVFzdw@mail.gmail.com>
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.
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.
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
>>
>>
>
next prev parent reply other threads:[~2026-03-19 2:35 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 [this message]
2026-03-21 4:02 ` chen huacai
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=a845bc6a-8ba7-cec6-1a38-41732b738b02@loongson.cn \
--to=lixianglai@loongson.cn \
--cc=gaosong@loongson.cn \
--cc=jiaxun.yang@flygoat.com \
--cc=maobibo@loongson.cn \
--cc=qemu-devel@nongnu.org \
--cc=zltjiangshi@gmail.com \
/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