[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.



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?

> OTOH, if that's the case, it's surprising that CPU 1 passes the boot
> gate.  I'll look into it next week, x86/mm workload permitting. 

Sounds good!

I tried to test SMP yesterday but ut turned out all the models I thought
were SMP enabled were actual UP Only, not sure how/when that happened!

Cheers,
Ian.

> 
> Cheers,
> 
> Tim.
> 
> > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> > ---
> >  xen/arch/arm/head.S |    9 +++++++--
> >  1 files changed, 7 insertions(+), 2 deletions(-)
> > 
> > diff --git a/xen/arch/arm/head.S b/xen/arch/arm/head.S
> > index 9a7714a..71197af 100644
> > --- a/xen/arch/arm/head.S
> > +++ b/xen/arch/arm/head.S
> > @@ -148,10 +148,11 @@ hyp:
> >      * Exceptions in LE ARM,
> >      * Low-latency IRQs disabled,
> >      * Write-implies-XN disabled (for now),
> > -    * I-cache and d-cache enabled,
> > +    * D-cache diabled (for now),
> > +    * I-cache enabled,
> >      * Alignment checking enabled,
> >      * MMU translation disabled (for now). */
> > -   ldr   r0, =(HSCTLR_BASE|SCTLR_A|SCTLR_C)
> > +   ldr   r0, =(HSCTLR_BASE|SCTLR_A)
> >     mcr   CP32(r0, HSCTLR)
> >  
> >     /* Write Xen's PT's paddr into the HTTBR */
> > @@ -217,6 +218,10 @@ pt_ready:
> >     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
> > -- 
> > 1.7.9.1
> > 
> > 
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@xxxxxxxxxxxxx
> > http://lists.xen.org/xen-devel



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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.