1. 09 9月, 2014 2 次提交
  2. 08 9月, 2014 1 次提交
  3. 03 9月, 2014 1 次提交
  4. 28 8月, 2014 3 次提交
  5. 09 8月, 2014 1 次提交
  6. 08 8月, 2014 1 次提交
  7. 07 8月, 2014 3 次提交
    • S
      cpufreq: OPP: Avoid sleeping while atomic · 3c5445ce
      Stephen Boyd 提交于
      We allocate the cpufreq table after calling rcu_read_lock(),
      which disables preemption. This causes scheduling while atomic
      warnings. Use GFP_ATOMIC instead of GFP_KERNEL and update for
      kcalloc while we're here.
      
      BUG: sleeping function called from invalid context at mm/slub.c:1246
      in_atomic(): 0, irqs_disabled(): 0, pid: 80, name: modprobe
      5 locks held by modprobe/80:
       #0:  (&dev->mutex){......}, at: [<c050d484>] __driver_attach+0x48/0x98
       #1:  (&dev->mutex){......}, at: [<c050d494>] __driver_attach+0x58/0x98
       #2:  (subsys mutex#5){+.+.+.}, at: [<c050c114>] subsys_interface_register+0x38/0xc8
       #3:  (cpufreq_rwsem){.+.+.+}, at: [<c05a9c8c>] __cpufreq_add_dev.isra.22+0x84/0x92c
       #4:  (rcu_read_lock){......}, at: [<c05ab24c>] dev_pm_opp_init_cpufreq_table+0x18/0x10c
      Preemption disabled at:[<  (null)>]   (null)
      
      CPU: 2 PID: 80 Comm: modprobe Not tainted 3.16.0-rc3-next-20140701-00035-g286857f216aa-dirty #217
      [<c0214da8>] (unwind_backtrace) from [<c02123f8>] (show_stack+0x10/0x14)
      [<c02123f8>] (show_stack) from [<c070141c>] (dump_stack+0x70/0xbc)
      [<c070141c>] (dump_stack) from [<c02f4cb0>] (__kmalloc+0x124/0x250)
      [<c02f4cb0>] (__kmalloc) from [<c05ab270>] (dev_pm_opp_init_cpufreq_table+0x3c/0x10c)
      [<c05ab270>] (dev_pm_opp_init_cpufreq_table) from [<bf000508>] (cpufreq_init+0x48/0x378 [cpufreq_generic])
      [<bf000508>] (cpufreq_init [cpufreq_generic]) from [<c05a9e08>] (__cpufreq_add_dev.isra.22+0x200/0x92c)
      [<c05a9e08>] (__cpufreq_add_dev.isra.22) from [<c050c160>] (subsys_interface_register+0x84/0xc8)
      [<c050c160>] (subsys_interface_register) from [<c05a9494>] (cpufreq_register_driver+0x108/0x2d8)
      [<c05a9494>] (cpufreq_register_driver) from [<bf000888>] (generic_cpufreq_probe+0x50/0x74 [cpufreq_generic])
      [<bf000888>] (generic_cpufreq_probe [cpufreq_generic]) from [<c050e994>] (platform_drv_probe+0x18/0x48)
      [<c050e994>] (platform_drv_probe) from [<c050d1f4>] (driver_probe_device+0x128/0x370)
      [<c050d1f4>] (driver_probe_device) from [<c050d4d0>] (__driver_attach+0x94/0x98)
      [<c050d4d0>] (__driver_attach) from [<c050b778>] (bus_for_each_dev+0x54/0x88)
      [<c050b778>] (bus_for_each_dev) from [<c050c894>] (bus_add_driver+0xe8/0x204)
      [<c050c894>] (bus_add_driver) from [<c050dd48>] (driver_register+0x78/0xf4)
      [<c050dd48>] (driver_register) from [<c0208870>] (do_one_initcall+0xac/0x1d8)
      [<c0208870>] (do_one_initcall) from [<c028b6b4>] (load_module+0x190c/0x21e8)
      [<c028b6b4>] (load_module) from [<c028c034>] (SyS_init_module+0xa4/0x110)
      [<c028c034>] (SyS_init_module) from [<c020f0c0>] (ret_fast_syscall+0x0/0x48)
      
      Fixes: a0dd7b79 (PM / OPP: Move cpufreq specific OPP functions out of generic OPP library)
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      Acked-by: NViresh Kumar <viresh.kumar@linaro.org>
      Cc: 3.16+ <stable@vger.kernel.org> # 3.16+
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      3c5445ce
    • M
      cpufreq: cpu0: Do not print error message when deferring · 713a3fa6
      Markus Pargmann 提交于
      -EPROBE_DEFER is no real error. We are just waiting unti the necessary
      components are ready. The driver core infrastructure will also print an
      appropriate info message.
      
      This patch changes the error message to a debug message.
      Signed-off-by: NMarkus Pargmann <mpa@pengutronix.de>
      Acked-by: NViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      713a3fa6
    • H
      cpufreq: integrator: Use set_cpus_allowed_ptr · 18360d6e
      Himangi Saraogi 提交于
      Several years ago there was an effort to convert all uses of
      set_cpus_allowed to use set_cpus_allowed_ptr with the goal of eventually
      removing the current definition of set_cpus_allowed and renaming
      set_cpus_allowed_ptr as set_cpus_allowed
      (https://lkml.org/lkml/2010/3/26/59). This is another step in this
      direction.
      
      The Coccinelle semantic patch that makes this change is as follows:
      
      // <smpl>
      @@
      expression E1,E2;
      @@
      
      - set_cpus_allowed(E1, cpumask_of_cpu(E2))
      + set_cpus_allowed_ptr(E1, cpumask_of(E2))
      
      @@
      expression E;
      identifier I;
      @@
      
      - set_cpus_allowed(E, I)
      + set_cpus_allowed_ptr(E, &I)
      // </smpl>
      Signed-off-by: NHimangi Saraogi <himangi774@gmail.com>
      Acked-by: NJulia Lawall <julia.lawall@lip6.fr>
      Acked-by: NViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      18360d6e
  8. 05 8月, 2014 1 次提交
  9. 31 7月, 2014 1 次提交
  10. 21 7月, 2014 18 次提交
  11. 19 7月, 2014 2 次提交
  12. 17 7月, 2014 1 次提交
    • V
      cpufreq: move policy kobj to policy->cpu at resume · 92c14bd9
      Viresh Kumar 提交于
      This is only relevant to implementations with multiple clusters, where clusters
      have separate clock lines but all CPUs within a cluster share it.
      
      Consider a dual cluster platform with 2 cores per cluster. During suspend we
      start hot unplugging CPUs in order 1 to 3. When CPU2 is removed, policy->kobj
      would be moved to CPU3 and when CPU3 goes down we wouldn't free policy or its
      kobj as we want to retain permissions/values/etc.
      
      Now on resume, we will get CPU2 before CPU3 and will call __cpufreq_add_dev().
      We will recover the old policy and update policy->cpu from 3 to 2 from
      update_policy_cpu().
      
      But the kobj is still tied to CPU3 and isn't moved to CPU2. We wouldn't create a
      link for CPU2, but would try that for CPU3 while bringing it online. Which will
      report errors as CPU3 already has kobj assigned to it.
      
      This bug got introduced with commit 42f921a6, which overlooked this scenario.
      
      To fix this, lets move kobj to the new policy->cpu while bringing first CPU of a
      cluster back. Also do a WARN_ON() if kobject_move failed, as we would reach here
      only for the first CPU of a non-boot cluster. And we can't recover from this
      situation, if kobject_move() fails.
      
      Fixes: 42f921a6 (cpufreq: remove sysfs files for CPUs which failed to come back after resume)
      Cc:  3.13+ <stable@vger.kernel.org> # 3.13+
      Reported-and-tested-by: NBu Yitian <ybu@qti.qualcomm.com>
      Reported-by: NSaravana Kannan <skannan@codeaurora.org>
      Reviewed-by: NSrivatsa S. Bhat <srivatsa@mit.edu>
      Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      92c14bd9
  13. 16 7月, 2014 4 次提交
  14. 09 7月, 2014 1 次提交