11 Apr, 2020

1 commit

  • Pull more ACPI updates from Rafael Wysocki:
    "These prevent a false-positive static checker warning from triggering
    in the ACPI EC driver (Rafael Wysocki), fix white space in an ACPI
    document (Vilhelm Prytz) and add static annotation to one variable
    (Jason Yan)"

    * tag 'acpi-5.7-rc1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI, x86/boot: make acpi_nobgrt static
    Documentation: firmware-guide: ACPI: fix table alignment in namespace.rst
    ACPI: EC: Fix up fast path check in acpi_ec_add()

    Linus Torvalds
     

10 Apr, 2020

1 commit


09 Apr, 2020

2 commits

  • 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
     
  • Pull iommu updates from Joerg Roedel:

    - ARM-SMMU support for the TLB range invalidation command in SMMUv3.2

    - ARM-SMMU introduction of command batching helpers to batch up CD and
    ATC invalidation

    - ARM-SMMU support for PCI PASID, along with necessary PCI symbol
    exports

    - Introduce a generic (actually rename an existing) IOMMU related
    pointer in struct device and reduce the IOMMU related pointers

    - Some fixes for the OMAP IOMMU driver to make it build on 64bit
    architectures

    - Various smaller fixes and improvements

    * tag 'iommu-updates-v5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (39 commits)
    iommu: Move fwspec->iommu_priv to struct dev_iommu
    iommu/virtio: Use accessor functions for iommu private data
    iommu/qcom: Use accessor functions for iommu private data
    iommu/mediatek: Use accessor functions for iommu private data
    iommu/renesas: Use accessor functions for iommu private data
    iommu/arm-smmu: Use accessor functions for iommu private data
    iommu/arm-smmu: Refactor master_cfg/fwspec usage
    iommu/arm-smmu-v3: Use accessor functions for iommu private data
    iommu: Introduce accessors for iommu private data
    iommu/arm-smmu: Fix uninitilized variable warning
    iommu: Move iommu_fwspec to struct dev_iommu
    iommu: Rename struct iommu_param to dev_iommu
    iommu/tegra-gart: Remove direct access of dev->iommu_fwspec
    drm/msm/mdp5: Remove direct access of dev->iommu_fwspec
    ACPI/IORT: Remove direct access of dev->iommu_fwspec
    iommu: Define dev_iommu_fwspec_get() for !CONFIG_IOMMU_API
    iommu/virtio: Reject IOMMU page granule larger than PAGE_SIZE
    iommu/virtio: Fix freeing of incomplete domains
    iommu/virtio: Fix sparse warning
    iommu/vt-d: Add build dependency on IOASID
    ...

    Linus Torvalds
     

07 Apr, 2020

2 commits

  • Pull more ACPI updates from Rafael Wysocki:
    "Additional ACPI updates.

    These update the ACPICA code in the kernel to the 20200326 upstream
    revision, fix an ACPI-related CPU hotplug deadlock on x86, update
    Intel Tiger Lake device IDs in some places, add a new ACPI backlight
    blacklist entry, update the "acpi_backlight" kernel command line
    switch documentation and clean up a CPPC library routine.

    Specifics:

    - Update the ACPICA code in the kernel to upstream revision 20200326
    including:
    * Fix for a typo in a comment field (Bob Moore)
    * acpiExec namespace init file fixes (Bob Moore)
    * Addition of NHLT to the known tables list (Cezary Rojewski)
    * Conversion of PlatformCommChannel ASL keyword to PCC (Erik
    Kaneda)
    * acpiexec cleanup (Erik Kaneda)
    * WSMT-related typo fix (Erik Kaneda)
    * sprintf() utility function fix (John Levon)
    * IVRS IVHD type 11h parsing implementation (Michał Żygowski)
    * IVRS IVHD type 10h reserved field name fix (Michał Żygowski)

    - Fix ACPI-related CPU hotplug deadlock on x86 (Qian Cai)

    - Fix Intel Tiger Lake ACPI device IDs in several places (Gayatri
    Kammela)

    - Add ACPI backlight blacklist entry for Acer Aspire 5783z (Hans de
    Goede)

    - Fix documentation of the "acpi_backlight" kernel command line
    switch (Randy Dunlap)

    - Clean up the acpi_get_psd_map() CPPC library routine (Liguang
    Zhang)"

    * tag 'acpi-5.7-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    x86: ACPI: fix CPU hotplug deadlock
    thermal: int340x_thermal: fix: Update Tiger Lake ACPI device IDs
    platform/x86: intel-hid: fix: Update Tiger Lake ACPI device ID
    ACPI: Update Tiger Lake ACPI device IDs
    ACPI: video: Use native backlight on Acer Aspire 5783z
    ACPI: video: Docs update for "acpi_backlight" kernel parameter options
    ACPICA: Update version 20200326
    ACPICA: Fixes for acpiExec namespace init file
    ACPICA: Add NHLT table signature
    ACPICA: WSMT: Fix typo, no functional change
    ACPICA: utilities: fix sprintf()
    ACPICA: acpiexec: remove redeclaration of acpi_gbl_db_opt_no_region_support
    ACPICA: Change PlatformCommChannel ASL keyword to PCC
    ACPICA: Fix IVRS IVHD type 10h reserved field name
    ACPICA: Implement IVRS IVHD type 11h parsing
    ACPICA: Fix a typo in a comment field
    ACPI: CPPC: clean up acpi_get_psd_map()

    Linus Torvalds
     
  • 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
     

06 Apr, 2020

3 commits

  • The fast path check in acpi_ec_add() is not incorrect, because in
    fact acpi_device_hid(device) can be equal to ACPI_ECDT_HID only if
    boot_ec is not NULL, but it may confuse static checkers, so change
    it to explicitly check boot_ec upfront and use the slow path if
    that pointer is NULL.

    Link: https://lore.kernel.org/linux-acpi/20200406144217.GA68494@mwanda/
    Fixes: 3d9b8dd8320d ("ACPI: EC: Use fast path in acpi_ec_add() for DSDT boot EC")
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     
  • * acpi-cppc:
    ACPI: CPPC: clean up acpi_get_psd_map()

    * acpi-video:
    ACPI: video: Use native backlight on Acer Aspire 5783z
    ACPI: video: Docs update for "acpi_backlight" kernel parameter options

    * acpi-drivers:
    thermal: int340x_thermal: fix: Update Tiger Lake ACPI device IDs
    platform/x86: intel-hid: fix: Update Tiger Lake ACPI device ID
    ACPI: Update Tiger Lake ACPI device IDs

    Rafael J. Wysocki
     
  • * acpica:
    ACPICA: Update version 20200326
    ACPICA: Fixes for acpiExec namespace init file
    ACPICA: Add NHLT table signature
    ACPICA: WSMT: Fix typo, no functional change
    ACPICA: utilities: fix sprintf()
    ACPICA: acpiexec: remove redeclaration of acpi_gbl_db_opt_no_region_support
    ACPICA: Change PlatformCommChannel ASL keyword to PCC
    ACPICA: Fix IVRS IVHD type 10h reserved field name
    ACPICA: Implement IVRS IVHD type 11h parsing
    ACPICA: Fix a typo in a comment field

    Rafael J. Wysocki
     

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
     

04 Apr, 2020

2 commits

  • Similar to commit 0266d81e9bf5 ("acpi/processor: Prevent cpu hotplug
    deadlock") except this is for acpi_processor_ffh_cstate_probe():

    "The problem is that the work is scheduled on the current CPU from the
    hotplug thread associated with that CPU.

    It's not required to invoke these functions via the workqueue because
    the hotplug thread runs on the target CPU already.

    Check whether current is a per cpu thread pinned on the target CPU and
    invoke the function directly to avoid the workqueue."

    WARNING: possible circular locking dependency detected
    ------------------------------------------------------
    cpuhp/1/15 is trying to acquire lock:
    ffffc90003447a28 ((work_completion)(&wfc.work)){+.+.}-{0:0}, at: __flush_work+0x4c6/0x630

    but task is already holding lock:
    ffffffffafa1c0e8 (cpuidle_lock){+.+.}-{3:3}, at: cpuidle_pause_and_lock+0x17/0x20

    which lock already depends on the new lock.

    the existing dependency chain (in reverse order) is:

    -> #1 (cpu_hotplug_lock){++++}-{0:0}:
    cpus_read_lock+0x3e/0xc0
    irq_calc_affinity_vectors+0x5f/0x91
    __pci_enable_msix_range+0x10f/0x9a0
    pci_alloc_irq_vectors_affinity+0x13e/0x1f0
    pci_alloc_irq_vectors_affinity at drivers/pci/msi.c:1208
    pqi_ctrl_init+0x72f/0x1618 [smartpqi]
    pqi_pci_probe.cold.63+0x882/0x892 [smartpqi]
    local_pci_probe+0x7a/0xc0
    work_for_cpu_fn+0x2e/0x50
    process_one_work+0x57e/0xb90
    worker_thread+0x363/0x5b0
    kthread+0x1f4/0x220
    ret_from_fork+0x27/0x50

    -> #0 ((work_completion)(&wfc.work)){+.+.}-{0:0}:
    __lock_acquire+0x2244/0x32a0
    lock_acquire+0x1a2/0x680
    __flush_work+0x4e6/0x630
    work_on_cpu+0x114/0x160
    acpi_processor_ffh_cstate_probe+0x129/0x250
    acpi_processor_evaluate_cst+0x4c8/0x580
    acpi_processor_get_power_info+0x86/0x740
    acpi_processor_hotplug+0xc3/0x140
    acpi_soft_cpu_online+0x102/0x1d0
    cpuhp_invoke_callback+0x197/0x1120
    cpuhp_thread_fun+0x252/0x2f0
    smpboot_thread_fn+0x255/0x440
    kthread+0x1f4/0x220
    ret_from_fork+0x27/0x50

    other info that might help us debug this:

    Chain exists of:
    (work_completion)(&wfc.work) --> cpuhp_state-up --> cpuidle_lock

    Possible unsafe locking scenario:

    CPU0 CPU1
    ---- ----
    lock(cpuidle_lock);
    lock(cpuhp_state-up);
    lock(cpuidle_lock);
    lock((work_completion)(&wfc.work));

    *** DEADLOCK ***

    3 locks held by cpuhp/1/15:
    #0: ffffffffaf51ab10 (cpu_hotplug_lock){++++}-{0:0}, at: cpuhp_thread_fun+0x69/0x2f0
    #1: ffffffffaf51ad40 (cpuhp_state-up){+.+.}-{0:0}, at: cpuhp_thread_fun+0x69/0x2f0
    #2: ffffffffafa1c0e8 (cpuidle_lock){+.+.}-{3:3}, at: cpuidle_pause_and_lock+0x17/0x20

    Call Trace:
    dump_stack+0xa0/0xea
    print_circular_bug.cold.52+0x147/0x14c
    check_noncircular+0x295/0x2d0
    __lock_acquire+0x2244/0x32a0
    lock_acquire+0x1a2/0x680
    __flush_work+0x4e6/0x630
    work_on_cpu+0x114/0x160
    acpi_processor_ffh_cstate_probe+0x129/0x250
    acpi_processor_evaluate_cst+0x4c8/0x580
    acpi_processor_get_power_info+0x86/0x740
    acpi_processor_hotplug+0xc3/0x140
    acpi_soft_cpu_online+0x102/0x1d0
    cpuhp_invoke_callback+0x197/0x1120
    cpuhp_thread_fun+0x252/0x2f0
    smpboot_thread_fn+0x255/0x440
    kthread+0x1f4/0x220
    ret_from_fork+0x27/0x50

    Signed-off-by: Qian Cai
    Tested-by: Borislav Petkov
    [ rjw: Subject ]
    Signed-off-by: Rafael J. Wysocki

    Qian Cai
     
  • Pull pci updates from Bjorn Helgaas:
    "Enumeration:

    - Revert sysfs "rescan" renames that broke apps (Kelsey Skunberg)

    - Add more 32 GT/s link speed decoding and improve the implementation
    (Yicong Yang)

    Resource management:

    - Add support for sizing programmable host bridge apertures and fix a
    related alpha Nautilus regression (Ivan Kokshaysky)

    Interrupts:

    - Add boot interrupt quirk mechanism for Xeon chipsets and document
    boot interrupts (Sean V Kelley)

    PCIe native device hotplug:

    - When possible, disable in-band presence detect and use PDS
    (Alexandru Gagniuc)

    - Add DMI table for devices that don't use in-band presence detection
    but don't advertise that correctly (Stuart Hayes)

    - Fix hang when powering slots up/down via sysfs (Lukas Wunner)

    - Fix an MSI interrupt race (Stuart Hayes)

    Virtualization:

    - Add ACS quirks for Zhaoxin devices (Raymond Pang)

    Error handling:

    - Add Error Disconnect Recover (EDR) support so firmware can report
    devices disconnected via DPC and we can try to recover (Kuppuswamy
    Sathyanarayanan)

    Peer-to-peer DMA:

    - Add Intel Sky Lake-E Root Ports B, C, D to the whitelist (Andrew
    Maier)

    ASPM:

    - Reduce severity of common clock config message (Chris Packham)

    - Clear the correct bits when enabling L1 substates, so we don't go
    to the wrong state (Yicong Yang)

    Endpoint framework:

    - Replace EPF linkup ops with notifier call chain and improve locking
    (Kishon Vijay Abraham I)

    - Fix concurrent memory allocation in OB address region (Kishon Vijay
    Abraham I)

    - Move PF function number assignment to EPC core to support multiple
    function creation methods (Kishon Vijay Abraham I)

    - Fix issue with clearing configfs "start" entry (Kunihiko Hayashi)

    - Fix issue with endpoint MSI-X ignoring BAR Indicator and Table
    Offset (Kishon Vijay Abraham I)

    - Add support for testing DMA transfers (Kishon Vijay Abraham I)

    - Add support for testing > 10 endpoint devices (Kishon Vijay Abraham I)

    - Add support for tests to clear IRQ (Kishon Vijay Abraham I)

    - Add common DT schema for endpoint controllers (Kishon Vijay Abraham I)

    Amlogic Meson PCIe controller driver:

    - Add DT bindings for AXG PCIe PHY, shared MIPI/PCIe analog PHY (Remi
    Pommarel)

    - Add Amlogic AXG PCIe PHY, AXG MIPI/PCIe analog PHY drivers (Remi
    Pommarel)

    Cadence PCIe controller driver:

    - Add Root Complex/Endpoint DT schema for Cadence PCIe (Kishon Vijay
    Abraham I)

    Intel VMD host bridge driver:

    - Add two VMD Device IDs that require bus restriction mode (Sushma
    Kalakota)

    Mobiveil PCIe controller driver:

    - Refactor and modularize mobiveil driver (Hou Zhiqiang)

    - Add support for Mobiveil GPEX Gen4 host (Hou Zhiqiang)

    Microsoft Hyper-V host bridge driver:

    - Add support for Hyper-V PCI protocol version 1.3 and
    PCI_BUS_RELATIONS2 (Long Li)

    - Refactor to prepare for virtual PCI on non-x86 architectures (Boqun
    Feng)

    - Fix memory leak in hv_pci_probe()'s error path (Dexuan Cui)

    NVIDIA Tegra PCIe controller driver:

    - Use pci_parse_request_of_pci_ranges() (Rob Herring)

    - Add support for endpoint mode and related DT updates (Vidya Sagar)

    - Reduce -EPROBE_DEFER error message log level (Thierry Reding)

    Qualcomm PCIe controller driver:

    - Restrict class fixup to specific Qualcomm devices (Bjorn Andersson)

    Synopsys DesignWare PCIe controller driver:

    - Refactor core initialization code for endpoint mode (Vidya Sagar)

    - Fix endpoint MSI-X to use correct table address (Kishon Vijay
    Abraham I)

    TI DRA7xx PCIe controller driver:

    - Fix MSI IRQ handling (Vignesh Raghavendra)

    TI Keystone PCIe controller driver:

    - Allow AM654 endpoint to raise MSI-X interrupt (Kishon Vijay Abraham I)

    Miscellaneous:

    - Quirk ASMedia XHCI USB to avoid "PME# from D0" defect (Kai-Heng
    Feng)

    - Use ioremap(), not phys_to_virt(), for platform ROM to fix video
    ROM mapping with CONFIG_HIGHMEM (Mikel Rychliski)"

    * tag 'pci-v5.7-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (96 commits)
    misc: pci_endpoint_test: remove duplicate macro PCI_ENDPOINT_TEST_STATUS
    PCI: tegra: Print -EPROBE_DEFER error message at debug level
    misc: pci_endpoint_test: Use full pci-endpoint-test name in request_irq()
    misc: pci_endpoint_test: Fix to support > 10 pci-endpoint-test devices
    tools: PCI: Add 'e' to clear IRQ
    misc: pci_endpoint_test: Add ioctl to clear IRQ
    misc: pci_endpoint_test: Avoid using module parameter to determine irqtype
    PCI: keystone: Allow AM654 PCIe Endpoint to raise MSI-X interrupt
    PCI: dwc: Fix dw_pcie_ep_raise_msix_irq() to get correct MSI-X table address
    PCI: endpoint: Fix ->set_msix() to take BIR and offset as arguments
    misc: pci_endpoint_test: Add support to get DMA option from userspace
    tools: PCI: Add 'd' command line option to support DMA
    misc: pci_endpoint_test: Use streaming DMA APIs for buffer allocation
    PCI: endpoint: functions/pci-epf-test: Print throughput information
    PCI: endpoint: functions/pci-epf-test: Add DMA support to transfer data
    PCI: pciehp: Fix MSI interrupt race
    PCI: pciehp: Fix indefinite wait on sysfs requests
    PCI: endpoint: Fix clearing start entry in configfs
    PCI: tegra: Add support for PCIe endpoint mode in Tegra194
    PCI: sysfs: Revert "rescan" file renames
    ...

    Linus Torvalds
     

03 Apr, 2020

3 commits


01 Apr, 2020

2 commits

  • Tiger Lake's new unique ACPI device IDs for DPTF and fan drivers are not
    valid as the IDs are missing 'C'. Fix the IDs by updating them.

    After the update, the new IDs should now look like
    INT1047 --> INTC1047
    INT1040 --> INTC1040
    INT1043 --> INTC1043
    INT1044 --> INTC1044

    Fixes: 55cfe6a5c582 ("ACPI: DPTF: Add Tiger Lake ACPI device IDs")
    Fixes: c248dfe7e0ca ("ACPI: fan: Add Tiger Lake ACPI device ID")
    Suggested-by: Srinivas Pandruvada
    Signed-off-by: Gayatri Kammela
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Rafael J. Wysocki

    Gayatri Kammela
     
  • The Acer Aspire 5783z shipped with Windows 7 and as such does not trigger
    our "win8 ready" heuristic for prefering the native backlight interface.

    Still ACPI backlight control doesn't work on this model, where as the
    native (intel_video) backlight interface does work. Add a quirk to
    force using native backlight control on this model.

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

    Hans de Goede
     

31 Mar, 2020

2 commits

  • Pull perf updates from Ingo Molnar:
    "The main changes in this cycle were:

    Kernel side changes:

    - A couple of x86/cpu cleanups and changes were grandfathered in due
    to patch dependencies. These clean up the set of CPU model/family
    matching macros with a consistent namespace and C99 initializer
    style.

    - A bunch of updates to various low level PMU drivers:
    * AMD Family 19h L3 uncore PMU
    * Intel Tiger Lake uncore support
    * misc fixes to LBR TOS sampling

    - optprobe fixes

    - perf/cgroup: optimize cgroup event sched-in processing

    - misc cleanups and fixes

    Tooling side changes are to:

    - perf {annotate,expr,record,report,stat,test}

    - perl scripting

    - libapi, libperf and libtraceevent

    - vendor events on Intel and S390, ARM cs-etm

    - Intel PT updates

    - Documentation changes and updates to core facilities

    - misc cleanups, fixes and other enhancements"

    * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (89 commits)
    cpufreq/intel_pstate: Fix wrong macro conversion
    x86/cpu: Cleanup the now unused CPU match macros
    hwrng: via_rng: Convert to new X86 CPU match macros
    crypto: Convert to new CPU match macros
    ASoC: Intel: Convert to new X86 CPU match macros
    powercap/intel_rapl: Convert to new X86 CPU match macros
    PCI: intel-mid: Convert to new X86 CPU match macros
    mmc: sdhci-acpi: Convert to new X86 CPU match macros
    intel_idle: Convert to new X86 CPU match macros
    extcon: axp288: Convert to new X86 CPU match macros
    thermal: Convert to new X86 CPU match macros
    hwmon: Convert to new X86 CPU match macros
    platform/x86: Convert to new CPU match macros
    EDAC: Convert to new X86 CPU match macros
    cpufreq: Convert to new X86 CPU match macros
    ACPI: Convert to new X86 CPU match macros
    x86/platform: Convert to new CPU match macros
    x86/kernel: Convert to new CPU match macros
    x86/kvm: Convert to new CPU match macros
    x86/perf/events: Convert to new CPU match macros
    ...

    Linus Torvalds
     
  • Pull ACPI updates from Rafael Wysocki:

    - Update the ACPICA code in the kernel to the 20200214 upstream
    release including:

    * Fix to re-enable the sleep button after wakeup (Anchal
    Agarwal).

    * Fixes for mistakes in comments and typos (Bob Moore).

    * ASL-ASL+ converter updates (Erik Kaneda).

    * Type casting cleanups (Sven Barth).

    - Clean up the intialization of the EC driver and eliminate some dead
    code from it (Rafael Wysocki).

    - Clean up the quirk tables in the AC and battery drivers (Hans de
    Goede).

    - Fix the global lock handling on x86 to ignore unspecified bit
    positions in the global lock field (Jan Engelhardt).

    - Add a new "tiny" driver for ACPI button devices exposed by VMs to
    guest kernels to send signals directly to init (Josh Triplett).

    - Add a kernel parameter to disable ACPI BGRT on x86 (Alex Hung).

    - Make the ACPI PCI host bridge and fan drivers use scnprintf() to
    avoid potential buffer overflows (Takashi Iwai).

    - Clean up assorted pieces of code:

    * Reorder "asmlinkage" to make g++ happy (Alexey Dobriyan).

    * Drop unneeded variable initialization (Colin Ian King).

    * Add missing __acquires/__releases annotations (Jules Irenge).

    * Replace list_for_each_safe() with list_for_each_entry_safe()
    (chenqiwu)"

    * tag 'acpi-5.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (31 commits)
    ACPICA: Update version to 20200214
    ACPI: PCI: Use scnprintf() for avoiding potential buffer overflow
    ACPI: fan: Use scnprintf() for avoiding potential buffer overflow
    ACPI: EC: Eliminate EC_FLAGS_QUERY_HANDSHAKE
    ACPI: EC: Do not clear boot_ec_is_ecdt in acpi_ec_add()
    ACPI: EC: Simplify acpi_ec_ecdt_start() and acpi_ec_init()
    ACPI: EC: Consolidate event handler installation code
    acpi/x86: ignore unspecified bit positions in the ACPI global lock field
    acpi/x86: add a kernel parameter to disable ACPI BGRT
    x86/acpi: make "asmlinkage" part first thing in the function definition
    ACPI: list_for_each_safe() -> list_for_each_entry_safe()
    ACPI: video: remove redundant assignments to variable result
    ACPI: OSL: Add missing __acquires/__releases annotations
    ACPI / battery: Cleanup Lenovo Ideapad Miix 320 DMI table entry
    ACPI / AC: Cleanup DMI quirk table
    ACPI: EC: Use fast path in acpi_ec_add() for DSDT boot EC
    ACPI: EC: Simplify acpi_ec_add()
    ACPI: EC: Drop AE_NOT_FOUND special case from ec_install_handlers()
    ACPI: EC: Avoid passing redundant argument to functions
    ACPI: EC: Avoid printing confusing messages in acpi_ec_setup()
    ...

    Linus Torvalds
     

30 Mar, 2020

9 commits

  • * acpi-ec:
    ACPI: EC: Eliminate EC_FLAGS_QUERY_HANDSHAKE
    ACPI: EC: Do not clear boot_ec_is_ecdt in acpi_ec_add()
    ACPI: EC: Simplify acpi_ec_ecdt_start() and acpi_ec_init()
    ACPI: EC: Consolidate event handler installation code
    ACPI: EC: Use fast path in acpi_ec_add() for DSDT boot EC
    ACPI: EC: Simplify acpi_ec_add()
    ACPI: EC: Drop AE_NOT_FOUND special case from ec_install_handlers()
    ACPI: EC: Avoid passing redundant argument to functions
    ACPI: EC: Avoid printing confusing messages in acpi_ec_setup()

    * acpi-fan:
    ACPI: fan: Use scnprintf() for avoiding potential buffer overflow

    * acpi-pci:
    ACPI: PCI: Use scnprintf() for avoiding potential buffer overflow

    Rafael J. Wysocki
     
  • * acpi-button:
    ACPI: Add new tiny-power-button driver to directly signal init
    ACPI: button: move HIDs to acpi/button.h

    * acpi-battery:
    ACPI / battery: Cleanup Lenovo Ideapad Miix 320 DMI table entry
    ACPI / AC: Cleanup DMI quirk table

    * acpi-osl:
    ACPI: OSL: Add missing __acquires/__releases annotations

    * acpi-video:
    ACPI: video: remove redundant assignments to variable result

    * acpi-misc:
    ACPI: list_for_each_safe() -> list_for_each_entry_safe()

    Rafael J. Wysocki
     
  • * acpica:
    ACPICA: Update version to 20200214
    ACPICA: Fix a couple of typos
    ACPICA: use acpi_size instead of u32 for prefix_path_length
    ACPICA: cast length arguement to acpi_ns_build_normalized_path() as u32
    ACPICA: cast the result of the pointer difference to u32
    ACPICA: Table Manager: Update comments in a function header
    ACPICA: Enable sleep button on ACPI legacy wake
    ACPICA: Fix a comment "enable" fixed events -> "disable" all fixed events.
    ACPICA: ASL-ASL+ converter: make root file a parameter for cv_init_file_tree
    ACPICA: ASL-ASL+ converter: remove function parameters from cv_init_file_tree()

    Rafael J. Wysocki
     
  • This is the result of squashing the following ACPICA commit ID's:
    6803997e5b4f3635cea6610b51ff69e29d251de3
    f31cdf8bfda22fe265c1a176d0e33d311c82a7f7

    This change fixes several problems with the support for the
    acpi_exec namespace init file (-fi option). Specifically, it
    fixes AE_ALREADY_EXISTS errors, as well as various seg faults.

    Link: https://github.com/acpica/acpica/commit/f31cdf8b
    Link: https://github.com/acpica/acpica/commit/6803997e
    Signed-off-by: Bob Moore
    Signed-off-by: Erik Kaneda
    Signed-off-by: Rafael J. Wysocki

    Bob Moore
     
  • ACPICA commit 422166b656565d180bb3aac712009bdce5e70cdd

    NHLT (Non-HDAudio Link Table) provides configuration of audio
    endpoints for Intel SST (Smart Sound Technology) DSP products.
    Similarly to other ACPI tables, data provided by BIOS may not
    describe it correctly, thus overriding is required.

    ACPI override mechanism checks for unknown signature before
    proceeding. Update known signatures array to support NHLT.

    Link: https://github.com/acpica/acpica/commit/422166b6
    Signed-off-by: Cezary Rojewski
    Signed-off-by: Bob Moore
    Signed-off-by: Erik Kaneda
    Signed-off-by: Rafael J. Wysocki

    Cezary Rojewski
     
  • This contains changes for the following ACPICA commit ID's:
    8f99a6ccd3b8e5c3d3d68c53fdbb054c2477eeb4
    d30647af53abd334cbcf6362387464ea647bac9e
    d3c5fb4cf5b2880d789c987eb847fc3de3774abc

    On 32-bit, the provided sprintf() is non-functional: with a size of
    ACPI_UINT32_MAX, String + Size will wrap, meaning End < Start, and
    acpi_ut_bound_string_output() will never output anything as a result.

    The symptom we saw of this was acpixtract failing to output anything.

    Link: https://github.com/acpica/acpica/commit/8f99a6cc
    Link: https://github.com/acpica/acpica/commit/d30647af
    Link: https://github.com/acpica/acpica/commit/d3c5fb4c
    Signed-off-by: MSathieu
    Signed-off-by: John Levon
    Signed-off-by: Bob Moore
    Signed-off-by: Erik Kaneda
    Signed-off-by: Rafael J. Wysocki

    John Levon
     
  • ACPICA commit 825c53661cacc7e3dab4844588201846143bd1b7

    This variable was re-defined in a file specific to acpiexec. Remove
    the redundant declaration and move the initialize to the debugger.

    Patch based on suggestions by David Seifert and Benjamin Berg.

    Link: https://github.com/acpica/acpica/commit/825c5366
    Reported-by: David Seifert
    Reported-by: Benjamin Berg
    Signed-off-by: Erik Kaneda
    Signed-off-by: Bob Moore
    Signed-off-by: Rafael J. Wysocki

    Erik Kaneda
     
  • ACPICA commit 811e69a59cb4189ebf8b882eba74c881f598a239

    The former was proposed during specification discussions but it was
    dropped. This keyword was introduced to the ACPICA code base by
    mistake so this commit changes the keyword representing Platform
    Communication Channel to be PCC.

    Link: https://github.com/acpica/acpica/commit/811e69a5
    Signed-off-by: Erik Kaneda
    Signed-off-by: Bob Moore
    Signed-off-by: Rafael J. Wysocki

    Erik Kaneda
     
  • * pm-core:
    PM: runtime: Add pm_runtime_get_if_active()

    * pm-sleep:
    PM: sleep: wakeup: Skip wakeup_source_sysfs_remove() if device is not there
    PM / hibernate: Remove unnecessary compat ioctl overrides
    PM: hibernate: fix docs for ioctls that return loff_t via pointer
    PM: sleep: wakeup: Use built-in RCU list checking
    PM: sleep: core: Use built-in RCU list checking

    * pm-acpi:
    ACPI: PM: s2idle: Refine active GPEs check
    ACPICA: Allow acpi_any_gpe_status_set() to skip one GPE
    ACPI: PM: s2idle: Fix comment in acpi_s2idle_prepare_late()

    * pm-domains:
    cpuidle: psci: Split psci_dt_cpu_init_idle()
    PM / Domains: Allow no domain-idle-states DT property in genpd when parsing

    Rafael J. Wysocki
     

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
     

28 Mar, 2020

1 commit

  • In acpi_get_psd_map() variable all_cpu_data[] can't be NULL and variable
    match_cpc_ptr has been checked before, no need check again at the end of
    the funchtion.

    Some additional optimizations can be made on top of that.

    Signed-off-by: Liguang Zhang
    [ rjw: Subject & changelog ]
    Signed-off-by: Rafael J. Wysocki

    Liguang Zhang
     

27 Mar, 2020

2 commits


26 Mar, 2020

1 commit

  • The current codebase makes use of the zero-length array language
    extension to the C90 standard, but the preferred mechanism to declare
    variable-length types such as these ones is a flexible array member[1][2],
    introduced in C99:

    struct foo {
    int stuff;
    struct boo array[];
    };

    By making use of the mechanism above, we will get a compiler warning
    in case the flexible array does not occur last in the structure, which
    will help us prevent some kind of undefined behavior bugs from being
    inadvertently introduced[3] to the codebase from now on.

    Also, notice that, dynamic memory allocations won't be affected by
    this change:

    "Flexible array members have incomplete type, and so the sizeof operator
    may not be applied. As a quirk of the original implementation of
    zero-length arrays, sizeof evaluates to zero."[1]

    This issue was found with the help of Coccinelle.

    [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
    [2] https://github.com/KSPP/linux/issues/21
    [3] commit 76497732932f ("cxgb3/l2t: Fix undefined behaviour")

    Signed-off-by: Gustavo A. R. Silva
    Link: https://lore.kernel.org/r/20200319195046.GA452@embeddedor.com
    Signed-off-by: Dan Williams

    Gustavo A. R. Silva
     

25 Mar, 2020

4 commits

  • Conflicts:
    arch/x86/events/intel/uncore.c

    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • The check for any active GPEs added by commit fdde0ff8590b ("ACPI:
    PM: s2idle: Prevent spurious SCIs from waking up the system") turns
    out to be insufficiently precise to prevent some systems from
    resuming prematurely due to a spurious EC wakeup, so refine it
    by first checking if any GPEs other than the EC GPE are active
    and skipping all of the SCIs coming from the EC that do not produce
    any genuine wakeup events after processing.

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=206629
    Fixes: fdde0ff8590b ("ACPI: PM: s2idle: Prevent spurious SCIs from waking up the system")
    Reported-by: Ondřej Caletka
    Tested-by: Ondřej Caletka
    Cc: 5.4+ # 5.4+
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     
  • The check carried out by acpi_any_gpe_status_set() is not precise enough
    for the suspend-to-idle implementation in Linux and in some cases it is
    necessary make it skip one GPE (specifically, the EC GPE) from the check
    to prevent a race condition leading to a premature system resume from
    occurring.

    For this reason, redefine acpi_any_gpe_status_set() to take the number
    of a GPE to skip as an argument.

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=206629
    Tested-by: Ondřej Caletka
    Cc: 5.4+ # 5.4+
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     
  • The new macro set has a consistent namespace and uses C99 initializers
    instead of the grufty C89 ones.

    Rename the local macro wrapper to X86_MATCH for consistency. It stays for
    readability sake.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Borislav Petkov
    Reviewed-by: Greg Kroah-Hartman
    Link: https://lkml.kernel.org/r/20200320131509.467730627@linutronix.de

    Thomas Gleixner
     

22 Mar, 2020

2 commits

  • Fix a comment in acpi_s2idle_prepare_late() that has become outdated
    after commit f0ac20c3f613 ("ACPI: EC: Fix flushing of pending work").

    Fixes: f0ac20c3f613 ("ACPI: EC: Fix flushing of pending work")
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     
  • Commit 3f8fd02b1bf1 ("mm/vmalloc: Sync unmappings in
    __purge_vmap_area_lazy()") introduced a call to vmalloc_sync_all() in
    the vunmap() code-path. While this change was necessary to maintain
    correctness on x86-32-pae kernels, it also adds additional cycles for
    architectures that don't need it.

    Specifically on x86-64 with CONFIG_VMAP_STACK=y some people reported
    severe performance regressions in micro-benchmarks because it now also
    calls the x86-64 implementation of vmalloc_sync_all() on vunmap(). But
    the vmalloc_sync_all() implementation on x86-64 is only needed for newly
    created mappings.

    To avoid the unnecessary work on x86-64 and to gain the performance
    back, split up vmalloc_sync_all() into two functions:

    * vmalloc_sync_mappings(), and
    * vmalloc_sync_unmappings()

    Most call-sites to vmalloc_sync_all() only care about new mappings being
    synchronized. The only exception is the new call-site added in the
    above mentioned commit.

    Shile Zhang directed us to a report of an 80% regression in reaim
    throughput.

    Fixes: 3f8fd02b1bf1 ("mm/vmalloc: Sync unmappings in __purge_vmap_area_lazy()")
    Reported-by: kernel test robot
    Reported-by: Shile Zhang
    Signed-off-by: Joerg Roedel
    Signed-off-by: Andrew Morton
    Tested-by: Borislav Petkov
    Acked-by: Rafael J. Wysocki [GHES]
    Cc: Dave Hansen
    Cc: Andy Lutomirski
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc:
    Link: http://lkml.kernel.org/r/20191009124418.8286-1-joro@8bytes.org
    Link: https://lists.01.org/hyperkitty/list/lkp@lists.01.org/thread/4D3JPPHBNOSPFK2KEPC6KGKS6J25AIDB/
    Link: http://lkml.kernel.org/r/20191113095530.228959-1-shile.zhang@linux.alibaba.com
    Signed-off-by: Linus Torvalds

    Joerg Roedel
     

18 Mar, 2020

1 commit

  • The NDD_ALIASING flag is used to indicate where pmem capacity might
    alias with blk capacity and require labeling. It is also used to
    indicate whether the DIMM supports labeling. Separate this latter
    capability into its own flag so that the NDD_ALIASING flag is scoped to
    true aliased configurations.

    To my knowledge aliased configurations only exist in the ACPI spec,
    there are no known platforms that ship this support in production.

    This clarity allows namespace-capacity alignment constraints around
    interleave-ways to be relaxed.

    Cc: Vishal Verma
    Cc: Oliver O'Halloran
    Reviewed-by: Jeff Moyer
    Reviewed-by: Aneesh Kumar K.V
    Link: https://lore.kernel.org/r/158041477856.3889308.4212605617834097674.stgit@dwillia2-desk3.amr.corp.intel.com
    Signed-off-by: Dan Williams

    Dan Williams