1. 12 12月, 2011 3 次提交
    • P
      powerpc: Tell RCU about idle after hcall tracing · a7b152d5
      Paul E. McKenney 提交于
      The PowerPC pSeries platform (CONFIG_PPC_PSERIES=y) enables
      hypervisor-call tracing for CONFIG_TRACEPOINTS=y kernels.  One of the
      hypervisor calls that is traced is the H_CEDE call in the idle loop
      that tells the hypervisor that this OS instance no longer needs the
      current CPU.  However, tracing uses RCU, so this combination of kernel
      configuration variables needs to avoid telling RCU about the current CPU's
      idleness until after the H_CEDE-entry tracing completes on the one hand,
      and must tell RCU that the the current CPU is no longer idle before the
      H_CEDE-exit tracing starts.
      
      In all other cases, it suffices to inform RCU of CPU idleness upon
      idle-loop entry and exit.
      
      This commit makes the required adjustments.
      Signed-off-by: NPaul E. McKenney <paul.mckenney@linaro.org>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Reviewed-by: NJosh Triplett <josh@joshtriplett.org>
      a7b152d5
    • F
      nohz: Allow rcu extended quiescent state handling seperately from tick stop · 2bbb6817
      Frederic Weisbecker 提交于
      It is assumed that rcu won't be used once we switch to tickless
      mode and until we restart the tick. However this is not always
      true, as in x86-64 where we dereference the idle notifiers after
      the tick is stopped.
      
      To prepare for fixing this, add two new APIs:
      tick_nohz_idle_enter_norcu() and tick_nohz_idle_exit_norcu().
      
      If no use of RCU is made in the idle loop between
      tick_nohz_enter_idle() and tick_nohz_exit_idle() calls, the arch
      must instead call the new *_norcu() version such that the arch doesn't
      need to call rcu_idle_enter() and rcu_idle_exit().
      
      Otherwise the arch must call tick_nohz_enter_idle() and
      tick_nohz_exit_idle() and also call explicitly:
      
      - rcu_idle_enter() after its last use of RCU before the CPU is put
      to sleep.
      - rcu_idle_exit() before the first use of RCU after the CPU is woken
      up.
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Frysinger <vapier@gentoo.org>
      Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
      Cc: David Miller <davem@davemloft.net>
      Cc: Chris Metcalf <cmetcalf@tilera.com>
      Cc: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      2bbb6817
    • F
      nohz: Separate out irq exit and idle loop dyntick logic · 280f0677
      Frederic Weisbecker 提交于
      The tick_nohz_stop_sched_tick() function, which tries to delay
      the next timer tick as long as possible, can be called from two
      places:
      
      - From the idle loop to start the dytick idle mode
      - From interrupt exit if we have interrupted the dyntick
      idle mode, so that we reprogram the next tick event in
      case the irq changed some internal state that requires this
      action.
      
      There are only few minor differences between both that
      are handled by that function, driven by the ts->inidle
      cpu variable and the inidle parameter. The whole guarantees
      that we only update the dyntick mode on irq exit if we actually
      interrupted the dyntick idle mode, and that we enter in RCU extended
      quiescent state from idle loop entry only.
      
      Split this function into:
      
      - tick_nohz_idle_enter(), which sets ts->inidle to 1, enters
      dynticks idle mode unconditionally if it can, and enters into RCU
      extended quiescent state.
      
      - tick_nohz_irq_exit() which only updates the dynticks idle mode
      when ts->inidle is set (ie: if tick_nohz_idle_enter() has been called).
      
      To maintain symmetry, tick_nohz_restart_sched_tick() has been renamed
      into tick_nohz_idle_exit().
      
      This simplifies the code and micro-optimize the irq exit path (no need
      for local_irq_save there). This also prepares for the split between
      dynticks and rcu extended quiescent state logics. We'll need this split to
      further fix illegal uses of RCU in extended quiescent states in the idle
      loop.
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Frysinger <vapier@gentoo.org>
      Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
      Cc: David Miller <davem@davemloft.net>
      Cc: Chris Metcalf <cmetcalf@tilera.com>
      Cc: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Reviewed-by: NJosh Triplett <josh@joshtriplett.org>
      280f0677
  2. 24 11月, 2011 2 次提交
  3. 16 11月, 2011 3 次提交
  4. 08 11月, 2011 2 次提交
  5. 04 11月, 2011 3 次提交
  6. 01 11月, 2011 13 次提交
    • P
      powerpc: remove non-required uses of include <linux/module.h> · ead53f22
      Paul Gortmaker 提交于
      None of the files touched here are modules, and they are not
      exporting any symbols either -- so there is no need to be including
      the module.h.  Builds of all the files remains successful.
      
      Even kernel/module.c does not need to include it, since it includes
      linux/moduleloader.h instead.
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      ead53f22
    • P
      powerpc: various straight conversions from module.h --> export.h · 4b16f8e2
      Paul Gortmaker 提交于
      All these files were including module.h just for the basic
      EXPORT_SYMBOL infrastructure.  We can shift them off to the
      export.h header which is a way smaller footprint and thus
      realize some compile time gains.
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      4b16f8e2
    • P
      powerpc: convert hvconsole.c to export.h ; fix implicit use of errno.h · e9848d62
      Paul Gortmaker 提交于
      This file is only exporting symbols and so should use export.h
      and not module.h header.  But in doing the conversion, we will
      uncover that it was implicitly using errno.h via module.h:
      
        CC      arch/powerpc/platforms/pseries/hvconsole.o
      arch/powerpc/platforms/pseries/hvconsole.c: In function 'hvc_put_chars':
      arch/powerpc/platforms/pseries/hvconsole.c:77: error: 'EIO' undeclared (first use in this function)
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      e9848d62
    • P
      powerpc: fix two implicit header uses in pseries/plpar_wrappers.h · 614f15b4
      Paul Gortmaker 提交于
      Removing the implicit presence of module.h from almost everywhere
      will reveal this implicit usage of paca.h and string.h headers as
      follows:
      
      arch/powerpc/platforms/pseries/plpar_wrappers.h:22: error: implicit declaration of function 'get_lppaca'
      arch/powerpc/platforms/pseries/plpar_wrappers.h:208: error: implicit declaration of function 'memcpy'
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      614f15b4
    • P
      powerpc: fix implicit notifier use in converting to export.h · 2a7156b9
      Paul Gortmaker 提交于
      We can convert this file to using export.h since it only wants
      to export symbols, but when we do we'll see also that it was
      implicitly getting notifier.h from module.h via this failure:
      
        CC      arch/powerpc/platforms/cell/spu_notify.o
      arch/powerpc/platforms/cell/spu_notify.c:28: warning: type defaults to 'int' in declaration of 'BLOCKING_NOTIFIER_HEAD'
      arch/powerpc/platforms/cell/spu_notify.c:28: warning: parameter names (without types) in function declaration
      arch/powerpc/platforms/cell/spu_notify.c: In function 'spu_switch_notify':
      arch/powerpc/platforms/cell/spu_notify.c:32: error: implicit declaration of function 'blocking_notifier_call_chain'
      arch/powerpc/platforms/cell/spu_notify.c:32: error: 'spu_switch_notifier' undeclared (first use in this function)
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      2a7156b9
    • P
      powerpc: cell/beat_wrapper.h is implicitly using memcpy functions · 08f1e55c
      Paul Gortmaker 提交于
      This has been relying on the fact that the parent file would have
      module.h (and thus nearly everything) present.  But once we fix that,
      we'll get stuck with this failure:
      
      In file included from arch/powerpc/platforms/cell/beat_spu_priv1.c:26:
      arch/powerpc/platforms/cell/beat_wrapper.h: In function 'beat_eeprom_write':
      arch/powerpc/platforms/cell/beat_wrapper.h:160: error: implicit declaration of function 'memcpy'
      
      and many more instances of the same.  Fix it in advance.
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      08f1e55c
    • P
      powerpc: Fix up implicit sched.h users · 62fe91bb
      Paul Gortmaker 提交于
      They are getting it through device.h --> module.h path, but we want
      to clean that up.  This is a sample of what will happen if we don't:
      
        pseries/iommu.c: In function 'tce_build_pSeriesLP':
        pseries/iommu.c:136: error: implicit declaration of function 'show_stack'
      
        pseries/eeh.c: In function 'eeh_token_to_phys':
        pseries/eeh.c:359: error: 'init_mm' undeclared (first use in this function)
      
        pseries/eeh_event.c: In function 'eeh_event_handler':
        pseries/eeh_event.c:63: error: implicit declaration of function 'daemonize'
        pseries/eeh_event.c:64: error: implicit declaration of function 'set_current_state'
        pseries/eeh_event.c:64: error: 'TASK_INTERRUPTIBLE' undeclared (first use in this function)
        pseries/eeh_event.c:64: error: (Each undeclared identifier is reported only once
        pseries/eeh_event.c:64: error: for each function it appears in.)
        pseries/eeh_event.c: In function 'eeh_thread_launcher':
        pseries/eeh_event.c:109: error: 'CLONE_KERNEL' undeclared (first use in this function)
      
        hotplug-cpu.c: In function 'pseries_mach_cpu_die':
        hotplug-cpu.c:115: error: implicit declaration of function 'idle_task_exit'
      
        kernel/swsusp_64.c: In function 'do_after_copyback':
        kernel/swsusp_64.c:17: error: implicit declaration of function 'touch_softlockup_watchdog'
      
        cell/spufs/context.c: In function 'alloc_spu_context':
        cell/spufs/context.c:60: error: implicit declaration of function 'get_task_mm'
        cell/spufs/context.c:60: warning: assignment makes pointer from integer without a cast
        cell/spufs/context.c: In function 'spu_forget':
        cell/spufs/context.c:127: error: implicit declaration of function 'mmput'
      
        pasemi/dma_lib.c: In function 'pasemi_dma_stop_chan':
        pasemi/dma_lib.c:332: error: implicit declaration of function 'cond_resched'
      
        sysdev/fsl_lbc.c: In function 'fsl_lbc_ctrl_irq':
        sysdev/fsl_lbc.c:247: error: 'TASK_NORMAL' undeclared (first use in this function)
      
      Add in sched.h so these get the definitions they are looking for.
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      62fe91bb
    • P
      powerpc: Fix up implicit stat.h users · b56eade5
      Paul Gortmaker 提交于
      They get it via module.h (via device.h) but we want to clean that up.
      When we do, we'll get things like:
      
      ibmebus.c:314: error: 'S_IWUSR' undeclared here (not in a function)
      vio.c:972: error: 'S_IWUSR' undeclared here (not in a function)
      
      so add in the stat header it is using explicitly in advance.
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      b56eade5
    • P
      powerpc: Fix up modules that should be including module.h · 7dfe293c
      Paul Gortmaker 提交于
      So that we can clean up the header files and not be relying
      on implicit includes from device.h ---> module.h
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      7dfe293c
    • P
      powerpc: include export.h for files using EXPORT_SYMBOL/THIS_MODULE · 93087948
      Paul Gortmaker 提交于
      Fix failures in powerpc associated with the previously allowed
      implicit module.h presence that now lead to things like this:
      
      arch/powerpc/mm/mmu_context_hash32.c:76:1: error: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/powerpc/mm/tlb_hash32.c:48:1: error: type defaults to 'int' in declaration of 'EXPORT_SYMBOL'
      arch/powerpc/kernel/pci_32.c:51:1: error: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
      arch/powerpc/kernel/iomap.c:36:1: error: type defaults to 'int' in declaration of 'EXPORT_SYMBOL'
      arch/powerpc/platforms/44x/canyonlands.c:126:1: error: type defaults to 'int' in declaration of 'EXPORT_SYMBOL'
      arch/powerpc/kvm/44x.c:168:59: error: 'THIS_MODULE' undeclared (first use in this function)
      
      [with several contibutions from Stephen Rothwell <sfr@canb.auug.org.au>]
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      93087948
    • P
      powerpc: add export.h to files making use of EXPORT_SYMBOL · 66b15db6
      Paul Gortmaker 提交于
      With module.h being implicitly everywhere via device.h, the absence
      of explicitly including something for EXPORT_SYMBOL went unnoticed.
      Since we are heading to fix things up and clean module.h from the
      device.h file, we need to explicitly include these files now.
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      66b15db6
    • P
      powerpc: drop unused Kconfig symbols · 6805ab6d
      Paul Bolle 提交于
      Signed-off-by: NPaul Bolle <pebolle@tiscali.nl>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      6805ab6d
    • P
      powerpc: 40x: drop unused Kconfig symbol · 21a06da3
      Paul Bolle 提交于
      Signed-off-by: NPaul Bolle <pebolle@tiscali.nl>
      Acked-by: NJosh Boyer <jwboyer@gmail.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      21a06da3
  7. 14 10月, 2011 1 次提交
  8. 13 10月, 2011 1 次提交
    • K
      powerpc/85xx: Setup secondary cores PIR with hard SMP id · 45116806
      Kumar Gala 提交于
      Normally logical and hard cpu ID are the same, however in same cases like
      on the P3060 they may differ.  Where the logical is 0..5, the hard id
      goes 0,1,4..7.  This can causes issues for places we utilize PIR to index
      into array like in debug exception handlers for finding the exception
      stack.
      
      Move to setting up PIR with hard_smp_processor_id fixes the issue.
      Signed-off-by: NKumar Gala <galak@kernel.crashing.org>
      45116806
  9. 12 10月, 2011 4 次提交
  10. 07 10月, 2011 2 次提交
  11. 05 10月, 2011 1 次提交
  12. 30 9月, 2011 1 次提交
  13. 29 9月, 2011 1 次提交
  14. 23 9月, 2011 1 次提交
  15. 20 9月, 2011 2 次提交