Skip to contentSkip to conversation

acpi/hmat: Update acpi_hmat_type enum with ACPI_HMAT_TYPE_PROXIMITY

PATCH In review Alison Schofield 3 participants 6 messages Apr 17, 2019 – Apr 19, 2019

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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.

---
 drivers/acpi/hmat/hmat.c | 4 ++--
 include/acpi/actbl1.h    | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
drivers/acpi/hmat/hmat.c +2 -2
index b7824a0309f7..3e32120e2dab 100644
@@ -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) {
include/acpi/actbl1.h +1 -1
index d14037ddf108..22c039ebc6c5 100644
@@ -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 */
Signature · 1 line
2.14.1
maintainer Acked-by on v1 1/1
#1 lore raw
Quoted 10 lines · Alison Schofield

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.

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

Quoted 43 lines
---
 drivers/acpi/hmat/hmat.c | 4 ++--
 include/acpi/actbl1.h    | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
drivers/acpi/hmat/hmat.c +2 -2
index b7824a0309f7..3e32120e2dab 100644
@@ -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) {
include/acpi/actbl1.h +1 -2
index d14037ddf108..22c039ebc6c5 100644
@@ -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

#2 lore raw
In reply to Alison Schofield
Quoted 5 lines · Alison Schofield

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.

#3 lore raw
Quoted 11 lines · Keith Busch
Quoted 5 lines · Alison Schofield

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.

#4 lore raw
Quoted 9 lines · Rafael J. Wysocki
Quoted 8 lines · Keith Busch
Quoted 5 lines · Alison Schofield

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)

Quoted 8 lines
Quoted 3 lines

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?

#5 lore raw
Quoted 14 lines · Alison Schofield
Quoted 13 lines · Rafael J. Wysocki
Quoted 11 lines · Keith Busch
Quoted 5 lines · Alison Schofield

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.

Quoted 8 lines
Quoted 4 lines

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.