diff options
| author | Palmer Dabbelt <[email protected]> | 2024-07-24 14:33:41 +0000 |
|---|---|---|
| committer | Palmer Dabbelt <[email protected]> | 2024-07-26 12:50:48 +0000 |
| commit | ec1dc56b54d679cbfaa7ef7abbf23bdeac029af1 (patch) | |
| tree | 20d26b088930ef3f056ccc98adfe331531816e6b | |
| parent | riscv: enable HAVE_ARCH_STACKLEAK (diff) | |
| parent | RISC-V: ACPI: Enable SPCR table for console output on RISC-V (diff) | |
| download | kernel-ec1dc56b54d679cbfaa7ef7abbf23bdeac029af1.tar.gz kernel-ec1dc56b54d679cbfaa7ef7abbf23bdeac029af1.zip | |
Merge patch "Enable SPCR table for console output on RISC-V"
Sia Jee Heng <[email protected]> says:
The ACPI SPCR code has been used to enable console output for ARM64 and
X86. The same code can be reused for RISC-V. Furthermore, SPCR table is
mandated for headless system as outlined in the RISC-V BRS
Specification, chapter 6.
* b4-shazam-merge:
RISC-V: ACPI: Enable SPCR table for console output on RISC-V
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Palmer Dabbelt <[email protected]>
| -rw-r--r-- | arch/riscv/Kconfig | 1 | ||||
| -rw-r--r-- | arch/riscv/kernel/acpi.c | 12 |
2 files changed, 12 insertions, 1 deletions
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 19ca402e6f26..b32472fe84c2 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -14,6 +14,7 @@ config RISCV def_bool y select ACPI_GENERIC_GSI if ACPI select ACPI_REDUCED_HARDWARE_ONLY if ACPI + select ACPI_SPCR_TABLE if ACPI select ARCH_DMA_DEFAULT_COHERENT select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION select ARCH_ENABLE_MEMORY_HOTPLUG if SPARSEMEM_VMEMMAP diff --git a/arch/riscv/kernel/acpi.c b/arch/riscv/kernel/acpi.c index 040bdbfea2b4..ba957aaca5cb 100644 --- a/arch/riscv/kernel/acpi.c +++ b/arch/riscv/kernel/acpi.c @@ -17,7 +17,9 @@ #include <linux/efi.h> #include <linux/io.h> #include <linux/memblock.h> +#include <linux/of_fdt.h> #include <linux/pci.h> +#include <linux/serial_core.h> int acpi_noirq = 1; /* skip ACPI IRQ initialization */ int acpi_disabled = 1; @@ -131,7 +133,7 @@ void __init acpi_boot_table_init(void) if (param_acpi_off || (!param_acpi_on && !param_acpi_force && efi.acpi20 == EFI_INVALID_TABLE_ADDR)) - return; + goto done; /* * ACPI is disabled at this point. Enable it in order to parse @@ -151,6 +153,14 @@ void __init acpi_boot_table_init(void) if (!param_acpi_force) disable_acpi(); } + +done: + if (acpi_disabled) { + if (earlycon_acpi_spcr_enable) + early_init_dt_scan_chosen_stdout(); + } else { + acpi_parse_spcr(earlycon_acpi_spcr_enable, true); + } } static int acpi_parse_madt_rintc(union acpi_subtable_headers *header, const unsigned long end) |
