mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-05 16:37:50 +00:00
platform/x86/intel/pmc: core: Always capture counters on suspend
Currently counters are only captured during suspend when the warn_on_s0ix_failures module parameter is set. In order to relay this counter information to the kernel reporting infrastructure adjust it so that the counters are always captured. warn_on_s0ix_failures will be utilized solely for messaging by the driver instead. Reviewed-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: David E. Box <david.e.box@linux.intel.com> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
09f5df3fb8
commit
e2348afe70
2 changed files with 5 additions and 10 deletions
|
@ -1179,12 +1179,6 @@ static __maybe_unused int pmc_core_suspend(struct device *dev)
|
||||||
{
|
{
|
||||||
struct pmc_dev *pmcdev = dev_get_drvdata(dev);
|
struct pmc_dev *pmcdev = dev_get_drvdata(dev);
|
||||||
|
|
||||||
pmcdev->check_counters = false;
|
|
||||||
|
|
||||||
/* No warnings on S0ix failures */
|
|
||||||
if (!warn_on_s0ix_failures)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Check if the syspend will actually use S0ix */
|
/* Check if the syspend will actually use S0ix */
|
||||||
if (pm_suspend_via_firmware())
|
if (pm_suspend_via_firmware())
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1197,7 +1191,6 @@ static __maybe_unused int pmc_core_suspend(struct device *dev)
|
||||||
if (pmc_core_dev_state_get(pmcdev, &pmcdev->s0ix_counter))
|
if (pmc_core_dev_state_get(pmcdev, &pmcdev->s0ix_counter))
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
pmcdev->check_counters = true;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1233,12 +1226,16 @@ static __maybe_unused int pmc_core_resume(struct device *dev)
|
||||||
const struct pmc_bit_map **maps = pmcdev->map->lpm_sts;
|
const struct pmc_bit_map **maps = pmcdev->map->lpm_sts;
|
||||||
int offset = pmcdev->map->lpm_status_offset;
|
int offset = pmcdev->map->lpm_status_offset;
|
||||||
|
|
||||||
if (!pmcdev->check_counters)
|
/* Check if the syspend used S0ix */
|
||||||
|
if (pm_suspend_via_firmware())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!pmc_core_is_s0ix_failed(pmcdev))
|
if (!pmc_core_is_s0ix_failed(pmcdev))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (!warn_on_s0ix_failures)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (pmc_core_is_pc10_failed(pmcdev)) {
|
if (pmc_core_is_pc10_failed(pmcdev)) {
|
||||||
/* S0ix failed because of PC10 entry failure */
|
/* S0ix failed because of PC10 entry failure */
|
||||||
dev_info(dev, "CPU did not enter PC10!!! (PC10 cnt=0x%llx)\n",
|
dev_info(dev, "CPU did not enter PC10!!! (PC10 cnt=0x%llx)\n",
|
||||||
|
|
|
@ -319,7 +319,6 @@ struct pmc_reg_map {
|
||||||
* @pmc_xram_read_bit: flag to indicate whether PMC XRAM shadow registers
|
* @pmc_xram_read_bit: flag to indicate whether PMC XRAM shadow registers
|
||||||
* used to read MPHY PG and PLL status are available
|
* used to read MPHY PG and PLL status are available
|
||||||
* @mutex_lock: mutex to complete one transcation
|
* @mutex_lock: mutex to complete one transcation
|
||||||
* @check_counters: On resume, check if counters are getting incremented
|
|
||||||
* @pc10_counter: PC10 residency counter
|
* @pc10_counter: PC10 residency counter
|
||||||
* @s0ix_counter: S0ix residency (step adjusted)
|
* @s0ix_counter: S0ix residency (step adjusted)
|
||||||
* @num_lpm_modes: Count of enabled modes
|
* @num_lpm_modes: Count of enabled modes
|
||||||
|
@ -338,7 +337,6 @@ struct pmc_dev {
|
||||||
int pmc_xram_read_bit;
|
int pmc_xram_read_bit;
|
||||||
struct mutex lock; /* generic mutex lock for PMC Core */
|
struct mutex lock; /* generic mutex lock for PMC Core */
|
||||||
|
|
||||||
bool check_counters; /* Check for counter increments on resume */
|
|
||||||
u64 pc10_counter;
|
u64 pc10_counter;
|
||||||
u64 s0ix_counter;
|
u64 s0ix_counter;
|
||||||
int num_lpm_modes;
|
int num_lpm_modes;
|
||||||
|
|
Loading…
Reference in a new issue