ACPI 6 and Linux* Rafael J. Wysocki. Intel Open Source Technology Center. August 19, 2015

Similar documents
Implementing ACPI 5 Features

The following modifications have been made to this version of the DSM specification:

ACPI And Device Trees Friends Or Foes?

NVDIMM DSM Interface Example

Intel Optane DC Persistent Memory Module (DCPMM) - DSM

Unified Device Properties Interface for ACPI and Device Trees

An overview of ACPICA Userspace Tools

PCI-SIG ENGINEERING CHANGE NOTICE

BIOS Implementation of UCSI

Reliability, Availability, Serviceability (RAS) and Management for Non-Volatile Memory Storage

Managing Persistent Memory Tiffany Kasanicky Intel

ARM Trusted Firmware ARM UEFI SCT update

Power Capping Linux. Len Brown, Jacob Pan, Srinivas Pandruvada

Capabilities and System Benefits Enabled by NVDIMM-N

Reference Boot Loader from Intel

The Role UEFI Technologies Play in ARM Platform Architecture

Introduction to Intel Boot Loader Development Kit (Intel BLDK) Intel SSG/SSD/UEFI

UEFI Forum Update. UEFI Spring Plugfest March 29-31, 2016 Presented by Dong Wei (The UEFI Forum)

Update on Windows Persistent Memory Support Neal Christiansen Microsoft

UEFI Test Tools For Linux Developers

Comparison on BIOS between UEFI and Legacy

Practical Xen Testing at Intel

Firmware Test Suite - Uses, Development, Contribution and GPL

BIOS Update Release Notes PRODUCTS: DQ67SW, DQ67OW, DQ67EP (Standard BIOS)

Standardized Firmware for ARMv8 based Volume Servers

19: I/O Devices: Clocks, Power Management

UEFI What is it? Spring 2017 UEFI Seminar and Plugfest March 27-31, 2017 Presented by Dong Wei (ARM) presented by. Updated

User s Guide. Alexandra Yates Kristen C. Accardi

BIOS Update Release Notes

BIOS Update Release Notes PRODUCTS: DQ67SW, DQ67OW, DQ67EP (Standard BIOS)

BIOS Update Release Notes

Windows Support for PM. Tom Talpey, Microsoft

ARM Trusted Firmware Evolution HKG15 February Andrew Thoelke Systems & Software, ARM

Pigeon Point BMR-H8S-EMMC Reference Design Board Management Reference Design for µtca Modules

UEFI ARM Update. Presented by Mitch Ishihara. UEFI Plugfest October presented by

BIOS Update Release Notes

Using the UEFI Shell. October 2010 UEFI Taipei Plugfest Insyde Software

Intel Omni-Path Fabric Manager GUI Software

PCI-SIG ENGINEERING CHANGE REQUEST

UEFI Plugfest March

O p t i m i z e d U E F I I m p l e m e n t a t i o n o n I n t e l X e o n B a s e d O C P P l a t f o r m

Intel Server Board S1200KP

BIOS Update Release Notes

Intel SSD DC P3700 & P3600 Series

BIOS Update Release Notes

Windows Support for PM. Tom Talpey, Microsoft

NVDIMM Overview. Technology, Linux, and Xen

BIOS Update Release Notes

BIOS Update Release Notes

Thunderbolt(TM) Software Release Notes This document is the release notes for the Thunderbolt software version

NVDIMM Block Window Driver Writer s Guide

Intel & FreeBSD: Better Together. Ben Widawsky

ACPI design principles and concerns

Ubuntu Core Certified Hardware Coverage for Ubuntu Core 18

BIOS Update Release Notes

ARM64 Server RAS Solutions. Jonathan (Zhixiong) Zhang Cavium Inc.

Let s Hot plug: By uevent mechanism in DPDK. Jeff guo Intel DPDK Summit User space - Dublin- 2017

Intel Omni-Path Fabric Switches

Intel Rack Scale Design Conformance and Software Reference Kit

User s Guide. Alexandra Yates Kristen C. Accardi

Intel SoC FPGA Embedded Development Suite (SoC EDS) Release Notes

BIOS Update Release Notes PRODUCTS: DQ67SW, DQ67OW, DQ67EP (Standard BIOS)

NVMe Over Fabrics: Scaling Up With The Storage Performance Development Kit

PCI-SIG ENGINEERING CHANGE NOTICE

Mohan J. Kumar Intel Fellow Intel Corporation

BIOS Update Release Notes

BIOS Update Release Notes

BIOS Update Release Notes

BIOS Update Release Notes

UNH-IOL NVMe Test Consortium

BIOS Update Release Notes

System Management Bus Revision 2.0

BIOS Update Release Notes

BIOS Update Release Notes

BIOS Update Release Notes

Intel Omni-Path Fabric Manager GUI Software

BIOS Update Release Notes

TCG TPM2 Software Stack & Embedded Linux. Philip Tricca

Introduction to Standards based approach to Server

POWER MANAGEMENT AND ENERGY EFFICIENCY

SR-IOV support in Xen. Yaozu (Eddie) Dong Yunhong Jiang Kun (Kevin) Tian

PCI-SIG ENGINEERING CHANGE NOTICE

BIOS Update Release Notes

Interrupt Swizzling Solution for Intel 5000 Chipset Series based Platforms

Advanced Configuration and Power Interface Specification Intel Microsoft Toshiba Revision 1.0b February 2, 1999

BIOS Update Release Notes

Techniques for Lowering Power Consumption in Design Utilizing the Intel EP80579 Integrated Processor Product Line

Device Firmware Update (DFU) for Windows

PCI Bus Power Management Interface Specification. Revision 1.1

Power Management as I knew it. Jim Kardach

BIOS Update Release Notes

BIOS Update Release Notes

Desktop/Motherboard WHC Report

ServerReady and Open Standards Accelerating Delivery

BIOS Update Release Notes

The Simple Firmware Interface

BIOS Update Release Notes

Dell EMC PowerEdge Systems SUSE Linux Enterprise Server 15. Installation Instructions and Important Information

Linux Suspend/Resume at the Speed of Light

CS Operating Systems

Transcription:

ACPI 6 and Linux* Rafael J. Wysocki Intel Open Source Technology Center August 19, 2015 Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 1 / 30

Outline 1 Introduction: Overview of ACPI High Level Bits Why ACPI? 2 Specification and Code Development ACPI Specification Development Process Reference Implementation Linux/ACPI 3 ACPI 6 Coverage in Linux Most Significant ACPI 6 Material Other Changes in ACPI 6 4 Resources Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 2 / 30

Introduction: Overview of ACPI High Level Bits ACPI: Advanced Configuration and Power Interface Platform description + high-level interface for driving platform hardware. Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 3 / 30

Introduction: Overview of ACPI High Level Bits What Is Covered By ACPI Firmware Hardware OS Enumeration of platform hardware. Signaling/handling of platform-specific events. Carrying out platform-specific operations. Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 4 / 30

Introduction: Overview of ACPI High Level Bits ACPI Complexity Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 5 / 30

Introduction: Overview of ACPI Why ACPI? Who Needs/Wants (Things Like) ACPI Whoever ships binary OS images to customers. OS images that are platform-independent for real No need to include platform-specific code for every platform. No need to ship a separate (binary) kernel for every platform. Platform firmware validation becomes a problem Traditionally addressed by certification programs. Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 6 / 30

Specification and Code Development ACPI Specification Development Process ACPI Is Taken Care Of By The UEFI Forum ASWG: ACPI Specification Working Group Team responsible for the ACPI specification within the UEFI Forum. Drives ACPI specification development process. Produced ACPI specification revisions 5.1 and 6.0. ECR: Engineering Change Request Formal specification change proposal. May be submitted by the UEFI Forum members. Goes under discussion in the ASWG. Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 7 / 30

Specification and Code Development ACPI Specification Development Process ACPI Specification Development Work Flow Updated Final Draft Release Final Specification Draft UEFI Member ECR Feedback UEFI Forum Board UEFI Member UEFI Member ECR ECR ACPI Specification Working Group Final Draft For Review Feedback Feedback All UEFI Members / Legal Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 8 / 30

Specification and Code Development ACPI Specification Development Process As Open As It Can Be Legal concern (theoretical threat) Possible injection of patent-contaminated material into the specification. Remedy New specification material cannot be shared with entities that are not UEFI Forum members until approved by the board. What is possible Linux developers can contribute to the ACPI specification. Linux developers can influence ACPI material before it is adopted. Clarifications may be requested. Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 9 / 30

Specification and Code Development Reference Implementation The ACPI CA Project ACPI Component Architecture (https://acpica.org) OS-independent reference implementation of the ACPI specification. 1 Common in-kernel code (shared by multiple OSes including Linux). ACPI namespace representation AML execution (AML interpreter) Parsing of ACPI tables Handling of events 2 AML compiler and disassembler. 3 ACPI-related utilities. Linux kernel s ACPICA code in sync with the upstream (Intel OTC). Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 10 / 30

Specification and Code Development Reference Implementation ACPICA Is Open Source Open Source project Source code on GitHub (https://github.com/acpica/acpica) Maintainers: Bob Moore, Lü Zheng, David Box Primary license: BSD (https://acpica.org/licensing) ACPICA and Linux Semi-automated generation of ACPICA Linux patches. ACPICA code in Linux under the dual BSD/GPLv2 license. Linux patches are generally not applicable to upstream ACPICA. Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 11 / 30

Specification and Code Development Linux/ACPI Linux ACPI Code Beyond ACPICA ACPI core Linux-specific support code used by ACPICA. ACPI-based device enumeration. ACPI part of the generic device properties API. Other Linux-specific generic ACPI code (PM, hotplug, thermal etc). Maintainer: Rafael Wysocki ACPI drivers Protocols defined by the specification: battery, fan, thermal, button, dock Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 12 / 30

Specification and Code Development Linux/ACPI Device Drivers Using ACPI ACPI support in subsystems Enumeration of CPUs, interrupt controllers etc. (arch code) PCI USB SATA I2C GPIO x86 platform drivers (maintained by Darren Hart) Vendor-specific protocols based on ACPI. Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 13 / 30

Specification and Code Development Linux/ACPI Linux ACPI Support Structure Device Drivers ACPI Core ACPI Specification ACPICA Archtecture-Specific Code Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 14 / 30

ACPI 6 Coverage in Linux Most Significant ACPI 6 Material Most Significant Changes Overview Two types of changes Support for new platforms (new hardware types, more complexity). Improvements for the existing users. ACPI 6 big-ticket items Support for C-style expressions in ASL (compiler). Non-Volatile Memory Firmware Interfaces. Low Power Idle (LPI). Device power management update. Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 15 / 30

ACPI 6 Coverage in Linux Most Significant ACPI 6 Material Non-Volatile Memory Firmware Interfaces NFIT: NVDIMM Firmware Interface Table Non-volatile memory modules information and status at boot time. NVDIMM device objects 1 NVDIMM interface device (ACPI0012) in the _SB scope. _FIT (non-volatile memory modules information at run time). _DSM (NVDIMM implementation specific). NFIT Update Notifications. 2 NVDIMM devices (NFIT Device Handle returned by _ADR). Under the NVDIMM interface device. _DSM (NVDIMM implementation specific). NFIT Health Event Notifications. Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 16 / 30

ACPI 6 Coverage in Linux Most Significant ACPI 6 Material Non-Volatile Memory Modules Hotplug Support Additional memory module object (PNP0C80) required for each NVDIMM (for Device Check notifications, _STA, and _CRS). _SB NVDR _FIT _HID ACPI0012 _DSM NVD1 _ADR _DSM MEM0 _HID PNP0C80 _STA _CRS NVD2 _ADR _DSM MEM1 _HID PNP0C80 _STA _CRS Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 17 / 30

ACPI 6 Coverage in Linux Most Significant ACPI 6 Material ACPI NFIT Protocol And Linux Auxiliary documents (http://pmem.io/documents) The _DSM methods require additional specification. Linux support (v4.2) ACPICA: All what s needed. Linux/ACPI: New ACPI driver for NVDIMMs (Dan Williams). Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 18 / 30

ACPI 6 Coverage in Linux Most Significant ACPI 6 Material Low Power Idle (LPI) Hierarchical representation of idle states Idle states of CPU cores, CPU clusters (packages), groups of CPU clusters. PROC CLU0 CLU1 CPU0 CPU1 CPU2 CPU3 Key observation Idle states at different levels of the hierarchy are not independent. Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 19 / 30

ACPI 6 Coverage in Linux Most Significant ACPI 6 Material Processor Containers And Lists Of Idle States Processor Container Device (ACPI0010) May contain other Processor Containers or Processors (ACPI0007). _LPI (Low Power Idle States). _RDI (Resource Dependencies for Idle) at the whole system level. _STA (Status). The Low Power Idle States object _LPI: List of available idle states (in power consumption order). May be present under Processor Container or Processor Devices. Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 20 / 30

ACPI 6 Coverage in Linux Most Significant ACPI 6 Material Low Power Idle Example PROC _HID ACPI0010 _RDI _LPI State 1 State 2 State 3 CLU0 _HID ACPI0010 _LPI State 1 State 2 State 3 CLU1 _HID ACPI0010 _LPI State 1 State 2 State 3 CPU0 CPU1 CPU2 CPU3 _HID ACPI0007 _HID ACPI0007 _HID ACPI0007 _HID ACPI0007 _LPI _LPI _LPI _LPI State 1 State 2 State 3 State 1 State 2 State 3 State 1 State 2 State 3 State 1 State 2 State 3 Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 21 / 30

ACPI 6 Coverage in Linux Most Significant ACPI 6 Material Platform Coordinated And OS Initiated LPI Platform Coordinated LPI Platform responsible for the coordination of idle states. States requested for all levels of the hierarchy from each Processor. OS Initiated LPI Last underlying Processor going idle triggers state selection. Requires software tracking of Processor states. Linux support (v4.2) ACPICA: All what s needed. Linux/ACPI: Not supported (work in progress by Linaro). Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 22 / 30

ACPI 6 Coverage in Linux Most Significant ACPI 6 Material Device PM Update in ACPI 6 Clarification of the D3 hot /D3 cold meaning D3 cold only available if _PR3 is present. D3 hot always available (if PM is supported at all). Power state change sequence specification update Power up : Turn on power resources and evaluate _PS0 (if present). Power down : Evaluate _PSx (if present) and turn off power resources. Linux support (v4.2) Linux/ACPI: Updated to follow ACPI 6 (Rafael Wysocki). Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 23 / 30

ACPI 6 Coverage in Linux Other Changes in ACPI 6 ACPI 6: Other Significant Changes USB-C Connection support in _UPC. New Thermal Zone objects (_MTL, _TSN). Standby Thermal Trip Point (_CR3). New Battery object (_BTH) and _BIX extension (swapping flag). Platform-specific device reset support (_RST, _PRR). Generic Buttons Device (ACPI0011) and a related _DSD UUID. Disambiguation of _REV. ASL helper macro for _PLD. CPPC and PCC updates. Printf and Fprintf debug macros (ASL). Improved disassembly of Control Method invocations (AML). Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 24 / 30

ACPI 6 Coverage in Linux Other Changes in ACPI 6 Linux Support Status Upstream ACPICA covers new ACPI 6 material entirely. That ACPICA code will appear in Linux v4.2. Linux/ACPI will cover new ACPI 6 material when necessary. Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 25 / 30

Conclusion ACPI 6: The first major ACPI revision from the UEFI Forum. New specification development process (more open than ever). New interesting major features (NFIT, LPI). Full ACPI 6 support in the upstream ACPICA. Support in Linux/ACPI being added as needed. Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 26 / 30

Thanks! Questions? Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 27 / 30

Resources References Advanced Configuration and Power Interface Specification, Version 6.0 (http://www.uefi.org/sites/default/files/resources/acpi_6.0.pdf). R. J. Wysocki, ACPI And Device Trees Friends Or Foes? (http://events.linuxfoundation.org/sites/events/files/slides/acpi_vs_dt.pdf). R. J. Wysocki, Implementing ACPI 5 Features - Device Enumeration and PM (http://events.linuxfoundation.org/images/stories/slides/lfcs2013_wysocki.pdf). Len Brown, ACPI5 on Linux (http://www.linuxplumbersconf.org/2012/wp-content/uploads/2012/09/lpc2012-acpi5.pdf). L. Duflot, O. Levillain, B. Morin, ACPI Design Principles and Concerns (http://www.ssi.gouv.fr/img/pdf/pres_acpi.pdf). Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 28 / 30

Resources Documentation And Source Code https://acpica.org http://pmem.io/documents Documentation/acpi/ Documentation/nvdimm/ include/acpi/ include/linux/acpi.h drivers/acpi/ drivers/nvdimm/ drivers/pci/pci-acpi.c drivers/gpio/gpiolib-acpi.c drivers/ata/libata-acpi.c drivers/usb/core/usb-acpi.c drivers/i2c/i2c-core.c arch/x86/kernel/acpi/ arch/ia64/kernel/acpi.c arch/arm64/kernel/acpi.c Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 29 / 30

Legal Information Intel is a trademark of Intel Corporation in the U. S. and other countries. *Other names and brands may be claimed as the property of others. Copyright c 2015 Intel Corporation, All rights reserved. Rafael J. Wysocki (Intel OTC) ACPI 6 and Linux August 19, 2015 30 / 30