05 Dec, 2017

1 commit

  • commit a64a62ce9a380213dc9e192f762266d70c9b40ec upstream.

    On platforms (ASUS X550ZE and possibly all ASUS X series) with valid ECDT
    EC but invalid DSDT EC, EC PM ops won't be invoked as ECDT EC is not an
    ACPI device. Thus the following commit actually removed post-resume
    acpi_ec_enable_event() invocation for such platforms, and triggered a
    regression on them that after being resumed, EC (actually should be ECDT)
    driver stops handling EC events:

    Commit: c2b46d679b30c5c0d7eb47a21085943242bdd8dc
    Subject: ACPI / EC: Add PM operations to improve event handling for resume process

    Notice that the root cause actually is "ECDT is not an ACPI device" rather
    than "the timing of acpi_ec_enable_event() invocation", this patch fixes
    this issue by enumerating ECDT EC as an ACPI device. Due to the existence
    of the noirq stage, the ability of tuning the timing of
    acpi_ec_enable_event() invocation is still meaningful.

    This patch is a little bit different from the posted fix by moving
    acpi_config_boot_ec() from acpi_ec_ecdt_start() to acpi_ec_add() to make
    sure that EC event handling won't be stopped as long as the ACPI EC driver
    is bound. Thus the following sequence shouldn't disable EC event handling:
    unbind,suspend,resume,bind.

    Fixes: c2b46d679b30 (ACPI / EC: Add PM operations to improve event handling for resume process)
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=196847
    Reported-by: Luya Tshimbalanga
    Tested-by: Luya Tshimbalanga
    Signed-off-by: Lv Zheng
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Lv Zheng
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

20 Sep, 2017

1 commit

  • Due to commit db3e50f3234b (device property: Get rid of struct
    fwnode_handle type field), ACPI_HANDLE() inadvertently became
    a GPL-only call. The call path that led to that was:

    ACPI_HANDLE()
    ACPI_COMPANION()
    to_acpi_device_node()
    is_acpi_device_node()
    acpi_device_fwnode_ops
    DECLARE_ACPI_FWNODE_OPS(acpi_device_fwnode_ops);

    ...and the new DECLARE_ACPI_FWNODE_OPS() includes
    EXPORT_SYMBOL_GPL, whereas previously it was a static struct.

    In order to avoid changing any of that, let's instead provide ever
    so slightly better encapsulation of those struct fwnode_operations
    instances. Those do not really need to be directly used in
    inline function calls in header files. Simply moving two small
    functions (is_acpi_device_node and is_acpi_data_node) out of
    acpi_bus.h, and into a .c file, does that.

    That leaves the internals of struct fwnode_operations as GPL-only
    (which I think was the intent all along), but un-breaks any driver
    code out there that relies on the ACPI subsystem's being (historically)
    an EXPORT_SYMBOL-usable system. By that, I mean, ACPI_HANDLE() and
    other basic ACPI calls were non-GPL-protected.

    Also, while I'm there, remove a tiny bit of redundancy that was missed
    in the earlier commit, by having is_acpi_node() use the other two
    routines, instead of checking fwnode directly.

    Fixes: db3e50f3234b (device property: Get rid of struct fwnode_handle type field)
    Signed-off-by: John Hubbard
    Acked-by: Sakari Ailus
    Acked-by: Mika Westerberg
    Signed-off-by: Rafael J. Wysocki

    John Hubbard
     

06 Sep, 2017

1 commit

  • Pull device properties framework updates from Rafael Wysocki:
    "These introduce fwnode operations for all of the separate types of
    'firmware nodes' that can be handled by the device properties
    framework, make the framework use const fwnode arguments all over, add
    a helper for the consolidated handling of node references and switch
    over the framework to the new UUID API.

    Specifics:

    - Introduce fwnode operations for all of the separate types of
    'firmware nodes' that can be handled by the device properties
    framework and drop the type field from struct fwnode_handle (Sakari
    Ailus, Arnd Bergmann).

    - Make the device properties framework use const fwnode arguments
    where possible (Sakari Ailus).

    - Add a helper for the consolidated handling of node references to
    the device properties framework (Sakari Ailus).

    - Switch over the ACPI part of the device properties framework to the
    new UUID API (Andy Shevchenko)"

    * tag 'devprop-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI: device property: Switch to use new generic UUID API
    device property: export irqchip_fwnode_ops
    device property: Introduce fwnode_property_get_reference_args
    device property: Constify fwnode property API
    device property: Constify argument to pset fwnode backend
    ACPI: Constify internal fwnode arguments
    ACPI: Constify acpi_bus helper functions, switch to macros
    ACPI: Prepare for constifying acpi_get_next_subnode() fwnode argument
    device property: Get rid of struct fwnode_handle type field
    ACPI: Use IS_ERR_OR_NULL() instead of non-NULL check in is_acpi_data_node()

    Linus Torvalds
     

04 Sep, 2017

4 commits

  • * acpi-sysfs:
    ACPI / sysfs: Extend ACPI sysfs to provide access to boot error region

    * acpi-apei:
    ACPI / APEI: Suppress message if HEST not present
    ACPI, APEI, EINJ: Subtract any matching Register Region from Trigger resources
    ACPI: APEI: fix the wrong iteration of generic error status block
    ACPI: APEI: Enable APEI multiple GHES source to share a single external IRQ

    * acpi-blacklist:
    intel_pstate: convert to use acpi_match_platform_list()
    ACPI / blacklist: add acpi_match_platform_list()

    Rafael J. Wysocki
     
  • * acpi-ec:
    ACPI / EC: Clean up EC GPE mask flag
    ACPI: EC: Fix possible issues related to EC initialization order

    * acpi-dma:
    ACPI/IORT: Add IORT named component memory address limits
    ACPI: Make acpi_dma_configure() DMA regions aware
    ACPI: Introduce DMA ranges parsing
    ACPI: Make acpi_dev_get_resources() method agnostic

    * acpi-processor:
    ACPI / processor: make function acpi_processor_check_duplicates() static
    ACPI: processor: use dev_dbg() instead of dev_warn() when CPPC probe failed

    * acpi-cppc:
    mailbox: pcc: Drop uninformative output during boot

    Rafael J. Wysocki
     
  • * acpi-scan:
    ACPI / scan: Enable GPEs before scanning the namespace
    ACPICA: Make it possible to enable runtime GPEs earlier
    ACPICA: Dispatch active GPEs at init time

    * acpi-pm:
    ACPI / PM: Add debug statements to acpi_pm_notify_handler()
    ACPI: Add debug statements to acpi_global_event_handler()
    ACPI / sleep: Make acpi_sleep_syscore_init() static
    ACPI / PCI / PM: Rework acpi_pci_propagate_wakeup()
    ACPI / PM: Split acpi_device_wakeup()
    PCI / PM: Skip bridges in pci_enable_wake()

    Rafael J. Wysocki
     
  • * acpica: (32 commits)
    ACPICA: Update version to 20170728
    ACPICA: Revert "Update resource descriptor handling"
    ACPICA: Resources: Allow _DMA method in walk resources
    ACPICA: Ensure all instances of AE_AML_INTERNAL have error messages
    ACPICA: Implement deferred resolution of reference package elements
    ACPICA: Debugger: Improve support for Alias objects
    ACPICA: Interpreter: Update handling for Alias operator
    ACPICA: EFI/EDK2: Cleanup to enable /WX for MSVC builds
    ACPICA: acpidump: Add DSDT/FACS instance support for Linux and EFI
    ACPICA: CLib: Add short multiply/shift support
    ACPICA: EFI/EDK2: Sort acpi.h inclusion order
    ACPICA: Add a comment, no functional change
    ACPICA: Namespace: Update/fix an error message
    ACPICA: iASL: Add support for the SDEI table
    ACPICA: Divergences: reduce access size definitions
    ACPICA: Update version to 20170629
    ACPICA: Update resource descriptor handling
    ACPICA: iasl: Update to IORT SMMUv3 disassembling
    ACPICA: Disassembler: skip parsing of incorrect external declarations
    ACPICA: iASL: Ensure that the target node is valid in acpi_ex_create_alias
    ...

    Rafael J. Wysocki
     

30 Aug, 2017

1 commit

  • According to the ACPI specification, firmware is not required to provide
    the Hardware Error Source Table (HEST). When HEST is not present, the
    following superfluous message is printed to the kernel boot log -

    [ 3.460067] GHES: HEST is not enabled!

    Extend hest_disable variable to track whether the firmware provides this
    table and if it is not present skip any log output. The existing
    behaviour is preserved in all other cases.

    Suggested-by: Borislav Petkov
    Signed-off-by: Punit Agrawal
    Reviewed-by: Borislav Petkov
    Signed-off-by: Rafael J. Wysocki

    Punit Agrawal
     

24 Aug, 2017

1 commit

  • The revision 0x300 generic error data entry is different
    from the old version, but currently iterating through the
    GHES estatus blocks does not take into account this difference.
    This will lead to failure to get the right data entry if GHES
    has revision 0x300 error data entry.

    Update the GHES estatus iteration macro to properly increment using
    acpi_hest_get_next(), and correct the iteration termination condition
    because the status block data length only includes error data
    length.

    Convert the CPER estatus checking and printing iteration logic
    to use same macro.

    Signed-off-by: Dongjiu Geng
    Tested-by: Tyler Baicar
    Reviewed-by: Borislav Petkov
    Signed-off-by: Rafael J. Wysocki

    gengdongjiu
     

18 Aug, 2017

1 commit

  • Runtime GPEs have corresponding _Lxx/_Exx methods and are enabled
    automatically during the initialization of the ACPI subsystem through
    acpi_update_all_gpes() with the assumption that acpi_setup_gpe_for_wake()
    will be called in advance for all of the GPEs pointed to by _PRW
    objects in the namespace that may be affected by acpi_update_all_gpes().
    That is, acpi_ev_initialize_gpe_block() can only be called for a GPE
    block after acpi_setup_gpe_for_wake() has been called for all of the
    _PRW (wakeup) GPEs in it.

    The platform firmware on some systems, however, expects GPEs to be
    enabled before the enumeration of devices which is when
    acpi_setup_gpe_for_wake() is called and that goes against the above
    assumption.

    For this reason, introduce a new flag to be set by
    acpi_ev_initialize_gpe_block() when automatically enabling a GPE
    to indicate to acpi_setup_gpe_for_wake() that it needs to drop the
    reference to the GPE coming from acpi_ev_initialize_gpe_block()
    and modify acpi_setup_gpe_for_wake() accordingly. These changes
    allow acpi_setup_gpe_for_wake() and acpi_ev_initialize_gpe_block()
    to be invoked in any order.

    Signed-off-by: Rafael J. Wysocki
    Tested-by: Mika Westerberg

    Rafael J. Wysocki
     

07 Aug, 2017

1 commit

  • Some devices have limited addressing capabilities and cannot
    reference the whole memory address space while carrying out DMA
    operations (eg some devices with bus address bits range smaller than
    system bus - which prevents them from using bus addresses that are
    otherwise valid for the system).

    The ACPI _DMA object allows bus devices to define the DMA window that is
    actually addressable by devices that sit upstream the bus, therefore
    providing a means to parse and initialize the devices DMA masks and
    addressable DMA range size.

    By relying on the generic ACPI kernel layer to retrieve and parse
    resources, introduce ACPI core code to parse the _DMA object.

    Signed-off-by: Lorenzo Pieralisi
    Tested-by: Nate Watterson
    Signed-off-by: Rafael J. Wysocki

    Lorenzo Pieralisi
     

04 Aug, 2017

7 commits

  • Rafael J. Wysocki
     
  • ACPICA commit 50f61636543a55d143c792a4814da7700a7fafc2

    Version 20170728.

    Link: https://github.com/acpica/acpica/commit/50f61636
    Signed-off-by: Bob Moore
    Signed-off-by: Lv Zheng
    Signed-off-by: Rafael J. Wysocki

    Bob Moore
     
  • ACPICA commit af661c00afac7aa481a961fa48c6540a99ad64a6

    The _DMA object contains a resource template, this change
    adds support for the walk resources function so that ACPI
    devices containing a _DMA object can actually parse it to
    detect DMA ranges for the respective bus.

    Link: https://github.com/acpica/acpica/commit/af661c00
    Signed-off-by: Lorenzo Pieralisi
    Signed-off-by: Bob Moore
    Signed-off-by: Lv Zheng
    Signed-off-by: Rafael J. Wysocki

    Bob Moore
     
  • ACPICA commit 01b8f5a2350b9cc329cd8402ac8faec36fc501f5

    In order to build ACPICA EFI tools with EDK-II on Windows, 64-bit
    multiply/shift supports are also required to be implemented. Otherwise,
    MSVC complains:
    acpidump.lib(utstrtoul64.obj) : error LNK2001: unresolved external symbol __allmul
    acpidump.lib(uthex.obj) : error LNK2001: unresolved external symbol __aullshr

    Note:
    1. This patch also splits _EDK2_EFI from _GNU_EFI as they might have
    different math64 supports.
    2. Support of gcc math64 is not included in this patch.
    3. Support of EDK2 arch independent math64 is done via linking to base_lib.

    This patch fixes this issue. Reported by Shao Ming, fixed by Lv Zheng.

    For Linux kernel, this patch is a functional no-op.

    Link: https://github.com/acpica/acpica/commit/01b8f5a2
    Tested-by: "Shao, Ming"
    Signed-off-by: Lv Zheng
    Signed-off-by: Bob Moore
    Signed-off-by: Rafael J. Wysocki

    Lv Zheng
     
  • ACPICA commit 43ff22215f0fcd8ca80abec5712a07d2cc9a801d

    acpi.h inclusion order need to be changed to build EDK-II ports of
    acpidump on Windows as va_list is used before it's definition in that
    environment. As we only need to ensure order of acenv.h/acenvex.h to
    be pre/post ACPICA type definitions, inclusion order is changed to make
    MSVC builds happy. Lv Zheng.

    Link: https://github.com/acpica/acpica/commit/43ff2221
    Signed-off-by: "Shao, Ming"
    Signed-off-by: Lv Zheng
    Signed-off-by: Shao Ming
    Signed-off-by: Bob Moore
    Signed-off-by: Rafael J. Wysocki

    Shao Ming
     
  • ACPICA commit 5ad4f0b7bf9e7ba175bd320cf7950f3b38799ff3

    ACPI 6.2 adds support for the Software Delegated Exception Interface,
    which is described by "Software Delegated Exception Interface (SDEI)"
    ARM DEN0054A.

    Add the necessary types in the ACPICA header files and support for
    compiling/decompiling the table.

    Link: https://github.com/acpica/acpica/commit/5ad4f0b7
    Signed-off-by: James Morse
    Signed-off-by: Bob Moore
    Signed-off-by: Lv Zheng
    Signed-off-by: Rafael J. Wysocki

    James Morse
     
  • ACPICA commit cf27b3c98883d2a15d932016792fcb8272ace96d

    The following commit introduces definition of access width to ACPICA.
    Commit: 2bece49394872d36bbc5767fd643deac05920c55
    Subject: ACPI: SPCR: Use access width to determine mmio usage

    Actually the access bit width can be calculated via access width. It
    would be better to define a macro calculating bit width rather than
    defining fixed values. This patch thus cleans up the definitions to
    reduce divergences.

    Link: https://github.com/acpica/acpica/commit/cf27b3c9
    Signed-off-by: Lv Zheng
    Signed-off-by: Rafael J. Wysocki

    Lv Zheng
     

01 Aug, 2017

2 commits

  • The acpi_pci_propagate_wakeup() routine is there to handle cases in
    which PCI bridges (or PCIe ports) are expected to signal wakeup
    for devices below them, but currently it doesn't do that correctly.

    The problem is that acpi_pci_propagate_wakeup() uses
    acpi_pm_set_device_wakeup() for bridges and if that routine is
    called for multiple times to disable wakeup for the same device,
    it will disable it on the first invocation and the next calls
    will have no effect (it works analogously when called to enable
    wakeup, but that is not a problem).

    Now, say acpi_pci_propagate_wakeup() has been called for two
    different devices under the same bridge and it has called
    acpi_pm_set_device_wakeup() for that bridge each time. The
    bridge is now enabled to generate wakeup signals. Next,
    suppose that one of the devices below it resumes and
    acpi_pci_propagate_wakeup() is called to disable wakeup for that
    device. It will then call acpi_pm_set_device_wakeup() for the bridge
    and that will effectively disable remote wakeup for all devices under
    it even though some of them may still be suspended and remote wakeup
    may be expected to work for them.

    To address this (arguably theoretical) issue, allow
    wakeup.enable_count under struct acpi_device to grow beyond 1 in
    certain situations. In particular, allow that to happen in
    acpi_pci_propagate_wakeup() when wakeup is enabled or disabled
    for PCI bridges, so that wakeup is actually disabled for the
    bridge when all devices under it resume and not when just one
    of them does that.

    Signed-off-by: Rafael J. Wysocki
    Reviewed-by: Andy Shevchenko
    Reviewed-by: Mika Westerberg
    Acked-by: Bjorn Helgaas

    Rafael J. Wysocki
     
  • To prepare for a subsequent change and make the code somewhat easier
    to follow, do the following in the ACPI device wakeup handling code:

    * Replace wakeup.flags.enabled under struct acpi_device with
    wakeup.enable_count as that will be necessary going forward.

    For now, wakeup.enable_count is not allowed to grow beyond 1,
    so the current behavior is retained.

    * Split acpi_device_wakeup() into acpi_device_wakeup_enable()
    and acpi_device_wakeup_disable() and modify the callers of
    it accordingly.

    * Introduce a new acpi_wakeup_lock mutex to protect the wakeup
    enabling/disabling code from races in case it is executed
    more than once in parallel for the same device (which may
    happen for bridges theoretically).

    Signed-off-by: Rafael J. Wysocki
    Reviewed-by: Mika Westerberg

    Rafael J. Wysocki
     

25 Jul, 2017

1 commit

  • Right now if a file includes acpi_numa.h and they don't happen to include
    linux/numa.h before it, they get the following warning:

    ./include/acpi/acpi_numa.h:9:5: warning: "MAX_NUMNODES" is not defined [-Wundef]
    #if MAX_NUMNODES > 256
    ^~~~~~~~~~~~

    Signed-off-by: Ross Zwisler
    Signed-off-by: Rafael J. Wysocki

    Ross Zwisler
     

22 Jul, 2017

3 commits

  • Constify arguments to is_acpi_node(), is_acpi_device_node(),
    is_acpi_static_node() and acpi_data_node_match(). Make
    to_acpi_device_node() and to_acpi_data_node() macros that can cope with
    const and non-const arguments.

    Signed-off-by: Sakari Ailus
    Signed-off-by: Rafael J. Wysocki

    Sakari Ailus
     
  • Instead of relying on the struct fwnode_handle type field, define
    fwnode_operations structs for all separate types of fwnodes. To find out
    the type, compare to the ops field to relevant ops structs.

    This change has two benefits:

    1. it avoids adding the type field to each and every instance of struct
    fwnode_handle, thus saving memory and

    2. makes the ops field the single factor that defines both the types of
    the fwnode as well as defines the implementation of its operations,
    decreasing the possibility of bugs when developing code dealing with
    fwnode internals.

    Suggested-by: Rob Herring
    Signed-off-by: Sakari Ailus
    Reviewed-by: Mika Westerberg
    Signed-off-by: Rafael J. Wysocki

    Sakari Ailus
     
  • The is_acpi_data_node() function takes a struct fwnode_handle pointer as
    its argument. The validity of the pointer is first checked. Extend the
    check to cover error values as is done by similar is_acpi_node() and
    is_acpi_device_node() functions.

    Signed-off-by: Sakari Ailus
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Rafael J. Wysocki

    Sakari Ailus
     

20 Jul, 2017

6 commits

  • ACPICA commit 7271c1c54c095c06ed9e7d28641f2356da840038

    Version 20170629

    Link: https://github.com/acpica/acpica/commit/7271c1c5
    Signed-off-by: Bob Moore
    Signed-off-by: Lv Zheng
    Signed-off-by: Rafael J. Wysocki

    Bob Moore
     
  • ACPICA commit 8cadc4fb500e2aa52241e367c87a0f95d9760c58

    ARM IORT specification has provision to define Proximity domain
    in SMMUv3 IORT table. Adding required changes to decode
    Proximity domain of SMMUv3 IORT table.

    Link: https://github.com/acpica/acpica/commit/8cadc4fb
    Signed-off-by: Ganapatrao Kulkarni
    Signed-off-by: Bob Moore
    Signed-off-by: Lv Zheng
    Signed-off-by: Rafael J. Wysocki

    Ganapatrao Kulkarni
     
  • ACPICA commit 2dd6c151d5d5e76dacba8f7db9e259fc72982d17
    ACPICA commit ffddee6638aced83be18b8bc88569586c1a43e03

    This patch allows tables not verified in early stage verfied in
    acpi_reallocate_root_table(). This is useful for OSPMs like linux where tables
    cannot be verified in early stage due to early ioremp limitations on some
    architectures. Reported by Hans de Geode, fixed by Lv Zheng.

    Link: https://github.com/acpica/acpica/commit/2dd6c151
    Link: https://github.com/acpica/acpica/commit/ffddee66
    Reported-by: Hans de Goede
    Signed-off-by: Lv Zheng
    Signed-off-by: Bob Moore
    Signed-off-by: Rafael J. Wysocki

    Lv Zheng
     
  • ACPICA commit 3d837b5d4b1033942b4d91c7d3801a09c3157918

    acpi_gbl_verify_table_checksum is used to avoid validating (mapping) an entire
    table in OS boot stage. 2nd "Reload" check in acpi_tb_install_standard_table()
    is prepared for the same purpose. So this patch combines them together
    using a renamed acpi_gbl_enable_table_validation flag. Lv Zheng.

    Link: https://github.com/acpica/acpica/commit/3d837b5d
    Signed-off-by: Lv Zheng
    Signed-off-by: Bob Moore
    Signed-off-by: Rafael J. Wysocki

    Lv Zheng
     
  • ACPICA commit 47538f5f0773c0820d8f552e20f6e77104290c01

    The following commit is not correctly linuxized by its ACPICA form (see
    link #1 for reference):
    Commit: 3d867f6c5fd6535cdeceef3170e5e84e5dd80fc1
    Subject: ACPICA: Use designated initializers
    Thus breaks linuxize process.

    This patch is a linuxized back port result of the upstreamed ACPICA
    commit (see link #2 for reference).

    Link: https://github.com/acpica/acpica/pull/248/ [#1]
    Link: https://github.com/acpica/acpica/commit/47538f5f [#2]
    Signed-off-by: Kees Cook
    Signed-off-by: Bob Moore
    Signed-off-by: Lv Zheng
    Signed-off-by: Rafael J. Wysocki

    Kees Cook
     
  • ACPICA commit d00a4eb86e64bb4fa70f57ab5e5ca0a4ca2ad8ef

    IORT revision C has been published with a number of new SMMU
    implementation identifiers; define them.

    Link: https://github.com/acpica/acpica/commit/d00a4eb8
    Signed-off-by: Robin Murphy
    Signed-off-by: Bob Moore
    Signed-off-by: Lv Zheng
    Signed-off-by: Rafael J. Wysocki

    Robin Murphy
     

11 Jul, 2017

2 commits

  • Pull more ACPI updates from Rafael Wysocki:
    "These fix the ACPI SPCR table handling and add a workaround for APM
    X-Gene 8250 UART on top of that, fix two ACPI hotplug issues related
    to hot-remove failures, add a missing "static" to one function and
    constify some attribute_group structures.

    Specifics:

    - Fix the ACPI code handling the SPCR table to check access width of
    MMIO regions and add a workaround for APM X-Gene 8250 UART to use
    32-bit MMIO accesses with its register (Loc Ho).

    - Fix two ACPI-based hotplug issues related to the handling of
    hot-remove failures on the OS side (Chun-Yi Lee).

    - Constify attribute_group structures in a few places (Arvind Yadav).

    - Make one local function static (Colin Ian King)"

    * tag 'acpi-extra-4.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI / DPTF: constify attribute_group structures
    ACPI / LPSS: constify attribute_group structures
    ACPI: BGRT: constify attribute_group structures
    ACPI / power: constify attribute_group structures
    ACPI / scan: Indicate to platform when hot remove returns busy
    ACPI / bus: handle ACPI hotplug schedule errors completely
    ACPI / osi: Make local function acpi_osi_dmi_linux() static
    ACPI: SPCR: Workaround for APM X-Gene 8250 UART 32-alignment errata
    ACPI: SPCR: Use access width to determine mmio usage

    Linus Torvalds
     
  • * acpi-spcr:
    ACPI: SPCR: Workaround for APM X-Gene 8250 UART 32-alignment errata
    ACPI: SPCR: Use access width to determine mmio usage

    * acpi-osi:
    ACPI / osi: Make local function acpi_osi_dmi_linux() static

    * acpi-bus:
    ACPI / bus: handle ACPI hotplug schedule errors completely

    * acpi-scan:
    ACPI / scan: Indicate to platform when hot remove returns busy

    * acpi-misc:
    ACPI / DPTF: constify attribute_group structures
    ACPI / LPSS: constify attribute_group structures
    ACPI: BGRT: constify attribute_group structures
    ACPI / power: constify attribute_group structures

    Rafael J. Wysocki
     

06 Jul, 2017

1 commit

  • Pull arm64 updates from Will Deacon:

    - RAS reporting via GHES/APEI (ACPI)

    - Indirect ftrace trampolines for modules

    - Improvements to kernel fault reporting

    - Page poisoning

    - Sigframe cleanups and preparation for SVE context

    - Core dump fixes

    - Sparse fixes (mainly relating to endianness)

    - xgene SoC PMU v3 driver

    - Misc cleanups and non-critical fixes

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (75 commits)
    arm64: fix endianness annotation for 'struct jit_ctx' and friends
    arm64: cpuinfo: constify attribute_group structures.
    arm64: ptrace: Fix incorrect get_user() use in compat_vfp_set()
    arm64: ptrace: Remove redundant overrun check from compat_vfp_set()
    arm64: ptrace: Avoid setting compat FP[SC]R to garbage if get_user fails
    arm64: fix endianness annotation for __apply_alternatives()/get_alt_insn()
    arm64: fix endianness annotation in get_kaslr_seed()
    arm64: add missing conversion to __wsum in ip_fast_csum()
    arm64: fix endianness annotation in acpi_parking_protocol.c
    arm64: use readq() instead of readl() to read 64bit entry_point
    arm64: fix endianness annotation for reloc_insn_movw() & reloc_insn_imm()
    arm64: fix endianness annotation for aarch64_insn_write()
    arm64: fix endianness annotation in aarch64_insn_read()
    arm64: fix endianness annotation in call_undef_hook()
    arm64: fix endianness annotation for debug-monitors.c
    ras: mark stub functions as 'inline'
    arm64: pass endianness info to sparse
    arm64: ftrace: fix !CONFIG_ARM64_MODULE_PLTS kernels
    arm64: signal: Allow expansion of the signal frame
    acpi: apei: check for pending errors when probing GHES entries
    ...

    Linus Torvalds
     

05 Jul, 2017

2 commits

  • Pull ACPI updates from Rafael Wysocki:
    "These mostly update the ACPICA code in the kernel to upstream revision
    20170531 which covers all of the new material from ACPI 6.2, including
    new tables (WSMT, HMAT, PPTT), new subtables and definition changes
    for some existing tables (BGRT, HEST, SRAT, TPM2, PCCT), new resource
    descriptor macros for pin control, support for new predefined methods
    (_LSI, _LSR, _LSW, _HMA), fixes and cleanups.

    On top of that, an additional ACPICA change from Kees (which also is
    upstream already) switches all of the definitions of function pointer
    structures in ACPICA to use designated initializers so as to make the
    structure layout randomization GCC plugin work with it.

    The rest is a few fixes and cleanups in the EC driver, an xpower PMIC
    driver update, a new backlight blacklist entry, and update of the
    tables configfs interface and a messages formatting cleanup.

    Specifics:

    - Update the ACPICA code in the kernel to upstream revision revision
    20170531 (which covers all of the new material from ACPI 6.2)
    including:
    * Support for the PinFunction(), PinConfig(), PinGroup(),
    PinGroupFunction(), and PinGroupConfig() resource descriptors
    (Mika Westerberg).
    * Support for new subtables in HEST and SRAT, new notify value for
    HEST, header support for TPM2 table changes, and BGRT Status
    field update (Bob Moore).
    * Support for new PCCT subtables (David Box).
    * Support for _LSI, _LSR, _LSW, and _HMA as predefined methods
    (Erik Schmauss).
    * Support for the new WSMT, HMAT, and PPTT tables (Lv Zheng).
    * New UUID values for Processor Properties (Bob Moore).
    * New notify values for memory attributes and graceful shutdown
    (Bob Moore).
    * Fix related to the PCAT_COMPAT MADT flag (Janosch Hildebrand).
    * Resource to AML conversion fix for resources containing GPIOs
    (Mika Westerberg).
    * Disassembler-related updates (Bob Moore, David Box, Erik
    Schmauss).
    * Assorted fixes and cleanups (Bob Moore, Erik Schmauss, Lv Zheng,
    Cao Jin).

    - Modify ACPICA to always use designated initializers for function
    pointer structures to make the structure layout randomization GCC
    plugin work with it (Kees Cook).

    - Update the tables configfs interface to unload SSDTs on configfs
    entry removal (Jan Kiszka).

    - Add support for the GPI1 regulator to the xpower PMIC Operation
    Region handler (Hans de Goede).

    - Fix ACPI EC issues related to conflicting EC definitions in the
    ECDT and in the ACPI namespace (Lv Zheng, Carlo Caione, Chris
    Chiu).

    - Fix an interrupt storm issue in the EC driver and make its debug
    output work with dynamic debug as expected (Lv Zheng).

    - Add ACPI backlight quirk for Dell Precision 7510 (Shih-Yuan Lee).

    - Fix whitespace in pr_fmt() to align log entries properly in some
    places in the ACPI subsystem (Vincent Legoll)"

    * tag 'acpi-4.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (63 commits)
    ACPI / EC: Add quirk for GL720VMK
    ACPI / EC: Fix media keys not working problem on some Asus laptops
    ACPI / EC: Add support to skip boot stage DSDT probe
    ACPI / EC: Enhance boot EC sanity check
    ACPI / video: Add quirks for the Dell Precision 7510
    ACPI: EC: Fix EC command visibility for dynamic debug
    ACPI: EC: Fix an EC event IRQ storming issue
    ACPICA: Use designated initializers
    ACPICA: Update version to 20170531
    ACPICA: Update a couple of debug output messages
    ACPICA: acpiexec: enhance local signal handler
    ACPICA: Simplify output for the ACPI Debug Object
    ACPICA: Unix application OSL: Correctly handle control-c (EINTR)
    ACPICA: Improvements for debug output only
    ACPICA: Disassembler: allow conflicting external declarations to be emitted.
    ACPICA: Disassembler: add external op to namespace on first pass
    ACPICA: Disassembler: prevent external op's from opening a new scope
    ACPICA: Changed Gbl_disasm_flag to acpi_gbl_disasm_flag
    ACPICA: Changing External to a named object
    ACPICA: Update two error messages to emit control method name
    ...

    Linus Torvalds
     
  • The current SPCR code does not check the access width of the MMIO, and
    uses a default of 8bit register accesses. This prevents devices that
    only do 16 or 32bit register accesses from working. By simply checking
    this field and setting the MMIO string appropriately, this issue can be
    corrected. To prevent any legacy issues, the code will default to 8bit
    accesses if the value is anything but 16 or 32.

    Signed-off-by: Jon Mason
    Signed-off-by: Loc Ho
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: Rafael J. Wysocki

    Loc Ho
     

03 Jul, 2017

3 commits

  • * acpica: (53 commits)
    ACPICA: Use designated initializers
    ACPICA: Update version to 20170531
    ACPICA: Update a couple of debug output messages
    ACPICA: acpiexec: enhance local signal handler
    ACPICA: Simplify output for the ACPI Debug Object
    ACPICA: Unix application OSL: Correctly handle control-c (EINTR)
    ACPICA: Improvements for debug output only
    ACPICA: Disassembler: allow conflicting external declarations to be emitted.
    ACPICA: Disassembler: add external op to namespace on first pass
    ACPICA: Disassembler: prevent external op's from opening a new scope
    ACPICA: Changed Gbl_disasm_flag to acpi_gbl_disasm_flag
    ACPICA: Changing External to a named object
    ACPICA: Update two error messages to emit control method name
    ACPICA: Fix for Device/Thermal objects with ObjectType and DerefOf
    ACPICA: Comment update: spelling/format. No functional change
    ACPICA: Update comments, no functional change
    ACPICA: Split resource descriptor decode strings to a new file
    ACPICA: Remove extraneous status check
    ACPICA: Export the public mutex interfaces
    ACPICA: Disassembler: Abort on an invalid/unknown AML opcode
    ...

    Rafael J. Wysocki
     
  • * acpi-pm:
    PM / core: Drop run_wake flag from struct dev_pm_info
    PCI / PM: Simplify device wakeup settings code
    PCI / PM: Drop pme_interrupt flag from struct pci_dev
    ACPI / PM: Consolidate device wakeup settings code
    ACPI / PM: Drop run_wake from struct acpi_device_wakeup_flags
    ACPI / sleep: EC-based wakeup from suspend-to-idle on recent systems
    platform: x86: intel-hid: Wake up the system from suspend-to-idle
    platform: x86: intel-vbtn: Wake up the system from suspend-to-idle
    ACPI / PM: Ignore spurious SCI wakeups from suspend-to-idle
    platform/x86: Add driver for ACPI INT0002 Virtual GPIO device
    PCI / PM: Restore PME Enable if skipping wakeup setup
    PM / sleep: Print timing information if debug is enabled
    ACPI / PM: Clean up device wakeup enable/disable code
    ACPI / PM: Change log level of wakeup-related message
    USB / PCI / PM: Allow the PCI core to do the resume cleanup
    ACPI / PM: Run wakeup notify handlers synchronously

    Conflicts:
    drivers/base/power/main.c

    Rafael J. Wysocki
     
  • Merge 'uuid-types' from git://git.infradead.org/users/hch/uuid.git

    Rafael J. Wysocki
     

28 Jun, 2017

1 commit

  • The pme_interrupt flag in struct pci_dev is set when PMEs generated
    by the device are going to be signaled via root port PME interrupts.

    Ironically enough, that information is only used by the code setting
    up device wakeup through ACPI which returns as soon as it sees the
    pme_interrupt flag set while setting up "remote runtime wakeup".
    That is questionable, however, because in theory there may be PCIe
    devices using out-of-band PME signaling under root ports handled
    by the native PME code or devices requiring wakeup power setup to be
    carried out by AML. For such devices, ACPI wakeup should be invoked
    regardless of whether or not native PME signaling is used in general.

    For this reason, drop the pme_interrupt flag and rework the code
    using it which then allows the ACPI-based device wakeup handling
    in PCI to be consolidated to use one code path for both "runtime
    remote wakeup" and system wakeup (from sleep states).

    Signed-off-by: Rafael J. Wysocki
    Reviewed-by: Mika Westerberg
    Acked-by: Bjorn Helgaas

    Rafael J. Wysocki