[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] xen/arm64: fix section shift when mapping 2MB block in boot page table



On Tue, 2014-01-14 at 19:51 +0800, Chen Baozi wrote:
> On Jan 14, 2014, at 17:57, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
> 
> > On Tue, 2014-01-14 at 01:06 +0800, Chen Baozi wrote:
> >> Section shift for level-2 page table should be #21 rather than #20.
> > 
> > Thanks, are you finding these issues on actual hardware or just by
> > inspection?
> 
> Oh, I noticed this because I was inspecting my Mini-OSâs code by
> comparing with this. :-)

Ah, I see!

> > I think this change is correct, also arm32 has:
> > 
> >        1:      /* Setup boot_second: */
> >                ldr   r4, =boot_second
> >                add   r4, r4, r10            /* r1 := paddr (boot_second) */
> > 
> >                lsr   r2, r9, #20            /* Base address for 2MB mapping 
> > */
> >                lsl   r2, r2, #20
> >                orr   r2, r2, #PT_UPPER(MEM) /* r2:r3 := section map */
> >                orr   r2, r2, #PT_LOWER(MEM)
> > 
> > Either they are both wrong or both right (I think both wrong).
> > 
> > The effect of this error is that bit #20 of paddr(boot_second) is
> > preserved as bit #20 of the PTE, rather than being cleared. bit #20 of
> > an entry at this level is UNK/SBZP -- so we survive this mistake even if
> > paddr(boot_second) happens to have bit #20 set.
> > 
> > Really this code should use {FIRST,SECOND,THIRD}_SHIFT, and this file
> > already includes asm/page.h so they should be availableâ
> 
> Ok, Iâll write the V2 to fix them all.

Thanks!



_______________________________________________
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®.