24 Jan, 2007

1 commit

  • I often test new versions of glibc by doing:

    LD_LIBRARY_PATH=/XXX/lib /XXX/lib/ld.so.1

    One test case ended up SEGV'ing. Upon closer inspection ld.so was loaded
    at 0x8000000 (128MB) with the heap right after it. Since we normally
    link binaries at 0x10000000 (256MB) we only had about 128MB of space for
    the heap:

    00100000-00103000 r-xp 00100000 00:00 0 [vdso]
    08000000-0801e000 r-xp 00000000 00:01 33079 /lib/ld-2.5.so
    0802d000-0802f000 rwxp 0001d000 00:01 33079 /lib/ld-2.5.so
    0802f000-08050000 rwxp 0802f000 00:00 0 [heap]
    0fe91000-0ffd9000 r-xp 00000000 00:01 33082 /lib/libc-2.5.so
    0ffd9000-0ffe8000 ---p 00148000 00:01 33082 /lib/libc-2.5.so
    0ffe8000-0ffea000 r--p 00147000 00:01 33082 /lib/libc-2.5.so
    0ffea000-0ffed000 rwxp 00149000 00:01 33082 /lib/libc-2.5.so
    10000000-10004000 r-xp 00000000 00:01 76 /bin/sleep
    10013000-10014000 rwxp 00003000 00:01 76 /bin/sleep
    ffb41000-ffb56000 rw-p ffb41000 00:00 0 [stack]

    One way to fix this is move ELF_ET_DYN_BASE from 0x08000000 to 0x20000000.
    This allows 128MB for the binary (hopefully enough for even the most
    crazy c++ apps), and with our current layout we will grow the heap up
    and the stack down, allowing potentially gigabytes of heap:

    00100000-00103000 r-xp 00100000 00:00 0 [vdso]
    0fe8a000-0ffd3000 r-xp 00000000 00:01 3350 /lib/tls/libc-2.3.6.so
    0ffd3000-0ffe3000 ---p 00149000 00:01 3350 /lib/tls/libc-2.3.6.so
    0ffe3000-0ffea000 r--p 00149000 00:01 3350 /lib/tls/libc-2.3.6.so
    0ffea000-0ffee000 rwxp 00150000 00:01 3350 /lib/tls/libc-2.3.6.so
    10000000-10004000 r-xp 00000000 00:01 76 /bin/sleep
    10013000-10014000 rwxp 00003000 00:01 76 /bin/sleep
    20000000-20018000 r-xp 00000000 00:01 3478 /lib/ld-2.3.6.so
    20028000-20029000 r--p 00018000 00:01 3478 /lib/ld-2.3.6.so
    20029000-2002a000 rwxp 00019000 00:01 3478 /lib/ld-2.3.6.so
    2002a000-2004b000 rwxp 2002a000 00:00 0 [heap]
    ffd67000-ffd7c000 rw-p ffd67000 00:00 0 [stack]

    Signed-off-by: Anton Blanchard
    Signed-off-by: Paul Mackerras

    Anton Blanchard
     

08 Dec, 2006

1 commit

  • Define elf_addr_t in linux/elf.h. The size of the type is determined using
    ELF_CLASS. This allows us to remove the defines that today are spread all
    over .c and .h files.

    Signed-off-by: Magnus Damm
    Cc: Daniel Jacobowitz
    Cc: Roland McGrath
    Cc: Jakub Jelinek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Magnus Damm
     

04 Dec, 2006

2 commits

  • It may be desireable to build a kernel for cell without
    spufs, e.g. as the initial kboot kernel. This requires
    that the SPU specific parts of the core dump and the xmon
    code depend on CONFIG_SPU_BASE instead of CONFIG_PPC_CELL.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • This patch adds SPU elf notes to the coredump. It creates a separate note
    for each of /regs, /fpcr, /lslr, /decr, /decr_status, /mem, /signal1,
    /signal1_type, /signal2, /signal2_type, /event_mask, /event_status,
    /mbox_info, /ibox_info, /wbox_info, /dma_info, /proxydma_info, /object-id.

    A new macro, ARCH_HAVE_EXTRA_NOTES, was created for architectures to
    specify they have extra elf core notes.

    A new macro, ELF_CORE_EXTRA_NOTES_SIZE, was created so the size of the
    additional notes could be calculated and added to the notes phdr entry.

    A new macro, ELF_CORE_WRITE_EXTRA_NOTES, was created so the new notes
    would be written after the existing notes.

    The SPU coredump code resides in spufs. Stub functions are provided in the
    kernel which are hooked into the spufs code which does the actual work via
    register_arch_coredump_calls().

    A new set of __spufs__read/get() functions was provided to allow the
    coredump code to read from the spufs files without having to lock the
    SPU context for each file read from.

    Cc:
    Signed-off-by: Dwayne Grant McConnell
    Signed-off-by: Arnd Bergmann

    Dwayne Grant McConnell
     

23 Jun, 2006

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (139 commits)
    [POWERPC] re-enable OProfile for iSeries, using timer interrupt
    [POWERPC] support ibm,extended-*-frequency properties
    [POWERPC] Extra sanity check in EEH code
    [POWERPC] Dont look for class-code in pci children
    [POWERPC] Fix mdelay badness on shared processor partitions
    [POWERPC] disable floating point exceptions for init
    [POWERPC] Unify ppc syscall tables
    [POWERPC] mpic: add support for serial mode interrupts
    [POWERPC] pseries: Print PCI slot location code on failure
    [POWERPC] spufs: one more fix for 64k pages
    [POWERPC] spufs: fail spu_create with invalid flags
    [POWERPC] spufs: clear class2 interrupt status before wakeup
    [POWERPC] spufs: fix Makefile for "make clean"
    [POWERPC] spufs: remove stop_code from struct spu
    [POWERPC] spufs: fix spu irq affinity setting
    [POWERPC] spufs: further abstract priv1 register access
    [POWERPC] spufs: split the Cell BE support into generic and platform dependant parts
    [POWERPC] spufs: dont try to access SPE channel 1 count
    [POWERPC] spufs: use kzalloc in create_spu
    [POWERPC] spufs: fix initial state of wbox file
    ...

    Manually resolved conflicts in:
    drivers/net/phy/Makefile
    include/asm-powerpc/spu.h

    Linus Torvalds
     

09 Jun, 2006

1 commit

  • This patch cleans up some locking & error handling in the ppc vdso and
    moves the vdso base pointer from the thread struct to the mm context
    where it more logically belongs. It brings the powerpc implementation
    closer to Ingo's new x86 one and also adds an arch_vma_name() function
    allowing to print [vsdo] in /proc//maps if Ingo's x86 vdso patch is
    also applied.

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

    Benjamin Herrenschmidt
     

04 May, 2006

1 commit


25 Apr, 2006

1 commit


14 Jan, 2006

1 commit

  • The glibc folks want to use AT_PLATFORM to select between possible
    alternative versions of shared libraries. This commit makes the kernel
    supply an AT_PLATFORM string that indicates what class of processor
    we are running on. Processors with the same set of user-level
    instructions and roughly the same instruction scheduling characteristics
    are given the same AT_PLATFORM value; for example, 821, 823 and 860
    are all reported as "ppc823", and 7447, 7447A, 7448, 7450, 7451, 7455
    are all called "ppc7450".

    The intention is that the AT_PLATFORM values match the values that
    gcc accepts for the -mcpu= option. For values which are numeric
    (e.g. -mcpu=750), "ppc" has been prepended.

    This also adds a PPC_FEATURE_BOOKE bit to the AT_HWCAP value and sets
    it for the 440 family and the Freescale 85xx family.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     

11 Jan, 2006

1 commit


09 Jan, 2006

1 commit

  • include/asm-ppc/ had #ifdef __KERNEL__ in all header files that
    are not meant for use by user space, include/asm-powerpc does
    not have this yet.

    This patch gets us a lot closer there. There are a few cases
    where I was not sure, so I left them out. I have verified
    that no CONFIG_* symbols are used outside of __KERNEL__
    any more and that there are no obvious compile errors when
    including any of the headers in user space libraries.

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Arnd Bergmann
     

11 Nov, 2005

1 commit

  • This patch moves the vdso's to arch/powerpc, adds support for the 32
    bits vdso to the 32 bits kernel, rename systemcfg (finally !), and adds
    some new (still untested) routines to both vdso's: clock_gettime() with
    support for CLOCK_REALTIME and CLOCK_MONOTONIC, clock_getres() (same
    clocks) and get_tbfreq() for glibc to retreive the timebase frequency.

    Tom,Steve: The implementation of get_tbfreq() I've done for 32 bits
    returns a long long (r3, r4) not a long. This is such that if we ever
    add support for >4Ghz timebases on ppc32, the userland interface won't
    have to change.

    I have tested gettimeofday() using some glibc patches in both ppc32 and
    ppc64 kernels using 32 bits userland (I haven't had a chance to test a
    64 bits userland yet, but the implementation didn't change and was
    tested earlier). I haven't tested yet the new functions.

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

    Benjamin Herrenschmidt
     

07 Nov, 2005

1 commit

  • Fix more include file problems that surfaced since I submitted the previous
    fix-missing-includes.patch. This should now allow not to include sched.h
    from module.h, which is done by a followup patch.

    Signed-off-by: Tim Schmielau
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tim Schmielau
     

04 Nov, 2005

1 commit

  • The merged verison of ELF_CORE_COPY_REGS is basically the PPC64 version, with
    a memset that came from PPC and a few types abstracted out into #defines. But
    it's not _quite_ right.

    The first problem is we calculate the number of registers with:
    nregs = sizeof(struct pt_regs) / sizeof(ELF_GREG_TYPE)

    For a 32-bit process on a 64-bit kernel that's bogus because the registers are
    64 bits, but ELF_GREG_TYPE is u32, so nregs == 88 which is wrong.

    The other problem is the memset, which assumes a struct pt_regs is smaller
    than a struct elf_regs. For a 32-bit process on a 64-bit kernel that's false.

    The fix is to calculate the number of regs using sizeof(unsigned long), which
    should always be right, and just memset the whole damn thing _before_ copying
    the registers in.

    Signed-off-by: Michael Ellerman

    Michael Ellerman
     

10 Oct, 2005

1 commit


28 Sep, 2005

1 commit


21 Sep, 2005

1 commit

  • ppc/ppc64: Merge elf.h into include/asm-powerpc

    Merge elf.h into a single include file for 32 and 64-bit ppc platforms. This
    patch has been tested on 32-bit and built on 64-bit platforms.

    Signed-off-by: Kumar Gala
    Signed-off-by: Becky Bruce
    Signed-off-by: Paul Mackerras

    Becky Bruce