Merge branches 'acpica' and 'acpi-scan'
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 15 Dec 2020 14:29:30 +0000 (15:29 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 15 Dec 2020 14:29:30 +0000 (15:29 +0100)
* acpica:
  ACPICA: Update version to 20201113
  ACPICA: Interpreter: fix memory leak by using existing buffer
  ACPICA: Add function trace macros to improve debugging
  ACPICA: Also handle "orphan" _REG methods for GPIO OpRegions
  ACPICA: Remove extreaneous "the" in comments
  ACPICA: Add 5 new UUIDs to the known UUID table

* acpi-scan:
  ACPI: scan: Fix up _DEP-related terminology with supplier/consumer
  ACPI: scan: Drop INT3396 from acpi_ignore_dep_ids[]
  ACPI: scan: Add PNP0D80 to the _DEP exceptions list
  ACPI: scan: Call acpi_get_object_info() from acpi_add_single_object()
  ACPI: scan: Add acpi_info_matches_hids() helper

drivers/acpi/acpica/accommon.h
drivers/acpi/acpica/evregion.c
drivers/acpi/acpica/nspredef.c
drivers/acpi/acpica/nsprepkg.c
drivers/acpi/acpica/nsrepair2.c
drivers/acpi/internal.h
drivers/acpi/power.c
drivers/acpi/scan.c
include/acpi/acpixf.h
include/acpi/acuuid.h

index 89101e5..94e18bb 100644 (file)
@@ -13,7 +13,7 @@
 /*
  * Common set of includes for all ACPICA source files.
  * We put them here because we don't want to duplicate them
- * in the the source code again and again.
+ * in the source code again and again.
  *
  * Note: The order of these include files is important.
  */
index 738d4b2..a8a4c8c 100644 (file)
@@ -21,7 +21,8 @@ extern u8 acpi_gbl_default_address_spaces[];
 /* Local prototypes */
 
 static void
-acpi_ev_orphan_ec_reg_method(struct acpi_namespace_node *ec_device_node);
+acpi_ev_execute_orphan_reg_method(struct acpi_namespace_node *device_node,
+                                 acpi_adr_space_type space_id);
 
 static acpi_status
 acpi_ev_reg_run(acpi_handle obj_handle,
@@ -684,10 +685,12 @@ acpi_ev_execute_reg_methods(struct acpi_namespace_node *node,
                                     ACPI_NS_WALK_UNLOCK, acpi_ev_reg_run, NULL,
                                     &info, NULL);
 
-       /* Special case for EC: handle "orphan" _REG methods with no region */
-
-       if (space_id == ACPI_ADR_SPACE_EC) {
-               acpi_ev_orphan_ec_reg_method(node);
+       /*
+        * Special case for EC and GPIO: handle "orphan" _REG methods with
+        * no region.
+        */
+       if (space_id == ACPI_ADR_SPACE_EC || space_id == ACPI_ADR_SPACE_GPIO) {
+               acpi_ev_execute_orphan_reg_method(node, space_id);
        }
 
        ACPI_DEBUG_PRINT_RAW((ACPI_DB_NAMES,
@@ -760,31 +763,28 @@ acpi_ev_reg_run(acpi_handle obj_handle,
 
 /*******************************************************************************
  *
- * FUNCTION:    acpi_ev_orphan_ec_reg_method
+ * FUNCTION:    acpi_ev_execute_orphan_reg_method
  *
- * PARAMETERS:  ec_device_node      - Namespace node for an EC device
+ * PARAMETERS:  device_node         - Namespace node for an ACPI device
+ *              space_id            - The address space ID
  *
  * RETURN:      None
  *
- * DESCRIPTION: Execute an "orphan" _REG method that appears under the EC
+ * DESCRIPTION: Execute an "orphan" _REG method that appears under an ACPI
  *              device. This is a _REG method that has no corresponding region
- *              within the EC device scope. The orphan _REG method appears to
- *              have been enabled by the description of the ECDT in the ACPI
- *              specification: "The availability of the region space can be
- *              detected by providing a _REG method object underneath the
- *              Embedded Controller device."
- *
- *              To quickly access the EC device, we use the ec_device_node used
- *              during EC handler installation. Otherwise, we would need to
- *              perform a time consuming namespace walk, executing _HID
- *              methods to find the EC device.
+ *              within the device's scope. ACPI tables depending on these
+ *              "orphan" _REG methods have been seen for both EC and GPIO
+ *              Operation Regions. Presumably the Windows ACPI implementation
+ *              always calls the _REG method independent of the presence of
+ *              an actual Operation Region with the correct address space ID.
  *
  *  MUTEX:      Assumes the namespace is locked
  *
  ******************************************************************************/
 
 static void
-acpi_ev_orphan_ec_reg_method(struct acpi_namespace_node *ec_device_node)
+acpi_ev_execute_orphan_reg_method(struct acpi_namespace_node *device_node,
+                                 acpi_adr_space_type space_id)
 {
        acpi_handle reg_method;
        struct acpi_namespace_node *next_node;
@@ -792,9 +792,9 @@ acpi_ev_orphan_ec_reg_method(struct acpi_namespace_node *ec_device_node)
        struct acpi_object_list args;
        union acpi_object objects[2];
 
-       ACPI_FUNCTION_TRACE(ev_orphan_ec_reg_method);
+       ACPI_FUNCTION_TRACE(ev_execute_orphan_reg_method);
 
-       if (!ec_device_node) {
+       if (!device_node) {
                return_VOID;
        }
 
@@ -804,7 +804,7 @@ acpi_ev_orphan_ec_reg_method(struct acpi_namespace_node *ec_device_node)
 
        /* Get a handle to a _REG method immediately under the EC device */
 
-       status = acpi_get_handle(ec_device_node, METHOD_NAME__REG, &reg_method);
+       status = acpi_get_handle(device_node, METHOD_NAME__REG, &reg_method);
        if (ACPI_FAILURE(status)) {
                goto exit;      /* There is no _REG method present */
        }
@@ -816,23 +816,23 @@ acpi_ev_orphan_ec_reg_method(struct acpi_namespace_node *ec_device_node)
         * with other space IDs to be present; but the code below will then
         * execute the _REG method with the embedded_control space_ID argument.
         */
-       next_node = acpi_ns_get_next_node(ec_device_node, NULL);
+       next_node = acpi_ns_get_next_node(device_node, NULL);
        while (next_node) {
                if ((next_node->type == ACPI_TYPE_REGION) &&
                    (next_node->object) &&
-                   (next_node->object->region.space_id == ACPI_ADR_SPACE_EC)) {
+                   (next_node->object->region.space_id == space_id)) {
                        goto exit;      /* Do not execute the _REG */
                }
 
-               next_node = acpi_ns_get_next_node(ec_device_node, next_node);
+               next_node = acpi_ns_get_next_node(device_node, next_node);
        }
 
-       /* Evaluate the _REG(embedded_control,Connect) method */
+       /* Evaluate the _REG(space_id,Connect) method */
 
        args.count = 2;
        args.pointer = objects;
        objects[0].type = ACPI_TYPE_INTEGER;
-       objects[0].integer.value = ACPI_ADR_SPACE_EC;
+       objects[0].integer.value = space_id;
        objects[1].type = ACPI_TYPE_INTEGER;
        objects[1].integer.value = ACPI_REG_CONNECT;
 
index 0cea9c3..167a1c2 100644 (file)
@@ -71,11 +71,13 @@ acpi_ns_check_return_value(struct acpi_namespace_node *node,
        acpi_status status;
        const union acpi_predefined_info *predefined;
 
+       ACPI_FUNCTION_TRACE(ns_check_return_value);
+
        /* If not a predefined name, we cannot validate the return object */
 
        predefined = info->predefined;
        if (!predefined) {
-               return (AE_OK);
+               return_ACPI_STATUS(AE_OK);
        }
 
        /*
@@ -83,7 +85,7 @@ acpi_ns_check_return_value(struct acpi_namespace_node *node,
         * validate the return object
         */
        if ((return_status != AE_OK) && (return_status != AE_CTRL_RETURN_VALUE)) {
-               return (AE_OK);
+               return_ACPI_STATUS(AE_OK);
        }
 
        /*
@@ -102,7 +104,7 @@ acpi_ns_check_return_value(struct acpi_namespace_node *node,
        if (acpi_gbl_disable_auto_repair ||
            (!predefined->info.expected_btypes) ||
            (predefined->info.expected_btypes == ACPI_RTYPE_ALL)) {
-               return (AE_OK);
+               return_ACPI_STATUS(AE_OK);
        }
 
        /*
@@ -163,7 +165,7 @@ exit:
                node->flags |= ANOBJ_EVALUATED;
        }
 
-       return (status);
+       return_ACPI_STATUS(status);
 }
 
 /*******************************************************************************
index 237b3dd..1875b1c 100644 (file)
@@ -59,7 +59,7 @@ acpi_ns_check_package(struct acpi_evaluate_info *info,
        u32 count;
        u32 i;
 
-       ACPI_FUNCTION_NAME(ns_check_package);
+       ACPI_FUNCTION_TRACE(ns_check_package);
 
        /* The package info for this name is in the next table entry */
 
@@ -88,14 +88,14 @@ acpi_ns_check_package(struct acpi_evaluate_info *info,
         */
        if (!count) {
                if (package->ret_info.type == ACPI_PTYPE1_VAR) {
-                       return (AE_OK);
+                       return_ACPI_STATUS(AE_OK);
                }
 
                ACPI_WARN_PREDEFINED((AE_INFO, info->full_pathname,
                                      info->node_flags,
                                      "Return Package has no elements (empty)"));
 
-               return (AE_AML_OPERAND_VALUE);
+               return_ACPI_STATUS(AE_AML_OPERAND_VALUE);
        }
 
        /*
@@ -152,7 +152,7 @@ acpi_ns_check_package(struct acpi_evaluate_info *info,
                                                           package->ret_info.
                                                           object_type1, i);
                        if (ACPI_FAILURE(status)) {
-                               return (status);
+                               return_ACPI_STATUS(status);
                        }
 
                        elements++;
@@ -186,7 +186,7 @@ acpi_ns_check_package(struct acpi_evaluate_info *info,
                                                              object_type[i],
                                                              i);
                                if (ACPI_FAILURE(status)) {
-                                       return (status);
+                                       return_ACPI_STATUS(status);
                                }
                        } else {
                                /* These are the optional package elements */
@@ -198,7 +198,7 @@ acpi_ns_check_package(struct acpi_evaluate_info *info,
                                                              tail_object_type,
                                                              i);
                                if (ACPI_FAILURE(status)) {
-                                       return (status);
+                                       return_ACPI_STATUS(status);
                                }
                        }
 
@@ -214,7 +214,7 @@ acpi_ns_check_package(struct acpi_evaluate_info *info,
                    acpi_ns_check_object_type(info, elements,
                                              ACPI_RTYPE_INTEGER, 0);
                if (ACPI_FAILURE(status)) {
-                       return (status);
+                       return_ACPI_STATUS(status);
                }
 
                elements++;
@@ -234,7 +234,7 @@ acpi_ns_check_package(struct acpi_evaluate_info *info,
                    acpi_ns_check_object_type(info, elements,
                                              ACPI_RTYPE_INTEGER, 0);
                if (ACPI_FAILURE(status)) {
-                       return (status);
+                       return_ACPI_STATUS(status);
                }
 
                /*
@@ -279,7 +279,7 @@ acpi_ns_check_package(struct acpi_evaluate_info *info,
                            acpi_ns_wrap_with_package(info, return_object,
                                                      return_object_ptr);
                        if (ACPI_FAILURE(status)) {
-                               return (status);
+                               return_ACPI_STATUS(status);
                        }
 
                        /* Update locals to point to the new package (of 1 element) */
@@ -316,7 +316,7 @@ acpi_ns_check_package(struct acpi_evaluate_info *info,
                                                           package->ret_info.
                                                           object_type1, 0);
                        if (ACPI_FAILURE(status)) {
-                               return (status);
+                               return_ACPI_STATUS(status);
                        }
 
                        /* Validate length of the UUID buffer */
@@ -326,14 +326,14 @@ acpi_ns_check_package(struct acpi_evaluate_info *info,
                                                      info->full_pathname,
                                                      info->node_flags,
                                                      "Invalid length for UUID Buffer"));
-                               return (AE_AML_OPERAND_VALUE);
+                               return_ACPI_STATUS(AE_AML_OPERAND_VALUE);
                        }
 
                        status = acpi_ns_check_object_type(info, elements + 1,
                                                           package->ret_info.
                                                           object_type2, 0);
                        if (ACPI_FAILURE(status)) {
-                               return (status);
+                               return_ACPI_STATUS(status);
                        }
 
                        elements += 2;
@@ -350,10 +350,10 @@ acpi_ns_check_package(struct acpi_evaluate_info *info,
                                      "Invalid internal return type in table entry: %X",
                                      package->ret_info.type));
 
-               return (AE_AML_INTERNAL);
+               return_ACPI_STATUS(AE_AML_INTERNAL);
        }
 
-       return (status);
+       return_ACPI_STATUS(status);
 
 package_too_small:
 
@@ -363,7 +363,7 @@ package_too_small:
                              "Return Package is too small - found %u elements, expected %u",
                              count, expected_count));
 
-       return (AE_AML_OPERAND_VALUE);
+       return_ACPI_STATUS(AE_AML_OPERAND_VALUE);
 }
 
 /*******************************************************************************
@@ -708,6 +708,8 @@ acpi_ns_check_package_elements(struct acpi_evaluate_info *info,
        acpi_status status;
        u32 i;
 
+       ACPI_FUNCTION_TRACE(ns_check_package_elements);
+
        /*
         * Up to two groups of package elements are supported by the data
         * structure. All elements in each group must be of the same type.
@@ -717,7 +719,7 @@ acpi_ns_check_package_elements(struct acpi_evaluate_info *info,
                status = acpi_ns_check_object_type(info, this_element,
                                                   type1, i + start_index);
                if (ACPI_FAILURE(status)) {
-                       return (status);
+                       return_ACPI_STATUS(status);
                }
 
                this_element++;
@@ -728,11 +730,11 @@ acpi_ns_check_package_elements(struct acpi_evaluate_info *info,
                                                   type2,
                                                   (i + count1 + start_index));
                if (ACPI_FAILURE(status)) {
-                       return (status);
+                       return_ACPI_STATUS(status);
                }
 
                this_element++;
        }
 
-       return (AE_OK);
+       return_ACPI_STATUS(AE_OK);
 }
index 125143c..d2c8d82 100644 (file)
@@ -155,15 +155,17 @@ acpi_ns_complex_repairs(struct acpi_evaluate_info *info,
        const struct acpi_repair_info *predefined;
        acpi_status status;
 
+       ACPI_FUNCTION_TRACE(ns_complex_repairs);
+
        /* Check if this name is in the list of repairable names */
 
        predefined = acpi_ns_match_complex_repair(node);
        if (!predefined) {
-               return (validate_status);
+               return_ACPI_STATUS(validate_status);
        }
 
        status = predefined->repair_function(info, return_object_ptr);
-       return (status);
+       return_ACPI_STATUS(status);
 }
 
 /******************************************************************************
@@ -344,17 +346,19 @@ acpi_ns_repair_CID(struct acpi_evaluate_info *info,
        u16 original_ref_count;
        u32 i;
 
+       ACPI_FUNCTION_TRACE(ns_repair_CID);
+
        /* Check for _CID as a simple string */
 
        if (return_object->common.type == ACPI_TYPE_STRING) {
                status = acpi_ns_repair_HID(info, return_object_ptr);
-               return (status);
+               return_ACPI_STATUS(status);
        }
 
        /* Exit if not a Package */
 
        if (return_object->common.type != ACPI_TYPE_PACKAGE) {
-               return (AE_OK);
+               return_ACPI_STATUS(AE_OK);
        }
 
        /* Examine each element of the _CID package */
@@ -366,7 +370,7 @@ acpi_ns_repair_CID(struct acpi_evaluate_info *info,
 
                status = acpi_ns_repair_HID(info, element_ptr);
                if (ACPI_FAILURE(status)) {
-                       return (status);
+                       return_ACPI_STATUS(status);
                }
 
                if (original_element != *element_ptr) {
@@ -380,7 +384,7 @@ acpi_ns_repair_CID(struct acpi_evaluate_info *info,
                element_ptr++;
        }
 
-       return (AE_OK);
+       return_ACPI_STATUS(AE_OK);
 }
 
 /******************************************************************************
@@ -491,16 +495,15 @@ acpi_ns_repair_HID(struct acpi_evaluate_info *info,
                   union acpi_operand_object **return_object_ptr)
 {
        union acpi_operand_object *return_object = *return_object_ptr;
-       union acpi_operand_object *new_string;
-       char *source;
        char *dest;
+       char *source;
 
        ACPI_FUNCTION_NAME(ns_repair_HID);
 
        /* We only care about string _HID objects (not integers) */
 
        if (return_object->common.type != ACPI_TYPE_STRING) {
-               return (AE_OK);
+               return_ACPI_STATUS(AE_OK);
        }
 
        if (return_object->string.length == 0) {
@@ -511,14 +514,7 @@ acpi_ns_repair_HID(struct acpi_evaluate_info *info,
                /* Return AE_OK anyway, let driver handle it */
 
                info->return_flags |= ACPI_OBJECT_REPAIRED;
-               return (AE_OK);
-       }
-
-       /* It is simplest to always create a new string object */
-
-       new_string = acpi_ut_create_string_object(return_object->string.length);
-       if (!new_string) {
-               return (AE_NO_MEMORY);
+               return_ACPI_STATUS(AE_OK);
        }
 
        /*
@@ -530,7 +526,7 @@ acpi_ns_repair_HID(struct acpi_evaluate_info *info,
        source = return_object->string.pointer;
        if (*source == '*') {
                source++;
-               new_string->string.length--;
+               return_object->string.length--;
 
                ACPI_DEBUG_PRINT((ACPI_DB_REPAIR,
                                  "%s: Removed invalid leading asterisk\n",
@@ -545,13 +541,12 @@ acpi_ns_repair_HID(struct acpi_evaluate_info *info,
         * "NNNN####" where N is an uppercase letter or decimal digit, and
         * # is a hex digit.
         */
-       for (dest = new_string->string.pointer; *source; dest++, source++) {
+       for (dest = return_object->string.pointer; *source; dest++, source++) {
                *dest = (char)toupper((int)*source);
        }
+       return_object->string.pointer[return_object->string.length] = 0;
 
-       acpi_ut_remove_reference(return_object);
-       *return_object_ptr = new_string;
-       return (AE_OK);
+       return_ACPI_STATUS(AE_OK);
 }
 
 /******************************************************************************
index e3638ba..cb229e2 100644 (file)
@@ -105,7 +105,8 @@ struct acpi_device_bus_id {
 int acpi_device_add(struct acpi_device *device,
                    void (*release)(struct device *));
 void acpi_init_device_object(struct acpi_device *device, acpi_handle handle,
-                            int type, unsigned long long sta);
+                            int type, unsigned long long sta,
+                            struct acpi_device_info *info);
 int acpi_device_setup_files(struct acpi_device *dev);
 void acpi_device_remove_files(struct acpi_device *dev);
 void acpi_device_add_finalize(struct acpi_device *device);
index 8048da8..189a0d4 100644 (file)
@@ -939,7 +939,7 @@ int acpi_add_power_resource(acpi_handle handle)
 
        device = &resource->device;
        acpi_init_device_object(device, handle, ACPI_BUS_TYPE_POWER,
-                               ACPI_STA_DEFAULT);
+                               ACPI_STA_DEFAULT, NULL);
        mutex_init(&resource->resource_lock);
        INIT_LIST_HEAD(&resource->list_node);
        INIT_LIST_HEAD(&resource->dependents);
index bc6a79e..37317e0 100644 (file)
@@ -51,8 +51,8 @@ static u64 spcr_uart_addr;
 
 struct acpi_dep_data {
        struct list_head node;
-       acpi_handle master;
-       acpi_handle slave;
+       acpi_handle supplier;
+       acpi_handle consumer;
 };
 
 void acpi_scan_lock_acquire(void)
@@ -719,6 +719,42 @@ int acpi_device_add(struct acpi_device *device,
 /* --------------------------------------------------------------------------
                                  Device Enumeration
    -------------------------------------------------------------------------- */
+static bool acpi_info_matches_ids(struct acpi_device_info *info,
+                                 const char * const ids[])
+{
+       struct acpi_pnp_device_id_list *cid_list = NULL;
+       int i;
+
+       if (!(info->valid & ACPI_VALID_HID))
+               return false;
+
+       if (info->valid & ACPI_VALID_CID)
+               cid_list = &info->compatible_id_list;
+
+       for (i = 0; ids[i]; i++) {
+               int j;
+
+               if (!strcmp(info->hardware_id.string, ids[i]))
+                       return true;
+
+               if (!cid_list)
+                       continue;
+
+               for (j = 0; j < cid_list->count; j++) {
+                       if (!strcmp(cid_list->ids[j].string, ids[i]))
+                               return true;
+               }
+       }
+
+       return false;
+}
+
+/* List of HIDs for which we ignore matching ACPI devices, when checking _DEP lists. */
+static const char * const acpi_ignore_dep_ids[] = {
+       "PNP0D80", /* Windows-compatible System Power Management Controller */
+       NULL
+};
+
 static struct acpi_device *acpi_bus_get_parent(acpi_handle handle)
 {
        struct acpi_device *device = NULL;
@@ -1236,10 +1272,8 @@ static bool acpi_object_is_system_bus(acpi_handle handle)
 }
 
 static void acpi_set_pnp_ids(acpi_handle handle, struct acpi_device_pnp *pnp,
-                               int device_type)
+                               int device_type, struct acpi_device_info *info)
 {
-       acpi_status status;
-       struct acpi_device_info *info;
        struct acpi_pnp_device_id_list *cid_list;
        int i;
 
@@ -1250,8 +1284,7 @@ static void acpi_set_pnp_ids(acpi_handle handle, struct acpi_device_pnp *pnp,
                        break;
                }
 
-               status = acpi_get_object_info(handle, &info);
-               if (ACPI_FAILURE(status)) {
+               if (!info) {
                        pr_err(PREFIX "%s: Error reading device info\n",
                                        __func__);
                        return;
@@ -1276,8 +1309,6 @@ static void acpi_set_pnp_ids(acpi_handle handle, struct acpi_device_pnp *pnp,
                if (info->valid & ACPI_VALID_CLS)
                        acpi_add_id(pnp, info->class_code.string);
 
-               kfree(info);
-
                /*
                 * Some devices don't reliably have _HIDs & _CIDs, so add
                 * synthetic HIDs to make sure drivers can find them.
@@ -1583,7 +1614,8 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
 }
 
 void acpi_init_device_object(struct acpi_device *device, acpi_handle handle,
-                            int type, unsigned long long sta)
+                            int type, unsigned long long sta,
+                            struct acpi_device_info *info)
 {
        INIT_LIST_HEAD(&device->pnp.ids);
        device->device_type = type;
@@ -1592,7 +1624,7 @@ void acpi_init_device_object(struct acpi_device *device, acpi_handle handle,
        device->fwnode.ops = &acpi_device_fwnode_ops;
        acpi_set_device_status(device, sta);
        acpi_device_get_busid(device);
-       acpi_set_pnp_ids(handle, &device->pnp, type);
+       acpi_set_pnp_ids(handle, &device->pnp, type, info);
        acpi_init_properties(device);
        acpi_bus_get_flags(device);
        device->flags.match_driver = false;
@@ -1620,14 +1652,20 @@ static int acpi_add_single_object(struct acpi_device **child,
        int result;
        struct acpi_device *device;
        struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
+       struct acpi_device_info *info = NULL;
+
+       if (handle != ACPI_ROOT_OBJECT && type == ACPI_BUS_TYPE_DEVICE)
+               acpi_get_object_info(handle, &info);
 
        device = kzalloc(sizeof(struct acpi_device), GFP_KERNEL);
        if (!device) {
                printk(KERN_ERR PREFIX "Memory allocation error\n");
+               kfree(info);
                return -ENOMEM;
        }
 
-       acpi_init_device_object(device, handle, type, sta);
+       acpi_init_device_object(device, handle, type, sta, info);
+       kfree(info);
        /*
         * For ACPI_BUS_TYPE_DEVICE getting the status is delayed till here so
         * that we can call acpi_bus_get_status() and use its quirk handling.
@@ -1833,13 +1871,7 @@ static void acpi_device_dep_initialize(struct acpi_device *adev)
                        continue;
                }
 
-               /*
-                * Skip the dependency of Windows System Power
-                * Management Controller
-                */
-               skip = info->valid & ACPI_VALID_HID &&
-                       !strcmp(info->hardware_id.string, "INT3396");
-
+               skip = acpi_info_matches_ids(info, acpi_ignore_dep_ids);
                kfree(info);
 
                if (skip)
@@ -1849,8 +1881,8 @@ static void acpi_device_dep_initialize(struct acpi_device *adev)
                if (!dep)
                        return;
 
-               dep->master = dep_devices.handles[i];
-               dep->slave  = adev->handle;
+               dep->supplier = dep_devices.handles[i];
+               dep->consumer  = adev->handle;
                adev->dep_unmet++;
 
                mutex_lock(&acpi_dep_list_lock);
@@ -2026,8 +2058,8 @@ void acpi_walk_dep_device_list(acpi_handle handle)
 
        mutex_lock(&acpi_dep_list_lock);
        list_for_each_entry_safe(dep, tmp, &acpi_dep_list, node) {
-               if (dep->master == handle) {
-                       acpi_bus_get_device(dep->slave, &adev);
+               if (dep->supplier == handle) {
+                       acpi_bus_get_device(dep->consumer, &adev);
                        if (!adev)
                                continue;
 
index be7de30..0bba8b8 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Current ACPICA subsystem version in YYYYMMDD format */
 
-#define ACPI_CA_VERSION                 0x20200925
+#define ACPI_CA_VERSION                 0x20201113
 
 #include <acpi/acconfig.h>
 #include <acpi/actypes.h>
index 10e30a5..fb7d8d1 100644 (file)
@@ -39,6 +39,7 @@
 
 /* NVDIMM - NFIT table */
 
+#define UUID_NFIT_DIMM                  "4309ac30-0d11-11e4-9191-0800200c9a66"
 #define UUID_VOLATILE_MEMORY            "7305944f-fdda-44e3-b16c-3f22d252e5d0"
 #define UUID_PERSISTENT_MEMORY          "66f0d379-b4f3-4074-ac43-0d3318b78cdb"
 #define UUID_CONTROL_REGION             "92f701f6-13b4-405d-910b-299367e8234c"
 #define UUID_VOLATILE_VIRTUAL_CD        "3d5abd30-4175-87ce-6d64-d2ade523c4bb"
 #define UUID_PERSISTENT_VIRTUAL_DISK    "5cea02c9-4d07-69d3-269f-4496fbe096f9"
 #define UUID_PERSISTENT_VIRTUAL_CD      "08018188-42cd-bb48-100f-5387d53ded3d"
+#define UUID_NFIT_DIMM_N_MSFT           "1ee68b36-d4bd-4a1a-9a16-4f8e53d46e05"
+#define UUID_NFIT_DIMM_N_HPE1           "9002c334-acf3-4c0e-9642-a235f0d53bc6"
+#define UUID_NFIT_DIMM_N_HPE2           "5008664b-b758-41a0-a03c-27c2f2d04f7e"
+#define UUID_NFIT_DIMM_N_HYPERV         "5746c5f2-a9a2-4264-ad0e-e4ddc9e09e80"
 
 /* Processor Properties (ACPI 6.2) */