[PATCH 00/24] Add basic ACPI support for RISC-V

Sunil V L
2023-01-30T18:24:53Z

This patch series enables the basic ACPI infrastructure for RISC-V.
Supporting external interrupt controllers is in progress and hence it is
tested using polling based HVC SBI console and RAM disk.

The series depends on Anup's IPI improvement series.
https://github.com/avpatel/linux/commits/riscv_ipi_imp_v17

These changes are available at
https://github.com/vlsunil/linux/commits/acpi_b1_us_review_ipi17

Testing:
1) Build Qemu with ACPI support using below branch
https://github.com/vlsunil/qemu/tree/acpi_b1_us_review

2) Build EDK2 as per instructions in
https://github.com/vlsunil/riscv-uefi-edk2-docs/wiki/RISC-V-Qemu-Virt-support

3) Build Linux after enabling SBI HVC and SBI earlycon
CONFIG_RISCV_SBI_V01=y
CONFIG_SERIAL_EARLYCON_RISCV_SBI=y
CONFIG_HVC_RISCV_SBI=y

4) Build buildroot.

Run with below command.
qemu-system-riscv64 -nographic \
-drive file=Build/RiscVVirtQemu/RELEASE_GCC5/FV/RISCV_VIRT.fd,if=pflash,format=raw,unit=1 \
-machine virt,acpi=on -smp 16 -m 2G \
-kernel arch/riscv/boot/Image \
-initrd buildroot/output/images/rootfs.cpio \
-append "root=/dev/ram ro console=hvc0 earlycon=sbi"

Jisheng Zhang (1):
riscv: move sbi_init() earlier before jump_label_init()

Sunil V L (23):
ACPICA: MADT: Add RISC-V INTC interrupt controller
ACPICA: Add structure definitions for RISC-V RHCT
RISC-V: ACPI: Add empty headers to enable ACPI core
RISC-V: ACPI: Add basic functions to build ACPI core
RISC-V: ACPI: Add PCI functions to build ACPI core
RISC-V: ACPI: Enable ACPI build infrastructure
ACPI: Enable ACPI_PROCESSOR for RISC-V
ACPI: OSL: Make should_use_kmap() 0 for RISC-V.
ACPI: processor_core: RISC-V: Enable mapping processor to the hartid
RISC-V: ACPI: irqchip/riscv-intc: Add ACPI support
RISC-V: ACPI: smpboot: Create wrapper smp_setup()
RISC-V: ACPI: smpboot: Add ACPI support in smp_setup()
RISC-V: ACPI: smpboot: Add function to retrieve the hartid
clocksource/timer-riscv: Refactor riscv_timer_init_dt()
RISC-V: ACPI: clocksource/timer-riscv: Add ACPI support
ACPI: RISC-V: drivers/acpi: Add RHCT related code
RISC-V: ACPI: time.c: Add ACPI support for time_init()
RISC-V: ACPI: cpufeature: Add ACPI support in riscv_fill_hwcap()
RISC-V: ACPI: cpu: Enable cpuinfo for ACPI systems
RISC-V: ACPI: Add ACPI initialization in setup_arch()
RISC-V: ACPI: Enable ACPI in defconfig
MAINTAINERS: Add entry for drivers/acpi/riscv
Documentation/kernel-parameters.txt: Add RISC-V for ACPI parameter

.../admin-guide/kernel-parameters.txt | 6 +-
MAINTAINERS | 7 +
arch/riscv/Kconfig | 5 +
arch/riscv/configs/defconfig | 4 +
arch/riscv/include/asm/acenv.h | 17 ++
arch/riscv/include/asm/acpi.h | 87 +++++++++
arch/riscv/include/asm/cpu.h | 9 +
arch/riscv/kernel/Makefile | 3 +
arch/riscv/kernel/acpi.c | 178 ++++++++++++++++++
arch/riscv/kernel/cpu.c | 36 +++-
arch/riscv/kernel/cpufeature.c | 45 ++++-
arch/riscv/kernel/pci.c | 173 +++++++++++++++++
arch/riscv/kernel/setup.c | 21 ++-
arch/riscv/kernel/smpboot.c | 99 +++++++++-
arch/riscv/kernel/time.c | 25 ++-
drivers/acpi/Kconfig | 2 +-
drivers/acpi/Makefile | 2 +
drivers/acpi/osl.c | 2 +-
drivers/acpi/processor_core.c | 28 +++
drivers/acpi/riscv/Makefile | 2 +
drivers/acpi/riscv/rhct.c | 93 +++++++++
drivers/clocksource/timer-riscv.c | 88 ++++-----
drivers/irqchip/irq-riscv-intc.c | 79 ++++++--
include/acpi/actbl2.h | 69 ++++++-
24 files changed, 994 insertions(+), 86 deletions(-)
create mode 100644 arch/riscv/include/asm/acenv.h
create mode 100644 arch/riscv/include/asm/acpi.h
create mode 100644 arch/riscv/include/asm/cpu.h
create mode 100644 arch/riscv/kernel/acpi.c
create mode 100644 arch/riscv/kernel/pci.c
create mode 100644 drivers/acpi/riscv/Makefile
create mode 100644 drivers/acpi/riscv/rhct.c

--
2.38.0