Skip to content

Commit

Permalink
Merge tag 'acpi-4.18-rc4' of git://git.kernel.org/pub/scm/linux/kerne…
Browse files Browse the repository at this point in the history
…l/git/rafael/linux-pm

Pull ACPI fixes from Rafael Wysocki:
 "These fix a recent ACPICA regression, fix a battery driver regression
  introduced during the 4.17 cycle and fix up the recently added support
  for the PPTT ACPI table.

  Specifics:

   - Revert part of a recent ACPICA regression fix that added leading
     newlines to ACPICA error messages and made the kernel log look
     broken (Rafael Wysocki).

   - Fix an ACPI battery driver regression introduced during the 4.17
     cycle due to incorrect error handling that made Thinkpad 13 laptops
     crash on boot (Jouke Witteveen).

   - Fix up the recently added PPTT ACPI table support by covering the
     case when a PPTT structure represents a processors group correctly
     (Sudeep Holla)"

* tag 'acpi-4.18-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  ACPI / battery: Safe unregistering of hooks
  ACPI / PPTT: use ACPI ID whenever ACPI_PPTT_ACPI_PROCESSOR_ID_VALID is set
  ACPICA: Drop leading newlines from error messages
  • Loading branch information
Linus Torvalds committed Jul 5, 2018
2 parents 90dc8b6 + df95856 commit 06c8563
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 9 deletions.
6 changes: 3 additions & 3 deletions drivers/acpi/acpica/uterror.c
Original file line number Diff line number Diff line change
Expand Up @@ -182,19 +182,19 @@ acpi_ut_prefixed_namespace_error(const char *module_name,
switch (lookup_status) {
case AE_ALREADY_EXISTS:

acpi_os_printf("\n" ACPI_MSG_BIOS_ERROR);
acpi_os_printf(ACPI_MSG_BIOS_ERROR);
message = "Failure creating";
break;

case AE_NOT_FOUND:

acpi_os_printf("\n" ACPI_MSG_BIOS_ERROR);
acpi_os_printf(ACPI_MSG_BIOS_ERROR);
message = "Could not resolve";
break;

default:

acpi_os_printf("\n" ACPI_MSG_ERROR);
acpi_os_printf(ACPI_MSG_ERROR);
message = "Failure resolving";
break;
}
Expand Down
9 changes: 5 additions & 4 deletions drivers/acpi/battery.c
Original file line number Diff line number Diff line change
Expand Up @@ -717,10 +717,11 @@ void battery_hook_register(struct acpi_battery_hook *hook)
*/
pr_err("extension failed to load: %s", hook->name);
__battery_hook_unregister(hook, 0);
return;
goto end;
}
}
pr_info("new extension: %s\n", hook->name);
end:
mutex_unlock(&hook_mutex);
}
EXPORT_SYMBOL_GPL(battery_hook_register);
Expand All @@ -732,7 +733,7 @@ EXPORT_SYMBOL_GPL(battery_hook_register);
*/
static void battery_hook_add_battery(struct acpi_battery *battery)
{
struct acpi_battery_hook *hook_node;
struct acpi_battery_hook *hook_node, *tmp;

mutex_lock(&hook_mutex);
INIT_LIST_HEAD(&battery->list);
Expand All @@ -744,15 +745,15 @@ static void battery_hook_add_battery(struct acpi_battery *battery)
* when a battery gets hotplugged or initialized
* during the battery module initialization.
*/
list_for_each_entry(hook_node, &battery_hook_list, list) {
list_for_each_entry_safe(hook_node, tmp, &battery_hook_list, list) {
if (hook_node->add_battery(battery->bat)) {
/*
* The notification of the extensions has failed, to
* prevent further errors we will unload the extension.
*/
__battery_hook_unregister(hook_node, 0);
pr_err("error in extension, unloading: %s",
hook_node->name);
__battery_hook_unregister(hook_node, 0);
}
}
mutex_unlock(&hook_mutex);
Expand Down
10 changes: 8 additions & 2 deletions drivers/acpi/pptt.c
Original file line number Diff line number Diff line change
Expand Up @@ -481,8 +481,14 @@ static int topology_get_acpi_cpu_tag(struct acpi_table_header *table,
if (cpu_node) {
cpu_node = acpi_find_processor_package_id(table, cpu_node,
level, flag);
/* Only the first level has a guaranteed id */
if (level == 0)
/*
* As per specification if the processor structure represents
* an actual processor, then ACPI processor ID must be valid.
* For processor containers ACPI_PPTT_ACPI_PROCESSOR_ID_VALID
* should be set if the UID is valid
*/
if (level == 0 ||
cpu_node->flags & ACPI_PPTT_ACPI_PROCESSOR_ID_VALID)
return cpu_node->acpi_processor_id;
return ACPI_PTR_DIFF(cpu_node, table);
}
Expand Down

0 comments on commit 06c8563

Please sign in to comment.