20 Jan, 2021

1 commit


26 Oct, 2020

1 commit

  • Use a more generic form for __section that requires quotes to avoid
    complications with clang and gcc differences.

    Remove the quote operator # from compiler_attributes.h __section macro.

    Convert all unquoted __section(foo) uses to quoted __section("foo").
    Also convert __attribute__((section("foo"))) uses to __section("foo")
    even if the __attribute__ has multiple list entry forms.

    Conversion done using the script at:

    https://lore.kernel.org/lkml/75393e5ddc272dc7403de74d645e6c6e0f4e70eb.camel@perches.com/2-convert_section.pl

    Signed-off-by: Joe Perches
    Reviewed-by: Nick Desaulniers
    Reviewed-by: Miguel Ojeda
    Signed-off-by: Linus Torvalds

    Joe Perches
     

15 Oct, 2020

1 commit

  • Pull ACPI updates from Rafael Wysocki:
    "These add support for generic initiator-only proximity domains to the
    ACPI NUMA code and the architectures using it, clean up some
    non-ACPICA code referring to debug facilities from ACPICA, reduce the
    overhead related to accessing GPE registers, add a new DPTF (Dynamic
    Power and Thermal Framework) participant driver, update the ACPICA
    code in the kernel to upstream revision 20200925, add a new ACPI
    backlight whitelist entry, fix a few assorted issues and clean up some
    code.

    Specifics:

    - Add support for generic initiator-only proximity domains to the
    ACPI NUMA code and the architectures using it (Jonathan Cameron)

    - Clean up some non-ACPICA code referring to debug facilities from
    ACPICA that are not actually used in there (Hanjun Guo)

    - Add new DPTF driver for the PCH FIVR participant (Srinivas
    Pandruvada)

    - Reduce overhead related to accessing GPE registers in ACPICA and
    the OS interface layer and make it possible to access GPE registers
    using logical addresses if they are memory-mapped (Rafael Wysocki)

    - Update the ACPICA code in the kernel to upstream revision 20200925
    including changes as follows:
    + Add predefined names from the SMBus sepcification (Bob Moore)
    + Update acpi_help UUID list (Bob Moore)
    + Return exceptions for string-to-integer conversions in iASL (Bob
    Moore)
    + Add a new "ALL " debugger command (Bob Moore)
    + Add support for 64 bit risc-v compilation (Colin Ian King)
    + Do assorted cleanups (Bob Moore, Colin Ian King, Randy Dunlap)

    - Add new ACPI backlight whitelist entry for HP 635 Notebook (Alex
    Hung)

    - Move TPS68470 OpRegion driver to drivers/acpi/pmic/ and split out
    Kconfig and Makefile specific for ACPI PMIC (Andy Shevchenko)

    - Clean up the ACPI SoC driver for AMD SoCs (Hanjun Guo)

    - Add missing config_item_put() to fix refcount leak (Hanjun Guo)

    - Drop lefrover field from struct acpi_memory_device (Hanjun Guo)

    - Make the ACPI extlog driver check for RDMSR failures (Ben
    Hutchings)

    - Fix handling of lid state changes in the ACPI button driver when
    input device is closed (Dmitry Torokhov)

    - Fix several assorted build issues (Barnabás Pőcze, John Garry,
    Nathan Chancellor, Tian Tao)

    - Drop unused inline functions and reduce code duplication by using
    kobj_to_dev() in the NFIT parsing code (YueHaibing, Wang Qing)

    - Serialize tools/power/acpi Makefile (Thomas Renninger)"

    * tag 'acpi-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (64 commits)
    ACPICA: Update version to 20200925 Version 20200925
    ACPICA: Remove unnecessary semicolon
    ACPICA: Debugger: Add a new command: "ALL "
    ACPICA: iASL: Return exceptions for string-to-integer conversions
    ACPICA: acpi_help: Update UUID list
    ACPICA: Add predefined names found in the SMBus sepcification
    ACPICA: Tree-wide: fix various typos and spelling mistakes
    ACPICA: Drop the repeated word "an" in a comment
    ACPICA: Add support for 64 bit risc-v compilation
    ACPI: button: fix handling lid state changes when input device closed
    tools/power/acpi: Serialize Makefile
    ACPI: scan: Replace ACPI_DEBUG_PRINT() with pr_debug()
    ACPI: memhotplug: Remove 'state' from struct acpi_memory_device
    ACPI / extlog: Check for RDMSR failure
    ACPI: Make acpi_evaluate_dsm() prototype consistent
    docs: mm: numaperf.rst Add brief description for access class 1.
    node: Add access1 class to represent CPU to memory characteristics
    ACPI: HMAT: Fix handling of changes from ACPI 6.2 to ACPI 6.3
    ACPI: Let ACPI know we support Generic Initiator Affinity Structures
    x86: Support Generic Initiator only proximity domains
    ...

    Linus Torvalds
     

14 Oct, 2020

1 commit

  • Disable parsing of the HMAT for debug, to workaround broken platform
    instances, or cases where it is otherwise not wanted.

    [rdunlap@infradead.org: fix build when CONFIG_ACPI is not set]
    Link: https://lkml.kernel.org/r/70e5ee34-9809-a997-7b49-499e4be61307@infradead.org

    Signed-off-by: Dan Williams
    Signed-off-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Cc: Dave Hansen
    Cc: Andy Lutomirski
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: Borislav Petkov
    Cc: "H. Peter Anvin"
    Cc: Ard Biesheuvel
    Cc: Ard Biesheuvel
    Cc: Benjamin Herrenschmidt
    Cc: Ben Skeggs
    Cc: Brice Goglin
    Cc: Catalin Marinas
    Cc: Daniel Vetter
    Cc: Dave Jiang
    Cc: David Airlie
    Cc: David Hildenbrand
    Cc: Greg Kroah-Hartman
    Cc: Ira Weiny
    Cc: Jason Gunthorpe
    Cc: Jeff Moyer
    Cc: Jia He
    Cc: Joao Martins
    Cc: Jonathan Cameron
    Cc: Michael Ellerman
    Cc: Mike Rapoport
    Cc: Paul Mackerras
    Cc: Pavel Tatashin
    Cc: "Rafael J. Wysocki"
    Cc: Tom Lendacky
    Cc: Vishal Verma
    Cc: Wei Yang
    Cc: Will Deacon
    Cc: Bjorn Helgaas
    Cc: Boris Ostrovsky
    Cc: Hulk Robot
    Cc: Jason Yan
    Cc: "Jérôme Glisse"
    Cc: Juergen Gross
    Cc: kernel test robot
    Cc: Randy Dunlap
    Cc: Stefano Stabellini
    Cc: Vivek Goyal
    Link: https://lkml.kernel.org/r/159643095540.4062302.732962081968036212.stgit@dwillia2-desk3.amr.corp.intel.com
    Signed-off-by: Linus Torvalds

    Dan Williams
     

13 Oct, 2020

2 commits

  • * acpi-misc:
    ACPI: Make acpi_evaluate_dsm() prototype consistent
    ACPI: wakeup: Remove dead ACPICA debug code
    ACPI: video: Remove leftover ACPICA debug code
    ACPI: tiny-power-button: Remove dead ACPICA debug code
    ACPI: processor: Remove dead ACPICA debug code
    ACPI: proc: Remove dead ACPICA debug code
    ACPI: PCI: Remove unused ACPICA debug code
    ACPI: event: Remove leftover ACPICA debug code
    ACPI: dock: Remove dead ACPICA debug code
    ACPI: debugfs: Remove dead ACPICA debug code
    ACPI: custom_method: Remove dead ACPICA debug code
    ACPI: container: Remove leftover ACPICA debug functionality
    ACPI: platform: Remove ACPI_MODULE_NAME()
    ACPI: memhotplug: Remove leftover ACPICA debug functionality
    ACPI: LPSS: Remove ACPI_MODULE_NAME()
    ACPI: cmos_rtc: Remove leftover ACPI_MODULE_NAME()
    ACPI: Remove three unused inline functions

    Rafael J. Wysocki
     
  • * acpi-numa:
    docs: mm: numaperf.rst Add brief description for access class 1.
    node: Add access1 class to represent CPU to memory characteristics
    ACPI: HMAT: Fix handling of changes from ACPI 6.2 to ACPI 6.3
    ACPI: Let ACPI know we support Generic Initiator Affinity Structures
    x86: Support Generic Initiator only proximity domains
    ACPI: Support Generic Initiator only domains
    ACPI / NUMA: Add stub function for pxm_to_node()
    irq-chip/gic-v3-its: Fix crash if ITS is in a proximity domain without processor or memory
    ACPI: Remove side effect of partly creating a node in acpi_get_node()
    ACPI: Rename acpi_map_pxm_to_online_node() to pxm_to_online_node()
    ACPI: Remove side effect of partly creating a node in acpi_map_pxm_to_online_node()
    ACPI: Do not create new NUMA domains from ACPI static tables that are not SRAT
    ACPI: Add out of bounds and numa_off protections to pxm_to_node()

    Rafael J. Wysocki
     

03 Oct, 2020

2 commits

  • When compiling a driver which includes both include/linux/acpi.h and
    include/acpi/acpi_bus.h for when CONFIG_ACPI=n for i386, I get this:

    /include/acpi/acpi_bus.h:53:20: error: conflicting types for ‘acpi_evaluate_dsm’
    union acpi_object *acpi_evaluate_dsm(acpi_handle handle, const guid_t *guid,
    ^~~~~~~~~~~~~~~~~
    In file included from drivers/scsi/hisi_sas/hisi_sas.h:10:0,
    from drivers/scsi/hisi_sas/hisi_sas_main.c:7:
    ./include/linux/acpi.h:866:34: note: previous definition of ‘acpi_evaluate_dsm’ was here
    static inline union acpi_object *acpi_evaluate_dsm(acpi_handle handle,
    ^~~~~~~~~~~~~~~~~
    Fix by making prototype in include/linux/acpi.h consistent.

    Signed-off-by: John Garry
    [ rjw: Subject edit ]
    Signed-off-by: Rafael J. Wysocki

    John Garry
     
  • Until we tell ACPI that we support generic initiators, it will have
    to operate in fall back domain mode and all _PXM entries should
    be on existing non GI domains.

    This patch sets the relevant OSC bit to make that happen.

    Signed-off-by: Jonathan Cameron
    Signed-off-by: Rafael J. Wysocki

    Jonathan Cameron
     

01 Oct, 2020

1 commit

  • Jonathan reports that the strict policy for memory mapped by the
    ACPI core breaks the use case of passing ACPI table overrides via
    initramfs. This is due to the fact that the memory type used for
    loading the initramfs in memory is not recognized as a memory type
    that is typically used by firmware to pass firmware tables.

    Since the purpose of the strict policy is to ensure that no AML or
    other ACPI code can manipulate any memory that is used by the kernel
    to keep its internal state or the state of user tasks, we can relax
    the permission check, and allow mappings of memory that is reserved
    and marked as NOMAP via memblock, and therefore not covered by the
    linear mapping to begin with.

    Fixes: 1583052d111f ("arm64/acpi: disallow AML memory opregions to access kernel memory")
    Fixes: 325f5585ec36 ("arm64/acpi: disallow writeable AML opregion mapping for EFI code regions")
    Reported-by: Jonathan Cameron
    Signed-off-by: Ard Biesheuvel
    Tested-by: Jonathan Cameron
    Cc: Sudeep Holla
    Cc: Lorenzo Pieralisi
    Link: https://lore.kernel.org/r/20200929132522.18067-1-ardb@kernel.org
    Signed-off-by: Catalin Marinas

    Ard Biesheuvel
     

25 Sep, 2020

1 commit


24 Sep, 2020

2 commits

  • As this function is no longer allowed to create new mappings
    let us rename it to reflect this.

    Note all nodes should already exist before any of the users
    of this function are called.

    Signed-off-by: Jonathan Cameron
    Reviewed-by: Hanjun Guo
    Signed-off-by: Rafael J. Wysocki

    Jonathan Cameron
     
  • While this function will only return an online node, it can have the side
    effect of partially creating a new node. The existing comments suggest this
    is intentional, but the usecases of this function are related to NFIT and
    HMAT parsing, neither of which should be able to define new nodes.

    One route by which the existing behaviour would cause a crash is to have a
    _PXM entry in ACPI DSDT attempt to place a device within this partly
    created proximity domain. A subsequent call to devm_kzalloc() or similar
    would result in an attempt to allocate memory on a node for which zone
    lists have not been set up and a NULL pointer dereference.

    Prevent such cases by switching to pxm_to_node() within
    acpi_map_pxm_to_online_node() which cannot cause a new node to be
    partly created. If one would previously have been created we now
    return NO_NUMA_NODE. Documentation updated to reflect this change.

    Signed-off-by: Jonathan Cameron
    Reviewed-by: Hanjun Guo
    Signed-off-by: Rafael J. Wysocki

    Jonathan Cameron
     

05 Aug, 2020

1 commit

  • Pull irq updates from Thomas Gleixner:
    "The usual boring updates from the interrupt subsystem:

    - Infrastructure to allow building irqchip drivers as modules

    - Consolidation of irqchip ACPI probing

    - Removal of the EOI-preflow interrupt handler which was required for
    SPARC support and became obsolete after SPARC was converted to use
    sparse interrupts.

    - Cleanups, fixes and improvements all over the place"

    * tag 'irq-core-2020-08-04' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (51 commits)
    irqchip/loongson-pch-pic: Fix the misused irq flow handler
    irqchip/loongson-htvec: Support 8 groups of HT vectors
    irqchip/loongson-liointc: Fix misuse of gc->mask_cache
    dt-bindings: interrupt-controller: Update Loongson HTVEC description
    irqchip/imx-intmux: Fix irqdata regs save in imx_intmux_runtime_suspend()
    irqchip/imx-intmux: Implement intmux runtime power management
    irqchip/gic-v4.1: Use GFP_ATOMIC flag in allocate_vpe_l1_table()
    irqchip: Fix IRQCHIP_PLATFORM_DRIVER_* compilation by including module.h
    irqchip/stm32-exti: Map direct event to irq parent
    irqchip/mtk-cirq: Convert to a platform driver
    irqchip/mtk-sysirq: Convert to a platform driver
    irqchip/qcom-pdc: Switch to using IRQCHIP_PLATFORM_DRIVER helper macros
    irqchip: Add IRQCHIP_PLATFORM_DRIVER_BEGIN/END and IRQCHIP_MATCH helper macros
    irqchip: irq-bcm2836.h: drop a duplicated word
    irqchip/gic-v4.1: Ensure accessing the correct RD when writing INVALLR
    irqchip/irq-bcm7038-l1: Guard uses of cpu_logical_map
    irqchip/gic-v3: Remove unused register definition
    irqchip/qcom-pdc: Allow QCOM_PDC to be loadable as a permanent module
    genirq: Export irq_chip_retrigger_hierarchy and irq_chip_set_vcpu_affinity_parent
    irqdomain: Export irq_domain_update_bus_token
    ...

    Linus Torvalds
     

28 Jul, 2020

1 commit

  • Some HW devices are created as child devices of proprietary busses,
    that have a bus specific policy defining how the child devices
    wires representing the devices ID are translated into IOMMU and
    IRQ controllers device IDs.

    Current IORT code provides translations for:

    - PCI devices, where the device ID is well identified at bus level
    as the requester ID (RID)
    - Platform devices that are endpoint devices where the device ID is
    retrieved from the ACPI object IORT mappings (Named components single
    mappings). A platform device is represented in IORT as a named
    component node

    For devices that are child devices of proprietary busses the IORT
    firmware represents the bus node as a named component node in IORT
    and it is up to that named component node to define in/out bus
    specific ID translations for the bus child devices that are
    allocated and created in a bus specific manner.

    In order to make IORT ID translations available for proprietary
    bus child devices, the current ACPI (and IORT) code must be
    augmented to provide an additional ID parameter to acpi_dma_configure()
    representing the child devices input ID. This ID is bus specific
    and it is retrieved in bus specific code.

    By adding an ID parameter to acpi_dma_configure(), the IORT
    code can map the child device ID to an IOMMU stream ID through
    the IORT named component representing the bus in/out ID mappings.

    Signed-off-by: Lorenzo Pieralisi
    Cc: Will Deacon
    Cc: Hanjun Guo
    Cc: Sudeep Holla
    Cc: Robin Murphy
    Cc: "Rafael J. Wysocki"
    Link: https://lore.kernel.org/r/20200619082013.13661-6-lorenzo.pieralisi@arm.com
    Signed-off-by: Catalin Marinas

    Lorenzo Pieralisi
     

27 Jun, 2020

2 commits

  • Remove the function cast in the ACPI_DECLARE_PROBE_ENTRY macro to ensure
    that the functions passed as a last parameter to this macro have the
    right prototype.

    This is an effort to enable -Wcast-function-type in the top-level Makefile
    to support Control Flow Integrity builds.

    Suggested-by: Marc Zyngier
    Signed-off-by: Oscar Carter
    Signed-off-by: Marc Zyngier
    Acked-by: Rafael J. Wysocki
    Link: https://lore.kernel.org/r/20200530143430.5203-4-oscar.carter@gmx.com

    Oscar Carter
     
  • In an effort to enable -Wcast-function-type in the top-level Makefile to
    support Control Flow Integrity builds, there are the need to remove all
    the function callback casts.

    To do this, create a new macro called ACPI_DECLARE_SUBTABLE_PROBE_ENTRY
    to initialize the acpi_probe_entry struct using the probe_subtbl field
    instead of the probe_table field. This is a previous work to be able to
    modify the IRQCHIP_ACPI_DECLARE macro to use this new defined macro.

    Even though these two commented fields are part of a union, this is
    necessary to avoid function cast mismatches. That is, due to the
    IRQCHIP_ACPI_DECLARE invocations use as last parameter a function with
    the protoype "int (*func)(struct acpi_subtable_header *, const unsigned
    long)" it's necessary that this macro initialize the probe_subtbl field
    of the acpi_probe_entry struct and not the probe_table field.

    Co-developed-by: Marc Zyngier
    Signed-off-by: Marc Zyngier
    Signed-off-by: Oscar Carter
    Acked-by: Rafael J. Wysocki
    Link: https://lore.kernel.org/r/20200530143430.5203-2-oscar.carter@gmx.com

    Oscar Carter
     

09 Apr, 2020

1 commit

  • Pull libnvdimm and dax updates from Dan Williams:
    "There were multiple touches outside of drivers/nvdimm/ this round to
    add cross arch compatibility to the devm_memremap_pages() interface,
    enhance numa information for persistent memory ranges, and add a
    zero_page_range() dax operation.

    This cycle I switched from the patchwork api to Konstantin's b4 script
    for collecting tags (from x86, PowerPC, filesystem, and device-mapper
    folks), and everything looks to have gone ok there. This has all
    appeared in -next with no reported issues.

    Summary:

    - Add support for region alignment configuration and enforcement to
    fix compatibility across architectures and PowerPC page size
    configurations.

    - Introduce 'zero_page_range' as a dax operation. This facilitates
    filesystem-dax operation without a block-device.

    - Introduce phys_to_target_node() to facilitate drivers that want to
    know resulting numa node if a given reserved address range was
    onlined.

    - Advertise a persistence-domain for of_pmem and papr_scm. The
    persistence domain indicates where cpu-store cycles need to reach
    in the platform-memory subsystem before the platform will consider
    them power-fail protected.

    - Promote numa_map_to_online_node() to a cross-kernel generic
    facility.

    - Save x86 numa information to allow for node-id lookups for reserved
    memory ranges, deploy that capability for the e820-pmem driver.

    - Pick up some miscellaneous minor fixes, that missed v5.6-final,
    including a some smatch reports in the ioctl path and some unit
    test compilation fixups.

    - Fixup some flexible-array declarations"

    * tag 'libnvdimm-for-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm: (29 commits)
    dax: Move mandatory ->zero_page_range() check in alloc_dax()
    dax,iomap: Add helper dax_iomap_zero() to zero a range
    dax: Use new dax zero page method for zeroing a page
    dm,dax: Add dax zero_page_range operation
    s390,dcssblk,dax: Add dax zero_page_range operation to dcssblk driver
    dax, pmem: Add a dax operation zero_page_range
    pmem: Add functions for reading/writing page to/from pmem
    libnvdimm: Update persistence domain value for of_pmem and papr_scm device
    tools/test/nvdimm: Fix out of tree build
    libnvdimm/region: Fix build error
    libnvdimm/region: Replace zero-length array with flexible-array member
    libnvdimm/label: Replace zero-length array with flexible-array member
    ACPI: NFIT: Replace zero-length array with flexible-array member
    libnvdimm/region: Introduce an 'align' attribute
    libnvdimm/region: Introduce NDD_LABELING
    libnvdimm/namespace: Enforce memremap_compat_align()
    libnvdimm/pfn: Prevent raw mode fallback if pfn-infoblock valid
    libnvdimm: Out of bounds read in __nd_ioctl()
    acpi/nfit: improve bounds checking for 'func'
    mm/memremap_pages: Introduce memremap_compat_align()
    ...

    Linus Torvalds
     

07 Apr, 2020

1 commit

  • Pull more power management updates from Rafael Wysocki:
    "Additional power management updates.

    These fix a corner-case suspend-to-idle wakeup issue on systems where
    the ACPI SCI is shared with another wakeup source, add a kernel
    command line option to set pm_debug_messages via the kernel command
    line, add a document desctibing system-wide suspend and resume code
    flows, modify cpufreq Kconfig to choose schedutil as the preferred
    governor by default in a couple of cases and do some assorted
    cleanups.

    Specifics:

    - Fix corner-case suspend-to-idle wakeup issue on systems where the
    ACPI SCI is shared with another wakeup source (Hans de Goede).

    - Add document describing system-wide suspend and resume code flows
    to the admin guide (Rafael Wysocki).

    - Add kernel command line option to set pm_debug_messages (Chen Yu).

    - Choose schedutil as the preferred scaling governor by default on
    ARM big.LITTLE systems and on x86 systems using the intel_pstate
    driver in the passive mode (Linus Walleij, Rafael Wysocki).

    - Drop racy and redundant checks from the PM core's device_prepare()
    routine (Rafael Wysocki).

    - Make resume from hibernation take the hibernation_restore() return
    value into account (Dexuan Cui)"

    * tag 'pm-5.7-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    platform/x86: intel_int0002_vgpio: Use acpi_register_wakeup_handler()
    ACPI: PM: Add acpi_[un]register_wakeup_handler()
    Documentation: PM: sleep: Document system-wide suspend code flows
    cpufreq: Select schedutil when using big.LITTLE
    PM: sleep: Add pm_debug_messages kernel command line option
    PM: sleep: core: Drop racy and redundant checks from device_prepare()
    PM: hibernate: Propagate the return value of hibernation_restore()
    cpufreq: intel_pstate: Select schedutil as the default governor

    Linus Torvalds
     

05 Apr, 2020

1 commit

  • Since commit fdde0ff8590b ("ACPI: PM: s2idle: Prevent spurious SCIs from
    waking up the system") the SCI triggering without there being a wakeup
    cause recognized by the ACPI sleep code will no longer wakeup the system.

    This works as intended, but this is a problem for devices where the SCI
    is shared with another device which is also a wakeup source.

    In the past these, from the pov of the ACPI sleep code, spurious SCIs
    would still cause a wakeup so the wakeup from the device sharing the
    interrupt would actually wakeup the system. This now no longer works.

    This is a problem on e.g. Bay Trail-T and Cherry Trail devices where
    some peripherals (typically the XHCI controller) can signal a
    Power Management Event (PME) to the Power Management Controller (PMC)
    to wakeup the system, this uses the same interrupt as the SCI.
    These wakeups are handled through a special INT0002 ACPI device which
    checks for events in the GPE0a_STS for this and takes care of acking
    the PME so that the shared interrupt stops triggering.

    The change to the ACPI sleep code to ignore the spurious SCI, causes
    the system to no longer wakeup on these PME events. To make things
    worse this means that the INT0002 device driver interrupt handler will
    no longer run, causing the PME to not get cleared and resulting in the
    system hanging. Trying to wakeup the system after such a PME through e.g.
    the power button no longer works.

    Add an acpi_register_wakeup_handler() function which registers
    a handler to be called from acpi_s2idle_wake() and when the handler
    returns true, return true from acpi_s2idle_wake().

    The INT0002 driver will use this mechanism to check the GPE0a_STS
    register from acpi_s2idle_wake() and to tell the system to wakeup
    if a PME is signaled in the register.

    Fixes: fdde0ff8590b ("ACPI: PM: s2idle: Prevent spurious SCIs from waking up the system")
    Cc: 5.4+ # 5.4+
    Signed-off-by: Hans de Goede
    Signed-off-by: Rafael J. Wysocki

    Hans de Goede
     

29 Mar, 2020

1 commit

  • Error Disconnect Recover (EDR) is a feature that allows ACPI firmware to
    notify OSPM that a device has been disconnected due to an error condition
    (ACPI v6.3, sec 5.6.6). OSPM advertises its support for EDR on PCI devices
    via _OSC (see [1], sec 4.5.1, table 4-4). The OSPM EDR notify handler
    should invalidate software state associated with disconnected devices and
    may attempt to recover them. OSPM communicates the status of recovery to
    the firmware via _OST (sec 6.3.5.2).

    For PCIe, firmware may use Downstream Port Containment (DPC) to support
    EDR. Per [1], sec 4.5.1, table 4-6, even if firmware has retained control
    of DPC, OSPM may read/write DPC control and status registers during the EDR
    notification processing window, i.e., from the time it receives an EDR
    notification until it clears the DPC Trigger Status.

    Note that per [1], sec 4.5.1 and 4.5.2.4,

    1. If the OS supports EDR, it should advertise that to firmware by
    setting OSC_PCI_EDR_SUPPORT in _OSC Support.

    2. If the OS sets OSC_PCI_EXPRESS_DPC_CONTROL in _OSC Control to request
    control of the DPC capability, it must also set OSC_PCI_EDR_SUPPORT in
    _OSC Support.

    Add an EDR notify handler to attempt recovery.

    [1] Downstream Port Containment Related Enhancements ECN, Jan 28, 2019,
    affecting PCI Firmware Specification, Rev. 3.2
    https://members.pcisig.com/wg/PCI-SIG/document/12888

    [bhelgaas: squash add/enable patches into one]
    Link: https://lore.kernel.org/r/90f91fe6d25c13f9d2255d2ce97ca15be307e1bb.1585000084.git.sathyanarayanan.kuppuswamy@linux.intel.com
    Signed-off-by: Kuppuswamy Sathyanarayanan
    Signed-off-by: Bjorn Helgaas
    Cc: "Rafael J. Wysocki"
    Cc: Len Brown

    Kuppuswamy Sathyanarayanan
     

18 Feb, 2020

1 commit

  • The acpi_map_pxm_to_online_node() helper is used to find the closest
    online node to a given proximity domain. This is used to map devices in
    a proximity domain with no online memory or cpus to the closest online
    node and populate a device's 'numa_node' property. The numa_node
    property allows applications to be migrated "close" to a resource.

    In preparation for providing a generic facility to optionally map an
    address range to its closest online node, or the node the range would
    represent were it to be onlined (target_node), up-level the core of
    acpi_map_pxm_to_online_node() to a generic mm/numa helper.

    Cc: Michal Hocko
    Acked-by: Rafael J. Wysocki
    Reviewed-by: Ingo Molnar
    Signed-off-by: Dan Williams
    Link: https://lore.kernel.org/r/158188324802.894464.13128795207831894206.stgit@dwillia2-desk3.amr.corp.intel.com

    Dan Williams
     

27 Dec, 2019

1 commit

  • The intel_idle driver will be modified to use ACPI _CST subsequently
    and it will need to call acpi_processor_evaluate_cst(), so move that
    function to acpi_processor.c so that it is always present (which is
    required by intel_idle) and export it to modules to allow the ACPI
    processor driver (which is modular) to call it.

    No intentional functional impact.

    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     

16 Dec, 2019

1 commit

  • The intel_idle driver will be modified to use ACPI _CST subsequently
    and it will need to notify the platform firmware of that if
    acpi_gbl_FADT.cst_control is set, so add a routine for this purpose,
    acpi_processor_claim_cst_control(), to acpi_processor.c (so that it
    is always present which is required by intel_idle) and export it
    to allow the ACPI processor driver (which is modular) to call it.

    No intentional functional impact.

    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     

15 Oct, 2019

1 commit


28 Sep, 2019

1 commit

  • Pull kernel lockdown mode from James Morris:
    "This is the latest iteration of the kernel lockdown patchset, from
    Matthew Garrett, David Howells and others.

    From the original description:

    This patchset introduces an optional kernel lockdown feature,
    intended to strengthen the boundary between UID 0 and the kernel.
    When enabled, various pieces of kernel functionality are restricted.
    Applications that rely on low-level access to either hardware or the
    kernel may cease working as a result - therefore this should not be
    enabled without appropriate evaluation beforehand.

    The majority of mainstream distributions have been carrying variants
    of this patchset for many years now, so there's value in providing a
    doesn't meet every distribution requirement, but gets us much closer
    to not requiring external patches.

    There are two major changes since this was last proposed for mainline:

    - Separating lockdown from EFI secure boot. Background discussion is
    covered here: https://lwn.net/Articles/751061/

    - Implementation as an LSM, with a default stackable lockdown LSM
    module. This allows the lockdown feature to be policy-driven,
    rather than encoding an implicit policy within the mechanism.

    The new locked_down LSM hook is provided to allow LSMs to make a
    policy decision around whether kernel functionality that would allow
    tampering with or examining the runtime state of the kernel should be
    permitted.

    The included lockdown LSM provides an implementation with a simple
    policy intended for general purpose use. This policy provides a coarse
    level of granularity, controllable via the kernel command line:

    lockdown={integrity|confidentiality}

    Enable the kernel lockdown feature. If set to integrity, kernel features
    that allow userland to modify the running kernel are disabled. If set to
    confidentiality, kernel features that allow userland to extract
    confidential information from the kernel are also disabled.

    This may also be controlled via /sys/kernel/security/lockdown and
    overriden by kernel configuration.

    New or existing LSMs may implement finer-grained controls of the
    lockdown features. Refer to the lockdown_reason documentation in
    include/linux/security.h for details.

    The lockdown feature has had signficant design feedback and review
    across many subsystems. This code has been in linux-next for some
    weeks, with a few fixes applied along the way.

    Stephen Rothwell noted that commit 9d1f8be5cf42 ("bpf: Restrict bpf
    when kernel lockdown is in confidentiality mode") is missing a
    Signed-off-by from its author. Matthew responded that he is providing
    this under category (c) of the DCO"

    * 'next-lockdown' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (31 commits)
    kexec: Fix file verification on S390
    security: constify some arrays in lockdown LSM
    lockdown: Print current->comm in restriction messages
    efi: Restrict efivar_ssdt_load when the kernel is locked down
    tracefs: Restrict tracefs when the kernel is locked down
    debugfs: Restrict debugfs when the kernel is locked down
    kexec: Allow kexec_file() with appropriate IMA policy when locked down
    lockdown: Lock down perf when in confidentiality mode
    bpf: Restrict bpf when kernel lockdown is in confidentiality mode
    lockdown: Lock down tracing and perf kprobes when in confidentiality mode
    lockdown: Lock down /proc/kcore
    x86/mmiotrace: Lock down the testmmiotrace module
    lockdown: Lock down module params that specify hardware parameters (eg. ioport)
    lockdown: Lock down TIOCSSERIAL
    lockdown: Prohibit PCMCIA CIS storage when the kernel is locked down
    acpi: Disable ACPI table override if the kernel is locked down
    acpi: Ignore acpi_rsdp kernel param when the kernel has been locked down
    ACPI: Limit access to custom_method when the kernel is locked down
    x86/msr: Restrict MSR access when the kernel is locked down
    x86: Lock down IO port access when the kernel is locked down
    ...

    Linus Torvalds
     

18 Sep, 2019

1 commit

  • Pull power management updates from Rafael Wysocki:
    "These include a rework of the main suspend-to-idle code flow (related
    to the handling of spurious wakeups), a switch over of several users
    of cpufreq notifiers to QoS-based limits, a new devfreq driver for
    Tegra20, a new cpuidle driver and governor for virtualized guests, an
    extension of the wakeup sources framework to expose wakeup sources as
    device objects in sysfs, and more.

    Specifics:

    - Rework the main suspend-to-idle control flow to avoid repeating
    "noirq" device resume and suspend operations in case of spurious
    wakeups from the ACPI EC and decouple the ACPI EC wakeups support
    from the LPS0 _DSM support (Rafael Wysocki).

    - Extend the wakeup sources framework to expose wakeup sources as
    device objects in sysfs (Tri Vo, Stephen Boyd).

    - Expose system suspend statistics in sysfs (Kalesh Singh).

    - Introduce a new haltpoll cpuidle driver and a new matching governor
    for virtualized guests wanting to do guest-side polling in the idle
    loop (Marcelo Tosatti, Joao Martins, Wanpeng Li, Stephen Rothwell).

    - Fix the menu and teo cpuidle governors to allow the scheduler tick
    to be stopped if PM QoS is used to limit the CPU idle state exit
    latency in some cases (Rafael Wysocki).

    - Increase the resolution of the play_idle() argument to microseconds
    for more fine-grained injection of CPU idle cycles (Daniel
    Lezcano).

    - Switch over some users of cpuidle notifiers to the new QoS-based
    frequency limits and drop the CPUFREQ_ADJUST and CPUFREQ_NOTIFY
    policy notifier events (Viresh Kumar).

    - Add new cpufreq driver based on nvmem for sun50i (Yangtao Li).

    - Add support for MT8183 and MT8516 to the mediatek cpufreq driver
    (Andrew-sh.Cheng, Fabien Parent).

    - Add i.MX8MN support to the imx-cpufreq-dt cpufreq driver (Anson
    Huang).

    - Add qcs404 to cpufreq-dt-platdev blacklist (Jorge Ramirez-Ortiz).

    - Update the qcom cpufreq driver (among other things, to make it
    easier to extend and to use kryo cpufreq for other nvmem-based
    SoCs) and add qcs404 support to it (Niklas Cassel, Douglas
    RAILLARD, Sibi Sankar, Sricharan R).

    - Fix assorted issues and make assorted minor improvements in the
    cpufreq code (Colin Ian King, Douglas RAILLARD, Florian Fainelli,
    Gustavo Silva, Hariprasad Kelam).

    - Add new devfreq driver for NVidia Tegra20 (Dmitry Osipenko, Arnd
    Bergmann).

    - Add new Exynos PPMU events to devfreq events and extend that
    mechanism (Lukasz Luba).

    - Fix and clean up the exynos-bus devfreq driver (Kamil Konieczny).

    - Improve devfreq documentation and governor code, fix spelling typos
    in devfreq (Ezequiel Garcia, Krzysztof Kozlowski, Leonard Crestez,
    MyungJoo Ham, Gaël PORTAY).

    - Add regulators enable and disable to the OPP (operating performance
    points) framework (Kamil Konieczny).

    - Update the OPP framework to support multiple opp-suspend properties
    (Anson Huang).

    - Fix assorted issues and make assorted minor improvements in the OPP
    code (Niklas Cassel, Viresh Kumar, Yue Hu).

    - Clean up the generic power domains (genpd) framework (Ulf Hansson).

    - Clean up assorted pieces of power management code and documentation
    (Akinobu Mita, Amit Kucheria, Chuhong Yuan).

    - Update the pm-graph tool to version 5.5 including multiple fixes
    and improvements (Todd Brandt).

    - Update the cpupower utility (Benjamin Weis, Geert Uytterhoeven,
    Sébastien Szymanski)"

    * tag 'pm-5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (126 commits)
    cpuidle-haltpoll: Enable kvm guest polling when dedicated physical CPUs are available
    cpuidle-haltpoll: do not set an owner to allow modunload
    cpuidle-haltpoll: return -ENODEV on modinit failure
    cpuidle-haltpoll: set haltpoll as preferred governor
    cpuidle: allow governor switch on cpuidle_register_driver()
    PM: runtime: Documentation: add runtime_status ABI document
    pm-graph: make setVal unbuffered again for python2 and python3
    powercap: idle_inject: Use higher resolution for idle injection
    cpuidle: play_idle: Increase the resolution to usec
    cpuidle-haltpoll: vcpu hotplug support
    cpufreq: Add qcs404 to cpufreq-dt-platdev blacklist
    cpufreq: qcom: Add support for qcs404 on nvmem driver
    cpufreq: qcom: Refactor the driver to make it easier to extend
    cpufreq: qcom: Re-organise kryo cpufreq to use it for other nvmem based qcom socs
    dt-bindings: opp: Add qcom-opp bindings with properties needed for CPR
    dt-bindings: opp: qcom-nvmem: Support pstates provided by a power domain
    Documentation: cpufreq: Update policy notifier documentation
    cpufreq: Remove CPUFREQ_ADJUST and CPUFREQ_NOTIFY policy notifier events
    PM / Domains: Verify PM domain type in dev_pm_genpd_set_performance_state()
    PM / Domains: Simplify genpd_lookup_dev()
    ...

    Linus Torvalds
     

17 Sep, 2019

1 commit

  • Pull arm64 updates from Will Deacon:
    "Although there isn't tonnes of code in terms of line count, there are
    a fair few headline features which I've noted both in the tag and also
    in the merge commits when I pulled everything together.

    The part I'm most pleased with is that we had 35 contributors this
    time around, which feels like a big jump from the usual small group of
    core arm64 arch developers. Hopefully they all enjoyed it so much that
    they'll continue to contribute, but we'll see.

    It's probably worth highlighting that we've pulled in a branch from
    the risc-v folks which moves our CPU topology code out to where it can
    be shared with others.

    Summary:

    - 52-bit virtual addressing in the kernel

    - New ABI to allow tagged user pointers to be dereferenced by
    syscalls

    - Early RNG seeding by the bootloader

    - Improve robustness of SMP boot

    - Fix TLB invalidation in light of recent architectural
    clarifications

    - Support for i.MX8 DDR PMU

    - Remove direct LSE instruction patching in favour of static keys

    - Function error injection using kprobes

    - Support for the PPTT "thread" flag introduced by ACPI 6.3

    - Move PSCI idle code into proper cpuidle driver

    - Relaxation of implicit I/O memory barriers

    - Build with RELR relocations when toolchain supports them

    - Numerous cleanups and non-critical fixes"

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (114 commits)
    arm64: remove __iounmap
    arm64: atomics: Use K constraint when toolchain appears to support it
    arm64: atomics: Undefine internal macros after use
    arm64: lse: Make ARM64_LSE_ATOMICS depend on JUMP_LABEL
    arm64: asm: Kill 'asm/atomic_arch.h'
    arm64: lse: Remove unused 'alt_lse' assembly macro
    arm64: atomics: Remove atomic_ll_sc compilation unit
    arm64: avoid using hard-coded registers for LSE atomics
    arm64: atomics: avoid out-of-line ll/sc atomics
    arm64: Use correct ll/sc atomic constraints
    jump_label: Don't warn on __exit jump entries
    docs/perf: Add documentation for the i.MX8 DDR PMU
    perf/imx_ddr: Add support for AXI ID filtering
    arm64: kpti: ensure patched kernel text is fetched from PoU
    arm64: fix fixmap copy for 16K pages and 48-bit VA
    perf/smmuv3: Validate groups for global filtering
    perf/smmuv3: Validate group size
    arm64: Relax Documentation/arm64/tagged-pointers.rst
    arm64: kvm: Replace hardcoded '1' with SYS_PAR_EL1_F
    arm64: mm: Ignore spurious translation faults taken from the kernel
    ...

    Linus Torvalds
     

20 Aug, 2019

1 commit

  • This option allows userspace to pass the RSDP address to the kernel, which
    makes it possible for a user to modify the workings of hardware. Reject
    the option when the kernel is locked down. This requires some reworking
    of the existing RSDP command line logic, since the early boot code also
    makes use of a command-line passed RSDP when locating the SRAT table
    before the lockdown code has been initialised. This is achieved by
    separating the command line RSDP path in the early boot code from the
    generic RSDP path, and then copying the command line RSDP into boot
    params in the kernel proper if lockdown is not enabled. If lockdown is
    enabled and an RSDP is provided on the command line, this will only be
    used when parsing SRAT (which shouldn't permit kernel code execution)
    and will be ignored in the rest of the kernel.

    (Modified by Matthew Garrett in order to handle the early boot RSDP
    environment)

    Signed-off-by: Josh Boyer
    Signed-off-by: David Howells
    Signed-off-by: Matthew Garrett
    Reviewed-by: Kees Cook
    cc: Dave Young
    cc: linux-acpi@vger.kernel.org
    Signed-off-by: James Morris

    Josh Boyer
     

12 Aug, 2019

1 commit

  • ACPI 6.3 adds a flag to the CPU node to indicate whether
    the given PE is a thread. Add a function to return that
    information for a given linux logical CPU.

    Signed-off-by: Jeremy Linton
    Reviewed-by: Sudeep Holla
    Reviewed-by: Robert Richter
    Acked-by: Rafael J. Wysocki
    Signed-off-by: Will Deacon

    Jeremy Linton
     

31 Jul, 2019

1 commit

  • The API, which belongs to GPIO library, is foreign to ACPI headers. Earlier
    we moved out I²C out of the latter, and now it's time for
    acpi_dev_add_driver_gpios() et al.

    For time being the acpi_gpio_get_irq_resource() and acpi_dev_gpio_irq_get()
    are left untouched as they need more thought about.

    Note, it requires uninline acpi_dev_remove_driver_gpios() to keep purity of
    consumer.h.

    Cc: Pierre-Louis Bossart
    Cc: Liam Girdwood
    Cc: Jie Yang
    Cc: Mark Brown
    Cc: alsa-devel@alsa-project.org (moderated list:INTEL ASoC DRIVERS)
    Signed-off-by: Andy Shevchenko
    Link: https://lore.kernel.org/r/20190730104337.21235-3-andriy.shevchenko@linux.intel.com
    Signed-off-by: Linus Walleij

    Andy Shevchenko
     

30 Jul, 2019

1 commit

  • The EC GPE needs to be set up for system wakeup only if there is a
    driver depending on it, either intel-hid or intel-vbtn, bound to a
    button device that is expected to wake up the system from sleep (such
    as the power button on some Dell systems, like the XPS13 9360). It
    doesn't need to be set up for waking up the system from sleep in any
    other cases and whether or not it is expected to wake up the system
    from sleep doesn't depend on whether or not the LPS0 device is
    present in the ACPI namespace.

    For this reason, rearrange the ACPI suspend-to-idle code to make the
    drivers depending on the EC GPE wakeup take care of setting it up and
    decouple that from the LPS0 device handling.

    While at it, make intel-hid and intel-vbtn prepare for system wakeup
    only if they are allowed to wake up the system from sleep by user
    space (via sysfs).

    [Note that acpi_ec_mark_gpe_for_wake() and acpi_ec_set_gpe_wake_mask()
    are there to prevent the EC GPE from being disabled by the
    acpi_enable_all_wakeup_gpes() call in acpi_s2idle_prepare(), so on
    systems with either intel-hid or intel-vbtn this change doesn't
    affect any interactions with the hardware or platform firmware.]

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

    Rafael J. Wysocki
     

19 Jul, 2019

1 commit

  • Pull more ACPI updates from Rafael Wysocki:
    "These get rid of two clang warnings, add a new quirk mechanism to the
    ACPI backlight driver (and apply it to one machine) and update the
    table load object initialization in ACPICA (this is a replacement for
    a previously reverted ACPICA commit).

    Specifics:

    - Make ACPI table loading work more consistently regardless of the
    exact mechanism used for loading a table (Erik Schmauss).

    - Get rid of two clang warnings (Arnd Bergmann).

    - Add new quirk mechanism to the ACPI backlight driver and use it to
    add a quirk for PB Easynote MZ35 (Hans de Goede)"

    * tag 'acpi-5.3-rc1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI: video: Add new hw_changes_brightness quirk, set it on PB Easynote MZ35
    ACPI: fix false-positive -Wuninitialized warning
    ACPI: blacklist: fix clang warning for unused DMI table
    ACPICA: Update table load object initialization

    Linus Torvalds
     

15 Jul, 2019

2 commits

  • clang gets confused by an uninitialized variable in what looks
    to it like a never executed code path:

    arch/x86/kernel/acpi/boot.c:618:13: error: variable 'polarity' is uninitialized when used here [-Werror,-Wuninitialized]
    polarity = polarity ? ACPI_ACTIVE_LOW : ACPI_ACTIVE_HIGH;
    ^~~~~~~~
    arch/x86/kernel/acpi/boot.c:606:32: note: initialize the variable 'polarity' to silence this warning
    int rc, irq, trigger, polarity;
    ^
    = 0
    arch/x86/kernel/acpi/boot.c:617:12: error: variable 'trigger' is uninitialized when used here [-Werror,-Wuninitialized]
    trigger = trigger ? ACPI_LEVEL_SENSITIVE : ACPI_EDGE_SENSITIVE;
    ^~~~~~~
    arch/x86/kernel/acpi/boot.c:606:22: note: initialize the variable 'trigger' to silence this warning
    int rc, irq, trigger, polarity;
    ^
    = 0

    This is unfortunately a design decision in clang and won't be fixed.

    Changing the acpi_get_override_irq() macro to an inline function
    reliably avoids the issue.

    Signed-off-by: Arnd Bergmann
    Reviewed-by: Andy Shevchenko
    Reviewed-by: Nathan Chancellor
    Signed-off-by: Rafael J. Wysocki

    Arnd Bergmann
     
  • Pull x86 platform driver updates from Andy Shevchenko:
    "Gathered a bunch of x86 platform driver changes. It's rather big,
    since includes two big refactors and completely new driver:

    - ASUS WMI driver got a big refactoring in order to support the TUF
    Gaming laptops. Besides that, the regression with backlight being
    permanently off on various EeePC laptops has been fixed.

    - Accelerometer on HP ProBook 450 G0 shows wrong measurements due to
    X axis being inverted. This has been fixed.

    - Intel PMC core driver has been extended to be ACPI enumerated if
    the DSDT provides device with _HID "INT33A1". This allows to
    convert the driver to be pure platform and support new hardware
    purely based on ACPI DSDT.

    - From now on the Intel Speed Select Technology is supported thru a
    corresponding driver. This driver provides an access to the
    features of the ISST, such as Performance Profile, Core Power, Base
    frequency and Turbo Frequency.

    - Mellanox platform drivers has been refactored and now extended to
    support more systems, including new coming ones.

    - The OLPC XO-1.75 platform is now supported.

    - CB4063 Beckhoff Automation board is using PMC clocks, provided via
    pmc_atom driver, for ethernet controllers in a way that they can't
    be managed by the clock driver. The quirk has been extended to
    cover this case.

    - Touchscreen on Chuwi Hi10 Plus tablet has been enabled. Meanwhile
    the information of Chuwi Hi10 Air has been fixed to cover more
    models based on the same platform.

    - Xiaomi notebooks have WMI interface enabled. Thus, the driver to
    support it has been provided. It required some extension of the
    generic WMI library, which allows to propagate opaque context to
    the ->probe() of the individual drivers.

    This release includes debugfs clean up from Greg KH for several
    drivers that drop return code check and make debugfs absence or
    failure non-fatal.

    Also miscellaneous fixes here and there, mostly for Acer WMI and
    various Intel drivers"

    * tag 'platform-drivers-x86-v5.3-1' of git://git.infradead.org/linux-platform-drivers-x86: (74 commits)
    platform/x86: Fix PCENGINES_APU2 Kconfig warning
    tools/power/x86/intel-speed-select: Add .gitignore file
    platform/x86: mlx-platform: Fix error handling in mlxplat_init()
    platform/x86: intel_pmc_core: Attach using APCI HID "INT33A1"
    platform/x86: intel_pmc_core: transform Pkg C-state residency from TSC ticks into microseconds
    platform/x86: asus-wmi: Use dev_get_drvdata()
    Documentation/ABI: Add new attribute for mlxreg-io sysfs interfaces
    platform/x86: mlx-platform: Add more reset cause attributes
    platform/x86: mlx-platform: Modify DMI matching order
    platform/x86: mlx-platform: Add regmap structure for the next generation systems
    platform/x86: mlx-platform: Change API for i2c-mlxcpld driver activation
    platform/x86: mlx-platform: Move regmap initialization before all drivers activation
    MAINTAINERS: Update for Intel Speed Select Technology
    tools/power/x86: A tool to validate Intel Speed Select commands
    platform/x86: ISST: Restore state on resume
    platform/x86: ISST: Add Intel Speed Select PUNIT MSR interface
    platform/x86: ISST: Add Intel Speed Select mailbox interface via MSRs
    platform/x86: ISST: Add Intel Speed Select mailbox interface via PCI
    platform/x86: ISST: Add Intel Speed Select mmio interface
    platform/x86: ISST: Add IOCTL to Translate Linux logical CPU to PUNIT CPU number
    ...

    Linus Torvalds
     

10 Jul, 2019

1 commit

  • Pull power management updates from Rafael Wysocki:
    "These update PCI and ACPI power management (improved handling of ACPI
    power resources and PCIe link delays, fixes related to corner cases,
    hibernation handling rework), fix and extend the operating performance
    points (OPP) framework, add new cpufreq drivers for Raspberry Pi and
    imx8m chips, update some other cpufreq drivers, clean up assorted
    pieces of PM code and documentation and update tools.

    Specifics:

    - Improve the handling of shared ACPI power resources in the PCI bus
    type layer (Mika Westerberg).

    - Make the PCI layer take link delays required by the PCIe spec into
    account as appropriate and avoid polling devices in D3cold for PME
    (Mika Westerberg).

    - Fix some corner case issues in ACPI device power management and in
    the PCI bus type layer, optimiza and clean up the handling of
    runtime-suspended PCI devices during system-wide transitions to
    sleep states (Rafael Wysocki).

    - Rework hibernation handling in the ACPI core and the PCI bus type
    to resume runtime-suspended devices before hibernation (which
    allows some functional problems to be avoided) and fix some ACPI
    power management issues related to hiberation (Rafael Wysocki).

    - Extend the operating performance points (OPP) framework to support
    a wider range of devices (Rajendra Nayak, Stehpen Boyd).

    - Fix issues related to genpd_virt_devs and issues with platforms
    using the set_opp() callback in the OPP framework (Viresh Kumar,
    Dmitry Osipenko).

    - Add new cpufreq driver for Raspberry Pi (Nicolas Saenz Julienne).

    - Add new cpufreq driver for imx8m and imx7d chips (Leonard Crestez).

    - Fix and clean up the pcc-cpufreq, brcmstb-avs-cpufreq, s5pv210, and
    armada-37xx cpufreq drivers (David Arcari, Florian Fainelli, Paweł
    Chmiel, YueHaibing).

    - Clean up and fix the cpufreq core (Viresh Kumar, Daniel Lezcano).

    - Fix minor issue in the ACPI system sleep support code and export
    one function from it (Lenny Szubowicz, Dexuan Cui).

    - Clean up assorted pieces of PM code and documentation (Kefeng Wang,
    Andy Shevchenko, Bart Van Assche, Greg Kroah-Hartman, Fuqian Huang,
    Geert Uytterhoeven, Mathieu Malaterre, Rafael Wysocki).

    - Update the pm-graph utility to v5.4 (Todd Brandt).

    - Fix and clean up the cpupower utility (Abhishek Goel, Nick Black)"

    * tag 'pm-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (57 commits)
    ACPI: PM: Make acpi_sleep_state_supported() non-static
    PM: sleep: Drop dev_pm_skip_next_resume_phases()
    ACPI: PM: Unexport acpi_device_get_power()
    Documentation: ABI: power: Add missing newline at end of file
    ACPI: PM: Drop unused function and function header
    ACPI: PM: Introduce "poweroff" callbacks for ACPI PM domain and LPSS
    ACPI: PM: Simplify and fix PM domain hibernation callbacks
    PCI: PM: Simplify bus-level hibernation callbacks
    PM: ACPI/PCI: Resume all devices during hibernation
    cpufreq: Avoid calling cpufreq_verify_current_freq() from handle_update()
    cpufreq: Consolidate cpufreq_update_current_freq() and __cpufreq_get()
    kernel: power: swap: use kzalloc() instead of kmalloc() followed by memset()
    cpufreq: Don't skip frequency validation for has_target() drivers
    PCI: PM/ACPI: Refresh all stale power state data in pci_pm_complete()
    PCI / ACPI: Add _PR0 dependent devices
    ACPI / PM: Introduce concept of a _PR0 dependent device
    PCI / ACPI: Use cached ACPI device state to get PCI device power state
    ACPI: PM: Allow transitions to D0 to occur in special cases
    ACPI: PM: Avoid evaluating _PS3 on transitions from D3hot to D3cold
    cpufreq: Use has_target() instead of !setpolicy
    ...

    Linus Torvalds
     

09 Jul, 2019

1 commit

  • Pull irq updates from Thomas Gleixner:
    "The irq departement provides the usual mixed bag:

    Core:

    - Further improvements to the irq timings code which aims to predict
    the next interrupt for power state selection to achieve better
    latency/power balance

    - Add interrupt statistics to the core NMI handlers

    - The usual small fixes and cleanups

    Drivers:

    - Support for Renesas RZ/A1, Annapurna Labs FIC, Meson-G12A SoC and
    Amazon Gravition AMR/GIC interrupt controllers.

    - Rework of the Renesas INTC controller driver

    - ACPI support for Socionext SoCs

    - Enhancements to the CSKY interrupt controller

    - The usual small fixes and cleanups"

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (39 commits)
    irq/irqdomain: Fix comment typo
    genirq: Update irq stats from NMI handlers
    irqchip/gic-pm: Remove PM_CLK dependency
    irqchip/al-fic: Introduce Amazon's Annapurna Labs Fabric Interrupt Controller Driver
    dt-bindings: interrupt-controller: Add Amazon's Annapurna Labs FIC
    softirq: Use __this_cpu_write() in takeover_tasklets()
    irqchip/mbigen: Stop printing kernel addresses
    irqchip/gic: Add dependency for ARM_GIC_MAX_NR
    genirq/affinity: Remove unused argument from [__]irq_build_affinity_masks()
    genirq/timings: Add selftest for next event computation
    genirq/timings: Add selftest for irqs circular buffer
    genirq/timings: Add selftest for circular array
    genirq/timings: Encapsulate storing function
    genirq/timings: Encapsulate timings push
    genirq/timings: Optimize the period detection speed
    genirq/timings: Fix timings buffer inspection
    genirq/timings: Fix next event index function
    irqchip/qcom: Use struct_size() in devm_kzalloc()
    irqchip/irq-csky-mpintc: Remove unnecessary loop in interrupt handler
    dt-bindings: interrupt-controller: Update csky mpintc
    ...

    Linus Torvalds
     

03 Jul, 2019

3 commits

  • Remove a leftover function header and a static inline stub with no
    users from the ACPI header file.

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

    Rafael J. Wysocki
     
  • In general, it is not correct to call pm_generic_suspend(),
    pm_generic_suspend_late() and pm_generic_suspend_noirq() during the
    hibernation's "poweroff" transition, because device drivers may
    provide special callbacks to be invoked then and the wrappers in
    question cause system suspend callbacks to be run. Unfortunately,
    that happens in the ACPI PM domain and ACPI LPSS.

    To address this potential issue, introduce "poweroff" callbacks
    for the ACPI PM and LPSS that will use pm_generic_poweroff(),
    pm_generic_poweroff_late() and pm_generic_poweroff_noirq() as
    appropriate.

    Fixes: 05087360fd7a (ACPI / PM: Take SMART_SUSPEND driver flag into account)
    Signed-off-by: Rafael J. Wysocki
    Reviewed-by: Mika Westerberg
    Reviewed-by: Hans de Goede

    Rafael J. Wysocki
     
  • First, after a previous change causing all runtime-suspended devices
    in the ACPI PM domain (and ACPI LPSS devices) to be resumed before
    creating a snapshot image of memory during hibernation, it is not
    necessary to worry about the case in which them might be left in
    runtime-suspend any more, so get rid of the code related to that from
    ACPI PM domain and ACPI LPSS hibernation callbacks.

    Second, it is not correct to use pm_generic_resume_early() and
    acpi_subsys_resume_noirq() in hibernation "restore" callbacks (which
    currently happens in the ACPI PM domain and ACPI LPSS), so introduce
    proper _restore_late and _restore_noirq callbacks for the ACPI PM
    domain and ACPI LPSS.

    Fixes: 05087360fd7a (ACPI / PM: Take SMART_SUSPEND driver flag into account)
    Signed-off-by: Rafael J. Wysocki
    Reviewed-by: Mika Westerberg
    Reviewed-by: Hans de Goede

    Rafael J. Wysocki
     

27 Jun, 2019

1 commit

  • ACPI 6.3 adds a flag to indicate that child nodes are all
    identical cores. This is useful to authoritatively determine
    if a set of (possibly offline) cores are identical or not.

    Since the flag doesn't give us a unique id we can generate
    one and use it to create bitmaps of sibling nodes, or simply
    in a loop to determine if a subset of cores are identical.

    Acked-by: Rafael J. Wysocki
    Tested-by: Hanjun Guo
    Reviewed-by: Sudeep Holla
    Signed-off-by: Jeremy Linton
    Signed-off-by: Will Deacon

    Jeremy Linton