2019-04-17 18:12:10

by Alison Schofield

[permalink] [raw]
Subject: [PATCH] acpi/hmat: Update acpi_hmat_type enum with ACPI_HMAT_TYPE_PROXIMITY

ACPI 6.3 changed the subtable "Memory Subsystem Address Range Structure"
to "Memory Proximity Domain Attributes Structure".

Updating and renaming of the structure was included in commit:
ACPICA: ACPI 6.3: HMAT updates (9a8d961f1ef835b0d338fbe13da03cb424e87ae5)

Rename the enum type to match the subtable and structure naming.

Signed-off-by: Alison Schofield <[email protected]>
---
drivers/acpi/hmat/hmat.c | 4 ++--
include/acpi/actbl1.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/acpi/hmat/hmat.c b/drivers/acpi/hmat/hmat.c
index b7824a0309f7..3e32120e2dab 100644
--- a/drivers/acpi/hmat/hmat.c
+++ b/drivers/acpi/hmat/hmat.c
@@ -411,7 +411,7 @@ static int __init hmat_parse_subtable(union acpi_subtable_headers *header,
return -EINVAL;

switch (hdr->type) {
- case ACPI_HMAT_TYPE_ADDRESS_RANGE:
+ case ACPI_HMAT_TYPE_PROXIMITY:
return hmat_parse_proximity_domain(header, end);
case ACPI_HMAT_TYPE_LOCALITY:
return hmat_parse_locality(header, end);
@@ -649,7 +649,7 @@ static __init int hmat_init(void)
goto out_put;
}

- for (i = ACPI_HMAT_TYPE_ADDRESS_RANGE; i < ACPI_HMAT_TYPE_RESERVED; i++) {
+ for (i = ACPI_HMAT_TYPE_PROXIMITY; i < ACPI_HMAT_TYPE_RESERVED; i++) {
if (acpi_table_parse_entries(ACPI_SIG_HMAT,
sizeof(struct acpi_table_hmat), i,
hmat_parse_subtable, 0) < 0) {
diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
index d14037ddf108..22c039ebc6c5 100644
--- a/include/acpi/actbl1.h
+++ b/include/acpi/actbl1.h
@@ -1395,7 +1395,7 @@ struct acpi_table_hmat {
/* Values for HMAT structure types */

enum acpi_hmat_type {
- ACPI_HMAT_TYPE_ADDRESS_RANGE = 0, /* Memory subsystem address range */
+ ACPI_HMAT_TYPE_PROXIMITY = 0, /* Memory proximity domain attributes */
ACPI_HMAT_TYPE_LOCALITY = 1, /* System locality latency and bandwidth information */
ACPI_HMAT_TYPE_CACHE = 2, /* Memory side cache information */
ACPI_HMAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */
--
2.14.1


2019-04-18 14:54:34

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH] acpi/hmat: Update acpi_hmat_type enum with ACPI_HMAT_TYPE_PROXIMITY

On Wed, Apr 17, 2019 at 8:10 PM Alison Schofield
<[email protected]> wrote:
>
> ACPI 6.3 changed the subtable "Memory Subsystem Address Range Structure"
> to "Memory Proximity Domain Attributes Structure".
>
> Updating and renaming of the structure was included in commit:
> ACPICA: ACPI 6.3: HMAT updates (9a8d961f1ef835b0d338fbe13da03cb424e87ae5)
>
> Rename the enum type to match the subtable and structure naming.
>
> Signed-off-by: Alison Schofield <[email protected]>

Since the original HMAT material is there in the Greg's tree, this one
would need to go into his tree too, so

Acked-by: Rafael J. Wysocki <[email protected]>

> ---
> drivers/acpi/hmat/hmat.c | 4 ++--
> include/acpi/actbl1.h | 2 +-
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/acpi/hmat/hmat.c b/drivers/acpi/hmat/hmat.c
> index b7824a0309f7..3e32120e2dab 100644
> --- a/drivers/acpi/hmat/hmat.c
> +++ b/drivers/acpi/hmat/hmat.c
> @@ -411,7 +411,7 @@ static int __init hmat_parse_subtable(union acpi_subtable_headers *header,
> return -EINVAL;
>
> switch (hdr->type) {
> - case ACPI_HMAT_TYPE_ADDRESS_RANGE:
> + case ACPI_HMAT_TYPE_PROXIMITY:
> return hmat_parse_proximity_domain(header, end);
> case ACPI_HMAT_TYPE_LOCALITY:
> return hmat_parse_locality(header, end);
> @@ -649,7 +649,7 @@ static __init int hmat_init(void)
> goto out_put;
> }
>
> - for (i = ACPI_HMAT_TYPE_ADDRESS_RANGE; i < ACPI_HMAT_TYPE_RESERVED; i++) {
> + for (i = ACPI_HMAT_TYPE_PROXIMITY; i < ACPI_HMAT_TYPE_RESERVED; i++) {
> if (acpi_table_parse_entries(ACPI_SIG_HMAT,
> sizeof(struct acpi_table_hmat), i,
> hmat_parse_subtable, 0) < 0) {
> diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
> index d14037ddf108..22c039ebc6c5 100644
> --- a/include/acpi/actbl1.h
> +++ b/include/acpi/actbl1.h
> @@ -1395,7 +1395,7 @@ struct acpi_table_hmat {
> /* Values for HMAT structure types */
>
> enum acpi_hmat_type {
> - ACPI_HMAT_TYPE_ADDRESS_RANGE = 0, /* Memory subsystem address range */
> + ACPI_HMAT_TYPE_PROXIMITY = 0, /* Memory proximity domain attributes */
> ACPI_HMAT_TYPE_LOCALITY = 1, /* System locality latency and bandwidth information */
> ACPI_HMAT_TYPE_CACHE = 2, /* Memory side cache information */
> ACPI_HMAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */
> --
> 2.14.1
>

2019-04-18 15:06:12

by Keith Busch

[permalink] [raw]
Subject: Re: [PATCH] acpi/hmat: Update acpi_hmat_type enum with ACPI_HMAT_TYPE_PROXIMITY

On Wed, Apr 17, 2019 at 11:13:10AM -0700, Alison Schofield wrote:
> ACPI 6.3 changed the subtable "Memory Subsystem Address Range Structure"
> to "Memory Proximity Domain Attributes Structure".
>
> Updating and renaming of the structure was included in commit:
> ACPICA: ACPI 6.3: HMAT updates (9a8d961f1ef835b0d338fbe13da03cb424e87ae5)

I was not really happy with that HMAT update. Platforms implementing
6.2's HMAT continue to exist even if 6.3 isn't backward compatible. We
just lost the original subtable definition.

2019-04-18 15:08:49

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH] acpi/hmat: Update acpi_hmat_type enum with ACPI_HMAT_TYPE_PROXIMITY

On Thu, Apr 18, 2019 at 5:02 PM Keith Busch <[email protected]> wrote:
>
> On Wed, Apr 17, 2019 at 11:13:10AM -0700, Alison Schofield wrote:
> > ACPI 6.3 changed the subtable "Memory Subsystem Address Range Structure"
> > to "Memory Proximity Domain Attributes Structure".
> >
> > Updating and renaming of the structure was included in commit:
> > ACPICA: ACPI 6.3: HMAT updates (9a8d961f1ef835b0d338fbe13da03cb424e87ae5)
>
> I was not really happy with that HMAT update. Platforms implementing
> 6.2's HMAT continue to exist even if 6.3 isn't backward compatible. We
> just lost the original subtable definition.

Well, that's true, sadly, but the question is what to do in the kernel.

Definitely, the 6.3 format needs to be supported, but if the 6.2 ships
anywhere in practice, that will need to be supported too.

2019-04-19 18:28:35

by Alison Schofield

[permalink] [raw]
Subject: Re: [PATCH] acpi/hmat: Update acpi_hmat_type enum with ACPI_HMAT_TYPE_PROXIMITY

On Thu, Apr 18, 2019 at 05:07:12PM +0200, Rafael J. Wysocki wrote:
> On Thu, Apr 18, 2019 at 5:02 PM Keith Busch <[email protected]> wrote:
> >
> > On Wed, Apr 17, 2019 at 11:13:10AM -0700, Alison Schofield wrote:
> > > ACPI 6.3 changed the subtable "Memory Subsystem Address Range Structure"
> > > to "Memory Proximity Domain Attributes Structure".
> > >
> > > Updating and renaming of the structure was included in commit:
> > > ACPICA: ACPI 6.3: HMAT updates (9a8d961f1ef835b0d338fbe13da03cb424e87ae5)
> >
> > I was not really happy with that HMAT update. Platforms implementing
> > 6.2's HMAT continue to exist even if 6.3 isn't backward compatible. We
> > just lost the original subtable definition.
>
> Well, that's true, sadly, but the question is what to do in the kernel.
>
> Definitely, the 6.3 format needs to be supported, but if the 6.2 ships
> anywhere in practice, that will need to be supported too.

So, what's the usual practice when ACPI tables are updated?
Do we define separate 6.2 and 6.3 versions of this subtable and let
the kernel figure out which one its looking at?


2019-04-19 18:39:19

by Keith Busch

[permalink] [raw]
Subject: Re: [PATCH] acpi/hmat: Update acpi_hmat_type enum with ACPI_HMAT_TYPE_PROXIMITY

On Fri, Apr 19, 2019 at 09:54:35AM -0700, Alison Schofield wrote:
> On Thu, Apr 18, 2019 at 05:07:12PM +0200, Rafael J. Wysocki wrote:
> > On Thu, Apr 18, 2019 at 5:02 PM Keith Busch <[email protected]> wrote:
> > >
> > > On Wed, Apr 17, 2019 at 11:13:10AM -0700, Alison Schofield wrote:
> > > > ACPI 6.3 changed the subtable "Memory Subsystem Address Range Structure"
> > > > to "Memory Proximity Domain Attributes Structure".
> > > >
> > > > Updating and renaming of the structure was included in commit:
> > > > ACPICA: ACPI 6.3: HMAT updates (9a8d961f1ef835b0d338fbe13da03cb424e87ae5)
> > >
> > > I was not really happy with that HMAT update. Platforms implementing
> > > 6.2's HMAT continue to exist even if 6.3 isn't backward compatible. We
> > > just lost the original subtable definition.
> >
> > Well, that's true, sadly, but the question is what to do in the kernel.
> >
> > Definitely, the 6.3 format needs to be supported, but if the 6.2 ships
> > anywhere in practice, that will need to be supported too.
>
> So, what's the usual practice when ACPI tables are updated?
> Do we define separate 6.2 and 6.3 versions of this subtable and let
> the kernel figure out which one its looking at?

Yeah, I think either new struct definitions for incompatible versions,
or unions for conflicting members would be good.

But I think Rafael is saying we only care if someone's shipping platform
implements a particular version. I don't happen to know which ACPI
version platforms I'm interested are going to release with, so I have
HMAT supporting either right now. The 6.3 update wasn't difficult to
handle this time.