1. 15 Jun, 2015 1 commit
  2. 10 Jun, 2015 7 commits
    • Viresh Kumar's avatar
      cpufreq: Remove cpufreq_update_policy() · 37829029
      Viresh Kumar authored
      cpufreq_update_policy() was kept as a separate routine earlier as it was
      handling migration of sysfs directories, which isn't the case anymore.
      It is only updating policy->cpu now and is called by a single caller.
      
      The WARN_ON() isn't really required anymore, as we are just updating the
      cpu now, not moving the sysfs directories.
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      37829029
    • Viresh Kumar's avatar
      cpufreq: Restart governor as soon as possible · 9591becb
      Viresh Kumar authored
      __cpufreq_remove_dev_finish() is doing two things today:
      - Restarts the governor if some CPUs from concerned policy are still
        online.
      - Frees the policy if all CPUs are offline.
      
      The first task of restarting the governor can be moved to
      __cpufreq_remove_dev_prepare() to restart the governor early. There is
      no race between _prepare() and _finish() as they would be handling
      completely different cases. _finish() will only be required if we are
      going to free the policy and that has nothing to do with restarting the
      governor.
      Original-by: default avatarSaravana Kannan <skannan@codeaurora.org>
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      9591becb
    • Viresh Kumar's avatar
      cpufreq: Call cpufreq_policy_put_kobj() from cpufreq_policy_free() · 3654c5cc
      Viresh Kumar authored
      cpufreq_policy_put_kobj() is actually part of freeing the policy and can
      be called from cpufreq_policy_free() directly instead of a separate
      call.
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      3654c5cc
    • Viresh Kumar's avatar
      cpufreq: Initialize policy->kobj while allocating policy · 2fc3384d
      Viresh Kumar authored
      policy->kobj is required to be initialized once in the lifetime of a
      policy.  Currently we are initializing it from __cpufreq_add_dev() and
      that doesn't look to be the best place for doing so as we have to do
      this on special cases (like: !recover_policy).
      
      We can initialize it from a more obvious place cpufreq_policy_alloc()
      and that will make code look cleaner, specially the error handling part.
      
      The error handling part of __cpufreq_add_dev() was doing almost the same
      thing while recover_policy is true or false. Fix that as well by always
      calling cpufreq_policy_put_kobj() with an additional parameter to skip
      notification part of it.
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      2fc3384d
    • Viresh Kumar's avatar
      cpufreq: Stop migrating sysfs files on hotplug · 87549141
      Viresh Kumar authored
      When we hot-unplug a cpu, we remove its sysfs cpufreq directory and if
      the outgoing cpu was the owner of policy->kobj earlier then we migrate
      the sysfs directory to under another online cpu.
      
      There are few disadvantages this brings:
      - Code Complexity
      - Slower hotplug/suspend/resume
      - sysfs file permissions are reset after all policy->cpus are offlined
      - CPUFreq stats history lost after all policy->cpus are offlined
      - Special management of sysfs stuff during suspend/resume
      
      To overcome these, this patch modifies the way sysfs directories are
      managed:
      - Select sysfs kobjects owner while initializing policy and don't change
        it during hotplugs. Track it with kobj_cpu created earlier.
      
      - Create symlinks for all related CPUs (can be offline) instead of
        affected CPUs on policy initialization and remove them only when the
        policy is freed.
      
      - Free policy structure only on the removal of cpufreq-driver and not
        during hotplug/suspend/resume, detected by checking 'struct
        subsys_interface *' (Valid only when called from
        subsys_interface_unregister() while unregistering driver).
      
      Apart from this, special care is taken to handle physical hoplug of CPUs
      as we wouldn't remove sysfs links or remove policies on logical
      hotplugs. Physical hotplug happens in the following sequence.
      
      Hot removal:
      - CPU is offlined first, ~ 'echo 0 >
        /sys/devices/system/cpu/cpuX/online'
      - Then its device is removed along with all sysfs files, cpufreq core
        notified with cpufreq_remove_dev() callback from subsys-interface..
      
      Hot addition:
      - First the device along with its sysfs files is added, cpufreq core
        notified with cpufreq_add_dev() callback from subsys-interface..
      - CPU is onlined, ~ 'echo 1 > /sys/devices/system/cpu/cpuX/online'
      
      We call the same routines with both hotplug and subsys callbacks, and we
      sense physical hotplug with cpu_offline() check in subsys callback. We
      can handle most of the stuff with regular hotplug callback paths and
      add/remove cpufreq sysfs links or free policy from subsys callbacks.
      Original-by: default avatarSaravana Kannan <skannan@codeaurora.org>
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      87549141
    • Viresh Kumar's avatar
      cpufreq: Don't allow updating inactive policies from sysfs · 11e584cf
      Viresh Kumar authored
      Later commits would change the way policies are managed today. Policies
      wouldn't be freed on cpu hotplug (currently they aren't freed only for
      suspend), and while the CPU is offline, the sysfs cpufreq files would
      still be present.
      
      User may accidentally try to update the sysfs files in following
      directory: '/sys/devices/system/cpu/cpuX/cpufreq/'. And that would
      result in undefined behavior as policy wouldn't be active then.
      
      Apart from updating the store() routine, we also update __cpufreq_get()
      which can call cpufreq_out_of_sync(). The later routine tries to update
      policy->cur and starts notifying kernel about it.
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Acked-by: default avatarSaravana Kannan <skannan@codeaurora.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      11e584cf
    • Doug Smythies's avatar
      intel_pstate: Force setting target pstate when required · 6c1e4591
      Doug Smythies authored
      During initialization and exit it is possible that the target pstate
      might not actually be set. Furthermore, the result can be that the
      driver and the processor are out of synch and, under some conditions,
      the driver might never send the processor the proper target pstate.
      
      This patch adds a bypass or do_checks flag to the call to
      intel_pstate_set_pstate. If bypass, then specifically bypass clamp
      checks and the do not send if it is the same as last time check. If
      do_checks, then, and as before, do the current policy clamp checks,
      and do not do actual send if the new target is the same as the old.
      Signed-off-by: default avatarDoug Smythies <dsmythies@telus.net>
      Reported-by: default avatarMarien Zwart <marien.zwart@gmail.com>
      Reported-by: default avatarAlex Lochmann <alexander.lochmann@tu-dortmund.de>
      Reported-by: default avatarPiotr Ko?aczkowski <pkolaczk@gmail.com>
      Reported-by: default avatarClemens Eisserer <linuxhippy@gmail.com>
      Tested-by: default avatarMarien Zwart <marien.zwart@gmail.com>
      Tested-by: default avatarDoug Smythies <dsmythies@telus.net>
      [ rjw: Dropped pointless symbol definitions, rebased ]
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      6c1e4591
  3. 09 Jun, 2015 1 commit
  4. 22 May, 2015 2 commits
  5. 15 May, 2015 6 commits
  6. 14 May, 2015 1 commit
  7. 12 May, 2015 1 commit
  8. 07 May, 2015 5 commits
  9. 05 May, 2015 1 commit
  10. 04 May, 2015 8 commits
  11. 03 May, 2015 7 commits