Commit e2348afe authored by Mario Limonciello's avatar Mario Limonciello Committed by Rafael J. Wysocki
Browse files

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: default avatarHans de Goede <hdegoede@redhat.com>
Reviewed-by: default avatarDavid E. Box <david.e.box@linux.intel.com>
Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 09f5df3f
Loading
Loading
Loading
Loading
+5 −8
Original line number Diff line number Diff line
@@ -1179,12 +1179,6 @@ static __maybe_unused int pmc_core_suspend(struct device *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 */
	if (pm_suspend_via_firmware())
		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))
		return -EIO;

	pmcdev->check_counters = true;
	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;
	int offset = pmcdev->map->lpm_status_offset;

	if (!pmcdev->check_counters)
	/* Check if the syspend used S0ix */
	if (pm_suspend_via_firmware())
		return 0;

	if (!pmc_core_is_s0ix_failed(pmcdev))
		return 0;

	if (!warn_on_s0ix_failures)
		return 0;

	if (pmc_core_is_pc10_failed(pmcdev)) {
		/* S0ix failed because of PC10 entry failure */
		dev_info(dev, "CPU did not enter PC10!!! (PC10 cnt=0x%llx)\n",
+0 −2
Original line number Diff line number Diff line
@@ -319,7 +319,6 @@ struct pmc_reg_map {
 * @pmc_xram_read_bit:	flag to indicate whether PMC XRAM shadow registers
 *			used to read MPHY PG and PLL status are available
 * @mutex_lock:		mutex to complete one transcation
 * @check_counters:	On resume, check if counters are getting incremented
 * @pc10_counter:	PC10 residency counter
 * @s0ix_counter:	S0ix residency (step adjusted)
 * @num_lpm_modes:	Count of enabled modes
@@ -338,7 +337,6 @@ struct pmc_dev {
	int pmc_xram_read_bit;
	struct mutex lock; /* generic mutex lock for PMC Core */

	bool check_counters; /* Check for counter increments on resume */
	u64 pc10_counter;
	u64 s0ix_counter;
	int num_lpm_modes;