2019-08-14 22:20:14

by Schmauss, Erik

[permalink] [raw]
Subject: RE: Parsing PXM from ACPI (DSDT)



> -----Original Message-----
> From: [email protected] [mailto:linux-acpi-
> [email protected]] On Behalf Of Duran, Leo
> Sent: Wednesday, August 14, 2019 2:30 PM
> To: [email protected]; [email protected]
> Cc: Rafael J. Wysocki <[email protected]>; Len Brown <[email protected]>
> Subject: Parsing PXM from ACPI (DSDT)
>
Hi Leo,

> Hello,
> Is not clear or evident to me if the kernel parses _PXM values below (or under)
> the root-complex.

Build with CONFIG_ACPI_DEBUG=y and boot with acpi.debug_layer=0xffffffff acpi.debug_level=0x80000

This will print all of the AcpiEvaluateObject queries to the dmesg.

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