05 Jan, 2006

1 commit


30 Dec, 2005

1 commit


22 Dec, 2005

1 commit

  • It turns out that commit f9bd170a87948a9e077149b70fb192c563770fdf
    broke the cascade from XICS to i8259 on pSeries machines; specifically
    we ended up not ever doing the EOI on the XICS for the cascade. The
    result was that interrupts from the serial ports (and presumably any
    other devices using ISA interrupts) didn't get through. This fixes
    it and also simplifies the code, by doing the EOI on the XICS in the
    xics_get_irq routine after reading and acking the interrupt on the
    i8259.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     

21 Dec, 2005

1 commit


20 Dec, 2005

2 commits


16 Dec, 2005

1 commit


13 Dec, 2005

1 commit

  • When multiple probes are registered at the same address and if due to some
    recursion (probe getting triggered within a probe handler), we skip calling
    pre_handlers and just increment nmissed field.

    The below patch make sure it walks the list for multiple probes case.
    Without the below patch we get incorrect results of nmissed count for
    multiple probe case.

    Signed-off-by: Anil S Keshavamurthy
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Keshavamurthy Anil S
     

12 Dec, 2005

1 commit


09 Dec, 2005

3 commits

  • On ppc64, when opening a new hugepage region, we need to make sure any
    old normal-page SLBs for the area are flushed on all CPUs. There was
    a bug in this logic - after putting the new hugepage area masks into
    the thread structure, we copied it into the paca (read by the SLB miss
    handler) only on one CPU, not on all. This could cause incorrect SLB
    entries to be loaded when a multithreaded program was running
    simultaneously on several CPUs. This patch corrects the error,
    copying the context information into the PACA on all CPUs using the mm
    in question before flushing any existing SLB entries.

    Signed-off-by: David Gibson
    Signed-off-by: Paul Mackerras

    David Gibson
     
  • On most powerpc CPUs, the dcache and icache are not coherent so
    between writing and executing a page, the caches must be flushed.
    Userspace programs assume pages given to them by the kernel are icache
    clean, so we must do this flush between the kernel clearing a page and
    it being mapped into userspace for execute. We were not doing this
    for hugepages, this patch corrects the situation.

    We use the same lazy mechanism as we use for normal pages, delaying
    the flush until userspace actually attempts to execute from the page
    in question.

    Tested on G5.

    Signed-off-by: David Gibson
    Signed-off-by: Paul Mackerras

    David Gibson
     
  • Cache info is setup by walking the device tree in initialize_cache_info().
    However, icache_flush_range might be called before that, in
    slb_initialize()->patch_slb_encoding, which modifies the load immediate
    instructions used with SLB fault code.

    Not only that, but depending on memory layout, we might take SLB faults
    during unflatten_device_tree. So that fault will load an SLB entry that
    might not contain the right LLP flags for the segment.

    Either we can walk the flattened device tree to setup cache info, or
    we can pick the known defaults that are known to work. Doing it in the
    flattened device tree is hairier since we need to know the machine type
    to know what property to look for, etc, etc.

    For now, it's just easier to go with the defaults. Worst thing that
    happens from it is that we might waste a few cycles doing too small
    dcbst/icbi increments.

    Signed-off-by: Olof Johansson
    Signed-off-by: Paul Mackerras

    Olof Johansson
     

08 Dec, 2005

3 commits


05 Dec, 2005

2 commits

  • There's never been a hardware platform that has both pSeries/RPA LPAR
    hypervisor and stab (pre-POWER4 segment management). This removes
    the redundant code in stab_initalize().

    Signed-off-by: Olof Johansson
    Signed-off-by: Paul Mackerras

    Olof Johansson
     
  • The previous commit will use the page-at-a-time hypervisor call for
    setting up IOMMU entries when we are using 64k pages and setting up
    one 64k page, even though that means 16 calls to the hypervisor, since
    the hypervisor still works on 4k pages. This optimizes this case by
    using the multi-page IOMMU setup hypervisor call instead.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     

02 Dec, 2005

2 commits


30 Nov, 2005

2 commits


29 Nov, 2005

2 commits

  • Both 32-bit and 64-bit use the same inline flush_icache_range definition
    now, so both need to export __flush_icache_range, not just 64-bit.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     
  • This replaces the (in my opinion horrible) VM_UNMAPPED logic with very
    explicit support for a "remapped page range" aka VM_PFNMAP. It allows a
    VM area to contain an arbitrary range of page table entries that the VM
    never touches, and never considers to be normal pages.

    Any user of "remap_pfn_range()" automatically gets this new
    functionality, and doesn't even have to mark the pages reserved or
    indeed mark them any other way. It just works. As a side effect, doing
    mmap() on /dev/mem works for arbitrary ranges.

    Sparc update from David in the next commit.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

25 Nov, 2005

3 commits

  • Blah. The patch [0] I recently sent fixing errors with
    in_hugepage_area() and prepare_hugepage_range() for powerpc itself has
    an off-by-one bug. Furthermore, the related functions
    touches_hugepage_*_range() and within_hugepage_*_range() are also
    buggy. Some of the bugs, like those addressed in [0] originated with
    commit 7d24f0b8a53261709938ffabe3e00f88f6498df9 where we tweaked the
    semantics of where hugepages are allowed. Other bugs have been there
    essentially forever, and are due to the undefined behaviour of '<
    Signed-off-by: Paul Mackerras

    David Gibson
     
  • Paul Mackerras
     
  • With the removal of include/asm-powerpc, we no longer need
    arch/powerpc/include/asm for the 64 bit build. We also do not need
    -Iarch/powerpc for the 64 bit build either.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     

24 Nov, 2005

4 commits

  • Commit 7d24f0b8a53261709938ffabe3e00f88f6498df9 fixed bugs in the ppc64 SLB
    miss handler with respect to hugepage handling, and in the process tweaked
    the semantics of the hugepage address masks in mm_context_t.

    Unfortunately, it left out a couple of necessary changes to go with that
    change. First, the in_hugepage_area() macro was not updated to match,
    second prepare_hugepage_range() was not updated to correctly handle
    hugepages regions which straddled the 4GB point.

    The latter appears only to cause process-hangs when attempting to map such
    a region, but the former can cause oopses if a get_user_pages() is
    triggered at the wrong point. This patch addresses both bugs.

    Signed-off-by: David Gibson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Gibson
     
  • Fix a bug in kprobes that can cause an Oops or even a crash when a return
    probe is installed on one of the following functions: sys_execve,
    do_execve, load_*_binary, flush_old_exec, or flush_thread. The fix is to
    remove the call to kprobe_flush_task() in flush_thread(). This fix has
    been tested on all architectures for which the return-probes feature has
    been implemented (i386, x86_64, ppc64, ia64). Please apply.

    BACKGROUND

    Up to now, we have called kprobe_flush_task() under two situations: when a
    task exits, and when it execs. Flushing kretprobe_instances on exit is
    correct because (a) do_exit() doesn't return, and (b) one or more
    return-probed functions may be active when a task calls do_exit(). Neither
    is the case for sys_execve() and its callees.

    Initially, the mistaken call to kprobe_flush_task() on exec was harmless
    because we put the "real" return address of each active probed function
    back in the stack, just to be safe, when we recycled its
    kretprobe_instance. When support for ppc64 and ia64 was added, this safety
    measure couldn't be employed, and was eventually dropped even for i386 and
    x86_64. sys_execve() and its callees were informally blacklisted for
    return probes until this fix was developed.

    Acked-by: Prasanna S Panchamukhi
    Signed-off-by: Jim Keniston
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jim Keniston
     
  • Restore an earlier mod which went missing in the powerpc reshuffle: the 4xx
    mmu_mapin_ram does not need to take init_mm.page_table_lock.

    Signed-off-by: Hugh Dickins
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • Update comments (only) on page_table_lock and mmap_sem in arch/powerpc.
    Removed the comment on page_table_lock from hash_huge_page: since it's no
    longer taking page_table_lock itself, it's irrelevant whether others are; but
    how it is safe (even against huge file truncation?) I can't say.

    Signed-off-by: Hugh Dickins
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     

23 Nov, 2005

2 commits

  • Email address update, changing old work address to personal (permanent)
    one.

    Signed-off-by: Olof Johansson
    Signed-off-by: Paul Mackerras

    Olof Johansson
     
  • Although we tend to associate VM_RESERVED with remap_pfn_range, quite a few
    drivers set VM_RESERVED on areas which are then populated by nopage. The
    PageReserved removal in 2.6.15-rc1 changed VM_RESERVED not to free pages in
    zap_pte_range, without changing those drivers not to set it: so their pages
    just leak away.

    Let's not change miscellaneous drivers now: introduce VM_UNPAGED at the core,
    to flag the special areas where the ptes may have no struct page, or if they
    have then it's not to be touched. Replace most instances of VM_RESERVED in
    core mm by VM_UNPAGED. Force it on in remap_pfn_range, and the sparc and
    sparc64 io_remap_pfn_range.

    Revert addition of VM_RESERVED to powerpc vdso, it's not needed there. Is it
    needed anywhere? It still governs the mm->reserved_vm statistic, and special
    vmas not to be merged, and areas not to be core dumped; but could probably be
    eliminated later (the drivers are probably specifying it because in 2.4 it
    kept swapout off the vma, but in 2.6 we work from the LRU, which these pages
    don't get on).

    Use the VM_SHM slot for VM_UNPAGED, and define VM_SHM to 0: it serves no
    purpose whatsoever, and should be removed from drivers when we clean up.

    Signed-off-by: Hugh Dickins
    Acked-by: William Irwin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     

19 Nov, 2005

5 commits

  • We were using udelay in the loop on the primary cpu waiting for the
    secondary cpu to take the timebase value. Unfortunately now that
    udelay uses the timebase, and the timebase is stopped at this point,
    the udelay never terminated. This fixes it by not using udelay, and
    increases the number of loops before we time out to compensate.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     
  • It's only used by arch/powerpc/kernel/ptrace{,32}.c.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     
  • This involves some minor changes: a few unused functions that the
    ppc32 pci.c provides are no longer declared here or exported;
    pcibios_assign_all_busses now just refers to the pci_assign_all_buses
    variable on both 32-bit and 64-bit; pcibios_scan_all_fns is now
    just 0 instead of a function that always returns 0 on 64-bit.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     
  • asm-ppc64/imalloc.h is only included from files in arch/powerpc/mm.
    We already have a header for mm local definitions,
    arch/powerpc/mm/mmu_decl.h. Thus, this patch moves the contents of
    imalloc.h into mmu_decl.h. The only exception are the definitions of
    PHBS_IO_BASE, IMALLOC_BASE and IMALLOC_END. Those are moved into
    pgtable.h, next to similar definitions of VMALLOC_START and
    VMALLOC_SIZE.

    Built for multiplatform 32bit and 64bit (ARCH=powerpc).

    Signed-off-by: David Gibson
    Signed-off-by: Paul Mackerras

    David Gibson
     
  • Trying to set the priority would just disable the interrupt due to an
    incorrect mask used. We rarely use that call, in fact, I think only in
    the powermac code for the cmd-power key combo that triggers xmon. So it
    got unnoticed for a while.

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

    Benjamin Herrenschmidt
     

18 Nov, 2005

3 commits