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

From: <>
Date: 2001-05-03 13:50:16
> It's not actually clear from the conversation so far what 
> exactly Matt is 
> after.  I get the impression, however, that what he wants to do is 
> synthesise an _HID/_UID pair, which is not quite what's being 
> discussed 
> here.

I'm creating a DEVICE_PATH that looks like ACPI()/PCI()/SCSI()/HardDrive().
I have the PCI bus, device, and function number (via ioctl in kernel 2.4.4)
of the IDE/SCSI/FC/I2O controller, the SCSI ID and LUN, and all the Hard
Drive information.  I'm looking for the ACPI _HID and _UID which match the

I can cheat somewhat.  I do have the EFI blkX variables, which contain
something like (unparsed):

Type: 2 Subtype: 1      Length: c
ACPI Device Path: ACPI Device Path
        _HID: a0341d0
        _GID: 1

Type: 1 Subtype: 1      Length: 6
Hardware Device Path: PCI
        Function 0x0, Device 0x2

Type: 3 Subtype: 2      Length: 8
Messaging Device Path: SCSI
        Target ID: 0
        Logical Unit Number: 0

I could look for a device that matches on PCI device,function and SCSI
ID/LUN, and then copy the ACPI Device Path portion, but that still leaves
open the possibility of a PCI device on a separate bus that happens to match
all these fields.

> If that's the case, typically _HID is the 32-bit 
> vendor/device ID of the 
> controller, and _UID is the instance count for the given 
> _HID, eg. the 
> first controller has a _UID of 0, the second has a _UID of 1, etc.

>From this example, taken from actual hardware, the _HID is not anything like
the PCI vendor/device ID.  In this case this is a QLogic 12160 PCI SCSI
controller, 0x1077/0x1216.

> > 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.

This isn't a bridge, so no luck.

> Because Matt's tool is running in userspace, however, this 
> may not be so 
> easy to achieve.
> > Thus, there seems to be no perfect solutions here... to get 
> > pci bus number from acpi name space alone.
> That's basically correct; you can't do this.

I appreciate the help.  If there isn't a way to do this *today*, what steps
might we take to make this information available in the future?


Matt Domsch
Sr. Software Engineer
Dell Linux Systems Group
Linux OS Development
Received on Wed May 02 20:51:55 2001

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