|
@@ -84,7 +84,7 @@ void *dmar_alloc_dev_scope(void *start, void *end, int *cnt)
|
|
*cnt = 0;
|
|
*cnt = 0;
|
|
while (start < end) {
|
|
while (start < end) {
|
|
scope = start;
|
|
scope = start;
|
|
- if (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_ACPI ||
|
|
|
|
|
|
+ if (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_NAMESPACE ||
|
|
scope->entry_type == ACPI_DMAR_SCOPE_TYPE_ENDPOINT ||
|
|
scope->entry_type == ACPI_DMAR_SCOPE_TYPE_ENDPOINT ||
|
|
scope->entry_type == ACPI_DMAR_SCOPE_TYPE_BRIDGE)
|
|
scope->entry_type == ACPI_DMAR_SCOPE_TYPE_BRIDGE)
|
|
(*cnt)++;
|
|
(*cnt)++;
|
|
@@ -380,7 +380,7 @@ static int __init dmar_parse_one_andd(struct acpi_dmar_header *header)
|
|
struct acpi_dmar_andd *andd = (void *)header;
|
|
struct acpi_dmar_andd *andd = (void *)header;
|
|
|
|
|
|
/* Check for NUL termination within the designated length */
|
|
/* Check for NUL termination within the designated length */
|
|
- if (strnlen(andd->object_name, header->length - 8) == header->length - 8) {
|
|
|
|
|
|
+ if (strnlen(andd->device_name, header->length - 8) == header->length - 8) {
|
|
WARN_TAINT(1, TAINT_FIRMWARE_WORKAROUND,
|
|
WARN_TAINT(1, TAINT_FIRMWARE_WORKAROUND,
|
|
"Your BIOS is broken; ANDD object name is not NUL-terminated\n"
|
|
"Your BIOS is broken; ANDD object name is not NUL-terminated\n"
|
|
"BIOS vendor: %s; Ver: %s; Product Version: %s\n",
|
|
"BIOS vendor: %s; Ver: %s; Product Version: %s\n",
|
|
@@ -390,7 +390,7 @@ static int __init dmar_parse_one_andd(struct acpi_dmar_header *header)
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
pr_info("ANDD device: %x name: %s\n", andd->device_number,
|
|
pr_info("ANDD device: %x name: %s\n", andd->device_number,
|
|
- andd->object_name);
|
|
|
|
|
|
+ andd->device_name);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -448,17 +448,17 @@ dmar_table_print_dmar_entry(struct acpi_dmar_header *header)
|
|
(unsigned long long)rmrr->base_address,
|
|
(unsigned long long)rmrr->base_address,
|
|
(unsigned long long)rmrr->end_address);
|
|
(unsigned long long)rmrr->end_address);
|
|
break;
|
|
break;
|
|
- case ACPI_DMAR_TYPE_ATSR:
|
|
|
|
|
|
+ case ACPI_DMAR_TYPE_ROOT_ATS:
|
|
atsr = container_of(header, struct acpi_dmar_atsr, header);
|
|
atsr = container_of(header, struct acpi_dmar_atsr, header);
|
|
pr_info("ATSR flags: %#x\n", atsr->flags);
|
|
pr_info("ATSR flags: %#x\n", atsr->flags);
|
|
break;
|
|
break;
|
|
- case ACPI_DMAR_HARDWARE_AFFINITY:
|
|
|
|
|
|
+ case ACPI_DMAR_TYPE_HARDWARE_AFFINITY:
|
|
rhsa = container_of(header, struct acpi_dmar_rhsa, header);
|
|
rhsa = container_of(header, struct acpi_dmar_rhsa, header);
|
|
pr_info("RHSA base: %#016Lx proximity domain: %#x\n",
|
|
pr_info("RHSA base: %#016Lx proximity domain: %#x\n",
|
|
(unsigned long long)rhsa->base_address,
|
|
(unsigned long long)rhsa->base_address,
|
|
rhsa->proximity_domain);
|
|
rhsa->proximity_domain);
|
|
break;
|
|
break;
|
|
- case ACPI_DMAR_TYPE_ANDD:
|
|
|
|
|
|
+ case ACPI_DMAR_TYPE_NAMESPACE:
|
|
/* We don't print this here because we need to sanity-check
|
|
/* We don't print this here because we need to sanity-check
|
|
it first. So print it in dmar_parse_one_andd() instead. */
|
|
it first. So print it in dmar_parse_one_andd() instead. */
|
|
break;
|
|
break;
|
|
@@ -539,15 +539,15 @@ parse_dmar_table(void)
|
|
case ACPI_DMAR_TYPE_RESERVED_MEMORY:
|
|
case ACPI_DMAR_TYPE_RESERVED_MEMORY:
|
|
ret = dmar_parse_one_rmrr(entry_header);
|
|
ret = dmar_parse_one_rmrr(entry_header);
|
|
break;
|
|
break;
|
|
- case ACPI_DMAR_TYPE_ATSR:
|
|
|
|
|
|
+ case ACPI_DMAR_TYPE_ROOT_ATS:
|
|
ret = dmar_parse_one_atsr(entry_header);
|
|
ret = dmar_parse_one_atsr(entry_header);
|
|
break;
|
|
break;
|
|
- case ACPI_DMAR_HARDWARE_AFFINITY:
|
|
|
|
|
|
+ case ACPI_DMAR_TYPE_HARDWARE_AFFINITY:
|
|
#ifdef CONFIG_ACPI_NUMA
|
|
#ifdef CONFIG_ACPI_NUMA
|
|
ret = dmar_parse_one_rhsa(entry_header);
|
|
ret = dmar_parse_one_rhsa(entry_header);
|
|
#endif
|
|
#endif
|
|
break;
|
|
break;
|
|
- case ACPI_DMAR_TYPE_ANDD:
|
|
|
|
|
|
+ case ACPI_DMAR_TYPE_NAMESPACE:
|
|
ret = dmar_parse_one_andd(entry_header);
|
|
ret = dmar_parse_one_andd(entry_header);
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
@@ -631,7 +631,7 @@ static void __init dmar_acpi_insert_dev_scope(u8 device_number,
|
|
for (scope = (void *)(drhd + 1);
|
|
for (scope = (void *)(drhd + 1);
|
|
(unsigned long)scope < ((unsigned long)drhd) + drhd->header.length;
|
|
(unsigned long)scope < ((unsigned long)drhd) + drhd->header.length;
|
|
scope = ((void *)scope) + scope->length) {
|
|
scope = ((void *)scope) + scope->length) {
|
|
- if (scope->entry_type != ACPI_DMAR_SCOPE_TYPE_ACPI)
|
|
|
|
|
|
+ if (scope->entry_type != ACPI_DMAR_SCOPE_TYPE_NAMESPACE)
|
|
continue;
|
|
continue;
|
|
if (scope->enumeration_id != device_number)
|
|
if (scope->enumeration_id != device_number)
|
|
continue;
|
|
continue;
|
|
@@ -666,21 +666,21 @@ static int __init dmar_acpi_dev_scope_init(void)
|
|
for (andd = (void *)dmar_tbl + sizeof(struct acpi_table_dmar);
|
|
for (andd = (void *)dmar_tbl + sizeof(struct acpi_table_dmar);
|
|
((unsigned long)andd) < ((unsigned long)dmar_tbl) + dmar_tbl->length;
|
|
((unsigned long)andd) < ((unsigned long)dmar_tbl) + dmar_tbl->length;
|
|
andd = ((void *)andd) + andd->header.length) {
|
|
andd = ((void *)andd) + andd->header.length) {
|
|
- if (andd->header.type == ACPI_DMAR_TYPE_ANDD) {
|
|
|
|
|
|
+ if (andd->header.type == ACPI_DMAR_TYPE_NAMESPACE) {
|
|
acpi_handle h;
|
|
acpi_handle h;
|
|
struct acpi_device *adev;
|
|
struct acpi_device *adev;
|
|
|
|
|
|
if (!ACPI_SUCCESS(acpi_get_handle(ACPI_ROOT_OBJECT,
|
|
if (!ACPI_SUCCESS(acpi_get_handle(ACPI_ROOT_OBJECT,
|
|
- andd->object_name,
|
|
|
|
|
|
+ andd->device_name,
|
|
&h))) {
|
|
&h))) {
|
|
pr_err("Failed to find handle for ACPI object %s\n",
|
|
pr_err("Failed to find handle for ACPI object %s\n",
|
|
- andd->object_name);
|
|
|
|
|
|
+ andd->device_name);
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
acpi_bus_get_device(h, &adev);
|
|
acpi_bus_get_device(h, &adev);
|
|
if (!adev) {
|
|
if (!adev) {
|
|
pr_err("Failed to get device for ACPI object %s\n",
|
|
pr_err("Failed to get device for ACPI object %s\n",
|
|
- andd->object_name);
|
|
|
|
|
|
+ andd->device_name);
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
dmar_acpi_insert_dev_scope(andd->device_number, adev);
|
|
dmar_acpi_insert_dev_scope(andd->device_number, adev);
|