08 Feb, 2007

1 commit


07 Feb, 2007

1 commit


04 Dec, 2006

3 commits

  • A few code paths need to check whether or not they are running
    on the PS3's LV1 hypervisor before making hcalls. This introduces
    a new firmware feature bit for this, FW_FEATURE_PS3_LV1.

    Now when both PS3 and IBM_CELL_BLADE are enabled, but not PSERIES,
    FW_FEATURE_PS3_LV1 and FW_FEATURE_LPAR get enabled at compile time,
    which is a bug. The same problem can also happen for (PPC_ISERIES &&
    !PPC_PSERIES && PPC_SOMETHING_ELSE). In order to solve this, I
    introduce a new CONFIG_PPC_NATIVE option that is set when at least
    one platform is selected that can run without a hypervisor and then
    turns the firmware feature check into a run-time option.

    The new cell oprofile support that was recently merged does not
    work on hypervisor based platforms like the PS3, therefore make
    it depend on PPC_CELL_NATIVE instead of PPC_CELL. This may change
    if we get oprofile support for PS3.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • When renaming CONFIG_PS3 to CONFIG_PPC_PS3, a few occurrences have been
    missed.

    I also fixed up the alignment in arch/powerpc/platforms/Makefile.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Arnd Bergmann

    Geert Uytterhoeven
     
  • Adds the needed firmware feature bits for the PS3.

    Signed-off-by: Geoff Levand
    Signed-off-by: Arnd Bergmann

    Geoff Levand
     

25 Oct, 2006

2 commits

  • This patch reworks the feature fixup mecanism so vdso's can be fixed up.
    The main issue was that the construct:

    .long label (or .llong on 64 bits)

    will not work in the case of a shared library like the vdso. It will
    generate an empty placeholder in the fixup table along with a reloc,
    which is not something we can deal with in the vdso.

    The idea here (thanks Alan Modra !) is to instead use something like:

    1:
    .long label - 1b

    That is, the feature fixup tables no longer contain addresses of bits of
    code to patch, but offsets of such code from the fixup table entry
    itself. That is properly resolved by ld when building the .so's. I've
    modified the fixup mecanism generically to use that method for the rest
    of the kernel as well.

    Another trick is that the 32 bits vDSO included in the 64 bits kernel
    need to have a table in the 64 bits format. However, gas does not
    support 32 bits code with a statement of the form:

    .llong label - 1b (Or even just .llong label)

    That is, it cannot emit the right fixup/relocation for the linker to use
    to assign a 32 bits address to an .llong field. Thus, in the specific
    case of the 32 bits vdso built as part of the 64 bits kernel, we are
    using a modified macro that generates:

    .long 0xffffffff
    .llong label - 1b

    Note that is assumes that the value is negative which is enforced by
    the .lds (those offsets are always negative as the .text is always
    before the fixup table and gas doesn't support emiting the reloc the
    other way around).

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     
  • There are currently two versions of the functions for applying the
    feature fixups, one for CPU features and one for firmware features. In
    addition, they are both in assembly and with separate implementations
    for 32 and 64 bits. identify_cpu() is also implemented in assembly and
    separately for 32 and 64 bits.

    This patch replaces them with a pair of C functions. The call sites are
    slightly moved on ppc64 as well to be called from C instead of from
    assembly, though it's a very small change, and thus shouldn't cause any
    problem.

    Signed-off-by: Benjamin Herrenschmidt
    Acked-by: Olof Johansson
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     

03 Oct, 2006

1 commit


28 Mar, 2006

1 commit


27 Mar, 2006

1 commit


22 Mar, 2006

1 commit

  • It has been decreed that platform numbers are evil, so as a step in that
    direction, replace platform_is_lpar() with a FW_FEATURE_LPAR bit.

    Currently FW_FEATURE_LPAR really means i/pSeries LPAR, in the future we might
    have to clean that up if we need to be more specific about what LPAR actually
    means. But that's another patch ...

    Signed-off-by: Michael Ellerman
    Signed-off-by: Paul Mackerras

    Michael Ellerman
     

10 Feb, 2006

1 commit


09 Jan, 2006

1 commit


10 Nov, 2005

1 commit

  • This patch merges platform codes. systemcfg->platform is no longer used,
    systemcfg use in general is deprecated as much as possible (and renamed
    _systemcfg before it gets completely moved elsewhere in a future patch),
    _machine is now used on ppc64 along as ppc32. Platform codes aren't gone
    yet but we are getting a step closer. A bunch of asm code in head[_64].S
    is also turned into C code.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Paul Mackerras
     

26 Oct, 2005

1 commit