1. 25 10月, 2006 6 次提交
  2. 23 10月, 2006 1 次提交
  3. 12 10月, 2006 1 次提交
  4. 09 10月, 2006 1 次提交
    • D
      IRQ: Use the new typedef for interrupt handler function pointers · 40220c1a
      David Howells 提交于
      Use the new typedef for interrupt handler function pointers rather than
      actually spelling out the full thing each time.  This was scripted with the
      following small shell script:
      
      #!/bin/sh
      egrep -nHrl -e 'irqreturn_t[ 	]*[(][*]' $* |
      while read i
      do
          echo $i
          perl -pi -e 's/irqreturn_t\s*[(]\s*[*]\s*([_a-zA-Z0-9]*)\s*[)]\s*[(]\s*int\s*,\s*void\s*[*]\s*[)]/irq_handler_t \1/g' $i || exit $?
      done
      Signed-Off-By: NDavid Howells <dhowells@redhat.com>
      40220c1a
  5. 07 10月, 2006 1 次提交
  6. 06 10月, 2006 1 次提交
  7. 05 10月, 2006 5 次提交
    • D
      IRQ: Maintain regs pointer globally rather than passing to IRQ handlers · 7d12e780
      David Howells 提交于
      Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
      of passing regs around manually through all ~1800 interrupt handlers in the
      Linux kernel.
      
      The regs pointer is used in few places, but it potentially costs both stack
      space and code to pass it around.  On the FRV arch, removing the regs parameter
      from all the genirq function results in a 20% speed up of the IRQ exit path
      (ie: from leaving timer_interrupt() to leaving do_IRQ()).
      
      Where appropriate, an arch may override the generic storage facility and do
      something different with the variable.  On FRV, for instance, the address is
      maintained in GR28 at all times inside the kernel as part of general exception
      handling.
      
      Having looked over the code, it appears that the parameter may be handed down
      through up to twenty or so layers of functions.  Consider a USB character
      device attached to a USB hub, attached to a USB controller that posts its
      interrupts through a cascaded auxiliary interrupt controller.  A character
      device driver may want to pass regs to the sysrq handler through the input
      layer which adds another few layers of parameter passing.
      
      I've build this code with allyesconfig for x86_64 and i386.  I've runtested the
      main part of the code on FRV and i386, though I can't test most of the drivers.
      I've also done partial conversion for powerpc and MIPS - these at least compile
      with minimal configurations.
      
      This will affect all archs.  Mostly the changes should be relatively easy.
      Take do_IRQ(), store the regs pointer at the beginning, saving the old one:
      
      	struct pt_regs *old_regs = set_irq_regs(regs);
      
      And put the old one back at the end:
      
      	set_irq_regs(old_regs);
      
      Don't pass regs through to generic_handle_irq() or __do_IRQ().
      
      In timer_interrupt(), this sort of change will be necessary:
      
      	-	update_process_times(user_mode(regs));
      	-	profile_tick(CPU_PROFILING, regs);
      	+	update_process_times(user_mode(get_irq_regs()));
      	+	profile_tick(CPU_PROFILING);
      
      I'd like to move update_process_times()'s use of get_irq_regs() into itself,
      except that i386, alone of the archs, uses something other than user_mode().
      
      Some notes on the interrupt handling in the drivers:
      
       (*) input_dev() is now gone entirely.  The regs pointer is no longer stored in
           the input_dev struct.
      
       (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking.  It does
           something different depending on whether it's been supplied with a regs
           pointer or not.
      
       (*) Various IRQ handler function pointers have been moved to type
           irq_handler_t.
      Signed-Off-By: NDavid Howells <dhowells@redhat.com>
      (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
      7d12e780
    • A
      [POWERPC] spufs: add infrastructure for finding elf objects · 86767277
      Arnd Bergmann 提交于
      This adds an 'object-id' file that the spe library can
      use to store a pointer to its ELF object. This was
      originally meant for use by oprofile, but is now
      also used by the GNU debugger, if available.
      
      In order for oprofile to find the location in an spu-elf
      binary where an event counter triggered, we need a way
      to identify the binary in the first place.
      
      Unfortunately, that binary itself can be embedded in a
      powerpc ELF binary. Since we can assume it is mapped into
      the effective address space of the running process,
      have that one write the pointer value into a new spufs
      file.
      
      When a context switch occurs, pass the user value to
      the profiler so that can look at the mapped file (with
      some care).
      Signed-off-by: NArnd Bergmann <arnd.bergmann@de.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      86767277
    • A
      [POWERPC] spufs: Add infrastructure needed for gang scheduling · 6263203e
      Arnd Bergmann 提交于
      Add the concept of a gang to spufs as a new type of object.
      So far, this has no impact whatsover on scheduling, but makes
      it possible to add that later.
      
      A new type of object in spufs is now a spu_gang. It is created
      with the spu_create system call with the flags argument set
      to SPU_CREATE_GANG (0x2). Inside of a spu_gang, it
      is then possible to create spu_context objects, which until
      now was only possible at the root of spufs.
      
      There is a new member in struct spu_context pointing to
      the spu_gang it belongs to, if any. The spu_gang maintains
      a list of spu_context structures that are its children.
      This information can then be used in the scheduler in the
      future.
      
      There is still a bug that needs to be resolved in this
      basic infrastructure regarding the order in which objects
      are removed. When the spu_gang file descriptor is closed
      before the spu_context descriptors, we leak the dentry
      and inode for the gang. Any ideas how to cleanly solve
      this are appreciated.
      Signed-off-by: NArnd Bergmann <arnd.bergmann@de.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      6263203e
    • A
      [POWERPC] spufs: implement error event delivery to user space · 9add11da
      Arnd Bergmann 提交于
      This tries to fix spufs so we have an interface closer to what is
      specified in the man page for events returned in the third argument of
      spu_run.
      
      Fortunately, libspe has never been using the returned contents of that
      register, as they were the same as the return code of spu_run (duh!).
      
      Unlike the specification that we never implemented correctly, we now
      require a SPU_CREATE_EVENTS_ENABLED flag passed to spu_create, in
      order to get the new behavior. When this flag is not passed, spu_run
      will simply ignore the third argument now.
      Signed-off-by: NArnd Bergmann <arnd.bergmann@de.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      9add11da
    • M
      [POWERPC] spufs: scheduler support for NUMA. · a68cf983
      Mark Nutter 提交于
      This patch adds NUMA support to the the spufs scheduler.
      
      The new arch/powerpc/platforms/cell/spufs/sched.c is greatly
      simplified, in an attempt to reduce complexity while adding
      support for NUMA scheduler domains.  SPUs are allocated starting
      from the calling thread's node, moving to others as supported by
      current->cpus_allowed.  Preemption is gone as it was buggy, but
      should be re-enabled in another patch when stable.
      
      The new arch/powerpc/platforms/cell/spu_base.c maintains idle
      lists on a per-node basis, and allows caller to specify which
      node(s) an SPU should be allocated from, while passing -1 tells
      spu_alloc() that any node is allowed.
      
      Since the patch removes the currently implemented preemptive
      scheduling, it is technically a regression, but practically
      all users have since migrated to this version, as it is
      part of the IBM SDK and the yellowdog distribution, so there
      is not much point holding it back while the new preemptive
      scheduling patch gets delayed further.
      Signed-off-by: NArnd Bergmann <arnd.bergmann@de.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      a68cf983
  8. 04 10月, 2006 5 次提交
    • D
      Remove all inclusions of <linux/config.h> · 038b0a6d
      Dave Jones 提交于
      kbuild explicitly includes this at build time.
      Signed-off-by: NDave Jones <davej@redhat.com>
      038b0a6d
    • L
      [POWERPC] Add QUICC Engine (QE) infrastructure · 98658538
      Li Yang 提交于
      Add QUICC Engine (QE) configuration, header files, and
      QE management and library code that are used by QE devices
      drivers.
      
      Includes Leo's modifications up to, and including, the
      platform_device to of_device adaptation:
      
      "The series of patches add generic QE infrastructure called
      qe_lib, and MPC8360EMDS board support.  Qe_lib is used by
      QE device drivers such as ucc_geth driver.
      
      This version updates QE interrupt controller to use new irq
      mapping mechanism, addresses all the comments received with
      last submission and includes some style fixes.
      
      v2: Change to use device tree for BCSR and MURAM;
      Remove I/O port interrupt handling code as it is not generic
      enough.
      
      v3: Address comments from Kumar;  Update definition of several
      device tree nodes;  Copyright style change."
      
      In addition, the following changes have been made:
      
      o removed typedefs
      o uint -> u32 conversions
      o removed following defines:
        QE_SIZEOF_BD, BD_BUFFER_ARG, BD_BUFFER_CLEAR, BD_BUFFER,
        BD_STATUS_AND_LENGTH_SET, BD_STATUS_AND_LENGTH, and BD_BUFFER_SET
        because they hid sizeof/in_be32/out_be32 operations from the reader.
      o fixed qe_snums_init() serial num assignment to use a const array
      o made CONFIG_UCC_FAST select UCC_SLOW
      o reduced NR_QE_IC_INTS from 128 to 64
      o remove _IO_BASE, etc. defines (not used)
      o removed irrelevant comments, added others to resemble removed BD_ defines
      o realigned struct definitions in headers
      o various other style fixes including things like pinMask -> pin_mask
      o fixed a ton of whitespace issues
      o marked ioregs as __be32/__be16
      o removed platform_device code and redundant get_qe_base()
      o removed redundant comments
      o added cpu_relax() to qe_reset
      o uncasted all get_property() assignments
      o eliminated unneeded casts
      o eliminated immrbar_phys_to_virt (not used)
      Signed-off-by: NLi Yang <leoli@freescale.com>
      Signed-off-by: NShlomi Gridish <gridish@freescale.com>
      Signed-off-by: NKim Phillips <kim.phillips@freescale.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      98658538
    • M
      [POWERPC] Fix xmon=off and cleanup xmon initialisation · 47679283
      Michael Ellerman 提交于
      My patch to make the early xmon logic work with earlier early param
      parsing (480f6f35) breaks xmon=off.
      
      No one does this obviously as xmon rocks, but it should really work
      as documented.
      
      While fixing that it struck me that we could move the xmon param
      handling into xmon.c, and also consolidate the
      xmon_init()/do_early_xmon logic into xmon_setup(). This means
      xmon=early drops into xmon a little earlier on 32-bit, but it
      seems to work just fine.
      
      Tested on PSERIES and CLASSIC32.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      47679283
    • M
      [POWERPC] Cleanup include/asm-powerpc/xmon.h · 23b8acb1
      Michael Ellerman 提交于
      For some reason we have two prototypes for xmon_init(), remove the
      one in system.h.
      
      No one calls xmon() anymore, debugger() is preferable, so we don't
      need the prototype. And similarly no one calls xmon_printf().
      
      Also update the include guards on xmon.h to match the standard
      format, add copyright and license, and add comments to #endifs.
      
      Built for pseries_defconfig and pmac32_defconfig.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      23b8acb1
    • U
      fix file specification in comments · f30c2269
      Uwe Zeisberger 提交于
      Many files include the filename at the beginning, serveral used a wrong one.
      Signed-off-by: NUwe Zeisberger <Uwe_Zeisberger@digi.com>
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      f30c2269
  9. 03 10月, 2006 3 次提交
  10. 02 10月, 2006 5 次提交
  11. 01 10月, 2006 3 次提交
    • O
      [PATCH] update legacy io handling for pmac · 30cbc222
      Olaf Hering 提交于
      ppc can boot one single binary on prep, chrp and pmac boards.  ppc64 can
      boot one single binary on pseries and G5 boards.  pmac has no legacy io,
      probing for PC style legacy hardware (or accessing the legacy io area
      regulary) may lead to a hard crash:
      
      * add check for parport_pc, exit on pmac.  32bit chrp has no
        ->check_legacy_ioport, the probe is always called.  64bit chrp has
        check_legacy_ioport, check for a "parallel" node
      
      * add check for isapnp, only PReP boards may have real ISA slots.  32bit
        PReP will have no ->check_legacy_ioport, the probe is always called.
      
      * update code in i8042_platform_init.  Run ->check_legacy_ioport first,
        always call request_region.  No functional change.  Remove whitespace
        before i8042_reset init.
      Signed-off-by: NOlaf Hering <olaf@aepfle.de>
      Acked-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Adam Belay <ambx1@neo.rr.com>
      Cc: Dmitry Torokhov <dtor@mail.ru>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      30cbc222
    • M
      [PATCH] Directed yield: direct yield of spinlocks for powerpc · cdc39363
      Martin Schwidefsky 提交于
      Powerpc already has a directed yield for CONFIG_PREEMPT="n".  To make it
      work with CONFIG_PREEMPT="y" as well the _raw_{spin,read,write}_relax
      primitives need to be defined to call __spin_yield() for spinlocks and
      __rw_yield() for rw-locks.
      Acked-by: NPaul Mackerras <paulus@samba.org>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      cdc39363
    • M
      [PATCH] Directed yield: cpu_relax variants for spinlocks and rw-locks · ef6edc97
      Martin Schwidefsky 提交于
      On systems running with virtual cpus there is optimization potential in
      regard to spinlocks and rw-locks.  If the virtual cpu that has taken a lock
      is known to a cpu that wants to acquire the same lock it is beneficial to
      yield the timeslice of the virtual cpu in favour of the cpu that has the
      lock (directed yield).
      
      With CONFIG_PREEMPT="n" this can be implemented by the architecture without
      common code changes.  Powerpc already does this.
      
      With CONFIG_PREEMPT="y" the lock loops are coded with _raw_spin_trylock,
      _raw_read_trylock and _raw_write_trylock in kernel/spinlock.c.  If the lock
      could not be taken cpu_relax is called.  A directed yield is not possible
      because cpu_relax doesn't know anything about the lock.  To be able to
      yield the lock in favour of the current lock holder variants of cpu_relax
      for spinlocks and rw-locks are needed.  The new _raw_spin_relax,
      _raw_read_relax and _raw_write_relax primitives differ from cpu_relax
      insofar that they have an argument: a pointer to the lock structure.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Haavard Skinnemoen <hskinnemoen@atmel.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      ef6edc97
  12. 30 9月, 2006 1 次提交
  13. 26 9月, 2006 2 次提交
    • D
      [PATCH] Standardize pxx_page macros · 46a82b2d
      Dave McCracken 提交于
      One of the changes necessary for shared page tables is to standardize the
      pxx_page macros.  pte_page and pmd_page have always returned the struct
      page associated with their entry, while pte_page_kernel and pmd_page_kernel
      have returned the kernel virtual address.  pud_page and pgd_page, on the
      other hand, return the kernel virtual address.
      
      Shared page tables needs pud_page and pgd_page to return the actual page
      structures.  There are very few actual users of these functions, so it is
      simple to standardize their usage.
      
      Since this is basic cleanup, I am submitting these changes as a standalone
      patch.  Per Hugh Dickins' comments about it, I am also changing the
      pxx_page_kernel macros to pxx_page_vaddr to clarify their meaning.
      Signed-off-by: NDave McCracken <dmccr@us.ibm.com>
      Cc: Hugh Dickins <hugh@veritas.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      46a82b2d
    • J
      [libata] No need for all those arch libata-portmap.h headers · a6d967a4
      Jeff Garzik 提交于
      They all contain the same thing.  Instead, have a single generic one in
      include/asm-generic, and permit an arch to override as needed.
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      a6d967a4
  14. 22 9月, 2006 5 次提交
    • A
      [POWERPC] powerpc: fix building gdb against asm/ptrace.h · 7d452c32
      Arnd Bergmann 提交于
      Ulrich Weigand found a bug with the current version of the
      asm-powerpc/ptrace.h that prevents building at least the
      SPU target version of gdb, since some ptrace opcodes are
      not defined.
      
      The problem seems to have originated in the merging of 32 and
      64 bit versions of that file, the problem is that some opcodes
      are only valid on 64 bit kernels, but are also used by 32 bit
      programs, so they can't depends on the __powerpc64__ symbol.
      Signed-off-by: NArnd Bergmann <arnd.bergmann@de.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      7d452c32
    • M
      [POWERPC] Remove DISCONTIGMEM cruft from page.h · 2954da89
      Michael Ellerman 提交于
      This looks like cruft to me, these functions don't exist AFAICT,
      and I can't see that it's possible to even enable DISCONTIGMEM on
      powerpc anymore. CC'ing some folks who might know better, based on
      the who-touched-it-last principle.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      2954da89
    • S
      [POWERPC] Merge iSeries i/o operations with the rest · caf81329
      Stephen Rothwell 提交于
      This patch changes the io operations so that they are out of line if
      CONFIG_PPC_ISERIES is set and includes a firmware feature check in
      that case.
      Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      caf81329
    • V
      POWERPC: Get rid of remapping the whole immr · fc8e50e3
      Vitaly Bordug 提交于
      The stuff below cleans up the code attempting to remap the whole cpm2_immr
      early, as well as places happily assuming that fact. This is more like the 2.4
      legacy stuff, and is at least confusing and unclear now.
      
      To keep the world comfortable, a new mechanism is introduced: before accessing
      specific immr register/register set, one needs to map it, using cpm2_map(<reg>),
      for instance, access to CPM command register will look like
      	volatile cpm_cpm2_t *cp = cpm2_map(im_cpm);
      keeping the code clear, yet without "already defined somewhere" cpm2_immr.
      
      So far, unmapping code is not implemented, but it's not a big deal to add it,
      if the whole idea makes sense.
      Signed-off-by: NVitaly Bordug <vbordug@ru.mvista.com>
      fc8e50e3
    • V
      POWERPC: Add support for the mpc8560 eval board · 902f392d
      Vitaly Bordug 提交于
      This makes the 8560 evaluation board fully supported under arch/powerpc,
      as the first board with CPM2 SoC peripherals. The brand new devicetree
      nodes are introduced (intending to be a subset of the QuiccEngine-equipped
      models, with dts sources placed into the kernel according to the new convention.
      
      Assuming all the preceding stuff applied (PAL+fs_enet related+ CPM_UART
      update), the both TSEC eth ,FCC Eths, and both SCC UARTs are
      working. The relevant drivers are still capable to drive users in ppc,
      which was verified with 8272ADS (SCC uart+FCC eth).
      
      This is also verified on mpc8540 and actually make it work (PCI stuff
      working as well)
      Signed-off-by: NVitaly Bordug <vbordug@ru.mvista.com>
      902f392d