1. 26 Oct, 2010 4 commits
  2. 25 Oct, 2010 17 commits
  3. 23 Oct, 2010 3 commits
    • Rafael J. Wysocki's avatar
      ACPI / Battery: Return -ENODEV for unknown values in get_property() · a1b4bd69
      Rafael J. Wysocki authored
      The function acpi_battery_get_property() is called by the
      power supply framework's function power_supply_show_property()
      implementing the sysfs interface for power supply devices as the
      ACPI battery driver's ->get_property() callback.  Thus it is supposed
      to return error code if the value of the given property is unknown.
      Unfortunately, however, it returns 0 in those cases and puts a
      wrong (negative) value into the intval field of the
      union power_supply_propval object provided by
      power_supply_show_property().  In consequence, wrong negative
      values are read by user space from the battery's sysfs files.
      
      Fix this by making acpi_battery_get_property() return -ENODEV
      for properties with unknown values (-ENODEV is returned, because
      power_supply_uevent() returns with error for any other error code
      returned by power_supply_show_property()).
      Reported-and-tested-by: default avatarSitsofe Wheeler <sitsofe@yahoo.com>
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      a1b4bd69
    • Rafael J. Wysocki's avatar
      ACPI / PM: Fix reference counting of power resources · 3e384ee6
      Rafael J. Wysocki authored
      The reference counting of ACPI power resources is currently broken
      for a few reasons.  First, instead of using a simple reference
      counter per power resource it uses a list of objects representing
      refereces to the given power resource from devices.  This leads to
      the second breakage, because it prevents power resources from
      being referenced more than once by one device, which is necessary
      if the device is configured to signal wakeup.  Namely, when putting
      the device into a low power state we first call
      acpi_enable_wakeup_device_power() that should reference count power
      resources needed for signaling wakeup and then we call
      acpi_power_transition() to power off the device.  The latter call
      drops references to the device's power resources, possibly including
      the ones added by acpi_enable_wakeup_device_power(), so the device
      can't signal wakeup as a result.  Apart from this, the locking
      in acpi_power_on() and acpi_power_off_device() doesn't prevent
      all possible races from happening, which may be problematic for
      runtime PM and asynchronous suspend and resume.
      
      Fix the problem by using a counter for power resources reference
      counting and putting the evaluation of ACPI _ON and _OFF methods
      under the power resource mutex.
      Reported-by: default avatarMatthew Garrett <mjg@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      3e384ee6
    • Bob Moore's avatar
      Subject: [PATCH] ACPICA: Fix Scope() op in module level code · 8df3fc98
      Bob Moore authored
      Some Panasonic Toughbooks create nodes in module level code.
      Module level code is the executable AML code outside of control method,
      for example, below AML code creates a node \_SB.PCI0.GFX0.DD02.CUBL
      
              If (\_OSI ("Windows 2006"))
              {
                  Scope (\_SB.PCI0.GFX0.DD02)
                  {
                      Name (CUBL, Ones)
                      ...
                  }
              }
      
      Scope() op does not actually create a new object, it refers to an
      existing object(\_SB.PCI0.GFX0.DD02 in above example). However, for
      Scope(), we want to indeed open a new scope, so the child nodes(CUBL in
      above example) can be created correctly under it.
      
      https://bugzilla.kernel.org/show_bug.cgi?id=19462Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
      Signed-off-by: default avatarLin Ming <ming.m.lin@intel.com>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      8df3fc98
  4. 22 Oct, 2010 2 commits
    • Zhang Rui's avatar
      ACPI battery: support percentage battery remaining capacity · 557d5868
      Zhang Rui authored
      According to the ACPI spec, some kinds of primary battery can
      report percentage battery remaining capacity directly to OS.
      
      In this case, it reports the LastFullChargedCapacity == 100,
      BatteryPresentRate = 0xFFFFFFFF, and BatteryRemaingCapacity a
      percentage value, which actually means RemainingBatteryPercentage.
      
      Now we found some battery follows this rule even if it's a rechargeable.
      https://bugzilla.kernel.org/show_bug.cgi?id=15979
      
      Handle these batteries correctly in ACPI battery driver
      so that they won't break userspace.
      Signed-off-by: default avatarZhang Rui <rui.zhang@intel.com>
      Tested-by: default avatarSitsofe Wheeler <sitsofe@yahoo.com>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      557d5868
    • Thomas Renninger's avatar
      ACPI: Make Embedded Controller command timeout delay configurable · 7a18e96d
      Thomas Renninger authored
      Here and then there show up machines which need higher timeout values.
      Finding this on affected machines can be cumbersome, because
      ACPI_EC_DELAY is a compile option -> make it configurable via boot param.
      
      This can even be provided writable at runtime via:
      /sys/modules/acpi/parameters/ec_delay
      
      Known machines where this helps:
      Some HP machines where for whatever reasons specific EC accesses take
      very long at resume from S3 (in _WAK function).
      The AE_TIME error is passed upwards and the ACPI interpreter will
      not execute the rest of the _WAK function which results in not properly
      initialized devices/variables with different side-effects.
      
      Afaik, on some MSI machines this helped as well.
      
      If this param is needed there probably are underlying problems like:
        - EC firmware bug
        - A kernel EC driver bug
        - An ACPI interpreter behavior (e.g. timings when specific
          EC accesses happen and how) which the EC does not like
        - ...
      which should get evaluated further, but often are nasty or
      impossible to fix from OS side.
      Signed-off-by: default avatarThomas Renninger <trenn@suse.de>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      7a18e96d
  5. 20 Oct, 2010 5 commits
  6. 19 Oct, 2010 9 commits