mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-05-26 11:40:24 +02:00
Merge branches 'acpica', 'acpi-proc', 'acpi-processor' and 'acpi-pm'
Merge an ACPICA update, ACPI proc interface updates, ACPI processor driver updates, and ACPI power management updates for 6.17-rc1: - Printing the address in acpi_ex_trace_point() is either incorrect during early kernel boot or not really useful later when pathnames resolve properly, so stop doing it (Mario Limonciello) - Address several minor issues in the legacy ACPI proc interface (Andy Shevchenko) - Fix acpi_object union initialization in the ACPI processor driver to avoid using memory that contains leftover data (Sebastian Ott). - Make the ACPI processor perflib driver take the initial _PPC limit into account as appropriate (Jiayi Li). - Fix message formatting in the ACPI processor throttling driver (Colin Ian King). - Clean up general ACPI PM domain handling (Rafael Wysocki) * acpica: ACPICA: Decrease `AcpiExTracePoint` verbosity * acpi-proc: ACPI: proc: Prefer to use octal permission ACPI: proc: Use str_enabled_disabled() helper ACPI: proc: Remove unused header ACPI: proc: Use correct format specifier and drop casting ACPI: wakeup: Drop unneeded casting for sleep_state * acpi-processor: ACPI: processor: throttling: Remove space before newline ACPI: processor: perflib: Fix initial _PPC limit application ACPI: processor: fix acpi_object initialization * acpi-pm: ACPI: PM: Set .detach in acpi_general_pm_domain definition
This commit is contained in:
@@ -275,7 +275,7 @@ static inline int acpi_processor_hotadd_init(struct acpi_processor *pr,
|
||||
|
||||
static int acpi_processor_get_info(struct acpi_device *device)
|
||||
{
|
||||
union acpi_object object = { 0 };
|
||||
union acpi_object object = { .processor = { 0 } };
|
||||
struct acpi_buffer buffer = { sizeof(union acpi_object), &object };
|
||||
struct acpi_processor *pr = acpi_driver_data(device);
|
||||
int device_declaration = 0;
|
||||
|
||||
@@ -136,9 +136,9 @@ acpi_ex_trace_point(acpi_trace_event_type type,
|
||||
|
||||
if (pathname) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_TRACE_POINT,
|
||||
"%s %s [0x%p:%s] execution.\n",
|
||||
"%s %s [%s] execution.\n",
|
||||
acpi_ex_get_trace_event_name(type),
|
||||
begin ? "Begin" : "End", aml, pathname));
|
||||
begin ? "Begin" : "End", pathname));
|
||||
} else {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_TRACE_POINT,
|
||||
"%s %s [0x%p] execution.\n",
|
||||
|
||||
@@ -1362,6 +1362,8 @@ static int acpi_subsys_poweroff_noirq(struct device *dev)
|
||||
}
|
||||
#endif /* CONFIG_PM_SLEEP */
|
||||
|
||||
static void acpi_dev_pm_detach(struct device *dev, bool power_off);
|
||||
|
||||
static struct dev_pm_domain acpi_general_pm_domain = {
|
||||
.ops = {
|
||||
.runtime_suspend = acpi_subsys_runtime_suspend,
|
||||
@@ -1382,6 +1384,7 @@ static struct dev_pm_domain acpi_general_pm_domain = {
|
||||
.restore_early = acpi_subsys_restore_early,
|
||||
#endif
|
||||
},
|
||||
.detach = acpi_dev_pm_detach,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1465,7 +1468,6 @@ int acpi_dev_pm_attach(struct device *dev, bool power_on)
|
||||
acpi_device_wakeup_disable(adev);
|
||||
}
|
||||
|
||||
dev->pm_domain->detach = acpi_dev_pm_detach;
|
||||
return 1;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(acpi_dev_pm_attach);
|
||||
|
||||
+7
-10
@@ -1,7 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/string_choices.h>
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/bcd.h>
|
||||
#include <linux/acpi.h>
|
||||
@@ -30,17 +30,16 @@ acpi_system_wakeup_device_seq_show(struct seq_file *seq, void *offset)
|
||||
if (!dev->wakeup.flags.valid)
|
||||
continue;
|
||||
|
||||
seq_printf(seq, "%s\t S%d\t",
|
||||
seq_printf(seq, "%s\t S%llu\t",
|
||||
dev->pnp.bus_id,
|
||||
(u32) dev->wakeup.sleep_state);
|
||||
dev->wakeup.sleep_state);
|
||||
|
||||
mutex_lock(&dev->physical_node_lock);
|
||||
|
||||
if (!dev->physical_node_count) {
|
||||
seq_printf(seq, "%c%-8s\n",
|
||||
dev->wakeup.flags.valid ? '*' : ' ',
|
||||
device_may_wakeup(&dev->dev) ?
|
||||
"enabled" : "disabled");
|
||||
str_enabled_disabled(device_may_wakeup(&dev->dev)));
|
||||
} else {
|
||||
struct device *ldev;
|
||||
list_for_each_entry(entry, &dev->physical_node_list,
|
||||
@@ -55,9 +54,8 @@ acpi_system_wakeup_device_seq_show(struct seq_file *seq, void *offset)
|
||||
|
||||
seq_printf(seq, "%c%-8s %s:%s\n",
|
||||
dev->wakeup.flags.valid ? '*' : ' ',
|
||||
(device_may_wakeup(&dev->dev) ||
|
||||
device_may_wakeup(ldev)) ?
|
||||
"enabled" : "disabled",
|
||||
str_enabled_disabled(device_may_wakeup(ldev) ||
|
||||
device_may_wakeup(&dev->dev)),
|
||||
ldev->bus ? ldev->bus->name :
|
||||
"no-bus", dev_name(ldev));
|
||||
put_device(ldev);
|
||||
@@ -141,6 +139,5 @@ static const struct proc_ops acpi_system_wakeup_device_proc_ops = {
|
||||
void __init acpi_sleep_proc_init(void)
|
||||
{
|
||||
/* 'wakeup device' [R/W] */
|
||||
proc_create("wakeup", S_IFREG | S_IRUGO | S_IWUSR,
|
||||
acpi_root_dir, &acpi_system_wakeup_device_proc_ops);
|
||||
proc_create("wakeup", 0644, acpi_root_dir, &acpi_system_wakeup_device_proc_ops);
|
||||
}
|
||||
|
||||
@@ -173,11 +173,14 @@ void acpi_processor_ppc_init(struct cpufreq_policy *policy)
|
||||
{
|
||||
unsigned int cpu;
|
||||
|
||||
if (ignore_ppc == 1)
|
||||
return;
|
||||
|
||||
for_each_cpu(cpu, policy->related_cpus) {
|
||||
struct acpi_processor *pr = per_cpu(processors, cpu);
|
||||
int ret;
|
||||
|
||||
if (!pr)
|
||||
if (!pr || !pr->performance)
|
||||
continue;
|
||||
|
||||
/*
|
||||
@@ -193,6 +196,11 @@ void acpi_processor_ppc_init(struct cpufreq_policy *policy)
|
||||
if (ret < 0)
|
||||
pr_err("Failed to add freq constraint for CPU%d (%d)\n",
|
||||
cpu, ret);
|
||||
|
||||
ret = acpi_processor_get_platform_limit(pr);
|
||||
if (ret)
|
||||
pr_err("Failed to update freq constraint for CPU%d (%d)\n",
|
||||
cpu, ret);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -235,7 +235,7 @@ static int acpi_processor_throttling_notifier(unsigned long event, void *data)
|
||||
if (pr->throttling_platform_limit > target_state)
|
||||
target_state = pr->throttling_platform_limit;
|
||||
if (target_state >= p_throttling->state_count) {
|
||||
pr_warn("Exceed the limit of T-state \n");
|
||||
pr_warn("Exceed the limit of T-state\n");
|
||||
target_state = p_throttling->state_count - 1;
|
||||
}
|
||||
p_tstate->target_state = target_state;
|
||||
|
||||
@@ -42,7 +42,7 @@ void acpi_enable_wakeup_devices(u8 sleep_state)
|
||||
list_for_each_entry_safe(dev, tmp, &acpi_wakeup_device_list,
|
||||
wakeup_list) {
|
||||
if (!dev->wakeup.flags.valid
|
||||
|| sleep_state > (u32) dev->wakeup.sleep_state
|
||||
|| sleep_state > dev->wakeup.sleep_state
|
||||
|| !(device_may_wakeup(&dev->dev)
|
||||
|| dev->wakeup.prepare_count))
|
||||
continue;
|
||||
@@ -67,7 +67,7 @@ void acpi_disable_wakeup_devices(u8 sleep_state)
|
||||
list_for_each_entry_safe(dev, tmp, &acpi_wakeup_device_list,
|
||||
wakeup_list) {
|
||||
if (!dev->wakeup.flags.valid
|
||||
|| sleep_state > (u32) dev->wakeup.sleep_state
|
||||
|| sleep_state > dev->wakeup.sleep_state
|
||||
|| !(device_may_wakeup(&dev->dev)
|
||||
|| dev->wakeup.prepare_count))
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user