]>
Git Repo - linux.git/log
Peter Zijlstra [Wed, 1 Mar 2017 15:23:30 +0000 (16:23 +0100)]
locking/lockdep: Add nest_lock integrity test
Boqun reported that hlock->references can overflow. Add a debug test
for that to generate a clear error when this happens.
Without this, lockdep is likely to report a mysterious failure on
unlock.
Reported-by: Boqun Feng <[email protected] >
Signed-off-by: Peter Zijlstra (Intel) <[email protected] >
Cc: Andrew Morton <[email protected] >
Cc: Chris Wilson <[email protected] >
Cc: Linus Torvalds <[email protected] >
Cc: Nicolai Hähnle <[email protected] >
Cc: Paul E. McKenney <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Chris Wilson [Tue, 28 Feb 2017 09:40:11 +0000 (09:40 +0000)]
locking/ww_mutex: Replace cpu_relax() with cond_resched() for tests
When busy-spinning on a ww_mutex_trylock(), we depend upon the other
thread advancing and releasing the lock. This can not happen on a single
CPU unless we relinquish it:
[ ] NMI watchdog: BUG: soft lockup - CPU#0 stuck for 22s! [kworker/0:1:18]
...
[ ] Call Trace:
[ ] mutex_trylock()
[ ] test_mutex_work+0x31/0x56
[ ] process_one_work+0x1b4/0x2f9
[ ] worker_thread+0x1b0/0x27c
[ ] kthread+0xd1/0xd3
[ ] ret_from_fork+0x19/0x30
Reported-by: Fengguang Wu <[email protected] >
Signed-off-by: Chris Wilson <[email protected] >
Signed-off-by: Peter Zijlstra (Intel) <[email protected] >
Cc: Andrew Morton <[email protected] >
Cc: Linus Torvalds <[email protected] >
Cc: Paul E. McKenney <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Fixes: f2a5fec17395 ("locking/ww_mutex: Begin kselftests for ww_mutex")
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Thu, 2 Mar 2017 07:51:32 +0000 (08:51 +0100)]
Merge branch 'linus' into locking/urgent, to pick up fixes
Peter Zijlstra [Wed, 1 Mar 2017 14:53:38 +0000 (15:53 +0100)]
sched/clock, x86/tsc: Rework the x86 'unstable' sched_clock() interface
Wanpeng Li reported that since the following commit:
acb04058de49 ("sched/clock: Fix hotplug crash")
... KVM always runs with unstable sched-clock even though KVM's
kvm_clock _is_ stable.
The problem is that we've tied clear_sched_clock_stable() to the TSC
state, and overlooked that sched_clock() is a paravirt function.
Solve this by doing two things:
- tie the sched_clock() stable state more clearly to the TSC stable
state for the normal (!paravirt) case.
- only call clear_sched_clock_stable() when we mark TSC unstable
when we use native_sched_clock().
The first means we can actually run with stable sched_clock in more
situations then before, which is good. And since commit:
12907fbb1a69 ("sched/clock, clocksource: Add optional cs::mark_unstable() method")
... this should be reliable. Since any detection of TSC fail now results
in marking the TSC unstable.
Reported-by: Wanpeng Li <[email protected] >
Signed-off-by: Peter Zijlstra (Intel) <[email protected] >
Cc: Borislav Petkov <[email protected] >
Cc: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Paolo Bonzini <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Fixes: acb04058de49 ("sched/clock: Fix hotplug crash")
Signed-off-by: Ingo Molnar <[email protected] >
Peter Zijlstra [Wed, 1 Mar 2017 09:51:47 +0000 (10:51 +0100)]
sched/core: Fix pick_next_task() for RT,DL
Pavan noticed that the following commit:
49ee576809d8 ("sched/core: Optimize pick_next_task() for idle_sched_class")
... broke RT,DL balancing by robbing them of the opportinty to do new-'idle'
balancing when their last runnable task (on that runqueue) goes away.
Reported-by: Pavan Kondeti <[email protected] >
Signed-off-by: Peter Zijlstra (Intel) <[email protected] >
Cc: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Steven Rostedt <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Fixes: 49ee576809d8 ("sched/core: Optimize pick_next_task() for idle_sched_class")
Signed-off-by: Ingo Molnar <[email protected] >
Peter Zijlstra [Wed, 1 Mar 2017 10:24:35 +0000 (11:24 +0100)]
sched/fair: Make select_idle_cpu() more aggressive
Kitsunyan reported desktop latency issues on his Celeron 887 because
of commit:
1b568f0aabf2 ("sched/core: Optimize SCHED_SMT")
... even though his CPU doesn't do SMT.
The effect of running the SMT code on a !SMT part is basically a more
aggressive select_idle_cpu(). Removing the avg condition fixed things
for him.
I also know FB likes this test gone, even though other workloads like
having it.
For now, take it out by default, until we get a better idea.
Reported-by: kitsunyan <[email protected] >
Signed-off-by: Peter Zijlstra (Intel) <[email protected] >
Cc: Chris Mason <[email protected] >
Cc: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 1 Feb 2017 17:41:24 +0000 (18:41 +0100)]
sched/headers: Move autogroup APIs into <linux/sched/autogroup.h>
Further reduce the size of sched.h.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 1 Feb 2017 17:25:37 +0000 (18:25 +0100)]
sched/headers: Move loadavg related definitions from <linux/sched.h> to <linux/sched/loadavg.h>
Move these bits to <linux/sched/loadavg.h>, to reduce the size and
complexity of <linux/sched.h>.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 1 Feb 2017 17:07:51 +0000 (18:07 +0100)]
sched/headers: Move various ABI definitions to <uapi/linux/sched/types.h>
Move scheduler ABI types (struct sched_attr, struct sched_param, etc.) into
the new UAPI header.
This further reduces the size and complexity of <linux/sched.h>.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 1 Feb 2017 17:00:26 +0000 (18:00 +0100)]
sched/headers, delayacct: Move the 'struct task_delay_info' definition from <linux/sched.h> to <linux/delayacct.h>
The 'struct task_delay_info' definition does not have to be in sched.h,
because task_struct only has a pointer to it.
So move it to <linux/delayacct.h> to reduce the size of <linux/sched.h>.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Tue, 7 Feb 2017 11:07:18 +0000 (12:07 +0100)]
sched/headers: Move scheduler clock interfaces to <linux/sched/clock.h>
Move the sched_clock interfaces into a separate header file, to reduce
the size of sched.h.
Include <linux/sched/clock.h> in all files that made use of one of the
Acked-by: Linus Torvalds <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 1 Feb 2017 16:09:06 +0000 (17:09 +0100)]
sched/headers: Move the wake-queue types and interfaces from sched.h into <linux/sched/wake_q.h>
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 1 Feb 2017 17:47:28 +0000 (18:47 +0100)]
sched/headers: Move idle polling methods to <linux/sched/idle.h>
Further reduce the size of <linux/sched.h> by moving these APIs:
tsk_is_polling()
__current_set_polling()
current_set_polling_and_test()
__current_clr_polling()
current_clr_polling_and_test()
current_clr_polling()
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 1 Feb 2017 15:58:52 +0000 (16:58 +0100)]
sched/headers: Move the wake_up_if_idle() prototype to <linux/sched/idle.h>
No need to clutter <linux/sched.h> with this rarely used prototype.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 1 Feb 2017 15:51:00 +0000 (16:51 +0100)]
sched/headers: Move the 'cpu_idle_type' enum from <linux/sched.h> to <linux/sched/idle.h>
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 1 Feb 2017 15:36:40 +0000 (16:36 +0100)]
sched/headers: Move scheduler topology interfaces to <linux/sched/topology.h>
The vast majority of sched.h users does not require the topology types and
interfaces, so split them out into <linux/sched/topology.h>.
This reduces the size of linux/sched.h by ~6%.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Sun, 5 Feb 2017 15:15:03 +0000 (16:15 +0100)]
sched/headers: Prepare to remove spurious <linux/sched.h> inclusion dependencies
In the following patches we are going to remove various headers
from sched.h and other headers that sched.h includes.
To make those patches build cleanly prepare the scene by adding
dependencies to various files that learned to rely on those
to-be-removed dependencies.
These changes all make sense standalone: they add a header for
a data type that a particular .c or .h file is using.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Sun, 5 Feb 2017 15:03:58 +0000 (16:03 +0100)]
sched/headers: Prepare to remove the <linux/magic.h> include from <linux/sched/task_stack.h>
Update files that depend on the magic.h inclusion.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Sun, 5 Feb 2017 14:30:50 +0000 (15:30 +0100)]
sched/headers: Prepare to move the get_task_struct()/put_task_struct() and related APIs from <linux/sched.h> to <linux/sched/task.h>
But first update usage sites with the new header dependency.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Sun, 5 Feb 2017 13:47:12 +0000 (14:47 +0100)]
sched/headers: Prepare to move _init() prototypes from <linux/sched.h> to <linux/sched/init.h>
But first introduce a trivial header and update usage sites.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Sun, 5 Feb 2017 13:35:41 +0000 (14:35 +0100)]
sched/headers: Prepare to move exit_files() and exit_itimers() from <linux/sched.h> to <linux/sched/task.h>
But first update the usage site.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Sun, 5 Feb 2017 13:31:22 +0000 (14:31 +0100)]
sched/headers: Prepare to move kstack_end() from <linux/sched.h> to <linux/sched/task_stack.h>
But first update the usage sites with the new header dependency.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Sun, 5 Feb 2017 13:24:31 +0000 (14:24 +0100)]
sched/headers, vfs/execve: Prepare to move the do_execve*() prototypes from <linux/sched.h> to <linux/binfmts.h>
But first update the usage sites with the new header dependency.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Sun, 5 Feb 2017 11:07:04 +0000 (12:07 +0100)]
sched/headers: Prepare to move sched_info_on() and force_schedstat_enabled() from <linux/sched.h> to <linux/sched/stat.h>
But first update usage sites with the new header dependency.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Sun, 5 Feb 2017 10:48:36 +0000 (11:48 +0100)]
sched/headers: Prepare to move cputime functionality from <linux/sched.h> into <linux/sched/cputime.h>
Introduce a trivial, mostly empty <linux/sched/cputime.h> header
to prepare for the moving of cputime functionality out of sched.h.
Update all code that relies on these facilities.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Mon, 6 Feb 2017 09:57:33 +0000 (10:57 +0100)]
sched/headers: Prepare to move the task_lock()/unlock() APIs to <linux/sched/task.h>
But first update the code that uses these facilities with the
new header.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Sat, 4 Feb 2017 00:27:20 +0000 (01:27 +0100)]
sched/headers: Prepare to use <linux/rcuupdate.h> instead of <linux/rculist.h> in <linux/sched.h>
We don't actually need the full rculist.h header in sched.h anymore,
we will be able to include the smaller rcupdate.h header instead.
But first update code that relied on the implicit header inclusion.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Sat, 4 Feb 2017 00:20:53 +0000 (01:20 +0100)]
sched/headers: Prepare to move 'init_task' and 'init_thread_union' from <linux/sched.h> to <linux/sched/task.h>
Update all usage sites first.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Fri, 3 Feb 2017 23:16:44 +0000 (00:16 +0100)]
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 <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Fri, 3 Feb 2017 23:12:19 +0000 (00:12 +0100)]
mm/headers, sched/headers: Prepare to split <linux/mm_types_task.h> out of <linux/mm_types.h>
We are going to separate all the MM types that are embedded directly in 'struct task_struct'
into the new <linux/mm_types_task.h> header.
Create a new <linux/mm_types_task.h> that only contains some includes from mm_types.h itself.
This should be trivially correct and easy to bisect to.
(This patch does not materially move the types yet.)
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Fri, 3 Feb 2017 22:47:37 +0000 (23:47 +0100)]
sched/headers: Prepare for the reduction of <linux/sched.h>'s signal API dependency
Instead of including the full <linux/signal.h>, we are going to include the
types-only <linux/signal_types.h> header in <linux/sched.h>, to further
decouple the scheduler header from the signal headers.
This means that various files which relied on the full <linux/signal.h> need
to be updated to gain an explicit dependency on it.
Update the code that relies on sched.h's inclusion of the <linux/signal.h> header.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Fri, 3 Feb 2017 22:43:50 +0000 (23:43 +0100)]
signals: Prepare to split out <linux/signal_types.h> from <linux/signal.h>
Introduce dummy header and add dependencies to places that will depend on it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Fri, 3 Feb 2017 22:15:21 +0000 (23:15 +0100)]
sched/headers: Prepare to move the 'root_task_group' declaration to <linux/sched/autogroup.h>
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:37 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task_stack.h>
We are going to split <linux/sched/task_stack.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/task_stack.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:36 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task.h>
We are going to split <linux/sched/task.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/task.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:36 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/hotplug.h>
We are going to split <linux/sched/hotplug.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/hotplug.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:35 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/debug.h>
We are going to split <linux/sched/debug.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/debug.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:35 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/nohz.h>
We are going to split <linux/sched/nohz.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/nohz.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:35 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/stat.h>
We are going to split <linux/sched/stat.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/stat.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Thu, 2 Feb 2017 19:56:33 +0000 (20:56 +0100)]
sched/headers: Prepare to remove the <linux/gfp.h> include from <linux/sched.h>
<linux/topology.h> is still needed - also update other headers
and .c files that depend on sched.h including gfp.h (and its
sub-headers) for them.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Thu, 2 Feb 2017 19:43:54 +0000 (20:43 +0100)]
sched/headers: Prepare to move the memalloc_noio_*() APIs to <linux/sched/mm.h>
Update the .c files that depend on these APIs.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Thu, 2 Feb 2017 18:15:33 +0000 (19:15 +0100)]
sched/headers: Prepare to move signal wakeup & sigpending methods from <linux/sched.h> into <linux/sched/signal.h>
Fix up affected files that include this signal functionality via sched.h.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:33 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/xacct.h>
We are going to split <linux/sched/xacct.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/xacct.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the .c file that is going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Fri, 3 Feb 2017 09:06:45 +0000 (10:06 +0100)]
sched/headers: Prepare for the removal of various unrelated headers from <linux/sched.h>
We are going to remove the following header inclusions from <linux/sched.h>:
#include <asm/param.h>
#include <linux/threads.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/timex.h>
#include <linux/jiffies.h>
#include <linux/rbtree.h>
#include <linux/thread_info.h>
#include <linux/cpumask.h>
#include <linux/errno.h>
#include <linux/nodemask.h>
#include <linux/preempt.h>
#include <asm/page.h>
#include <linux/smp.h>
#include <linux/compiler.h>
#include <linux/completion.h>
#include <linux/percpu.h>
#include <linux/topology.h>
#include <linux/rcupdate.h>
#include <linux/time.h>
#include <linux/timer.h>
#include <linux/llist.h>
#include <linux/uidgid.h>
#include <asm/processor.h>
Fix up a single .h file that got hold of <linux/sysctl.h> via one of these headers.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Fri, 3 Feb 2017 09:08:30 +0000 (10:08 +0100)]
sched/headers: Prepare for the removal of <linux/rtmutex.h> from <linux/sched.h>
Fix up missing #includes in other places that rely on sched.h doing that for them.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Fri, 3 Feb 2017 09:03:42 +0000 (10:03 +0100)]
sched/headers: Prepare for the removal of <asm/ptrace.h> from <linux/sched.h>
Fix up missing #includes in other places that rely on sched.h doing that for them.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Thu, 2 Feb 2017 16:54:15 +0000 (17:54 +0100)]
sched/headers: Prepare to remove <linux/cred.h> inclusion from <linux/sched.h>
Add #include <linux/cred.h> dependencies to all .c files rely on sched.h
doing that for them.
Note that even if the count where we need to add extra headers seems high,
it's still a net win, because <linux/sched.h> is included in over
2,200 files ...
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Thu, 2 Feb 2017 13:47:27 +0000 (14:47 +0100)]
sched/headers: Prepare header dependency changes, move the <asm/paravirt.h> include to kernel/sched/sched.h
Recent header reorganizations unearthed this hidden dependency:
kernel/sched/core.c:199:25: error: 'paravirt_steal_rq_enabled' undeclared (first use in this function)
kernel/sched/core.c:200:11: error: implicit declaration of function 'paravirt_steal_clock' [-Werror=implicit-function-declaration]
So move the asm/paravirt.h include from kernel/sched/cpuclock.c to kernel/sched/sched.h.
( NOTE: We do this change before doing the changes that introduce the build failure,
so the series remains fully bisectable. )
Reported-by: kbuild test robot <[email protected] >
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:32 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/jobctl.h>
We are going to split <linux/sched/jobctl.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/jobctl.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the file that is going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:31 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/numa_balancing.h>
We are going to split <linux/sched/numa_balancing.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/numa_balancing.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:31 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving more code to <linux/sched/mm.h>
We are going to split more MM APIs out of <linux/sched.h>, which
will have to be picked up from a couple of .c files.
The APIs that we are going to move are:
arch_pick_mmap_layout()
arch_get_unmapped_area()
arch_get_unmapped_area_topdown()
mm_update_next_owner()
Include the header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:31 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/cpufreq.h>
We are going to split <linux/sched/cpufreq.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/cpufreq.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:31 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/nmi.h>
We are going to move softlockup APIs out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
<linux/nmi.h> already includes <linux/sched.h>.
Include the <linux/nmi.h> header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:30 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/user.h>
We are going to split <linux/sched/user.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/user.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:30 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/signal.h>
We are going to split <linux/sched/signal.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/signal.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:30 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/coredump.h>
We are going to split <linux/sched/coredump.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/coredump.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:29 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/mm.h>
We are going to split <linux/sched/mm.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/mm.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
The APIs that are going to be moved first are:
mm_alloc()
__mmdrop()
mmdrop()
mmdrop_async_fn()
mmdrop_async()
mmget_not_zero()
mmput()
mmput_async()
get_task_mm()
mm_access()
mm_release()
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 17:51:29 +0000 (18:51 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/autogroup.h>
We are going to split <linux/sched/autogroup.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/autogroup.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 8 Feb 2017 07:45:17 +0000 (08:45 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/loadavg.h>
We are going to split <linux/sched/loadavg.h> out of <linux/sched.h>, which
will have to be picked up from a couple of .c files.
Create a trivial placeholder <linux/sched/topology.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 1 Feb 2017 17:07:51 +0000 (18:07 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <uapi/linux/sched/types.h>
We are going to move scheduler ABI details to <uapi/linux/sched/types.h>,
which will be used from a number of .c files.
Create empty placeholder header that maps to <linux/types.h>.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 1 Feb 2017 15:36:40 +0000 (16:36 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/clock.h>
We are going to split <linux/sched/clock.h> out of <linux/sched.h>, which
will have to be picked up from other headers and .c files.
Create a trivial placeholder <linux/sched/clock.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 1 Feb 2017 15:36:40 +0000 (16:36 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/wake_q.h>
We are going to split <linux/sched/wake_q.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/wake_q.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 1 Feb 2017 15:36:40 +0000 (16:36 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/idle.h>
We are going to split <linux/sched/idle.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/idle.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Wed, 1 Feb 2017 15:36:40 +0000 (16:36 +0100)]
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/topology.h>
We are going to split <linux/sched/topology.h> out of <linux/sched.h>, which
will have to be picked up from other headers and a couple of .c files.
Create a trivial placeholder <linux/sched/topology.h> file that just
maps to <linux/sched.h> to make this patch obviously correct and
bisectable.
Include the new header in the files that are going to need it.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Fri, 3 Feb 2017 08:57:00 +0000 (09:57 +0100)]
kasan, sched/headers: Uninline kasan_enable/disable_current()
<linux/kasan.h> is a low level header that is included early
in affected kernel headers. But it includes <linux/sched.h>
which complicates the cleanup of sched.h dependencies.
But kasan.h has almost no need for sched.h: its only use of
scheduler functionality is in two inline functions which are
not used very frequently - so uninline kasan_enable_current()
and kasan_disable_current().
Also add a <linux/sched.h> dependency to a .c file that depended
on kasan.h including it.
This paves the way to remove the <linux/sched.h> include from kasan.h.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Fri, 3 Feb 2017 10:03:31 +0000 (11:03 +0100)]
mm/vmacache, sched/headers: Introduce 'struct vmacache' and move it from <linux/sched.h> to <linux/mm_types>
The <linux/sched.h> header includes various vmacache related defines,
which are arguably misplaced.
Move them to mm_types.h and minimize the sched.h impact by putting
all task vmacache state into a new 'struct vmacache' structure.
No change in functionality.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Thu, 2 Feb 2017 10:50:56 +0000 (11:50 +0100)]
sched/headers, cgroups: Remove the threadgroup_change_*() wrappery
threadgroup_change_begin()/end() is a pointless wrapper around
cgroup_threadgroup_change_begin()/end(), minus a might_sleep()
in the !CONFIG_CGROUPS=y case.
Remove the wrappery, move the might_sleep() (the down_read()
already has a might_sleep() check).
This debloats <linux/sched.h> a bit and simplifies this API.
Update all call sites.
No change in functionality.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Mon, 6 Feb 2017 08:50:49 +0000 (09:50 +0100)]
rcu: Separate the RCU synchronization types and APIs into <linux/rcupdate_wait.h>
So rcupdate.h is a pretty complex header, in particular it includes
<linux/completion.h> which includes <linux/wait.h> - creating a
dependency that includes <linux/wait.h> in <linux/sched.h>,
which prevents the isolation of <linux/sched.h> from the derived
<linux/wait.h> header.
Solve part of the problem by decoupling rcupdate.h from completions:
this can be done by separating out the rcu_synchronize types and APIs,
and updating their usage sites.
Since this is a mostly RCU-internal types this will not just simplify
<linux/sched.h>'s dependencies, but will make all the hundreds of
.c files that include rcupdate.h but not completions or wait.h build
faster.
( For rcutiny this means that two dependent APIs have to be uninlined,
but that shouldn't be much of a problem as they are rare variants. )
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Paul E. McKenney <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Sun, 5 Feb 2017 14:41:03 +0000 (15:41 +0100)]
sched/core: Remove the tsk_nr_cpus_allowed() wrapper
tsk_nr_cpus_allowed() too is a pretty pointless wrapper that
is not used consistently and which makes the code both harder
to read and longer as well.
So remove it - this also shrinks <linux/sched.h> a bit.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Sun, 5 Feb 2017 14:38:10 +0000 (15:38 +0100)]
sched/core: Remove the tsk_cpus_allowed() wrapper
So the original intention of tsk_cpus_allowed() was to 'future-proof'
the field - but it's pretty ineffectual at that, because half of
the code uses ->cpus_allowed directly ...
Also, the wrapper makes the code longer than the original expression!
So just get rid of it. This also shrinks <linux/sched.h> a bit.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Fri, 3 Feb 2017 22:37:48 +0000 (23:37 +0100)]
sched/core: Move the get_preempt_disable_ip() inline to sched/core.c
It's defined in <linux/sched.h>, but nothing outside the scheduler
uses it - so move it to the sched/core.c usage site.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Fri, 3 Feb 2017 11:22:54 +0000 (12:22 +0100)]
sched/core: Convert ___assert_task_state() link time assert to BUILD_BUG_ON()
The length of TASK_STATE_TO_CHAR_STR was still checked using the old
link-time manual error method - convert it to BUILD_BUG_ON(). This
has a couple of advantages:
- it's more obvious what's going on
- it reduces the size and complexity of <linux/sched.h>
- BUILD_BUG_ON() will fail during compilation, with a clearer
error message than the link time assert.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Fri, 3 Feb 2017 20:11:09 +0000 (21:11 +0100)]
sched/headers: Make all include/linux/sched/*.h headers build standalone
Make each header self-sufficient, so that it can be built successfully
both in an allnoconfig and allyesconfig kernel.
Also standardize the naming of their header guards.
Acked-by: Linus Torvalds <[email protected] >
Cc: Mike Galbraith <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Johannes Berg [Wed, 15 Feb 2017 08:49:26 +0000 (09:49 +0100)]
average: change to declare precision, not factor
Declaring the factor is counter-intuitive, and people are prone
to using small(-ish) values even when that makes no sense.
Change the DECLARE_EWMA() macro to take the fractional precision,
in bits, rather than a factor, and update all users.
While at it, add some more documentation.
Acked-by: David S. Miller <[email protected] >
Signed-off-by: Johannes Berg <[email protected] >
Zhao Yan [Thu, 2 Mar 2017 07:12:47 +0000 (15:12 +0800)]
drm/i915/gvt: fix an error for F_RO flag
the ro_mask is not stored into each mmio entry
Fixes: 12d14cc43b34 ("drm/i915/gvt: Introduce a framework for tracking HW registers.")
Signed-off-by: Zhao Yan <[email protected] >
Signed-off-by: Zhenyu Wang <[email protected] >
Ard Biesheuvel [Wed, 1 Mar 2017 19:05:54 +0000 (19:05 +0000)]
efi/arm: Fix boot crash with CONFIG_CPUMASK_OFFSTACK=y
On ARM and arm64, we use a dedicated mm_struct to map the UEFI
Runtime Services regions, which allows us to map those regions
on demand, and in a way that is guaranteed to be compatible
with incoming kernels across kexec.
As it turns out, we don't fully initialize the mm_struct in the
same way as process mm_structs are initialized on fork(), which
results in the following crash on ARM if CONFIG_CPUMASK_OFFSTACK=y
is enabled:
...
EFI Variables Facility v0.08 2004-May-17
Unable to handle kernel NULL pointer dereference at virtual address
00000000
[...]
Process swapper/0 (pid: 1)
...
__memzero()
check_and_switch_context()
virt_efi_get_next_variable()
efivar_init()
efivars_sysfs_init()
do_one_initcall()
...
This is due to a missing call to mm_init_cpumask(), so add it.
Signed-off-by: Ard Biesheuvel <[email protected] >
Cc: <[email protected] > # v4.5+
Cc: Linus Torvalds <[email protected] >
Cc: Matt Fleming <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ard Biesheuvel [Wed, 1 Mar 2017 19:04:35 +0000 (19:04 +0000)]
efi/libstub: Treat missing SecureBoot variable as Secure Boot disabled
The newly refactored code that infers the firmware's Secure Boot state
prints the following error when the EFI variable 'SecureBoot' does not
exist:
EFI stub: ERROR: Could not determine UEFI Secure Boot status.
However, this variable is only guaranteed to be defined on a system that
is Secure Boot capable to begin with, and so it is not an error if it is
missing. So report Secure Boot as being disabled in this case, without
printing any error messages.
Signed-off-by: Ard Biesheuvel <[email protected] >
Cc: Linus Torvalds <[email protected] >
Cc: Matt Fleming <[email protected] >
Cc: Peter Zijlstra <[email protected] >
Cc: Thomas Gleixner <[email protected] >
Cc: [email protected]
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected] >
Ingo Molnar [Thu, 2 Mar 2017 07:05:45 +0000 (08:05 +0100)]
Merge branch 'linus' into perf/urgent, to resolve conflict
Conflicts:
arch/powerpc/configs/85xx/kmp204x_defconfig
Signed-off-by: Ingo Molnar <[email protected] >
Eric Dumazet [Wed, 1 Mar 2017 22:45:06 +0000 (14:45 -0800)]
ipv6: orphan skbs in reassembly unit
Andrey reported a use-after-free in IPv6 stack.
Issue here is that we free the socket while it still has skb
in TX path and in some queues.
It happens here because IPv6 reassembly unit messes skb->truesize,
breaking skb_set_owner_w() badly.
We fixed a similar issue for IPV4 in commit
8282f27449bf ("inet: frag:
Always orphan skbs inside ip_defrag()")
Acked-by: Joe Stringer <[email protected] >
==================================================================
BUG: KASAN: use-after-free in sock_wfree+0x118/0x120
Read of size 8 at addr
ffff880062da0060 by task a.out/4140
page:
ffffea00018b6800 count:1 mapcount:0 mapping: (null)
index:0x0 compound_mapcount: 0
flags: 0x100000000008100(slab|head)
raw:
0100000000008100 0000000000000000 0000000000000000 0000000180130013
raw:
dead000000000100 dead000000000200 ffff88006741f140 0000000000000000
page dumped because: kasan: bad access detected
CPU: 0 PID: 4140 Comm: a.out Not tainted 4.10.0-rc3+ #59
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:15
dump_stack+0x292/0x398 lib/dump_stack.c:51
describe_address mm/kasan/report.c:262
kasan_report_error+0x121/0x560 mm/kasan/report.c:370
kasan_report mm/kasan/report.c:392
__asan_report_load8_noabort+0x3e/0x40 mm/kasan/report.c:413
sock_flag ./arch/x86/include/asm/bitops.h:324
sock_wfree+0x118/0x120 net/core/sock.c:1631
skb_release_head_state+0xfc/0x250 net/core/skbuff.c:655
skb_release_all+0x15/0x60 net/core/skbuff.c:668
__kfree_skb+0x15/0x20 net/core/skbuff.c:684
kfree_skb+0x16e/0x4e0 net/core/skbuff.c:705
inet_frag_destroy+0x121/0x290 net/ipv4/inet_fragment.c:304
inet_frag_put ./include/net/inet_frag.h:133
nf_ct_frag6_gather+0x1125/0x38b0 net/ipv6/netfilter/nf_conntrack_reasm.c:617
ipv6_defrag+0x21b/0x350 net/ipv6/netfilter/nf_defrag_ipv6_hooks.c:68
nf_hook_entry_hookfn ./include/linux/netfilter.h:102
nf_hook_slow+0xc3/0x290 net/netfilter/core.c:310
nf_hook ./include/linux/netfilter.h:212
__ip6_local_out+0x52c/0xaf0 net/ipv6/output_core.c:160
ip6_local_out+0x2d/0x170 net/ipv6/output_core.c:170
ip6_send_skb+0xa1/0x340 net/ipv6/ip6_output.c:1722
ip6_push_pending_frames+0xb3/0xe0 net/ipv6/ip6_output.c:1742
rawv6_push_pending_frames net/ipv6/raw.c:613
rawv6_sendmsg+0x2cff/0x4130 net/ipv6/raw.c:927
inet_sendmsg+0x164/0x5b0 net/ipv4/af_inet.c:744
sock_sendmsg_nosec net/socket.c:635
sock_sendmsg+0xca/0x110 net/socket.c:645
sock_write_iter+0x326/0x620 net/socket.c:848
new_sync_write fs/read_write.c:499
__vfs_write+0x483/0x760 fs/read_write.c:512
vfs_write+0x187/0x530 fs/read_write.c:560
SYSC_write fs/read_write.c:607
SyS_write+0xfb/0x230 fs/read_write.c:599
entry_SYSCALL_64_fastpath+0x1f/0xc2 arch/x86/entry/entry_64.S:203
RIP: 0033:0x7ff26e6f5b79
RSP: 002b:
00007ff268e0ed98 EFLAGS:
00000206 ORIG_RAX:
0000000000000001
RAX:
ffffffffffffffda RBX:
00007ff268e0f9c0 RCX:
00007ff26e6f5b79
RDX:
0000000000000010 RSI:
0000000020f50fe1 RDI:
0000000000000003
RBP:
00007ff26ebc1220 R08:
0000000000000000 R09:
0000000000000000
R10:
0000000000000000 R11:
0000000000000206 R12:
0000000000000000
R13:
00007ff268e0f9c0 R14:
00007ff26efec040 R15:
0000000000000003
The buggy address belongs to the object at
ffff880062da0000
which belongs to the cache RAWv6 of size 1504
The buggy address
ffff880062da0060 is located 96 bytes inside
of 1504-byte region [
ffff880062da0000 ,
ffff880062da05e0 )
Freed by task 4113:
save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:57
save_stack+0x43/0xd0 mm/kasan/kasan.c:502
set_track mm/kasan/kasan.c:514
kasan_slab_free+0x73/0xc0 mm/kasan/kasan.c:578
slab_free_hook mm/slub.c:1352
slab_free_freelist_hook mm/slub.c:1374
slab_free mm/slub.c:2951
kmem_cache_free+0xb2/0x2c0 mm/slub.c:2973
sk_prot_free net/core/sock.c:1377
__sk_destruct+0x49c/0x6e0 net/core/sock.c:1452
sk_destruct+0x47/0x80 net/core/sock.c:1460
__sk_free+0x57/0x230 net/core/sock.c:1468
sk_free+0x23/0x30 net/core/sock.c:1479
sock_put ./include/net/sock.h:1638
sk_common_release+0x31e/0x4e0 net/core/sock.c:2782
rawv6_close+0x54/0x80 net/ipv6/raw.c:1214
inet_release+0xed/0x1c0 net/ipv4/af_inet.c:425
inet6_release+0x50/0x70 net/ipv6/af_inet6.c:431
sock_release+0x8d/0x1e0 net/socket.c:599
sock_close+0x16/0x20 net/socket.c:1063
__fput+0x332/0x7f0 fs/file_table.c:208
____fput+0x15/0x20 fs/file_table.c:244
task_work_run+0x19b/0x270 kernel/task_work.c:116
exit_task_work ./include/linux/task_work.h:21
do_exit+0x186b/0x2800 kernel/exit.c:839
do_group_exit+0x149/0x420 kernel/exit.c:943
SYSC_exit_group kernel/exit.c:954
SyS_exit_group+0x1d/0x20 kernel/exit.c:952
entry_SYSCALL_64_fastpath+0x1f/0xc2 arch/x86/entry/entry_64.S:203
Allocated by task 4115:
save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:57
save_stack+0x43/0xd0 mm/kasan/kasan.c:502
set_track mm/kasan/kasan.c:514
kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:605
kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:544
slab_post_alloc_hook mm/slab.h:432
slab_alloc_node mm/slub.c:2708
slab_alloc mm/slub.c:2716
kmem_cache_alloc+0x1af/0x250 mm/slub.c:2721
sk_prot_alloc+0x65/0x2a0 net/core/sock.c:1334
sk_alloc+0x105/0x1010 net/core/sock.c:1396
inet6_create+0x44d/0x1150 net/ipv6/af_inet6.c:183
__sock_create+0x4f6/0x880 net/socket.c:1199
sock_create net/socket.c:1239
SYSC_socket net/socket.c:1269
SyS_socket+0xf9/0x230 net/socket.c:1249
entry_SYSCALL_64_fastpath+0x1f/0xc2 arch/x86/entry/entry_64.S:203
Memory state around the buggy address:
ffff880062d9ff00 : fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
ffff880062d9ff80 : fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
>
ffff880062da0000 : fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
^
ffff880062da0080 : fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff880062da0100 : fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================
Reported-by: Andrey Konovalov <[email protected] >
Signed-off-by: Eric Dumazet <[email protected] >
Signed-off-by: David S. Miller <[email protected] >
Eric Dumazet [Wed, 1 Mar 2017 22:28:39 +0000 (14:28 -0800)]
net: net_enable_timestamp() can be called from irq contexts
It is now very clear that silly TCP listeners might play with
enabling/disabling timestamping while new children are added
to their accept queue.
Meaning net_enable_timestamp() can be called from BH context
while current state of the static key is not enabled.
Lets play safe and allow all contexts.
The work queue is scheduled only under the problematic cases,
which are the static key enable/disable transition, to not slow down
critical paths.
This extends and improves what we did in commit
5fa8bbda38c6 ("net: use
a work queue to defer net_disable_timestamp() work")
Fixes: b90e5794c5bd ("net: dont call jump_label_dec from irq context")
Signed-off-by: Eric Dumazet <[email protected] >
Reported-by: Dmitry Vyukov <[email protected] >
Signed-off-by: David S. Miller <[email protected] >
Alexander Potapenko [Wed, 1 Mar 2017 11:57:20 +0000 (12:57 +0100)]
net: don't call strlen() on the user buffer in packet_bind_spkt()
KMSAN (KernelMemorySanitizer, a new error detection tool) reports use of
uninitialized memory in packet_bind_spkt():
Acked-by: Eric Dumazet <[email protected] >
==================================================================
BUG: KMSAN: use of unitialized memory
CPU: 0 PID: 1074 Comm: packet Not tainted 4.8.0-rc6+ #1891
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs
01/01/2011
0000000000000000 ffff88006b6dfc08 ffffffff82559ae8 ffff88006b6dfb48
ffffffff818a7c91 ffffffff85b9c870 0000000000000092 ffffffff85b9c550
0000000000000000 0000000000000092 00000000ec400911 0000000000000002
Call Trace:
[< inline >] __dump_stack lib/dump_stack.c:15
[<
ffffffff82559ae8 >] dump_stack+0x238/0x290 lib/dump_stack.c:51
[<
ffffffff818a6626 >] kmsan_report+0x276/0x2e0 mm/kmsan/kmsan.c:1003
[<
ffffffff818a783b >] __msan_warning+0x5b/0xb0
mm/kmsan/kmsan_instr.c:424
[< inline >] strlen lib/string.c:484
[<
ffffffff8259b58d >] strlcpy+0x9d/0x200 lib/string.c:144
[<
ffffffff84b2eca4 >] packet_bind_spkt+0x144/0x230
net/packet/af_packet.c:3132
[<
ffffffff84242e4d >] SYSC_bind+0x40d/0x5f0 net/socket.c:1370
[<
ffffffff84242a22 >] SyS_bind+0x82/0xa0 net/socket.c:1356
[<
ffffffff8515991b >] entry_SYSCALL_64_fastpath+0x13/0x8f
arch/x86/entry/entry_64.o:?
chained origin:
00000000eba00911
[<
ffffffff810bb787 >] save_stack_trace+0x27/0x50
arch/x86/kernel/stacktrace.c:67
[< inline >] kmsan_save_stack_with_flags mm/kmsan/kmsan.c:322
[< inline >] kmsan_save_stack mm/kmsan/kmsan.c:334
[<
ffffffff818a59f8 >] kmsan_internal_chain_origin+0x118/0x1e0
mm/kmsan/kmsan.c:527
[<
ffffffff818a7773 >] __msan_set_alloca_origin4+0xc3/0x130
mm/kmsan/kmsan_instr.c:380
[<
ffffffff84242b69 >] SYSC_bind+0x129/0x5f0 net/socket.c:1356
[<
ffffffff84242a22 >] SyS_bind+0x82/0xa0 net/socket.c:1356
[<
ffffffff8515991b >] entry_SYSCALL_64_fastpath+0x13/0x8f
arch/x86/entry/entry_64.o:?
origin description: ----address@SYSC_bind (origin=
00000000eb400911 )
==================================================================
(the line numbers are relative to 4.8-rc6, but the bug persists
upstream)
, when I run the following program as root:
=====================================
#include <string.h>
#include <sys/socket.h>
#include <netpacket/packet.h>
#include <net/ethernet.h>
int main() {
struct sockaddr addr;
memset(&addr, 0xff, sizeof(addr));
addr.sa_family = AF_PACKET;
int fd = socket(PF_PACKET, SOCK_PACKET, htons(ETH_P_ALL));
bind(fd, &addr, sizeof(addr));
return 0;
}
=====================================
This happens because addr.sa_data copied from the userspace is not
zero-terminated, and copying it with strlcpy() in packet_bind_spkt()
results in calling strlen() on the kernel copy of that non-terminated
buffer.
Signed-off-by: Alexander Potapenko <[email protected] >
Signed-off-by: David S. Miller <[email protected] >
Mike Manning [Wed, 1 Mar 2017 09:55:28 +0000 (09:55 +0000)]
net: bridge: allow IPv6 when multicast flood is disabled
Even with multicast flooding turned off, IPv6 ND should still work so
that IPv6 connectivity is provided. Allow this by continuing to flood
multicast traffic originated by us.
Fixes: b6cb5ac8331b ("net: bridge: add per-port multicast flood flag")
Cc: Nikolay Aleksandrov <[email protected] >
Signed-off-by: Mike Manning <[email protected] >
Acked-by: Nikolay Aleksandrov <[email protected] >
Signed-off-by: David S. Miller <[email protected] >
Aurelien Aptel [Mon, 13 Feb 2017 15:19:04 +0000 (16:19 +0100)]
CIFS: set signing flag in SMB2+ TreeConnect if needed
cifs_enable_signing() already sets server->sign according to what the
server requires/offers and what mount options allows/forbids, so use
that.
this is required for IPC tcon that connects to signing-required servers.
Signed-off-by: Aurelien Aptel <[email protected] >
Acked-by: Pavel Shilovsky <[email protected] >
Signed-off-by: Steve French <[email protected] >
Aurelien Aptel [Tue, 28 Feb 2017 14:26:30 +0000 (15:26 +0100)]
CIFS: let ses->ipc_tid hold smb2 TreeIds
the TreeId field went from 2 bytes in CIFS to 4 bytes in SMB2+. this
commit updates the size of the ipc_tid field of a cifs_ses, which was
still using 2 bytes.
Signed-off-by: Aurelien Aptel <[email protected] >
Reviewed-by: Pavel Shilovsky <[email protected] >
Signed-off-by: Steve French <[email protected] >
Aurelien Aptel [Tue, 28 Feb 2017 14:08:41 +0000 (15:08 +0100)]
CIFS: add use_ipc flag to SMB2_ioctl()
when set, use the session IPC tree id instead of the tid in the provided
tcon.
Signed-off-by: Aurelien Aptel <[email protected] >
Reviewed-by: Pavel Shilovsky <[email protected] >
Signed-off-by: Steve French <[email protected] >
Aurelien Aptel [Mon, 13 Feb 2017 15:14:17 +0000 (16:14 +0100)]
CIFS: add build_path_from_dentry_optional_prefix()
this function does the same thing as add build_path_from_dentry() but
takes a boolean parameter to decide whether or not to prefix the path
with the tree name.
we cannot rely on tcon->Flags & SMB_SHARE_IS_IN_DFS for SMB2 as smb2
code never sets tcon->Flags but it sets tcon->share_flags and it seems
the SMB_SHARE_IS_IN_DFS has different semantics in SMB2: the prefix
shouldn't be added everytime it was in SMB1.
Signed-off-by: Aurelien Aptel <[email protected] >
Acked-by: Pavel Shilovsky <[email protected] >
Signed-off-by: Steve French <[email protected] >
Aurelien Aptel [Mon, 13 Feb 2017 15:03:47 +0000 (16:03 +0100)]
CIFS: move DFS response parsing out of SMB1 code
since the DFS payload is not tied to the SMB version we can:
* isolate the DFS payload in its own struct, and include that struct in
packet structs
* move the function that parses the response to misc.c and make it work
on the new DFS payload struct (add payload size and utf16 flag as a
result).
Signed-off-by: Aurelien Aptel <[email protected] >
Acked-by: Pavel Shilovsky <[email protected] >
Signed-off-by: Steve French <[email protected] >
Linus Torvalds [Thu, 2 Mar 2017 01:04:50 +0000 (17:04 -0800)]
Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull objtool relocation fixes from Ingo Molnar:
"Two fixes related to the module loading regression introduced by the
recent objtool changes"
* 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
objtool, modules: Discard objtool annotation sections for modules
objtool, compiler.h: Fix __unreachable section relocation size
Linus Torvalds [Thu, 2 Mar 2017 00:10:30 +0000 (16:10 -0800)]
Merge tag 'nfs-for-4.11-1' of git://git.linux-nfs.org/projects/anna/linux-nfs
Pull NFS client updates from Anna Schumaker:
"Highlights include:
Stable bugfixes:
- NFSv4: Fix memory and state leak in _nfs4_open_and_get_state
- xprtrdma: Fix Read chunk padding
- xprtrdma: Per-connection pad optimization
- xprtrdma: Disable pad optimization by default
- xprtrdma: Reduce required number of send SGEs
- nlm: Ensure callback code also checks that the files match
- pNFS/flexfiles: If the layout is invalid, it must be updated before
retrying
- NFSv4: Fix reboot recovery in copy offload
- Revert "NFSv4.1: Handle NFS4ERR_BADSESSION/NFS4ERR_DEADSESSION
replies to OP_SEQUENCE"
- NFSv4: fix getacl head length estimation
- NFSv4: fix getacl ERANGE for sum ACL buffer sizes
Features:
- Add and use dprintk_cont macros
- Various cleanups to NFS v4.x to reduce code duplication and
complexity
- Remove unused cr_magic related code
- Improvements to sunrpc "read from buffer" code
- Clean up sunrpc timeout code and allow changing TCP timeout
parameters
- Remove duplicate mw_list management code in xprtrdma
- Add generic functions for encoding and decoding xdr streams
Bugfixes:
- Clean up nfs_show_mountd_netid
- Make layoutreturn_ops static and use NULL instead of 0 to fix
sparse warnings
- Properly handle -ERESTARTSYS in nfs_rename()
- Check if register_shrinker() failed during rpcauth_init()
- Properly clean up procfs/pipefs entries
- Various NFS over RDMA related fixes
- Silence unititialized variable warning in sunrpc"
* tag 'nfs-for-4.11-1' of git://git.linux-nfs.org/projects/anna/linux-nfs: (64 commits)
NFSv4: fix getacl ERANGE for some ACL buffer sizes
NFSv4: fix getacl head length estimation
Revert "NFSv4.1: Handle NFS4ERR_BADSESSION/NFS4ERR_DEADSESSION replies to OP_SEQUENCE"
NFSv4: Fix reboot recovery in copy offload
pNFS/flexfiles: If the layout is invalid, it must be updated before retrying
NFSv4: Clean up owner/group attribute decode
SUNRPC: Add a helper function xdr_stream_decode_string_dup()
NFSv4: Remove bogus "struct nfs_client" argument from decode_ace()
NFSv4: Fix the underestimation of delegation XDR space reservation
NFSv4: Replace callback string decode function with a generic
NFSv4: Replace the open coded decode_opaque_inline() with the new generic
NFSv4: Replace ad-hoc xdr encode/decode helpers with xdr_stream_* generics
SUNRPC: Add generic helpers for xdr_stream encode/decode
sunrpc: silence uninitialized variable warning
nlm: Ensure callback code also checks that the files match
sunrpc: Allow xprt->ops->timer method to sleep
xprtrdma: Refactor management of mw_list field
xprtrdma: Handle stale connection rejection
xprtrdma: Properly recover FRWRs with in-flight FASTREG WRs
xprtrdma: Shrink send SGEs array
...
Linus Torvalds [Wed, 1 Mar 2017 23:55:04 +0000 (15:55 -0800)]
Merge tag 'for-f2fs-4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs
Pull f2fs updates from Jaegeuk Kim:
"This round introduces several interesting features such as on-disk NAT
bitmaps, IO alignment, and a discard thread. And it includes a couple
of major bug fixes as below.
Enhancements:
- introduce on-disk bitmaps to avoid scanning NAT blocks when getting
free nids
- support IO alignment to prepare open-channel SSD integration in
future
- introduce a discard thread to avoid long latency during checkpoint
and fstrim
- use SSR for warm node and enable inline_xattr by default
- introduce in-memory bitmaps to check FS consistency for debugging
- improve write_begin by avoiding needless read IO
Bug fixes:
- fix broken zone_reset behavior for SMR drive
- fix wrong victim selection policy during GC
- fix missing behavior when preparing discard commands
- fix bugs in atomic write support and fiemap
- workaround to handle multiple f2fs_add_link calls having same name
... and it includes a bunch of clean-up patches as well"
* tag 'for-f2fs-4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (97 commits)
f2fs: avoid to flush nat journal entries
f2fs: avoid to issue redundant discard commands
f2fs: fix a plint compile warning
f2fs: add f2fs_drop_inode tracepoint
f2fs: Fix zoned block device support
f2fs: remove redundant set_page_dirty()
f2fs: fix to enlarge size of write_io_dummy mempool
f2fs: fix memory leak of write_io_dummy mempool during umount
f2fs: fix to update F2FS_{CP_}WB_DATA count correctly
f2fs: use MAX_FREE_NIDS for the free nids target
f2fs: introduce free nid bitmap
f2fs: new helper cur_cp_crc() getting crc in f2fs_checkpoint
f2fs: update the comment of default nr_pages to skipping
f2fs: drop the duplicate pval in f2fs_getxattr
f2fs: Don't update the xattr data that same as the exist
f2fs: kill __is_extent_same
f2fs: avoid bggc->fggc when enough free segments are avaliable after cp
f2fs: select target segment with closer temperature in SSR mode
f2fs: show simple call stack in fault injection message
f2fs: no need lock_op in f2fs_write_inline_data
...
Omar Sandoval [Wed, 1 Feb 2017 08:02:27 +0000 (00:02 -0800)]
virtio-console: avoid DMA from stack
put_chars() stuffs the buffer it gets into an sg, but that buffer may be
on the stack. This breaks with CONFIG_VMAP_STACK=y (for me, it
manifested as printks getting turned into NUL bytes).
Signed-off-by: Omar Sandoval <[email protected] >
Signed-off-by: Michael S. Tsirkin <[email protected] >
Reviewed-by: Amit Shah <[email protected] >
Jason Wang [Tue, 28 Feb 2017 09:56:02 +0000 (17:56 +0800)]
vhost: introduce O(1) vq metadata cache
When device IOTLB is enabled, all address translations were stored in
interval tree. O(lgN) searching time could be slow for virtqueue
metadata (avail, used and descriptors) since they were accessed much
often than other addresses. So this patch introduces an O(1) array
which points to the interval tree nodes that store the translations of
vq metadata. Those array were update during vq IOTLB prefetching and
were reset during each invalidation and tlb update. Each time we want
to access vq metadata, this small array were queried before interval
tree. This would be sufficient for static mappings but not dynamic
mappings, we could do optimizations on top.
Test were done with l2fwd in guest (2M hugepage):
noiommu | before | after
tx 1.32Mpps | 1.06Mpps(82%) | 1.30Mpps(98%)
rx 2.33Mpps | 1.46Mpps(63%) | 2.29Mpps(98%)
We can almost reach the same performance as noiommu mode.
Signed-off-by: Jason Wang <[email protected] >
Signed-off-by: Michael S. Tsirkin <[email protected] >
Stephen Smalley [Tue, 28 Feb 2017 15:35:56 +0000 (10:35 -0500)]
selinux: wrap cgroup seclabel support with its own policy capability
commit
1ea0ce40690dff38935538e8dab7b12683ded0d3 ("selinux: allow
changing labels for cgroupfs") broke the Android init program,
which looks up security contexts whenever creating directories
and attempts to assign them via setfscreatecon().
When creating subdirectories in cgroup mounts, this would previously
be ignored since cgroup did not support userspace setting of security
contexts. However, after the commit, SELinux would attempt to honor
the requested context on cgroup directories and fail due to permission
denial. Avoid breaking existing userspace/policy by wrapping this change
with a conditional on a new cgroup_seclabel policy capability. This
preserves existing behavior until/unless a new policy explicitly enables
this capability.
Reported-by: John Stultz <[email protected] >
Signed-off-by: Stephen Smalley <[email protected] >
Signed-off-by: Paul Moore <[email protected] >
Signed-off-by: James Morris <[email protected] >
David Howells [Wed, 1 Mar 2017 15:11:23 +0000 (15:11 +0000)]
KEYS: Differentiate uses of rcu_dereference_key() and user_key_payload()
rcu_dereference_key() and user_key_payload() are currently being used in
two different, incompatible ways:
(1) As a wrapper to rcu_dereference() - when only the RCU read lock used
to protect the key.
(2) As a wrapper to rcu_dereference_protected() - when the key semaphor is
used to protect the key and the may be being modified.
Fix this by splitting both of the key wrappers to produce:
(1) RCU accessors for keys when caller has the key semaphore locked:
dereference_key_locked()
user_key_payload_locked()
(2) RCU accessors for keys when caller holds the RCU read lock:
dereference_key_rcu()
user_key_payload_rcu()
This should fix following warning in the NFS idmapper
===============================
[ INFO: suspicious RCU usage. ]
4.10.0 #1 Tainted: G W
-------------------------------
./include/keys/user-type.h:53 suspicious rcu_dereference_protected() usage!
other info that might help us debug this:
rcu_scheduler_active = 2, debug_locks = 0
1 lock held by mount.nfs/5987:
#0: (rcu_read_lock){......}, at: [<
d000000002527abc >] nfs_idmap_get_key+0x15c/0x420 [nfsv4]
stack backtrace:
CPU: 1 PID: 5987 Comm: mount.nfs Tainted: G W 4.10.0 #1
Call Trace:
dump_stack+0xe8/0x154 (unreliable)
lockdep_rcu_suspicious+0x140/0x190
nfs_idmap_get_key+0x380/0x420 [nfsv4]
nfs_map_name_to_uid+0x2a0/0x3b0 [nfsv4]
decode_getfattr_attrs+0xfac/0x16b0 [nfsv4]
decode_getfattr_generic.constprop.106+0xbc/0x150 [nfsv4]
nfs4_xdr_dec_lookup_root+0xac/0xb0 [nfsv4]
rpcauth_unwrap_resp+0xe8/0x140 [sunrpc]
call_decode+0x29c/0x910 [sunrpc]
__rpc_execute+0x140/0x8f0 [sunrpc]
rpc_run_task+0x170/0x200 [sunrpc]
nfs4_call_sync_sequence+0x68/0xa0 [nfsv4]
_nfs4_lookup_root.isra.44+0xd0/0xf0 [nfsv4]
nfs4_lookup_root+0xe0/0x350 [nfsv4]
nfs4_lookup_root_sec+0x70/0xa0 [nfsv4]
nfs4_find_root_sec+0xc4/0x100 [nfsv4]
nfs4_proc_get_rootfh+0x5c/0xf0 [nfsv4]
nfs4_get_rootfh+0x6c/0x190 [nfsv4]
nfs4_server_common_setup+0xc4/0x260 [nfsv4]
nfs4_create_server+0x278/0x3c0 [nfsv4]
nfs4_remote_mount+0x50/0xb0 [nfsv4]
mount_fs+0x74/0x210
vfs_kern_mount+0x78/0x220
nfs_do_root_mount+0xb0/0x140 [nfsv4]
nfs4_try_mount+0x60/0x100 [nfsv4]
nfs_fs_mount+0x5ec/0xda0 [nfs]
mount_fs+0x74/0x210
vfs_kern_mount+0x78/0x220
do_mount+0x254/0xf70
SyS_mount+0x94/0x100
system_call+0x38/0xe0
Reported-by: Jan Stancek <[email protected] >
Signed-off-by: David Howells <[email protected] >
Tested-by: Jan Stancek <[email protected] >
Signed-off-by: James Morris <[email protected] >
David S. Miller [Wed, 1 Mar 2017 23:08:34 +0000 (15:08 -0800)]
Merge tag 'mac80211-for-davem-2017-02-28' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211
Johannes Berg says:
====================
First round of fixes - details in the commits:
* use a valid hrtimer clock ID in mac80211_hwsim
* don't reorder frames prior to BA session
* flush a delayed work at suspend so the state is all valid before
suspend/resume
* fix packet statistics in fast-RX, the RX packets
counter increment was simply missing
* don't try to re-transmit filtered frames in an aggregation session
* shorten (for tracing) a debug message
* typo fix in another debug message
* fix nul-termination with HWSIM_ATTR_RADIO_NAME in hwsim
* fix mgmt RX processing when station is looked up by driver/device
====================
Signed-off-by: David S. Miller <[email protected] >
Eric Dumazet [Wed, 1 Mar 2017 16:39:49 +0000 (08:39 -0800)]
tcp/dccp: block BH for SYN processing
SYN processing really was meant to be handled from BH.
When I got rid of BH blocking while processing socket backlog
in commit
5413d1babe8f ("net: do not block BH while processing socket
backlog"), I forgot that a malicious user could transition to TCP_LISTEN
from a state that allowed (SYN) packets to be parked in the socket
backlog while socket is owned by the thread doing the listen() call.
Sure enough syzkaller found this and reported the bug ;)
=================================
[ INFO: inconsistent lock state ]
4.10.0+ #60 Not tainted
---------------------------------
inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
syz-executor0/5090 [HC0[0]:SC0[0]:HE1:SE1] takes:
(&(&hashinfo->ehash_locks[i])->rlock){+.?...}, at:
[<
ffffffff83a6a370 >] spin_lock include/linux/spinlock.h:299 [inline]
(&(&hashinfo->ehash_locks[i])->rlock){+.?...}, at:
[<
ffffffff83a6a370 >] inet_ehash_insert+0x240/0xad0
net/ipv4/inet_hashtables.c:407
{IN-SOFTIRQ-W} state was registered at:
mark_irqflags kernel/locking/lockdep.c:2923 [inline]
__lock_acquire+0xbcf/0x3270 kernel/locking/lockdep.c:3295
lock_acquire+0x241/0x580 kernel/locking/lockdep.c:3753
__raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
_raw_spin_lock+0x33/0x50 kernel/locking/spinlock.c:151
spin_lock include/linux/spinlock.h:299 [inline]
inet_ehash_insert+0x240/0xad0 net/ipv4/inet_hashtables.c:407
reqsk_queue_hash_req net/ipv4/inet_connection_sock.c:753 [inline]
inet_csk_reqsk_queue_hash_add+0x1b7/0x2a0 net/ipv4/inet_connection_sock.c:764
tcp_conn_request+0x25cc/0x3310 net/ipv4/tcp_input.c:6399
tcp_v4_conn_request+0x157/0x220 net/ipv4/tcp_ipv4.c:1262
tcp_rcv_state_process+0x802/0x4130 net/ipv4/tcp_input.c:5889
tcp_v4_do_rcv+0x56b/0x940 net/ipv4/tcp_ipv4.c:1433
tcp_v4_rcv+0x2e12/0x3210 net/ipv4/tcp_ipv4.c:1711
ip_local_deliver_finish+0x4ce/0xc40 net/ipv4/ip_input.c:216
NF_HOOK include/linux/netfilter.h:257 [inline]
ip_local_deliver+0x1ce/0x710 net/ipv4/ip_input.c:257
dst_input include/net/dst.h:492 [inline]
ip_rcv_finish+0xb1d/0x2110 net/ipv4/ip_input.c:396
NF_HOOK include/linux/netfilter.h:257 [inline]
ip_rcv+0xd90/0x19c0 net/ipv4/ip_input.c:487
__netif_receive_skb_core+0x1ad1/0x3400 net/core/dev.c:4179
__netif_receive_skb+0x2a/0x170 net/core/dev.c:4217
netif_receive_skb_internal+0x1d6/0x430 net/core/dev.c:4245
napi_skb_finish net/core/dev.c:4602 [inline]
napi_gro_receive+0x4e6/0x680 net/core/dev.c:4636
e1000_receive_skb drivers/net/ethernet/intel/e1000/e1000_main.c:4033 [inline]
e1000_clean_rx_irq+0x5e0/0x1490
drivers/net/ethernet/intel/e1000/e1000_main.c:4489
e1000_clean+0xb9a/0x2910 drivers/net/ethernet/intel/e1000/e1000_main.c:3834
napi_poll net/core/dev.c:5171 [inline]
net_rx_action+0xe70/0x1900 net/core/dev.c:5236
__do_softirq+0x2fb/0xb7d kernel/softirq.c:284
invoke_softirq kernel/softirq.c:364 [inline]
irq_exit+0x19e/0x1d0 kernel/softirq.c:405
exiting_irq arch/x86/include/asm/apic.h:658 [inline]
do_IRQ+0x81/0x1a0 arch/x86/kernel/irq.c:250
ret_from_intr+0x0/0x20
native_safe_halt+0x6/0x10 arch/x86/include/asm/irqflags.h:53
arch_safe_halt arch/x86/include/asm/paravirt.h:98 [inline]
default_idle+0x8f/0x410 arch/x86/kernel/process.c:271
arch_cpu_idle+0xa/0x10 arch/x86/kernel/process.c:262
default_idle_call+0x36/0x60 kernel/sched/idle.c:96
cpuidle_idle_call kernel/sched/idle.c:154 [inline]
do_idle+0x348/0x440 kernel/sched/idle.c:243
cpu_startup_entry+0x18/0x20 kernel/sched/idle.c:345
start_secondary+0x344/0x440 arch/x86/kernel/smpboot.c:272
verify_cpu+0x0/0xfc
irq event stamp: 1741
hardirqs last enabled at (1741): [<
ffffffff84d49d77 >]
__raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:160
[inline]
hardirqs last enabled at (1741): [<
ffffffff84d49d77 >]
_raw_spin_unlock_irqrestore+0xf7/0x1a0 kernel/locking/spinlock.c:191
hardirqs last disabled at (1740): [<
ffffffff84d4a732 >]
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:108 [inline]
hardirqs last disabled at (1740): [<
ffffffff84d4a732 >]
_raw_spin_lock_irqsave+0xa2/0x110 kernel/locking/spinlock.c:159
softirqs last enabled at (1738): [<
ffffffff84d4deff >]
__do_softirq+0x7cf/0xb7d kernel/softirq.c:310
softirqs last disabled at (1571): [<
ffffffff84d4b92c >]
do_softirq_own_stack+0x1c/0x30 arch/x86/entry/entry_64.S:902
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
----
lock(&(&hashinfo->ehash_locks[i])->rlock);
<Interrupt>
lock(&(&hashinfo->ehash_locks[i])->rlock);
*** DEADLOCK ***
1 lock held by syz-executor0/5090:
#0: (sk_lock-AF_INET6){+.+.+.}, at: [<
ffffffff83406b43 >] lock_sock
include/net/sock.h:1460 [inline]
#0: (sk_lock-AF_INET6){+.+.+.}, at: [<
ffffffff83406b43 >]
sock_setsockopt+0x233/0x1e40 net/core/sock.c:683
stack backtrace:
CPU: 1 PID: 5090 Comm: syz-executor0 Not tainted 4.10.0+ #60
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:15 [inline]
dump_stack+0x292/0x398 lib/dump_stack.c:51
print_usage_bug+0x3ef/0x450 kernel/locking/lockdep.c:2387
valid_state kernel/locking/lockdep.c:2400 [inline]
mark_lock_irq kernel/locking/lockdep.c:2602 [inline]
mark_lock+0xf30/0x1410 kernel/locking/lockdep.c:3065
mark_irqflags kernel/locking/lockdep.c:2941 [inline]
__lock_acquire+0x6dc/0x3270 kernel/locking/lockdep.c:3295
lock_acquire+0x241/0x580 kernel/locking/lockdep.c:3753
__raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
_raw_spin_lock+0x33/0x50 kernel/locking/spinlock.c:151
spin_lock include/linux/spinlock.h:299 [inline]
inet_ehash_insert+0x240/0xad0 net/ipv4/inet_hashtables.c:407
reqsk_queue_hash_req net/ipv4/inet_connection_sock.c:753 [inline]
inet_csk_reqsk_queue_hash_add+0x1b7/0x2a0 net/ipv4/inet_connection_sock.c:764
dccp_v6_conn_request+0xada/0x11b0 net/dccp/ipv6.c:380
dccp_rcv_state_process+0x51e/0x1660 net/dccp/input.c:606
dccp_v6_do_rcv+0x213/0x350 net/dccp/ipv6.c:632
sk_backlog_rcv include/net/sock.h:896 [inline]
__release_sock+0x127/0x3a0 net/core/sock.c:2052
release_sock+0xa5/0x2b0 net/core/sock.c:2539
sock_setsockopt+0x60f/0x1e40 net/core/sock.c:1016
SYSC_setsockopt net/socket.c:1782 [inline]
SyS_setsockopt+0x2fb/0x3a0 net/socket.c:1765
entry_SYSCALL_64_fastpath+0x1f/0xc2
RIP: 0033:0x4458b9
RSP: 002b:
00007fe8b26c2b58 EFLAGS:
00000292 ORIG_RAX:
0000000000000036
RAX:
ffffffffffffffda RBX:
0000000000000006 RCX:
00000000004458b9
RDX:
000000000000001a RSI:
0000000000000001 RDI:
0000000000000006
RBP:
00000000006e2110 R08:
0000000000000010 R09:
0000000000000000
R10:
00000000208c3000 R11:
0000000000000292 R12:
0000000000708000
R13:
0000000020000000 R14:
0000000000001000 R15:
0000000000000000
Fixes: 5413d1babe8f ("net: do not block BH while processing socket backlog")
Signed-off-by: Eric Dumazet <[email protected] >
Reported-by: Andrey Konovalov <[email protected] >
Acked-by: Soheil Hassas Yeganeh <[email protected] >
Signed-off-by: David S. Miller <[email protected] >
Gary Lin [Wed, 1 Mar 2017 08:25:51 +0000 (16:25 +0800)]
bpf: update the comment about the length of analysis
Commit
07016151a446 ("bpf, verifier: further improve search
pruning") increased the limit of processed instructions from
32k to 64k, but the comment still mentioned the 32k limit.
This commit updates the comment to reflect the change.
Cc: Alexei Starovoitov <[email protected] >
Cc: Daniel Borkmann <[email protected] >
Signed-off-by: Gary Lin <[email protected] >
Acked-by: Alexei Starovoitov <[email protected] >
Signed-off-by: David S. Miller <[email protected] >
Yotam Gigi [Wed, 1 Mar 2017 14:50:45 +0000 (16:50 +0200)]
bridge: Fix error path in nbp_vlan_init
Fix error path order in nbp_vlan_init, so if switchdev_port_attr_set
call failes, the vlan_hash wouldn't be destroyed before inited.
Fixes: efa5356b0d97 ("bridge: per vlan dst_metadata netlink support")
CC: Roopa Prabhu <[email protected] >
Signed-off-by: Yotam Gigi <[email protected] >
Acked-by: Roopa Prabhu <[email protected] >
Reviewed-by: Jiri Pirko <[email protected] >
Signed-off-by: David S. Miller <[email protected] >
Pavel Shilovsky [Wed, 1 Mar 2017 00:05:19 +0000 (16:05 -0800)]
CIFS: Fix possible use after free in demultiplex thread
The recent changes that added SMB3 encryption support introduced
a possible use after free in the demultiplex thread. When we
process an encrypted packed we obtain a pointer to SMB session
but do not obtain a reference. This can possibly lead to a situation
when this session was freed before we copy a decryption key from
there. Fix this by obtaining a copy of the key rather than a pointer
to the session under a spinlock.
Signed-off-by: Pavel Shilovsky <[email protected] >
Signed-off-by: Steve French <[email protected] >
Rafael J. Wysocki [Wed, 1 Mar 2017 22:34:38 +0000 (23:34 +0100)]
Merge branch 'turbostat' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux
Pull changes related to turbostat for v4.11 from Len Brown.
* 'turbostat' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux: (44 commits)
tools/power turbostat: version 17.02.24
tools/power turbostat: bugfix: --add u32 was printed as u64
tools/power turbostat: show error on exec
tools/power turbostat: dump p-state software config
tools/power turbostat: show package number, even without --debug
tools/power turbostat: support "--hide C1" etc.
tools/power turbostat: move --Package and --processor into the --cpu option
tools/power turbostat: turbostat.8 update
tools/power turbostat: update --list feature
tools/power turbostat: use wide columns to display large numbers
tools/power turbostat: Add --list option to show available header names
tools/power turbostat: fix zero IRQ count shown in one-shot command mode
tools/power turbostat: add --cpu parameter
tools/power turbostat: print sysfs C-state stats
tools/power turbostat: extend --add option to accept /sys path
tools/power turbostat: skip unused counters on BDX
tools/power turbostat: fix decoding for GLM, DNV, SKX turbo-ratio limits
tools/power turbostat: skip unused counters on SKX
tools/power turbostat: Denverton: use HW CC1 counter, skip C3, C7
tools/power turbostat: initial Gemini Lake SOC support
...
This page took 0.136179 seconds and 4 git commands to generate.