From: Thomas Gleixner <tglx@linutronix.de>
To: Marek Maslanka <mmaslanka@google.com>,
LKML <linux-kernel@vger.kernel.org>
Cc: "Marek Maslanka" <mmaslanka@google.com>,
"Rajneesh Bhardwaj" <irenic.rajneesh@gmail.com>,
"David E Box" <david.e.box@intel.com>,
"Hans de Goede" <hdegoede@redhat.com>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"John Stultz" <jstultz@google.com>,
"Stephen Boyd" <sboyd@kernel.org>,
platform-driver-x86@vger.kernel.org
Subject: Re: [PATCH v3] platform/x86:intel/pmc: Enable the ACPI PM Timer to be turned off when suspended
Date: Tue, 30 Jul 2024 18:08:53 +0200 [thread overview]
Message-ID: <87cymu7tgq.ffs@tglx> (raw)
In-Reply-To: <20240730120546.1042515-1-mmaslanka@google.com>
Marek!
On Tue, Jul 30 2024 at 12:05, Marek Maslanka wrote:
> Allow to disable ACPI PM Timer on suspend and enable on resume. A
> disabled timer helps optimise power consumption when the system is
> suspended. On resume the timer is only reactivated if it was activated
> prior to suspend, so unless the ACPI PM timer is enabled in the BIOS,
> this won't change anything.
>
> include/linux/clocksource.h | 2 ++
> kernel/time/clocksource.c | 22 +++++++++++++
The changelog is completely silent about the core code change. That's
not how it works.
Add the core code change as a separate patch with a proper justification
and not hide it in the pile of the PMC changes without cc'ing the
relevant maintainers. It's documented how this works, no?
> +/*
> + * Enable or disable APCI PM Timer
> + *
> + * @return: Previous APCI PM Timer enabled state
> + */
> +static bool pmc_core_enable_apci_pm_timer(struct pmc_dev *pmcdev, bool enable)
> +{
> + struct pmc *pmc = pmcdev->pmcs[PMC_IDX_MAIN];
> + const struct pmc_reg_map *map = pmc->map;
> + char cs_name[32];
> + bool state;
> + u32 reg;
> +
> + if (!map->acpi_pm_tmr_ctl_offset)
> + return false;
> +
> + clocksource_current_cs_name(cs_name, sizeof(cs_name));
> + if (strncmp(cs_name, "acpi_pm", sizeof(cs_name)) == 0)
> + return false;
> +
> + clocksource_suspend_cs_name(cs_name, sizeof(cs_name));
> + if (strncmp(cs_name, "acpi_pm", sizeof(cs_name)) == 0)
> + return false;
How would ACPI/PM ever be selected as a suspend clocksource? It's not
marked CLOCK_SOURCE_SUSPEND_NONSTOP.
There is a reason why clocksources have suspend/resume and
enable/disable callbacks. The latter allow you to turn it completely off
when it is not in use.
Something like the below should work. It's uncompiled, but you get the
idea.
Thanks,
tglx
---
--- a/drivers/clocksource/acpi_pm.c
+++ b/drivers/clocksource/acpi_pm.c
@@ -63,12 +63,40 @@ static u64 acpi_pm_read(struct clocksour
return (u64)read_pmtmr();
}
+static bool acpi_pm_enabled;
+
+static void (*enable_callback)(bool enable);
+
+bool acpi_pm_register_enable_callback(void (*cb)(bool enable))
+{
+ enable_callback = cb;
+ if (cb)
+ cb(acpi_pm_enabled);
+}
+
+static int acpi_pm_enable(struct clocksource *cs)
+{
+ acpi_pm_enabled = true;
+ if (enable_callback)
+ enable_callback(true);
+ return 0;
+}
+
+static void acpi_pm_disable(struct clocksource *cs)
+{
+ acpi_pm_enabled = false;
+ if (enable_callback)
+ enable_callback(false);
+}
+
static struct clocksource clocksource_acpi_pm = {
.name = "acpi_pm",
.rating = 200,
.read = acpi_pm_read,
.mask = (u64)ACPI_PM_MASK,
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
+ .enable = acpi_pm_enable,
+ .disable = acpi_pm_disable,
};
next prev parent reply other threads:[~2024-07-30 16:08 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-01 22:25 [PATCH] platform/x86:intel/pmc: Enable the ACPI PM Timer to be turned off when suspended Marek Maslanka
2024-07-02 8:02 ` Hans de Goede
2024-07-02 22:41 ` Marek Maślanka
2024-07-03 11:38 ` [PATCH v2] " Marek Maslanka
2024-07-03 16:30 ` Rajneesh Bhardwaj
2024-07-11 15:34 ` David E. Box
2024-07-15 12:39 ` Marek Maślanka
2024-07-30 12:05 ` [PATCH v3] " Marek Maslanka
2024-07-30 12:57 ` Ilpo Järvinen
2024-07-30 16:08 ` Thomas Gleixner [this message]
2024-07-31 14:44 ` Marek Maślanka
2024-07-31 16:33 ` Thomas Gleixner
2024-07-31 21:41 ` Marek Maślanka
2024-07-31 21:46 ` Thomas Gleixner
2024-08-06 7:24 ` Ilpo Järvinen
2024-08-09 13:13 ` [PATCH v4 1/2] clocksource: acpi_pm: Add external callback for suspend/resume Marek Maslanka
2024-08-09 13:13 ` [PATCH v4 2/2] platform/x86:intel/pmc: Enable the ACPI PM Timer to be turned off when suspended Marek Maslanka
2024-08-09 16:36 ` Thomas Gleixner
2024-08-12 4:40 ` [PATCH v5 " Marek Maslanka
2024-08-12 7:49 ` Ilpo Järvinen
2024-08-12 18:42 ` [PATCH v6 " Marek Maslanka
2024-08-19 11:31 ` Hans de Goede
2024-09-06 18:56 ` [tip: timers/core] " tip-bot2 for Marek Maslanka
2024-08-09 19:15 ` [PATCH v4 1/2] clocksource: acpi_pm: Add external callback for suspend/resume Thomas Gleixner
2024-08-12 4:37 ` [PATCH v5 " Marek Maslanka
2024-08-12 8:03 ` Hans de Goede
2024-08-12 18:41 ` [PATCH v6 " Marek Maslanka
2024-08-19 11:31 ` Hans de Goede
2024-08-19 11:35 ` Hans de Goede
2024-08-19 18:31 ` Daniel Lezcano
2024-09-06 18:56 ` [tip: timers/core] " tip-bot2 for Marek Maslanka
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=87cymu7tgq.ffs@tglx \
--to=tglx@linutronix.de \
--cc=david.e.box@intel.com \
--cc=hdegoede@redhat.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=irenic.rajneesh@gmail.com \
--cc=jstultz@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mmaslanka@google.com \
--cc=platform-driver-x86@vger.kernel.org \
--cc=sboyd@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox