[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 29/38] arm: delay enabling data-cache until paging enabled.
At 20:04 +0100 on 01 Jun (1338581061), Ian Campbell wrote: > On Fri, 2012-06-01 at 18:05 +0100, Tim Deegan wrote: > > At 15:39 +0000 on 01 Jun (1338565198), Ian Campbell wrote: > > > With enough warnings enabled the model seemed to be complaining that pages > > > cached before paging was enabled had been mapped with to inconsistent > > > sets of > > > attributes. I'm not convinced that isn't a model issue, nor am I convinced > > > this has really fixed anything, but it seems sensible enough. > > > > This might be what breaks secondary CPU bringup: pagetables built by CPU > > 0 may not have been flushed all the way to RAM when CPU 1 comes up, and > > CPU 1 isn't participating in cache coherence protocols when it > > starts to need them. > > The issue here is the lack of the necessary flush, rather than this > change particularly, right? It turns out to be much more prosaic - the patch to delete the identity mapping from the boot pagetables was scuppering non-boot CPUs. So this is OK, but can I suggest this to tidy it up? diff --git a/xen/arch/arm/head.S b/xen/arch/arm/head.S index 71197af..0d8ce0f 100644 --- a/xen/arch/arm/head.S +++ b/xen/arch/arm/head.S @@ -211,17 +211,13 @@ pt_ready: ldr r1, =paging /* Explicit vaddr, not RIP-relative */ mrc CP32(r0, HSCTLR) - orr r0, r0, #0x1 /* Add in the MMU enable bit */ + orr r0, r0, #(SCTLR_M|SCTLR_C) /* Enable MMU and D-cache */ dsb /* Flush PTE writes and finish reads */ mcr CP32(r0, HSCTLR) /* now paging is enabled */ isb /* Now, flush the icache */ mov pc, r1 /* Get a proper vaddr into PC */ paging: - mrc CP32(r0, HSCTLR) /* Now enable data cache */ - orr r0, r0, #(SCTLR_C) - mcr CP32(r0, HSCTLR) - #ifdef EARLY_UART_ADDRESS /* Recover the UART address in the new address space. */ lsl r11, #11 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |