[PATCH RFC v4 17/18] ACPI: RISC-V: Add support for RISC-V Quality of Service Controller (RQSC)
Drew Fustini
fustini at kernel.org
Sun May 10 22:11:13 PDT 2026
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 <fustini at kernel.org>
---
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
More information about the linux-riscv
mailing list