From: Mario Limonciello <mario.limonciello@amd.com>
To: Hans de Goede <hdegoede@redhat.com>,
Mark Gross <mgross@linux.intel.com>,
"Rafael J . Wysocki" <rjw@rjwysocki.net>
Cc: "open list:X86 PLATFORM DRIVERS"
<platform-driver-x86@vger.kernel.org>,
<linux-acpi@vger.kernel.org>,
Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
Goswami Sanket <Sanket.Goswami@amd.com>,
Mario Limonciello <mario.limonciello@amd.com>
Subject: [PATCH v3 2/5] ACPI / x86: Pass the constraints checking result to LPS0 callback
Date: Mon, 14 Mar 2022 00:03:36 -0500 [thread overview]
Message-ID: <20220314050340.1176-2-mario.limonciello@amd.com> (raw)
In-Reply-To: <20220314050340.1176-1-mario.limonciello@amd.com>
If constraints checking has been enabled by the LPS0 code, it may
also be useful for drivers using the callback to make a decision what
to do.
For example this may in the future allow a failing constraints check
preventing another driver from notifying firmware that all required
devices have entered the deepest state.
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
Changes from v2->v3:
* rebase on top of changes in first patch
Changes from v1->v2:
* rebase on top of changes in first patch
drivers/acpi/x86/s2idle.c | 11 +++++++----
include/linux/acpi.h | 2 +-
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c
index 69008c4a86ea..646faa117c70 100644
--- a/drivers/acpi/x86/s2idle.c
+++ b/drivers/acpi/x86/s2idle.c
@@ -290,7 +290,7 @@ static void lpi_device_get_constraints(void)
ACPI_FREE(out_obj);
}
-static void lpi_check_constraints(void)
+static void lpi_check_constraints(bool *met)
{
int i;
@@ -312,11 +312,13 @@ static void lpi_check_constraints(void)
continue;
}
- if (adev->power.state < lpi_constraints_table[i].min_dstate)
+ if (adev->power.state < lpi_constraints_table[i].min_dstate) {
acpi_handle_info(handle,
"LPI: Constraint not met; min power state:%s current power state:%s\n",
acpi_power_state_string(lpi_constraints_table[i].min_dstate),
acpi_power_state_string(adev->power.state));
+ *met = false;
+ }
}
}
@@ -448,13 +450,14 @@ static struct acpi_scan_handler lps0_handler = {
int acpi_s2idle_prepare_late(void)
{
struct lps0_callback_handler *handler;
+ bool constraints_met = true;
int rc = 0;
if (!lps0_device_handle || sleep_no_lps0)
return 0;
if (pm_debug_messages_on)
- lpi_check_constraints();
+ lpi_check_constraints(&constraints_met);
/* Screen off */
if (lps0_dsm_func_mask > 0)
@@ -484,7 +487,7 @@ int acpi_s2idle_prepare_late(void)
mutex_lock(&lps0_callback_handler_mutex);
list_for_each_entry(handler, &lps0_callback_handler_head, list_node) {
if (handler->prepare_late_callback) {
- rc = handler->prepare_late_callback(handler->context);
+ rc = handler->prepare_late_callback(handler->context, constraints_met);
if (rc)
goto out;
}
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index df105f5e03e5..4906db854554 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -1026,7 +1026,7 @@ acpi_status acpi_os_prepare_extended_sleep(u8 sleep_state,
#ifdef CONFIG_X86
struct lps0_callback_handler {
struct list_head list_node;
- int (*prepare_late_callback)(void *context);
+ int (*prepare_late_callback)(void *context, bool constraints);
void (*restore_early_callback)(void *context);
void *context;
};
--
2.34.1
next prev parent reply other threads:[~2022-03-14 5:04 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-14 5:03 [PATCH v3 1/5] ACPI / x86: Add support for LPS0 callback handler Mario Limonciello
2022-03-14 5:03 ` Mario Limonciello [this message]
2022-03-14 5:03 ` [PATCH v3 3/5] ACPI / x86: Check LPI constraints by default Mario Limonciello
2022-03-14 5:03 ` [PATCH v3 4/5] platform/x86: amd-pmc: Move to later in the suspend process Mario Limonciello
2022-03-14 5:03 ` [PATCH v3 5/5] platform/x86: amd-pmc: Drop CPU QoS workaround Mario Limonciello
2022-03-14 9:05 ` [PATCH v3 1/5] ACPI / x86: Add support for LPS0 callback handler Hans de Goede
2022-03-14 13:32 ` Limonciello, Mario
2022-03-14 13:37 ` Hans de Goede
2022-03-16 15:02 ` Rafael J. Wysocki
2022-03-16 15:34 ` Rafael J. Wysocki
2022-03-16 15:43 ` Limonciello, Mario
2022-03-16 15:52 ` Rafael J. Wysocki
2022-03-16 16:43 ` Limonciello, Mario
2022-03-16 17:27 ` Rafael J. Wysocki
2022-03-15 1:01 ` David E. Box
2022-03-14 9:12 ` Lukas Wunner
2022-03-14 13:28 ` Limonciello, Mario
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220314050340.1176-2-mario.limonciello@amd.com \
--to=mario.limonciello@amd.com \
--cc=Sanket.Goswami@amd.com \
--cc=Shyam-sundar.S-k@amd.com \
--cc=hdegoede@redhat.com \
--cc=linux-acpi@vger.kernel.org \
--cc=mgross@linux.intel.com \
--cc=platform-driver-x86@vger.kernel.org \
--cc=rjw@rjwysocki.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.