From: Chen Baozi <baoz...@gmail.com>

This patch does the same thing as the previous one but for dom0 kernel.

Signed-off-by: Chen Baozi <baoz...@gmail.com>
---
 xen/arch/arm/domain_build.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index a156de9..28b4f75 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -712,6 +712,7 @@ static int make_cpus_node(const struct domain *d, void *fdt,
     char buf[15];
     u32 clock_frequency;
     bool_t clock_valid;
+    uint32_t cpu_id;
 
     DPRINT("Create cpus node\n");
 
@@ -761,9 +762,13 @@ static int make_cpus_node(const struct domain *d, void 
*fdt,
 
     for ( cpu = 0; cpu < d->max_vcpus; cpu++ )
     {
-        DPRINT("Create cpu@%u node\n", cpu);
+        /*
+         * Linux kernel assumes that MPIDR is equal to logical CPUID
+         */
+        cpu_id = vcpuid_to_vaffinity(cpu);
+        DPRINT("Create cpu@%x node\n", cpu_id);
 
-        snprintf(buf, sizeof(buf), "cpu@%u", cpu);
+        snprintf(buf, sizeof(buf), "cpu@%x", cpu_id);
         res = fdt_begin_node(fdt, buf);
         if ( res )
             return res;
@@ -776,7 +781,7 @@ static int make_cpus_node(const struct domain *d, void *fdt,
         if ( res )
             return res;
 
-        res = fdt_property_cell(fdt, "reg", cpu);
+        res = fdt_property_cell(fdt, "reg", cpu_id);
         if ( res )
             return res;
 
-- 
2.1.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to