2019-10-29 01:00:32

by Brice Goglin

[permalink] [raw]
Subject: acpi/hmat: don't mix pxm and nid when setting memory target processor_pxm

On systems where PXMs and nids are in different order, memory initiators
exposed in sysfs could be wrong: On dual-socket CLX with SNC enabled
(4 nodes, 1 and 2 swapped between PXMs and nids), node1 would only
get node2 as initiator, and node2 would only get node1.

With this patch, we get node1 as the only initiator of itself,
and node2 as the only initiator of itself, as expected.

This should likely go to stable up to 5.2.

Signed-off-by: Brice Goglin <[email protected]>

diff --git a/drivers/acpi/hmat/hmat.c b/drivers/acpi/hmat/hmat.c
index 8f9a28a870b0..3ca3c7c97ee0 100644
--- a/drivers/acpi/hmat/hmat.c
+++ b/drivers/acpi/hmat/hmat.c
@@ -417,7 +417,7 @@ static int __init hmat_parse_proximity_domain(union acpi_subtable_headers *heade
pr_debug("HMAT: Invalid Processor Domain\n");
return -EINVAL;
}
- target->processor_pxm = p_node;
+ target->processor_pxm = p->processor_PD;
}

return 0;


2019-11-29 12:56:09

by Brice Goglin

[permalink] [raw]
Subject: Re: acpi/hmat: don't mix pxm and nid when setting memory target processor_pxm

Le 28/10/2019 à 10:11, Brice Goglin a écrit :
> On systems where PXMs and nids are in different order, memory initiators
> exposed in sysfs could be wrong: On dual-socket CLX with SNC enabled
> (4 nodes, 1 and 2 swapped between PXMs and nids), node1 would only
> get node2 as initiator, and node2 would only get node1.
>
> With this patch, we get node1 as the only initiator of itself,
> and node2 as the only initiator of itself, as expected.
>
> This should likely go to stable up to 5.2.
>
> Signed-off-by: Brice Goglin <[email protected]>
>
> diff --git a/drivers/acpi/hmat/hmat.c b/drivers/acpi/hmat/hmat.c
> index 8f9a28a870b0..3ca3c7c97ee0 100644
> --- a/drivers/acpi/hmat/hmat.c
> +++ b/drivers/acpi/hmat/hmat.c
> @@ -417,7 +417,7 @@ static int __init hmat_parse_proximity_domain(union acpi_subtable_headers *heade
> pr_debug("HMAT: Invalid Processor Domain\n");
> return -EINVAL;
> }
> - target->processor_pxm = p_node;
> + target->processor_pxm = p->processor_PD;
> }
>
> return 0;
>

Can we have somebody please review this patch? I didn't get any reply
from Keith since I first sent it to him in early September unfortunately.

Without this patch, memory initiators are exposed wrong on our Dell  R740.

Thanks

Brice


2019-12-09 12:29:08

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: acpi/hmat: don't mix pxm and nid when setting memory target processor_pxm

On Friday, November 29, 2019 1:54:44 PM CET Brice Goglin wrote:
> Le 28/10/2019 ? 10:11, Brice Goglin a ?crit :
> > On systems where PXMs and nids are in different order, memory initiators
> > exposed in sysfs could be wrong: On dual-socket CLX with SNC enabled
> > (4 nodes, 1 and 2 swapped between PXMs and nids), node1 would only
> > get node2 as initiator, and node2 would only get node1.
> >
> > With this patch, we get node1 as the only initiator of itself,
> > and node2 as the only initiator of itself, as expected.
> >
> > This should likely go to stable up to 5.2.
> >
> > Signed-off-by: Brice Goglin <[email protected]>
> >
> > diff --git a/drivers/acpi/hmat/hmat.c b/drivers/acpi/hmat/hmat.c
> > index 8f9a28a870b0..3ca3c7c97ee0 100644
> > --- a/drivers/acpi/hmat/hmat.c
> > +++ b/drivers/acpi/hmat/hmat.c
> > @@ -417,7 +417,7 @@ static int __init hmat_parse_proximity_domain(union acpi_subtable_headers *heade
> > pr_debug("HMAT: Invalid Processor Domain\n");
> > return -EINVAL;
> > }
> > - target->processor_pxm = p_node;
> > + target->processor_pxm = p->processor_PD;
> > }
> >
> > return 0;
> >
>
> Can we have somebody please review this patch? I didn't get any reply
> from Keith since I first sent it to him in early September unfortunately.
>
> Without this patch, memory initiators are exposed wrong on our Dell R740.

See commit 4caa525b783b ("ACPI: HMAT: don't mix pxm and nid when setting memory
target processor_pxm") in 5.5-rc1.

Thanks!