1. 17 1月, 2013 9 次提交
    • R
      ACPI / scan: Remove unnecessary initialization of local variables · 8bc5053b
      Rafael J. Wysocki 提交于
      The local variables in acpi_bus_get_power_flags() need not be
      initialized upfront, so change the code accordingly.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      8bc5053b
    • R
      ACPI / scan: Move power state initialization to a separate routine · f33ce568
      Rafael J. Wysocki 提交于
      To reduce indentation level and improve code readability, move the
      initialization code related to device power states from
      acpi_bus_get_power_flags() to a new routine,
      acpi_bus_init_power_state().
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      f33ce568
    • R
      ACPI / PM: Take order attribute of wakeup power resources into account · 993cbe59
      Rafael J. Wysocki 提交于
      ACPI power resources have an order attribute that should be taken
      into account when turning them on and off, but it is not used now.
      
      Modify the power resources management code to preserve the
      spec-compliant ordering of wakeup power resources.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      993cbe59
    • R
      ACPI / PM: Take order attribute of power resources into account · 0b224527
      Rafael J. Wysocki 提交于
      ACPI power resources have an order attribute that should be taken
      into account when turning them on and off, but it is not used now.
      
      Modify the power resources management code to preserve the
      spec-compliant ordering of power resources that power states of
      devices depend on (analogous changes will be done separately for
      power resources used for wakeup).
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      0b224527
    • R
      ACPI: Do not use device power states of power resources · 722c929f
      Rafael J. Wysocki 提交于
      ACPI power resource objects have struct acpi_device components, but
      they are only used for registering those resources in the device
      hierarchy.  In particular, power state information stored in them is
      completely useless (amnong other things, because the power resources
      "devices" are not power manageable), so there is no reason for the
      power resources management code to keep it up to date.
      
      Remove the code updating device power states of power resources from
      drivers/acpi/power.c.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      722c929f
    • R
      ACPI: Drop power resources driver · 781d737c
      Rafael J. Wysocki 提交于
      The ACPI power resources driver is not very useful, because the only
      thing it really does is to restore the state of the power resources
      that were "on" before system suspend or hibernation, but that may be
      achieved in a different way.
      
      Drop the ACPI power resources driver entirely and add
      acpi_resume_power_resources() that will walk the list of all
      registered power resources during system resume and turn on the ones
      that were "on" before the preceding system suspend or hibernation.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      781d737c
    • R
      ACPI / scan: Treat power resources in a special way · 82c7d5ef
      Rafael J. Wysocki 提交于
      ACPI power resources need to be treated in a special way by the
      namespace scanning code, because they need to be ready to use as
      soon as they have been discovered (even before registering ACPI
      device nodes using them for power management).
      
      For this reason, it doesn't make sense to separate the preparation
      of struct acpi_device objects representing them in the device
      hierarchy from the creation of struct acpi_power_resource objects
      actually used for power resource manipulation.  Accordingly, it
      doesn't make sense to define non-empty .add() and .remove() callbacks
      in the power resources "driver" (in fact, it is questionable whether
      or not it is useful to register such a "driver" at all).
      
      Rearrange the code in scan.c and power.c so that power resources are
      initialized entirely by one routine, acpi_add_power_resource(), that
      also prepares their struct acpi_device objects and registers them
      with the driver core, telling it to use a special release routine,
      acpi_release_power_resource(), for removing objects that represent
      power resources from memory.  Make the ACPI namespace scanning code
      in scan.c always use acpi_add_power_resource() for preparing and
      registering objects that represent power resources.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      82c7d5ef
    • R
      ACPI / scan: More straightforward preparation of ACPI device objects · d43e167d
      Rafael J. Wysocki 提交于
      Simplify the code preparing struct acpi_device objects for
      registration by removing useless code, moving different pieces of
      code into the functions they belong to and making a couple of int
      functions always returning 0 void.
      
      This also fixes a possible memory leak in ACPI device registration
      error code path by making acpi_device_register() detach data from
      device->handle if device_register() fails and prepares the scanning
      code for special-casing ACPI power resources (next patch).
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      d43e167d
    • R
      ACPI / PM: Rework the handling of devices depending on power resources · bc9b6407
      Rafael J. Wysocki 提交于
      Commit 0090def6 (ACPI: Add interface to register/unregister device
      to/from power resources) made it possible to indicate to the ACPI
      core that if the given device depends on any power resources, then
      it should be resumed as soon as all of the power resources required
      by it to transition to the D0 power state have been turned on.
      
      Unfortunately, however, this was a mistake, because all devices
      depending on power resources should be treated this way (i.e. they
      should be resumed when all power resources required by their D0
      state have been turned on) and for the majority of those devices
      the ACPI core can figure out by itself which (physical) devices
      depend on what power resources.
      
      For this reason, replace the code added by commit 0090def6 with a
      new, much more straightforward, mechanism that will be used
      internally by the ACPI core and remove all references to that code
      from kernel subsystems using ACPI.
      
      For the cases when there are (physical) devices that should be
      resumed whenever a not directly related ACPI device node goes into
      D0 as a result of power resources configuration changes, like in
      the SATA case, add two new routines, acpi_dev_pm_add_dependent()
      and acpi_dev_pm_remove_dependent(), allowing subsystems to manage
      such dependencies.  Convert the SATA subsystem to use the new
      functions accordingly.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      bc9b6407
  2. 15 1月, 2013 5 次提交
  3. 12 1月, 2013 1 次提交
  4. 08 1月, 2013 1 次提交
    • R
      ACPI / scan: Treat power resources in a special way · f95988de
      Rafael J. Wysocki 提交于
      Commit 805d410f (ACPI: Separate adding ACPI device objects from
      probing ACPI drivers) introduced an ACPI power resources management
      regression, because it didn't ensure that the power resources
      driver bind to the struct acpi_device objects corresponding
      to power resources as soon as they were created.  As a result,
      ACPI power management routines may attempt to access power resource
      objects before they are ready to use.
      
      To fix this problem, tell the acpi_add_single_object() in
      acpi_bus_check_add() to probe the driver for objects of type
      ACPI_BUS_TYPE_POWER.  This fix has been verified to work on
      HP nx6325 where the problem was first observed.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Acked-by: NToshi Kani <toshi.kani@hp.com>
      f95988de
  5. 05 1月, 2013 1 次提交
  6. 03 1月, 2013 22 次提交
  7. 08 12月, 2012 1 次提交