1. 19 Jun, 2013 4 commits
    • Kirill Tkhai's avatar
      sched/rt: Simplify pull_rt_task() logic and remove .leaf_rt_rq_list · e23ee747
      Kirill Tkhai authored
      [ Peter, this is based off of some of my work, I ran it though a few
        tests and it passed. I also reviewed it, and added my SOB as I am
        somewhat a co-author to it. ]
      
      Based on the patch by Steven Rostedt from previous year:
      
      https://lkml.org/lkml/2012/4/18/517
      
      1)Simplify pull_rt_task() logic: search in pushable tasks of dest runqueue.
      The only pullable tasks are the tasks which are pushable in their local rq,
      and no others.
      
      2)Remove .leaf_rt_rq_list member of struct rt_rq and functions connected
      with it: nobody uses it since now.
      Signed-off-by: default avatarKirill Tkhai <tkhai@yandex.ru>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/287571370557898@web7d.yandex.ruSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      e23ee747
    • Ingo Molnar's avatar
      Merge branch 'sched/urgent' into sched/core · d81344c5
      Ingo Molnar authored
      Merge in fixes before applying ongoing new work.
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      d81344c5
    • Steven Rostedt's avatar
      tracing/context-tracking: Add preempt_schedule_context() for tracing · 29bb9e5a
      Steven Rostedt authored
      Dave Jones hit the following bug report:
      
       ===============================
       [ INFO: suspicious RCU usage. ]
       3.10.0-rc2+ #1 Not tainted
       -------------------------------
       include/linux/rcupdate.h:771 rcu_read_lock() used illegally while idle!
       other info that might help us debug this:
       RCU used illegally from idle CPU! rcu_scheduler_active = 1, debug_locks = 0
       RCU used illegally from extended quiescent state!
       2 locks held by cc1/63645:
        #0:  (&rq->lock){-.-.-.}, at: [<ffffffff816b39fd>] __schedule+0xed/0x9b0
        #1:  (rcu_read_lock){.+.+..}, at: [<ffffffff8109d645>] cpuacct_charge+0x5/0x1f0
      
       CPU: 1 PID: 63645 Comm: cc1 Not tainted 3.10.0-rc2+ #1 [loadavg: 40.57 27.55 13.39 25/277 64369]
       Hardware name: Gigabyte Technology Co., Ltd. GA-MA78GM-S2H/GA-MA78GM-S2H, BIOS F12a 04/23/2010
        0000000000000000 ffff88010f78fcf8 ffffffff816ae383 ffff88010f78fd28
        ffffffff810b698d ffff88011c092548 000000000023d073 ffff88011c092500
        0000000000000001 ffff88010f78fd60 ffffffff8109d7c5 ffffffff8109d645
       Call Trace:
        [<ffffffff816ae383>] dump_stack+0x19/0x1b
        [<ffffffff810b698d>] lockdep_rcu_suspicious+0xfd/0x130
        [<ffffffff8109d7c5>] cpuacct_charge+0x185/0x1f0
        [<ffffffff8109d645>] ? cpuacct_charge+0x5/0x1f0
        [<ffffffff8108dffc>] update_curr+0xec/0x240
        [<ffffffff8108f528>] put_prev_task_fair+0x228/0x480
        [<ffffffff816b3a71>] __schedule+0x161/0x9b0
        [<ffffffff816b4721>] preempt_schedule+0x51/0x80
        [<ffffffff816b4800>] ? __cond_resched_softirq+0x60/0x60
        [<ffffffff816b6824>] ? retint_careful+0x12/0x2e
        [<ffffffff810ff3cc>] ftrace_ops_control_func+0x1dc/0x210
        [<ffffffff816be280>] ftrace_call+0x5/0x2f
        [<ffffffff816b681d>] ? retint_careful+0xb/0x2e
        [<ffffffff816b4805>] ? schedule_user+0x5/0x70
        [<ffffffff816b4805>] ? schedule_user+0x5/0x70
        [<ffffffff816b6824>] ? retint_careful+0x12/0x2e
       ------------[ cut here ]------------
      
      What happened was that the function tracer traced the schedule_user() code
      that tells RCU that the system is coming back from userspace, and to
      add the CPU back to the RCU monitoring.
      
      Because the function tracer does a preempt_disable/enable_notrace() calls
      the preempt_enable_notrace() checks the NEED_RESCHED flag. If it is set,
      then preempt_schedule() is called. But this is called before the user_exit()
      function can inform the kernel that the CPU is no longer in user mode and
      needs to be accounted for by RCU.
      
      The fix is to create a new preempt_schedule_context() that checks if
      the kernel is still in user mode and if so to switch it to kernel mode
      before calling schedule. It also switches back to user mode coming back
      from schedule in need be.
      
      The only user of this currently is the preempt_enable_notrace(), which is
      only used by the tracing subsystem.
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/1369423420.6828.226.camel@gandalf.local.homeSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      29bb9e5a
    • Vincent Guittot's avatar
      sched: Fix clear NOHZ_BALANCE_KICK · 873b4c65
      Vincent Guittot authored
      I have faced a sequence where the Idle Load Balance was sometime not
      triggered for a while on my platform, in the following scenario:
      
       CPU 0 and CPU 1 are running tasks and CPU 2 is idle
      
       CPU 1 kicks the Idle Load Balance
       CPU 1 selects CPU 2 as the new Idle Load Balancer
       CPU 2 sets NOHZ_BALANCE_KICK for CPU 2
       CPU 2 sends a reschedule IPI to CPU 2
      
       While CPU 3 wakes up, CPU 0 or CPU 1 migrates a waking up task A on CPU 2
      
       CPU 2 finally wakes up, runs task A and discards the Idle Load Balance
             task A quickly goes back to sleep (before a tick occurs on CPU 2)
       CPU 2 goes back to idle with NOHZ_BALANCE_KICK set
      
      Whenever CPU 2 will be selected as the ILB, no reschedule IPI will be sent
      because NOHZ_BALANCE_KICK is already set and no Idle Load Balance will be
      performed.
      
      We must wait for the sched softirq to be raised on CPU 2 thanks to another
      part the kernel to come back to clear NOHZ_BALANCE_KICK.
      
      The proposed solution clears NOHZ_BALANCE_KICK in schedule_ipi if
      we can't raise the sched_softirq for the Idle Load Balance.
      
      Change since V1:
      
      - move the clear of NOHZ_BALANCE_KICK in got_nohz_idle_kick if the ILB
        can't run on this CPU (as suggested by Peter)
      Signed-off-by: default avatarVincent Guittot <vincent.guittot@linaro.org>
      Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/1370419991-13870-1-git-send-email-vincent.guittot@linaro.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      873b4c65
  2. 31 May, 2013 2 commits
  3. 30 May, 2013 5 commits
  4. 29 May, 2013 3 commits
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-fixes-v3.10-3' of... · 7b55eab8
      Linus Torvalds authored
      Merge tag 'pinctrl-fixes-v3.10-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
      
      Pull pin-control fixes from Linus Walleij:
       - Six patches fixing up the suspend/resume and wakeup handling of the
         Samsung and Exynos drivers.
       - Errorpath fixes for four different drivers.  All on the probe()
         errorpath.
       - Make the debugfs code for pin config take the right mutex.
      
      * tag 'pinctrl-fixes-v3.10-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl: pinconf: take the right mutex
        pinctrl: sunxi: fix error return code in sunxi_pinctrl_probe()
        pinctrl: exynos: Handle suspend/resume of GPIO EINT registers
        pinctrl: samsung: Allow per-bank SoC-specific private data
        pinctrl: samsung: Add support for SoC-specific suspend/resume callbacks
        pinctrl: Don't override the error code in probe error handling
        ARM: EXYNOS: Fix EINT wake-up mask configuration when pinctrl is used
        pinctrl: exynos: Add support for set_irq_wake of wake-up EINTs
        pinctrl: samsung: fix suspend/resume functionality
      7b55eab8
    • Linus Torvalds's avatar
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · c4763215
      Linus Torvalds authored
      Pull ARM Exynos fixes from Olof Johansson:
       "Here's a shorter set of fixes for 3.10, all for Samsung Exynos
        platforms.
      
        It also includes a defconfig update so that exynos_defconfig provides
        a meaningful set of drivers to boot an unmodified kernel on the
        Samsung ARM-based Chromebooks."
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: exynos: defconfig update
        ARM: SAMSUNG: Add names to fimd0 IRQ resources
        ARM: EXYNOS: fix software reset logic for EXYNOS5440 SOC
        ARM: EXYNOS: Fix support of Exynos4210 rev0 SoC
        ARM: dts: Enabling samsung-usb2phy driver for exynos5250
      c4763215
    • Olof Johansson's avatar
      ARM: exynos: defconfig update · da9d0fbf
      Olof Johansson authored
      This turns on a number of configs that are useful on the Chromebook, but also
      good to have on in general:
      
      * USB host and MMC drivers(!)
      * I2C GPIO arbitration driver
      * CYAPA trackpad driver
      * simplefb
      * CROS EC and keyboard drivers
      * S5M8767 driver
      * MAX77686 drivers
      * MAX8997 driver
      * DEVTMPFS + mount
      * DM_CRYPT (as module)
      * CRYPTOLOOP
      * HIGHMEM
      * PRINTK timestamps
      
      This also turns off DEBUG_LL, and switches the hardcoded Samsung lowlevel
      uart to uart 3 (which is only used to show the "uncompressing kernel"
      message at boot, it seems).
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      Reviewed-by: default avatarDoug Anderson <dianders@chromium.org>
      Tested-by: default avatarTushar Behera <tushar.behera@linaro.org>
      Acked-by: default avatarKukjin Kim <kgene.kim@samsung.com>
      da9d0fbf
  5. 28 May, 2013 20 commits
  6. 27 May, 2013 6 commits