[PATCH RFC v6 17/18] ACPI: RISC-V: Add support for RISC-V Quality of Service Controller (RQSC)
Drew Fustini <[email protected]> Mon, 01 Jun 2026 13:36:11 -0700
| Newsgroups | dev.linux.lists.acpica-devel,dev.linux.lists.linux-rt-devel,org.infradead.lists.linux-riscv,org.kernel.vger.linux-acpi,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Call acpi_parse_rqsc() from acpi_arch_init() to discover CBQRI controllers when an RQSC table is present. Gate on CONFIG_RISCV_CBQRI_DRIVER rather than CONFIG_RISCV_ISA_SSQOSID so a kernel built with the ISA extension but without the driver (e.g. RESCTRL_FS=n) does not walk the table and print a misleading "found 0 CBQRI controllers" line on every boot. Link: https://github.com/riscv-non-isa/riscv-cbqri/releases/tag/v1.0 Link: https://github.com/riscv-non-isa/riscv-rqsc/blob/main/src/ Assisted-by: Claude:claude-opus-4-7 Signed-off-by: Drew Fustini <[email protected]> --- drivers/acpi/riscv/init.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/acpi/riscv/init.c b/drivers/acpi/riscv/init.c index 7c00f7995e86..129ebfae28be 100644 --- a/drivers/acpi/riscv/init.c +++ b/drivers/acpi/riscv/init.c @@ -5,11 +5,32 @@ */ #include <linux/acpi.h> +#include <linux/cleanup.h> #include "init.h" +#include "rqsc.h" void __init acpi_arch_init(void) { riscv_acpi_init_gsi_mapping(); + if (IS_ENABLED(CONFIG_ACPI_RIMT)) riscv_acpi_rimt_init(); + + if (IS_ENABLED(CONFIG_RISCV_CBQRI_DRIVER)) { + struct acpi_table_header *rqsc __free(acpi_put_table) = NULL; + acpi_status status = acpi_get_table(ACPI_SIG_RQSC, 0, &rqsc); + + if (status == AE_NOT_FOUND) { + /* RQSC is optional. Silence on systems without it. */ + } else if (ACPI_FAILURE(status)) { + pr_err("RQSC: failed to get table: %s\n", + acpi_format_exception(status)); + } else { + int rc = acpi_parse_rqsc(rqsc); + + if (rc < 0) + pr_err("RQSC: failed to parse table: %d\n", + rc); + } + } } -- 2.43.0