[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH 2/7] plat/common: Define __MAX_IRQ for different architectures
Hello,This allocation of the 1020 irq seems a bit wasteful.We can come up with a optimized solution later. Reviewed-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx> Thanks & Regards Sharan On 12/13/18 10:18 AM, Wei Chen wrote: In current IRQ framework, we only support 16 irq_handlers. This is well for x86 legacy interrupts. But for Arm, it's not enough. In this case, we defined __MAX_IRQ 1020 for Arm and keep __MAX_IRQ 16 for x86. This will waste some space, but we can keep O(1) efficency. Signed-off-by: Wei Chen <wei.chen@xxxxxxx> --- plat/common/include/arm/irq.h | 2 ++ plat/common/include/x86/irq.h | 2 ++ plat/kvm/irq.c | 7 ++++--- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/plat/common/include/arm/irq.h b/plat/common/include/arm/irq.h index ba85183..b81fa9e 100644 --- a/plat/common/include/arm/irq.h +++ b/plat/common/include/arm/irq.h @@ -41,4 +41,6 @@ #error "Add irq.h for current architecture." #endif+#define __MAX_IRQ 1020+ #endif /* __PLAT_CMN_ARM_IRQ_H__ */ diff --git a/plat/common/include/x86/irq.h b/plat/common/include/x86/irq.h index a0f01f8..f2bf2d9 100644 --- a/plat/common/include/x86/irq.h +++ b/plat/common/include/x86/irq.h @@ -84,4 +84,6 @@ static inline int irqs_disabled(void) #define local_irq_disable() __cli() #define local_irq_enable() __sti()+#define __MAX_IRQ 16+ #endif /* __PLAT_CMN_X86_IRQ_H__ */ diff --git a/plat/kvm/irq.c b/plat/kvm/irq.c index 0b734f6..0c9be5b 100644 --- a/plat/kvm/irq.c +++ b/plat/kvm/irq.c @@ -29,7 +29,8 @@ #include <uk/alloc.h> #include <uk/list.h> #include <uk/plat/lcpu.h> -#include <x86/cpu.h> +#include <cpu.h> +#include <irq.h> #include <kvm/irq.h> #include <kvm/intctrl.h> #include <uk/assert.h> @@ -46,14 +47,14 @@ struct irq_handler { };UK_SLIST_HEAD(irq_handler_head, struct irq_handler);-static struct irq_handler_head irq_handlers[16]; +static struct irq_handler_head irq_handlers[__MAX_IRQ];int ukplat_irq_register(unsigned long irq, irq_handler_func_t func, void *arg){ struct irq_handler *h; unsigned long flags;- UK_ASSERT(irq < 16);+ UK_ASSERT(irq < __MAX_IRQ); UK_ASSERT(allocator != NULL);h = uk_malloc(allocator, sizeof(struct irq_handler)); _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |