Code Review
/
kvmfornfv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git]
/
kernel
/
drivers
/
acpi
/
acpica
/
nsxfname.c
diff --git
a/kernel/drivers/acpi/acpica/nsxfname.c
b/kernel/drivers/acpi/acpica/nsxfname.c
index
d66c326
..
4b4d2f4
100644
(file)
--- a/
kernel/drivers/acpi/acpica/nsxfname.c
+++ b/
kernel/drivers/acpi/acpica/nsxfname.c
@@
-114,7
+114,7
@@
acpi_get_handle(acpi_handle parent,
/* Special case for root-only, since we can't search for it */
/* Special case for root-only, since we can't search for it */
- if (!
ACPI_STRCMP
(pathname, ACPI_NS_ROOT_PATH)) {
+ if (!
strcmp
(pathname, ACPI_NS_ROOT_PATH)) {
*ret_handle =
ACPI_CAST_PTR(acpi_handle, acpi_gbl_root_node);
return (AE_OK);
*ret_handle =
ACPI_CAST_PTR(acpi_handle, acpi_gbl_root_node);
return (AE_OK);
@@
-172,11
+172,15
@@
acpi_get_name(acpi_handle handle, u32 name_type, struct acpi_buffer * buffer)
return (status);
}
return (status);
}
- if (name_type == ACPI_FULL_PATHNAME) {
+ if (name_type == ACPI_FULL_PATHNAME ||
+ name_type == ACPI_FULL_PATHNAME_NO_TRAILING) {
/* Get the full pathname (From the namespace root) */
/* Get the full pathname (From the namespace root) */
- status = acpi_ns_handle_to_pathname(handle, buffer);
+ status = acpi_ns_handle_to_pathname(handle, buffer,
+ name_type ==
+ ACPI_FULL_PATHNAME ? FALSE :
+ TRUE);
return (status);
}
return (status);
}
@@
-242,7
+246,7
@@
static char *acpi_ns_copy_device_id(struct acpi_pnp_device_id *dest,
/* Copy actual string and return a pointer to the next string area */
/* Copy actual string and return a pointer to the next string area */
-
ACPI_MEMCPY
(string_area, source->string, source->length);
+
memcpy
(string_area, source->string, source->length);
return (string_area + source->length);
}
return (string_area + source->length);
}
@@
-260,7
+264,7
@@
static char *acpi_ns_copy_device_id(struct acpi_pnp_device_id *dest,
* control methods (Such as in the case of a device.)
*
* For Device and Processor objects, run the Device _HID, _UID, _CID, _SUB,
* control methods (Such as in the case of a device.)
*
* For Device and Processor objects, run the Device _HID, _UID, _CID, _SUB,
- * _STA, _ADR, _sx_w, and _sx_d methods.
+ * _
CLS, _
STA, _ADR, _sx_w, and _sx_d methods.
*
* Note: Allocates the return buffer, must be freed by the caller.
*
*
* Note: Allocates the return buffer, must be freed by the caller.
*
@@
-276,11
+280,12
@@
acpi_get_object_info(acpi_handle handle,
struct acpi_pnp_device_id *hid = NULL;
struct acpi_pnp_device_id *uid = NULL;
struct acpi_pnp_device_id *sub = NULL;
struct acpi_pnp_device_id *hid = NULL;
struct acpi_pnp_device_id *uid = NULL;
struct acpi_pnp_device_id *sub = NULL;
+ struct acpi_pnp_device_id *cls = NULL;
char *next_id_string;
acpi_object_type type;
acpi_name name;
u8 param_count = 0;
char *next_id_string;
acpi_object_type type;
acpi_name name;
u8 param_count = 0;
- u
8
valid = 0;
+ u
16
valid = 0;
u32 info_size;
u32 i;
acpi_status status;
u32 info_size;
u32 i;
acpi_status status;
@@
-320,7
+325,7
@@
acpi_get_object_info(acpi_handle handle,
if ((type == ACPI_TYPE_DEVICE) || (type == ACPI_TYPE_PROCESSOR)) {
/*
* Get extra info for ACPI Device/Processor objects only:
if ((type == ACPI_TYPE_DEVICE) || (type == ACPI_TYPE_PROCESSOR)) {
/*
* Get extra info for ACPI Device/Processor objects only:
- * Run the Device _HID, _UID, _SUB,
and _CID
methods.
+ * Run the Device _HID, _UID, _SUB,
_CID, and _CLS
methods.
*
* Note: none of these methods are required, so they may or may
* not be present for this device. The Info->Valid bitfield is used
*
* Note: none of these methods are required, so they may or may
* not be present for this device. The Info->Valid bitfield is used
@@
-363,6
+368,14
@@
acpi_get_object_info(acpi_handle handle,
sizeof(struct acpi_pnp_device_id_list));
valid |= ACPI_VALID_CID;
}
sizeof(struct acpi_pnp_device_id_list));
valid |= ACPI_VALID_CID;
}
+
+ /* Execute the Device._CLS method */
+
+ status = acpi_ut_execute_CLS(node, &cls);
+ if (ACPI_SUCCESS(status)) {
+ info_size += cls->length;
+ valid |= ACPI_VALID_CLS;
+ }
}
/*
}
/*
@@
-486,6
+499,11
@@
acpi_get_object_info(acpi_handle handle,
}
}
}
}
+ if (cls) {
+ next_id_string = acpi_ns_copy_device_id(&info->class_code,
+ cls, next_id_string);
+ }
+
/* Copy the fixed-length data */
info->info_size = info_size;
/* Copy the fixed-length data */
info->info_size = info_size;
@@
-510,6
+528,9
@@
cleanup:
if (cid_list) {
ACPI_FREE(cid_list);
}
if (cid_list) {
ACPI_FREE(cid_list);
}
+ if (cls) {
+ ACPI_FREE(cls);
+ }
return (status);
}
return (status);
}
@@
-620,7
+641,7
@@
acpi_status acpi_install_method(u8 *buffer)
/* Copy the method AML to the local buffer */
/* Copy the method AML to the local buffer */
-
ACPI_MEMCPY
(aml_buffer, aml_start, aml_length);
+
memcpy
(aml_buffer, aml_start, aml_length);
/* Initialize the method object with the new method's information */
/* Initialize the method object with the new method's information */