Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'acpi-4.14-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull ACPI fixes from Rafael Wysocki:
"These fix the initialization of resources in the ACPI WDAT watchdog
driver, a recent regression in the ACPI device properties handling, a
recent change in behavior causing the ACPI_HANDLE() macro to only work
for GPL code and create a MAINTAINERS entry for ACPI PMIC drivers in
order to specify the official reviewers for that code.

Specifics:

- Fix the initialization of resources in the ACPI WDAT watchdog
driver that uses unititialized memory which causes compiler
warnings to be triggered (Arnd Bergmann).

- Fix a recent regression in the ACPI device properties handling that
causes some device properties data to be skipped during enumeration
(Sakari Ailus).

- Fix a recent change in behavior that caused the ACPI_HANDLE() macro
to stop working for non-GPL code which is a problem for the NVidia
binary graphics driver, for example (John Hubbard).

- Add a MAINTAINERS entry for the ACPI PMIC drivers to specify the
official reviewers for that code (Rafael Wysocki)"

* tag 'acpi-4.14-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
ACPI: properties: Return _DSD hierarchical extension (data) sub-nodes correctly
ACPI / bus: Make ACPI_HANDLE() work for non-GPL code again
ACPI / watchdog: properly initialize resources
ACPI / PMIC: Add code reviewers to MAINTAINERS

+36 -20
+12
MAINTAINERS
··· 352 352 S: Maintained 353 353 F: drivers/acpi/arm64 354 354 355 + ACPI PMIC DRIVERS 356 + M: "Rafael J. Wysocki" <rjw@rjwysocki.net> 357 + M: Len Brown <lenb@kernel.org> 358 + R: Andy Shevchenko <andy@infradead.org> 359 + R: Mika Westerberg <mika.westerberg@linux.intel.com> 360 + L: linux-acpi@vger.kernel.org 361 + Q: https://patchwork.kernel.org/project/linux-acpi/list/ 362 + T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm 363 + B: https://bugzilla.kernel.org 364 + S: Supported 365 + F: drivers/acpi/pmic/ 366 + 355 367 ACPI THERMAL DRIVER 356 368 M: Zhang Rui <rui.zhang@intel.com> 357 369 L: linux-acpi@vger.kernel.org
+1 -1
drivers/acpi/acpi_watchdog.c
··· 66 66 for (i = 0; i < wdat->entries; i++) { 67 67 const struct acpi_generic_address *gas; 68 68 struct resource_entry *rentry; 69 - struct resource res; 69 + struct resource res = {}; 70 70 bool found; 71 71 72 72 gas = &entries[i].register_region;
+19 -5
drivers/acpi/property.c
··· 908 908 struct fwnode_handle *child) 909 909 { 910 910 const struct acpi_device *adev = to_acpi_device_node(fwnode); 911 - struct acpi_device *child_adev = NULL; 912 911 const struct list_head *head; 913 912 struct list_head *next; 914 913 915 914 if (!child || is_acpi_device_node(child)) { 915 + struct acpi_device *child_adev; 916 + 916 917 if (adev) 917 918 head = &adev->children; 918 919 else ··· 923 922 goto nondev; 924 923 925 924 if (child) { 926 - child_adev = to_acpi_device_node(child); 927 - next = child_adev->node.next; 925 + adev = to_acpi_device_node(child); 926 + next = adev->node.next; 928 927 if (next == head) { 929 928 child = NULL; 930 929 goto nondev; ··· 942 941 const struct acpi_data_node *data = to_acpi_data_node(fwnode); 943 942 struct acpi_data_node *dn; 944 943 945 - if (child_adev) 946 - head = &child_adev->data.subnodes; 944 + if (adev) 945 + head = &adev->data.subnodes; 947 946 else if (data) 948 947 head = &data->data.subnodes; 949 948 else ··· 1294 1293 DECLARE_ACPI_FWNODE_OPS(acpi_device_fwnode_ops); 1295 1294 DECLARE_ACPI_FWNODE_OPS(acpi_data_fwnode_ops); 1296 1295 const struct fwnode_operations acpi_static_fwnode_ops; 1296 + 1297 + bool is_acpi_device_node(const struct fwnode_handle *fwnode) 1298 + { 1299 + return !IS_ERR_OR_NULL(fwnode) && 1300 + fwnode->ops == &acpi_device_fwnode_ops; 1301 + } 1302 + EXPORT_SYMBOL(is_acpi_device_node); 1303 + 1304 + bool is_acpi_data_node(const struct fwnode_handle *fwnode) 1305 + { 1306 + return !IS_ERR_OR_NULL(fwnode) && fwnode->ops == &acpi_data_fwnode_ops; 1307 + } 1308 + EXPORT_SYMBOL(is_acpi_data_node);
+4 -14
include/acpi/acpi_bus.h
··· 399 399 extern const struct fwnode_operations acpi_data_fwnode_ops; 400 400 extern const struct fwnode_operations acpi_static_fwnode_ops; 401 401 402 + bool is_acpi_device_node(const struct fwnode_handle *fwnode); 403 + bool is_acpi_data_node(const struct fwnode_handle *fwnode); 404 + 402 405 static inline bool is_acpi_node(const struct fwnode_handle *fwnode) 403 406 { 404 - return !IS_ERR_OR_NULL(fwnode) && 405 - (fwnode->ops == &acpi_device_fwnode_ops 406 - || fwnode->ops == &acpi_data_fwnode_ops); 407 - } 408 - 409 - static inline bool is_acpi_device_node(const struct fwnode_handle *fwnode) 410 - { 411 - return !IS_ERR_OR_NULL(fwnode) && 412 - fwnode->ops == &acpi_device_fwnode_ops; 407 + return (is_acpi_device_node(fwnode) || is_acpi_data_node(fwnode)); 413 408 } 414 409 415 410 #define to_acpi_device_node(__fwnode) \ ··· 416 421 struct acpi_device, fwnode) : \ 417 422 NULL; \ 418 423 }) 419 - 420 - static inline bool is_acpi_data_node(const struct fwnode_handle *fwnode) 421 - { 422 - return !IS_ERR_OR_NULL(fwnode) && fwnode->ops == &acpi_data_fwnode_ops; 423 - } 424 424 425 425 #define to_acpi_data_node(__fwnode) \ 426 426 ({ \