Extensible Firmware Interface Specification
134 12/12/00 Version 1.02
Device Path structure in the stream. Any future additions to the Device Path structure types will
always start with the current standard header. The size of a Device Path can be determined by
traversing the generic Device Path structures in each header and adding up the total size of the
Device Path. This size will include the four bytes of the End of Device Path structure.
Multiple hardware devices may be pointed to by a single Device Path. Each hardware device will
contain a complete Device Path that is terminated by the Device Path End Structure. The Device
Path End Structures that do not end the Device Path contain a sub-type of End This Instance of the
Device Path. The last Device Path End Structure contains a sub-type of End Entire Device Path.
5.4.2 Rules with ACPI _HID and _UID
As described in the ACPI specification, ACPI supports several different kinds of device
identification objects, including _HID and _UID. EFI only supports _HID and _UID that are
encoded in the 32-bit EISA-type ID format. The string format must not be used for _HID or _UID
in the ACPI name space if that entry is to be correlated to an EFI Device Path. _UID are optional
in ACPI and only required if more than one _HID exists with the same ID. The ACPI Device Path
structure must contain a zero in _UID field if the ACPI name space does not implement _UID. The
_UID is a unique serial number that persists across reboots.
If a device in the ACPI name space has a _HID and is described by a _CRS (Current Resource
Setting) then it should be described by an ACPI Device Path structure. A _CRS implies that a
device is not mapped by any other standard. A _CRS is used by ACPI to make a non standard
device into a Plug and Play device. The configuration methods in the ACPI name space allow the
ACPI driver to configure the device in a standard fashion.
The following table maps ACPI _CRS devices to EFI Device Path.
Table 5-28. ACPI _CRS to EFI Device Path Mapping
ACPI _CRS Item EFI Device Path
PCI Root Bus ACPI Device Path: _HID PNP0A03, _UID
Floppy ACPI Device Path: _HID PNP0303, _UID drive select encoding 0-3
Keyboard ACPI Device Path: _HID PNP0301, _UID 0
Serial Port ACPI Device Path: _HID PNP0501, _UID Serial Port COM number 0-3
Parallel Port ACPI Device Path: _HID PNP0401, _UID LPT number 0-3
Support of root PCI bridges requires special rules in the EFI Device Path. A root PCI bridge is a
PCI device usually contained in a chipset that consumes a proprietary bus and produces a PCI bus.
In typical desktop and mobile systems there is only one root PCI bridge. On larger server systems
there are typically multiple root PCI bridges. The operation of root PCI bridges is not defined in
any current PCI specification. A root PCI bridge should not be confused with a PCI to PCI bridge
that both consumes and produces a PCI bus. The operation and configuration of PCI to PCI bridges
is fully specified in current PCI specifications.
Root PCI bridges will use the plug and play ID of PNP0A03 and this will be stored in the ACPI
Device Path _HID field. The _UID in the ACPI Device Path structure must match the _UID in the
ACPI name space.