Parsing PXM from ACPI (DSDT)
From: Duran, Leo
Date: Wed Aug 14 2019 - 17:30:33 EST
Hello,
Is not clear or evident to me if the kernel parses _PXM values below (or under) the root-complex.
For example, in my experience:
This ASL sample for PXM at the root-complex level produces the expected NUMA assignment from âlstopoâ:
Scope (\_SB) {
// ...
Device (PCI0) { // Root PCI Bus (Host-Bridge)
Name (_HID, EISAID("PNP0A08"))
Name (_CID, EISAID("PNP0A03"))
Name (_BBN, 0)
Method (_CRS,0) {
// Return current resources for host bridge 0
}
Name (_PRT, Package() {
// Package with PCI IRQ routing table information
})
Method (_PXM, 0, NotSerialized) {
Return (0)
}
}
// ...
}
However,
This ASL sample for PXM at the P2P root-bridge level does not produce the expected NUMA assignment from âlstopoâ:
(Of course, the assumption is that multiple NUMA nodes actually exist on the system)
Scope (\_SB) {
// ...
Device (PCI0) { // Root PCI Bus (Host-Bridge)
Name (_HID, EISAID ("PNP0A08"))
Name (_CID, EISAID ("PNP0A03"))
Name (_BBN, 0)
Method (_CRS,0) {
// Return current resources for host bridge 0
}
Name (_PRT, Package() {
// Package with PCI IRQ routing table information
})
ÂÂÂ Device (P2P0) { // First PCI-to-PCI bridge (Port0)
ÂÂÂÂÂ Name (_ADR, 0x00070001) // Device#7h, Func#1 on bus PCI0
ÂÂÂÂÂ Name (_PRT, Package() {
ÂÂÂÂÂ // Package with PCI IRQ routing table information
ÂÂÂÂÂ })
Method (_PXM, 0, NotSerialized) {
Return (0)
}
ÂÂÂ }
ÂÂÂ Device (P2P1) { // Second PCI-to-PCI bridge (Port1)
ÂÂÂÂÂ Name (_ADR ,0x00080001) // Device#8h, Func#1 on bus PCI0
ÂÂÂÂÂ Name (_PRT, Package() {
ÂÂÂÂÂ // Package with PCI IRQ routing table information
  })
Method (_PXM, 0, NotSerialized) {
Return (1)
}
ÂÂÂ }
}
// ...
}
Thanks,
Leo.