26 Apr, 2018

1 commit

  • [ Upstream commit 54ddce7062242036402242242c07c60c0b505f84 ]

    The battery code uses acpi_device->dep_unmet to check for unmet deps and
    if there are unmet deps it does not bind to the device to avoid errors
    about missing OpRegions when calling ACPI methods on the device.

    The missing OpRegions when there are unmet deps problem also applies to
    the _STA method of some battery devices and calling it too early results
    in errors like these:

    [ 0.123579] ACPI Error: No handler for Region [ECRM] (00000000ba9edc4c)
    [GenericSerialBus] (20170831/evregion-166)
    [ 0.123601] ACPI Error: Region GenericSerialBus (ID=9) has no handler
    (20170831/exfldio-299)
    [ 0.123618] ACPI Error: Method parse/execution failed
    \_SB.I2C1.BAT1._STA, AE_NOT_EXIST (20170831/psparse-550)

    This commit fixes these errors happening when acpi_get_bus_status gets
    called by checking dep_unmet for battery devices and reporting a status
    of 0 until all dependencies are met.

    Signed-off-by: Hans de Goede
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Hans de Goede
     

09 Mar, 2018

1 commit

  • commit 36904703aeeeb6cd31993f1353c8325006229f9a upstream.

    The i2c touchpad on Dell XPS 9570 and Precision M5530 doesn't work out
    of box.

    The touchpad relies on its _INI method to update its _HID value from
    XXXX0000 to SYNA2393.

    Also, the _STA relies on value of I2CN to report correct status.

    Set acpi_gbl_parse_table_as_term_list so the value of I2CN can be
    correctly set up, and _INI can get run. The ACPI table in this machine
    is designed to get parsed this way.

    Also, change the quirk table to a more generic name.

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=198515
    Signed-off-by: Kai-Heng Feng
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Kai Heng Feng
     

14 Sep, 2017

1 commit


20 Jul, 2017

1 commit

  • ACPICA commit 3d837b5d4b1033942b4d91c7d3801a09c3157918

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

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

    Lv Zheng
     

11 Jul, 2017

1 commit

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

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

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

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

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

    Rafael J. Wysocki
     

05 Jul, 2017

1 commit


07 Jun, 2017

1 commit

  • acpi_evaluate_dsm() and friends take a pointer to a raw buffer of 16
    bytes. Instead we convert them to use guid_t type. At the same time we
    convert current users.

    acpi_str_to_uuid() becomes useless after the conversion and it's safe to
    get rid of it.

    Acked-by: Rafael J. Wysocki
    Cc: Borislav Petkov
    Acked-by: Dan Williams
    Cc: Amir Goldstein
    Reviewed-by: Jarkko Sakkinen
    Reviewed-by: Jani Nikula
    Acked-by: Jani Nikula
    Cc: Ben Skeggs
    Acked-by: Benjamin Tissoires
    Acked-by: Joerg Roedel
    Acked-by: Adrian Hunter
    Cc: Yisen Zhuang
    Acked-by: Bjorn Helgaas
    Acked-by: Felipe Balbi
    Acked-by: Mathias Nyman
    Reviewed-by: Heikki Krogerus
    Acked-by: Mark Brown
    Signed-off-by: Andy Shevchenko
    Signed-off-by: Christoph Hellwig

    Andy Shevchenko
     

06 Jun, 2017

1 commit


27 Apr, 2017

1 commit

  • Several Bay / Cherry Trail devices (all of which ship with Windows 10) hide
    the LPSS PWM controller in ACPI, typically the _STA method looks like this:

    Method (_STA, 0, NotSerialized) // _STA: Status
    {
    If (OSID == One)
    {
    Return (Zero)
    }

    Return (0x0F)
    }

    Where OSID is some dark magic seen in all Cherry Trail ACPI tables making
    the machine behave differently depending on which OS it *thinks* it is
    booting, this gets set in a number of ways which we cannot control, on
    some newer machines it simple hardcoded to "One" aka win10.

    This causes the PWM controller to get hidden, which means Linux cannot
    control the backlight level on cht based tablets / laptops.

    Since loading the driver for this does no harm (the only in kernel user
    of it is the i915 driver, which will only uses it when it needs it), this
    commit makes acpi_bus_get_status() always set status to ACPI_STA_DEFAULT
    for the LPSS PWM device, fixing the lack of backlight control.

    Signed-off-by: Hans de Goede
    [ rjw: Rename the new file to utils.c ]
    Signed-off-by: Rafael J. Wysocki

    Hans de Goede
     

11 Mar, 2017

1 commit

  • Revert: dc6db24d2476 ("x86/acpi: Set persistent cpuid nodeid mapping when booting")

    The mapping of "cpuid nodeid" is established at boot time via ACPI
    tables to keep associations of workqueues and other node related items
    consistent across cpu hotplug.

    But, ACPI tables are unreliable and failures with that boot time mapping
    have been reported on machines where the ACPI table and the physical
    information which is retrieved at actual hotplug is inconsistent.

    Revert the mapping implementation so it can be replaced with a less error
    prone approach.

    Signed-off-by: Dou Liyang
    Tested-by: Xiaolong Ye
    Cc: rjw@rjwysocki.net
    Cc: linux-acpi@vger.kernel.org
    Cc: guzheng1@huawei.com
    Cc: izumi.taku@jp.fujitsu.com
    Cc: lenb@kernel.org
    Link: http://lkml.kernel.org/r/1488528147-2279-2-git-send-email-douly.fnst@cn.fujitsu.com
    Signed-off-by: Thomas Gleixner

    Dou Liyang
     

07 Feb, 2017

1 commit

  • When using devicetree stuff like i2c_client.name or spi_device.modalias
    is initialized to the first DT compatible id with the vendor prefix
    stripped. Since some drivers rely on this try to replicate it when using
    ACPI with DT ids.

    Signed-off-by: Dan O'Donovan
    Reviewed-by: Mika Westerberg
    Reviewed-by: Andy Shevchenko
    Reviewed-by: Jarkko Nikula
    Tested-by: Jarkko Nikula
    Signed-off-by: Rafael J. Wysocki

    Dan O'Donovan
     

22 Dec, 2016

1 commit

  • * acpica:
    ACPI / osl: Remove deprecated acpi_get_table_with_size()/early_acpi_os_unmap_memory()
    ACPI / osl: Remove acpi_get_table_with_size()/early_acpi_os_unmap_memory() users
    ACPICA: Tables: Allow FADT to be customized with virtual address
    ACPICA: Tables: Back port acpi_get_table_with_size() and early_acpi_os_unmap_memory() from Linux kernel

    * acpi-scan:
    ACPI: do not warn if _BQC does not exist

    Rafael J. Wysocki
     

21 Dec, 2016

1 commit


30 Nov, 2016

1 commit

  • Rename CONFIG_SCHED_ITMT for Intel Turbo Boost Max Technology 3.0
    to CONFIG_SCHED_MC_PRIO. This makes the configuration extensible
    in future to other architectures that wish to similarly establish
    CPU core priorities support in the scheduler.

    The description in Kconfig is updated to reflect this change with
    added details for better clarity. The configuration is explicitly
    default-y, to enable the feature on CPUs that have this feature.

    It has no effect on non-TBM3 CPUs.

    Signed-off-by: Tim Chen
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Srinivas Pandruvada
    Cc: Thomas Gleixner
    Cc: bp@suse.de
    Cc: jolsa@redhat.com
    Cc: linux-acpi@vger.kernel.org
    Cc: linux-pm@vger.kernel.org
    Cc: rjw@rjwysocki.net
    Link: http://lkml.kernel.org/r/2b2ee29d93e3f162922d72d0165a1405864fbb23.1480444902.git.tim.c.chen@linux.intel.com
    Signed-off-by: Ingo Molnar

    Tim Chen
     

25 Nov, 2016

2 commits

  • Set the OSC_SB_CPC_DIVERSE_HIGH_SUPPORT (bit 12) to enable diverse
    core support.

    This is required to enable the BIOS support of the Intel Turbo Boost Max
    Technology 3.0 feature.

    Signed-off-by: Srinivas Pandruvada
    Signed-off-by: Tim Chen
    Cc: linux-pm@vger.kernel.org
    Cc: peterz@infradead.org
    Cc: jolsa@redhat.com
    Cc: rjw@rjwysocki.net
    Cc: linux-acpi@vger.kernel.org
    Cc: bp@suse.de
    Link: http://lkml.kernel.org/r/a023623a727e86040a1715797055f6402caefd7e.1479844244.git.tim.c.chen@linux.intel.com
    Signed-off-by: Thomas Gleixner

    Srinivas Pandruvada
     
  • Need to set platform wide _OSC bits to enable CPPC and CPPC version 2.
    If platform supports CPPC, then BIOS exposes CPPC tables.

    The primary reason to enable CPPC support is to get the maximum
    performance of each CPU to check and enable Intel Turbo Boost Max
    Technology 3.0 (ITMT).

    Signed-off-by: Srinivas Pandruvada
    Signed-off-by: Tim Chen
    Cc: linux-pm@vger.kernel.org
    Cc: peterz@infradead.org
    Cc: jolsa@redhat.com
    Cc: rjw@rjwysocki.net
    Cc: linux-acpi@vger.kernel.org
    Cc: bp@suse.de
    Link: http://lkml.kernel.org/r/a696f6b17843cee9a542482fae6abab087be9587.1479844244.git.tim.c.chen@linux.intel.com
    Signed-off-by: Thomas Gleixner

    Srinivas Pandruvada
     

04 Oct, 2016

2 commits

  • Pull irq updates from Thomas Gleixner:
    "The irq departement proudly presents:

    - A rework of the core infrastructure to optimally spread interrupt
    for multiqueue devices. The first version was a bit naive and
    failed to take thread siblings and other details into account.
    Developed in cooperation with Christoph and Keith.

    - Proper delegation of softirqs to ksoftirqd, so if ksoftirqd is
    active then no further softirq processsing on interrupt return
    happens. Otherwise we try to delegate and still run another batch
    of network packets in the irq return path, which then tries to
    delegate to ksoftirqd .....

    - A proper machine parseable sysfs based alternative for
    /proc/interrupts.

    - ACPI support for the GICV3-ITS and ARM interrupt remapping

    - Two new irq chips from the ARM SoC zoo: STM32-EXTI and MVEBU-PIC

    - A new irq chip for the JCore (SuperH)

    - The usual pile of small fixlets in core and irqchip drivers"

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (42 commits)
    softirq: Let ksoftirqd do its job
    genirq: Make function __irq_do_set_handler() static
    ARM/dts: Add EXTI controller node to stm32f429
    ARM/STM32: Select external interrupts controller
    drivers/irqchip: Add STM32 external interrupts support
    Documentation/dt-bindings: Document STM32 EXTI controller bindings
    irqchip/mips-gic: Use for_each_set_bit to iterate over local IRQs
    pci/msi: Retrieve affinity for a vector
    genirq/affinity: Remove old irq spread infrastructure
    genirq/msi: Switch to new irq spreading infrastructure
    genirq/affinity: Provide smarter irq spreading infrastructure
    genirq/msi: Add cpumask allocation to alloc_msi_entry
    genirq: Expose interrupt information through sysfs
    irqchip/gicv3-its: Use MADT ITS subtable to do PCI/MSI domain initialization
    irqchip/gicv3-its: Factor out PCI-MSI part that might be reused for ACPI
    irqchip/gicv3-its: Probe ITS in the ACPI way
    irqchip/gicv3-its: Refactor ITS DT init code to prepare for ACPI
    irqchip/gicv3-its: Cleanup for ITS domain initialization
    PCI/MSI: Setup MSI domain on a per-device basis using IORT ACPI table
    ACPI: Add new IORT functions to support MSI domain handling
    ...

    Linus Torvalds
     
  • Pull x86 apic updates from Ingo Molnar:
    "The main changes are:

    - Persistent CPU/node numbering across CPU hotplug/unplug events.
    This is a pretty involved series of changes that first fetches all
    the information during bootup and then uses it for the various
    hotplug/unplug methods. (Gu Zheng, Dou Liyang)

    - IO-APIC hot-add/remove fixes and enhancements. (Rui Wang)

    - ... various fixes, cleanups and enhancements"

    * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (22 commits)
    x86/apic: Fix silent & fatal merge conflict in __generic_processor_info()
    acpi: Fix broken error check in map_processor()
    acpi: Validate processor id when mapping the processor
    acpi: Provide mechanism to validate processors in the ACPI tables
    x86/acpi: Set persistent cpuid nodeid mapping when booting
    x86/acpi: Enable MADT APIs to return disabled apicids
    x86/acpi: Introduce persistent storage for cpuid apicid mapping
    x86/acpi: Enable acpi to register all possible cpus at boot time
    x86/numa: Online memory-less nodes at boot time
    x86/apic: Get rid of apic_version[] array
    x86/apic: Order irq_enter/exit() calls correctly vs. ack_APIC_irq()
    x86/ioapic: Ignore root bridges without a companion ACPI device
    x86/apic: Update comment about disabling processor focus
    x86/smpboot: Check APIC ID before setting up default routing
    x86/ioapic: Fix IOAPIC failing to request resource
    x86/ioapic: Fix lost IOAPIC resource after hot-removal and hotadd
    x86/ioapic: Fix setup_res() failing to get resource
    x86/ioapic: Support hot-removal of IOAPICs present during boot
    x86/ioapic: Change prototype of acpi_ioapic_add()
    x86/apic, ACPI: Fix incorrect assignment when handling apic/x2apic entries
    ...

    Linus Torvalds
     

26 Sep, 2016

1 commit

  • This patch enables the following initialization order for the
    new table loading mode (which is enabled by setting
    acpi_gbl_parse_table_as_term_list to TRUE):

    1. Install default region handlers (SystemMemory, SystemIo, PciConfig,
    EmbeddedControl via ECDT) without evaluating _REG;

    2. Load the table and execute the module level AML opcodes instantly.

    Signed-off-by: Lv Zheng
    [ rjw: Subject ]
    Signed-off-by: Rafael J. Wysocki

    Lv Zheng
     

22 Sep, 2016

1 commit

  • The whole patch-set aims at making cpuid nodeid mapping persistent. So that,
    when node online/offline happens, cache based on cpuid nodeid mapping such as
    wq_numa_possible_cpumask will not cause any problem.
    It contains 4 steps:
    1. Enable apic registeration flow to handle both enabled and disabled cpus.
    2. Introduce a new array storing all possible cpuid apicid mapping.
    3. Enable _MAT and MADT relative apis to return non-present or disabled cpus' apicid.
    4. Establish all possible cpuid nodeid mapping.

    This patch finishes step 4.

    This patch set the persistent cpuid nodeid mapping for all enabled/disabled
    processors at boot time via an additional acpi namespace walk for processors.

    [ tglx: Remove the unneeded exports ]

    Signed-off-by: Gu Zheng
    Signed-off-by: Tang Chen
    Signed-off-by: Zhu Guihua
    Signed-off-by: Dou Liyang
    Acked-by: Ingo Molnar
    Cc: mika.j.penttila@gmail.com
    Cc: len.brown@intel.com
    Cc: rafael@kernel.org
    Cc: rjw@rjwysocki.net
    Cc: yasu.isimatu@gmail.com
    Cc: linux-mm@kvack.org
    Cc: linux-acpi@vger.kernel.org
    Cc: isimatu.yasuaki@jp.fujitsu.com
    Cc: gongzhaogang@inspur.com
    Cc: tj@kernel.org
    Cc: izumi.taku@jp.fujitsu.com
    Cc: cl@linux.com
    Cc: chen.tang@easystack.cn
    Cc: akpm@linux-foundation.org
    Cc: kamezawa.hiroyu@jp.fujitsu.com
    Cc: lenb@kernel.org
    Link: http://lkml.kernel.org/r/1472114120-3281-6-git-send-email-douly.fnst@cn.fujitsu.com
    Signed-off-by: Thomas Gleixner

    Gu Zheng
     

13 Sep, 2016

1 commit

  • IORT shows representation of IO topology for ARM based systems.
    It describes how various components are connected together on
    parent-child basis e.g. PCI RC -> SMMU -> ITS. Also see IORT spec.
    http://infocenter.arm.com/help/topic/com.arm.doc.den0049b/DEN0049B_IO_Remapping_Table.pdf

    Initial support allows to detect IORT table presence and save its
    root pointer obtained through acpi_get_table(). The pointer validity
    depends on acpi_gbl_permanent_mmap because if acpi_gbl_permanent_mmap
    is not set while using IORT nodes we would dereference unmapped pointers.

    For the aforementioned reason call acpi_iort_init() from acpi_init()
    which guarantees acpi_gbl_permanent_mmap to be set at that point.

    Add generic helpers which are helpful for scanning and retrieving
    information from IORT table content. List of the most important helpers:
    - iort_find_dev_node() finds IORT node for a given device
    - iort_node_map_rid() maps device RID and returns IORT node which provides
    final translation

    IORT support is placed under drivers/acpi/arm64/ new directory due to its
    ARM64 specific nature. The code there is considered only for ARM64.
    The long term plan is to keep all ARM64 specific tables support
    in this place e.g. GTDT table.

    Signed-off-by: Tomasz Nowicki
    Acked-by: Rafael J. Wysocki
    Reviewed-by: Hanjun Guo
    Reviewed-by: Lorenzo Pieralisi
    Signed-off-by: Marc Zyngier

    Tomasz Nowicki
     

25 Jul, 2016

2 commits

  • * acpi-processor:
    ACPI: enable ACPI_PROCESSOR_IDLE on ARM64
    arm64: add support for ACPI Low Power Idle(LPI)
    drivers: firmware: psci: initialise idle states using ACPI LPI
    cpuidle: introduce CPU_PM_CPU_IDLE_ENTER macro for ARM{32, 64}
    arm64: cpuidle: drop __init section marker to arm_cpuidle_init
    ACPI / processor_idle: Add support for Low Power Idle(LPI) states
    ACPI / processor_idle: introduce ACPI_PROCESSOR_CSTATE

    * acpi-cppc:
    mailbox: pcc: Add PCC request and free channel declarations
    ACPI / CPPC: Prevent cpc_desc_ptr points to the invalid data
    ACPI: CPPC: Return error if _CPC is invalid on a CPU

    * acpi-apei:
    ACPI / APEI: Add Boot Error Record Table (BERT) support
    ACPI / einj: Make error paths more talkative
    ACPI / einj: Convert EINJ_PFX to proper pr_fmt

    * acpi-sleep:
    ACPI: Execute _PTS before system reboot

    Rafael J. Wysocki
     
  • * acpi-bus:
    ACPI / bus: Support for platform initiated graceful shutdown
    ACPI / bus: Correct the comments about acpi_subsystem_init()
    ACPI / bus: Use acpi_handle_debug() in acpi_print_osc_error()

    * acpi-pci:
    ACPI / PCI: make pci_slot explicitly non-modular
    ACPI / PCI: pci_slot: Use generic pr_debug utility
    ACPI / PCI: pci_slot: Use more common logging style

    * acpica:
    ACPICA: Linux: Enable ACPI_MUTEX_DEBUG for Linux kernel

    * acpi-doc:
    ACPI / debugger: Add AML debugger documentation
    ACPI: Add documentation describing ACPICA release automation

    Rafael J. Wysocki
     

22 Jul, 2016

1 commit

  • ACPI 6.0 introduced an optional object _LPI that provides an alternate
    method to describe Low Power Idle states. It defines the local power
    states for each node in a hierarchical processor topology. The OSPM can
    use _LPI object to select a local power state for each level of processor
    hierarchy in the system. They used to produce a composite power state
    request that is presented to the platform by the OSPM.

    Since multiple processors affect the idle state for any non-leaf hierarchy
    node, coordination of idle state requests between the processors is
    required. ACPI supports two different coordination schemes: Platform
    coordinated and OS initiated.

    This patch adds initial support for Platform coordination scheme of LPI.

    Signed-off-by: Sudeep Holla
    Signed-off-by: Rafael J. Wysocki

    Sudeep Holla
     

09 Jul, 2016

1 commit

  • Add support for ACPI reconfiguration notifiers to allow subsystems
    to react to changes in the ACPI tables that happen after the initial
    enumeration. This is similar with the way dynamic device tree
    notifications work.

    The reconfigure notifications supported for now are device add and
    device remove.

    Since ACPICA allows only one table notification handler, this patch
    makes the table notifier function generic and moves it out of the
    sysfs specific code.

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

    Octavian Purdila
     

07 Jul, 2016

1 commit

  • This patch adds support for platform initited graceful shutdown as
    described in sections 5.6.6(Table-143) and 6.3.5.1 of ACPI 6.1 spec

    The OSPM will get a graceful shutdown request via a Notify operator
    on \_SB device with a value of 0x81 per section 5.6.6. Following the
    shutdown request from platform the OSPM needs to follow the
    processing sequence as described in section 6.2.5.1.

    v3
    * Switched to regular work with delays from delayed work
    * Dropped changes to actypes.h
    * Small style changes

    v2
    * Switched from standalone driver to a simple notify handler

    v1
    * Initial

    Cc: "Rafael J. Wysocki"
    Signed-off-by: Prashanth Prakash
    Signed-off-by: Rafael J. Wysocki

    Prakash, Prashanth
     

06 Jul, 2016

1 commit

  • In acpi_subsystem_init(), function acpi_enable_subsystem() is
    called to do the real job. However with different flags passed to
    acpi_enable_subsystem(), different code is executed.

    In acpi_subsystem_init(), with "~ACPI_NO_ACPI_ENABLE" passed in, it
    will only switch over the platform to the ACPI mode. The remaining
    part of acpi_enable_subsystem() is done when acpi_bus_init() is
    called.

    So the comments above acpi_subsystem_init() is not exact, change it
    here.

    Signed-off-by: Baoquan He
    Signed-off-by: Rafael J. Wysocki

    Baoquan He
     

23 Jun, 2016

1 commit


07 Jun, 2016

1 commit

  • According to the Windows probing result, during the table loading, the EC
    device described in the ECDT should be used. And the ECDT EC is also
    effective during the period the namespace objects are initialized (we can
    see a separate process executing _STA/_INI on Windows before executing
    other device specific control methods, for example, EC._REG). During the
    device enumration, the EC device described in the DSDT should be used. But
    there are differences between Linux and Windows around the device probing
    order. Thus in Linux, we should enable the DSDT EC as early as possible
    before enumerating devices in order not to trigger issues related to the
    device enumeration order differences.

    This patch thus converts acpi_boot_ec_enable() into acpi_ec_dsdt_probe() to
    fix the gap. This also fixes a user reported regression triggered after we
    switched the "table loading"/"ECDT support" to be ACPI spec 2.0 compliant.

    Fixes: 59f0aa9480cf (ACPI 2.0 / ECDT: Remove early namespace reference from EC)
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=119261
    Reported-and-tested-by: Gabriele Mazzotta
    Signed-off-by: Lv Zheng
    Signed-off-by: Rafael J. Wysocki

    Lv Zheng
     

09 Apr, 2016

1 commit

  • With wrong ECDT fixes reverted, it is possible to put ECDT probing before
    acpi_enable_subsystem().

    But the ultimate purpose of ECDT re-enabling is to put the ECDT probing
    before the namespace initialization (acpi_load_tables()). This patch
    achieves this with protections so that we can enable it later when all
    necessary corrections are upstreamed.

    Link 4: https://bugzilla.kernel.org/show_bug.cgi?id=112911
    Signed-off-by: Lv Zheng
    Tested-by: Chris Bainbridge
    Signed-off-by: Rafael J. Wysocki

    Lv Zheng
     

02 Apr, 2016

1 commit


26 Mar, 2016

1 commit

  • There are several reports of freeze on enabling HWP (Hardware PStates)
    feature on Skylake-based systems by the Intel P-states driver. The root
    cause is identified as the HWP interrupts causing BIOS code to freeze.

    HWP interrupts use the thermal LVT which can be handled by Linux
    natively, but on the affected Skylake-based systems SMM will respond
    to it by default. This is a problem for several reasons:
    - On the affected systems the SMM thermal LVT handler is broken (it
    will crash when invoked) and a BIOS update is necessary to fix it.
    - With thermal interrupt handled in SMM we lose all of the reporting
    features of the arch/x86/kernel/cpu/mcheck/therm_throt driver.
    - Some thermal drivers like x86-package-temp depend on the thermal
    threshold interrupts signaled via the thermal LVT.
    - The HWP interrupts are useful for debugging and tuning
    performance (if the kernel can handle them).
    The native handling of thermal interrupts needs to be enabled
    because of that.

    This requires some way to tell SMM that the OS can handle thermal
    interrupts. That can be done by using _OSC/_PDC in processor
    scope very early during ACPI initialization.

    The meaning of _OSC/_PDC bit 12 in processor scope is whether or
    not the OS supports native handling of interrupts for Collaborative
    Processor Performance Control (CPPC) notifications. Since on
    HWP-capable systems CPPC is a firmware interface to HWP, setting
    this bit effectively tells the firmware that the OS will handle
    thermal interrupts natively going forward.

    For details on _OSC/_PDC refer to:
    http://www.intel.com/content/www/us/en/standards/processor-vendor-specific-acpi-specification.html

    To implement the _OSC/_PDC handshake as described, introduce a new
    function, acpi_early_processor_osc(), that walks the ACPI
    namespace looking for ACPI processor objects and invokes _OSC for
    them with bit 12 in the capabilities buffer set and terminates the
    namespace walk on the first success.

    Also modify intel_thermal_interrupt() to clear HWP status bits in
    the HWP_STATUS MSR to acknowledge HWP interrupts (which prevents
    them from firing continuously).

    Signed-off-by: Srinivas Pandruvada
    [ rjw: Subject & changelog, function rename ]
    Signed-off-by: Rafael J. Wysocki

    Srinivas Pandruvada
     

17 Feb, 2016

1 commit


12 Jan, 2016

1 commit

  • * acpi-scan:
    ACPI: Fix white space in a structure definition
    ACPI / utils: Add acpi_dev_present()
    ACPI / scan: Fix acpi_bus_id_list bookkeeping
    ACPI / scan: set status to 0 if _STA failed

    * acpi-bus:
    ACPI / bus: Show _OSC UUID when _OSC fails
    ACPI / bus: Tidy up _OSC error spacing

    * acpi-osl:
    ACPI / OSL: Add kerneldoc comments to memory mapping functions

    * acpi-pm:
    ACPI / PM: Support D3 COLD device in old BIOS for ZPODD

    Rafael J. Wysocki
     

22 Dec, 2015

2 commits


15 Dec, 2015

2 commits

  • This patch converts AML debugger into a loadable module.

    Note that, it implements driver unloading at the level dependent on the
    module reference count. Which means if ACPI debugger is being used by a
    userspace program, "rmmod acpi_dbg" should result in failure.

    Signed-off-by: Lv Zheng
    Signed-off-by: Rafael J. Wysocki

    Lv Zheng
     
  • This patch adds /sys/kernel/debug/acpi/acpidbg, which can be used by
    userspace programs to access ACPICA debugger functionalities.

    Known issue:
    1. IO flush support
    acpi_os_notify_command_complete() and acpi_os_wait_command_ready() can
    be used by acpi_dbg module to implement .flush() filesystem operation.
    While this patch doesn't go that far. It then becomes userspace tool's
    duty now to flush old commands before executing new batch mode commands.

    Signed-off-by: Lv Zheng
    Signed-off-by: Rafael J. Wysocki

    Lv Zheng
     

15 Sep, 2015

1 commit


01 Sep, 2015

1 commit

  • * acpi-pm:
    ACPI / bus: Move duplicate code to a separate new function
    mfd: Add support for Intel Sunrisepoint LPSS devices
    dmaengine: add a driver for Intel integrated DMA 64-bit
    mfd: make mfd_remove_devices() iterate in reverse order
    driver core: implement device_for_each_child_reverse()
    klist: implement klist_prev()
    Driver core: wakeup the parent device before trying probe
    ACPI / PM: Attach ACPI power domain only once
    PM / QoS: Make it possible to expose device latency tolerance to userspace
    ACPI / PM: Update the copyright notice and description of power.c

    Rafael J. Wysocki