From b9b4c6a7abdc6f8ef83592eb56d3bf9523a7536d Mon Sep 17 00:00:00 2001 From: Roger Pau Monne Date: Thu, 25 Jun 2026 16:46:07 +0200 Subject: [PATCH] riscv/irq: define a per-arch irq_to_desc() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RISCV declares irq_desc as a static array, opposed to x86 that uses a pointer allocated at boot time. This creates issues when attempting to add an extern declaration for irq_desc, as asm/irq.h is included by xen/irq.h where the definition of struct irq_desc resides, and an empty forward declaration doesn't make the compiler happy because it doesn't know the type data-storage. Signed-off-by: Roger Pau Monné Reviewed-by: Oleksii Kurochko Release-Acked-by: Oleksii Kurochko --- xen/arch/riscv/include/asm/irq.h | 3 +++ xen/arch/riscv/irq.c | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/xen/arch/riscv/include/asm/irq.h b/xen/arch/riscv/include/asm/irq.h index f633636dc3..62648bdc42 100644 --- a/xen/arch/riscv/include/asm/irq.h +++ b/xen/arch/riscv/include/asm/irq.h @@ -35,6 +35,9 @@ struct arch_irq_desc { unsigned int type; }; +struct irq_desc *irq_to_desc(unsigned int irq); +#define irq_to_desc irq_to_desc + struct cpu_user_regs; struct dt_device_node; diff --git a/xen/arch/riscv/irq.c b/xen/arch/riscv/irq.c index 25d3295002..b5066fc3e9 100644 --- a/xen/arch/riscv/irq.c +++ b/xen/arch/riscv/irq.c @@ -19,6 +19,12 @@ static irq_desc_t irq_desc[NR_IRQS]; +struct irq_desc *irq_to_desc(unsigned int irq) +{ + ASSERT(irq < ARRAY_SIZE(irq_desc)); + return &irq_desc[irq]; +} + static bool irq_validate_new_type(unsigned int curr, unsigned int new) { return curr == IRQ_TYPE_INVALID || curr == new;