summaryrefslogtreecommitdiffstats
path: root/drivers/acpi/tables.c
diff options
context:
space:
mode:
authorKeith Busch <keith.busch@intel.com>2019-03-11 16:55:58 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-04-04 12:41:20 -0400
commit3bc0e8eb179deebf1c06f5c4261d362c24b26ce1 (patch)
tree6c166a1a442195145ae5a7cb3b7071941800a9d5 /drivers/acpi/tables.c
parent60574d1e05b094d222162260dd9cac49f4d0996a (diff)
acpi: Add HMAT to generic parsing tables
The Heterogeneous Memory Attribute Table (HMAT) header has different field lengths than the existing parsing uses. Add the HMAT type to the parsing rules so it may be generically parsed. Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Tested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Signed-off-by: Keith Busch <keith.busch@intel.com> Tested-by: Brice Goglin <Brice.Goglin@inria.fr> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/acpi/tables.c')
-rw-r--r--drivers/acpi/tables.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c
index 7553774a22b7..3d0da38f94c6 100644
--- a/drivers/acpi/tables.c
+++ b/drivers/acpi/tables.c
@@ -51,6 +51,7 @@ static int acpi_apic_instance __initdata;
51 51
52enum acpi_subtable_type { 52enum acpi_subtable_type {
53 ACPI_SUBTABLE_COMMON, 53 ACPI_SUBTABLE_COMMON,
54 ACPI_SUBTABLE_HMAT,
54}; 55};
55 56
56struct acpi_subtable_entry { 57struct acpi_subtable_entry {
@@ -232,6 +233,8 @@ acpi_get_entry_type(struct acpi_subtable_entry *entry)
232 switch (entry->type) { 233 switch (entry->type) {
233 case ACPI_SUBTABLE_COMMON: 234 case ACPI_SUBTABLE_COMMON:
234 return entry->hdr->common.type; 235 return entry->hdr->common.type;
236 case ACPI_SUBTABLE_HMAT:
237 return entry->hdr->hmat.type;
235 } 238 }
236 return 0; 239 return 0;
237} 240}
@@ -242,6 +245,8 @@ acpi_get_entry_length(struct acpi_subtable_entry *entry)
242 switch (entry->type) { 245 switch (entry->type) {
243 case ACPI_SUBTABLE_COMMON: 246 case ACPI_SUBTABLE_COMMON:
244 return entry->hdr->common.length; 247 return entry->hdr->common.length;
248 case ACPI_SUBTABLE_HMAT:
249 return entry->hdr->hmat.length;
245 } 250 }
246 return 0; 251 return 0;
247} 252}
@@ -252,6 +257,8 @@ acpi_get_subtable_header_length(struct acpi_subtable_entry *entry)
252 switch (entry->type) { 257 switch (entry->type) {
253 case ACPI_SUBTABLE_COMMON: 258 case ACPI_SUBTABLE_COMMON:
254 return sizeof(entry->hdr->common); 259 return sizeof(entry->hdr->common);
260 case ACPI_SUBTABLE_HMAT:
261 return sizeof(entry->hdr->hmat);
255 } 262 }
256 return 0; 263 return 0;
257} 264}
@@ -259,6 +266,8 @@ acpi_get_subtable_header_length(struct acpi_subtable_entry *entry)
259static enum acpi_subtable_type __init 266static enum acpi_subtable_type __init
260acpi_get_subtable_type(char *id) 267acpi_get_subtable_type(char *id)
261{ 268{
269 if (strncmp(id, ACPI_SIG_HMAT, 4) == 0)
270 return ACPI_SUBTABLE_HMAT;
262 return ACPI_SUBTABLE_COMMON; 271 return ACPI_SUBTABLE_COMMON;
263} 272}
264 273