[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Minios-devel] [UNIKRAFT PATCHv5 4/6] plat/kvm: Implement intctrl APIs for Arm64



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>
---
 plat/kvm/arm/intctrl.c | 20 ++++++++++++++++----
 plat/kvm/arm/setup.c   |  4 ++++
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/plat/kvm/arm/intctrl.c b/plat/kvm/arm/intctrl.c
index ac604a7..401b2a3 100644
--- a/plat/kvm/arm/intctrl.c
+++ b/plat/kvm/arm/intctrl.c
@@ -31,24 +31,36 @@
  *
  * 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>
+#include <kvm/config.h>
 
 void intctrl_init(void)
 {
-       // TO DO
+       int ret;
+
+       /* Initialize GIC from DTB */
+       ret = _dtb_init_gic(_libkvmplat_cfg.dtb);
+       if (ret)
+               UK_CRASH("Initialize GIC from DTB failed, ret=%d\n", ret);
+
 }
 
 void intctrl_ack_irq(unsigned int irq)
 {
-       // TO DO
+       //NOP
 }
 
 void intctrl_mask_irq(unsigned int irq)
 {
-       // TO DO
+       gic_disable_irq(irq);
 }
 
 void intctrl_clear_irq(unsigned int irq)
 {
-       // TO DO
+       gic_enable_irq(irq);
 }
diff --git a/plat/kvm/arm/setup.c b/plat/kvm/arm/setup.c
index 301b5a1..b8148f9 100644
--- a/plat/kvm/arm/setup.c
+++ b/plat/kvm/arm/setup.c
@@ -24,6 +24,7 @@
 #include <kvm/config.h>
 #include <uk/assert.h>
 #include <kvm-arm/mm.h>
+#include <kvm/intctrl.h>
 #include <arm/cpu.h>
 #include <uk/arch/limits.h>
 
@@ -214,6 +215,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",
                   (void *) _libkvmplat_cfg.pagetable.start);
        uk_pr_info("     heap start: %p\n",
-- 
2.17.1


_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.