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.