Skip to content
  1. Nov 16, 2014
    • Wanpeng Li's avatar
      sched/deadline: Introduce start_hrtick_dl() for !CONFIG_SCHED_HRTICK · 36ce9881
      Wanpeng Li authored
      
      
      Introduce start_hrtick_dl for !CONFIG_SCHED_HRTICK to align with
      the fair class.
      
      Signed-off-by: default avatarWanpeng Li <wanpeng.li@linux.intel.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Juri Lelli <juri.lelli@arm.com>
      Cc: Kirill Tkhai <ktkhai@parallels.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1415670747-58726-1-git-send-email-wanpeng.li@linux.intel.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      36ce9881
    • Kirill Tkhai's avatar
      sched/numa: Init numa balancing fields of init_task · d8b163c4
      Kirill Tkhai authored
      
      
      We do not initialize init_task.numa_preferred_nid,
      but this value is inherited by userspace "init"
      process:
      
      rest_init()->kernel_thread(kernel_init)->do_fork(CLONE_VM);
      
      __sched_fork()
      {
      	if (clone_flags & CLONE_VM)
      		p->numa_preferred_nid = current->numa_preferred_nid;
      	else
      		p->numa_preferred_nid = -1;
      }
      
      kernel_init() becomes userspace "init" process.
      
      So, we propagate garbage nid to userspace, and it may be used
      during numa balancing.
      
      Currently, we do not have reports about this brings a problem,
      but it seem we should set it for sure.
      
      Even if init_task.numa_preferred_nid is zero, we may meet a weird
      configuration without nid#0. On sparc64, where processors are
      numbered physically, I saw a machine without cpu#1, while cpu#2
      existed. Possible, something similar may be with numa nodes.
      So, let's initialize it and be sure we're safe.
      
      Signed-off-by: default avatarKirill Tkhai <ktkhai@parallels.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Eric Paris <eparis@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: Sergey Dyasly <dserrg@gmail.com>
      Link: http://lkml.kernel.org/r/1415699189.15631.6.camel@tkhai
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      d8b163c4
    • pang.xunlei's avatar
      sched/deadline: Remove unnecessary definitions in cpudeadline.h · c1a2b5f6
      pang.xunlei authored
      
      
      Actually, cpudl_set() and cpudl_init() can never be used without
      CONFIG_SMP.
      
      Signed-off-by: default avatarpang.xunlei <pang.xunlei@linaro.org>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Juri Lelli <juri.lelli@gmail.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1415260327-30465-4-git-send-email-pang.xunlei@linaro.org
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      c1a2b5f6
    • pang.xunlei's avatar
      sched/cpupri: Remove unnecessary definitions in cpupri.h · 74e6942f
      pang.xunlei authored
      
      
      Actually, cpupri_set() and cpupri_init() can never be used without
      CONFIG_SMP.
      
      Signed-off-by: default avatarpang.xunlei <pang.xunlei@linaro.org>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Juri Lelli <juri.lelli@gmail.com>
      Cc: "pang.xunlei" <pang.xunlei@linaro.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1415260327-30465-1-git-send-email-pang.xunlei@linaro.org
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      74e6942f
    • Wanpeng Li's avatar
      sched/deadline: Fix rq->dl.pushable_tasks bug in push_dl_task() · c51b8ab5
      Wanpeng Li authored
      Do not call dequeue_pushable_dl_task() when failing to push an eligible
      task, as it remains pushable, merely not at this particular moment.
      
      Actually the patch is the same behavior as commit 311e800e
      
       ("sched,
      rt: Fix rq->rt.pushable_tasks bug in push_rt_task()" in -rt side.
      
      Signed-off-by: default avatarWanpeng Li <wanpeng.li@linux.intel.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Juri Lelli <juri.lelli@arm.com>
      Cc: Kirill Tkhai <ktkhai@parallels.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1415258564-8573-1-git-send-email-wanpeng.li@linux.intel.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      c51b8ab5
    • Wanpeng Li's avatar
      sched/fair: Fix stale overloaded status in the busiest group finding logic · cb0b9f24
      Wanpeng Li authored
      Commit caeb178c
      
       ("sched/fair: Make update_sd_pick_busiest() return
      'true' on a busier sd") changes groups to be ranked in the order of
      overloaded > imbalance > other, and busiest group is picked according
      to this order.
      
      sgs->group_capacity_factor is used to check if the group is overloaded.
      
      When the child domain prefers tasks to go to siblings first, the
      sgs->group_capacity_factor will be set lower than one in order to
      move all the excess tasks away.
      
      However, group overloaded status is not updated when
      sgs->group_capacity_factor is set to lower than one, which leads to us
      missing to find the busiest group.
      
      This patch fixes it by updating group overloaded status when sg capacity
      factor is set to one, in order to find the busiest group accurately.
      
      Signed-off-by: default avatarWanpeng Li <wanpeng.li@linux.intel.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Vincent Guittot <vincent.guittot@linaro.org>
      Cc: Kirill Tkhai <ktkhai@parallels.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1415144690-25196-1-git-send-email-wanpeng.li@linux.intel.com
      [ Fixed the changelog. ]
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      cb0b9f24
    • Wanpeng Li's avatar
      sched: Move p->nr_cpus_allowed check to select_task_rq() · 6c1d9410
      Wanpeng Li authored
      
      
      Move the p->nr_cpus_allowed check into kernel/sched/core.c: select_task_rq().
      This change will make fair.c, rt.c, and deadline.c all start with the
      same logic.
      
      Suggested-and-Acked-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarWanpeng Li <wanpeng.li@linux.intel.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: "pang.xunlei" <pang.xunlei@linaro.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1415150077-59053-1-git-send-email-wanpeng.li@linux.intel.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      6c1d9410
    • Wolfram Sang's avatar
      sched/completion: Document when to use wait_for_completion_io_*() · a1bd5373
      Wolfram Sang authored
      
      
      As discussed in [1], accounting IO is meant for blkio only. Document that
      so driver authors won't use them for device io.
      
       [1] http://thread.gmane.org/gmane.linux.drivers.i2c/20470
      
      Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1415098901-2768-1-git-send-email-wsa@the-dreams.de
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      a1bd5373
    • Chen Hanxiao's avatar
      sched: Update comments about CLONE_NEWUTS and CLONE_NEWIPC · f622b429
      Chen Hanxiao authored
      
      
      Remove question mark:
      
       s/New utsname group?/New utsname namespace
      
      Unified style for IPC:
      
       s/New ipcs/New ipc namespace
      
      Signed-off-by: default avatarChen Hanxiao <chenhanxiao@cn.fujitsu.com>
      Acked-by: default avatarSerge E. Hallyn <serge.hallyn@ubuntu.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Jiri Kosina <trivial@kernel.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: linux-api@vger.kernel.org
      Link: http://lkml.kernel.org/r/1415091082-15093-1-git-send-email-chenhanxiao@cn.fujitsu.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      f622b429
    • Kirill Tkhai's avatar
      sched/fair: Kill task_struct::numa_entry and numa_group::task_list · 75389918
      Kirill Tkhai authored
      
      
      Nobody iterates over numa_group::task_list, this just confuses the readers.
      
      Signed-off-by: default avatarKirill Tkhai <ktkhai@parallels.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1415358456.28592.17.camel@tkhai
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      75389918
    • Ingo Molnar's avatar
    • Stanislaw Gruszka's avatar
      sched/cputime: Fix clock_nanosleep()/clock_gettime() inconsistency · 6e998916
      Stanislaw Gruszka authored
      Commit d670ec13
      
       "posix-cpu-timers: Cure SMP wobbles" fixes one glibc
      test case in cost of breaking another one. After that commit, calling
      clock_nanosleep(TIMER_ABSTIME, X) and then clock_gettime(&Y) can result
      of Y time being smaller than X time.
      
      Reproducer/tester can be found further below, it can be compiled and ran by:
      
      	gcc -o tst-cpuclock2 tst-cpuclock2.c -pthread
      	while ./tst-cpuclock2 ; do : ; done
      
      This reproducer, when running on a buggy kernel, will complain
      about "clock_gettime difference too small".
      
      Issue happens because on start in thread_group_cputimer() we initialize
      sum_exec_runtime of cputimer with threads runtime not yet accounted and
      then add the threads runtime to running cputimer again on scheduler
      tick, making it's sum_exec_runtime bigger than actual threads runtime.
      
      KOSAKI Motohiro posted a fix for this problem, but that patch was never
      applied: https://lkml.org/lkml/2013/5/26/191 .
      
      This patch takes different approach to cure the problem. It calls
      update_curr() when cputimer starts, that assure we will have updated
      stats of running threads and on the next schedule tick we will account
      only the runtime that elapsed from cputimer start. That also assure we
      have consistent state between cpu times of individual threads and cpu
      time of the process consisted by those threads.
      
      Full reproducer (tst-cpuclock2.c):
      
      	#define _GNU_SOURCE
      	#include <unistd.h>
      	#include <sys/syscall.h>
      	#include <stdio.h>
      	#include <time.h>
      	#include <pthread.h>
      	#include <stdint.h>
      	#include <inttypes.h>
      
      	/* Parameters for the Linux kernel ABI for CPU clocks.  */
      	#define CPUCLOCK_SCHED          2
      	#define MAKE_PROCESS_CPUCLOCK(pid, clock) \
      		((~(clockid_t) (pid) << 3) | (clockid_t) (clock))
      
      	static pthread_barrier_t barrier;
      
      	/* Help advance the clock.  */
      	static void *chew_cpu(void *arg)
      	{
      		pthread_barrier_wait(&barrier);
      		while (1) ;
      
      		return NULL;
      	}
      
      	/* Don't use the glibc wrapper.  */
      	static int do_nanosleep(int flags, const struct timespec *req)
      	{
      		clockid_t clock_id = MAKE_PROCESS_CPUCLOCK(0, CPUCLOCK_SCHED);
      
      		return syscall(SYS_clock_nanosleep, clock_id, flags, req, NULL);
      	}
      
      	static int64_t tsdiff(const struct timespec *before, const struct timespec *after)
      	{
      		int64_t before_i = before->tv_sec * 1000000000ULL + before->tv_nsec;
      		int64_t after_i = after->tv_sec * 1000000000ULL + after->tv_nsec;
      
      		return after_i - before_i;
      	}
      
      	int main(void)
      	{
      		int result = 0;
      		pthread_t th;
      
      		pthread_barrier_init(&barrier, NULL, 2);
      
      		if (pthread_create(&th, NULL, chew_cpu, NULL) != 0) {
      			perror("pthread_create");
      			return 1;
      		}
      
      		pthread_barrier_wait(&barrier);
      
      		/* The test.  */
      		struct timespec before, after, sleeptimeabs;
      		int64_t sleepdiff, diffabs;
      		const struct timespec sleeptime = {.tv_sec = 0,.tv_nsec = 100000000 };
      
      		/* The relative nanosleep.  Not sure why this is needed, but its presence
      		   seems to make it easier to reproduce the problem.  */
      		if (do_nanosleep(0, &sleeptime) != 0) {
      			perror("clock_nanosleep");
      			return 1;
      		}
      
      		/* Get the current time.  */
      		if (clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &before) < 0) {
      			perror("clock_gettime[2]");
      			return 1;
      		}
      
      		/* Compute the absolute sleep time based on the current time.  */
      		uint64_t nsec = before.tv_nsec + sleeptime.tv_nsec;
      		sleeptimeabs.tv_sec = before.tv_sec + nsec / 1000000000;
      		sleeptimeabs.tv_nsec = nsec % 1000000000;
      
      		/* Sleep for the computed time.  */
      		if (do_nanosleep(TIMER_ABSTIME, &sleeptimeabs) != 0) {
      			perror("absolute clock_nanosleep");
      			return 1;
      		}
      
      		/* Get the time after the sleep.  */
      		if (clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &after) < 0) {
      			perror("clock_gettime[3]");
      			return 1;
      		}
      
      		/* The time after sleep should always be equal to or after the absolute sleep
      		   time passed to clock_nanosleep.  */
      		sleepdiff = tsdiff(&sleeptimeabs, &after);
      		if (sleepdiff < 0) {
      			printf("absolute clock_nanosleep woke too early: %" PRId64 "\n", sleepdiff);
      			result = 1;
      
      			printf("Before %llu.%09llu\n", before.tv_sec, before.tv_nsec);
      			printf("After  %llu.%09llu\n", after.tv_sec, after.tv_nsec);
      			printf("Sleep  %llu.%09llu\n", sleeptimeabs.tv_sec, sleeptimeabs.tv_nsec);
      		}
      
      		/* The difference between the timestamps taken before and after the
      		   clock_nanosleep call should be equal to or more than the duration of the
      		   sleep.  */
      		diffabs = tsdiff(&before, &after);
      		if (diffabs < sleeptime.tv_nsec) {
      			printf("clock_gettime difference too small: %" PRId64 "\n", diffabs);
      			result = 1;
      		}
      
      		pthread_cancel(th);
      
      		return result;
      	}
      
      Signed-off-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/20141112155843.GA24803@redhat.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      6e998916
    • Peter Zijlstra's avatar
      sched/cputime: Fix cpu_timer_sample_group() double accounting · 23cfa361
      Peter Zijlstra authored
      
      
      While looking over the cpu-timer code I found that we appear to add
      the delta for the calling task twice, through:
      
        cpu_timer_sample_group()
          thread_group_cputimer()
            thread_group_cputime()
              times->sum_exec_runtime += task_sched_runtime();
      
          *sample = cputime.sum_exec_runtime + task_delta_exec();
      
      Which would make the sample run ahead, making the sleep short.
      
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Stanislaw Gruszka <sgruszka@redhat.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Tejun Heo <tj@kernel.org>
      Link: http://lkml.kernel.org/r/20141112113737.GI10476@twins.programming.kicks-ass.net
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      23cfa361
    • Peter Zijlstra's avatar
      sched/numa: Avoid selecting oneself as swap target · 7af68335
      Peter Zijlstra authored
      
      
      Because the whole numa task selection stuff runs with preemption
      enabled (its long and expensive) we can end up migrating and selecting
      oneself as a swap target. This doesn't really work out well -- we end
      up trying to acquire the same lock twice for the swap migrate -- so
      avoid this.
      
      Reported-and-Tested-by: default avatarSasha Levin <sasha.levin@oracle.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/20141110100328.GF29390@twins.programming.kicks-ass.net
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      7af68335
  2. Nov 10, 2014
    • Andrey Ryabinin's avatar
      sched/numa: Fix out of bounds read in sched_init_numa() · c123588b
      Andrey Ryabinin authored
      
      
      On latest mm + KASan patchset I've got this:
      
          ==================================================================
          BUG: AddressSanitizer: out of bounds access in sched_init_smp+0x3ba/0x62c at addr ffff88006d4bee6c
          =============================================================================
          BUG kmalloc-8 (Not tainted): kasan error
          -----------------------------------------------------------------------------
      
          Disabling lock debugging due to kernel taint
          INFO: Allocated in alloc_vfsmnt+0xb0/0x2c0 age=75 cpu=0 pid=0
           __slab_alloc+0x4b4/0x4f0
           __kmalloc_track_caller+0x15f/0x1e0
           kstrdup+0x44/0x90
           alloc_vfsmnt+0xb0/0x2c0
           vfs_kern_mount+0x35/0x190
           kern_mount_data+0x25/0x50
           pid_ns_prepare_proc+0x19/0x50
           alloc_pid+0x5e2/0x630
           copy_process.part.41+0xdf5/0x2aa0
           do_fork+0xf5/0x460
           kernel_thread+0x21/0x30
           rest_init+0x1e/0x90
           start_kernel+0x522/0x531
           x86_64_start_reservations+0x2a/0x2c
           x86_64_start_kernel+0x15b/0x16a
          INFO: Slab 0xffffea0001b52f80 objects=24 used=22 fp=0xffff88006d4befc0 flags=0x100000000004080
          INFO: Object 0xffff88006d4bed20 @offset=3360 fp=0xffff88006d4bee70
      
          Bytes b4 ffff88006d4bed10: 00 00 00 00 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a  ........ZZZZZZZZ
          Object ffff88006d4bed20: 70 72 6f 63 00 6b 6b a5                          proc.kk.
          Redzone ffff88006d4bed28: cc cc cc cc cc cc cc cc                          ........
          Padding ffff88006d4bee68: 5a 5a 5a 5a 5a 5a 5a 5a                          ZZZZZZZZ
          CPU: 0 PID: 1 Comm: swapper/0 Tainted: G    B          3.18.0-rc3-mm1+ #108
          Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014
           ffff88006d4be000 0000000000000000 ffff88006d4bed20 ffff88006c86fd18
           ffffffff81cd0a59 0000000000000058 ffff88006d404240 ffff88006c86fd48
           ffffffff811fa3a8 ffff88006d404240 ffffea0001b52f80 ffff88006d4bed20
          Call Trace:
          dump_stack (lib/dump_stack.c:52)
          print_trailer (mm/slub.c:645)
          object_err (mm/slub.c:652)
          ? sched_init_smp (kernel/sched/core.c:6552 kernel/sched/core.c:7063)
          kasan_report_error (mm/kasan/report.c:102 mm/kasan/report.c:178)
          ? kasan_poison_shadow (mm/kasan/kasan.c:48)
          ? kasan_unpoison_shadow (mm/kasan/kasan.c:54)
          ? kasan_poison_shadow (mm/kasan/kasan.c:48)
          ? kasan_kmalloc (mm/kasan/kasan.c:311)
          __asan_load4 (mm/kasan/kasan.c:371)
          ? sched_init_smp (kernel/sched/core.c:6552 kernel/sched/core.c:7063)
          sched_init_smp (kernel/sched/core.c:6552 kernel/sched/core.c:7063)
          kernel_init_freeable (init/main.c:869 init/main.c:997)
          ? finish_task_switch (kernel/sched/sched.h:1036 kernel/sched/core.c:2248)
          ? rest_init (init/main.c:924)
          kernel_init (init/main.c:929)
          ? rest_init (init/main.c:924)
          ret_from_fork (arch/x86/kernel/entry_64.S:348)
          ? rest_init (init/main.c:924)
          Read of size 4 by task swapper/0:
          Memory state around the buggy address:
           ffff88006d4beb80: fc fc fc fc fc fc fc fc fc fc 00 fc fc fc fc fc
           ffff88006d4bec00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
           ffff88006d4bec80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
           ffff88006d4bed00: fc fc fc fc 00 fc fc fc fc fc fc fc fc fc fc fc
           ffff88006d4bed80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
          >ffff88006d4bee00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc 04 fc
                                                                    ^
           ffff88006d4bee80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
           ffff88006d4bef00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
           ffff88006d4bef80: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb
           ffff88006d4bf000: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
           ffff88006d4bf080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
          ==================================================================
      
      Zero 'level' (e.g. on non-NUMA system) causing out of bounds
      access in this line:
      
           sched_max_numa_distance = sched_domains_numa_distance[level - 1];
      
      Fix this by exiting from sched_init_numa() earlier.
      
      Signed-off-by: default avatarAndrey Ryabinin <a.ryabinin@samsung.com>
      Reviewed-by: default avatarRik van Riel <riel@redhat.com>
      Fixes: 9942f79b
      
       ("sched/numa: Export info needed for NUMA balancing on complex topologies")
      Cc: peterz@infradead.org
      Link: http://lkml.kernel.org/r/1415372020-1871-1-git-send-email-a.ryabinin@samsung.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      c123588b
  3. Nov 04, 2014
    • Iulia Manda's avatar
      sched: Refactor task_struct to use numa_faults instead of numa_* pointers · 44dba3d5
      Iulia Manda authored
      
      
      This patch simplifies task_struct by removing the four numa_* pointers
      in the same array and replacing them with the array pointer. By doing this,
      on x86_64, the size of task_struct is reduced by 3 ulong pointers (24 bytes on
      x86_64).
      
      A new parameter is added to the task_faults_idx function so that it can return
      an index to the correct offset, corresponding with the old precalculated
      pointers.
      
      All of the code in sched/ that depended on task_faults_idx and numa_* was
      changed in order to match the new logic.
      
      Signed-off-by: default avatarIulia Manda <iulia.manda21@gmail.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: mgorman@suse.de
      Cc: dave@stgolabs.net
      Cc: riel@redhat.com
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/20141031001331.GA30662@winterfell
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      44dba3d5
    • Wanpeng Li's avatar
      sched/deadline: Don't check CONFIG_SMP in switched_from_dl() · cad3bb32
      Wanpeng Li authored
      
      
      There are both UP and SMP version of pull_dl_task(), so don't need
      to check CONFIG_SMP in switched_from_dl();
      
      Signed-off-by: default avatarWanpeng Li <wanpeng.li@linux.intel.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Juri Lelli <juri.lelli@arm.com>
      Cc: Kirill Tkhai <ktkhai@parallels.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1414708776-124078-6-git-send-email-wanpeng.li@linux.intel.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      cad3bb32
    • Wanpeng Li's avatar
      sched/deadline: Reschedule from switched_from_dl() after a successful pull · cd660911
      Wanpeng Li authored
      
      
      In switched_from_dl() we have to issue a resched if we successfully
      pulled some task from other cpus. This patch also aligns the behavior
      with -rt.
      
      Suggested-by: default avatarJuri Lelli <juri.lelli@arm.com>
      Signed-off-by: default avatarWanpeng Li <wanpeng.li@linux.intel.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Kirill Tkhai <ktkhai@parallels.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1414708776-124078-5-git-send-email-wanpeng.li@linux.intel.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      cd660911
    • Wanpeng Li's avatar
      sched/deadline: Push task away if the deadline is equal to curr during wakeup · 6b0a563f
      Wanpeng Li authored
      
      
      This patch pushes task away if the dealine of the task is equal
      to current during wake up. The same behavior as rt class.
      
      Signed-off-by: default avatarWanpeng Li <wanpeng.li@linux.intel.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Juri Lelli <juri.lelli@arm.com>
      Cc: Kirill Tkhai <ktkhai@parallels.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1414708776-124078-4-git-send-email-wanpeng.li@linux.intel.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      6b0a563f
    • Wanpeng Li's avatar
      sched/deadline: Add deadline rq status print · acb32132
      Wanpeng Li authored
      
      
      This patch add deadline rq status print.
      
      Signed-off-by: default avatarWanpeng Li <wanpeng.li@linux.intel.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Juri Lelli <juri.lelli@arm.com>
      Cc: Kirill Tkhai <ktkhai@parallels.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1414708776-124078-3-git-send-email-wanpeng.li@linux.intel.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      acb32132
    • Wanpeng Li's avatar
      sched/deadline: Fix artificial overrun introduced by yield_task_dl() · 80496880
      Wanpeng Li authored
      
      
      The yield semantic of deadline class is to reduce remaining runtime to
      zero, and then update_curr_dl() will stop it. However, comsumed bandwidth
      is reduced from the budget of yield task again even if it has already been
      set to zero which leads to artificial overrun. This patch fix it by make
      sure we don't steal some more time from the task that yielded in update_curr_dl().
      
      Suggested-by: default avatarJuri Lelli <juri.lelli@arm.com>
      Signed-off-by: default avatarWanpeng Li <wanpeng.li@linux.intel.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Kirill Tkhai <ktkhai@parallels.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1414708776-124078-2-git-send-email-wanpeng.li@linux.intel.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      80496880
    • Wanpeng Li's avatar
      sched/rt: Clean up check_preempt_equal_prio() · 308a623a
      Wanpeng Li authored
      
      
      This patch checks if current can be pushed/pulled somewhere else
      in advance to make logic clear, the same behavior as dl class.
      
      - If current can't be migrated, useless to reschedule, let's hope
        task can move out.
      - If task is migratable, so let's not schedule it and see if it
        can be pushed or pulled somewhere else.
      
      Signed-off-by: default avatarWanpeng Li <wanpeng.li@linux.intel.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Juri Lelli <juri.lelli@arm.com>
      Cc: Kirill Tkhai <ktkhai@parallels.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1414708776-124078-1-git-send-email-wanpeng.li@linux.intel.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      308a623a
    • Juri Lelli's avatar
      sched/core: Use dl_bw_of() under rcu_read_lock_sched() · 75e23e49
      Juri Lelli authored
      As per commit f10e00f4
      
       ("sched/dl: Use dl_bw_of() under
      rcu_read_lock_sched()"), dl_bw_of() has to be protected by
      rcu_read_lock_sched().
      
      Signed-off-by: default avatarJuri Lelli <juri.lelli@arm.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1414497286-28824-1-git-send-email-juri.lelli@arm.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      75e23e49
    • Yao Dongdong's avatar
      sched: Check if we got a shallowest_idle_cpu before searching for least_loaded_cpu · 9f96742a
      Yao Dongdong authored
      
      
      Idle cpu is idler than non-idle cpu, so we needn't search for least_loaded_cpu
      after we have found an idle cpu.
      
      Signed-off-by: default avatarYao Dongdong <yaodongdong@huawei.com>
      Reviewed-by: default avatarSrikar Dronamraju <srikar@linux.vnet.ibm.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1414469286-6023-1-git-send-email-yaodongdong@huawei.com
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      9f96742a
    • Kirill Tkhai's avatar
      sched/deadline: Implement cancel_dl_timer() to use in switched_from_dl() · 67dfa1b7
      Kirill Tkhai authored
      
      
      Currently used hrtimer_try_to_cancel() is racy:
      
      raw_spin_lock(&rq->lock)
      ...                            dl_task_timer                 raw_spin_lock(&rq->lock)
      ...                               raw_spin_lock(&rq->lock)   ...
         switched_from_dl()             ...                        ...
            hrtimer_try_to_cancel()     ...                        ...
         switched_to_fair()             ...                        ...
      ...                               ...                        ...
      ...                               ...                        ...
      raw_spin_unlock(&rq->lock)        ...                        (asquired)
      ...                               ...                        ...
      ...                               ...                        ...
      do_exit()                         ...                        ...
         schedule()                     ...                        ...
            raw_spin_lock(&rq->lock)    ...                        raw_spin_unlock(&rq->lock)
            ...                         ...                        ...
            raw_spin_unlock(&rq->lock)  ...                        raw_spin_lock(&rq->lock)
            ...                         ...                        (asquired)
            put_task_struct()           ...                        ...
                free_task_struct()      ...                        ...
            ...                         ...                        raw_spin_unlock(&rq->lock)
      ...                               (asquired)                 ...
      ...                               ...                        ...
      ...                               (use after free)           ...
      
      So, let's implement 100% guaranteed way to cancel the timer and let's
      be sure we are safe even in very unlikely situations.
      
      rq unlocking does not limit the area of switched_from_dl() use, because
      this has already been possible in pull_dl_task() below.
      
      Let's consider the safety of of this unlocking. New code in the patch
      is working when hrtimer_try_to_cancel() fails. This means the callback
      is running. In this case hrtimer_cancel() is just waiting till the
      callback is finished. Two
      
      1) Since we are in switched_from_dl(), new class is not dl_sched_class and
      new prio is not less MAX_DL_PRIO. So, the callback returns early; it's
      right after !dl_task() check. After that hrtimer_cancel() returns back too.
      
      The above is:
      
      raw_spin_lock(rq->lock);                  ...
      ...                                       dl_task_timer()
      ...                                          raw_spin_lock(rq->lock);
         switched_from_dl()                        ...
             hrtimer_try_to_cancel()               ...
                raw_spin_unlock(rq->lock);         ...
                hrtimer_cancel()                   ...
                ...                                raw_spin_unlock(rq->lock);
                ...                                return HRTIMER_NORESTART;
                ...                             ...
                raw_spin_lock(rq->lock);        ...
      
      2) But the below is also possible:
                                         dl_task_timer()
                                            raw_spin_lock(rq->lock);
                                            ...
                                            raw_spin_unlock(rq->lock);
      raw_spin_lock(rq->lock);              ...
         switched_from_dl()                 ...
             hrtimer_try_to_cancel()        ...
             ...                            return HRTIMER_NORESTART;
             raw_spin_unlock(rq->lock);  ...
             hrtimer_cancel();           ...
             raw_spin_lock(rq->lock);    ...
      
      In this case hrtimer_cancel() returns immediately. Very unlikely case,
      just to mention.
      
      Nobody can manipulate the task, because check_class_changed() is
      always called with pi_lock locked. Nobody can force the task to
      participate in (concurrent) priority inheritance schemes (the same reason).
      
      All concurrent task operations require pi_lock, which is held by us.
      No deadlocks with dl_task_timer() are possible, because it returns
      right after !dl_task() check (it does nothing).
      
      If we receive a new dl_task during the time of unlocked rq, we just
      don't have to do pull_dl_task() in switched_from_dl() further.
      
      Signed-off-by: default avatarKirill Tkhai <ktkhai@parallels.com>
      [ Added comments]
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Acked-by: default avatarJuri Lelli <juri.lelli@arm.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1414420852.19914.186.camel@tkhai
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      67dfa1b7
    • Peter Zijlstra's avatar
      sched: Use WARN_ONCE for the might_sleep() TASK_RUNNING test · e7097e8b
      Peter Zijlstra authored
      
      
      In some cases this can trigger a true flood of output.
      
      Requested-by: default avatarIngo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      e7097e8b
    • Peter Zijlstra's avatar
      netdev, sched/wait: Fix sleeping inside wait event · ff960a73
      Peter Zijlstra authored
      
      
      rtnl_lock_unregistering*() take rtnl_lock() -- a mutex -- inside a
      wait loop. The wait loop relies on current->state to function, but so
      does mutex_lock(), nesting them makes for the inner to destroy the
      outer state.
      
      Fix this using the new wait_woken() bits.
      
      Reported-by: default avatarFengguang Wu <fengguang.wu@intel.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Cong Wang <cwang@twopensource.com>
      Cc: David Gibson <david@gibson.dropbear.id.au>
      Cc: Eric Biederman <ebiederm@xmission.com>
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: Jamal Hadi Salim <jhs@mojatatu.com>
      Cc: Jerry Chu <hkchu@google.com>
      Cc: Jiri Pirko <jiri@resnulli.us>
      Cc: John Fastabend <john.fastabend@gmail.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Nicolas Dichtel <nicolas.dichtel@6wind.com>
      Cc: sfeldma@cumulusnetworks.com <sfeldma@cumulusnetworks.com>
      Cc: stephen hemminger <stephen@networkplumber.org>
      Cc: Tom Gundersen <teg@jklm.no>
      Cc: Tom Herbert <therbert@google.com>
      Cc: Veaceslav Falico <vfalico@gmail.com>
      Cc: Vlad Yasevich <vyasevic@redhat.com>
      Cc: netdev@vger.kernel.org
      Link: http://lkml.kernel.org/r/20141029173110.GE15602@worktop.programming.kicks-ass.net
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      ff960a73
    • Peter Zijlstra's avatar
      rfcomm, sched/wait: Fix broken wait construct · eedf7e47
      Peter Zijlstra authored
      
      
      rfcomm_run() is a tad broken in that is has a nested wait loop. One
      cannot rely on p->state for the outer wait because the inner wait will
      overwrite it.
      
      Fix this using the new wait_woken() facility.
      
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Peter Hurley <peter@hurleysoftware.com>
      Cc: Alexander Holler <holler@ahsoftware.de>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Gustavo Padovan <gustavo@padovan.org>
      Cc: Joe Perches <joe@perches.com>
      Cc: Johan Hedberg <johan.hedberg@gmail.com>
      Cc: Libor Pechacek <lpechacek@suse.cz>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Marcel Holtmann <marcel@holtmann.org>
      Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
      Cc: Vignesh Raman <Vignesh_Raman@mentor.com>
      Cc: linux-bluetooth@vger.kernel.org
      Cc: netdev@vger.kernel.org
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      eedf7e47
    • Peter Zijlstra's avatar
      audit, sched/wait: Fixup kauditd_thread() wait loop · 6b55fc63
      Peter Zijlstra authored
      
      
      The kauditd_thread wait loop is a bit iffy; it has a number of problems:
      
       - calls try_to_freeze() before schedule(); you typically want the
         thread to re-evaluate the sleep condition when unfreezing, also
         freeze_task() issues a wakeup.
      
       - it unconditionally does the {add,remove}_wait_queue(), even when the
         sleep condition is false.
      
      Use wait_event_freezable() that does the right thing.
      
      Reported-by: default avatarMike Galbraith <umgwanakikbuti@gmail.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Eric Paris <eparis@redhat.com>
      Cc: oleg@redhat.com
      Cc: Eric Paris <eparis@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/20141002102251.GA6324@worktop.programming.kicks-ass.net
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      6b55fc63
    • Peter Zijlstra (Intel)'s avatar
      sched/wait: Remove wait_event_freezekillable() · 5d4d5658
      Peter Zijlstra (Intel) authored
      
      
      There is no user.. make it go away.
      
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: oleg@redhat.com
      Cc: Rafael Wysocki <rjw@rjwysocki.net>
      Cc: Len Brown <len.brown@intel.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: linux-pm@vger.kernel.org
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      5d4d5658
    • Peter Zijlstra's avatar
      sched/wait: Reimplement wait_event_freezable() · 36df04bc
      Peter Zijlstra authored
      
      
      Provide better implementations of wait_event_freezable() APIs.
      
      The problem is with freezer_do_not_count(), it hides the thread from
      the freezer, even though this thread might not actually freeze/sleep
      at all.
      
      Cc: oleg@redhat.com
      Cc: Rafael Wysocki <rjw@rjwysocki.net>
      
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Len Brown <len.brown@intel.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
      Cc: linux-pm@vger.kernel.org
      Link: http://lkml.kernel.org/n/tip-d86fz1jmso9wjxa8jfpinp8o@git.kernel.org
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      36df04bc
    • Peter Zijlstra's avatar
      sched/wait: Fix a kthread race with wait_woken() · cb6538e7
      Peter Zijlstra authored
      
      
      There is a race between kthread_stop() and the new wait_woken() that
      can result in a lack of progress.
      
      CPU 0                                    | CPU 1
                                               |
      rfcomm_run()                             | kthread_stop()
        ...                                    |
        if (!test_bit(KTHREAD_SHOULD_STOP))    |
                                               |   set_bit(KTHREAD_SHOULD_STOP)
                                               |   wake_up_process()
          wait_woken()                         |   wait_for_completion()
            set_current_state(INTERRUPTIBLE)   |
            if (!WQ_FLAG_WOKEN)                |
              schedule_timeout()               |
                                               |
      
      After which both tasks will wait.. forever.
      
      Fix this by having wait_woken() check for kthread_should_stop() but
      only for kthreads (obviously).
      
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Peter Hurley <peter@hurleysoftware.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      cb6538e7
    • Kirill Tkhai's avatar
      sched: Remove lockdep check in sched_move_task() · f7b8a47d
      Kirill Tkhai authored
      sched_move_task() is the only interface to change sched_task_group:
      cpu_cgrp_subsys methods and autogroup_move_group() use it.
      
      Everything is synchronized by task_rq_lock(), so cpu_cgroup_attach()
      is ordered with other users of sched_move_task(). This means we do no
      need RCU here: if we've dereferenced a tg here, the .attach method
      hasn't been called for it yet.
      
      Thus, we should pass "true" to task_css_check() to silence lockdep
      warnings.
      
      Fixes: eeb61e53
      
       ("sched: Fix race between task_group and sched_task_group")
      Reported-by: default avatarOleg Nesterov <oleg@redhat.com>
      Reported-by: default avatarFengguang Wu <fengguang.wu@intel.com>
      Signed-off-by: default avatarKirill Tkhai <ktkhai@parallels.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1414473874.8574.2.camel@tkhai
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      f7b8a47d
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v3.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · 980d0d51
      Linus Torvalds authored
      Pull pin-control fixes from Linus Walleij:
       "This kernel cycle has been calm for both pin control and GPIO so far
        but here are three pin control patches for you anyway, only really
        dealing with Baytrail:
      
         - Two fixes for the Baytrail driver affecting IRQs and output state
           in sysfs
         - Use the linux-gpio mailing list also for pinctrl patches"
      
      * tag 'pinctrl-v3.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl: baytrail: show output gpio state correctly on Intel Baytrail
        pinctrl: use linux-gpio mailing list
        pinctrl: baytrail: Clear DIRECT_IRQ bit
      980d0d51
    • Linus Torvalds's avatar
      Merge branch 'fixes-for-v3.18' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping · f3ed88a6
      Linus Torvalds authored
      Pull CMA and DMA-mapping fixes from Marek Szyprowski:
       "This contains important fixes for recently introduced highmem support
        for default contiguous memory region used for dma-mapping subsystem"
      
      * 'fixes-for-v3.18' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping:
        mm, cma: make parameters order consistent in func declaration and definition
        mm: cma: Use %pa to print physical addresses
        mm: cma: Ensure that reservations never cross the low/high mem boundary
        mm: cma: Always consider a 0 base address reservation as dynamic
        mm: cma: Don't crash on allocation if CMA area can't be activated
      f3ed88a6
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client · ce1928da
      Linus Torvalds authored
      Pull ceph fixes from Sage Weil:
       "There is a GFP flag fix from Mike Christie, an error code fix from
        Jan, and fixes for two unnecessary allocations (kmalloc and workqueue)
        from Ilya.  All are well tested.
      
        Ilya has one other fix on the way but it didn't get tested in time"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:
        libceph: eliminate unnecessary allocation in process_one_ticket()
        rbd: Fix error recovery in rbd_obj_read_sync()
        libceph: use memalloc flags for net IO
        rbd: use a single workqueue for all devices
      ce1928da
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · f4ca536f
      Linus Torvalds authored
      Pull m68k update from Geert Uytterhoeven.
      
      Just wiring up the bpf system call.
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: Wire up bpf
      f4ca536f
    • Linus Torvalds's avatar
      Merge tag 'armsoc-for-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 2084becb
      Linus Torvalds authored
      Pull ARM SoC fixes from Olof Johansson:
       "A surprisingly small batch of fixes for -rc3.  Suspiciously small, I'd
        say.
      
        Anyway, most of this are a few defconfig updates.  Some for omap to
        deal with kernel binary size (moving ipv6 to module, etc).  A larger
        one for socfpga that refreshes with some churn, but also turns on a
        few options that makes the newly-added board in my bootfarm usable for
        testing.
      
        OMAP3 will also now warn when booted with legacy (non-DT) boot
        protocols, hopefully encouraging those who still care about some of
        those platforms to submit DT support and report bugs where needed.
        Nothing stops working though, this is just to warn for future
        deprecation.
      
        Beyond this, very few actual bugfixes.  A PXA fix for DEBUG_LL boot
        hangs, a missing terminting entry in a dt_match array on RealView a
        MTD fix on OMAP with NAND"
      
      [ Obviously missed rc3, will make rc4 instead ;) ]
      
      * tag 'armsoc-for-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        MAINTAINERS: drop list entry for davinci
        ARM: OMAP2+: Warn about deprecated legacy booting mode
        ARM: omap2plus_defconfig: Fix errors with NAND BCH
        ARM: multi_v7_defconfig: fix support for APQ8084
        soc: versatile: Add terminating entry for realview_soc_of_match
        ARM: ixp4xx: remove compilation warnings in io.h
        MAINTAINERS: Add Soren as reviewer for Zynq
        ARM: omap2plus_defconfig: Fix bloat caused by having ipv6 built-in
        ARM: socfpga_defconfig: Update defconfig for SoCFPGA
        ARM: pxa: fix hang on startup with DEBUG_LL
      2084becb
  4. Nov 03, 2014
    • Linus Torvalds's avatar
      Linux 3.18-rc3 · 0df1f248
      Linus Torvalds authored
      v3.18-rc3
      0df1f248
    • Linus Torvalds's avatar
      Merge tag 'for-linus-20141102' of git://git.infradead.org/linux-mtd · 81d92dc1
      Linus Torvalds authored
      Pull MTD fixes from Brian Norris:
       "Three main MTD fixes for 3.18:
      
         - A regression from 3.16 which was noticed in 3.17.  With the
           restructuring of the m25p80.c driver and the SPI NOR library
           framework, we omitted proper listing of the SPI device IDs.  This
           means m25p80.c wouldn't auto-load (modprobe) properly when built as
           a module.  For now, we duplicate the device IDs into both modules.
      
         - The OMAP / ELM modules were depending on an implicit link ordering.
           Use deferred probing so that the new link order (in 3.18-rc) can
           still allow for successful probing.
      
         - Fix suspend/resume support for LH28F640BF NOR flash"
      
      * tag 'for-linus-20141102' of git://git.infradead.org/linux-mtd:
        mtd: cfi_cmdset_0001.c: fix resume for LH28F640BF chips
        mtd: omap: fix mtd devices not showing up
        mtd: m25p80,spi-nor: Fix module aliases for m25p80
        mtd: spi-nor: make spi_nor_scan() take a chip type name, not spi_device_id
        mtd: m25p80: get rid of spi_get_device_id
      81d92dc1