qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table
@ 2025-05-28 10:53 Li Chen
  2025-05-28 10:53 ` [PATCH REPOST v4 1/4] " Li Chen
                   ` (5 more replies)
  0 siblings, 6 replies; 18+ messages in thread
From: Li Chen @ 2025-05-28 10:53 UTC (permalink / raw)
  To: Peter Maydell, Shannon Zhao, Michael S. Tsirkin, Igor Mammedov,
	Ani Sinha, Eduardo Habkost, Marcel Apfelbaum,
	Philippe Mathieu-Daudé, Yanan Wang, Zhao Liu, Song Gao,
	Jiaxun Yang, Sunil V L, Palmer Dabbelt, Alistair Francis,
	Weiwei Li, qemu-arm, qemu-devel, qemu-riscv
  Cc: Li Chen

From: Li Chen <chenl311@chinatelecom.cn>

(REPOST because the previous post failed to send to qemu-devel/qemu-riscv/qemu-arm,
 see https://lore.kernel.org/qemu-devel/1971648603b.dce1f5d22901195.6702025346547333607@linux.beauty/T/#u)

This series introduces a new machine option, spcr=on|off, allowing users
to disable the ACPI SPCR (Serial Port Console Redirection) table.
By default, SPCR is enabled. Disabling it can help ensure that the guest's
console behavior is determined solely by kernel command-line parameters
on arch like arm64, avoiding unintended serial console configurations imposed
by firmware.

Also add tests on AArch64 and RISC-V virt machines using TCG and UEFI boot.

Changes since v3:
- Add Reviewed-by from Sunil V L <sunilvl@ventanamicro.com> for patch 1, 3, and 4.
- rename enable_spcr to acpi_spcr_enabled as suggested by Philippe Mathieu-Daudé.
Changes since v2:
- Omit UART device from DSDT and SPCR construction if no serial device is present,
as suggested by Philippe Mathieu-Daudé.
- Add Reviewed-by from Gavin Shan <gshan@redhat.com> for the first patch and fix style issue.

Changes since v1:
- Add bios-tables-test for RISC-V and ARM as suggested by
- Add Acked-by from Michael S. Tsirkin for the first patch
- Add Reviewed-by from Bibo Mao for the first patch

Li Chen (4):
  acpi: Add machine option to disable SPCR table
  tests/qtest/bios-tables-test: Add test for disabling SPCR on AArch64
  tests/qtest/bios-tables-test: Add test for disabling SPCR on RISC-V
  acpi/virt: suppress UART device & SPCR when guest has no serial
    hardware

 hw/arm/virt-acpi-build.c       | 18 ++++++++-----
 hw/core/machine.c              | 22 ++++++++++++++++
 hw/loongarch/virt-acpi-build.c |  4 ++-
 hw/riscv/virt-acpi-build.c     | 10 ++++++--
 include/hw/boards.h            |  1 +
 include/system/system.h        |  2 ++
 qemu-options.hx                |  5 ++++
 system/vl.c                    |  5 ++++
 tests/qtest/bios-tables-test.c | 47 ++++++++++++++++++++++++++++++++--
 9 files changed, 103 insertions(+), 11 deletions(-)

-- 
2.49.0



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

* [PATCH REPOST v4 1/4] acpi: Add machine option to disable SPCR table
  2025-05-28 10:53 [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table Li Chen
@ 2025-05-28 10:53 ` Li Chen
  2025-05-28 10:53 ` [PATCH REPOST v4 2/4] tests/qtest/bios-tables-test: Add test for disabling SPCR on AArch64 Li Chen
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 18+ messages in thread
From: Li Chen @ 2025-05-28 10:53 UTC (permalink / raw)
  To: Peter Maydell, Shannon Zhao, Michael S. Tsirkin, Igor Mammedov,
	Ani Sinha, Eduardo Habkost, Marcel Apfelbaum,
	Philippe Mathieu-Daudé, Yanan Wang, Zhao Liu, Song Gao,
	Jiaxun Yang, Sunil V L, Palmer Dabbelt, Alistair Francis,
	Weiwei Li, qemu-arm, qemu-devel, qemu-riscv
  Cc: Li Chen, Bibo Mao, Gavin Shan

From: Li Chen <chenl311@chinatelecom.cn>

The ACPI SPCR (Serial Port Console Redirection) table allows firmware
to specify a preferred serial console device to the operating system.
On ARM64 systems, Linux by default respects this table: even if the
kernel command line does not include a hardware serial console (e.g.,
"console=ttyAMA0"), the kernel still register the serial device
referenced by SPCR as a printk console.

While this behavior is standard-compliant, it can lead to situations
where guest console behavior is influenced by platform firmware rather
than user-specified configuration. To make guest console behavior more
predictable and under user control, this patch introduces a machine
option to explicitly disable SPCR table exposure:

    -machine spcr=off

By default, the option is enabled (spcr=on), preserving existing
behavior. When disabled, QEMU will omit the SPCR table from the guest's
ACPI namespace, ensuring that only consoles explicitly declared in the
kernel command line are registered.

Signed-off-by: Li Chen <chenl311@chinatelecom.cn>
Reviewed-by: Bibo Mao <maobibo@loongson.cn>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>
---

Notes:
    Changes since v3: 1. Add Reviewed-by from Sunil V L <sunilvl@ventanamicro.com>
                      2. rename enable_spcr to acpi_spcr_enabled as
                         suggested by Philippe Mathieu-Daudé
    Changes since V2: Add Reviewed-by from Gavin Shan <gshan@redhat.com>
                      for the first patch and fix style issue.
    Changes since V1: add Reviewed-by and Acked-by

 hw/arm/virt-acpi-build.c       |  5 ++++-
 hw/core/machine.c              | 22 ++++++++++++++++++++++
 hw/loongarch/virt-acpi-build.c |  4 +++-
 hw/riscv/virt-acpi-build.c     |  5 ++++-
 include/hw/boards.h            |  1 +
 qemu-options.hx                |  5 +++++
 6 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
index 7e8e0f0298..d77d16cbd3 100644
--- a/hw/arm/virt-acpi-build.c
+++ b/hw/arm/virt-acpi-build.c
@@ -936,7 +936,10 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
     }
 
     acpi_add_table(table_offsets, tables_blob);
-    spcr_setup(tables_blob, tables->linker, vms);
+
+    if (ms->acpi_spcr_enabled) {
+        spcr_setup(tables_blob, tables->linker, vms);
+    }
 
     acpi_add_table(table_offsets, tables_blob);
     build_dbg2(tables_blob, tables->linker, vms);
diff --git a/hw/core/machine.c b/hw/core/machine.c
index c3f3a5020d..4438eeff54 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -595,6 +595,20 @@ static void machine_set_nvdimm(Object *obj, bool value, Error **errp)
     ms->nvdimms_state->is_enabled = value;
 }
 
+static bool machine_get_spcr(Object *obj, Error **errp)
+{
+    MachineState *ms = MACHINE(obj);
+
+    return ms->acpi_spcr_enabled;
+}
+
+static void machine_set_spcr(Object *obj, bool value, Error **errp)
+{
+    MachineState *ms = MACHINE(obj);
+
+    ms->acpi_spcr_enabled = value;
+}
+
 static bool machine_get_hmat(Object *obj, Error **errp)
 {
     MachineState *ms = MACHINE(obj);
@@ -1299,6 +1313,14 @@ static void machine_initfn(Object *obj)
                                         "Table (HMAT)");
     }
 
+    /* SPCR */
+    ms->acpi_spcr_enabled = true;
+    object_property_add_bool(obj, "spcr", machine_get_spcr, machine_set_spcr);
+    object_property_set_description(obj, "spcr",
+                                   "Set on/off to enable/disable "
+                                   "ACPI Serial Port Console Redirection "
+                                   "Table (spcr)");
+
     /* default to mc->default_cpus */
     ms->smp.cpus = mc->default_cpus;
     ms->smp.max_cpus = mc->default_cpus;
diff --git a/hw/loongarch/virt-acpi-build.c b/hw/loongarch/virt-acpi-build.c
index 073b6de75c..15a56280a0 100644
--- a/hw/loongarch/virt-acpi-build.c
+++ b/hw/loongarch/virt-acpi-build.c
@@ -557,7 +557,9 @@ static void acpi_build(AcpiBuildTables *tables, MachineState *machine)
     acpi_add_table(table_offsets, tables_blob);
     build_srat(tables_blob, tables->linker, machine);
     acpi_add_table(table_offsets, tables_blob);
-    spcr_setup(tables_blob, tables->linker, machine);
+
+    if (machine->acpi_spcr_enabled)
+        spcr_setup(tables_blob, tables->linker, machine);
 
     if (machine->numa_state->num_nodes) {
         if (machine->numa_state->have_numa_distance) {
diff --git a/hw/riscv/virt-acpi-build.c b/hw/riscv/virt-acpi-build.c
index 8b5683dbde..ee1416d264 100644
--- a/hw/riscv/virt-acpi-build.c
+++ b/hw/riscv/virt-acpi-build.c
@@ -894,7 +894,10 @@ static void virt_acpi_build(RISCVVirtState *s, AcpiBuildTables *tables)
     }
 
     acpi_add_table(table_offsets, tables_blob);
-    spcr_setup(tables_blob, tables->linker, s);
+
+    if (ms->acpi_spcr_enabled) {
+        spcr_setup(tables_blob, tables->linker, s);
+    }
 
     acpi_add_table(table_offsets, tables_blob);
     {
diff --git a/include/hw/boards.h b/include/hw/boards.h
index a7b1fcffae..e29fadd300 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -444,6 +444,7 @@ struct MachineState {
     SmpCache smp_cache;
     struct NVDIMMState *nvdimms_state;
     struct NumaState *numa_state;
+    bool acpi_spcr_enabled;
 };
 
 /*
diff --git a/qemu-options.hx b/qemu-options.hx
index 7eb8e02b4b..eac8730692 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -38,6 +38,7 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
     "                nvdimm=on|off controls NVDIMM support (default=off)\n"
     "                memory-encryption=@var{} memory encryption object to use (default=none)\n"
     "                hmat=on|off controls ACPI HMAT support (default=off)\n"
+    "                spcr=on|off controls ACPI SPCR support (default=on)\n"
 #ifdef CONFIG_POSIX
     "                aux-ram-share=on|off allocate auxiliary guest RAM as shared (default: off)\n"
 #endif
@@ -105,6 +106,10 @@ SRST
         Enables or disables ACPI Heterogeneous Memory Attribute Table
         (HMAT) support. The default is off.
 
+    ``spcr=on|off``
+        Enables or disables ACPI Serial Port Console Redirection Table
+        (SPCR) support. The default is on.
+
     ``aux-ram-share=on|off``
         Allocate auxiliary guest RAM as an anonymous file that is
         shareable with an external process.  This option applies to
-- 
2.49.0



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

* [PATCH REPOST v4 2/4] tests/qtest/bios-tables-test: Add test for disabling SPCR on AArch64
  2025-05-28 10:53 [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table Li Chen
  2025-05-28 10:53 ` [PATCH REPOST v4 1/4] " Li Chen
@ 2025-05-28 10:53 ` Li Chen
  2025-05-28 10:53 ` [PATCH REPOST v4 3/4] tests/qtest/bios-tables-test: Add test for disabling SPCR on RISC-V Li Chen
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 18+ messages in thread
From: Li Chen @ 2025-05-28 10:53 UTC (permalink / raw)
  To: Peter Maydell, Shannon Zhao, Michael S. Tsirkin, Igor Mammedov,
	Ani Sinha, Eduardo Habkost, Marcel Apfelbaum,
	Philippe Mathieu-Daudé, Yanan Wang, Zhao Liu, Song Gao,
	Jiaxun Yang, Sunil V L, Palmer Dabbelt, Alistair Francis,
	Weiwei Li, qemu-arm, qemu-devel, qemu-riscv
  Cc: Li Chen

From: Li Chen <chenl311@chinatelecom.cn>

Add ACPI SPCR table test case for ARM when SPCR was off.

Signed-off-by: Li Chen <chenl311@chinatelecom.cn>
---
 tests/qtest/bios-tables-test.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 0a333ec435..d2a1aa7fb3 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1789,6 +1789,24 @@ static void test_acpi_aarch64_virt_tcg_pxb(void)
     free_test_data(&data);
 }
 
+static void test_acpi_aarch64_virt_tcg_acpi_spcr(void)
+{
+    test_data data = {
+        .machine = "virt",
+        .arch = "aarch64",
+        .tcg_only = true,
+        .uefi_fl1 = "pc-bios/edk2-aarch64-code.fd",
+        .uefi_fl2 = "pc-bios/edk2-arm-vars.fd",
+        .cd = "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2",
+        .ram_start = 0x40000000ULL,
+        .scan_len = 128ULL * 1024 * 1024,
+        .variant = ".acpispcr",
+    };
+
+    test_acpi_one("-cpu cortex-a57 "
+                  " -machine spcr=off", &data);
+    free_test_data(&data);
+}
 static void test_acpi_tcg_acpi_hmat(const char *machine, const char *arch)
 {
     test_data data = {};
@@ -2583,6 +2601,8 @@ int main(int argc, char *argv[])
             qtest_add_func("acpi/virt/pxb", test_acpi_aarch64_virt_tcg_pxb);
             qtest_add_func("acpi/virt/oem-fields",
                            test_acpi_aarch64_virt_oem_fields);
+            qtest_add_func("acpi/virt/acpispcr",
+                           test_acpi_aarch64_virt_tcg_acpi_spcr);
             if (qtest_has_device("virtio-iommu-pci")) {
                 qtest_add_func("acpi/virt/viot", test_acpi_aarch64_virt_viot);
             }
-- 
2.49.0



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

* [PATCH REPOST v4 3/4] tests/qtest/bios-tables-test: Add test for disabling SPCR on RISC-V
  2025-05-28 10:53 [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table Li Chen
  2025-05-28 10:53 ` [PATCH REPOST v4 1/4] " Li Chen
  2025-05-28 10:53 ` [PATCH REPOST v4 2/4] tests/qtest/bios-tables-test: Add test for disabling SPCR on AArch64 Li Chen
@ 2025-05-28 10:53 ` Li Chen
  2025-05-28 10:53 ` [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware Li Chen
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 18+ messages in thread
From: Li Chen @ 2025-05-28 10:53 UTC (permalink / raw)
  To: Peter Maydell, Shannon Zhao, Michael S. Tsirkin, Igor Mammedov,
	Ani Sinha, Eduardo Habkost, Marcel Apfelbaum,
	Philippe Mathieu-Daudé, Yanan Wang, Zhao Liu, Song Gao,
	Jiaxun Yang, Sunil V L, Palmer Dabbelt, Alistair Francis,
	Weiwei Li, qemu-arm, qemu-devel, qemu-riscv
  Cc: Li Chen

From: Li Chen <chenl311@chinatelecom.cn>

Add ACPI SPCR table test case for RISC-V when SPCR was off.

Signed-off-by: Li Chen <chenl311@chinatelecom.cn>
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>
---

Notes:
    Changes since v3: Add Reviewed-by from Sunil V L <sunilvl@ventanamicro.com>

 tests/qtest/bios-tables-test.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index d2a1aa7fb3..44de152a36 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1807,6 +1807,26 @@ static void test_acpi_aarch64_virt_tcg_acpi_spcr(void)
                   " -machine spcr=off", &data);
     free_test_data(&data);
 }
+
+static void test_acpi_riscv_virt_tcg_acpi_spcr(void)
+{
+    test_data data = {
+        .machine = "virt",
+        .arch = "riscv64",
+        .tcg_only = true,
+        .uefi_fl1 = "pc-bios/edk2-riscv-code.fd",
+        .uefi_fl2 = "pc-bios/edk2-riscv-vars.fd",
+        .cd = "tests/data/uefi-boot-images/bios-tables-test.riscv64.iso.qcow2",
+        .ram_start = 0x80000000ULL,
+        .scan_len = 128ULL * 1024 * 1024,
+        .variant = ".acpispcr",
+    };
+
+    test_acpi_one("-cpu rva22s64 "
+                  "-machine spcr=off", &data);
+    free_test_data(&data);
+}
+
 static void test_acpi_tcg_acpi_hmat(const char *machine, const char *arch)
 {
     test_data data = {};
@@ -2612,6 +2632,8 @@ int main(int argc, char *argv[])
             qtest_add_func("acpi/virt", test_acpi_riscv64_virt_tcg);
             qtest_add_func("acpi/virt/numamem",
                            test_acpi_riscv64_virt_tcg_numamem);
+            qtest_add_func("acpi/virt/acpispcr",
+                           test_acpi_riscv_virt_tcg_acpi_spcr);
         }
     }
     ret = g_test_run();
-- 
2.49.0



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

* [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware
  2025-05-28 10:53 [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table Li Chen
                   ` (2 preceding siblings ...)
  2025-05-28 10:53 ` [PATCH REPOST v4 3/4] tests/qtest/bios-tables-test: Add test for disabling SPCR on RISC-V Li Chen
@ 2025-05-28 10:53 ` Li Chen
  2025-07-14 18:45   ` Michael S. Tsirkin
  2025-05-30 12:10 ` [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table Michael S. Tsirkin
  2025-06-19 11:47 ` Li Chen
  5 siblings, 1 reply; 18+ messages in thread
From: Li Chen @ 2025-05-28 10:53 UTC (permalink / raw)
  To: Peter Maydell, Shannon Zhao, Michael S. Tsirkin, Igor Mammedov,
	Ani Sinha, Eduardo Habkost, Marcel Apfelbaum,
	Philippe Mathieu-Daudé, Yanan Wang, Zhao Liu, Song Gao,
	Jiaxun Yang, Sunil V L, Palmer Dabbelt, Alistair Francis,
	Weiwei Li, qemu-arm, qemu-devel, qemu-riscv
  Cc: Li Chen

From: Li Chen <chenl311@chinatelecom.cn>

The virt machines always instantiate a PL011/16550 at UART0 and
describe it in ACPI (DSDT device node plus optional SPCR table).  When
the command line contains “-serial none” there is no backend attached to
that UART, yet the guest still discovers it via ACPI and may try to use
it as a console, causing unexpected results.

And also explicitly add "-serial stdio" in bios-tables-test.c to allow
serial device creation, otherwise DSDT assert would get failure because
"-nodefaults" will not create uart device by default:

```
stderr:
acpi-test: Warning! DSDT binary file mismatch. Actual [aml:/tmp/aml-BMOL72], Expected [aml:tests/data/acpi/aarch64/virt/DSDT].
See source file tests/qtest/bios-tables-test.c for instructions on how to update expected files.
acpi-test: Warning! DSDT mismatch. Actual [asl:/tmp/asl-RNOL72.dsl, aml:/tmp/aml-BMOL72], Expected [asl:/tmp/asl-ZVQL72.dsl, aml:tests/data/acpi/aarch64/virt/DS
DT].
```

Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Li Chen <chenl311@chinatelecom.cn>
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>
---

Notes:
    Changes since v3: 1. Add Reviewed-by from Sunil V L <sunilvl@ventanamicro.com>
                      2. Explicitly add "-serial stdio" to pass DSDT assert

 hw/arm/virt-acpi-build.c       | 15 +++++++++------
 hw/riscv/virt-acpi-build.c     |  7 +++++--
 include/system/system.h        |  2 ++
 system/vl.c                    |  5 +++++
 tests/qtest/bios-tables-test.c |  5 +++--
 5 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
index d77d16cbd3..c26aedb1b1 100644
--- a/hw/arm/virt-acpi-build.c
+++ b/hw/arm/virt-acpi-build.c
@@ -59,6 +59,7 @@
 #include "hw/acpi/viot.h"
 #include "hw/virtio/virtio-acpi.h"
 #include "target/arm/multiprocessing.h"
+#include "system/system.h"
 
 #define ARM_SPI_BASE 32
 
@@ -821,11 +822,13 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
      */
     scope = aml_scope("\\_SB");
     acpi_dsdt_add_cpus(scope, vms);
-    acpi_dsdt_add_uart(scope, &memmap[VIRT_UART0],
-                       (irqmap[VIRT_UART0] + ARM_SPI_BASE), 0);
-    if (vms->second_ns_uart_present) {
-        acpi_dsdt_add_uart(scope, &memmap[VIRT_UART1],
-                           (irqmap[VIRT_UART1] + ARM_SPI_BASE), 1);
+    if (serial_exist()) {
+        acpi_dsdt_add_uart(scope, &memmap[VIRT_UART0],
+                           (irqmap[VIRT_UART0] + ARM_SPI_BASE), 0);
+        if (vms->second_ns_uart_present) {
+            acpi_dsdt_add_uart(scope, &memmap[VIRT_UART1],
+                               (irqmap[VIRT_UART1] + ARM_SPI_BASE), 1);
+        }
     }
     if (vmc->acpi_expose_flash) {
         acpi_dsdt_add_flash(scope, &memmap[VIRT_FLASH]);
@@ -937,7 +940,7 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
 
     acpi_add_table(table_offsets, tables_blob);
 
-    if (ms->acpi_spcr_enabled) {
+    if (ms->acpi_spcr_enabled && serial_exist()) {
         spcr_setup(tables_blob, tables->linker, vms);
     }
 
diff --git a/hw/riscv/virt-acpi-build.c b/hw/riscv/virt-acpi-build.c
index ee1416d264..80bf3c3cec 100644
--- a/hw/riscv/virt-acpi-build.c
+++ b/hw/riscv/virt-acpi-build.c
@@ -39,6 +39,7 @@
 #include "qapi/error.h"
 #include "qemu/error-report.h"
 #include "system/reset.h"
+#include "system/system.h"
 
 #define ACPI_BUILD_TABLE_SIZE             0x20000
 #define ACPI_BUILD_INTC_ID(socket, index) ((socket << 24) | (index))
@@ -474,7 +475,9 @@ static void build_dsdt(GArray *table_data,
                                  memmap[VIRT_APLIC_S].size, "RSCV0002");
     }
 
-    acpi_dsdt_add_uart(scope, &memmap[VIRT_UART0], UART0_IRQ);
+    if (serial_exist())
+        acpi_dsdt_add_uart(scope, &memmap[VIRT_UART0], UART0_IRQ);
+
     if (virt_is_iommu_sys_enabled(s)) {
         acpi_dsdt_add_iommu_sys(scope, &memmap[VIRT_IOMMU_SYS], IOMMU_SYS_IRQ);
     }
@@ -895,7 +898,7 @@ static void virt_acpi_build(RISCVVirtState *s, AcpiBuildTables *tables)
 
     acpi_add_table(table_offsets, tables_blob);
 
-    if (ms->acpi_spcr_enabled) {
+    if (ms->acpi_spcr_enabled && serial_exist()) {
         spcr_setup(tables_blob, tables->linker, s);
     }
 
diff --git a/include/system/system.h b/include/system/system.h
index a7effe7dfd..ca1af38432 100644
--- a/include/system/system.h
+++ b/include/system/system.h
@@ -75,6 +75,8 @@ extern unsigned int nb_prom_envs;
 /* Return the Chardev for serial port i, or NULL if none */
 Chardev *serial_hd(int i);
 
+bool serial_exist(void);
+
 /* parallel ports */
 
 #define MAX_PARALLEL_PORTS 3
diff --git a/system/vl.c b/system/vl.c
index fd402b8ff8..e340ee3a95 100644
--- a/system/vl.c
+++ b/system/vl.c
@@ -1485,6 +1485,11 @@ Chardev *serial_hd(int i)
     return NULL;
 }
 
+bool serial_exist(void)
+{
+    return serial_hd(0) ? true : false;
+}
+
 static bool parallel_parse(const char *devname, Error **errp)
 {
     static int index = 0;
diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 44de152a36..452566fa86 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -824,10 +824,11 @@ static char *test_acpi_create_args(test_data *data, const char *params)
         /*
          * TODO: convert '-drive if=pflash' to new syntax (see e33763be7cd3)
          * when arm/virt boad starts to support it.
+         * NOTE: Explicitly add "-serial stdio" to enable uart in DSDT.
          */
         if (data->cd) {
             args = g_strdup_printf("-machine %s%s %s -accel tcg "
-                "-nodefaults -nographic "
+                "-nodefaults -serial stdio -nographic "
                 "-drive if=pflash,format=raw,file=%s,readonly=on "
                 "-drive if=pflash,format=raw,file=%s,snapshot=on -cdrom %s %s",
                 data->machine, data->machine_param ?: "",
@@ -835,7 +836,7 @@ static char *test_acpi_create_args(test_data *data, const char *params)
                 data->uefi_fl1, data->uefi_fl2, data->cd, params ? params : "");
         } else {
             args = g_strdup_printf("-machine %s%s %s -accel tcg "
-                "-nodefaults -nographic "
+                "-nodefaults -serial stdio -nographic "
                 "-drive if=pflash,format=raw,file=%s,readonly=on "
                 "-drive if=pflash,format=raw,file=%s,snapshot=on %s",
                 data->machine, data->machine_param ?: "",
-- 
2.49.0



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

* Re: [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table
  2025-05-28 10:53 [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table Li Chen
                   ` (3 preceding siblings ...)
  2025-05-28 10:53 ` [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware Li Chen
@ 2025-05-30 12:10 ` Michael S. Tsirkin
  2025-06-11  7:43   ` Li Chen
  2025-06-19 11:47 ` Li Chen
  5 siblings, 1 reply; 18+ messages in thread
From: Michael S. Tsirkin @ 2025-05-30 12:10 UTC (permalink / raw)
  To: Li Chen
  Cc: Peter Maydell, Shannon Zhao, Igor Mammedov, Ani Sinha,
	Eduardo Habkost, Marcel Apfelbaum, Philippe Mathieu-Daudé,
	Yanan Wang, Zhao Liu, Song Gao, Jiaxun Yang, Sunil V L,
	Palmer Dabbelt, Alistair Francis, Weiwei Li, qemu-arm, qemu-devel,
	qemu-riscv, Li Chen

On Wed, May 28, 2025 at 06:53:34PM +0800, Li Chen wrote:
> From: Li Chen <chenl311@chinatelecom.cn>
> 
> (REPOST because the previous post failed to send to qemu-devel/qemu-riscv/qemu-arm,
>  see https://lore.kernel.org/qemu-devel/1971648603b.dce1f5d22901195.6702025346547333607@linux.beauty/T/#u)
> 
> This series introduces a new machine option, spcr=on|off, allowing users
> to disable the ACPI SPCR (Serial Port Console Redirection) table.
> By default, SPCR is enabled. Disabling it can help ensure that the guest's
> console behavior is determined solely by kernel command-line parameters
> on arch like arm64, avoiding unintended serial console configurations imposed
> by firmware.
> 
> Also add tests on AArch64 and RISC-V virt machines using TCG and UEFI boot.
> 
> Changes since v3:
> - Add Reviewed-by from Sunil V L <sunilvl@ventanamicro.com> for patch 1, 3, and 4.
> - rename enable_spcr to acpi_spcr_enabled as suggested by Philippe Mathieu-Daudé.
> Changes since v2:
> - Omit UART device from DSDT and SPCR construction if no serial device is present,
> as suggested by Philippe Mathieu-Daudé.
> - Add Reviewed-by from Gavin Shan <gshan@redhat.com> for the first patch and fix style issue.
> 
> Changes since v1:
> - Add bios-tables-test for RISC-V and ARM as suggested by
> - Add Acked-by from Michael S. Tsirkin for the first patch
> - Add Reviewed-by from Bibo Mao for the first patch
> 
> Li Chen (4):
>   acpi: Add machine option to disable SPCR table
>   tests/qtest/bios-tables-test: Add test for disabling SPCR on AArch64
>   tests/qtest/bios-tables-test: Add test for disabling SPCR on RISC-V
>   acpi/virt: suppress UART device & SPCR when guest has no serial
>     hardware

Who's merging this?


>  hw/arm/virt-acpi-build.c       | 18 ++++++++-----
>  hw/core/machine.c              | 22 ++++++++++++++++
>  hw/loongarch/virt-acpi-build.c |  4 ++-
>  hw/riscv/virt-acpi-build.c     | 10 ++++++--
>  include/hw/boards.h            |  1 +
>  include/system/system.h        |  2 ++
>  qemu-options.hx                |  5 ++++
>  system/vl.c                    |  5 ++++
>  tests/qtest/bios-tables-test.c | 47 ++++++++++++++++++++++++++++++++--
>  9 files changed, 103 insertions(+), 11 deletions(-)
> 
> -- 
> 2.49.0



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

* Re: [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table
  2025-05-30 12:10 ` [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table Michael S. Tsirkin
@ 2025-06-11  7:43   ` Li Chen
  0 siblings, 0 replies; 18+ messages in thread
From: Li Chen @ 2025-06-11  7:43 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Peter Maydell, Shannon Zhao, Igor Mammedov, Ani Sinha,
	Eduardo Habkost, Marcel Apfelbaum,
	"Philippe Mathieu-Daudé", Yanan Wang, Zhao Liu,
	Song Gao, Jiaxun Yang, Sunil V L, Palmer Dabbelt,
	Alistair Francis, Weiwei Li, qemu-arm, qemu-devel, qemu-riscv,
	Li Chen

Hi Michael,

 ---- On Fri, 30 May 2025 20:10:52 +0800  Michael S. Tsirkin <mst@redhat.com> wrote --- 
 > On Wed, May 28, 2025 at 06:53:34PM +0800, Li Chen wrote:
 > > From: Li Chen <chenl311@chinatelecom.cn>
 > > 
 > > (REPOST because the previous post failed to send to qemu-devel/qemu-riscv/qemu-arm,
 > >  see https://lore.kernel.org/qemu-devel/1971648603b.dce1f5d22901195.6702025346547333607@linux.beauty/T/#u)
 > > 
 > > This series introduces a new machine option, spcr=on|off, allowing users
 > > to disable the ACPI SPCR (Serial Port Console Redirection) table.
 > > By default, SPCR is enabled. Disabling it can help ensure that the guest's
 > > console behavior is determined solely by kernel command-line parameters
 > > on arch like arm64, avoiding unintended serial console configurations imposed
 > > by firmware.
 > > 
 > > Also add tests on AArch64 and RISC-V virt machines using TCG and UEFI boot.
 > > 
 > > Changes since v3:
 > > - Add Reviewed-by from Sunil V L <sunilvl@ventanamicro.com> for patch 1, 3, and 4.
 > > - rename enable_spcr to acpi_spcr_enabled as suggested by Philippe Mathieu-Daudé.
 > > Changes since v2:
 > > - Omit UART device from DSDT and SPCR construction if no serial device is present,
 > > as suggested by Philippe Mathieu-Daudé.
 > > - Add Reviewed-by from Gavin Shan <gshan@redhat.com> for the first patch and fix style issue.
 > > 
 > > Changes since v1:
 > > - Add bios-tables-test for RISC-V and ARM as suggested by
 > > - Add Acked-by from Michael S. Tsirkin for the first patch
 > > - Add Reviewed-by from Bibo Mao for the first patch
 > > 
 > > Li Chen (4):
 > >   acpi: Add machine option to disable SPCR table
 > >   tests/qtest/bios-tables-test: Add test for disabling SPCR on AArch64
 > >   tests/qtest/bios-tables-test: Add test for disabling SPCR on RISC-V
 > >   acpi/virt: suppress UART device & SPCR when guest has no serial
 > >     hardware
 > 
 > Who's merging this?
 
Sorry for the late reply.

If I understand correctly, you are asking who can merge this series?

Per get_maintainer result:

firstlove@archlinux ~/p/qemu (spcr)> ./scripts/get_maintainer.pl *.patch
./scripts/get_maintainer.pl: file 'v4-0000-cover-letter.patch' doesn't appear to be a patch.  Add -f to options?
Peter Maydell <peter.maydell@linaro.org> (maintainer:Virt)
Shannon Zhao <shannon.zhaosl@gmail.com> (maintainer:ARM ACPI Subsystem)

I think Peter Maydell and Shannon Zhao would be the appropriate maintainers to merge it.

If this is not what you meant, please correct me.

Regards,
Li


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

* Re: [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table
  2025-05-28 10:53 [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table Li Chen
                   ` (4 preceding siblings ...)
  2025-05-30 12:10 ` [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table Michael S. Tsirkin
@ 2025-06-19 11:47 ` Li Chen
  5 siblings, 0 replies; 18+ messages in thread
From: Li Chen @ 2025-06-19 11:47 UTC (permalink / raw)
  To: Peter Maydell, Shannon Zhao, Michael S. Tsirkin, Igor Mammedov,
	Ani Sinha, Eduardo Habkost, Marcel Apfelbaum,
	"Philippe Mathieu-Daudé", Yanan Wang, Zhao Liu,
	Song Gao, Jiaxun Yang, Sunil V L, Palmer Dabbelt,
	Alistair Francis, Weiwei Li, qemu-arm, qemu-devel, qemu-riscv
  Cc: Li Chen

Gentle ping incase of forgotten.

 ---- On Wed, 28 May 2025 18:53:34 +0800  Li Chen <me@linux.beauty> wrote --- 
 > From: Li Chen <chenl311@chinatelecom.cn>
 > 
 > (REPOST because the previous post failed to send to qemu-devel/qemu-riscv/qemu-arm,
 >  see https://lore.kernel.org/qemu-devel/1971648603b.dce1f5d22901195.6702025346547333607@linux.beauty/T/#u)
 > 
 > This series introduces a new machine option, spcr=on|off, allowing users
 > to disable the ACPI SPCR (Serial Port Console Redirection) table.
 > By default, SPCR is enabled. Disabling it can help ensure that the guest's
 > console behavior is determined solely by kernel command-line parameters
 > on arch like arm64, avoiding unintended serial console configurations imposed
 > by firmware.
 > 
 > Also add tests on AArch64 and RISC-V virt machines using TCG and UEFI boot.
 > 
 > Changes since v3:
 > - Add Reviewed-by from Sunil V L <sunilvl@ventanamicro.com> for patch 1, 3, and 4.
 > - rename enable_spcr to acpi_spcr_enabled as suggested by Philippe Mathieu-Daudé.
 > Changes since v2:
 > - Omit UART device from DSDT and SPCR construction if no serial device is present,
 > as suggested by Philippe Mathieu-Daudé.
 > - Add Reviewed-by from Gavin Shan <gshan@redhat.com> for the first patch and fix style issue.
 > 
 > Changes since v1:
 > - Add bios-tables-test for RISC-V and ARM as suggested by
 > - Add Acked-by from Michael S. Tsirkin for the first patch
 > - Add Reviewed-by from Bibo Mao for the first patch
 > 
 > Li Chen (4):
 >   acpi: Add machine option to disable SPCR table
 >   tests/qtest/bios-tables-test: Add test for disabling SPCR on AArch64
 >   tests/qtest/bios-tables-test: Add test for disabling SPCR on RISC-V
 >   acpi/virt: suppress UART device & SPCR when guest has no serial
 >     hardware
 > 
 >  hw/arm/virt-acpi-build.c       | 18 ++++++++-----
 >  hw/core/machine.c              | 22 ++++++++++++++++
 >  hw/loongarch/virt-acpi-build.c |  4 ++-
 >  hw/riscv/virt-acpi-build.c     | 10 ++++++--
 >  include/hw/boards.h            |  1 +
 >  include/system/system.h        |  2 ++
 >  qemu-options.hx                |  5 ++++
 >  system/vl.c                    |  5 ++++
 >  tests/qtest/bios-tables-test.c | 47 ++++++++++++++++++++++++++++++++--
 >  9 files changed, 103 insertions(+), 11 deletions(-)
 > 
 > -- 
 > 2.49.0
 > 
 > 

Regards,
Li


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

* Re: [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware
  2025-05-28 10:53 ` [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware Li Chen
@ 2025-07-14 18:45   ` Michael S. Tsirkin
  2025-07-16 11:41     ` Li Chen
  0 siblings, 1 reply; 18+ messages in thread
From: Michael S. Tsirkin @ 2025-07-14 18:45 UTC (permalink / raw)
  To: Li Chen
  Cc: Peter Maydell, Shannon Zhao, Igor Mammedov, Ani Sinha,
	Eduardo Habkost, Marcel Apfelbaum, Philippe Mathieu-Daudé,
	Yanan Wang, Zhao Liu, Song Gao, Jiaxun Yang, Sunil V L,
	Palmer Dabbelt, Alistair Francis, Weiwei Li, qemu-arm, qemu-devel,
	qemu-riscv, Li Chen

On Wed, May 28, 2025 at 06:53:38PM +0800, Li Chen wrote:
> From: Li Chen <chenl311@chinatelecom.cn>
> 
> The virt machines always instantiate a PL011/16550 at UART0 and
> describe it in ACPI (DSDT device node plus optional SPCR table).  When
> the command line contains “-serial none” there is no backend attached to
> that UART, yet the guest still discovers it via ACPI and may try to use
> it as a console, causing unexpected results.
> 
> And also explicitly add "-serial stdio" in bios-tables-test.c to allow
> serial device creation, otherwise DSDT assert would get failure because
> "-nodefaults" will not create uart device by default:
> 
> ```
> stderr:
> acpi-test: Warning! DSDT binary file mismatch. Actual [aml:/tmp/aml-BMOL72], Expected [aml:tests/data/acpi/aarch64/virt/DSDT].
> See source file tests/qtest/bios-tables-test.c for instructions on how to update expected files.
> acpi-test: Warning! DSDT mismatch. Actual [asl:/tmp/asl-RNOL72.dsl, aml:/tmp/aml-BMOL72], Expected [asl:/tmp/asl-ZVQL72.dsl, aml:tests/data/acpi/aarch64/virt/DS
> DT].
> ```
> 
> Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> Signed-off-by: Li Chen <chenl311@chinatelecom.cn>
> Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>


will need to be rebased updating loongarch too, now.


> ---
> 
> Notes:
>     Changes since v3: 1. Add Reviewed-by from Sunil V L <sunilvl@ventanamicro.com>
>                       2. Explicitly add "-serial stdio" to pass DSDT assert
> 
>  hw/arm/virt-acpi-build.c       | 15 +++++++++------
>  hw/riscv/virt-acpi-build.c     |  7 +++++--
>  include/system/system.h        |  2 ++
>  system/vl.c                    |  5 +++++
>  tests/qtest/bios-tables-test.c |  5 +++--
>  5 files changed, 24 insertions(+), 10 deletions(-)
> 
> diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
> index d77d16cbd3..c26aedb1b1 100644
> --- a/hw/arm/virt-acpi-build.c
> +++ b/hw/arm/virt-acpi-build.c
> @@ -59,6 +59,7 @@
>  #include "hw/acpi/viot.h"
>  #include "hw/virtio/virtio-acpi.h"
>  #include "target/arm/multiprocessing.h"
> +#include "system/system.h"
>  
>  #define ARM_SPI_BASE 32
>  
> @@ -821,11 +822,13 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
>       */
>      scope = aml_scope("\\_SB");
>      acpi_dsdt_add_cpus(scope, vms);
> -    acpi_dsdt_add_uart(scope, &memmap[VIRT_UART0],
> -                       (irqmap[VIRT_UART0] + ARM_SPI_BASE), 0);
> -    if (vms->second_ns_uart_present) {
> -        acpi_dsdt_add_uart(scope, &memmap[VIRT_UART1],
> -                           (irqmap[VIRT_UART1] + ARM_SPI_BASE), 1);
> +    if (serial_exist()) {
> +        acpi_dsdt_add_uart(scope, &memmap[VIRT_UART0],
> +                           (irqmap[VIRT_UART0] + ARM_SPI_BASE), 0);
> +        if (vms->second_ns_uart_present) {
> +            acpi_dsdt_add_uart(scope, &memmap[VIRT_UART1],
> +                               (irqmap[VIRT_UART1] + ARM_SPI_BASE), 1);
> +        }
>      }
>      if (vmc->acpi_expose_flash) {
>          acpi_dsdt_add_flash(scope, &memmap[VIRT_FLASH]);
> @@ -937,7 +940,7 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
>  
>      acpi_add_table(table_offsets, tables_blob);
>  
> -    if (ms->acpi_spcr_enabled) {
> +    if (ms->acpi_spcr_enabled && serial_exist()) {
>          spcr_setup(tables_blob, tables->linker, vms);
>      }
>  
> diff --git a/hw/riscv/virt-acpi-build.c b/hw/riscv/virt-acpi-build.c
> index ee1416d264..80bf3c3cec 100644
> --- a/hw/riscv/virt-acpi-build.c
> +++ b/hw/riscv/virt-acpi-build.c
> @@ -39,6 +39,7 @@
>  #include "qapi/error.h"
>  #include "qemu/error-report.h"
>  #include "system/reset.h"
> +#include "system/system.h"
>  
>  #define ACPI_BUILD_TABLE_SIZE             0x20000
>  #define ACPI_BUILD_INTC_ID(socket, index) ((socket << 24) | (index))
> @@ -474,7 +475,9 @@ static void build_dsdt(GArray *table_data,
>                                   memmap[VIRT_APLIC_S].size, "RSCV0002");
>      }
>  
> -    acpi_dsdt_add_uart(scope, &memmap[VIRT_UART0], UART0_IRQ);
> +    if (serial_exist())
> +        acpi_dsdt_add_uart(scope, &memmap[VIRT_UART0], UART0_IRQ);
> +

coding style violation

>      if (virt_is_iommu_sys_enabled(s)) {
>          acpi_dsdt_add_iommu_sys(scope, &memmap[VIRT_IOMMU_SYS], IOMMU_SYS_IRQ);
>      }
> @@ -895,7 +898,7 @@ static void virt_acpi_build(RISCVVirtState *s, AcpiBuildTables *tables)
>  
>      acpi_add_table(table_offsets, tables_blob);
>  
> -    if (ms->acpi_spcr_enabled) {
> +    if (ms->acpi_spcr_enabled && serial_exist()) {
>          spcr_setup(tables_blob, tables->linker, s);
>      }
>  
> diff --git a/include/system/system.h b/include/system/system.h
> index a7effe7dfd..ca1af38432 100644
> --- a/include/system/system.h
> +++ b/include/system/system.h
> @@ -75,6 +75,8 @@ extern unsigned int nb_prom_envs;
>  /* Return the Chardev for serial port i, or NULL if none */
>  Chardev *serial_hd(int i);
>  
> +bool serial_exist(void);
> +
>  /* parallel ports */
>  
>  #define MAX_PARALLEL_PORTS 3
> diff --git a/system/vl.c b/system/vl.c
> index fd402b8ff8..e340ee3a95 100644
> --- a/system/vl.c
> +++ b/system/vl.c
> @@ -1485,6 +1485,11 @@ Chardev *serial_hd(int i)
>      return NULL;
>  }
>  
> +bool serial_exist(void)
> +{
> +    return serial_hd(0) ? true : false;
> +}
> +

serial_exists


>  static bool parallel_parse(const char *devname, Error **errp)
>  {
>      static int index = 0;
> diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> index 44de152a36..452566fa86 100644
> --- a/tests/qtest/bios-tables-test.c
> +++ b/tests/qtest/bios-tables-test.c
> @@ -824,10 +824,11 @@ static char *test_acpi_create_args(test_data *data, const char *params)
>          /*
>           * TODO: convert '-drive if=pflash' to new syntax (see e33763be7cd3)
>           * when arm/virt boad starts to support it.
> +         * NOTE: Explicitly add "-serial stdio" to enable uart in DSDT.
>           */
>          if (data->cd) {
>              args = g_strdup_printf("-machine %s%s %s -accel tcg "
> -                "-nodefaults -nographic "
> +                "-nodefaults -serial stdio -nographic "
>                  "-drive if=pflash,format=raw,file=%s,readonly=on "
>                  "-drive if=pflash,format=raw,file=%s,snapshot=on -cdrom %s %s",
>                  data->machine, data->machine_param ?: "",
> @@ -835,7 +836,7 @@ static char *test_acpi_create_args(test_data *data, const char *params)
>                  data->uefi_fl1, data->uefi_fl2, data->cd, params ? params : "");
>          } else {
>              args = g_strdup_printf("-machine %s%s %s -accel tcg "
> -                "-nodefaults -nographic "
> +                "-nodefaults -serial stdio -nographic "
>                  "-drive if=pflash,format=raw,file=%s,readonly=on "
>                  "-drive if=pflash,format=raw,file=%s,snapshot=on %s",
>                  data->machine, data->machine_param ?: "",




> -- 
> 2.49.0



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

* Re: [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware
  2025-07-14 18:45   ` Michael S. Tsirkin
@ 2025-07-16 11:41     ` Li Chen
  2025-07-16 11:42       ` Michael S. Tsirkin
  0 siblings, 1 reply; 18+ messages in thread
From: Li Chen @ 2025-07-16 11:41 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Peter Maydell, Shannon Zhao, Igor Mammedov, Ani Sinha,
	Eduardo Habkost, Marcel Apfelbaum,
	"Philippe Mathieu-Daudé", Yanan Wang, Zhao Liu,
	Song Gao, Jiaxun Yang, Sunil V L, Palmer Dabbelt,
	Alistair Francis, Weiwei Li, qemu-arm, qemu-devel, qemu-riscv,
	Li Chen

Hi Michael,

Thanks for your kind review! All issues below have been fixed in v5:
https://lore.kernel.org/qemu-devel/20250716111959.404917-5-me@linux.beauty/T/#m696cee9a95646add1b74b866c3d6761aa4c5c762

 ---- On Tue, 15 Jul 2025 02:45:31 +0800  Michael S. Tsirkin <mst@redhat.com> wrote --- 
 > On Wed, May 28, 2025 at 06:53:38PM +0800, Li Chen wrote:
 > > From: Li Chen <chenl311@chinatelecom.cn>
 > > 
 > > The virt machines always instantiate a PL011/16550 at UART0 and
 > > describe it in ACPI (DSDT device node plus optional SPCR table).  When
 > > the command line contains “-serial none” there is no backend attached to
 > > that UART, yet the guest still discovers it via ACPI and may try to use
 > > it as a console, causing unexpected results.
 > > 
 > > And also explicitly add "-serial stdio" in bios-tables-test.c to allow
 > > serial device creation, otherwise DSDT assert would get failure because
 > > "-nodefaults" will not create uart device by default:
 > > 
 > > ```
 > > stderr:
 > > acpi-test: Warning! DSDT binary file mismatch. Actual [aml:/tmp/aml-BMOL72], Expected [aml:tests/data/acpi/aarch64/virt/DSDT].
 > > See source file tests/qtest/bios-tables-test.c for instructions on how to update expected files.
 > > acpi-test: Warning! DSDT mismatch. Actual [asl:/tmp/asl-RNOL72.dsl, aml:/tmp/aml-BMOL72], Expected [asl:/tmp/asl-ZVQL72.dsl, aml:tests/data/acpi/aarch64/virt/DS
 > > DT].
 > > ```
 > > 
 > > Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
 > > Signed-off-by: Li Chen <chenl311@chinatelecom.cn>
 > > Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>
 > 
 > 
 > will need to be rebased updating loongarch too, now.
 > 
 > 
 > > ---
 > > 
 > > Notes:
 > >     Changes since v3: 1. Add Reviewed-by from Sunil V L <sunilvl@ventanamicro.com>
 > >                       2. Explicitly add "-serial stdio" to pass DSDT assert
 > > 
 > >  hw/arm/virt-acpi-build.c       | 15 +++++++++------
 > >  hw/riscv/virt-acpi-build.c     |  7 +++++--
 > >  include/system/system.h        |  2 ++
 > >  system/vl.c                    |  5 +++++
 > >  tests/qtest/bios-tables-test.c |  5 +++--
 > >  5 files changed, 24 insertions(+), 10 deletions(-)
 > > 
 > > diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
 > > index d77d16cbd3..c26aedb1b1 100644
 > > --- a/hw/arm/virt-acpi-build.c
 > > +++ b/hw/arm/virt-acpi-build.c
 > > @@ -59,6 +59,7 @@
 > >  #include "hw/acpi/viot.h"
 > >  #include "hw/virtio/virtio-acpi.h"
 > >  #include "target/arm/multiprocessing.h"
 > > +#include "system/system.h"
 > >  
 > >  #define ARM_SPI_BASE 32
 > >  
 > > @@ -821,11 +822,13 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
 > >       */
 > >      scope = aml_scope("\\_SB");
 > >      acpi_dsdt_add_cpus(scope, vms);
 > > -    acpi_dsdt_add_uart(scope, &memmap[VIRT_UART0],
 > > -                       (irqmap[VIRT_UART0] + ARM_SPI_BASE), 0);
 > > -    if (vms->second_ns_uart_present) {
 > > -        acpi_dsdt_add_uart(scope, &memmap[VIRT_UART1],
 > > -                           (irqmap[VIRT_UART1] + ARM_SPI_BASE), 1);
 > > +    if (serial_exist()) {
 > > +        acpi_dsdt_add_uart(scope, &memmap[VIRT_UART0],
 > > +                           (irqmap[VIRT_UART0] + ARM_SPI_BASE), 0);
 > > +        if (vms->second_ns_uart_present) {
 > > +            acpi_dsdt_add_uart(scope, &memmap[VIRT_UART1],
 > > +                               (irqmap[VIRT_UART1] + ARM_SPI_BASE), 1);
 > > +        }
 > >      }
 > >      if (vmc->acpi_expose_flash) {
 > >          acpi_dsdt_add_flash(scope, &memmap[VIRT_FLASH]);
 > > @@ -937,7 +940,7 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
 > >  
 > >      acpi_add_table(table_offsets, tables_blob);
 > >  
 > > -    if (ms->acpi_spcr_enabled) {
 > > +    if (ms->acpi_spcr_enabled && serial_exist()) {
 > >          spcr_setup(tables_blob, tables->linker, vms);
 > >      }
 > >  
 > > diff --git a/hw/riscv/virt-acpi-build.c b/hw/riscv/virt-acpi-build.c
 > > index ee1416d264..80bf3c3cec 100644
 > > --- a/hw/riscv/virt-acpi-build.c
 > > +++ b/hw/riscv/virt-acpi-build.c
 > > @@ -39,6 +39,7 @@
 > >  #include "qapi/error.h"
 > >  #include "qemu/error-report.h"
 > >  #include "system/reset.h"
 > > +#include "system/system.h"
 > >  
 > >  #define ACPI_BUILD_TABLE_SIZE             0x20000
 > >  #define ACPI_BUILD_INTC_ID(socket, index) ((socket << 24) | (index))
 > > @@ -474,7 +475,9 @@ static void build_dsdt(GArray *table_data,
 > >                                   memmap[VIRT_APLIC_S].size, "RSCV0002");
 > >      }
 > >  
 > > -    acpi_dsdt_add_uart(scope, &memmap[VIRT_UART0], UART0_IRQ);
 > > +    if (serial_exist())
 > > +        acpi_dsdt_add_uart(scope, &memmap[VIRT_UART0], UART0_IRQ);
 > > +
 > 
 > coding style violation
 > 
 > >      if (virt_is_iommu_sys_enabled(s)) {
 > >          acpi_dsdt_add_iommu_sys(scope, &memmap[VIRT_IOMMU_SYS], IOMMU_SYS_IRQ);
 > >      }
 > > @@ -895,7 +898,7 @@ static void virt_acpi_build(RISCVVirtState *s, AcpiBuildTables *tables)
 > >  
 > >      acpi_add_table(table_offsets, tables_blob);
 > >  
 > > -    if (ms->acpi_spcr_enabled) {
 > > +    if (ms->acpi_spcr_enabled && serial_exist()) {
 > >          spcr_setup(tables_blob, tables->linker, s);
 > >      }
 > >  
 > > diff --git a/include/system/system.h b/include/system/system.h
 > > index a7effe7dfd..ca1af38432 100644
 > > --- a/include/system/system.h
 > > +++ b/include/system/system.h
 > > @@ -75,6 +75,8 @@ extern unsigned int nb_prom_envs;
 > >  /* Return the Chardev for serial port i, or NULL if none */
 > >  Chardev *serial_hd(int i);
 > >  
 > > +bool serial_exist(void);
 > > +
 > >  /* parallel ports */
 > >  
 > >  #define MAX_PARALLEL_PORTS 3
 > > diff --git a/system/vl.c b/system/vl.c
 > > index fd402b8ff8..e340ee3a95 100644
 > > --- a/system/vl.c
 > > +++ b/system/vl.c
 > > @@ -1485,6 +1485,11 @@ Chardev *serial_hd(int i)
 > >      return NULL;
 > >  }
 > >  
 > > +bool serial_exist(void)
 > > +{
 > > +    return serial_hd(0) ? true : false;
 > > +}
 > > +
 > 
 > serial_exists
 > 
 > 
 > >  static bool parallel_parse(const char *devname, Error **errp)
 > >  {
 > >      static int index = 0;
 > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
 > > index 44de152a36..452566fa86 100644
 > > --- a/tests/qtest/bios-tables-test.c
 > > +++ b/tests/qtest/bios-tables-test.c
 > > @@ -824,10 +824,11 @@ static char *test_acpi_create_args(test_data *data, const char *params)
 > >          /*
 > >           * TODO: convert '-drive if=pflash' to new syntax (see e33763be7cd3)
 > >           * when arm/virt boad starts to support it.
 > > +         * NOTE: Explicitly add "-serial stdio" to enable uart in DSDT.
 > >           */
 > >          if (data->cd) {
 > >              args = g_strdup_printf("-machine %s%s %s -accel tcg "
 > > -                "-nodefaults -nographic "
 > > +                "-nodefaults -serial stdio -nographic "
 > >                  "-drive if=pflash,format=raw,file=%s,readonly=on "
 > >                  "-drive if=pflash,format=raw,file=%s,snapshot=on -cdrom %s %s",
 > >                  data->machine, data->machine_param ?: "",
 > > @@ -835,7 +836,7 @@ static char *test_acpi_create_args(test_data *data, const char *params)
 > >                  data->uefi_fl1, data->uefi_fl2, data->cd, params ? params : "");
 > >          } else {
 > >              args = g_strdup_printf("-machine %s%s %s -accel tcg "
 > > -                "-nodefaults -nographic "
 > > +                "-nodefaults -serial stdio -nographic "
 > >                  "-drive if=pflash,format=raw,file=%s,readonly=on "
 > >                  "-drive if=pflash,format=raw,file=%s,snapshot=on %s",
 > >                  data->machine, data->machine_param ?: "",
 > 
 > 
 > 
 > 
 > > -- 
 > > 2.49.0
 > 
 > 
Regards,

Li​



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

* Re: [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware
  2025-07-16 11:41     ` Li Chen
@ 2025-07-16 11:42       ` Michael S. Tsirkin
  2025-07-16 11:59         ` Li Chen
  0 siblings, 1 reply; 18+ messages in thread
From: Michael S. Tsirkin @ 2025-07-16 11:42 UTC (permalink / raw)
  To: Li Chen
  Cc: Peter Maydell, Shannon Zhao, Igor Mammedov, Ani Sinha,
	Eduardo Habkost, Marcel Apfelbaum,
	"Philippe Mathieu-Daudé", Yanan Wang, Zhao Liu,
	Song Gao, Jiaxun Yang, Sunil V L, Palmer Dabbelt,
	Alistair Francis, Weiwei Li, qemu-arm, qemu-devel, qemu-riscv,
	Li Chen

On Wed, Jul 16, 2025 at 07:41:11PM +0800, Li Chen wrote:
> Hi Michael,
> 
> Thanks for your kind review! All issues below have been fixed in v5:
> https://lore.kernel.org/qemu-devel/20250716111959.404917-5-me@linux.beauty/T/#m696cee9a95646add1b74b866c3d6761aa4c5c762

Past soft freeze now: I tagged this but pls remind me after the release
to help make sure it's not lost.



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

* Re: [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware
  2025-07-16 11:42       ` Michael S. Tsirkin
@ 2025-07-16 11:59         ` Li Chen
  2025-09-18 23:38           ` Li Chen
  0 siblings, 1 reply; 18+ messages in thread
From: Li Chen @ 2025-07-16 11:59 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Peter Maydell, Shannon Zhao, Igor Mammedov, Ani Sinha,
	Eduardo Habkost, Marcel Apfelbaum,
	"Philippe Mathieu-Daudé", Yanan Wang, Zhao Liu,
	Song Gao, Jiaxun Yang, Sunil V L, Palmer Dabbelt,
	Alistair Francis, Weiwei Li, qemu-arm, qemu-devel, qemu-riscv,
	Li Chen

Hi Michael,

 ---- On Wed, 16 Jul 2025 19:42:42 +0800  Michael S. Tsirkin <mst@redhat.com> wrote --- 
 > On Wed, Jul 16, 2025 at 07:41:11PM +0800, Li Chen wrote:
 > > Hi Michael,
 > > 
 > > Thanks for your kind review! All issues below have been fixed in v5:
 > > https://lore.kernel.org/qemu-devel/20250716111959.404917-5-me@linux.beauty/T/#m696cee9a95646add1b74b866c3d6761aa4c5c762
 > 
 > Past soft freeze now: I tagged this but pls remind me after the release
 > to help make sure it's not lost.
 > 

Ok.

Regards,
Li​



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

* Re: [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware
  2025-07-16 11:59         ` Li Chen
@ 2025-09-18 23:38           ` Li Chen
  2025-12-10 12:23             ` Li Chen
  0 siblings, 1 reply; 18+ messages in thread
From: Li Chen @ 2025-09-18 23:38 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Peter Maydell, Shannon Zhao, Igor Mammedov, Ani Sinha,
	Eduardo Habkost, Marcel Apfelbaum,
	"Philippe Mathieu-Daudé", Yanan Wang, Zhao Liu,
	Song Gao, Jiaxun Yang, Sunil V L, Palmer Dabbelt,
	Alistair Francis, Weiwei Li, qemu-arm, qemu-devel, qemu-riscv,
	Li Chen

Hi Michael,

 ---- On Wed, 16 Jul 2025 19:59:14 +0800  Li Chen <me@linux.beauty> wrote --- 
 > Hi Michael,
 > 
 >  ---- On Wed, 16 Jul 2025 19:42:42 +0800  Michael S. Tsirkin <mst@redhat.com> wrote --- 
 >  > On Wed, Jul 16, 2025 at 07:41:11PM +0800, Li Chen wrote:
 >  > > Hi Michael,
 >  > > 
 >  > > Thanks for your kind review! All issues below have been fixed in v5:
 >  > > https://lore.kernel.org/qemu-devel/20250716111959.404917-5-me@linux.beauty/T/#m696cee9a95646add1b74b866c3d6761aa4c5c762
 >  > 
 >  > Past soft freeze now: I tagged this but pls remind me after the release
 >  > to help make sure it's not lost.
 
Gentle reminder: This patch is still missing from the latest master branch, but can apply without
any conflict. Can it be included in 10.2?

Regards,
Li.



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

* Re: [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware
  2025-09-18 23:38           ` Li Chen
@ 2025-12-10 12:23             ` Li Chen
  2025-12-10 12:53               ` Michael S. Tsirkin
  0 siblings, 1 reply; 18+ messages in thread
From: Li Chen @ 2025-12-10 12:23 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Peter Maydell, Shannon Zhao, Igor Mammedov, Ani Sinha,
	Eduardo Habkost, Marcel Apfelbaum,
	"Philippe Mathieu-Daudé", Yanan Wang, Zhao Liu,
	Song Gao, Jiaxun Yang, Sunil V L, Palmer Dabbelt,
	Alistair Francis, Weiwei Li, qemu-arm, qemu-devel, qemu-riscv

Hi Michael,

 ---- On Fri, 19 Sep 2025 07:38:56 +0800  Li Chen <me@linux.beauty> wrote --- 
 > Hi Michael,
 > 
 >  ---- On Wed, 16 Jul 2025 19:59:14 +0800  Li Chen <me@linux.beauty> wrote --- 
 >  > Hi Michael,
 >  > 
 >  >  ---- On Wed, 16 Jul 2025 19:42:42 +0800  Michael S. Tsirkin <mst@redhat.com> wrote --- 
 >  >  > On Wed, Jul 16, 2025 at 07:41:11PM +0800, Li Chen wrote:
 >  >  > > Hi Michael,
 >  >  > > 
 >  >  > > Thanks for your kind review! All issues below have been fixed in v5:
 >  >  > > https://lore.kernel.org/qemu-devel/20250716111959.404917-5-me@linux.beauty/T/#m696cee9a95646add1b74b866c3d6761aa4c5c762
 >  >  > 
 >  >  > Past soft freeze now: I tagged this but pls remind me after the release
 >  >  > to help make sure it's not lost.
 >  
 > Gentle reminder: This patch is still missing from the latest master branch, but can apply without
 > any conflict. Can it be included in 10.2?
 > 
 > Regards,
 > Li.
 > 
 > 

Sorry for bothering again. But I'm still unable to find this patch in the latest master branch, though it applies without conflicts now. 

Could it be merged now?

Regards,
Li​



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

* Re: [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware
  2025-12-10 12:23             ` Li Chen
@ 2025-12-10 12:53               ` Michael S. Tsirkin
  2025-12-11  0:03                 ` Li Chen
  0 siblings, 1 reply; 18+ messages in thread
From: Michael S. Tsirkin @ 2025-12-10 12:53 UTC (permalink / raw)
  To: Li Chen
  Cc: Peter Maydell, Shannon Zhao, Igor Mammedov, Ani Sinha,
	Eduardo Habkost, Marcel Apfelbaum,
	"Philippe Mathieu-Daudé", Yanan Wang, Zhao Liu,
	Song Gao, Jiaxun Yang, Sunil V L, Palmer Dabbelt,
	Alistair Francis, Weiwei Li, qemu-arm, qemu-devel, qemu-riscv

On Wed, Dec 10, 2025 at 08:23:21PM +0800, Li Chen wrote:
> Hi Michael,
> 
>  ---- On Fri, 19 Sep 2025 07:38:56 +0800  Li Chen <me@linux.beauty> wrote --- 
>  > Hi Michael,
>  > 
>  >  ---- On Wed, 16 Jul 2025 19:59:14 +0800  Li Chen <me@linux.beauty> wrote --- 
>  >  > Hi Michael,
>  >  > 
>  >  >  ---- On Wed, 16 Jul 2025 19:42:42 +0800  Michael S. Tsirkin <mst@redhat.com> wrote --- 
>  >  >  > On Wed, Jul 16, 2025 at 07:41:11PM +0800, Li Chen wrote:
>  >  >  > > Hi Michael,
>  >  >  > > 
>  >  >  > > Thanks for your kind review! All issues below have been fixed in v5:
>  >  >  > > https://lore.kernel.org/qemu-devel/20250716111959.404917-5-me@linux.beauty/T/#m696cee9a95646add1b74b866c3d6761aa4c5c762
>  >  >  > 
>  >  >  > Past soft freeze now: I tagged this but pls remind me after the release
>  >  >  > to help make sure it's not lost.
>  >  
>  > Gentle reminder: This patch is still missing from the latest master branch, but can apply without
>  > any conflict. Can it be included in 10.2?
>  > 
>  > Regards,
>  > Li.
>  > 
>  > 
> 
> Sorry for bothering again. But I'm still unable to find this patch in the latest master branch, though it applies without conflicts now. 
> 
> Could it be merged now?
> 
> Regards,
> Li​

you still need to update loongarch, I think. otherwise these tests will
fail.

-- 
MST



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

* Re: [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware
  2025-12-10 12:53               ` Michael S. Tsirkin
@ 2025-12-11  0:03                 ` Li Chen
  2025-12-11  7:43                   ` Michael S. Tsirkin
  0 siblings, 1 reply; 18+ messages in thread
From: Li Chen @ 2025-12-11  0:03 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Peter Maydell, Shannon Zhao, Igor Mammedov, Ani Sinha,
	Eduardo Habkost, Marcel Apfelbaum,
	"Philippe Mathieu-Daudé", Yanan Wang, Zhao Liu,
	Song Gao, Jiaxun Yang, Sunil V L, Palmer Dabbelt,
	Alistair Francis, Weiwei Li, qemu-arm, qemu-devel, qemu-riscv

Hi Tsirkin,

 ---- On Wed, 10 Dec 2025 20:53:01 +0800  Michael S. Tsirkin <mst@redhat.com> wrote --- 
 > On Wed, Dec 10, 2025 at 08:23:21PM +0800, Li Chen wrote:
 > > Hi Michael,
 > > 
 > >  ---- On Fri, 19 Sep 2025 07:38:56 +0800  Li Chen <me@linux.beauty> wrote --- 
 > >  > Hi Michael,
 > >  > 
 > >  >  ---- On Wed, 16 Jul 2025 19:59:14 +0800  Li Chen <me@linux.beauty> wrote --- 
 > >  >  > Hi Michael,
 > >  >  > 
 > >  >  >  ---- On Wed, 16 Jul 2025 19:42:42 +0800  Michael S. Tsirkin <mst@redhat.com> wrote --- 
 > >  >  >  > On Wed, Jul 16, 2025 at 07:41:11PM +0800, Li Chen wrote:
 > >  >  >  > > Hi Michael,
 > >  >  >  > > 
 > >  >  >  > > Thanks for your kind review! All issues below have been fixed in v5:
 > >  >  >  > > https://lore.kernel.org/qemu-devel/20250716111959.404917-5-me@linux.beauty/T/#m696cee9a95646add1b74b866c3d6761aa4c5c762
 > >  >  >  > 
 > >  >  >  > Past soft freeze now: I tagged this but pls remind me after the release
 > >  >  >  > to help make sure it's not lost.
 > >  >  
 > >  > Gentle reminder: This patch is still missing from the latest master branch, but can apply without
 > >  > any conflict. Can it be included in 10.2?
 > >  > 
 > >  > Regards,
 > >  > Li.
 > >  > 
 > >  > 
 > > 
 > > Sorry for bothering again. But I'm still unable to find this patch in the latest master branch, though it applies without conflicts now. 
 > > 
 > > Could it be merged now?
 > > 
 > > Regards,
 > > Li​
 > 
 > you still need to update loongarch, I think. otherwise these tests will
 > fail.

Yes, it seems that tap stdout is polluted by serial stdio.

I'll address the stdout pollution from -serial stdio by redirecting serial output to /dev/null using -serial null in the next version. 
This will still create the serial device but prevent it from writing to the console.

Regards,

Li​



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

* Re: [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware
  2025-12-11  0:03                 ` Li Chen
@ 2025-12-11  7:43                   ` Michael S. Tsirkin
  2025-12-11 10:25                     ` Li Chen
  0 siblings, 1 reply; 18+ messages in thread
From: Michael S. Tsirkin @ 2025-12-11  7:43 UTC (permalink / raw)
  To: Li Chen
  Cc: Peter Maydell, Shannon Zhao, Igor Mammedov, Ani Sinha,
	Eduardo Habkost, Marcel Apfelbaum,
	"Philippe Mathieu-Daudé", Yanan Wang, Zhao Liu,
	Song Gao, Jiaxun Yang, Sunil V L, Palmer Dabbelt,
	Alistair Francis, Weiwei Li, qemu-arm, qemu-devel, qemu-riscv

On Thu, Dec 11, 2025 at 08:03:05AM +0800, Li Chen wrote:
> Hi Tsirkin,
> 
>  ---- On Wed, 10 Dec 2025 20:53:01 +0800  Michael S. Tsirkin <mst@redhat.com> wrote --- 
>  > On Wed, Dec 10, 2025 at 08:23:21PM +0800, Li Chen wrote:
>  > > Hi Michael,
>  > > 
>  > >  ---- On Fri, 19 Sep 2025 07:38:56 +0800  Li Chen <me@linux.beauty> wrote --- 
>  > >  > Hi Michael,
>  > >  > 
>  > >  >  ---- On Wed, 16 Jul 2025 19:59:14 +0800  Li Chen <me@linux.beauty> wrote --- 
>  > >  >  > Hi Michael,
>  > >  >  > 
>  > >  >  >  ---- On Wed, 16 Jul 2025 19:42:42 +0800  Michael S. Tsirkin <mst@redhat.com> wrote --- 
>  > >  >  >  > On Wed, Jul 16, 2025 at 07:41:11PM +0800, Li Chen wrote:
>  > >  >  >  > > Hi Michael,
>  > >  >  >  > > 
>  > >  >  >  > > Thanks for your kind review! All issues below have been fixed in v5:
>  > >  >  >  > > https://lore.kernel.org/qemu-devel/20250716111959.404917-5-me@linux.beauty/T/#m696cee9a95646add1b74b866c3d6761aa4c5c762
>  > >  >  >  > 
>  > >  >  >  > Past soft freeze now: I tagged this but pls remind me after the release
>  > >  >  >  > to help make sure it's not lost.
>  > >  >  
>  > >  > Gentle reminder: This patch is still missing from the latest master branch, but can apply without
>  > >  > any conflict. Can it be included in 10.2?
>  > >  > 
>  > >  > Regards,
>  > >  > Li.
>  > >  > 
>  > >  > 
>  > > 
>  > > Sorry for bothering again. But I'm still unable to find this patch in the latest master branch, though it applies without conflicts now. 
>  > > 
>  > > Could it be merged now?
>  > > 
>  > > Regards,
>  > > Li​
>  > 
>  > you still need to update loongarch, I think. otherwise these tests will
>  > fail.
> 
> Yes, it seems that tap stdout is polluted by serial stdio.
> 
> I'll address the stdout pollution from -serial stdio by redirecting serial output to /dev/null using -serial null in the next version. 
> This will still create the serial device but prevent it from writing to the console.
> 
> Regards,
> 
> Li​

I don't know about that, what I meant is that loongaarch also has SPCR
so it's expected tables have to be updated.

-- 
MST



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

* Re: [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware
  2025-12-11  7:43                   ` Michael S. Tsirkin
@ 2025-12-11 10:25                     ` Li Chen
  0 siblings, 0 replies; 18+ messages in thread
From: Li Chen @ 2025-12-11 10:25 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Peter Maydell, Shannon Zhao, Igor Mammedov, Ani Sinha,
	Eduardo Habkost, Marcel Apfelbaum,
	"Philippe Mathieu-Daudé", Yanan Wang, Zhao Liu,
	Song Gao, Jiaxun Yang, Sunil V L, Palmer Dabbelt,
	Alistair Francis, Weiwei Li, qemu-arm, qemu-devel, qemu-riscv

Hi Michael,

 ---- On Thu, 11 Dec 2025 15:43:45 +0800  Michael S. Tsirkin <mst@redhat.com> wrote --- 
 > On Thu, Dec 11, 2025 at 08:03:05AM +0800, Li Chen wrote:
 > > Hi Tsirkin,
 > > 
 > >  ---- On Wed, 10 Dec 2025 20:53:01 +0800  Michael S. Tsirkin <mst@redhat.com> wrote --- 
 > >  > On Wed, Dec 10, 2025 at 08:23:21PM +0800, Li Chen wrote:
 > >  > > Hi Michael,
 > >  > > 
 > >  > >  ---- On Fri, 19 Sep 2025 07:38:56 +0800  Li Chen <me@linux.beauty> wrote --- 
 > >  > >  > Hi Michael,
 > >  > >  > 
 > >  > >  >  ---- On Wed, 16 Jul 2025 19:59:14 +0800  Li Chen <me@linux.beauty> wrote --- 
 > >  > >  >  > Hi Michael,
 > >  > >  >  > 
 > >  > >  >  >  ---- On Wed, 16 Jul 2025 19:42:42 +0800  Michael S. Tsirkin <mst@redhat.com> wrote --- 
 > >  > >  >  >  > On Wed, Jul 16, 2025 at 07:41:11PM +0800, Li Chen wrote:
 > >  > >  >  >  > > Hi Michael,
 > >  > >  >  >  > > 
 > >  > >  >  >  > > Thanks for your kind review! All issues below have been fixed in v5:
 > >  > >  >  >  > > https://lore.kernel.org/qemu-devel/20250716111959.404917-5-me@linux.beauty/T/#m696cee9a95646add1b74b866c3d6761aa4c5c762
 > >  > >  >  >  > 
 > >  > >  >  >  > Past soft freeze now: I tagged this but pls remind me after the release
 > >  > >  >  >  > to help make sure it's not lost.
 > >  > >  >  
 > >  > >  > Gentle reminder: This patch is still missing from the latest master branch, but can apply without
 > >  > >  > any conflict. Can it be included in 10.2?
 > >  > >  > 
 > >  > >  > Regards,
 > >  > >  > Li.
 > >  > >  > 
 > >  > >  > 
 > >  > > 
 > >  > > Sorry for bothering again. But I'm still unable to find this patch in the latest master branch, though it applies without conflicts now. 
 > >  > > 
 > >  > > Could it be merged now?
 > >  > > 
 > >  > > Regards,
 > >  > > Li​
 > >  > 
 > >  > you still need to update loongarch, I think. otherwise these tests will
 > >  > fail.
 > > 
 > > Yes, it seems that tap stdout is polluted by serial stdio.
 > > 
 > > I'll address the stdout pollution from -serial stdio by redirecting serial output to /dev/null using -serial null in the next version. 
 > > This will still create the serial device but prevent it from writing to the console.
 > > 
 > > Regards,
 > > 
 > > Li​
 > 
 > I don't know about that, what I meant is that loongaarch also has SPCR
 > so it's expected tables have to be updated.

My apologies, I misunderstood your previous comment. I just found I already added LoongArch support in v5 [1] months ago. I've now fixed the tap 
parsing error and submitted v6 of the patch [2]. And now all tests can pass.

[1]: https://patchew.org/QEMU/20250716111959.404917-1-me@linux.beauty/20250716111959.404917-5-me@linux.beauty/
[2]: https://lore.kernel.org/qemu-devel/20251211102025.873506-1-me@linux.beauty/T/#u

Regards,

Li​



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

end of thread, other threads:[~2025-12-11 10:26 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-28 10:53 [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table Li Chen
2025-05-28 10:53 ` [PATCH REPOST v4 1/4] " Li Chen
2025-05-28 10:53 ` [PATCH REPOST v4 2/4] tests/qtest/bios-tables-test: Add test for disabling SPCR on AArch64 Li Chen
2025-05-28 10:53 ` [PATCH REPOST v4 3/4] tests/qtest/bios-tables-test: Add test for disabling SPCR on RISC-V Li Chen
2025-05-28 10:53 ` [PATCH REPOST v4 4/4] acpi/virt: suppress UART device & SPCR when guest has no serial hardware Li Chen
2025-07-14 18:45   ` Michael S. Tsirkin
2025-07-16 11:41     ` Li Chen
2025-07-16 11:42       ` Michael S. Tsirkin
2025-07-16 11:59         ` Li Chen
2025-09-18 23:38           ` Li Chen
2025-12-10 12:23             ` Li Chen
2025-12-10 12:53               ` Michael S. Tsirkin
2025-12-11  0:03                 ` Li Chen
2025-12-11  7:43                   ` Michael S. Tsirkin
2025-12-11 10:25                     ` Li Chen
2025-05-30 12:10 ` [PATCH REPOST v4 0/4] acpi: Add machine option to disable SPCR table Michael S. Tsirkin
2025-06-11  7:43   ` Li Chen
2025-06-19 11:47 ` Li Chen

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).