On 06.05.2025 18:51, Oleksii Kurochko wrote: > --- a/xen/arch/riscv/include/asm/intc.h > +++ b/xen/arch/riscv/include/asm/intc.h > @@ -8,6 +8,8 @@ > #ifndef ASM__RISCV__INTERRUPT_CONTOLLER_H > #define ASM__RISCV__INTERRUPT_CONTOLLER_H > > +#include <xen/irq.h>
If you need this include anyway, why ... > @@ -17,6 +19,26 @@ struct intc_info { > const struct dt_device_node *node; > }; > > +struct irq_desc; ... this "forward" decl for something that's then already fully defined? I can't, however, spot why xen/irq.h would be needed for anything ... > +struct intc_hw_operations { > + /* Hold intc hw information */ > + const struct intc_info *info; > + /* Initialize the intc and the boot CPU */ > + int (*init)(void); > + > + /* hw_irq_controller to enable/disable/eoi host irq */ > + const hw_irq_controller *host_irq_type; > + > + /* Set IRQ type */ > + void (*set_irq_type)(struct irq_desc *desc, unsigned int type); > + /* Set IRQ priority */ > + void (*set_irq_priority)(struct irq_desc *desc, unsigned int priority); > + > +}; > + > void intc_preinit(void); > > +void register_intc_ops(struct intc_hw_operations *ops); > + > #endif /* ASM__RISCV__INTERRUPT_CONTOLLER_H */ ... throughout here. > --- a/xen/arch/riscv/intc.c > +++ b/xen/arch/riscv/intc.c > @@ -5,6 +5,15 @@ > #include <xen/init.h> > #include <xen/lib.h> > > +#include <asm/intc.h> > + > +static struct __ro_after_init intc_hw_operations *intc_hw_ops; Nit: Attributes between type and identifier please. Also shouldn't both this and ... > +void __init register_intc_ops(struct intc_hw_operations *ops) ... the parameter here be pointer-to-const? Jan