RE: [Linux-ia64] translating ACPI _HID & _UID to PCI bus number

From: Nakajima, Jun <>
Date: 2001-05-03 09:23:55
In general a PCI device does not need to have _HID or _UID, because _ADR is
used for that purpose. If a PCI device happens to be on a root PCI bus, it
has _HID and _UID as well. So the bus number is avaialble from _BBN on the
bus, assuming that the OS does not change the PCI bus number.

So as long as you are interested in _HID and _UID of a PCI device, you
should be able to assume _BBN, thus, PCI bus number.


-----Original Message-----
From: Lee, Jung-Ik 
Sent: Wednesday, May 02, 2001 2:02 PM
To: Nakajima, Jun; '';
Subject: RE: [Linux-ia64] translating ACPI _HID & _UID to PCI bus number

Even with ACPI namespace, {_HID, _UID} pair does not tell the path of a
device in a given topology, and can not produce a PCI bus number(vice
_ADR of PCI device does not provide bus number either. It's just dev +func.
So to get PCI bus number of a given PCI bus:
1. you can use _BBN of the device, but this works only on root pci bridges.
I personally want to see all PCI bridges have _BBN method for OSPM's
convenience, but ACPI spec does not require it for non-roots.
2. you can enumerate pci bus from root pci bridges, following PCI std df
enum scheme, and access pci config space of pci bridges to get BIOS set bus
numbers. (But note that bus numbers set by BIOS do not necessarily match to
what OSes assign. For reasons OSes can assign bus numbers different from
BIOS's. So, PCI numbers from pci config space at EFI boot manager time, it's
not always the same as OSes enumerates) Afaik, linux does not alter bus
numbers set by BIOS yet, but someday...)

Thus, there seems to be no perfect solutions here... to get pci bus number
from acpi name space alone.


-----Original Message-----
From: Nakajima, Jun []
Sent: Wednesday, May 02, 2001 1:26 PM
To: '';
Subject: RE: [Linux-ia64] translating ACPI _HID & _UID to PCI bus number

Not all PCI devices appear in the ACPI namespace. If a PCI device shows up
in the ACPI namespace, it should have _ADR, which basically is its PCI bus,
device, and function number. Then you can tell the _HID and _UID associated
with that device. Hope this helps.


-----Original Message-----
From: []
Sent: Wednesday, May 02, 2001 12:34 PM
Subject: [Linux-ia64] translating ACPI _HID & _UID to PCI bus number

I'm working on a user-space application to add a Linux entry to the IA-64
EFI Boot Manager.  One component of this entry is the ACPI _HID and _UID
fields, which correspond to a PCI bus number (in Linux kernel terms).  I
know the PCI bus number, device, and function, for a given controller.  What
I don't have is the ACPI _HID and _UID fields that match the PCI bus number.
Any thoughts on how I can get them?


Matt Domsch
Sr. Software Engineer
Dell Linux Systems Group
Linux OS Development

Linux-IA64 mailing list
Received on Wed May 02 16:25:31 2001

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:03 EST