24 Jun, 2005

5 commits

  • The seccomp check has to happen when entering the syscall and not when
    exiting it or regs->gpr[0] contains garabge during signal handling in
    ppc64_rt_sigreturn (this actually might be a bug too, but an orthogonal
    one, since we really have to run the check before invoking the syscall and
    not after it).

    Signed-off-by: Andrea Arcangeli
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrea Arcangeli
     
  • Linus Torvalds
     
  • This patch includes ppc64 architecture specific changes to support temporary
    disarming on reentrancy of probes.

    Signed-of-by: Prasanna S Panchamukhi

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

    Prasanna S Panchamukhi
     
  • The architecture independent code of the current kprobes implementation is
    arming and disarming kprobes at registration time. The problem is that the
    code is assuming that arming and disarming is a just done by a simple write
    of some magic value to an address. This is problematic for ia64 where our
    instructions look more like structures, and we can not insert break points
    by just doing something like:

    *p->addr = BREAKPOINT_INSTRUCTION;

    The following patch to 2.6.12-rc4-mm2 adds two new architecture dependent
    functions:

    * void arch_arm_kprobe(struct kprobe *p)
    * void arch_disarm_kprobe(struct kprobe *p)

    and then adds the new functions for each of the architectures that already
    implement kprobes (spar64/ppc64/i386/x86_64).

    I thought arch_[dis]arm_kprobe was the most descriptive of what was really
    happening, but each of the architectures already had a disarm_kprobe()
    function that was really a "disarm and do some other clean-up items as
    needed when you stumble across a recursive kprobe." So... I took the
    liberty of changing the code that was calling disarm_kprobe() to call
    arch_disarm_kprobe(), and then do the cleanup in the block of code dealing
    with the recursive kprobe case.

    So far this patch as been tested on i386, x86_64, and ppc64, but still
    needs to be tested in sparc64.

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

    Rusty Lynch
     
  • Provide the architecture specific implementation for SPARSEMEM for PPC64
    systems.

    Signed-off-by: Andy Whitcroft
    Signed-off-by: Dave Hansen
    Signed-off-by: Mike Kravetz (in part)
    Signed-off-by: Martin Bligh
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Whitcroft
     

23 Jun, 2005

11 commits

  • Currently reset and powerdown are not implemented on the Maple board,
    and attempting to do so will (incorrectly return). This implements
    the proper communication with the service processor, allowing correct
    reset and powerdown on the Maple board, by communicating with the
    service processor. If somehow it's unable to communicate with the
    service processor it will loop forever instead.

    Note that powerdown on the Maple will power down the CPUs, but not the
    fans or other board components due to hardware and firmware
    limitations.

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

    David Gibson
     
  • For I/O DLPAR to work properly, the kernel needs to allow for dynamic
    assignment of the irq field of the pci_dev structure upon dynamic bus
    addition. This patch moves the assignment of that field from
    pSeries_final_fixup() to pcibios_fixup_bus(), which enables dynamic
    assignment for the children of a newly added bus.

    Currently, pci_devs receive their irq numbers in one of two ways. The
    irq line is either read at boot for all pci_devs, or read by the rpaphp
    module at slot enable time. The latter is no longer sufficient for
    DLPAR addition of slots that don't qualify as PCI-hotplug capable.
    This solution handles the cases of boot and dynamic add.

    Signed-off-by: John Rose
    Signed-off-by: Paul Mackerras

    John Rose
     
  • This patch corrects the printing of progress indicators to the op
    panel on p/iSeries ppc64 systems. Each discrete reference code should
    begin with a form feed char to clear the op panel, and the first and
    second lines should be separated with a CR/LF sequence. Padding with
    spaces is not necessary.

    Also, capitalize the hex value printed on the first line, to be
    consistent with the values printed by firmware, service processor,
    etc.

    It turns out that there's an ibm,form-feed property; this patch uses
    it in the pSeries-specific progress routine. This patch also checks
    the number of rows and the specific width of each row (the second row
    on power5 systems can actually hold 80 characters). If the displayed
    text is too wide for the physical display, it can be viewed in the ASM
    menus, or by selecting option 14 on the op panel.

    Signed-off-by: Mike Strosaker
    Signed-off-by: Paul Mackerras

    Mike Strosaker
     
  • Implementation of software load support for the BE iommu. This is very
    different from other iommu code on ppc64, since we only do a static mapping.
    The mapping is currently hardcoded but should really be read from the
    firmware, but they don't set up the device nodes yet. There is a single
    512MB DMA window for PCI, USB and ethernet at 0x20000000 for our RAM.

    The Cell processor can put the I/O page table either in memory like
    the hashed page table (hardware load) or have the operating system
    write the entries into memory mapped CPU registers (software load).

    I use the software load mechanism because I know that all I/O page
    table entries for the amount of installed physical memory fit into
    the IO TLB cache. At the point when we get machines with more than
    4GB of installed memory, we can either use hardware I/O page table
    access like the other platforms do or dynamically update the I/O
    TLB entries when a page fault occurs in the I/O subsystem.

    The software load can then use the macros that I have implemented
    for the static mapping in order to do the TLB cache updates.

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

    Arnd Bergmann
     
  • Add support for the integrated interrupt controller on BPA
    CPUs. There is one of those for each SMT thread.

    The mapping of interrupt numbers to HW interrupt sources
    is described in arch/ppc64/kernel/bpa_iic.h.

    This version hardcodes the 'Spider' chip as the secondary
    interrupt controller. That is not really generic for the
    architecture, but at the moment it is the only secondary
    PIC that exists.

    A little more work will be needed on this as soon as
    we have boards with multiple external interrupt controllers.

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

    Arnd Bergmann
     
  • This adds the basic support for running on BPA machines.
    So far, this is only the IBM workstation, and it will
    not run on others without a little more generalization.

    It should be possible to configure a kernel for any
    combination of CONFIG_PPC_BPA with any of the other
    multiplatform targets.

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

    Arnd Bergmann
     
  • The firmware provides the location and size of the nvram
    in the device tree, so it does not really contain any
    hardware specific bits and could be used on other
    machines as well.

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

    Utz Bacher
     
  • The pSeries_progress function is called from some places in the rtas code,
    which may also be used by non-pSeries platforms.
    Though pSeries is currently the only platform type that implements
    display-character, the code is actually generic enough to be part of
    the rtas subsystem.

    I hit a bug here because the generic rtas code tried calling ppc_md.progress,
    which points to an __init function on most platforms.

    We could also clear the ppc_md.progress pointer when freeing the init memory
    to make it more explicit that ppc_md.progress must not be called after
    bootup.

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

    Arnd Bergmann
     
  • BPA is using rtas for PCI but should not be confused by
    pSeries code. This also avoids some #ifdefs. Other
    platforms that want to use rtas_pci.c could create
    their own platform_pci.c with platform specific fixups.

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

    Arnd Bergmann
     
  • The rtc rtas functions are not pSeries specific but can
    also be used by BPA and other SLOF based platforms

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

    Arnd Bergmann
     
  • pSeries and maple have almost the same code for calibrate_decr,
    and BPA would need yet another copy. Instead, I'm moving the
    code to arch/ppc64/kernel/time.c.

    Some of the related declarations were missing from header
    files, so I'm moving those as well.

    It makes sense to merge this with the pmac function of the
    same name, so we end up having just one implemetation for
    iSeries and one for Open Firmware based machines.

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

    Arnd Bergmann
     

22 Jun, 2005

19 commits

  • Allow the SMT bit to be set/reset at boot, like the ALTIVEC bit. This
    means we will enable SMT on unknown cpus that support it.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anton Blanchard
     
  • Currently we dynamically allocate the fake parent device for all devices on
    the vio bus. This patch statically allocates it. This also allows us to
    reuse it for the iSeries "generic" vio device (that is used for passing to
    dma routines when communicating with the hypervisor without a device
    involved). Also unexport vio_bus_type as it is never used in modules.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch allows iSeries to build with CONFIG_PCI=n. This is useful for
    partitions that have only virtual I/O.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch just removes some dead code, fixes messages that referred to the
    file this code used to be in and inserts XmPciLpEvent_init into its caller.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch just merges XmPciLpEvent.c into iSeries_irq.c (the only caller of
    its only external function). XmPciLpEvent.c just contained the lowlevel
    iSeries irq code.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch is just simple cleanups to the iSeries irq code.
    - whitespace and comments
    - rearrange some functions to avoid forward declarations
    - remove XmPciLpEvent.h as its functions were declared elsewhere
    - remove decaration of function that no longer exists
    No semantic changes.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • The AgentId, PhbId, FrameId, CardLocation and Location members of
    iSeries_Device_Node are stored early in the boot process just so that a
    message about the device can be printed later in the boot process. Remove
    them and construct the message by doing the VPD parsing at the time the
    message is printed.

    Also remove a few unused defines in iSeries_VpdInfo.c.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • The IoRetry member of iSeries_Devide_Node is really only used locally, so
    remove it and replace it with a local variable.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • Remove no longer used things from iSeries_pci.h.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • Clean up iSeries_VpdInfo.c:
    - white space and comment fixes
    - make a function static
    - the functions here are only called from iSeries_pci.c, so
    CONFIG_PCI will be set (so remove check)
    - only build when CONFIG_PCI is set
    - remove unneeded includes and cast

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • The file arch/ppc64/kernel/iSeries_pci_reset contains only one function that
    is not use anywhere (any more). Remove it. This function is the only user of
    the ReturnCode member of iSeries_Device_Node, so remove that as well.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • Last of this round of the iSeries header cleanups
    - don't have two defines for the same thing (HvMaxArchitectedLps
    and HvMaxArchitectedVirtualLans)
    - HvCallSc.h only needs linux/types.h
    - remove unused struct definition
    - add "extern" to some more function declarations

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch removes some unused bits from HvCall.h and some unneeded #includes
    from other files. Also includes ItLpQueue.h in paca.h in preference to a stub
    declaration of struct ItLpQueue.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • Just white space cleaups and move process_iSeries_events into its only caller.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • This patch removes from the iSeries header files a large number of inline
    functions that are not used. It also changes the only caller of a HvCallCfg
    function that is outside HvLpConfig.h to its equivalent HvLpConfig function
    and no longer includes HvCallCfg.h where it is not needed.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • include/asm-ppc64/iSeries/LparData.h just included a whole lot of other files
    to declare variables that would be better declared in those other files. So,
    remove it. This will reduce that number of things needed to be included in
    most cases to access the relevant variables.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • include/asm-ppc64/iSeries/iSeries_proc.h just contains a declaration of a
    function that no longer exists. Remove it.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • Currently ppc64 has two mm_structs for the kernel, init_mm and also
    ioremap_mm. The latter really isn't necessary: this patch abolishes it,
    instead restricting vmallocs to the lower 1TB of the init_mm's range and
    placing io mappings in the upper 1TB. This simplifies the code in a number
    of places and eliminates an unecessary set of pagetables. It also tweaks
    the unmap/free path a little, allowing us to remove the unmap_im_area() set
    of page table walkers, replacing them with unmap_vm_area().

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

    David Gibson
     
  • This patch implements a number of smp_processor_id() cleanup ideas that
    Arjan van de Ven and I came up with.

    The previous __smp_processor_id/_smp_processor_id/smp_processor_id API
    spaghetti was hard to follow both on the implementational and on the
    usage side.

    Some of the complexity arose from picking wrong names, some of the
    complexity comes from the fact that not all architectures defined
    __smp_processor_id.

    In the new code, there are two externally visible symbols:

    - smp_processor_id(): debug variant.

    - raw_smp_processor_id(): nondebug variant. Replaces all existing
    uses of _smp_processor_id() and __smp_processor_id(). Defined
    by every SMP architecture in include/asm-*/smp.h.

    There is one new internal symbol, dependent on DEBUG_PREEMPT:

    - debug_smp_processor_id(): internal debug variant, mapped to
    smp_processor_id().

    Also, i moved debug_smp_processor_id() from lib/kernel_lock.c into a new
    lib/smp_processor_id.c file. All related comments got updated and/or
    clarified.

    I have build/boot tested the following 8 .config combinations on x86:

    {SMP,UP} x {PREEMPT,!PREEMPT} x {DEBUG_PREEMPT,!DEBUG_PREEMPT}

    I have also build/boot tested x64 on UP/PREEMPT/DEBUG_PREEMPT. (Other
    architectures are untested, but should work just fine.)

    Signed-off-by: Ingo Molnar
    Signed-off-by: Arjan van de Ven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     

21 Jun, 2005

2 commits


20 Jun, 2005

3 commits