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
     

04 Dec, 2015

1 commit


01 Dec, 2015

1 commit

  • Hi,

    For a brief moment I was tricked into thinking that:

    In-kernel debugger (EXPERIMENTAL) (ACPI_DEBUGGER) [N/y/?] (NEW)

    might be something useful. Better describe the feature to reduce
    such confusion.

    Signed-off-by: Peter Zijlstra (Intel)
    Signed-off-by: Rafael J. Wysocki

    Peter Zijlstra
     

02 Nov, 2015

1 commit

  • * acpi-processor:
    ACPI / CPPC: Fix potential memory leak
    ACPI / CPPC: signedness bug in register_pcc_channel()
    ACPI: Allow selection of the ACPI processor driver for ARM64
    CPPC: Probe for CPPC tables for each ACPI Processor object
    ACPI: Add weak routines for ACPI CPU Hotplug
    ACPI / CPPC: Add a CPUFreq driver for use with CPPC
    ACPI: Introduce CPU performance controls using CPPC

    Rafael J. Wysocki
     

22 Oct, 2015

1 commit

  • This patch enables ACPICA debugger files using a configurable
    CONFIG_ACPI_DEBUGGER configuration item. Those debugger related code that
    was originally masked as ACPI_FUTURE_USAGE now gets unmasked.

    Necessary OSL stubs are also added in this patch:
    1. acpi_os_readable(): This should be arch specific in Linux, while this
    patch doesn't introduce real implementation and a complex mechanism to
    allow architecture specific acpi_os_readable() to be implemented to
    validate the address. It may be done by future commits.
    2. acpi_os_get_line(): This is used to obtain debugger command input. This
    patch only introduces a simple KDB concept example in it and the
    example should be co-working with the code implemented in
    acpi_os_printf(). Since this KDB example won't be compiled unless
    ENABLE_DEBUGGER is defined and it seems Linux has already stopped to
    use ENABLE_DEBUGGER, thus do not expect it can work properly.

    This patch also cleans up all other ACPI_FUTURE_USAGE surroundings
    accordingly.
    1. Since linkage error can be automatically detected, declaration in the
    headers needn't be surrounded by ACPI_FUTURE_USAGE.
    So only the following separate exported fuction bodies are masked by
    this macro (other exported fucntions may have already been masked at
    entire module level via drivers/acpi/acpica/Makefile):
    acpi_install_exception_handler()
    acpi_subsystem_status()
    acpi_get_system_info()
    acpi_get_statistics()
    acpi_install_initialization_handler()
    2. Since strip can automatically zap the no-user functions, functions that
    are not marked with ACPI_EXPORT_SYMBOL() needn't get surrounded by
    ACPI_FUTURE_USAGE.
    So the following function which is not used by Linux kernel now won't
    get surrounded by this macro:
    acpi_ps_get_name()

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

    Lv Zheng
     

13 Oct, 2015

2 commits

  • Now that the ACPI processor driver has been decoupled from
    the C states and P states functionality, make it selectable on
    ARM64 so that it can be used by others e.g. CPPC.

    The C states and P states code is selected only on X86 or
    IA64 until the relevant support is added on ARM64.

    Signed-off-by: Ashwin Chaugule
    Signed-off-by: Rafael J. Wysocki

    Ashwin Chaugule
     
  • CPPC stands for Collaborative Processor Performance Controls
    and is defined in the ACPI v5.0+ spec. It describes CPU
    performance controls on an abstract and continuous scale
    allowing the platform (e.g. remote power processor) to flexibly
    optimize CPU performance with its knowledge of power budgets
    and other architecture specific knowledge.

    This patch adds a shim which exports commonly used functions
    to get and set CPPC specific controls for each CPU. This enables
    CPUFreq drivers to gather per CPU performance data and use
    with exisiting governors or even allows for customized governors
    which are implemented inside CPUFreq drivers.

    Signed-off-by: Ashwin Chaugule
    Reviewed-by: Al Stone
    Signed-off-by: Rafael J. Wysocki

    Ashwin Chaugule
     

09 Sep, 2015

1 commit

  • Pull libnvdimm updates from Dan Williams:
    "This update has successfully completed a 0day-kbuild run and has
    appeared in a linux-next release. The changes outside of the typical
    drivers/nvdimm/ and drivers/acpi/nfit.[ch] paths are related to the
    removal of IORESOURCE_CACHEABLE, the introduction of memremap(), and
    the introduction of ZONE_DEVICE + devm_memremap_pages().

    Summary:

    - Introduce ZONE_DEVICE and devm_memremap_pages() as a generic
    mechanism for adding device-driver-discovered memory regions to the
    kernel's direct map.

    This facility is used by the pmem driver to enable pfn_to_page()
    operations on the page frames returned by DAX ('direct_access' in
    'struct block_device_operations').

    For now, the 'memmap' allocation for these "device" pages comes
    from "System RAM". Support for allocating the memmap from device
    memory will arrive in a later kernel.

    - Introduce memremap() to replace usages of ioremap_cache() and
    ioremap_wt(). memremap() drops the __iomem annotation for these
    mappings to memory that do not have i/o side effects. The
    replacement of ioremap_cache() with memremap() is limited to the
    pmem driver to ease merging the api change in v4.3.

    Completion of the conversion is targeted for v4.4.

    - Similar to the usage of memcpy_to_pmem() + wmb_pmem() in the pmem
    driver, update the VFS DAX implementation and PMEM api to provide
    persistence guarantees for kernel operations on a DAX mapping.

    - Convert the ACPI NFIT 'BLK' driver to map the block apertures as
    cacheable to improve performance.

    - Miscellaneous updates and fixes to libnvdimm including support for
    issuing "address range scrub" commands, clarifying the optimal
    'sector size' of pmem devices, a clarification of the usage of the
    ACPI '_STA' (status) property for DIMM devices, and other minor
    fixes"

    * tag 'libnvdimm-for-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm: (34 commits)
    libnvdimm, pmem: direct map legacy pmem by default
    libnvdimm, pmem: 'struct page' for pmem
    libnvdimm, pfn: 'struct page' provider infrastructure
    x86, pmem: clarify that ARCH_HAS_PMEM_API implies PMEM mapped WB
    add devm_memremap_pages
    mm: ZONE_DEVICE for "device memory"
    mm: move __phys_to_pfn and __pfn_to_phys to asm/generic/memory_model.h
    dax: drop size parameter to ->direct_access()
    nd_blk: change aperture mapping from WC to WB
    nvdimm: change to use generic kvfree()
    pmem, dax: have direct_access use __pmem annotation
    dax: update I/O path to do proper PMEM flushing
    pmem: add copy_from_iter_pmem() and clear_pmem()
    pmem, x86: clean up conditional pmem includes
    pmem: remove layer when calling arch_has_wmb_pmem()
    pmem, x86: move x86 PMEM API to new pmem.h header
    libnvdimm, e820: make CONFIG_X86_PMEM_LEGACY a tristate option
    pmem: switch to devm_ allocations
    devres: add devm_memremap
    libnvdimm, btt: write and validate parent_uuid
    ...

    Linus Torvalds
     

28 Aug, 2015

1 commit

  • This should result in a pretty sizeable performance gain for reads. For
    rough comparison I did some simple read testing using PMEM to compare
    reads of write combining (WC) mappings vs write-back (WB). This was
    done on a random lab machine.

    PMEM reads from a write combining mapping:
    # dd of=/dev/null if=/dev/pmem0 bs=4096 count=100000
    100000+0 records in
    100000+0 records out
    409600000 bytes (410 MB) copied, 9.2855 s, 44.1 MB/s

    PMEM reads from a write-back mapping:
    # dd of=/dev/null if=/dev/pmem0 bs=4096 count=1000000
    1000000+0 records in
    1000000+0 records out
    4096000000 bytes (4.1 GB) copied, 3.44034 s, 1.2 GB/s

    To be able to safely support a write-back aperture I needed to add
    support for the "read flush" _DSM flag, as outlined in the DSM spec:

    http://pmem.io/documents/NVDIMM_DSM_Interface_Example.pdf

    This flag tells the ND BLK driver that it needs to flush the cache lines
    associated with the aperture after the aperture is moved but before any
    new data is read. This ensures that any stale cache lines from the
    previous contents of the aperture will be discarded from the processor
    cache, and the new data will be read properly from the DIMM. We know
    that the cache lines are clean and will be discarded without any
    writeback because either a) the previous aperture operation was a read,
    and we never modified the contents of the aperture, or b) the previous
    aperture operation was a write and we must have written back the dirtied
    contents of the aperture to the DIMM before the I/O was completed.

    In order to add support for the "read flush" flag I needed to add a
    generic routine to invalidate cache lines, mmio_flush_range(). This is
    protected by the ARCH_HAS_MMIO_FLUSH Kconfig variable, and is currently
    only supported on x86.

    Signed-off-by: Ross Zwisler
    Signed-off-by: Dan Williams

    Ross Zwisler
     

25 Aug, 2015

2 commits

  • This patch introduces a new Kconfig symbol, ACPI_PROCESSOR_IDLE,
    which is auto selected by architectures which support the ACPI
    based C states for CPU Idle management.

    The processor_idle driver in its present form contains declarations
    specific to X86 and IA64. Since there are no reasonable defaults
    for other architectures e.g. ARM64, the driver is selected only for
    X86 or IA64.

    This helps in decoupling the ACPI processor_driver from the ACPI
    processor_idle driver which is useful for the upcoming alternative
    patchwork for controlling CPU Performance (CPPC) and CPU Idle (LPI).

    Signed-off-by: Ashwin Chaugule
    Signed-off-by: Rafael J. Wysocki

    Ashwin Chaugule
     
  • The ACPI processor driver is currently tied too closely
    to the ACPI P-states (PSS) and other related constructs
    for controlling CPU performance.

    The newer ACPI specification (v5.1 onwards) introduces
    alternative methods to PSS. These new mechanisms are
    described within each ACPI Processor object and so they
    need to be scanned whenever a new Processor object is detected.
    This patch introduces a new Kconfig symbol to allow for
    finer configurability among the two options for controlling
    performance states. There is no change in functionality and
    the option is auto-selected by the architectures which support it.

    A future commit will introduce support for CPPC: A newer method of
    controlling CPU performance. The OS is not expected to support
    CPPC and PSS at the same time, so the Kconfig option lets us make
    the two mutually exclusive at compile time.

    Signed-off-by: Ashwin Chaugule
    [ rjw: Changelog ]
    Signed-off-by: Rafael J. Wysocki

    Ashwin Chaugule
     

03 Jul, 2015

2 commits

  • Pull ACPICA updates from Rafael Wysocki:
    "Additional ACPICA material for v4.2-rc1

    This will update the ACPICA code in the kernel to upstream revision
    20150619 (a bug-fix release mostly including stable-candidate fixes)
    and restore an earlier ACPICA commit that had to be reverted due to a
    regression introduced by it (the regression is addressed by
    blacklisting the only known system affected by it to date).

    The only new feature added by this update is the support for
    overriding objects in the ACPI namespace and a new ACPI table that can
    be used for that called the Override System Definition Table (OSDT).
    That should allow us to "patch" the ACPI namespace built from
    incomplete or incorrect ACPI System Definition tables (DSDT, SSDT)
    during system startup without the need to provide replacements for all
    of those tables in the future.

    Specifics:

    - Fix system resume problems related to 32-bit and 64-bit versions of
    the Firmware ACPI Control Structure (FACS) in the firmare (Lv
    Zheng)

    - Fix double initialization of the FACS (Lv Zheng)

    - Add _CLS object processing code to ACPICA (Suravee Suthikulpanit)

    - Add support for the (currently missing) new GIC version field in
    the Multiple APIC Description Table (MADT) (Hanjun Guo)

    - Add support for overriding objects in the ACPI namespace to ACPICA
    and OSDT support (Lv Zheng, Bob Moore, Zhang Rui)

    - Updates related to the TCPA and TPM2 ACPI tables (Bob Moore)

    - Restore the commit modifying _REV to always return "2" (as required
    by ACPI 6) and add a blacklisting mechanism for systems that may be
    affected by that change (Rafael J Wysocki)

    - Assorted fixes and cleanups (Bob Moore, Lv Zheng, Sascha Wildner)"

    * tag 'acpica-4.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (28 commits)
    Revert 'Revert "ACPICA: Permanently set _REV to the value '2'."'
    ACPI / init: Make it possible to override _REV
    ACPICA: Update version to 20150619
    ACPICA: Comment update, no functional change
    ACPICA: Update TPM2 ACPI table
    ACPICA: Update definitions for the TCPA and TPM2 ACPI tables
    ACPICA: Split C library prototypes to new header
    ACPICA: De-macroize calls to standard C library functions
    ACPI / acpidump: Update acpidump manual
    ACPICA: acpidump: Convert the default behavior to dump from /sys/firmware/acpi/tables
    ACPICA: acpidump: Allow customized tables to be dumped without accessing /dev/mem
    ACPICA: Cleanup output for the ASL Debug object
    ACPICA: Update for acpi_install_table memory types
    ACPICA: Namespace: Change namespace override to avoid node deletion
    ACPICA: Namespace: Add support of OSDT table
    ACPICA: Namespace: Add support to allow overriding objects
    ACPICA: ACPI 6.0: Add values for MADT GIC version field
    ACPICA: Utilities: Add _CLS processing
    ACPICA: Add dragon_fly support to unix file mapping file
    ACPICA: EFI: Add EFI interface definitions to eliminate dependency of GNU EFI
    ...

    Linus Torvalds
     
  • The platform firmware on some systems expects Linux to return "5" as
    the supported ACPI revision which makes it expose system configuration
    information in a special way.

    For example, based on what ACPI exports as the supported revision,
    Dell XPS 13 (2015) configures its audio device to either work in HDA
    mode or in I2S mode, where the former is supposed to be used on Linux
    until the latter is fully supported (in the kernel as well as in user
    space).

    Since ACPI 6 mandates that _REV should return "2" if ACPI 2 or later
    is supported by the OS, a subsequent change will make that happen, so
    make it possible to override that on systems where "5" is expected to
    be returned for Linux to work correctly one them (such as the Dell
    machine mentioned above).

    Original-by: Dominik Brodowski
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     

30 Jun, 2015

1 commit

  • Pull libnvdimm subsystem from Dan Williams:
    "The libnvdimm sub-system introduces, in addition to the
    libnvdimm-core, 4 drivers / enabling modules:

    NFIT:
    Instantiates an "nvdimm bus" with the core and registers memory
    devices (NVDIMMs) enumerated by the ACPI 6.0 NFIT (NVDIMM Firmware
    Interface table).

    After registering NVDIMMs the NFIT driver then registers "region"
    devices. A libnvdimm-region defines an access mode and the
    boundaries of persistent memory media. A region may span multiple
    NVDIMMs that are interleaved by the hardware memory controller. In
    turn, a libnvdimm-region can be carved into a "namespace" device and
    bound to the PMEM or BLK driver which will attach a Linux block
    device (disk) interface to the memory.

    PMEM:
    Initially merged in v4.1 this driver for contiguous spans of
    persistent memory address ranges is re-worked to drive
    PMEM-namespaces emitted by the libnvdimm-core.

    In this update the PMEM driver, on x86, gains the ability to assert
    that writes to persistent memory have been flushed all the way
    through the caches and buffers in the platform to persistent media.
    See memcpy_to_pmem() and wmb_pmem().

    BLK:
    This new driver enables access to persistent memory media through
    "Block Data Windows" as defined by the NFIT. The primary difference
    of this driver to PMEM is that only a small window of persistent
    memory is mapped into system address space at any given point in
    time.

    Per-NVDIMM windows are reprogrammed at run time, per-I/O, to access
    different portions of the media. BLK-mode, by definition, does not
    support DAX.

    BTT:
    This is a library, optionally consumed by either PMEM or BLK, that
    converts a byte-accessible namespace into a disk with atomic sector
    update semantics (prevents sector tearing on crash or power loss).

    The sinister aspect of sector tearing is that most applications do
    not know they have a atomic sector dependency. At least today's
    disk's rarely ever tear sectors and if they do one almost certainly
    gets a CRC error on access. NVDIMMs will always tear and always
    silently. Until an application is audited to be robust in the
    presence of sector-tearing the usage of BTT is recommended.

    Thanks to: Ross Zwisler, Jeff Moyer, Vishal Verma, Christoph Hellwig,
    Ingo Molnar, Neil Brown, Boaz Harrosh, Robert Elliott, Matthew Wilcox,
    Andy Rudoff, Linda Knippers, Toshi Kani, Nicholas Moulin, Rafael
    Wysocki, and Bob Moore"

    * tag 'libnvdimm-for-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/nvdimm: (33 commits)
    arch, x86: pmem api for ensuring durability of persistent memory updates
    libnvdimm: Add sysfs numa_node to NVDIMM devices
    libnvdimm: Set numa_node to NVDIMM devices
    acpi: Add acpi_map_pxm_to_online_node()
    libnvdimm, nfit: handle unarmed dimms, mark namespaces read-only
    pmem: flag pmem block devices as non-rotational
    libnvdimm: enable iostat
    pmem: make_request cleanups
    libnvdimm, pmem: fix up max_hw_sectors
    libnvdimm, blk: add support for blk integrity
    libnvdimm, btt: add support for blk integrity
    fs/block_dev.c: skip rw_page if bdev has integrity
    libnvdimm: Non-Volatile Devices
    tools/testing/nvdimm: libnvdimm unit test infrastructure
    libnvdimm, nfit, nd_blk: driver for BLK-mode access persistent memory
    nd_btt: atomic sector updates
    libnvdimm: infrastructure for btt devices
    libnvdimm: write blk label set
    libnvdimm: write pmem label set
    libnvdimm: blk labels and namespace instantiation
    ...

    Linus Torvalds
     

25 Jun, 2015

2 commits

  • Most discovery/configuration of the nvdimm-subsystem is done via sysfs
    attributes. However, some nvdimm_bus instances, particularly the
    ACPI.NFIT bus, define a small set of messages that can be passed to the
    platform. For convenience we derive the initial libnvdimm-ioctl command
    formats directly from the NFIT DSM Interface Example formats.

    ND_CMD_SMART: media health and diagnostics
    ND_CMD_GET_CONFIG_SIZE: size of the label space
    ND_CMD_GET_CONFIG_DATA: read label space
    ND_CMD_SET_CONFIG_DATA: write label space
    ND_CMD_VENDOR: vendor-specific command passthrough
    ND_CMD_ARS_CAP: report address-range-scrubbing capabilities
    ND_CMD_ARS_START: initiate scrubbing
    ND_CMD_ARS_STATUS: report on scrubbing state
    ND_CMD_SMART_THRESHOLD: configure alarm thresholds for smart events

    If a platform later defines different commands than this set it is
    straightforward to extend support to those formats.

    Most of the commands target a specific dimm. However, the
    address-range-scrubbing commands target the bus. The 'commands'
    attribute in sysfs of an nvdimm_bus, or nvdimm, enumerate the supported
    commands for that object.

    Cc:
    Cc: Robert Moore
    Cc: Rafael J. Wysocki
    Reported-by: Nicholas Moulin
    Acked-by: Christoph Hellwig
    Signed-off-by: Dan Williams

    Dan Williams
     
  • A struct nvdimm_bus is the anchor device for registering nvdimm
    resources and interfaces, for example, a character control device,
    nvdimm devices, and I/O region devices. The ACPI NFIT (NVDIMM Firmware
    Interface Table) is one possible platform description for such
    non-volatile memory resources in a system. The nfit.ko driver attaches
    to the "ACPI0012" device that indicates the presence of the NFIT and
    parses the table to register a struct nvdimm_bus instance.

    Cc:
    Cc: Lv Zheng
    Cc: Robert Moore
    Cc: Rafael J. Wysocki
    Acked-by: Jeff Moyer
    Acked-by: Christoph Hellwig
    Acked-by: Rafael J. Wysocki
    Tested-by: Toshi Kani
    Signed-off-by: Dan Williams

    Dan Williams
     

19 Jun, 2015

1 commit

  • * acpi-cca:
    ufs: fix TRUE and FALSE re-define build error
    megaraid_sas: fix TRUE and FALSE re-define build error
    amd-xgbe: Unify coherency checking logic with device_dma_is_coherent()
    crypto: ccp - Unify coherency checking logic with device_dma_is_coherent()
    device property: Introduces device_dma_is_coherent()
    arm64 : Introduce support for ACPI _CCA object
    ACPI / scan: Parse _CCA and setup device coherency

    Rafael J. Wysocki
     

15 Jun, 2015

1 commit

  • This patch implements support for ACPI _CCA object, which is introduced in
    ACPIv5.1, can be used for specifying device DMA coherency attribute.

    The parsing logic traverses device namespace to parse coherency
    information, and stores it in acpi_device_flags. Then uses it to call
    arch_setup_dma_ops() when creating each device enumerated in DSDT
    during ACPI scan.

    This patch also introduces acpi_dma_is_coherent(), which provides
    an interface for device drivers to check the coherency information
    similarly to the of_dma_is_coherent().

    Signed-off-by: Mark Salter
    Signed-off-by: Suravee Suthikulpanit
    Signed-off-by: Rafael J. Wysocki

    Suthikulpanit, Suravee
     

06 May, 2015

1 commit

  • The ACPI procfs power interface is initialized by compilation units
    that are only selectable on X86 platforms. Since its usage is
    deprecated and it cannot even be used on platforms other than X86
    it should be compiled in only on X86 platforms.

    This patch makes CONFIG_ACPI_PROCFS_POWER dependent on X86, so
    that other architectures are prevented from compiling it in for
    no purpose.

    Signed-off-by: Lorenzo Pieralisi
    Acked-by: Hanjun Guo
    Signed-off-by: Rafael J. Wysocki

    Lorenzo Pieralisi
     

26 Mar, 2015

2 commits

  • The code deployed to implement GSI linux IRQ numbers mapping on arm64 turns
    out to be generic enough so that it can be moved to ACPI core code along
    with its respective config option ACPI_GENERIC_GSI selectable on
    architectures that can reuse the same code.

    Current ACPI IRQ mapping code is not integrated in the kernel IRQ domain
    infrastructure, in particular there is no way to look-up the
    IRQ domain associated with a particular interrupt controller, so this
    first version of GSI generic code carries out the GSIIRQ mapping relying
    on the IRQ default domain which is supposed to be always set on a
    specific architecture in case the domain structure passed to
    irq_create/find_mapping() functions is missing.

    This patch moves the arm64 acpi functions that implement the gsi mappings:

    acpi_gsi_to_irq()
    acpi_register_gsi()
    acpi_unregister_gsi()

    to ACPI core code. Since the generic GSIdomain mapping is based on IRQ
    domains, it can be extended as soon as a way to map an interrupt
    controller to an IRQ domain is implemented for ACPI in the IRQ domain
    layer.

    x86 and ia64 code for GSI mappings cannot rely on the generic GSI
    layer at present for legacy reasons, so they do not select the
    ACPI_GENERIC_GSI config options and keep relying on their arch
    specific GSI mapping layer.

    Cc: Jiang Liu
    Cc: Catalin Marinas
    Cc: Rafael J. Wysocki
    Acked-by: Hanjun Guo
    Acked-by: Will Deacon
    Acked-by: Marc Zyngier
    Signed-off-by: Lorenzo Pieralisi
    Signed-off-by: Will Deacon

    Lorenzo Pieralisi
     
  • Add Kconfigs to build ACPI on ARM64, and make ACPI available on ARM64.

    acpi_idle driver is x86/IA64 dependent now, so make CONFIG_ACPI_PROCESSOR
    depend on X86 || IA64, and implement it on ARM64 in the future.

    CC: Rafael J. Wysocki
    CC: Catalin Marinas
    CC: Will Deacon
    Reviewed-by: Grant Likely
    Tested-by: Suravee Suthikulpanit
    Tested-by: Yijing Wang
    Tested-by: Mark Langsdorf
    Tested-by: Jon Masters
    Tested-by: Timur Tabi
    Tested-by: Robert Richter
    Acked-by: Robert Richter
    Acked-by: Rafael J. Wysocki
    Signed-off-by: Graeme Gregory
    Signed-off-by: Al Stone
    Signed-off-by: Hanjun Guo
    Signed-off-by: Will Deacon

    Graeme Gregory
     

25 Mar, 2015

1 commit

  • ACPI 5.1 does not currently support S states for ARM64 hardware but
    ACPI code will call acpi_target_system_state() and acpi_sleep_init()
    for device power management, so introduce
    CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT and select it for x86 and
    ia64 only to make sleep functions available, and also introduce stub
    function to allow other drivers to function until S states are defined
    for ARM64.

    It will be no functional change for x86 and IA64.

    Suggested-by: Rafael J. Wysocki
    Acked-by: Lorenzo Pieralisi
    Acked-by: Rafael J. Wysocki
    Signed-off-by: Graeme Gregory
    Signed-off-by: Tomasz Nowicki
    Signed-off-by: Hanjun Guo
    Signed-off-by: Will Deacon

    Graeme Gregory
     

05 Feb, 2015

1 commit

  • Enable support of IOAPIC hotplug by:
    1) reintroducing ACPI based IOAPIC driver
    2) enhance pci_root driver to hook hotplug events

    The ACPI IOAPIC driver is always enabled if all of ACPI, PCI and IOAPIC
    are enabled.

    Signed-off-by: Jiang Liu
    Cc: Konrad Rzeszutek Wilk
    Cc: Tony Luck
    Cc: Joerg Roedel
    Cc: Greg Kroah-Hartman
    Cc: Benjamin Herrenschmidt
    Cc: Rafael J. Wysocki
    Cc: Bjorn Helgaas
    Cc: Randy Dunlap
    Cc: Yinghai Lu
    Cc: Borislav Petkov
    Cc: Len Brown
    Link: http://lkml.kernel.org/r/1414387308-27148-19-git-send-email-jiang.liu@linux.intel.com
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Rafael J. Wysocki

    Jiang Liu
     

09 Dec, 2014

1 commit

  • * acpi-video:
    ACPI / video: Run _BCL before deciding registering backlight

    * acpi-pmic:
    ACPI / PMIC: AXP288: support virtual GPIO in ACPI table
    ACPI / PMIC: support PMIC operation region for XPower AXP288
    ACPI / PMIC: support PMIC operation region for CrystalCove
    iio/axp288_adc: remove THIS_MODULE owner
    mfd/axp20x: avoid irq numbering collision
    iio: adc: Add module device table for autoloading
    iio: adc: Add support for axp288 adc
    mfd: axp20x: Extend axp20x to support axp288 pmic

    Rafael J. Wysocki
     

27 Nov, 2014

2 commits

  • The Baytrail-T-CR platform firmware has defined two customized operation
    regions for PMIC chip Dollar Cove XPower - one is for power resource
    handling and one is for thermal just like the CrystalCove one. This patch
    adds support for them on top of the common PMIC opregion region code.

    Signed-off-by: Aaron Lu
    Acked-by: Lee Jones for the MFD part
    Signed-off-by: Rafael J. Wysocki

    Aaron Lu
     
  • The Baytrail-T platform firmware has defined two customized operation
    regions for PMIC chip Crystal Cove - one is for power resource handling
    and one is for thermal: sensor temperature reporting, trip point setting,
    etc. This patch adds support for them on top of the existing Crystal Cove
    PMIC driver.

    The reason to split code into a separate file intel_pmic.c is that there
    are more PMIC drivers with ACPI operation region support coming and we can
    re-use those code. The intel_pmic_opregion_data structure is created also
    for this purpose: when we need to support a new PMIC's operation region,
    we just need to fill those callbacks and the two register mapping tables.

    Signed-off-by: Aaron Lu
    Acked-by: Lee Jones for the MFD part
    Signed-off-by: Rafael J. Wysocki

    Aaron Lu
     

18 Nov, 2014

1 commit


17 Oct, 2014

1 commit


07 Aug, 2014

1 commit

  • Pull ACPI and power management updates from Rafael Wysocki:
    "Again, ACPICA leads the pack (47 commits), followed by cpufreq (18
    commits) and system suspend/hibernation (9 commits).

    From the new code perspective, the ACPICA update brings ACPI 5.1 to
    the table, including a new device configuration object called _DSD
    (Device Specific Data) that will hopefully help us to operate device
    properties like Device Trees do (at least to some extent) and changes
    related to supporting ACPI on ARM.

    Apart from that we have hibernation changes making it use radix trees
    to store memory bitmaps which should speed up some operations carried
    out by it quite significantly. We also have some power management
    changes related to suspend-to-idle (the "freeze" sleep state) support
    and more preliminary changes needed to support ACPI on ARM (outside of
    ACPICA).

    The rest is fixes and cleanups pretty much everywhere.

    Specifics:

    - ACPICA update to upstream version 20140724. That includes ACPI 5.1
    material (support for the _CCA and _DSD predefined names, changes
    related to the DMAR and PCCT tables and ARM support among other
    things) and cleanups related to using ACPICA's header files. A
    major part of it is related to acpidump and the core code used by
    that utility. Changes from Bob Moore, David E Box, Lv Zheng,
    Sascha Wildner, Tomasz Nowicki, Hanjun Guo.

    - Radix trees for memory bitmaps used by the hibernation core from
    Joerg Roedel.

    - Support for waking up the system from suspend-to-idle (also known
    as the "freeze" sleep state) using ACPI-based PCI wakeup signaling
    (Rafael J Wysocki).

    - Fixes for issues related to ACPI button events (Rafael J Wysocki).

    - New device ID for an ACPI-enumerated device included into the
    Wildcat Point PCH from Jie Yang.

    - ACPI video updates related to backlight handling from Hans de Goede
    and Linus Torvalds.

    - Preliminary changes needed to support ACPI on ARM from Hanjun Guo
    and Graeme Gregory.

    - ACPI PNP core cleanups from Arjun Sreedharan and Zhang Rui.

    - Cleanups related to ACPI_COMPANION() and ACPI_HANDLE() macros
    (Rafael J Wysocki).

    - ACPI-based device hotplug cleanups from Wei Yongjun and Rafael J
    Wysocki.

    - Cleanups and improvements related to system suspend from Lan
    Tianyu, Randy Dunlap and Rafael J Wysocki.

    - ACPI battery cleanup from Wei Yongjun.

    - cpufreq core fixes from Viresh Kumar.

    - Elimination of a deadband effect from the cpufreq ondemand governor
    and intel_pstate driver cleanups from Stratos Karafotis.

    - 350MHz CPU support for the powernow-k6 cpufreq driver from Mikulas
    Patocka.

    - Fix for the imx6 cpufreq driver from Anson Huang.

    - cpuidle core and governor cleanups from Daniel Lezcano, Sandeep
    Tripathy and Mohammad Merajul Islam Molla.

    - Build fix for the big_little cpuidle driver from Sachin Kamat.

    - Configuration fix for the Operation Performance Points (OPP)
    framework from Mark Brown.

    - APM cleanup from Jean Delvare.

    - cpupower utility fixes and cleanups from Peter Senna Tschudin,
    Andrey Utkin, Himangi Saraogi, Rickard Strandqvist, Thomas
    Renninger"

    * tag 'pm+acpi-3.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (118 commits)
    ACPI / LPSS: add LPSS device for Wildcat Point PCH
    ACPI / PNP: Replace faulty is_hex_digit() by isxdigit()
    ACPICA: Update version to 20140724.
    ACPICA: ACPI 5.1: Update for PCCT table changes.
    ACPICA/ARM: ACPI 5.1: Update for GTDT table changes.
    ACPICA/ARM: ACPI 5.1: Update for MADT changes.
    ACPICA/ARM: ACPI 5.1: Update for FADT changes.
    ACPICA: ACPI 5.1: Support for the _CCA predifined name.
    ACPICA: ACPI 5.1: New notify value for System Affinity Update.
    ACPICA: ACPI 5.1: Support for the _DSD predefined name.
    ACPICA: Debug object: Add current value of Timer() to debug line prefix.
    ACPICA: acpihelp: Add UUID support, restructure some existing files.
    ACPICA: Utilities: Fix local printf issue.
    ACPICA: Tables: Update for DMAR table changes.
    ACPICA: Remove some extraneous printf arguments.
    ACPICA: Update for comments/formatting. No functional changes.
    ACPICA: Disassembler: Add support for the ToUUID opererator (macro).
    ACPICA: Remove a redundant cast to acpi_size for ACPI_OFFSET() macro.
    ACPICA: Work around an ancient GCC bug.
    ACPI / processor: Make it possible to get local x2apic id via _MAT
    ...

    Linus Torvalds
     

21 Jul, 2014

2 commits

  • The use of _PDC is deprecated in ACPI 3.0 in favor of _OSC,
    as ARM platform is supported only in ACPI 5.0 or higher version,
    _PDC will not be used in ARM platform, so make Make _PDC only for
    platforms with Intel CPUs.

    Introduce ARCH_MIGHT_HAVE_ACPI_PDC and move _PDC related code in
    ACPI processor driver into a single file processor_pdc.c, make x86
    and ia64 select it when ACPI is enabled.

    This patch also use pr_* to replace printk to fix the checkpatch
    warning and factor acpi_processor_alloc_pdc() a little bit to
    avoid duplicate pr_err() code.

    Suggested-by: Robert Richter
    Signed-off-by: Hanjun Guo
    Signed-off-by: Rafael J. Wysocki

    Hanjun Guo
     
  • With the addition of ARM64 that does not have a traditional BIOS to
    scan, add a config option which is selected on x86 (ia64 doesn't need
    it either, it is EFI/UEFI based system) to do the traditional BIOS
    scanning for tables.

    Signed-off-by: Graeme Gregory
    Signed-off-by: Hanjun Guo
    Signed-off-by: Rafael J. Wysocki

    Graeme Gregory
     

26 Jun, 2014

1 commit


10 May, 2014

1 commit


06 May, 2014

1 commit


09 Apr, 2014

1 commit

  • The UEFI Forum included the ACPI spec in its portfolio in October 2013
    and will host future spec iterations, following the ACPI v5.0a release.

    A UEFI Forum working group named ACPI Specification Working Group (ASWG)
    has been established to handle future ACPI developments, any UEFI member
    can join the group and contribute to ACPI specification.

    So update the ownership and developers for ACPI in Kconfig accordingly,
    and add another website link to ACPI specification too.

    Signed-off-by: Hanjun Guo
    Signed-off-by: Rafael J. Wysocki

    Hanjun Guo
     

20 Mar, 2014

2 commits

  • * acpi-battery:
    ACPI / AC: recheck adapter status upon battery status changes
    ACPI / battery: call ACPI notifier chain in acpi_battery_notify
    ACPI / battery: move some ACPI_BATTERY_* definitions to header

    * acpi-video:
    video / output: Drop display output class support
    fujitsu-laptop: Drop unneeded include
    acer-wmi: Stop selecting VIDEO_OUTPUT_CONTROL
    ACPI / gpu / drm: Stop selecting VIDEO_OUTPUT_CONTROL
    ACPI / video: fix ACPI_VIDEO dependencies

    Rafael J. Wysocki
     
  • ACPI_VIDEO stopped depending on VIDEO_OUTPUT_CONTROL over 3 years ago
    (see commit 677bd810, "ACPI video: remove output switching control".)
    So it's about time to remove the Kconfig dependency between these two
    options.

    Signed-off-by: Jean Delvare
    Signed-off-by: Rafael J. Wysocki

    Jean Delvare
     

19 Feb, 2014

1 commit

  • Nothing cares about ACPI_PROCFS. This has been the case since v2.6.38.
    This Kconfig symbol serves no purpose and its help text is now
    misleading. It can safely be removed. If this symbol would be needed
    again in the future it can be readded in a commit that adds code that
    actually uses it.

    Signed-off-by: Paul Bolle
    Signed-off-by: Rafael J. Wysocki

    Paul Bolle
     

05 Feb, 2014

1 commit

  • ACPI hardware reduced mode exists to allow newer platforms to use a
    simpler form of ACPI that does not require supporting legacy versions
    of the specification and their associated hardware. This mode was
    introduced in the ACPI 5.0 specification.

    The ACPI hardware reduced mode is supposed to be used on systems
    having the HW_REDUCED_ACPI flag set in the FADT. ACPICA checks
    that flag to determine whether or not it should work in the HW
    reduced mode and there are pieces of code in it that will never
    be used in that case.

    Since some architecutres will always use the ACPI HW reduced mode,
    it doesn't make sense for them to ever compile support for anything
    else. Thus, they should set the flag ACPI_REDUCED_HARDWARE to TRUE
    in the ACPICA source. To enable them to do that, introduce a new
    kernel configuration option, CONFIG_ACPI_REDUCED_HARDWARE_ONLY, that
    will cause the ACPICA's ACPI_REDUCED_HARDWARE flag to be TRUE when
    set.

    Introducing this configuration item is based on suggestions from Lv
    Zheng saying that this does not belong in ACPICA, but rather to the
    Linux kernel itself.

    References: http://www.spinics.net/lists/linux-acpi/msg46369.html
    Signed-off-by: Hanjun Guo
    Signed-off-by: Al Stone
    [rjw: Subject and changelog]
    Signed-off-by: Rafael J. Wysocki

    Al Stone