[PATCH 4/5] powerpc: Rework set_dabr so it can take a DABRX value as well
Geert Uytterhoeven
Geert.Uytterhoeven at sonycom.com
Fri Sep 7 15:26:29 EST 2012
Hi Mikey,
On Fri, 7 Sep 2012, Michael Neuling wrote:
> Geert Uytterhoeven <geert at linux-m68k.org> wrote:
> > On Thu, Sep 6, 2012 at 7:17 AM, Michael Neuling <mikey at neuling.org> wrote:
> > > Rework set_dabr to take a DABRX value as well. We are not actually
> > > changing any functionality at this stage, just preparing for that.
> >
> > You are changing functionality.
>
> You are right.. I'll fix that up.. Sorry.
>
> > > #define DABRX_USER (1UL << 0)
> > > #define DABRX_KERNEL (1UL << 1)
> > > +#define DABRX_HYP (1UL << 2)
> > > +#define DABRX_BTI (1UL << 3)
> > > +#define DABRX_ALL (DABRX_BTI | DABRX_HYP | DABRX_KERNEL | DABRX_USER)
> >
> > > --- a/arch/powerpc/platforms/cell/beat.c
> > > +++ b/arch/powerpc/platforms/cell/beat.c
> > > @@ -136,9 +136,9 @@ ssize_t beat_nvram_get_size(void)
> > > return BEAT_NVRAM_SIZE;
> > > }
> > >
> > > -int beat_set_xdabr(unsigned long dabr)
> > > +int beat_set_xdabr(unsigned long dabr, unsigned long dabrx)
> > > {
> > > - if (beat_set_dabr(dabr, DABRX_KERNEL | DABRX_USER))
> > > + if (beat_set_dabr(dabr, dabrx))
> > > return -1;
> > > return 0;
> > > }
> >
> > > --- a/arch/powerpc/platforms/ps3/setup.c
> > > +++ b/arch/powerpc/platforms/ps3/setup.c
> > > @@ -184,11 +184,9 @@ early_param("ps3flash", early_parse_ps3flash);
> > > #define prealloc_ps3flash_bounce_buffer() do { } while (0)
> > > #endif
> > >
> > > -static int ps3_set_dabr(unsigned long dabr)
> > > +static int ps3_set_dabr(unsigned long dabr, unsigned long dabrx)
> > > {
> > > - enum {DABR_USER = 1, DABR_KERNEL = 2,};
> > > -
> > > - return lv1_set_dabr(dabr, DABR_KERNEL | DABR_USER) ? -1 : 0;
> > > + return lv1_set_dabr(dabr, dabrx) ? -1 : 0;
> > > }
> >
> > > - set_dabr(dabr.address | (dabr.enabled & 7));
> > > + set_dabr(dabr.address | (dabr.enabled & 7), DABRX_ALL);
> >
> > Before, beat_set_dabr() and lv1_set_dabr() would have been called with dabrx = 3
> > (DABRX_KERNEL | DABRX_USER). Now they're called with dabrx = 15
> > (DABRX_ALL = DABRX_BTI | DABRX_HYP | DABRX_KERNEL | DABRX_USER).
> >
> > No idea what's the impact of this...
>
> Do you know if the ps3 hypervisor will allow us to set DABRX_BTI or
> DABRX_HYP? phyp wont.
According to the documenation, all bits but DABRX_USER, DABRX_KERNEL, and
DABRX_BTI must be zero. This implies DABRX_HYP cannot be set.
BTW, the requirement that DABRX_USER and DABRX_KERNEL cannot both be zero
at the same time is also there, cfr. your comment and check in
pseries_set_xdabr().
Unfortunately, I cannot test it.
With kind regards,
Geert Uytterhoeven
Software Architect
Technology and Software Centre Europe
Sony Belgium, bijkantoor van Sony Europe Limited.
Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven at sonycom.com
Sony Europe Limited. A company registered in England and Wales.
Registered office: The Heights, Brooklands, Weybridge, Surrey. KT13 0XW.
United Kingdom
More information about the Linuxppc-dev
mailing list