Message ID | 20230602073025.22884-2-mario.limonciello@amd.com |
---|---|
State | Superseded |
Headers | show |
Series | [v4,1/4] include/linux/suspend.h: Only show pm_pr_dbg messages at suspend/resume | expand |
On Fri, Jun 2, 2023 at 9:32 PM Mario Limonciello <mario.limonciello@amd.com> wrote: > > Enabling debugging messages for the state requires turning on dynamic > debugging for the file. To make it more accessible, use > `pm_debug_messages` and clearer strings for what is happening. > > Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> I'm inclined to apply this one and the [1/4] at this point. I can also apply the 2 remaining patches in this series if I get ACKs for them from the respective subsystem maintainers. > --- > drivers/acpi/x86/s2idle.c | 52 ++++++++++++++++++++++++++++++++++----- > 1 file changed, 46 insertions(+), 6 deletions(-) > > diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c > index e499c60c4579..7681f6ecab67 100644 > --- a/drivers/acpi/x86/s2idle.c > +++ b/drivers/acpi/x86/s2idle.c > @@ -59,6 +59,7 @@ static int lps0_dsm_func_mask; > > static guid_t lps0_dsm_guid_microsoft; > static int lps0_dsm_func_mask_microsoft; > +static int lps0_dsm_state; > > /* Device constraint entry structure */ > struct lpi_device_info { > @@ -320,6 +321,44 @@ static void lpi_check_constraints(void) > } > } > > +static bool acpi_s2idle_vendor_amd(void) > +{ > + return boot_cpu_data.x86_vendor == X86_VENDOR_AMD; > +} > + > +static const char *acpi_sleep_dsm_state_to_str(unsigned int state) > +{ > + if (lps0_dsm_func_mask_microsoft || !acpi_s2idle_vendor_amd()) { > + switch (state) { > + case ACPI_LPS0_SCREEN_OFF: > + return "screen off"; > + case ACPI_LPS0_SCREEN_ON: > + return "screen on"; > + case ACPI_LPS0_ENTRY: > + return "lps0 entry"; > + case ACPI_LPS0_EXIT: > + return "lps0 exit"; > + case ACPI_LPS0_MS_ENTRY: > + return "lps0 ms entry"; > + case ACPI_LPS0_MS_EXIT: > + return "lps0 ms exit"; > + } > + } else { > + switch (state) { > + case ACPI_LPS0_SCREEN_ON_AMD: > + return "screen on"; > + case ACPI_LPS0_SCREEN_OFF_AMD: > + return "screen off"; > + case ACPI_LPS0_ENTRY_AMD: > + return "lps0 entry"; > + case ACPI_LPS0_EXIT_AMD: > + return "lps0 exit"; > + } > + } > + > + return "unknown"; > +} > + > static void acpi_sleep_run_lps0_dsm(unsigned int func, unsigned int func_mask, guid_t dsm_guid) > { > union acpi_object *out_obj; > @@ -331,14 +370,15 @@ static void acpi_sleep_run_lps0_dsm(unsigned int func, unsigned int func_mask, g > rev_id, func, NULL); > ACPI_FREE(out_obj); > > - acpi_handle_debug(lps0_device_handle, "_DSM function %u evaluation %s\n", > - func, out_obj ? "successful" : "failed"); > + lps0_dsm_state = func; > + if (pm_debug_messages_on) { > + acpi_handle_info(lps0_device_handle, > + "%s transitioned to state %s\n", > + out_obj ? "Successfully" : "Failed to", > + acpi_sleep_dsm_state_to_str(lps0_dsm_state)); > + } > } > > -static bool acpi_s2idle_vendor_amd(void) > -{ > - return boot_cpu_data.x86_vendor == X86_VENDOR_AMD; > -} > > static int validate_dsm(acpi_handle handle, const char *uuid, int rev, guid_t *dsm_guid) > { > -- > 2.34.1 >
diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c index e499c60c4579..7681f6ecab67 100644 --- a/drivers/acpi/x86/s2idle.c +++ b/drivers/acpi/x86/s2idle.c @@ -59,6 +59,7 @@ static int lps0_dsm_func_mask; static guid_t lps0_dsm_guid_microsoft; static int lps0_dsm_func_mask_microsoft; +static int lps0_dsm_state; /* Device constraint entry structure */ struct lpi_device_info { @@ -320,6 +321,44 @@ static void lpi_check_constraints(void) } } +static bool acpi_s2idle_vendor_amd(void) +{ + return boot_cpu_data.x86_vendor == X86_VENDOR_AMD; +} + +static const char *acpi_sleep_dsm_state_to_str(unsigned int state) +{ + if (lps0_dsm_func_mask_microsoft || !acpi_s2idle_vendor_amd()) { + switch (state) { + case ACPI_LPS0_SCREEN_OFF: + return "screen off"; + case ACPI_LPS0_SCREEN_ON: + return "screen on"; + case ACPI_LPS0_ENTRY: + return "lps0 entry"; + case ACPI_LPS0_EXIT: + return "lps0 exit"; + case ACPI_LPS0_MS_ENTRY: + return "lps0 ms entry"; + case ACPI_LPS0_MS_EXIT: + return "lps0 ms exit"; + } + } else { + switch (state) { + case ACPI_LPS0_SCREEN_ON_AMD: + return "screen on"; + case ACPI_LPS0_SCREEN_OFF_AMD: + return "screen off"; + case ACPI_LPS0_ENTRY_AMD: + return "lps0 entry"; + case ACPI_LPS0_EXIT_AMD: + return "lps0 exit"; + } + } + + return "unknown"; +} + static void acpi_sleep_run_lps0_dsm(unsigned int func, unsigned int func_mask, guid_t dsm_guid) { union acpi_object *out_obj; @@ -331,14 +370,15 @@ static void acpi_sleep_run_lps0_dsm(unsigned int func, unsigned int func_mask, g rev_id, func, NULL); ACPI_FREE(out_obj); - acpi_handle_debug(lps0_device_handle, "_DSM function %u evaluation %s\n", - func, out_obj ? "successful" : "failed"); + lps0_dsm_state = func; + if (pm_debug_messages_on) { + acpi_handle_info(lps0_device_handle, + "%s transitioned to state %s\n", + out_obj ? "Successfully" : "Failed to", + acpi_sleep_dsm_state_to_str(lps0_dsm_state)); + } } -static bool acpi_s2idle_vendor_amd(void) -{ - return boot_cpu_data.x86_vendor == X86_VENDOR_AMD; -} static int validate_dsm(acpi_handle handle, const char *uuid, int rev, guid_t *dsm_guid) {
Enabling debugging messages for the state requires turning on dynamic debugging for the file. To make it more accessible, use `pm_debug_messages` and clearer strings for what is happening. Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> --- drivers/acpi/x86/s2idle.c | 52 ++++++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 6 deletions(-)