19 Sep, 2007

1 commit

  • Recent changes to the timekeeping code broke support for the PowerPC 601
    processor which doesn't have the usual timebase facility but a slightly
    different thing called (yuck) the RTC.

    This fixes it, boot tested on an old 601 based PowerMac 7200.

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

    Benjamin Herrenschmidt
     

11 Sep, 2007

1 commit

  • The Cell BE Architecture spec states that the SPU MFC Class 0 interrupt
    is edge-triggered. The current spu interrupt handler assumes this
    behavior and does not clear the interrupt status.

    The PS3 hypervisor visualizes all SPU interrupts as level, and on return
    from the interrupt handler the hypervisor will deliver a new virtual
    interrupt for any unmasked interrupts which for which the status has not
    been cleared. This fix clears the interrupt status in the interrupt
    handler.

    Signed-off-by: Masato Noguchi
    Signed-off-by: Geoff Levand
    Signed-off-by: Jeremy Kerr
    Acked-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Masato Noguchi
     

18 Aug, 2007

1 commit

  • Reserved MCSR bits on FSL BookE parts may have spurious values
    when mcheck occurs. Mask these off when printing the MCSR to
    avoid confusion. Also, get rid of the MCSR_GL_CI bit defined
    for e500 - this bit doesn't actually have any meaning.

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

    Becky Bruce
     

10 Aug, 2007

2 commits

  • powerpc has a couple of bugs in the usage of dma_masks that tend to
    break when drivers explicitly try to set a 32-bit mask for example.

    First, the code that generates the pci devices from the OF device-tree
    doesn't initialize the mask properly, then our implementation of
    set_dma_mask() was trying to validate the -previous- mask value, not the
    one passed in as an argument.

    This fixes these problems.

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

    Benjamin Herrenschmidt
     
  • This patch moves affinity initialization code from spu_base.c to a
    new spu_management_of_ops function (init_affinity), which is empty
    in the case of PS3. This fixes a linking problem that was happening
    when compiling for PS3.
    Also, some small code style changes were made.

    Signed-off-by: Andre Detsch
    Signed-off-by: Geoff Levand
    Acked-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Andre Detsch
     

03 Aug, 2007

2 commits

  • On a machine with hardware 64kB pages and a kernel configured for a
    64kB base page size, we need to change the vmalloc segment from 64kB
    pages to 4kB pages if some driver creates a non-cacheable mapping in
    the vmalloc area. However, we never updated with SLB shadow buffer.
    This fixes it. Thanks to paulus for finding this.

    Also added some write barriers to ensure the shadow buffer contents
    are always consistent.

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

    Michael Neuling
     
  • The real page number field in our PTEs when configured for 64kB pages
    is currently 32 bits, which turns out to be not quite enough for the
    resources that the eHCA driver wants to map. This expands the RPN
    field to include 2 adjacent, previously-unused bits.

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

    Paul Mackerras
     

01 Aug, 2007

2 commits

  • Alexey Dobriyan noticed that the new WARN_ON() semantics that were
    introduced by commit 684f978347deb42d180373ac4c427f82ef963171 (to also
    return the value to be warned on) didn't compile when given a bitfield,
    because the typeof doesn't work for bitfields.

    So instead of the typeof trick, use an "int" variable together with a
    "!!(x)" expression, as suggested by Al Viro.

    To make matters more interesting, Paul Mackerras points out that that is
    sub-optimal on Power, but the old asm-coded comparison seems to be buggy
    anyway on 32-bit Power if the conditional was 64-bit, so I think there
    are more problems there.

    Regardless, the new WARN_ON() semantics may have been a bad idea. But
    this at least avoids the more serious complications.

    Cc: Alexey Dobriyan
    Cc: Herbert Xu
    Cc: Paul Mackerras
    Cc: Al Viro
    Cc: Ingo Molnar
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Remove unused TIF_NOTIFY_RESUME flag for all processor architectures. The
    flag was not used excecpt on IA-64 where the patch replaces it with
    TIF_PERFMON_WORK.

    Signed-off-by: stephane eranian
    Cc:
    Cc: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephane Eranian
     

27 Jul, 2007

3 commits

  • * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (21 commits)
    [POWERPC] spusched: Fix initial timeslice calculation
    [POWERPC] spufs: Fix incorrect initialization of cbe_spu_info.spus
    [POWERPC] Fix Maple platform ISA bus
    [POWERPC] Make pci_iounmap actually unmap things
    [POWERPC] Add function to check if address is an IO port
    [POWERPC] Fix Pegasos keyboard detection
    [POWERPC] iSeries: Fix section mismatch warning in lpevents
    [POWERPC] iSeries: Fix section mismatch warnings
    [POWERPC] iSeries: We need vio_enable_interrupts
    [POWERPC] Fix RTC and device tree on linkstation machines
    [POWERPC] Add of_register_i2c_devices()
    [POWERPC] Fix loop with unsigned long counter variable
    [POWERPC] Fix register labels on show_regs() message for 4xx/Book-E
    [POWERPC] Only allow building of BootX text support on PPC_MULTIPLATFORM
    [POWERPC] Fix the ability to reset on MPC8544 DS and MPC8568 MDS boards
    [POWERPC] Fix mpc7448hpc2 tsi108 device_type bug
    [POWREPC] Fixup a number of modpost warnings on ppc32
    [POWERPC] Fix ethernet PHY support on MPC8544 DS
    [POWERPC] Don't try to allocate resources for a Freescale POWERPC PHB
    Revert "[POWERPC] Don't complain if size-cells == 0 in prom_parse()"
    ...

    Linus Torvalds
     
  • Nathan Lynch reported:
    2.6.23-rc1 breaks the build for 64-bit powerpc for me (using
    maple_defconfig):

    LD vmlinux.o
    powerpc64-unknown-linux-gnu-ld: dynreloc miscount for
    kernel/built-in.o, section .opd
    powerpc64-unknown-linux-gnu-ld: can not edit opd Bad value
    make: *** [vmlinux.o] Error 1

    However, I see a possibly related binutils patch:
    http://article.gmane.org/gmane.comp.gnu.binutils/33650

    It was tracked down to be caused by the weak prototype
    declaration in mm.h:
    __attribute__((weak)) const char *arch_vma_name(struct vm_area_struct *vma);

    But there is no need to make the declaration weak - only the definition
    needs to be marked weak. So drop the weak declaration. And in the process
    drop the duplicate definition in page.h for powerpc.

    Note: the arch_vma_name fix for x86_64 needs to be applied first to avoid
    breaking x86_64

    Signed-off-by: Sam Ravnborg
    Cc: Nathan Lynch
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sam Ravnborg
     
  • Since powerpc insists on printing the _value_ of condition
    and on casting it to long... At least let's make it a force-cast.

    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     

26 Jul, 2007

3 commits


24 Jul, 2007

2 commits


23 Jul, 2007

3 commits


22 Jul, 2007

2 commits

  • Some HW platforms, such as the new cell blades, requires some MPIC sources
    to be left alone by the operating system. This implements support for
    a "protected-sources" property in the mpic controller node containing a list
    of source numbers to be protected against operating system interference.

    For those interested in the gory details, the MPIC on the southbridge of
    those blades has some of the processor outputs routed to the cell, and
    at least one routed as a GPIO to the service processor. It will be used
    in the GA product for routing some of the southbridge error interrupts
    to the service processor which implements some of the RAS stuff, such
    as checkstopping when fatal errors occurs before they can propagate.

    Signed-off-by: Benjamin Herrenschmidt
    Acked-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     
  • ...since it modifies it (when it sets the OF_DETACHED flag).

    Signed-off-by: Segher Boessenkool
    Signed-off-by: Paul Mackerras

    Segher Boessenkool
     

21 Jul, 2007

10 commits

  • This sorts out the various lists and related locks in the spu code.

    In detail:

    - the per-node free_spus and active_list are gone. Instead struct spu
    gained an alloc_state member telling whether the spu is free or not
    - the per-node spus array is now locked by a per-node mutex, which
    takes over from the global spu_lock and the per-node active_mutex
    - the spu_alloc* and spu_free function are gone as the state change is
    now done inline in the spufs code. This allows some more sharing of
    code for the affinity vs normal case and more efficient locking
    - some little refactoring in the affinity code for this locking scheme

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Arnd Bergmann

    Christoph Hellwig
     
  • From: Maynard Johnson

    This patch updates the existing arch/powerpc/oprofile/op_model_cell.c
    to add in the SPU profiling capabilities. In addition, a 'cell' subdirectory
    was added to arch/powerpc/oprofile to hold Cell-specific SPU profiling code.
    Exports spu_set_profile_private_kref and spu_get_profile_private_kref which
    are used by OProfile to store private profile information in spufs data
    structures.

    Also incorporated several fixes from other patches (rrn). Check pointer
    returned from kzalloc. Eliminated unnecessary cast. Better error
    handling and cleanup in the related area. 64-bit unsigned long parameter
    was being demoted to 32-bit unsigned int and eventually promoted back to
    unsigned long.

    Signed-off-by: Carl Love
    Signed-off-by: Maynard Johnson
    Signed-off-by: Bob Nelson
    Signed-off-by: Arnd Bergmann
    Acked-by: Paul Mackerras

    Bob Nelson
     
  • This patch adds support for additional flags at spu_create, which relate
    to the establishment of affinity between contexts and contexts to memory.
    A fourth, optional, parameter is supported. This parameter represent
    a affinity neighbor of the context being created, and is used when defining
    SPU-SPU affinity.
    Affinity is represented as a doubly linked list of spu_contexts.

    Signed-off-by: Andre Detsch
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • This patch adds affinity data to each spu instance.
    A doubly linked list is created, meant to connect the spus
    in the physical order they are placed in the BE. SPUs
    near to memory should be marked as having memory affinity.
    Adjustments of the fields acording to FW properties is done
    in separate patches, one for CPBW, one for Malta (patch for
    Malta under testing).

    Signed-off-by: Andre Detsch
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • Addition of a spufs-global "cbe_info" array. Each entry contains information
    about one Cell/B.E. node, namelly:
    * list of spus (both free and busy spus are in this list);
    * list of free spus (replacing the static spu_list from spu_base.c)
    * number of spus;
    * number of reserved (non scheduleable) spus.

    SPE affinity implementation actually requires only access to one spu per
    BE node (since it implements its own pointer to walk through the other spus
    of the ring) and the number of scheduleable spus (n_spus - non_sched_spus)
    However having this more general structure can be useful for other
    functionalities, concentrating per-cbe statistics / data.

    Signed-off-by: Andre Detsch
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • The decr_status in the LSCSA is confusedly used as two meanings:
    * SPU decrementer was running
    * SPU decrementer was wrapped as a result of adjust
    and the code to set decr_status is missing.

    This patch fixes these problems by using the decr_status argument as a
    set of flags. This requires a rebuild of the shipped spu_restore code.

    Signed-off-by: Masato Noguchi
    Signed-off-by: Jeremy Kerr
    Signed-off-by: Arnd Bergmann

    Masato Noguchi
     
  • This patch exports per-context statistics in spufs as long as spu
    statistics in sysfs.

    It was formed by merging:
    "spufs: add spu stats in sysfs" From: Christoph Hellwig
    "spufs: add stat file to spufs" From: Christoph Hellwig
    "spufs: fix libassist accounting" From: Jeremy Kerr
    "spusched: fix spu utilization statistics" From: Luke Browning
    And some adjustments by myself, after suggestions on cbe-oss-dev.

    Having separate patches was making the review process harder
    than it should, as we end up integrating spus and ctx statistics
    accounting much more than it was on the first implementation.

    Signed-off-by: Andre Detsch
    Signed-off-by: Jeremy Kerr
    Signed-off-by: Arnd Bergmann

    Andre Detsch
     
  • The current SPU context saving procedure in SPUFS unexpectedly
    restarts MFC when halting decrementer, because MFC_CNTL[Dh] is set
    without MFC_CNTL[Sm]. This bug causes, for example, saving broken DMA
    queues. Here is a patch to fix the problem.

    Signed-off-by: Kazunori Asayama
    Signed-off-by: Jeremy Kerr
    Signed-off-by: Arnd Bergmann

    Kazunori Asayama
     
  • This patch adds support for investigating spus information after a
    kernel crash event, through kdump vmcore file.
    Implementation is based on xmon code, but the new functionality was
    kept independent from xmon.

    Signed-off-by: Lucio Jose Herculano Correia
    Signed-off-by: Andre Detsch
    Signed-off-by: Arnd Bergmann

    Andre Detsch
     
  • The pmi driver got simplified by removing support for multiple devices.
    As there is no more than one pmi device per maschine, there is no need to
    specify the device for listening and sending messages.

    This way the caller (cbe_cpufreq) doesn't need to scan the device tree.
    When registering the handler on a board without a pmi
    interface, pmi.c will just return -ENODEV.

    The patch that fixed the breakage of cell_defconfig has been
    broken out of the earlier version of this patch. So this is
    the version that applies cleanly on top of it.

    Signed-off-by: Christian Krafft
    Signed-off-by: Arnd Bergmann

    Christian Krafft
     

20 Jul, 2007

8 commits