1. 01 11月, 2011 1 次提交
  2. 19 8月, 2011 1 次提交
    • T
      net: fix IBM EMAC driver after rename. · 3b3bceef
      Tony Breeds 提交于
      In commit 9aa32835 (ehea/ibm*: Move the
      IBM drivers) the IBM_NEW_EMAC* were renames to IBM_EMAC*
      
      The conversion was incomplete so that even if the driver was added to
      the .config it wasn't built, but there were no errors).  In this commit
      we also update the various defconfigs that use EMAC to use the new
      Kconfig symbol, and explicitly add the NET_VENDOR_IBM guard.
      
      We do not explicitly select the Kconfig dependencies, as this would force
      EMAC on.  Doing it in the defconfig allows more flexibility.
      
      Tested on a canyondlands board.
      Signed-off-by: NTony Breeds <tony@bakeyournoodle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3b3bceef
  3. 27 7月, 2011 1 次提交
  4. 21 7月, 2011 1 次提交
    • J
      fs: push i_mutex and filemap_write_and_wait down into ->fsync() handlers · 02c24a82
      Josef Bacik 提交于
      Btrfs needs to be able to control how filemap_write_and_wait_range() is called
      in fsync to make it less of a painful operation, so push down taking i_mutex and
      the calling of filemap_write_and_wait() down into the ->fsync() handlers.  Some
      file systems can drop taking the i_mutex altogether it seems, like ext3 and
      ocfs2.  For correctness sake I just pushed everything down in all cases to make
      sure that we keep the current behavior the same for everybody, and then each
      individual fs maintainer can make up their mind about what to do from there.
      Thanks,
      Acked-by: NJan Kara <jack@suse.cz>
      Signed-off-by: NJosef Bacik <josef@redhat.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      02c24a82
  5. 20 7月, 2011 1 次提交
  6. 10 6月, 2011 1 次提交
  7. 26 5月, 2011 2 次提交
    • M
      powerpc/cell: Rename ipi functions to match current abstractions · d5a1c193
      Milton Miller 提交于
      Rename functions and arguments to reflect current usage.  iic_cause_ipi
      becomes iic_message_pass and iic_ipi_to_irq becomes iic_msg_to_irq,
      and iic_request_ipi now takes a message (msg) instead of an ipi number.
      Also mesg is renamed to msg.
      
      Commit f1072939 (powerpc: Remove checks for MSG_ALL and
      MSG_ALL_BUT_SELF) connected the smp_message_pass hook for cell to the
      underlying iic_cause_IPI, a platform unique name.  Later 23d72bfd
      (powerpc: Consolidate ipi message mux and demux) added a cause_ipi
      hook to the smp_ops, also used in message passing, but for controllers
      that can not send 4 unique messages and require multiplexing.  It is
      even more confusing that the both take two arguments, but one is the
      small message ordinal and the other is an opaque long data associated
      with the cpu.
      
      Since cell iic maps messages one to one to ipi irqs, rename the
      function and argument to translate from ipi to message.  Also make it
      clear that iic_request_ipi takes a message number as the argument
      for which ipi to create and request.
      
      No functionional change, just renames to avoid future confusion.
      Signed-off-by: NMilton Miller <miltonm@bga.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      d5a1c193
    • M
      powerpc/cell: Use common smp ipi actions · 7ef71d75
      Milton Miller 提交于
      The cell iic interrupt controller has enough software caused interrupts
      to use a unique interrupt for each of the 4 messages powerpc uses.
      This means each interrupt gets its own irq action/data combination.
      
      Use the seperate, optimized, arch common ipi action functions
      registered via the helper smp_request_message_ipi instead passing the
      message as action data to a single action that then demultipexes to
      the required acton via a switch statement.
      
      smp_request_message_ipi will register the action as IRQF_PER_CPU
      and IRQF_DISABLED, and WARN if the allocation fails for some reason,
      so no need to print on that failure.  It will return positive if
      the message will not be used by the kernel, in which case we can
      free the virq.
      
      In addition to elimiating inefficient code, this also corrects the
      error that a kernel built with kexec but without a debugger would
      not register the ipi for kdump to notify the other cpus of a crash.
      
      This also restores the debugger action to be static to kernel/smp.c.
      Signed-off-by: NMilton Miller <miltonm@bga.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      7ef71d75
  8. 19 5月, 2011 7 次提交
    • M
      powerpc/axon_msi: Validate msi irq via chip_data · 95533614
      Milton Miller 提交于
      Instead of checking for rogue msi numbers via the irq_map host field
      set the chip_data to h.host_data (which is the msic struct pointer)
      at map and compare it in get_irq.
      Signed-off-by: NMilton Miller <miltonm@bga.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      95533614
    • M
      powerpc/spider-pic: Get pic from chip_data instead of irq_map · 6b0aea44
      Milton Miller 提交于
      Building on Grant's efforts to remove the irq_map array, this patch
      moves spider-pics use of virq_to_host() to use irq_data_get_chip_data
      and sets the irq chip data in the map call, like most other interrupt
      controllers in powerpc.
      Signed-off-by: NMilton Miller <miltonm@bga.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      6b0aea44
    • M
      powerpc: Remove irq_host_ops->remap hook · da051980
      Milton Miller 提交于
      It was called from irq_create_mapping if that was called for a host
      and hwirq that was previously mapped, "to update the flags".  But the
      only implementation was in beat_interrupt and all it did was repeat a
      hypervisor call without error checking that was performed with error
      checking at the beginning of the map hook.  In addition, the comment on
      the beat remap hook says it will only called once for a given mapping,
      which would apply to map not remap.
      
      All flags should be known by the time the match hook is called, before
      we call the map hook.  Removing this mostly unused hook will simpify
      the requirements of irq_domain concept.
      Signed-off-by: NMilton Miller <miltonm@bga.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      da051980
    • M
      powerpc: Consolidate ipi message mux and demux · 23d72bfd
      Milton Miller 提交于
      Consolidate the mux and demux of ipi messages into smp.c and call
      a new smp_ops callback to actually trigger the ipi.
      
      The powerpc architecture code is optimised for having 4 distinct
      ipi triggers, which are mapped to 4 distinct messages (ipi many, ipi
      single, scheduler ipi, and enter debugger).  However, several interrupt
      controllers only provide a single software triggered interrupt that
      can be delivered to each cpu.  To resolve this limitation, each smp_ops
      implementation created a per-cpu variable that is manipulated with atomic
      bitops.  Since these lines will be contended they are optimialy marked as
      shared_aligned and take a full cache line for each cpu.  Distro kernels
      may have 2 or 3 of these in their config, each taking per-cpu space
      even though at most one will be in use.
      
      This consolidation removes smp_message_recv and replaces the single call
      actions cases with direct calls from the common message recognition loop.
      The complicated debugger ipi case with its muxed crash handling code is
      moved to debug_ipi_action which is now called from the demux code (instead
      of the multi-message action calling smp_message_recv).
      
      I put a call to reschedule_action to increase the likelyhood of correctly
      merging the anticipated scheduler_ipi() hook coming from the scheduler
      tree; that single required call can be inlined later.
      
      The actual message decode is a copy of the old pseries xics code with its
      memory barriers and cache line spacing, augmented with a per-cpu unsigned
      long based on the book-e doorbell code.  The optional data is set via a
      callback from the implementation and is passed to the new cause-ipi hook
      along with the logical cpu number.  While currently only the doorbell
      implemntation uses this data it should be almost zero cost to retrieve and
      pass it -- it adds a single register load for the argument from the same
      cache line to which we just completed a store and the register is dead
      on return from the call.  I extended the data element from unsigned int
      to unsigned long in case some other code wanted to associate a pointer.
      
      The doorbell check_self is replaced by a call to smp_muxed_ipi_resend,
      conditioned on the CPU_DBELL feature.  The ifdef guard could be relaxed
      to CONFIG_SMP but I left it with BOOKE for now.
      
      Also, the doorbell interrupt vector for book-e was not calling irq_enter
      and irq_exit, which throws off cpu accounting and causes code to not
      realize it is running in interrupt context.  Add the missing calls.
      Signed-off-by: NMilton Miller <miltonm@bga.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      23d72bfd
    • M
      powerpc: Remove stubbed beat smp support · d4fc8fe1
      Milton Miller 提交于
      I have no idea if the beat hypervisor supports multiple cpus in
      a partition, but the code has not been touched since these stubs
      were added in February of 2007 except to move them in April of 2008.
      These are stubs: start_cpu always returns fail (which is dropped),
      the message passing and reciving are empty functions, and the top
      of file comment says "Incomplete".
      Signed-off-by: NMilton Miller <miltonm@bga.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      d4fc8fe1
    • M
      powerpc: Remove alloc_maybe_bootmem for zalloc version · a56555e5
      Milton Miller 提交于
      Replace all remaining callers of alloc_maybe_bootmem with
      zalloc_maybe_bootmem.   The callsite in pci_dn is followed with a
      memset to clear the memory, and not zeroing at the other callsites
      in the celleb fake pci code could lead to following uninitialized
      memory as pointers or even freeing said pointers on error paths.
      Signed-off-by: NMilton Miller <miltonm@bga.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      a56555e5
    • M
      powerpc: Remove checks for MSG_ALL and MSG_ALL_BUT_SELF · f1072939
      Milton Miller 提交于
      Now that smp_ops->smp_message_pass is always called with an (online) cpu
      number for the target remove the checks for MSG_ALL and MSG_ALL_BUT_SELF.
      Signed-off-by: NMilton Miller <miltonm@bga.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      f1072939
  9. 12 5月, 2011 1 次提交
  10. 04 5月, 2011 2 次提交
  11. 27 4月, 2011 3 次提交
  12. 20 4月, 2011 1 次提交
  13. 31 3月, 2011 1 次提交
  14. 30 3月, 2011 2 次提交
  15. 29 3月, 2011 3 次提交
  16. 28 3月, 2011 1 次提交
  17. 14 3月, 2011 1 次提交
  18. 10 3月, 2011 1 次提交
  19. 28 2月, 2011 1 次提交
  20. 21 1月, 2011 5 次提交
  21. 07 1月, 2011 3 次提交
    • N
      fs: icache RCU free inodes · fa0d7e3d
      Nick Piggin 提交于
      RCU free the struct inode. This will allow:
      
      - Subsequent store-free path walking patch. The inode must be consulted for
        permissions when walking, so an RCU inode reference is a must.
      - sb_inode_list_lock to be moved inside i_lock because sb list walkers who want
        to take i_lock no longer need to take sb_inode_list_lock to walk the list in
        the first place. This will simplify and optimize locking.
      - Could remove some nested trylock loops in dcache code
      - Could potentially simplify things a bit in VM land. Do not need to take the
        page lock to follow page->mapping.
      
      The downsides of this is the performance cost of using RCU. In a simple
      creat/unlink microbenchmark, performance drops by about 10% due to inability to
      reuse cache-hot slab objects. As iterations increase and RCU freeing starts
      kicking over, this increases to about 20%.
      
      In cases where inode lifetimes are longer (ie. many inodes may be allocated
      during the average life span of a single inode), a lot of this cache reuse is
      not applicable, so the regression caused by this patch is smaller.
      
      The cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,
      however this adds some complexity to list walking and store-free path walking,
      so I prefer to implement this at a later date, if it is shown to be a win in
      real situations. I haven't found a regression in any non-micro benchmark so I
      doubt it will be a problem.
      Signed-off-by: NNick Piggin <npiggin@kernel.dk>
      fa0d7e3d
    • N
      fs: dcache rationalise dget variants · dc0474be
      Nick Piggin 提交于
      dget_locked was a shortcut to avoid the lazy lru manipulation when we already
      held dcache_lock (lru manipulation was relatively cheap at that point).
      However, how that the lru lock is an innermost one, we never hold it at any
      caller, so the lock cost can now be avoided. We already have well working lazy
      dcache LRU, so it should be fine to defer LRU manipulations to scan time.
      Signed-off-by: NNick Piggin <npiggin@kernel.dk>
      dc0474be
    • N
      fs: dcache remove dcache_lock · b5c84bf6
      Nick Piggin 提交于
      dcache_lock no longer protects anything. remove it.
      Signed-off-by: NNick Piggin <npiggin@kernel.dk>
      b5c84bf6