Message ID | 20230403211831.4010-5-mario.limonciello@amd.com |
---|---|
State | New |
Headers | show |
Series | Add vendor agnostic mechanism to report hardware sleep | expand |
On Mon, 2023-04-03 at 16:18 -0500, Mario Limonciello wrote: > intel_pmc_core displays a warning when the module parameter > `warn_on_s0ix_failures` is set and a suspend didn't get to a HW sleep > state. > > Report this to the standard kernel reporting infrastructure so that > userspace software can query after the suspend cycle is done. > > Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> > --- > v5->v6: > * Handle overflow case > * Use renamed symbol > v4->v5: > * Reword commit message > --- > drivers/platform/x86/intel/pmc/core.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/platform/x86/intel/pmc/core.c > b/drivers/platform/x86/intel/pmc/core.c > index 925c5d676a43..0621756792c8 100644 > --- a/drivers/platform/x86/intel/pmc/core.c > +++ b/drivers/platform/x86/intel/pmc/core.c > @@ -1214,6 +1214,11 @@ static inline bool pmc_core_is_s0ix_failed(struct > pmc_dev *pmcdev) > if (pmc_core_dev_state_get(pmcdev, &s0ix_counter)) > return false; > > + if (s0ix_counter >= pmcdev->s0ix_counter) > + pm_report_hw_sleep_time(s0ix_counter - pmcdev->s0ix_counter); This would drop valid measurements when it's just the case that the counter has overflowed but hasn't yet wrapped around to the previous value. > + else > + pm_report_hw_sleep_time(U64_MAX); How about no if/else, just: return (u32)(s0ix_counter - pmcdev->s0ix_counter); David > + > if (s0ix_counter == pmcdev->s0ix_counter) > return true; >
diff --git a/drivers/platform/x86/intel/pmc/core.c b/drivers/platform/x86/intel/pmc/core.c index 925c5d676a43..0621756792c8 100644 --- a/drivers/platform/x86/intel/pmc/core.c +++ b/drivers/platform/x86/intel/pmc/core.c @@ -1214,6 +1214,11 @@ static inline bool pmc_core_is_s0ix_failed(struct pmc_dev *pmcdev) if (pmc_core_dev_state_get(pmcdev, &s0ix_counter)) return false; + if (s0ix_counter >= pmcdev->s0ix_counter) + pm_report_hw_sleep_time(s0ix_counter - pmcdev->s0ix_counter); + else + pm_report_hw_sleep_time(U64_MAX); + if (s0ix_counter == pmcdev->s0ix_counter) return true;
intel_pmc_core displays a warning when the module parameter `warn_on_s0ix_failures` is set and a suspend didn't get to a HW sleep state. Report this to the standard kernel reporting infrastructure so that userspace software can query after the suspend cycle is done. Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> --- v5->v6: * Handle overflow case * Use renamed symbol v4->v5: * Reword commit message --- drivers/platform/x86/intel/pmc/core.c | 5 +++++ 1 file changed, 5 insertions(+)