ACPI device names

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
mistergabe
Posts: 5
Joined: Sun Sep 08, 2013 8:10 am

ACPI device names

Post by mistergabe »

So I'm enumerating the acpi devices under my kernel and have a hard time figuring out the naming of the devices and what they represent. Apparently this changes from bios to bios but there still seems to be a bit of a standard (which I cannot seem to find).

Specifically I'm trying to identify what pci bus, device and function is associated with a acpi device under the pci root bridge (PCI0)

For example.

I have

P0P2.BMD0.BPD0
P0P2.BMD0.BPD1
P0P2.BMD0.BPD2

POP2 disassembles as follows on my test box...I understand this is a PCI bridge but what standard tells me that this is in fact a pci bridge other than the name?

I understand that the _ADR tells me that the device is 2.

Code: Select all

            Device (P0P2)
            {
                Name (_ADR, 0x00020000)
                OperationRegion (PMER, PCI_Config, 0x00, 0xFF)
                Field (PMER, DWordAcc, Lock, Preserve)
                {
                            Offset (0x48), 
                        ,   9, 
                    PMGE,   1, 
                            Offset (0x8C), 
                            Offset (0x8E), 
                    PMST,   1
                }

                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x05
                })
                Method (_PRT, 0, NotSerialized)
.... and so on
then this... BMD0 which I have *no idea* what it is.

Code: Select all

                Device (BMD0)
                {
                    Name (_ADR, 0x00)
                    Method (_PRT, 0, NotSerialized)
                    {
....
Followed by BPD0 & 1 & 2...which again I don't know what these are. I'm assuming these are PCI ports...not sure.

From what I can tell the _ADR represents the device id again on the pci bus.

Code: Select all

                    Device (BPD1)
                    {
                        Name (_ADR, 0x00010000)
                        Name (_PRW, Package (0x02)
                        {
                            0x09, 
                            0x05
                        })
....
The ACPI specification doesn't seem to say anything about this...I may have skipped over it though since the paper...is quite large.
mistergabe
Posts: 5
Joined: Sun Sep 08, 2013 8:10 am

Re: ACPI device names

Post by mistergabe »

Well i guess I've figured this out on my own. you need to refer to the _ADR object which tells you what device it is. Then by looking at the pci secondarybus you can infer the rest.

Code: Select all

PCI 00:00:00 8086:25d8 5000P Chipset Memory Controller Hub
    ACPI: \_SB_.PCI0 _PRT
PCI 00:02:00 8086:25f7 5000 Series Chipset PCI Express x8 Port 2-3
    bus = 0 secondary bus = 1-6
    ACPI: \_SB_.PCI0.P0P2 _PRT
PCI 01:00:00 8086:3500 6311ESB/6321ESB PCI Express Upstream Port
    bus = 1 secondary bus = 2-5
    ACPI: \_SB_.PCI0.P0P2.BMD0 _PRT
PCI 02:00:00 8086:3510 6311ESB/6321ESB PCI Express Downstream Port E1
    bus = 2 secondary bus = 3-3
    ACPI: \_SB_.PCI0.P0P2.BMD0.BPD0 _PRT
PCI 02:01:00 8086:3514 6311ESB/6321ESB PCI Express Downstream Port E2
    bus = 2 secondary bus = 4-4
    ACPI: \_SB_.PCI0.P0P2.BMD0.BPD1 _PRT
PCI 02:02:00 8086:3518 6311ESB/6321ESB PCI Express Downstream Port E3
    bus = 2 secondary bus = 5-5
    ACPI: \_SB_.PCI0.P0P2.BMD0.BPD2 _PRT
PCI 05:00:00 8086:1096 80003ES2LAN Gigabit Ethernet Controller (Copper)
PCI 05:00:01 8086:1096 80003ES2LAN Gigabit Ethernet Controller (Copper)
PCI 01:00:03 8086:350c 6311ESB/6321ESB PCI Express to PCI-X Bridge
    bus = 1 secondary bus = 6-6
    ACPI: \_SB_.PCI0.P0P2.BMF3 _PRT
PCI 00:03:00 8086:25e3 5000 Series Chipset PCI Express x4 Port 3
    bus = 0 secondary bus = 7-7
    ACPI: \_SB_.PCI0.P0P3 _PRT
PCI 00:04:00 8086:25f8 5000 Series Chipset PCI Express x8 Port 4-5
    bus = 0 secondary bus = 8-11
    ACPI: \_SB_.PCI0.P0P4
PCI 08:00:00 111d:8018 PES12N3A PCI Express Switch
    bus = 8 secondary bus = 9-11
PCI 09:02:00 111d:8018 PES12N3A PCI Express Switch
    bus = 9 secondary bus = 10-10
PCI 10:00:00 8086:10bc 82571EB Gigabit Ethernet Controller (Copper)
PCI 10:00:01 8086:10bc 82571EB Gigabit Ethernet Controller (Copper)
PCI 09:04:00 111d:8018 PES12N3A PCI Express Switch
    bus = 9 secondary bus = 11-11
PCI 11:00:00 8086:10bc 82571EB Gigabit Ethernet Controller (Copper)
PCI 11:00:01 8086:10bc 82571EB Gigabit Ethernet Controller (Copper)
PCI 00:05:00 8086:25e5 5000 Series Chipset PCI Express x4 Port 5
    bus = 0 secondary bus = 12-12
PCI 00:06:00 8086:25f9 5000 Series Chipset PCI Express x8 Port 6-7
    bus = 0 secondary bus = 13-13
    ACPI: \_SB_.PCI0.P0P6
PCI 13:00:00 13c1:1004 9650SE SATA-II RAID PCIe
PCI 00:07:00 8086:25e7 5000 Series Chipset PCI Express x4 Port 7
    bus = 0 secondary bus = 14-14
    ACPI: \_SB_.PCI0.P0P7
PCI 00:08:00 8086:1a38 5000 Series Chipset DMA Engine
PCI 00:16:00 8086:25f0 5000 Series Chipset FSB Registers
PCI 00:16:01 8086:25f0 5000 Series Chipset FSB Registers
PCI 00:16:02 8086:25f0 5000 Series Chipset FSB Registers
PCI 00:17:00 8086:25f1 5000 Series Chipset Reserved Registers
PCI 00:19:00 8086:25f3 5000 Series Chipset Reserved Registers
PCI 00:21:00 8086:25f5 5000 Series Chipset FBD Registers
PCI 00:22:00 8086:25f6 5000 Series Chipset FBD Registers
PCI 00:28:00 8086:2690 631xESB/632xESB/3100 Chipset PCI Express Root Port 1
    bus = 0 secondary bus = 15-16
    ACPI: \_SB_.PCI0.PEX0 _PRT
PCI 15:00:00 8086:032c 6702PXH PCI Express-to-PCI Bridge A
    bus = 15 secondary bus = 16-16
    ACPI: \_SB_.PCI0.PEX0.PXH1 _PRT
PCI 16:02:00 10ec:8139 RTL-8139/8139C/8139C+
PCI 15:00:01 8086:0326 6700/6702PXH I/OxAPIC Interrupt Controller A
    ACPI: \_SB_.PCI0.PEX0.PXH1 _PRT
PCI 00:29:00 8086:2688 631xESB/632xESB/3100 Chipset UHCI USB Controller #1
    ACPI: \_SB_.PCI0.USB1
PCI 00:29:01 8086:2689 631xESB/632xESB/3100 Chipset UHCI USB Controller #2
    ACPI: \_SB_.PCI0.USB2
PCI 00:29:02 8086:268a 631xESB/632xESB/3100 Chipset UHCI USB Controller #3
    ACPI: \_SB_.PCI0.USB3
PCI 00:29:03 8086:268b 631xESB/632xESB/3100 Chipset UHCI USB Controller #4
    ACPI: \_SB_.PCI0.USB4
PCI 00:29:07 8086:268c 631xESB/632xESB/3100 Chipset EHCI USB2 Controller
    ACPI: \_SB_.PCI0.EUSB
PCI 00:30:00 8086:244e 82801 PCI Bridge
    bus = 0 secondary bus = 17-17
    ACPI: \_SB_.PCI0.PCIB _PRT
PCI 17:01:00 8086:100e 82540EM Gigabit Ethernet Controller
PCI 17:02:00 1002:515e ES1000
PCI 00:31:00 8086:2670 631xESB/632xESB/3100 Chipset LPC Interface Controller
    ACPI: \_SB_.PCI0.LPC0
PCI 00:31:01 8086:269e 631xESB/632xESB IDE Controller
    ACPI: \_SB_.PCI0.IDEC
PCI 00:31:02 8086:2680 631xESB/632xESB/3100 Chipset SATA IDE Controller
    ACPI: \_SB_.PCI0.IDE1
PCI 00:31:03 8086:269b 631xESB/632xESB/3100 Chipset SMBus Controller
    ACPI: \_SB_.PCI0.SMBS

Post Reply