Ingo Molnar
68e21be291
sched/headers: Move task->mm handling methods to <linux/sched/mm.h>
...
Move the following task->mm helper APIs into a new header file,
<linux/sched/mm.h>, to further reduce the size and complexity
of <linux/sched.h>.
Here are how the APIs are used in various kernel files:
# mm_alloc():
arch/arm/mach-rpc/ecard.c
fs/exec.c
include/linux/sched/mm.h
kernel/fork.c
# __mmdrop():
arch/arc/include/asm/mmu_context.h
include/linux/sched/mm.h
kernel/fork.c
# mmdrop():
arch/arm/mach-rpc/ecard.c
arch/m68k/sun3/mmu_emu.c
arch/x86/mm/tlb.c
drivers/gpu/drm/amd/amdkfd/kfd_process.c
drivers/gpu/drm/i915/i915_gem_userptr.c
drivers/infiniband/hw/hfi1/file_ops.c
drivers/vfio/vfio_iommu_spapr_tce.c
fs/exec.c
fs/proc/base.c
fs/proc/task_mmu.c
fs/proc/task_nommu.c
fs/userfaultfd.c
include/linux/mmu_notifier.h
include/linux/sched/mm.h
kernel/fork.c
kernel/futex.c
kernel/sched/core.c
mm/khugepaged.c
mm/ksm.c
mm/mmu_context.c
mm/mmu_notifier.c
mm/oom_kill.c
virt/kvm/kvm_main.c
# mmdrop_async_fn():
include/linux/sched/mm.h
# mmdrop_async():
include/linux/sched/mm.h
kernel/fork.c
# mmget_not_zero():
fs/userfaultfd.c
include/linux/sched/mm.h
mm/oom_kill.c
# mmput():
arch/arc/include/asm/mmu_context.h
arch/arc/kernel/troubleshoot.c
arch/frv/mm/mmu-context.c
arch/powerpc/platforms/cell/spufs/context.c
arch/sparc/include/asm/mmu_context_32.h
drivers/android/binder.c
drivers/gpu/drm/etnaviv/etnaviv_gem.c
drivers/gpu/drm/i915/i915_gem_userptr.c
drivers/infiniband/core/umem.c
drivers/infiniband/core/umem_odp.c
drivers/infiniband/core/uverbs_main.c
drivers/infiniband/hw/mlx4/main.c
drivers/infiniband/hw/mlx5/main.c
drivers/infiniband/hw/usnic/usnic_uiom.c
drivers/iommu/amd_iommu_v2.c
drivers/iommu/intel-svm.c
drivers/lguest/lguest_user.c
drivers/misc/cxl/fault.c
drivers/misc/mic/scif/scif_rma.c
drivers/oprofile/buffer_sync.c
drivers/vfio/vfio_iommu_type1.c
drivers/vhost/vhost.c
drivers/xen/gntdev.c
fs/exec.c
fs/proc/array.c
fs/proc/base.c
fs/proc/task_mmu.c
fs/proc/task_nommu.c
fs/userfaultfd.c
include/linux/sched/mm.h
kernel/cpuset.c
kernel/events/core.c
kernel/events/uprobes.c
kernel/exit.c
kernel/fork.c
kernel/ptrace.c
kernel/sys.c
kernel/trace/trace_output.c
kernel/tsacct.c
mm/memcontrol.c
mm/memory.c
mm/mempolicy.c
mm/migrate.c
mm/mmu_notifier.c
mm/nommu.c
mm/oom_kill.c
mm/process_vm_access.c
mm/rmap.c
mm/swapfile.c
mm/util.c
virt/kvm/async_pf.c
# mmput_async():
include/linux/sched/mm.h
kernel/fork.c
mm/oom_kill.c
# get_task_mm():
arch/arc/kernel/troubleshoot.c
arch/powerpc/platforms/cell/spufs/context.c
drivers/android/binder.c
drivers/gpu/drm/etnaviv/etnaviv_gem.c
drivers/infiniband/core/umem.c
drivers/infiniband/core/umem_odp.c
drivers/infiniband/hw/mlx4/main.c
drivers/infiniband/hw/mlx5/main.c
drivers/infiniband/hw/usnic/usnic_uiom.c
drivers/iommu/amd_iommu_v2.c
drivers/iommu/intel-svm.c
drivers/lguest/lguest_user.c
drivers/misc/cxl/fault.c
drivers/misc/mic/scif/scif_rma.c
drivers/oprofile/buffer_sync.c
drivers/vfio/vfio_iommu_type1.c
drivers/vhost/vhost.c
drivers/xen/gntdev.c
fs/proc/array.c
fs/proc/base.c
fs/proc/task_mmu.c
include/linux/sched/mm.h
kernel/cpuset.c
kernel/events/core.c
kernel/exit.c
kernel/fork.c
kernel/ptrace.c
kernel/sys.c
kernel/trace/trace_output.c
kernel/tsacct.c
mm/memcontrol.c
mm/memory.c
mm/mempolicy.c
mm/migrate.c
mm/mmu_notifier.c
mm/nommu.c
mm/util.c
# mm_access():
fs/proc/base.c
include/linux/sched/mm.h
kernel/fork.c
mm/process_vm_access.c
# mm_release():
arch/arc/include/asm/mmu_context.h
fs/exec.c
include/linux/sched/mm.h
include/uapi/linux/sched.h
kernel/exit.c
kernel/fork.c
Acked-by: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org >
2017-03-03 01:43:28 +01:00
Ingo Molnar
589ee62844
sched/headers: Prepare to remove the <linux/mm_types.h> dependency from <linux/sched.h>
...
Update code that relied on sched.h including various MM types for them.
This will allow us to remove the <linux/mm_types.h> include from <linux/sched.h>.
Acked-by: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org >
2017-03-02 08:42:37 +01:00
Vegard Nossum
f1f1007644
mm: add new mmgrab() helper
...
Apart from adding the helper function itself, the rest of the kernel is
converted mechanically using:
git grep -l 'atomic_inc.*mm_count' | xargs sed -i 's/atomic_inc(&\(.*\)->mm_count);/mmgrab\(\1\);/'
git grep -l 'atomic_inc.*mm_count' | xargs sed -i 's/atomic_inc(&\(.*\)\.mm_count);/mmgrab\(\&\1\);/'
This is needed for a later patch that hooks into the helper, but might
be a worthwhile cleanup on its own.
(Michal Hocko provided most of the kerneldoc comment.)
Link: http://lkml.kernel.org/r/20161218123229.22952-1-vegard.nossum@oracle.com
Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com >
Acked-by: Michal Hocko <mhocko@suse.com >
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org >
Acked-by: David Rientjes <rientjes@google.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2017-02-27 18:43:48 -08:00
Thomas Gleixner
fc6d73d674
arch/hotplug: Call into idle with a proper state
...
Let the non boot cpus call into idle with the corresponding hotplug state, so
the hotplug core can handle the further bringup. That's a first step to
convert the boot side of the hotplugged cpus to do all the synchronization
with the other side through the state machine. For now it'll only start the
hotplug thread and kick the full bringup of the cpu.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-arch@vger.kernel.org
Cc: Rik van Riel <riel@redhat.com >
Cc: Rafael Wysocki <rafael.j.wysocki@intel.com >
Cc: "Srivatsa S. Bhat" <srivatsa@mit.edu >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Arjan van de Ven <arjan@linux.intel.com >
Cc: Sebastian Siewior <bigeasy@linutronix.de >
Cc: Rusty Russell <rusty@rustcorp.com.au >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Oleg Nesterov <oleg@redhat.com >
Cc: Tejun Heo <tj@kernel.org >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Paul Turner <pjt@google.com >
Link: http://lkml.kernel.org/r/20160226182341.614102639@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2016-03-01 20:36:57 +01:00
Jiang Liu
bd09f60618
smp, hexagon: kill SMP single function call interrupt
...
Commit 9a46ad6d6d
"smp: make smp_call_function_many() use logic
similar to smp_call_function_single()" has unified the way to handle
single and multiple cross-CPU function calls. Now only one intterupt
is needed for architecture specific code to support generic SMP function
call interfaces, so kill the redundant single function call interrupt.
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Shaohua Li <shli@kernel.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Jiri Kosina <trivial@kernel.org >
Cc: Richard Kuo <rkuo@codeaurora.org >
Cc: linux-hexagon@vger.kernel.org
Signed-off-by: Jiang Liu <liuj97@gmail.com >
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
2014-04-04 18:20:01 -05:00
Paul Gortmaker
7ddc839977
hexagon: delete __cpuinit usage from all hexagon files
...
The __cpuinit type of throwaway sections might have made sense
some time ago when RAM was more constrained, but now the savings
do not offset the cost and complications. For example, the fix in
commit 5e427ec2d0
("x86: Fix bit corruption at CPU resume time")
is a good example of the nasty type of bugs that can be created
with improper use of the various __init prefixes.
After a discussion on LKML[1] it was decided that cpuinit should go
the way of devinit and be phased out. Once all the users are gone,
we can then finally remove the macros themselves from linux/init.h.
Note that some harmless section mismatch warnings may result, since
notify_cpu_starting() and cpu_up() are arch independent (kernel/cpu.c)
are flagged as __cpuinit -- so if we remove the __cpuinit from
arch specific callers, we will also get section mismatch warnings.
As an intermediate step, we intend to turn the linux/init.h cpuinit
content into no-ops as early as possible, since that will get rid
of these warnings. In any case, they are temporary and harmless.
This removes all the arch/hexagon uses of the __cpuinit macros from
all C files. Currently hexagon does not have any __CPUINIT used in
assembly files.
[1] https://lkml.org/lkml/2013/5/20/589
Cc: Richard Kuo <rkuo@codeaurora.org >
Acked-by: Richard Kuo <rkuo@codeaurora.org >
Cc: linux-hexagon@vger.kernel.org
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com >
2013-07-14 19:36:55 -04:00
Thomas Gleixner
4e0fcc5672
hexagon: Use generic idle loop
...
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Rusty Russell <rusty@rustcorp.com.au >
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Reviewed-by: Cc: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com >
Cc: Magnus Damm <magnus.damm@gmail.com >
Acked-by: Richard Kuo <rkuo@codeaurora.org >
Link: http://lkml.kernel.org/r/20130321215234.338692935@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2013-04-08 17:39:25 +02:00
Richard Kuo
e1858b2a21
Hexagon: Copyright marking changes
...
Code Aurora Forum (CAF) is becoming a part of Linux Foundation Labs.
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
2012-10-18 17:07:21 -05:00
Yong Zhang
4ee0444beb
hexagon: SMP: Remove call to ipi_call_lock()/ipi_call_unlock()
...
ipi_call_lock/unlock() lock resp. unlock call_function.lock. This lock
protects only the call_function data structure itself, but it's
completely unrelated to cpu_online_mask. The mask to which the IPIs
are sent is calculated before call_function.lock is taken in
smp_call_function_many(), so the locking around set_cpu_online() is
pointless and can be removed.
[ tglx: Massaged changelog ]
Signed-off-by: Yong Zhang <yong.zhang0@gmail.com >
Cc: ralf@linux-mips.org
Cc: sshtylyov@mvista.com
Cc: david.daney@cavium.com
Cc: nikunj@linux.vnet.ibm.com
Cc: paulmck@linux.vnet.ibm.com
Cc: axboe@kernel.dk
Cc: Richard Kuo <rkuo@codeaurora.org >
Cc: linux-hexagon@vger.kernel.org
Link: http://lkml.kernel.org/r/1338275765-3217-2-git-send-email-yong.zhang0@gmail.com
Acked-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com >
Acked-by: Peter Zijlstra <peterz@infradead.org >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2012-06-05 17:27:11 +02:00
Thomas Gleixner
3b0132ce4f
hexagon: Use generic idle thread allocation
...
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Rusty Russell <rusty@rustcorp.com.au >
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com >
Cc: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com >
Acked-and-tested-by: Richard Kuo <rkuo@codeaurora.org >
Link: http://lkml.kernel.org/r/20120420124557.581762105@linutronix.de
2012-04-26 12:06:11 +02:00
Thomas Gleixner
8239c25f47
smp: Add task_struct argument to __cpu_up()
...
Preparatory patch to make the idle thread allocation for secondary
cpus generic.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Rusty Russell <rusty@rustcorp.com.au >
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com >
Cc: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com >
Cc: Matt Turner <mattst88@gmail.com >
Cc: Russell King <linux@arm.linux.org.uk >
Cc: Mike Frysinger <vapier@gentoo.org >
Cc: Jesper Nilsson <jesper.nilsson@axis.com >
Cc: Richard Kuo <rkuo@codeaurora.org >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Hirokazu Takata <takata@linux-m32r.org >
Cc: Ralf Baechle <ralf@linux-mips.org >
Cc: David Howells <dhowells@redhat.com >
Cc: James E.J. Bottomley <jejb@parisc-linux.org >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com >
Cc: Paul Mundt <lethal@linux-sh.org >
Cc: David S. Miller <davem@davemloft.net >
Cc: Chris Metcalf <cmetcalf@tilera.com >
Cc: Richard Weinberger <richard@nod.at >
Cc: x86@kernel.org
Link: http://lkml.kernel.org/r/20120420124556.964170564@linutronix.de
2012-04-26 12:06:09 +02:00
Richard Kuo
e00574b7f3
hexagon: add missing cpu.h include
...
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
2012-04-23 12:57:24 -05:00
Srivatsa S. Bhat
57f27cca7a
hexagon/CPU hotplug: Add missing call to notify_cpu_starting()
...
The scheduler depends on receiving the CPU_STARTING notification, without
which we end up into a lot of trouble. So add the missing call to
notify_cpu_starting() in the bringup code.
Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com >
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
2012-04-23 12:57:11 -05:00
Rusty Russell
0b5f9c005d
remove references to cpu_*_map in arch/
...
This has been obsolescent for a while; time for the final push.
In adjacent context, replaced old cpus_* with cpumask_*.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
Acked-by: David S. Miller <davem@davemloft.net > (arch/sparc)
Acked-by: Chris Metcalf <cmetcalf@tilera.com > (arch/tile)
Cc: user-mode-linux-devel@lists.sourceforge.net
Cc: Russell King <linux@arm.linux.org.uk >
Cc: linux-arm-kernel@lists.infradead.org
Cc: Richard Kuo <rkuo@codeaurora.org >
Cc: linux-hexagon@vger.kernel.org
Cc: Ralf Baechle <ralf@linux-mips.org >
Cc: linux-mips@linux-mips.org
Cc: Kyle McMartin <kyle@mcmartin.ca >
Cc: Helge Deller <deller@gmx.de >
Cc: sparclinux@vger.kernel.org
2012-03-29 15:38:30 +10:30
David Howells
8335896bed
Disintegrate asm/system.h for Hexagon
...
Disintegrate asm/system.h for Hexagon. Not compiled.
Signed-off-by: David Howells <dhowells@redhat.com >
Acked-by: Richard Kuo <rkuo@codeaurora.org >
cc: linux-hexagon@vger.kernel.org
2012-03-28 18:30:02 +01:00
Peter Zijlstra
5fbd036b55
sched: Cleanup cpu_active madness
...
Stepan found:
CPU0 CPUn
_cpu_up()
__cpu_up()
boostrap()
notify_cpu_starting()
set_cpu_online()
while (!cpu_active())
cpu_relax()
<PREEMPT-out>
smp_call_function(.wait=1)
/* we find cpu_online() is true */
arch_send_call_function_ipi_mask()
/* wait-forever-more */
<PREEMPT-in>
local_irq_enable()
cpu_notify(CPU_ONLINE)
sched_cpu_active()
set_cpu_active()
Now the purpose of cpu_active is mostly with bringing down a cpu, where
we mark it !active to avoid the load-balancer from moving tasks to it
while we tear down the cpu. This is required because we only update the
sched_domain tree after we brought the cpu-down. And this is needed so
that some tasks can still run while we bring it down, we just don't want
new tasks to appear.
On cpu-up however the sched_domain tree doesn't yet include the new cpu,
so its invisible to the load-balancer, regardless of the active state.
So instead of setting the active state after we boot the new cpu (and
consequently having to wait for it before enabling interrupts) set the
cpu active before we set it online and avoid the whole mess.
Reported-by: Stepan Moskovchenko <stepanm@codeaurora.org >
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Acked-by: Thomas Gleixner <tglx@linutronix.de >
Link: http://lkml.kernel.org/r/1323965362.18942.71.camel@twins
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2012-03-12 20:43:15 +01:00
Richard Kuo
43afdf5083
Hexagon: Add SMP support
...
Signed-off-by: Richard Kuo <rkuo@codeaurora.org >
Signed-off-by: Linas Vepstas <linas@codeaurora.org >
Acked-by: Arnd Bergmann <arnd@arndb.de >
Reviewed-by: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2011-11-01 07:34:20 -07:00