1. 08 Jun, 2016 2 commits
  2. 02 Jun, 2016 1 commit
  3. 07 Aug, 2015 1 commit
    • Viresh Kumar's avatar
      cpufreq: Allow drivers to enable boost support after registering driver · 44139ed4
      Viresh Kumar authored
      In some cases it wouldn't be known at time of driver registration, if
      the driver needs to support boost frequencies.
      
      For example, while getting boost information from DT with opp-v2
      bindings, we need to parse the bindings for all the CPUs to know if
      turbo/boost OPPs are supported or not.
      
      One way out to do that efficiently is to delay supporting boost mode
      (i.e. creating /sys/devices/system/cpu/cpufreq/boost file), until the
      time OPP bindings are parsed.
      
      At that point, the driver can enable boost support. This can be done at
      ->init(), where the frequency table is created.
      
      To do that, the driver requires few APIs from cpufreq core that let him
      do this. This patch provides these APIs.
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Reviewed-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      44139ed4
  4. 09 Jul, 2015 1 commit
    • Viresh Kumar's avatar
      cpufreq: Allow freq_table to be obtained for offline CPUs · 5a31d594
      Viresh Kumar authored
      Users of freq table may want to access it for any CPU from
      policy->related_cpus mask. One such user is cpu-cooling layer. It gets a
      list of 'clip_cpus' (equivalent to policy->related_cpus) during
      registration and tries to get freq_table for the first CPU of this mask.
      
      If the CPU, for which it tries to fetch freq_table, is offline,
      cpufreq_frequency_get_table() fails. This happens because it relies on
      cpufreq_cpu_get_raw() for its functioning which returns policy only for
      online CPUs.
      
      The fix is to access the policy data structure for the given CPU
      directly (which also returns a valid policy for offline CPUs), but the
      policy itself has to be active (meaning that at least one CPU using it
      is online) for the frequency table to be returned.
      
      Because we will be using 'cpufreq_cpu_data' now, which is internal to
      the cpufreq core, move cpufreq_frequency_get_table() to cpufreq.c.
      Reported-and-tested-by: default avatarPi-Cheng Chen <pi-cheng.chen@linaro.org>
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      5a31d594
  5. 21 Jul, 2014 1 commit
  6. 20 May, 2014 1 commit
  7. 29 Apr, 2014 1 commit
  8. 07 Apr, 2014 2 commits
  9. 12 Mar, 2014 1 commit
  10. 17 Jan, 2014 1 commit
    • Lukasz Majewski's avatar
      cpufreq: Add boost frequency support in core · 6f19efc0
      Lukasz Majewski authored
      This commit adds boost frequency support in cpufreq core (Hardware &
      Software). Some SoCs (like Exynos4 - e.g. 4x12) allow setting frequency
      above its normal operation limits. Such mode shall be only used for a
      short time.
      
      Overclocking (boost) support is essentially provided by platform
      dependent cpufreq driver.
      
      This commit unifies support for SW and HW (Intel) overclocking solutions
      in the core cpufreq driver. Previously the "boost" sysfs attribute was
      defined in the ACPI processor driver code. By default boost is disabled.
      One global attribute is available at: /sys/devices/system/cpu/cpufreq/boost.
      
      It only shows up when cpufreq driver supports overclocking.
      Under the hood frequencies dedicated for boosting are marked with a
      special flag (CPUFREQ_BOOST_FREQ) at driver's frequency table.
      It is the user's concern to enable/disable overclocking with a proper call
      to sysfs.
      
      The cpufreq_boost_trigger_state() function is defined non static on purpose.
      It is used later with thermal subsystem to provide automatic enable/disable
      of the BOOST feature.
      Signed-off-by: default avatarLukasz Majewski <l.majewski@samsung.com>
      Signed-off-by: default avatarMyungjoo Ham <myungjoo.ham@samsung.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      6f19efc0
  11. 06 Jan, 2014 1 commit
    • Viresh Kumar's avatar
      cpufreq: Make sure CPU is running on a freq from freq-table · d3916691
      Viresh Kumar authored
      Sometimes boot loaders set CPU frequency to a value outside of frequency table
      present with cpufreq core. In such cases CPU might be unstable if it has to run
      on that frequency for long duration of time and so its better to set it to a
      frequency which is specified in freq-table. This also makes cpufreq stats
      inconsistent as cpufreq-stats would fail to register because current frequency
      of CPU isn't found in freq-table.
      
      Because we don't want this change to affect boot process badly, we go for the
      next freq which is >= policy->cur ('cur' must be set by now, otherwise we will
      end up setting freq to lowest of the table as 'cur' is initialized to zero).
      
      In case current frequency doesn't match any frequency from freq-table, we throw
      warnings to user, so that user can get this fixed in their bootloaders or
      freq-tables.
      Reported-by: default avatarCarlos Hernandez <ceh@ti.com>
      Reported-and-tested-by: default avatarNishanth Menon <nm@ti.com>
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      d3916691
  12. 15 Oct, 2013 3 commits
  13. 30 Sep, 2013 1 commit
    • Viresh Kumar's avatar
      cpufreq: Add new helper cpufreq_table_validate_and_show() · 27047a60
      Viresh Kumar authored
      Almost every cpufreq driver is required to validate its frequency table with:
      cpufreq_frequency_table_cpuinfo() and then expose it to cpufreq core with:
      cpufreq_frequency_table_get_attr().
      
      This patch creates another helper routine cpufreq_table_validate_and_show() that
      will do both these steps in a single call and will return 0 for success, error
      otherwise.
      
      This also fixes potential bugs in cpufreq drivers where people have called
      cpufreq_frequency_table_get_attr() before calling
      cpufreq_frequency_table_cpuinfo(), as the later may fail.
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      27047a60
  14. 07 Aug, 2013 1 commit
  15. 04 Jun, 2013 1 commit
  16. 09 Feb, 2013 1 commit
  17. 01 Feb, 2013 1 commit
    • Viresh Kumar's avatar
      cpufreq: Simplify __cpufreq_remove_dev() · b8eed8af
      Viresh Kumar authored
      __cpufreq_remove_dev() is called on multiple occasions: cpufreq_driver
      unregister and cpu removals.
      
      Current implementation of this routine is overly complex without much need. If
      the cpu to be removed is the policy->cpu, we remove the policy first and add all
      other cpus again from policy->cpus and then finally call __cpufreq_remove_dev()
      again to remove the cpu to be deleted. Haahhhh..
      
      There exist a simple solution to removal of a cpu:
      - Simply use the old policy structure
      - update its fields like: policy->cpu, etc.
      - notify any users of cpufreq, which depend on changing policy->cpu
      
      Hence this patch, which tries to implement the above theory. It is tested well
      by myself on ARM big.LITTLE TC2 SoC, which has 5 cores (2 A15 and 3 A7). Both
      A15's share same struct policy and all A7's share same policy structure.
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Tested-by: default avatarShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      b8eed8af
  18. 14 Nov, 2012 1 commit
  19. 04 May, 2011 1 commit
    • Dominik Brodowski's avatar
      [CPUFREQ] use dynamic debug instead of custom infrastructure · 2d06d8c4
      Dominik Brodowski authored
      With dynamic debug having gained the capability to report debug messages
      also during the boot process, it offers a far superior interface for
      debug messages than the custom cpufreq infrastructure. As a first step,
      remove the old cpufreq_debug_printk() function and replace it with a call
      to the generic pr_debug() function.
      
      How can dynamic debug be used on cpufreq? You need a kernel which has
      CONFIG_DYNAMIC_DEBUG enabled.
      
      To enabled debugging during runtime, mount debugfs and
      
      $ echo -n 'module cpufreq +p' > /sys/kernel/debug/dynamic_debug/control
      
      for debugging the complete "cpufreq" module. To achieve the same goal during
      boot, append
      
      	ddebug_query="module cpufreq +p"
      
      as a boot parameter to the kernel of your choice.
      
      For more detailled instructions, please see
      Documentation/dynamic-debug-howto.txt
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      Signed-off-by: default avatarDave Jones <davej@redhat.com>
      2d06d8c4
  20. 29 Oct, 2009 1 commit
    • Tejun Heo's avatar
      percpu: make percpu symbols in cpufreq unique · f1625066
      Tejun Heo authored
      This patch updates percpu related symbols in cpufreq such that percpu
      symbols are unique and don't clash with local symbols.  This serves
      two purposes of decreasing the possibility of global percpu symbol
      collision and allowing dropping per_cpu__ prefix from percpu symbols.
      
      * drivers/cpufreq/cpufreq.c: s/policy_cpu/cpufreq_policy_cpu/
      * drivers/cpufreq/freq_table.c: s/show_table/cpufreq_show_table/
      * arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c: s/drv_data/acfreq_data/
        					      s/old_perf/acfreq_old_perf/
      
      Partly based on Rusty Russell's "alloc_percpu: rename percpu vars
      which cause name clashes" patch.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      f1625066
  21. 25 Feb, 2009 1 commit
  22. 22 May, 2008 1 commit
  23. 19 May, 2008 1 commit
  24. 07 Feb, 2008 1 commit
  25. 11 Jul, 2007 1 commit
    • Tejun Heo's avatar
      sysfs: kill unnecessary attribute->owner · 7b595756
      Tejun Heo authored
      sysfs is now completely out of driver/module lifetime game.  After
      deletion, a sysfs node doesn't access anything outside sysfs proper,
      so there's no reason to hold onto the attribute owners.  Note that
      often the wrong modules were accounted for as owners leading to
      accessing removed modules.
      
      This patch kills now unnecessary attribute->owner.  Note that with
      this change, userland holding a sysfs node does not prevent the
      backing module from being unloaded.
      
      For more info regarding lifetime rule cleanup, please read the
      following message.
      
        http://article.gmane.org/gmane.linux.kernel/510293
      
      (tweaked by Greg to not delete the field just yet, to make it easier to
      merge things properly.)
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      7b595756
  26. 07 Nov, 2006 1 commit
  27. 30 May, 2006 3 commits
  28. 28 Feb, 2006 1 commit
  29. 16 Apr, 2005 1 commit
    • Linus Torvalds's avatar
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds authored
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4