Skip to content

Commit

Permalink
Merge tag 'acpi-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kerne…
Browse files Browse the repository at this point in the history
…l/git/rafael/linux-pm

Pull ACPI updates from Rafael Wysocki:
 "These update the ACPICA code in the kernel to follow upstream revision
  20180313 which includes fixes related to the so-called module-level
  AML (mostly "if" type of statements outside of any methods) that
  should improve the handling of systems that load alternative SSDTs
  depending on the current configuration, for example, and event
  handling fixes related to disabling and enabling GPEs on system
  startup and on suspend/resume.

  Moreover, the ACPICA license boilerplate is replaced with SPDX license
  IDs which alone reduces the number of lines of ACPICA code in the
  kernel quite a bit.

  Also added is a new driver for the generic ACPI Time and Alarm Device
  (TAD). At the moment it only handles the most basic capabilities of
  the TAD, however.

  In addition to that the ACPI battery driver is improved to handle
  battery thresholds on ThinkPads, among other things, some bugs are
  fixed, a new backlight quirk is added and some documentation is
  updated.

  Specifics:

   - Update the in-kernel ACPICA code to upstream revision 20180313
     including:
      * Module-level AML code handling fixes and simplifications (Bob
        Moore, Erik Schmauss).
      * Fixes and cleanups related to messaging (Bob Moore).
      * Events handling fixes related to disabling and enabling GPEs
        (Erik Schmauss).
      * Introduction of SPDX license identifiers and removal of license
        boilerplate in multiple files (Erik Schmauss).
      * Assorted fixes and cleanups (Bob Moore, Erik Schmauss, Hans de
        Goede, Seunghun Han).

   - Add new basic driver for the ACPI Time and Alarm Device (Rafael
     Wysocki).

   - Modify the ACPI battery driver to support battery thresholds on
     Lenovo ThinkPads (Ognjen Galic, Colin Ian King).

   - Avoid reporting battery capacity over 100 in the ACPI battery
     driver in some cases (Laszlo Toth).

   - Make the kernel recognize an OEM _OSI string from Dell to avoid
     power management issues with NVidia GPUs in Dell platforms (Alex
     Hung).

   - Make the PCI IRQ management code handle missing _PRS cleanly (Alex
     Hung).

   - Fix uevent notifications related to device hotplut (Lee, Chun-Yi).

   - Prevent the ACPI PAD driver from leaking memory (Lenny Szubowicz).

   - Update the ACPI CPPC library code to include subspace IDs in the
     kernel messages logged by it (George Cherian).

   - Add backlight quirk for Samsung 670Z5E (Hans de Goede).

   - Add the NFIT and HMAT tables to the list of ACPI tables that can be
     overridden via initrd (Dan Williams).

   - Fix and clean up some ACPI documentation and Kconfig help language
     (Aishwarya Pant, Randy Dunlap).

   - Replace license boilerplate with an SPDX license ID in the ACPI
     PMIC operation region handling code (Rajmohan Mani)"

* tag 'acpi-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (39 commits)
  ACPI: acpi_pad: Fix memory leak in power saving threads
  ACPI / video: Add quirk to force acpi-video backlight on Samsung 670Z5E
  ACPI: Add Time and Alarm Device (TAD) driver
  ACPI / scan: Send change uevent with offine environmental data
  ACPI / Kconfig: Update ACPI_PROCFS_POWER help text
  ACPI / OSI: Add OEM _OSI strings to disable NVidia RTD3
  ACPICA: Update version to 20180313
  ACPICA: Cleanup/simplify module-level code support
  ACPICA: Events: add a return on failure from acpi_hw_register_read
  ACPICA: adding SPDX headers
  ACPICA: Rename a global for clarity, no functional change
  ACPICA: macros: fix ACPI_ERROR_NAMESPACE macro
  ACPICA: Change a compile-time option to a runtime option
  ACPICA: Remove calling of _STA from acpi_get_object_info()
  ACPICA: AML Debug Object: Don't ignore output of zero-length strings
  ACPICA: Fix memory leak on unusual memory leak
  ACPICA: Events: Dispatch GPEs after enabling for the first time
  ACPICA: Events: Add parallel GPE handling support to fix potential redundant _Exx evaluations
  ACPICA: Events: Stop unconditionally clearing ACPI IRQs during suspend/resume
  ACPICA: acpi: acpica: fix acpi operand cache leak in nseval.c
  ...
  • Loading branch information
torvalds committed Apr 3, 2018
2 parents 642e7fd + 49076b2 commit be55375
Show file tree
Hide file tree
Showing 254 changed files with 4,565 additions and 11,094 deletions.
37 changes: 37 additions & 0 deletions Documentation/ABI/testing/sysfs-bus-acpi
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,40 @@ Description:
Writing 1 to this attribute will trigger hot removal of
this device object. This file exists for every device
object that has _EJ0 method.

What: /sys/bus/acpi/devices/.../status
Date: Jan, 2014
Contact: Rafael J. Wysocki <[email protected]>
Description:
(RO) Returns the ACPI device status: enabled, disabled or
functioning or present, if the method _STA is present.

The return value is a decimal integer representing the device's
status bitmap:

Bit [0] – Set if the device is present.
Bit [1] – Set if the device is enabled and decoding its
resources.
Bit [2] – Set if the device should be shown in the UI.
Bit [3] – Set if the device is functioning properly (cleared if
device failed its diagnostics).
Bit [4] – Set if the battery is present.
Bits [31:5] – Reserved (must be cleared)

If bit [0] is clear, then bit 1 must also be clear (a device
that is not present cannot be enabled).

Bit 0 can be clear (not present) with bit [3] set (device is
functional). This case is used to indicate a valid device for
which no device driver should be loaded.

More special cases are covered in the ACPI specification.

What: /sys/bus/acpi/devices/.../hrv
Date: Apr, 2016
Contact: Rafael J. Wysocki <[email protected]>
Description:
(RO) Allows users to read the hardware version of non-PCI
hardware, if the _HRV control method is present. It is mostly
useful for non-PCI devices because lspci can list the hardware
version for PCI devices.
113 changes: 113 additions & 0 deletions Documentation/ABI/testing/sysfs-devices-platform-ACPI-TAD
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
ACPI Time and Alarm (TAD) device attributes.

What: /sys/bus/platform/devices/ACPI000E:00/caps
Date: March 2018
Contact: Rafael J. Wysocki <[email protected]>
Description:
(RO) Hexadecimal bitmask of the TAD attributes are reported by
the platform firmware (see ACPI 6.2, section 9.18.2):

BIT(0): AC wakeup implemented if set
BIT(1): DC wakeup implemented if set
BIT(2): Get/set real time features implemented if set
BIT(3): Real time accuracy in milliseconds if set
BIT(4): Correct status reported for wakeups from S4/S5 if set
BIT(5): The AC timer wakes up from S4 if set
BIT(6): The AC timer wakes up from S5 if set
BIT(7): The DC timer wakes up from S4 if set
BIT(8): The DC timer wakes up from S5 if set

The other bits are reserved.

What: /sys/bus/platform/devices/ACPI000E:00/ac_alarm
Date: March 2018
Contact: Rafael J. Wysocki <[email protected]>
Description:
(RW) The AC alarm timer value.

Reads return the current AC alarm timer value in seconds or
"disabled", if the AC alarm is not set to wake up the system.

Write a new AC alarm timer value in seconds or "disabled" to it
to set the AC alarm timer or to disable it, respectively.

If the AC alarm timer is set through this attribute and it
expires, it will immediately wake up the system from the S3
sleep state (and from S4/S5 too if supported) until its status
is explicitly cleared via the ac_status attribute.

What: /sys/bus/platform/devices/ACPI000E:00/ac_policy
Date: March 2018
Contact: Rafael J. Wysocki <[email protected]>
Description:
(RW) The AC alarm expired timer wake policy (see ACPI 6.2,
Section 9.18 for details).

Reads return the current expired timer wake delay for the AC
alarm timer or "never", if the policy is to discard AC timer
wakeups if the system is on DC power.

Write a new expired timer wake delay for the AC alarm timer in
seconds or "never" to it to set the expired timer wake delay for
the AC alarm timer or to set its expired wake policy to discard
wakeups if the system is on DC power, respectively.

What: /sys/bus/platform/devices/ACPI000E:00/ac_status
Date: March 2018
Contact: Rafael J. Wysocki <[email protected]>
Description:
(RW) The AC alarm status.

Reads return a hexadecimal bitmask representing the AC alarm
timer status with the following meaning of bits (see ACPI 6.2,
Section 9.18.5):

Bit(0): The timer has expired if set.
Bit(1): The timer has woken up the system from a sleep state
(S3 or S4/S5 if supported) if set.

The other bits are reserved.

Reads also cause the AC alarm timer status to be reset.

Another way to reset the the status of the AC alarm timer is to
write (the number) 0 to this file.

If the status return value indicates that the timer has expired,
it will immediately wake up the system from the S3 sleep state
(and from S4/S5 too if supported) until its status is explicitly
cleared through this attribute.

What: /sys/bus/platform/devices/ACPI000E:00/dc_alarm
Date: March 2018
Contact: Rafael J. Wysocki <[email protected]>
Description:
(RW,optional) The DC alarm timer value.

This attribute is only present if the TAD supports a separate
DC timer.

It is analogous to the ac_alarm attribute.

What: /sys/bus/platform/devices/ACPI000E:00/dc_policy
Date: March 2018
Contact: Rafael J. Wysocki <[email protected]>
Description:
(RW,optional) The DC alarm expired timer wake policy.

This attribute is only present if the TAD supports a separate
DC timer.

It is analogous to the ac_policy attribute.

What: /sys/bus/platform/devices/ACPI000E:00/dc_status
Date: March 2018
Contact: Rafael J. Wysocki <[email protected]>

Description:
(RW,optional) The DC alarm status.

This attribute is only present if the TAD supports a separate
DC timer.

It is analogous to the ac_status attribute.
21 changes: 17 additions & 4 deletions drivers/acpi/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -105,14 +105,14 @@ config ACPI_PROCFS_POWER
deprecated power /proc/acpi/ directories to exist, even when
they have been replaced by functions in /sys.
The deprecated directories (and their replacements) include:
/proc/acpi/battery/* (/sys/class/power_supply/*)
/proc/acpi/ac_adapter/* (sys/class/power_supply/*)
/proc/acpi/battery/* (/sys/class/power_supply/*) and
/proc/acpi/ac_adapter/* (sys/class/power_supply/*).
This option has no effect on /proc/acpi/ directories
and functions, which do not yet exist in /sys
and functions which do not yet exist in /sys.
This option, together with the proc directories, will be
deleted in the future.

Say N to delete power /proc/acpi/ directories that have moved to /sys/
Say N to delete power /proc/acpi/ directories that have moved to /sys.

config ACPI_REV_OVERRIDE_POSSIBLE
bool "Allow supported ACPI revision to be overridden"
Expand Down Expand Up @@ -217,6 +217,19 @@ config ACPI_FAN
To compile this driver as a module, choose M here:
the module will be called fan.

config ACPI_TAD
tristate "ACPI Time and Alarm (TAD) Device Support"
depends on SYSFS && PM_SLEEP
help
The ACPI Time and Alarm (TAD) device is an alternative to the Real
Time Clock (RTC). Its wake timers allow the system to transition from
the S3 (or optionally S4/S5) state to S0 state after a time period
elapses. In comparison with the RTC Alarm, the TAD provides a larger
scale of flexibility in the wake timers. The time capabilities of the
TAD maintain the time of day information across platform power
transitions, and keep track of time even when the platform is turned
off.

config ACPI_DOCK
bool "Dock"
help
Expand Down
1 change: 1 addition & 0 deletions drivers/acpi/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ obj-$(CONFIG_ACPI_AC) += ac.o
obj-$(CONFIG_ACPI_BUTTON) += button.o
obj-$(CONFIG_ACPI_FAN) += fan.o
obj-$(CONFIG_ACPI_VIDEO) += video.o
obj-$(CONFIG_ACPI_TAD) += acpi_tad.o
obj-$(CONFIG_ACPI_PCI_SLOT) += pci_slot.o
obj-$(CONFIG_ACPI_PROCESSOR) += processor.o
obj-$(CONFIG_ACPI) += container.o
Expand Down
2 changes: 1 addition & 1 deletion drivers/acpi/ac.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
#include <linux/platform_device.h>
#include <linux/power_supply.h>
#include <linux/acpi.h>
#include "battery.h"
#include <acpi/battery.h>

#define PREFIX "ACPI: "

Expand Down
3 changes: 3 additions & 0 deletions drivers/acpi/acpi_pad.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ static void round_robin_cpu(unsigned int tsk_index)
cpumask_andnot(tmp, cpu_online_mask, pad_busy_cpus);
if (cpumask_empty(tmp)) {
mutex_unlock(&round_robin_lock);
free_cpumask_var(tmp);
return;
}
for_each_cpu(cpu, tmp) {
Expand All @@ -127,6 +128,8 @@ static void round_robin_cpu(unsigned int tsk_index)
mutex_unlock(&round_robin_lock);

set_cpus_allowed_ptr(current, cpumask_of(preferred_cpu));

free_cpumask_var(tmp);
}

static void exit_round_robin(unsigned int tsk_index)
Expand Down
Loading

0 comments on commit be55375

Please sign in to comment.