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