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

[Minios-devel] [UNIKRAFT PATCHv6 4/6] 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>
---
 plat/kvm/arm/intctrl.c | 19 +++++++++++++++----
 plat/kvm/arm/setup.c   |  4 ++++
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/plat/kvm/arm/intctrl.c b/plat/kvm/arm/intctrl.c
index ac604a7..dbd7f73 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/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®.