ACPICA: Tables: Update for DMAR table changes.
authorBob Moore <robert.moore@intel.com>
Wed, 30 Jul 2014 04:21:00 +0000 (12:21 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 30 Jul 2014 22:50:23 +0000 (00:50 +0200)
Update table compiler and disassembler for new DMAR fields introduced
in Sept. 2013.

Note that Linux DMAR users need to be updated after applying this change.

[zetalog: changing drivers/iommu/dmar.c accordingly]

Cc: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/iommu/dmar.c
include/acpi/actbl2.h

index 9a4f05e5b23fa480e308d0b44373e6599ad82982..bbe33a81015c20b7cab8e6dcbb0e6ca34f07d7f1 100644 (file)
@@ -84,7 +84,7 @@ void *dmar_alloc_dev_scope(void *start, void *end, int *cnt)
        *cnt = 0;
        while (start < end) {
                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_BRIDGE)
                        (*cnt)++;
@@ -380,7 +380,7 @@ static int __init dmar_parse_one_andd(struct acpi_dmar_header *header)
        struct acpi_dmar_andd *andd = (void *)header;
 
        /* 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,
                           "Your BIOS is broken; ANDD object name is not NUL-terminated\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;
        }
        pr_info("ANDD device: %x name: %s\n", andd->device_number,
-               andd->object_name);
+               andd->device_name);
 
        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->end_address);
                break;
-       case ACPI_DMAR_TYPE_ATSR:
+       case ACPI_DMAR_TYPE_ROOT_ATS:
                atsr = container_of(header, struct acpi_dmar_atsr, header);
                pr_info("ATSR flags: %#x\n", atsr->flags);
                break;
-       case ACPI_DMAR_HARDWARE_AFFINITY:
+       case ACPI_DMAR_TYPE_HARDWARE_AFFINITY:
                rhsa = container_of(header, struct acpi_dmar_rhsa, header);
                pr_info("RHSA base: %#016Lx proximity domain: %#x\n",
                       (unsigned long long)rhsa->base_address,
                       rhsa->proximity_domain);
                break;
-       case ACPI_DMAR_TYPE_ANDD:
+       case ACPI_DMAR_TYPE_NAMESPACE:
                /* We don't print this here because we need to sanity-check
                   it first. So print it in dmar_parse_one_andd() instead. */
                break;
@@ -539,15 +539,15 @@ parse_dmar_table(void)
                case ACPI_DMAR_TYPE_RESERVED_MEMORY:
                        ret = dmar_parse_one_rmrr(entry_header);
                        break;
-               case ACPI_DMAR_TYPE_ATSR:
+               case ACPI_DMAR_TYPE_ROOT_ATS:
                        ret = dmar_parse_one_atsr(entry_header);
                        break;
-               case ACPI_DMAR_HARDWARE_AFFINITY:
+               case ACPI_DMAR_TYPE_HARDWARE_AFFINITY:
 #ifdef CONFIG_ACPI_NUMA
                        ret = dmar_parse_one_rhsa(entry_header);
 #endif
                        break;
-               case ACPI_DMAR_TYPE_ANDD:
+               case ACPI_DMAR_TYPE_NAMESPACE:
                        ret = dmar_parse_one_andd(entry_header);
                        break;
                default:
@@ -631,7 +631,7 @@ static void __init dmar_acpi_insert_dev_scope(u8 device_number,
                for (scope = (void *)(drhd + 1);
                     (unsigned long)scope < ((unsigned long)drhd) + drhd->header.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;
                        if (scope->enumeration_id != device_number)
                                continue;
@@ -666,21 +666,21 @@ static int __init dmar_acpi_dev_scope_init(void)
        for (andd = (void *)dmar_tbl + sizeof(struct acpi_table_dmar);
             ((unsigned long)andd) < ((unsigned long)dmar_tbl) + dmar_tbl->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;
                        struct acpi_device *adev;
 
                        if (!ACPI_SUCCESS(acpi_get_handle(ACPI_ROOT_OBJECT,
-                                                         andd->object_name,
+                                                         andd->device_name,
                                                          &h))) {
                                pr_err("Failed to find handle for ACPI object %s\n",
-                                      andd->object_name);
+                                      andd->device_name);
                                continue;
                        }
                        acpi_bus_get_device(h, &adev);
                        if (!adev) {
                                pr_err("Failed to get device for ACPI object %s\n",
-                                      andd->object_name);
+                                      andd->device_name);
                                continue;
                        }
                        dmar_acpi_insert_dev_scope(andd->device_number, adev);
index 21314d37cb079415f0b900bb63cfc5d2e224d3bc..ecff62405f17162f09901d53dfdf113452808dc8 100644 (file)
@@ -396,7 +396,7 @@ struct acpi_table_dbgp {
  *        Version 1
  *
  * Conforms to "Intel Virtualization Technology for Directed I/O",
- * Version 1.2, Sept. 2008
+ * Version 2.2, Sept. 2013
  *
  ******************************************************************************/
 
@@ -423,9 +423,9 @@ struct acpi_dmar_header {
 enum acpi_dmar_type {
        ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
        ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
-       ACPI_DMAR_TYPE_ATSR = 2,
-       ACPI_DMAR_HARDWARE_AFFINITY = 3,
-       ACPI_DMAR_TYPE_ANDD = 4,
+       ACPI_DMAR_TYPE_ROOT_ATS = 2,
+       ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3,
+       ACPI_DMAR_TYPE_NAMESPACE = 4,
        ACPI_DMAR_TYPE_RESERVED = 5     /* 5 and greater are reserved */
 };
 
@@ -439,7 +439,7 @@ struct acpi_dmar_device_scope {
        u8 bus;
 };
 
-/* Values for entry_type in struct acpi_dmar_device_scope */
+/* Values for entry_type in struct acpi_dmar_device_scope - device types */
 
 enum acpi_dmar_scope_type {
        ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,
@@ -447,7 +447,7 @@ enum acpi_dmar_scope_type {
        ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
        ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
        ACPI_DMAR_SCOPE_TYPE_HPET = 4,
-       ACPI_DMAR_SCOPE_TYPE_ACPI = 5,
+       ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5,
        ACPI_DMAR_SCOPE_TYPE_RESERVED = 6       /* 6 and greater are reserved */
 };
 
@@ -516,7 +516,7 @@ struct acpi_dmar_andd {
        struct acpi_dmar_header header;
        u8 reserved[3];
        u8 device_number;
-       char object_name[1];
+       char device_name[1];
 };
 
 /*******************************************************************************