Le mar. 3 nov. 2015 à 14:33, Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk>
a écrit :

> On 03/11/15 12:16, Michael Tokarev wrote:
>
> > 03.11.2015 11:00, Julio Guerra wrote:
> >> Ping :)
> >
> > Well, I'm not sure what can I do with this.  I've no idea what is IBAT
> to start
> > with, so while technically the patch is a one-liner, I've no idea what
> it does
> > and how trivial it is :)
> >
> > Maybe you can include some context which teaches me what it is all
> about, and in
> > that case it becomes really trivial, or.. I dunno :)
>
> FWIW PPC has a set of IBAT and DBAT registers on chip, each of which
> indicates a large continuous physical/virtual memory mapping for
> Instruction and Data memory respectively. The idea is that the OS can
> use these to provide "fast" virtual to physical lookups instead of
> invoking a time-consuming hash lookup to provide the translation.
>
> From casual observation comparing with spr_write_ibatu_h() in the same
> file (which already includes the +4 offset that the patch is adding to
> spr_read_ibat_h()), it does look like a genuine bug. However it really
> needs someone who understands PPC architecture a bit more to give a RB
> to ensure this is doing the right thing.
>
>
I would add the reason the bug never appeared is probably due to the fact
BATs are not likely to be read by kernels, they simply write to them to
program a large memory mapping. In our case, we saw the bug when fully
saving/restoring the CPU context since we were in fact reading at BAT0-3
instead of BAT4-7 and then restoring BAT these values in BAT4-7... And the
result can be very perverse...

Linux PPC, which I think is how Alexander Graf tests qemu-ppc, probably
does not use these higher BAT registers, they are CPU-specific.

Reply via email to