1. 12 Sep, 2013 1 commit
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-cpufreq' · f1728fd1
      Rafael J. Wysocki authored
      * pm-cpufreq:
        cpufreq: Acquire the lock in cpufreq_policy_restore() for reading
        cpufreq: Prevent problems in update_policy_cpu() if last_cpu == new_cpu
        cpufreq: Restructure if/else block to avoid unintended behavior
        cpufreq: Fix crash in cpufreq-stats during suspend/resume
      f1728fd1
  2. 11 Sep, 2013 6 commits
    • Lan Tianyu's avatar
      cpufreq: Acquire the lock in cpufreq_policy_restore() for reading · 44871c9c
      Lan Tianyu authored
      In cpufreq_policy_restore() before system suspend policy is read from
      percpu's cpufreq_cpu_data_fallback.  It's a read operation rather
      than a write one, so take the lock for reading in there.
      Signed-off-by: default avatarLan Tianyu <tianyu.lan@intel.com>
      Reviewed-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      44871c9c
    • Srivatsa S. Bhat's avatar
      cpufreq: Prevent problems in update_policy_cpu() if last_cpu == new_cpu · cb38ed5c
      Srivatsa S. Bhat authored
      If update_policy_cpu() is invoked with the existing policy->cpu itself
      as the new-cpu parameter, then a lot of things can go terribly wrong.
      
      In its present form, update_policy_cpu() always assumes that the new-cpu
      is different from policy->cpu and invokes other functions to perform their
      respective updates. And those functions implement the actual update like
      this:
      
      per_cpu(..., new_cpu) = per_cpu(..., last_cpu);
      per_cpu(..., last_cpu) = NULL;
      
      Thus, when new_cpu == last_cpu, the final NULL assignment makes the per-cpu
      references vanish into thin air! (memory leak). From there, it leads to more
      problems: cpufreq_stats_create_table() now doesn't find the per-cpu reference
      and hence tries to create a new sysfs-group; but sysfs already had created
      the group earlier, so it complains that it cannot create a duplicate filename.
      In short, the repercussions of a rather innocuous invocation of
      update_policy_cpu() can turn out to be pretty nasty.
      
      Ideally update_policy_cpu() should handle this situation (new == last)
      gracefully, and not lead to such severe problems. So fix it by adding an
      appropriate check.
      Signed-off-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Tested-by: default avatarStephen Warren <swarren@nvidia.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      cb38ed5c
    • Srivatsa S. Bhat's avatar
      cpufreq: Restructure if/else block to avoid unintended behavior · 61173f25
      Srivatsa S. Bhat authored
      In __cpufreq_remove_dev_prepare(), the code which decides whether to remove
      the sysfs link or nominate a new policy cpu, is governed by an if/else block
      with a rather complex set of conditionals. Worse, they harbor a subtlety
      which leads to certain unintended behavior.
      
      The code looks like this:
      
              if (cpu != policy->cpu && !frozen) {
                      sysfs_remove_link(&dev->kobj, "cpufreq");
              } else if (cpus > 1) {
      		new_cpu = cpufreq_nominate_new_policy_cpu(...);
      		...
      		update_policy_cpu(..., new_cpu);
      	}
      
      The original intention was:
      If the CPU going offline is not policy->cpu, just remove the link.
      On the other hand, if the CPU going offline is the policy->cpu itself,
      handover the policy->cpu job to some other surviving CPU in that policy.
      
      But because the 'if' condition also includes the 'frozen' check, now there
      are *two* possibilities by which we can enter the 'else' block:
      
      1. cpu == policy->cpu (intended)
      2. cpu != policy->cpu && frozen (unintended)
      
      Due to the second (unintended) scenario, we end up spuriously nominating
      a CPU as the policy->cpu, even when the existing policy->cpu is alive and
      well. This can cause problems further down the line, especially when we end
      up nominating the same policy->cpu as the new one (ie., old == new),
      because it totally confuses update_policy_cpu().
      
      To avoid this mess, restructure the if/else block to only do what was
      originally intended, and thus prevent any unwelcome surprises.
      Signed-off-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Tested-by: default avatarStephen Warren <swarren@nvidia.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      61173f25
    • Srivatsa S. Bhat's avatar
      cpufreq: Fix crash in cpufreq-stats during suspend/resume · 0d66b91e
      Srivatsa S. Bhat authored
      Stephen Warren reported that the cpufreq-stats code hits a NULL pointer
      dereference during the second attempt to suspend a system. He also
      pin-pointed the problem to commit 5302c3fb "cpufreq: Perform light-weight
      init/teardown during suspend/resume".
      
      That commit actually ensured that the cpufreq-stats table and the
      cpufreq-stats sysfs entries are *not* torn down (ie., not freed) during
      suspend/resume, which makes it all the more surprising. However, it turns
      out that the root-cause is not that we access an already freed memory, but
      that the reference to the allocated memory gets moved around and we lose
      track of that during resume, leading to the reported crash in a subsequent
      suspend attempt.
      
      In the suspend path, during CPU offline, the value of policy->cpu is updated
      by choosing one of the surviving CPUs in that policy, as long as there is
      atleast one CPU in that policy. And cpufreq_stats_update_policy_cpu() is
      invoked to update the reference to the stats structure by assigning it to
      the new CPU. However, in the resume path, during CPU online, we end up
      assigning a fresh CPU as the policy->cpu, without letting cpufreq-stats
      know about this. Thus the reference to the stats structure remains
      (incorrectly) associated with the old CPU. So, in a subsequent suspend attempt,
      during CPU offline, we end up accessing an incorrect location to get the
      stats structure, which eventually leads to the NULL pointer dereference.
      
      Fix this by letting cpufreq-stats know about the update of the policy->cpu
      during CPU online in the resume path. (Also, move the update_policy_cpu()
      function higher up in the file, so that __cpufreq_add_dev() can invoke
      it).
      Reported-and-tested-by: default avatarStephen Warren <swarren@nvidia.com>
      Signed-off-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      0d66b91e
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-cpufreq' · 0df03a30
      Rafael J. Wysocki authored
      * pm-cpufreq:
        intel_pstate: Add Haswell CPU models
        Revert "cpufreq: make sure frequency transitions are serialized"
        cpufreq: Use signed type for 'ret' variable, to store negative error values
        cpufreq: Remove temporary fix for race between CPU hotplug and sysfs-writes
        cpufreq: Synchronize the cpufreq store_*() routines with CPU hotplug
        cpufreq: Invoke __cpufreq_remove_dev_finish() after releasing cpu_hotplug.lock
        cpufreq: Split __cpufreq_remove_dev() into two parts
        cpufreq: Fix wrong time unit conversion
        cpufreq: serialize calls to __cpufreq_governor()
        cpufreq: don't allow governor limits to be changed when it is disabled
      0df03a30
    • Rafael J. Wysocki's avatar
      Merge branch 'acpi-bind' · 0a733e6e
      Rafael J. Wysocki authored
      * acpi-bind:
        ACPI / bind: Prefer device objects with _STA to those without it
      0a733e6e
  3. 10 Sep, 2013 15 commits
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-cpuidle' · 1a7b0ecb
      Rafael J. Wysocki authored
      * pm-cpuidle:
        cpuidle: Check the result of cpuidle_get_driver() against NULL
      1a7b0ecb
    • Rafael J. Wysocki's avatar
      Merge branch 'acpi-assorted' · 416fd1ae
      Rafael J. Wysocki authored
      * acpi-assorted:
        ACPI / LPSS: don't crash if a device has no MMIO resources
      416fd1ae
    • Rafael J. Wysocki's avatar
      Merge branch 'acpica' · 8ca11824
      Rafael J. Wysocki authored
      * acpica:
        ACPICA: Fix for a Store->ArgX when ArgX contains a reference to a field.
      8ca11824
    • Rafael J. Wysocki's avatar
      Merge branch 'acpi-pci-hotplug' · 08e97ff2
      Rafael J. Wysocki authored
      * acpi-pci-hotplug:
        ACPI / hotplug / PCI: Avoid parent bus rescans on spurious device checks
        ACPI / hotplug / PCI: Use _OST to notify firmware about notify status
        ACPI / hotplug / PCI: Avoid doing too much for spurious notifies
        ACPI / hotplug / PCI: Don't trim devices before scanning the namespace
      08e97ff2
    • Rafael J. Wysocki's avatar
      Merge branch 'acpi-hotplug' · 85fb0a1c
      Rafael J. Wysocki authored
      * acpi-hotplug:
        PM / hibernate / memory hotplug: Rework mutual exclusion
        PM / hibernate: Create memory bitmaps after freezing user space
        ACPI / scan: Change ordering of locks for device hotplug
      85fb0a1c
    • Nell Hardcastle's avatar
      intel_pstate: Add Haswell CPU models · 6cdcdb79
      Nell Hardcastle authored
      Enable the intel_pstate driver for Haswell CPUs. One missing Ivy Bridge
      model (0x3E) is also included. Models referenced from
      tools/power/x86/turbostat/turbostat.c:has_nehalem_turbo_ratio_limit
      Signed-off-by: default avatarNell Hardcastle <nell@spicious.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Acked-by: default avatarDirk Brandewie <dirk.j.brandewie@intel.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      6cdcdb79
    • Rafael J. Wysocki's avatar
      Revert "cpufreq: make sure frequency transitions are serialized" · 798282a8
      Rafael J. Wysocki authored
      Commit 7c30ed53 (cpufreq: make sure frequency transitions are
      serialized) attempted to serialize frequency transitions by
      adding checks to the CPUFREQ_PRECHANGE and CPUFREQ_POSTCHANGE
      notifications.  However, it assumed that the notifications will
      always originate from the driver's .target() callback, but they
      also can be triggered by cpufreq_out_of_sync() and that leads to
      warnings like this on some systems:
      
       WARNING: CPU: 0 PID: 14543 at drivers/cpufreq/cpufreq.c:317
       __cpufreq_notify_transition+0x238/0x260()
       In middle of another frequency transition
      
      accompanied by a call trace similar to this one:
      
       [<ffffffff81720daa>] dump_stack+0x46/0x58
       [<ffffffff8106534c>] warn_slowpath_common+0x8c/0xc0
       [<ffffffff815b8560>] ? acpi_cpufreq_target+0x320/0x320
       [<ffffffff81065436>] warn_slowpath_fmt+0x46/0x50
       [<ffffffff815b1ec8>] __cpufreq_notify_transition+0x238/0x260
       [<ffffffff815b33be>] cpufreq_notify_transition+0x3e/0x70
       [<ffffffff815b345d>] cpufreq_out_of_sync+0x6d/0xb0
       [<ffffffff815b370c>] cpufreq_update_policy+0x10c/0x160
       [<ffffffff815b3760>] ? cpufreq_update_policy+0x160/0x160
       [<ffffffff81413813>] cpufreq_set_cur_state+0x8c/0xb5
       [<ffffffff814138df>] processor_set_cur_state+0xa3/0xcf
       [<ffffffff8158e13c>] thermal_cdev_update+0x9c/0xb0
       [<ffffffff8159046a>] step_wise_throttle+0x5a/0x90
       [<ffffffff8158e21f>] handle_thermal_trip+0x4f/0x140
       [<ffffffff8158e377>] thermal_zone_device_update+0x57/0xa0
       [<ffffffff81415b36>] acpi_thermal_check+0x2e/0x30
       [<ffffffff81415ca0>] acpi_thermal_notify+0x40/0xdc
       [<ffffffff813e7dbd>] acpi_device_notify+0x19/0x1b
       [<ffffffff813f8241>] acpi_ev_notify_dispatch+0x41/0x5c
       [<ffffffff813e3fbe>] acpi_os_execute_deferred+0x25/0x32
       [<ffffffff81081060>] process_one_work+0x170/0x4a0
       [<ffffffff81082121>] worker_thread+0x121/0x390
       [<ffffffff81082000>] ? manage_workers.isra.20+0x170/0x170
       [<ffffffff81088fe0>] kthread+0xc0/0xd0
       [<ffffffff81088f20>] ? flush_kthread_worker+0xb0/0xb0
       [<ffffffff8173582c>] ret_from_fork+0x7c/0xb0
       [<ffffffff81088f20>] ? flush_kthread_worker+0xb0/0xb0
      
      For this reason, revert commit 7c30ed53 along with the fix 266c13d7
      (cpufreq: Fix serialization of frequency transitions) on top of it
      and we will revisit the serialization problem later.
      Reported-by: default avatarAlessandro Bono <alessandro.bono@gmail.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      798282a8
    • Srivatsa S. Bhat's avatar
      cpufreq: Use signed type for 'ret' variable, to store negative error values · 5136fa56
      Srivatsa S. Bhat authored
      There are places where the variable 'ret' is declared as unsigned int
      and then used to store negative return values such as -EINVAL. Fix them
      by declaring the variable as a signed quantity.
      Signed-off-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      5136fa56
    • Srivatsa S. Bhat's avatar
      cpufreq: Remove temporary fix for race between CPU hotplug and sysfs-writes · 56d07db2
      Srivatsa S. Bhat authored
      Commit "cpufreq: serialize calls to __cpufreq_governor()" had been a temporary
      and partial solution to the race condition between writing to a cpufreq sysfs
      file and taking a CPU offline. Now that we have a proper and complete solution
      to that problem, remove the temporary fix.
      Signed-off-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      56d07db2
    • Srivatsa S. Bhat's avatar
      cpufreq: Synchronize the cpufreq store_*() routines with CPU hotplug · 4f750c93
      Srivatsa S. Bhat authored
      The functions that are used to write to cpufreq sysfs files (such as
      store_scaling_max_freq()) are not hotplug safe. They can race with CPU
      hotplug tasks and lead to problems such as trying to acquire an already
      destroyed timer-mutex etc.
      
      Eg:
      
          __cpufreq_remove_dev()
           __cpufreq_governor(policy, CPUFREQ_GOV_STOP);
             policy->governor->governor(policy, CPUFREQ_GOV_STOP);
              cpufreq_governor_dbs()
               case CPUFREQ_GOV_STOP:
                mutex_destroy(&cpu_cdbs->timer_mutex)
                cpu_cdbs->cur_policy = NULL;
            <PREEMPT>
          store()
           __cpufreq_set_policy()
            __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
              policy->governor->governor(policy, CPUFREQ_GOV_LIMITS);
               case CPUFREQ_GOV_LIMITS:
                mutex_lock(&cpu_cdbs->timer_mutex); <-- Warning (destroyed mutex)
                 if (policy->max < cpu_cdbs->cur_policy->cur) <- cur_policy == NULL
      
      So use get_online_cpus()/put_online_cpus() in the store_*() functions, to
      synchronize with CPU hotplug. However, there is an additional point to note
      here: some parts of the CPU teardown in the cpufreq subsystem are done in
      the CPU_POST_DEAD stage, with cpu_hotplug.lock *released*. So, using the
      get/put_online_cpus() functions alone is insufficient; we should also ensure
      that we don't race with those latter steps in the hotplug sequence. We can
      easily achieve this by checking if the CPU is online before proceeding with
      the store, since the CPU would have been marked offline by the time the
      CPU_POST_DEAD notifiers are executed.
      Reported-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      4f750c93
    • Srivatsa S. Bhat's avatar
      cpufreq: Invoke __cpufreq_remove_dev_finish() after releasing cpu_hotplug.lock · 1aee40ac
      Srivatsa S. Bhat authored
      __cpufreq_remove_dev_finish() handles the kobject cleanup for a CPU going
      offline. But because we destroy the kobject towards the end of the CPU offline
      phase, there are certain race windows where a task can try to write to a
      cpufreq sysfs file (eg: using store_scaling_max_freq()) while we are taking
      that CPU offline, and this can bump up the kobject refcount, which in turn might
      hinder the CPU offline task from running to completion. (It can also cause
      other more serious problems such as trying to acquire a destroyed timer-mutex
      etc., depending on the exact stage of the cleanup at which the task managed to
      take a new refcount).
      
      To fix the race window, we will need to synchronize those store_*() call-sites
      with CPU hotplug, using get_online_cpus()/put_online_cpus(). However, that
      in turn can cause a total deadlock because it can end up waiting for the
      CPU offline task to complete, with incremented refcount!
      
      Write to sysfs                            CPU offline task
      --------------                            ----------------
      kobj_refcnt++
      
                                                Acquire cpu_hotplug.lock
      
      get_online_cpus();
      
      					  Wait for kobj_refcnt to drop to zero
      
                           **DEADLOCK**
      
      A simple way to avoid this problem is to perform the kobject cleanup in the
      CPU offline path, with the cpu_hotplug.lock *released*. That is, we can
      perform the wait-for-kobj-refcnt-to-drop as well as the subsequent cleanup
      in the CPU_POST_DEAD stage of CPU offline, which is run with cpu_hotplug.lock
      released. Doing this helps us avoid deadlocks due to holding kobject refcounts
      and waiting on each other on the cpu_hotplug.lock.
      
      (Note: We can't move all of the cpufreq CPU offline steps to the
      CPU_POST_DEAD stage, because certain things such as stopping the governors
      have to be done before the outgoing CPU is marked offline. So retain those
      parts in the CPU_DOWN_PREPARE stage itself).
      Reported-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      1aee40ac
    • Srivatsa S. Bhat's avatar
      cpufreq: Split __cpufreq_remove_dev() into two parts · cedb70af
      Srivatsa S. Bhat authored
      During CPU offline, the cpufreq core invokes __cpufreq_remove_dev()
      to perform work such as stopping the cpufreq governor, clearing the
      CPU from the policy structure etc, and finally cleaning up the
      kobject.
      
      There are certain subtle issues related to the kobject cleanup, and
      it would be much easier to deal with them if we separate that part
      from the rest of the cleanup-work in the CPU offline phase. So split
      the __cpufreq_remove_dev() function into 2 parts: one that handles
      the kobject cleanup, and the other that handles the rest of the work.
      Reported-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      cedb70af
    • Andreas Schwab's avatar
      cpufreq: Fix wrong time unit conversion · a857c0b9
      Andreas Schwab authored
      The time spent by a CPU under a given frequency is stored in jiffies unit
      in the cpu var cpufreq_stats_table->time_in_state[i], i being the index of
      the frequency.
      
      This is what is displayed in the following file on the right column:
      
           cat /sys/devices/system/cpu/cpuX/cpufreq/stats/time_in_state
           2301000 19835820
           2300000 3172
           [...]
      
      Now cpufreq converts this jiffies unit delta to clock_t before returning it
      to the user as in the above file. And that conversion is achieved using the API
      cputime64_to_clock_t().
      
      Although it accidentally works on traditional tick based cputime accounting, where
      cputime_t maps directly to jiffies, it doesn't work with other types of cputime
      accounting such as CONFIG_VIRT_CPU_ACCOUNTING_* where cputime_t can map to nsecs
      or any granularity preffered by the architecture.
      
      For example we get a buggy zero delta on full dyntick configurations:
      
           cat /sys/devices/system/cpu/cpuX/cpufreq/stats/time_in_state
           2301000 0
           2300000 0
           [...]
      
      Fix this with using the proper jiffies_64_t to clock_t conversion.
      Reported-and-tested-by: default avatarCarsten Emde <C.Emde@osadl.org>
      Signed-off-by: default avatarAndreas Schwab <schwab@linux-m68k.org>
      Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      Acked-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      a857c0b9
    • Viresh Kumar's avatar
      cpufreq: serialize calls to __cpufreq_governor() · 19c76303
      Viresh Kumar authored
      We can't take a big lock around __cpufreq_governor() as this causes
      recursive locking for some cases. But calls to this routine must be
      serialized for every policy. Otherwise we can see some unpredictable
      events.
      
      For example, consider following scenario:
      
      __cpufreq_remove_dev()
       __cpufreq_governor(policy, CPUFREQ_GOV_STOP);
         policy->governor->governor(policy, CPUFREQ_GOV_STOP);
          cpufreq_governor_dbs()
           case CPUFREQ_GOV_STOP:
            mutex_destroy(&cpu_cdbs->timer_mutex)
            cpu_cdbs->cur_policy = NULL;
        <PREEMPT>
      store()
       __cpufreq_set_policy()
        __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
          policy->governor->governor(policy, CPUFREQ_GOV_LIMITS);
           case CPUFREQ_GOV_LIMITS:
            mutex_lock(&cpu_cdbs->timer_mutex); <-- Warning (destroyed mutex)
             if (policy->max < cpu_cdbs->cur_policy->cur) <- cur_policy == NULL
      
      And so store() will eventually result in a crash if cur_policy is
      NULL at this point.
      
      Introduce an additional variable which would guarantee serialization
      here.
      Reported-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      19c76303
    • Viresh Kumar's avatar
      cpufreq: don't allow governor limits to be changed when it is disabled · f73d3933
      Viresh Kumar authored
      __cpufreq_governor() returns with -EBUSY when governor is already
      stopped and we try to stop it again, but when it is stopped we must
      not allow calls to CPUFREQ_GOV_LIMITS event as well.
      
      This patch adds this check in __cpufreq_governor().
      Reported-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      f73d3933
  4. 09 Sep, 2013 2 commits
    • Rafael J. Wysocki's avatar
      ACPI / bind: Prefer device objects with _STA to those without it · 11b88ee2
      Rafael J. Wysocki authored
      As reported at https://bugzilla.kernel.org/show_bug.cgi?id=60829,
      there still are cases in which do_find_child() doesn't choose the
      ACPI device object it is "expected" to choose if there are more such
      objects matching one PCI device present.  This particular problem may
      be worked around by making do_find_child() return device obejcts witn
      _STA whose result indicates that the device is enabled before device
      objects without _STA if there's more than one device object to choose
      from.
      
      This change doesn't affect the case in which there's only one
      matching ACPI device object per PCI device.
      
      References: https://bugzilla.kernel.org/show_bug.cgi?id=60829Reported-by: default avatarPeter Wu <lekensteyn@gmail.com>
      Tested-by: default avatarFelix Lisczyk <felix.lisczyk@gmail.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      11b88ee2
    • Rafael J. Wysocki's avatar
      ACPI / hotplug / PCI: Avoid parent bus rescans on spurious device checks · a47d8c8e
      Rafael J. Wysocki authored
      In the current ACPIPHP notify handler we always go directly for a
      rescan of the parent bus if we get a device check notification for
      a device that is not a bridge.  However, this obviously is
      overzealous if nothing really changes, because this way we may rescan
      the whole PCI hierarchy pretty much in vain.
      
      That happens on Alex Williamson's machine whose ACPI tables contain
      device objects that are supposed to coresspond to PCIe root ports,
      but those ports aren't physically present (or at least they aren't
      visible in the PCI config space to us).  The BIOS generates multiple
      device check notifies for those objects during boot and for each of
      them we go straight for the parent bus rescan, but the parent bus is
      the root bus in this particular case.  In consequence, we rescan the
      whole PCI bus from the top several times in a row, which is
      completely unnecessary, increases boot time by 50% (after previous
      fixes) and generates excess dmesg output from the PCI subsystem.
      
      Fix the problem by checking if we can find anything new in the
      slot corresponding to the device we've got a device check notify
      for and doing nothig if that's not the case.
      
      The spec (ACPI 5.0, Section 5.6.6) appears to mandate this behavior,
      as it says:
      
        Device Check. Used to notify OSPM that the device either appeared
        or disappeared. If the device has appeared, OSPM will re-enumerate
        from the parent. If the device has disappeared, OSPM will
        invalidate the state of the device. OSPM may optimize out
        re-enumeration.
      
      Therefore, according to the spec, we are free to do nothing if
      nothing changes.
      
      References: https://bugzilla.kernel.org/show_bug.cgi?id=60865Reported-and-tested-by: default avatarAlex Williamson <alex.williamson@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      a47d8c8e
  5. 07 Sep, 2013 2 commits
  6. 06 Sep, 2013 1 commit
  7. 05 Sep, 2013 1 commit
    • Rafael J. Wysocki's avatar
      ACPI / hotplug / PCI: Don't trim devices before scanning the namespace · 89ec2f2e
      Rafael J. Wysocki authored
      In acpiphp_bus_add() we first remove device objects corresponding to
      the given handle and the ACPI namespace branch below it, which are
      then re-created by acpi_bus_scan().  This used to be done to clean
      up after surprise removals, but now we do the cleanup through
      trim_stale_devices() which checks if the devices in question are
      actually gone before removing them, so the device hierarchy trimming
      in acpiphp_bus_add() is not necessary any more and, moreover, it may
      lead to problems if it removes device objects corresponding to
      devices that are actually present.
      
      For this reason, remove the leftover acpiphp_bus_trim() from
      acpiphp_bus_add().
      Reported-by: default avatarAlex Williamson <alex.williamson@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      89ec2f2e
  8. 03 Sep, 2013 12 commits
    • Linus Torvalds's avatar
      Merge tag 'pci-v3.12-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci · a9238741
      Linus Torvalds authored
      Pull PCI changes from Bjorn Helgaas:
      
        PCI device hotplug:
          - Use PCIe native hotplug, not ACPI hotplug, when possible (Neil Horman)
          - Assign resources on per-host bridge basis (Yinghai Lu)
      
        MPS (Max Payload Size):
          - Allow larger MPS settings below hotplug-capable Root Port (Yijing Wang)
          - Add warnings about unsafe MPS settings (Yijing Wang)
          - Simplify interface and messages (Bjorn Helgaas)
      
        SR-IOV:
          - Return -ENOSYS on non-SR-IOV devices (Stefan Assmann)
          - Update NumVFs register when disabling SR-IOV (Yijing Wang)
      
        Virtualization:
          - Add bus and slot reset support (Alex Williamson)
          - Fix ACS (Access Control Services) issues (Alex Williamson)
      
        Miscellaneous:
          - Simplify PCIe Capability accessors (Bjorn Helgaas)
          - Add pcibios_pm_ops for arch-specific hibernate stuff (Sebastian Ott)
          - Disable decoding during BAR sizing only when necessary (Zoltan Kiss)
          - Delay enabling bridges until they're needed (Yinghai Lu)
          - Split Designware support into Synopsys and Exynos parts (Jingoo Han)
          - Convert class code to use dev_groups (Greg Kroah-Hartman)
          - Cleanup Designware and Exynos I/O access wrappers (Seungwon Jeon)
          - Fix bridge I/O window alignment (Bjorn Helgaas)
          - Add pci_wait_for_pending_transaction() (Casey Leedom)
          - Use devm_ioremap_resource() in Marvell driver (Tushar Behera)
      
      * tag 'pci-v3.12-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (63 commits)
        PCI/ACPI: Fix _OSC ordering to allow PCIe hotplug use when available
        PCI: exynos: Add I/O access wrappers
        PCI: designware: Drop "addr" arg from dw_pcie_readl_rc()/dw_pcie_writel_rc()
        PCI: Remove pcie_cap_has_devctl()
        PCI: Support PCIe Capability Slot registers only for ports with slots
        PCI: Remove PCIe Capability version checks
        PCI: Allow PCIe Capability link-related register access for switches
        PCI: Add offsets of PCIe capability registers
        PCI: Tidy bitmasks and spacing of PCIe capability definitions
        PCI: Remove obsolete comment reference to pci_pcie_cap2()
        PCI: Clarify PCI_EXP_TYPE_PCI_BRIDGE comment
        PCI: Rename PCIe capability definitions to follow convention
        PCI: Warn if unsafe MPS settings detected
        PCI: Fix MPS peer-to-peer DMA comment syntax
        PCI: Disable decoding for BAR sizing only when it was actually enabled
        PCI: Add comment about needing pci_msi_off() even when CONFIG_PCI_MSI=n
        PCI: Add pcibios_pm_ops for optional arch-specific hibernate functionality
        PCI: Don't restrict MPS for slots below Root Ports
        PCI: Simplify MPS test for Downstream Port
        PCI: Remove unnecessary check for pcie_get_mps() failure
        ...
      a9238741
    • Linus Torvalds's avatar
      Merge tag 'pm+acpi-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 40031da4
      Linus Torvalds authored
      Pull ACPI and power management updates from Rafael Wysocki:
      
       1) ACPI-based PCI hotplug (ACPIPHP) subsystem rework and introduction
          of Intel Thunderbolt support on systems that use ACPI for signalling
          Thunderbolt hotplug events.  This also should make ACPIPHP work in
          some cases in which it was known to have problems.  From
          Rafael J Wysocki, Mika Westerberg and Kirill A Shutemov.
      
       2) ACPI core code cleanups and dock station support cleanups from
          Jiang Liu and Rafael J Wysocki.
      
       3) Fixes for locking problems related to ACPI device hotplug from
          Rafael J Wysocki.
      
       4) ACPICA update to version 20130725 includig fixes, cleanups, support
          for more than 256 GPEs per GPE block and a change to make the ACPI
          PM Timer optional (we've seen systems without the PM Timer in the
          field already).  One of the fixes, related to the DeRefOf operator,
          is necessary to prevent some Windows 8 oriented AML from causing
          problems to happen.  From Bob Moore, Lv Zheng, and Jung-uk Kim.
      
       5) Removal of the old and long deprecated /proc/acpi/event interface
          and related driver changes from Thomas Renninger.
      
       6) ACPI and Xen changes to make the reduced hardware sleep work with
          the latter from Ben Guthro.
      
       7) ACPI video driver cleanups and a blacklist of systems that should
          not tell the BIOS that they are compatible with Windows 8 (or ACPI
          backlight and possibly other things will not work on them).  From
          Felipe Contreras.
      
       8) Assorted ACPI fixes and cleanups from Aaron Lu, Hanjun Guo,
          Kuppuswamy Sathyanarayanan, Lan Tianyu, Sachin Kamat, Tang Chen,
          Toshi Kani, and Wei Yongjun.
      
       9) cpufreq ondemand governor target frequency selection change to
          reduce oscillations between min and max frequencies (essentially,
          it causes the governor to choose target frequencies proportional
          to load) from Stratos Karafotis.
      
      10) cpufreq fixes allowing sysfs attributes file permissions to be
          preserved over suspend/resume cycles Srivatsa S Bhat.
      
      11) Removal of Device Tree parsing for CPU device nodes from multiple
          cpufreq drivers that required some changes related to
          of_get_cpu_node() to be made in a few architectures and in the
          driver core.  From Sudeep KarkadaNagesha.
      
      12) cpufreq core fixes and cleanups related to mutual exclusion and
          driver module references from Viresh Kumar, Lukasz Majewski and
          Rafael J Wysocki.
      
      13) Assorted cpufreq fixes and cleanups from Amit Daniel Kachhap,
          Bartlomiej Zolnierkiewicz, Hanjun Guo, Jingoo Han, Joseph Lo,
          Julia Lawall, Li Zhong, Mark Brown, Sascha Hauer, Stephen Boyd,
          Stratos Karafotis, and Viresh Kumar.
      
      14) Fixes to prevent race conditions in coupled cpuidle from happening
          from Colin Cross.
      
      15) cpuidle core fixes and cleanups from Daniel Lezcano and
          Tuukka Tikkanen.
      
      16) Assorted cpuidle fixes and cleanups from Daniel Lezcano,
          Geert Uytterhoeven, Jingoo Han, Julia Lawall, Linus Walleij,
          and Sahara.
      
      17) System sleep tracing changes from Todd E Brandt and Shuah Khan.
      
      18) PNP subsystem conversion to using struct dev_pm_ops for power
          management from Shuah Khan.
      
      * tag 'pm+acpi-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (217 commits)
        cpufreq: Don't use smp_processor_id() in preemptible context
        cpuidle: coupled: fix race condition between pokes and safe state
        cpuidle: coupled: abort idle if pokes are pending
        cpuidle: coupled: disable interrupts after entering safe state
        ACPI / hotplug: Remove containers synchronously
        driver core / ACPI: Avoid device hot remove locking issues
        cpufreq: governor: Fix typos in comments
        cpufreq: governors: Remove duplicate check of target freq in supported range
        cpufreq: Fix timer/workqueue corruption due to double queueing
        ACPI / EC: Add ASUSTEK L4R to quirk list in order to validate ECDT
        ACPI / thermal: Add check of "_TZD" availability and evaluating result
        cpufreq: imx6q: Fix clock enable balance
        ACPI: blacklist win8 OSI for buggy laptops
        cpufreq: tegra: fix the wrong clock name
        cpuidle: Change struct menu_device field types
        cpuidle: Add a comment warning about possible overflow
        cpuidle: Fix variable domains in get_typical_interval()
        cpuidle: Fix menu_device->intervals type
        cpuidle: CodingStyle: Break up multiple assignments on single line
        cpuidle: Check called function parameter in get_typical_interval()
        ...
      40031da4
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending · dcaaaeac
      Linus Torvalds authored
      Pull SCSI target fixes from Nicholas Bellinger:
       "The first patch is to address a long standing issue where INQUIRY
        vendor + model response data was not correctly padded with ASCII
        spaces, causing MSFT and Falconstor multipath stacks to not function
        with our LUNs.
      
        The second -> forth patches are additional iscsi-target regression
        fixes for the post >= v3.10 iser-target changes.  The second and third
        are failure cases that have appeared during further testing, and the
        forth is only reproducible with malformed NOP packets.
      
        The fifth patch is a v3.11 specific regression caused by a recent
        optimization that showed up during WRITE I/O failure testing.
      
        I'll be sending Patch #1 and Patch #5 to Greg-KH separately for
        stable"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
        target: Fix se_cmd->state_list leak regression during WRITE failure
        iscsi-target: Fix potential NULL pointer in solicited NOPOUT reject
        iscsi-target: Fix iscsit_transport reference leak during NP thread reset
        iscsi-target: Fix ImmediateData=Yes failure regression in >= v3.10
        target: Fix trailing ASCII space usage in INQUIRY vendor+model
      dcaaaeac
    • Linus Torvalds's avatar
      Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · f66c83d0
      Linus Torvalds authored
      Pull first round of SCSI updates from James Bottomley:
       "This patch set is a set of driver updates (ufs, zfcp, lpfc, mpt2/3sas,
        qla4xxx, qla2xxx [adding support for ISP8044 + other things]).
      
        We also have a new driver: esas2r which has a number of static checker
        problems, but which I expect to resolve over the -rc course of 3.12
        under the new driver exception.
      
        We also have the error return that were discussed at LSF"
      
      * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (118 commits)
        [SCSI] sg: push file descriptor list locking down to per-device locking
        [SCSI] sg: checking sdp->detached isn't protected when open
        [SCSI] sg: no need sg_open_exclusive_lock
        [SCSI] sg: use rwsem to solve race during exclusive open
        [SCSI] scsi_debug: fix logical block provisioning support when unmap_alignment != 0
        [SCSI] scsi_debug: fix endianness bug in sdebug_build_parts()
        [SCSI] qla2xxx: Update the driver version to 8.06.00.08-k.
        [SCSI] qla2xxx: print MAC via %pMR.
        [SCSI] qla2xxx: Correction to message ids.
        [SCSI] qla2xxx: Correctly print out/in mailbox registers.
        [SCSI] qla2xxx: Add a new interface to update versions.
        [SCSI] qla2xxx: Move queue depth ramp down message to i/o debug level.
        [SCSI] qla2xxx: Select link initialization option bits from current operating mode.
        [SCSI] qla2xxx: Add loopback IDC-TIME-EXTEND aen handling support.
        [SCSI] qla2xxx: Set default critical temperature value in cases when ISPFX00 firmware doesn't provide it
        [SCSI] qla2xxx: QLAFX00 make over temperature AEN handling informational, add log for normal temperature AEN
        [SCSI] qla2xxx: Correct Interrupt Register offset for ISPFX00
        [SCSI] qla2xxx: Remove handling of Shutdown Requested AEN from qlafx00_process_aen().
        [SCSI] qla2xxx: Send all AENs for ISPFx00 to above layers.
        [SCSI] qla2xxx: Add changes in initialization for ISPFX00 cards with BIOS
        ...
      f66c83d0
    • Luck, Tony's avatar
      lockref: Relax in cmpxchg loop · d472d9d9
      Luck, Tony authored
      While we are likley to succeed and break out of this loop, it isn't
      guaranteed.  We should be power and thread friendly if we do have to
      go around for a second (or third, or more) attempt.
      Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d472d9d9
    • Linus Torvalds's avatar
      Merge tag 'tty-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty · 2f01ea90
      Linus Torvalds authored
      Pull tty/serial driver patches from Greg KH:
       "Here's the big tty/serial driver pull request for 3.12-rc1.
      
        Lots of n_tty reworks to resolve some very long-standing issues,
        removing the 3-4 different locks that were taken for every character.
        This code has been beaten on for a long time in linux-next with no
        reported regressions.
      
        Other than that, a range of serial and tty driver updates and
        revisions.  Full details in the shortlog"
      
      * tag 'tty-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (226 commits)
        hvc_xen: Remove unnecessary __GFP_ZERO from kzalloc
        serial: imx: initialize the local variable
        tty: ar933x_uart: add device tree support and binding documentation
        tty: ar933x_uart: allow to build the driver as a module
        ARM: dts: msm: Update uartdm compatible strings
        devicetree: serial: Document msm_serial bindings
        serial: unify serial bindings into a single dir
        serial: fsl-imx-uart: Cleanup duplicate device tree binding
        tty: ar933x_uart: use config_enabled() macro to clean up ifdefs
        tty: ar933x_uart: remove superfluous assignment of ar933x_uart_driver.nr
        tty: ar933x_uart: use the clk API to get the uart clock
        tty: serial: cpm_uart: Adding proper request of GPIO used by cpm_uart driver
        serial: sirf: fix the amount of serial ports
        serial: sirf: define macro for some magic numbers of USP
        serial: icom: move array overflow checks earlier
        TTY: amiserial, remove unnecessary platform_set_drvdata()
        serial: st-asc: remove unnecessary platform_set_drvdata()
        msm_serial: Send more than 1 character on the console w/ UARTDM
        msm_serial: Add support for non-GSBI UARTDM devices
        msm_serial: Switch clock consumer strings and simplify code
        ...
      2f01ea90
    • Linus Torvalds's avatar
      Merge tag 'staging-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging · 75114427
      Linus Torvalds authored
      Pull staging tree merge from Greg KH:
       "Here's the bit staging tree pull request for 3.12-rc1.
      
        Lots of staging driver updates, and fixes.  Lustre is finally enabled
        in the build, and lots of cleanup started happening in it.  There's a
        new wireless driver in here, and 2 new TTY drivers, which cause the
        overall lines added/removed to be quite large on the "added" side.
      
        The IIO driver updates are also coming through here, as they are tied
        to the staging iio drivers"
      
      * tag 'staging-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (942 commits)
        staging: dwc2: make dwc2_core_params documentation more complete
        staging: dwc2: validate the value for phy_utmi_width
        staging: dwc2: interpret all hwcfg and related register at init time
        staging: dwc2: properly mask the GRXFSIZ register
        staging: dwc2: remove redundant register reads
        staging: dwc2: re-use hptxfsiz variable
        staging: dwc2: simplify debug output in dwc_hc_init
        staging: dwc2: add missing shift
        staging: dwc2: simplify register shift expressions
        staging: dwc2: only read the snpsid register once
        staging: dwc2: unshift non-bool register value constants
        staging: dwc2: fix off-by-one in check for max_packet_count parameter
        staging: dwc2: remove specific fifo size constants
        Staging:BCM:DDRInit.c:Renaming __FUNCTION__
        staging: bcm: remove Version.h file.
        staging: rtl8188eu: off by one in rtw_set_802_11_add_wep()
        staging: r8188eu: copying one byte too much
        staging: rtl8188eu: || vs && typo
        staging: r8188eu: off by one bugs
        staging: crystalhd: Resolve sparse 'different base types' warnings.
        ...
      75114427
    • Linus Torvalds's avatar
      Merge tag 'driver-core-3.12-rc1' of... · 542a086a
      Linus Torvalds authored
      Merge tag 'driver-core-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
      
      Pull driver core patches from Greg KH:
       "Here's the big driver core pull request for 3.12-rc1.
      
        Lots of tiny changes here fixing up the way sysfs attributes are
        created, to try to make drivers simpler, and fix a whole class race
        conditions with creations of device attributes after the device was
        announced to userspace.
      
        All the various pieces are acked by the different subsystem
        maintainers"
      
      * tag 'driver-core-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (119 commits)
        firmware loader: fix pending_fw_head list corruption
        drivers/base/memory.c: introduce help macro to_memory_block
        dynamic debug: line queries failing due to uninitialized local variable
        sysfs: sysfs_create_groups returns a value.
        debugfs: provide debugfs_create_x64() when disabled
        rbd: convert bus code to use bus_groups
        firmware: dcdbas: use binary attribute groups
        sysfs: add sysfs_create/remove_groups for when SYSFS is not enabled
        driver core: add #include <linux/sysfs.h> to core files.
        HID: convert bus code to use dev_groups
        Input: serio: convert bus code to use drv_groups
        Input: gameport: convert bus code to use drv_groups
        driver core: firmware: use __ATTR_RW()
        driver core: core: use DEVICE_ATTR_RO
        driver core: bus: use DRIVER_ATTR_WO()
        driver core: create write-only attribute macros for devices and drivers
        sysfs: create __ATTR_WO()
        driver-core: platform: convert bus code to use dev_groups
        workqueue: convert bus code to use dev_groups
        MEI: convert bus code to use dev_groups
        ...
      542a086a
    • Linus Torvalds's avatar
      Merge tag 'char-misc-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · 1d1fdd95
      Linus Torvalds authored
      Pull char/misc patches from Greg KH:
       "Here is the big char/misc driver pull request for 3.12-rc1
      
        Lots of driver updates all over the char/misc tree, full details in
        the shortlog"
      
      * tag 'char-misc-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (62 commits)
        drivers: uio: Kconfig: add MMU dependancy for UIO
        drivers: uio: Add driver for Humusoft MF624 DAQ PCI card
        drivers: uio_pdrv_genirq: use dev_get_platdata()
        drivers: uio_pruss: use dev_get_platdata()
        drivers: uio_dmem_genirq: use dev_get_platdata()
        drivers: parport: Kconfig: exclude h8300 for PARPORT_PC
        drivers: misc: ti-st: fix potential race if st_kim_start fails
        Drivers: hv: vmbus: Do not attempt to negoatiate a new version prematurely
        misc: vmw_balloon: Remove braces to fix build for clang.
        Drivers: hv: vmbus: Fix a bug in the handling of channel offers
        vme: vme_ca91cx42.c: fix to pass correct device identity to free_irq()
        VMCI: Add support for virtual IOMMU
        VMCI: Remove non-blocking/pinned queuepair support
        uio: uio_pruss: remove unnecessary platform_set_drvdata()
        parport: amiga: remove unnecessary platform_set_drvdata()
        vme: vme_vmivme7805.c: add missing __iomem annotation
        vme: vme_ca91cx42.c: add missing __iomem annotation
        vme: vme_tsi148.c: add missing __iomem annotation
        drivers/misc/hpilo: Correct panic when an AUX iLO is detected
        uio: drop unused vma_count member in uio_device struct
        ...
      1d1fdd95
    • Linus Torvalds's avatar
      Merge tag 'usb-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · b3b49114
      Linus Torvalds authored
      Pull USB patches from Greg KH:
       "Here's the big USB driver pull request for 3.12-rc1
      
        Lots of USB driver fixes and updates.  Nothing major, just the normal
        xhci, gadget, and other driver changes.  Full details in the shortlog"
      
      * tag 'usb-3.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (352 commits)
        usbcore: fix incorrect type in assignment in descriptors_changed()
        usbcore: compare and release one bos descriptor in usb_reset_and_verify_device()
        ehci: remove debugging statement with ehci statistics in ehci_stop()
        ehci: remove duplicate debug_async_open() prototype in ehci-dbg.c
        ehci: enable debugging code when CONFIG_DYNAMIC_DEBUG is set
        ehci: remove ehci_vdbg() verbose debugging statements
        Documentation sysfs-bus-usb: Document which files are used by libusb
        Documentation sysfs-bus-usb: Document the speed file used by libusb
        Documentation sysfs-bus-usb: Move files with known users to stable
        USB: fix build error when CONFIG_PM_SLEEP isn't enabled
        usb: r8a66597-hcd: use platform_{get,set}_drvdata()
        usb: phy-tegra-usb: use platform_{get,set}_drvdata()
        usb: acm gadget: Null termintate strings table
        dma: cppi41: off by one in desc_to_chan()
        xhci: Fix warning introduced by disabling runtime PM.
        dev-core: fix build break when DEBUG is enabled
        USB: OHCI: Allow runtime PM without system sleep
        usb: ohci-at91: remove unnecessary dev_set_drvdata()
        usb: renesas_usbhs: use platform_{get,set}_drvdata()
        usb: fotg210-udc: use platform_{get,set}_drvdata()
        ...
      b3b49114
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 1ccfd5ea
      Linus Torvalds authored
      Pull first batch of s390 updates from Martin Schwidefsky:
       "The most interesting change is that Martin converted s390 to generic
        hardirqs.  Which means that all current architectures have been
        converted and that CONFIG_GENERIC_HARDIRQS can be removed.  Martin
        prepared a patch for that already (see genirq branch), but the best
        time to merge that is probably at the end of the merge window / begin
        of -rc1.
      
        Another patch converts s390 to software referenced bits instead of
        relying on the reference bit in the storage key.  Therefore s390
        doesn't use storage keys anymore, except for kvm.
      
        Besides that we have improvements, cleanups and fixes in PCI, DASD and
        all over the place."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (32 commits)
        s390/pci: use virtual memory for iommu bitmap
        s390/cio: fix unlocked access of global bitmap
        s390/pci: update function handle after resume from hibernate
        s390/pci: try harder to modify a function
        s390/pci: split lpf
        s390/hibernate: add early resume function
        s390/pci: add recover sysfs knob
        s390/pci: use claim_resource
        s390/pci/hotplug: convert to be builtin only
        s390/mm: implement software referenced bits
        s390/dasd: fix statistics for recovered requests
        s390/tx: allow program interruption filtering in user space
        s390/pgtable: fix mprotect for single-threaded KVM guests
        s390/time: return with irqs disabled from psw_idle
        s390/kprobes: add support for compare and branch instructions
        s390/switch_to: fix save_access_regs() / restore_access_regs()
        s390/bitops: fix inline assembly constraints
        s390/dasd: enable raw_track_access reads without direct I/O
        s390/mm: introduce ptep_flush_lazy helper
        s390/time: clock comparator revalidation
        ...
      1ccfd5ea
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · ea98af13
      Linus Torvalds authored
      Pull m68k updates from Geert Uytterhoeven:
       "Summary:
         - Kill harmless warning messages when running a multi-platform kernel
           on Atari
         - Correct virt/phys mixups that didn't actually hurt due to identity
           mappings"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k/atari: ARAnyM - Always use physical addresses in NatFeat calls
        m68k: Ignore disabled HSYNC interrupt on Atari for irqs_disabled()
      ea98af13