|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCHv2 5/7] plat/kvm: Implement intctrl APIs for Arm64
From: Wei Chen <wei.chen@xxxxxxx>
Before GICv2 become ready, we had marked the intctrl APIs as TODO.
Now, we have enabled the GICv2, we can implement intctrl APIs with
related GIC APIs.
Signed-off-by: Wei Chen <wei.chen@xxxxxxx>
Signed-off-by: Jia He <justin.he@xxxxxxx>
---
v1->v2: implement intctrl_ack_irq as NOP
plat/kvm/arm/intctrl.c | 25 ++++++++++++++++++-------
plat/kvm/arm/setup.c | 4 ++++
2 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/plat/kvm/arm/intctrl.c b/plat/kvm/arm/intctrl.c
index ac604a7..9bec5d6 100644
--- a/plat/kvm/arm/intctrl.c
+++ b/plat/kvm/arm/intctrl.c
@@ -31,24 +31,35 @@
*
* THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
*/
+#include <uk/assert.h>
+#include <kvm/sections.h>
#include <kvm/intctrl.h>
+#include <arm/cpu.h>
+#include <arm/irq.h>
+#include <gic/gic-v2.h>
void intctrl_init(void)
{
- // TO DO
+ int ret;
+
+ /* Initialize GIC from DTB */
+ ret = _dtb_init_gic(_libkvmplat_dtb);
+ if (ret)
+ UK_CRASH("Initialize GIC from DTB failed, ret=%d\n", ret);
+
}
-void intctrl_ack_irq(unsigned int irq)
+void intctrl_ack_irq(uint32_t irq)
{
- // TO DO
+ //NOP
}
-void intctrl_mask_irq(unsigned int irq)
+void intctrl_mask_irq(uint32_t irq)
{
- // TO DO
+ gic_disable_irq(irq);
}
-void intctrl_clear_irq(unsigned int irq)
+void intctrl_clear_irq(uint32_t irq)
{
- // TO DO
+ gic_enable_irq(irq);
}
diff --git a/plat/kvm/arm/setup.c b/plat/kvm/arm/setup.c
index 15a884a..6125a30 100644
--- a/plat/kvm/arm/setup.c
+++ b/plat/kvm/arm/setup.c
@@ -23,6 +23,7 @@
#include <kvm/console.h>
#include <uk/assert.h>
#include <kvm-arm/mm.h>
+#include <kvm/intctrl.h>
#include <arm/cpu.h>
#include <uk/arch/limits.h>
@@ -200,6 +201,9 @@ void _libkvmplat_start(void *dtb_pointer)
/* Initialize memory from DTB */
_init_dtb_mem();
+ /* Initialize interrupt controller */
+ intctrl_init();
+
uk_pr_info("pagetable start: %p\n", _libkvmplat_pagetable);
uk_pr_info(" heap start: %p\n", _libkvmplat_heap_start);
uk_pr_info(" stack top: %p\n", _libkvmplat_stack_top);
--
2.17.1
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |