27.10.2015 Views

Advanced Configuration and Power Interface Specification

ACPI_6.0

ACPI_6.0

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Advanced</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Power</strong> <strong>Interface</strong> <strong>Specification</strong><br />

}// End Device<br />

9.20 NVDIMM Devices<br />

In order to h<strong>and</strong>le NVDIMMs, the OS must first be able to detect <strong>and</strong> enumerate the NVDIMMs. To<br />

facilitate the plug <strong>and</strong> play discovery of NVDIMM <strong>and</strong> driver loading, ACPI Name Space devices<br />

are used.<br />

The ACPI Name Space device uses _HID of ACPI0012 to identify the root NVDIMM interface<br />

device. Platform firmware is required to contain one such device in _SB scope if NVDIMMs support<br />

is exposed by platform to OSPM. This device allows the OS to trigger enumeration of NVDIMMs<br />

through NFIT at boot time <strong>and</strong> re-enumeration at root level via the _FIT method (refer to<br />

Section 6.5.9) during runtime.<br />

For each NVDIMM present or intended to be supported by platform, platform firmware also exposes<br />

an ACPI Namespace Device under the root device. The NVDIMM ACPI Namespace Device<br />

contains:<br />

• _ADR object that is used to supply OSPM with unique address of the NVDIMM device. This is<br />

done by returning the NFIT Device h<strong>and</strong>le that is used to identify the associated entries in ACPI<br />

table NFIT or _FIT.<br />

An example name space is shown below for a platform containing 1 NVDIMM:<br />

Scope (\_SB){<br />

Device (NVDR) // Root device<br />

{<br />

Name (_HID, “ACPI0012”)<br />

Method (_STA) {…}<br />

Method (_FIT) {…}<br />

Method (_DSM, …) {<br />

…<br />

}<br />

}<br />

}<br />

Device (NVD)<br />

{<br />

Name(_ADR, h) //where h is NFIT Device H<strong>and</strong>le for this NVDIMM<br />

Method (_DSM, …) {<br />

…<br />

}<br />

}<br />

NFIT Device H<strong>and</strong>le uniquely identifies a Memory Device in the above example <strong>and</strong> is constructed<br />

using the DIMM number within the memory channel, memory channel number, memory controller<br />

ID, Socket ID <strong>and</strong>, if applicable, Node Controller ID. Refer to Section 5.2.25 for details.<br />

While this scheme allows for OS h<strong>and</strong>ling of NVDIMMs in a st<strong>and</strong>ard manner the format of the<br />

address ranges described by this scheme may still vary depending on the vendor (or even different<br />

NVDIMM version of the vendor). For example, Block NVDIMM Control Region format is vendor<br />

specific <strong>and</strong> possibly even varies for a given vendor.<br />

The NVDIMM Firmware <strong>Interface</strong> Table supports a concept of Vendor ID, Device ID, <strong>and</strong> Revision<br />

ID. Since a NVDIMM could be a combination device consisting of different region types, for<br />

example, Persistent Memory <strong>and</strong> Block, a Region Format <strong>Interface</strong> Code to comprehend the region<br />

556 April, 2015 Version 6.0

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!