Hi Stefano,

On 03/05/2023 00:55, Stefano Stabellini wrote:
+    {
+        printk("CPU%d: No release addr\n", cpu);
+        return -ENODEV;
+    }
+
+    release = ioremap_nocache(cpu_release_addr[cpu], 4);
+    if ( !release )
+    {
+        dprintk(XENLOG_ERR, "CPU%d: Unable to map release address\n", cpu);
+        return -EFAULT;
+    }
+
+    writel(__pa(init_secondary), release);
+
+    iounmap(release);
I think we need a wmb() ?
I am not sure why we would need a wmb() here. Instead, looking at the 
Linux version, I think we are missing a cache flush (so does on arm64) 
which would be necessary if the CPU waiting for the release doesn't have 
cache enabled.
Cheers,

--
Julien Grall

Reply via email to