]> xenbits.xensource.com Git - people/gdunlap/xen.git/commitdiff
xen/arm: Force dom0 to use normal GICv2 driver on Hip04 platform
authorFrediano Ziglio <frediano.ziglio@huawei.com>
Tue, 3 Mar 2015 15:41:15 +0000 (15:41 +0000)
committerIan Campbell <ian.campbell@citrix.com>
Thu, 5 Mar 2015 16:37:33 +0000 (16:37 +0000)
Until vGIC support is not implemented and tested, this will prevent
guest kernels to use their Hip04 driver, or crash when they don't
have any.

Signed-off-by: Frediano Ziglio <frediano.ziglio@huawei.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
xen/arch/arm/gic-hip04.c
xen/include/asm-arm/gic.h

index 0fda957d8828a54997364f26fb0bde28f831f139..073ad337123e8b6345d91cf50a32c7ece9bb14f3 100644 (file)
@@ -612,17 +612,21 @@ static int hip04gic_make_dt_node(const struct domain *d,
                               const struct dt_device_node *node, void *fdt)
 {
     const struct dt_device_node *gic = dt_interrupt_controller;
-    const void *compatible = NULL;
+    const void *compatible;
     u32 len;
     const __be32 *regs;
     int res = 0;
 
-    compatible = dt_get_property(gic, "compatible", &len);
-    if ( !compatible )
-    {
-        dprintk(XENLOG_ERR, "Can't find compatible property for the gic node\n");
-        return -FDT_ERR_XEN(ENOENT);
-    }
+    /*
+     * Replace compatibility string with a standard one.
+     * dom0 will see a compatible GIC. This as GICC is compatible
+     * with standard one and GICD (emulated by Xen) is compatible
+     * to standard. Otherwise we should implement HIP04 GICD in
+     * the virtual GIC.
+     * This actually limit CPU number to 8 for dom0.
+     */
+    compatible = DT_COMPAT_GIC_CORTEX_A15;
+    len = strlen((char*) compatible) + 1;
 
     res = fdt_begin_node(fdt, "interrupt-controller");
     if ( res )
index 6f5767f6a5c2018acafb41cbceec2f9f6672a88f..89a9b6f63590248fc8e0d1544dda63b95ce90be5 100644 (file)
 #include <xen/irq.h>
 #include <asm-arm/vgic.h>
 
+#define DT_COMPAT_GIC_CORTEX_A15 "arm,cortex-a15-gic"
+
 #define DT_MATCH_GIC_V2                                             \
-    DT_MATCH_COMPATIBLE("arm,cortex-a15-gic"),                      \
+    DT_MATCH_COMPATIBLE(DT_COMPAT_GIC_CORTEX_A15),                  \
     DT_MATCH_COMPATIBLE("arm,cortex-a7-gic"),                       \
     DT_MATCH_COMPATIBLE("arm,gic-400")