linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3] platform/chrome: Expose resume result via debugfs
@ 2019-06-27 20:44 Evan Green
  2019-06-27 21:18 ` Enric Balletbo Serra
  0 siblings, 1 reply; 6+ messages in thread
From: Evan Green @ 2019-06-27 20:44 UTC (permalink / raw)
  To: Enric Balletbo i Serra, Lee Jones
  Cc: Ravi Chandra Sadineni, Rajat Jain, Evan Green, Guenter Roeck,
	linux-kernel, Benson Leung, Tim Wawrzynczak

For ECs that support it, the EC returns the number of slp_s0
transitions and whether or not there was a timeout in the resume
response. Expose the last resume result to usermode via debugfs so
that usermode can detect and report S0ix timeouts.

Signed-off-by: Evan Green <evgreen@chromium.org>
---

Changes in v3:
 - Expose the debugfs file on all EC types (Enric)

Changes in v2:
 - Moved from sysfs to debugfs (Enric)
 - Added documentation (Enric)


---
 Documentation/ABI/testing/debugfs-cros-ec | 22 ++++++++++++++++++++++
 drivers/mfd/cros_ec.c                     |  6 +++++-
 drivers/platform/chrome/cros_ec_debugfs.c |  5 +++++
 include/linux/mfd/cros_ec.h               |  1 +
 4 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/Documentation/ABI/testing/debugfs-cros-ec b/Documentation/ABI/testing/debugfs-cros-ec
index 573a82d23c89..1fe0add99a2a 100644
--- a/Documentation/ABI/testing/debugfs-cros-ec
+++ b/Documentation/ABI/testing/debugfs-cros-ec
@@ -32,3 +32,25 @@ Description:
 		is used for synchronizing the AP host time with the EC
 		log. An error is returned if the command is not supported
 		by the EC or there is a communication problem.
+
+What:		/sys/kernel/debug/<cros-ec-device>/last_resume_result
+Date:		June 2019
+KernelVersion:	5.3
+Description:
+		Some ECs have a feature where they will track transitions to
+		the (Intel) processor's SLP_S0 line, in order to detect cases
+		where a system failed to go into S0ix. When the system resumes,
+		an EC with this feature will return a summary of SLP_S0
+		transitions that occurred. The last_resume_result file returns
+		the most recent response from the AP's resume message to the EC.
+
+		The bottom 31 bits contain a count of the number of SLP_S0
+		transitions that occurred since the suspend message was
+		received. Bit 31 is set if the EC attempted to wake the
+		system due to a timeout when watching for SLP_S0 transitions.
+		Callers can use this to detect a wake from the EC due to
+		S0ix timeouts. The result will be zero if no suspend
+		transitions have been attempted, or the EC does not support
+		this feature.
+
+		Output will be in the format: "0x%08x\n".
diff --git a/drivers/mfd/cros_ec.c b/drivers/mfd/cros_ec.c
index 5d5c41ac3845..2a9ac5213893 100644
--- a/drivers/mfd/cros_ec.c
+++ b/drivers/mfd/cros_ec.c
@@ -102,12 +102,16 @@ static int cros_ec_sleep_event(struct cros_ec_device *ec_dev, u8 sleep_event)
 
 	/* For now, report failure to transition to S0ix with a warning. */
 	if (ret >= 0 && ec_dev->host_sleep_v1 &&
-	    (sleep_event == HOST_SLEEP_EVENT_S0IX_RESUME))
+	    (sleep_event == HOST_SLEEP_EVENT_S0IX_RESUME)) {
+		ec_dev->last_resume_result =
+			buf.u.resp1.resume_response.sleep_transitions;
+
 		WARN_ONCE(buf.u.resp1.resume_response.sleep_transitions &
 			  EC_HOST_RESUME_SLEEP_TIMEOUT,
 			  "EC detected sleep transition timeout. Total slp_s0 transitions: %d",
 			  buf.u.resp1.resume_response.sleep_transitions &
 			  EC_HOST_RESUME_SLEEP_TRANSITIONS_MASK);
+	}
 
 	return ret;
 }
diff --git a/drivers/platform/chrome/cros_ec_debugfs.c b/drivers/platform/chrome/cros_ec_debugfs.c
index 7ee060743844..967c78abfdd3 100644
--- a/drivers/platform/chrome/cros_ec_debugfs.c
+++ b/drivers/platform/chrome/cros_ec_debugfs.c
@@ -447,6 +447,11 @@ static int cros_ec_debugfs_probe(struct platform_device *pd)
 	debugfs_create_file("uptime", 0444, debug_info->dir, debug_info,
 			    &cros_ec_uptime_fops);
 
+	debugfs_create_x32("last_resume_result",
+			   0444,
+			   debug_info->dir,
+			   &ec->ec_dev->last_resume_result);
+
 	ec->debug_info = debug_info;
 
 	dev_set_drvdata(&pd->dev, ec);
diff --git a/include/linux/mfd/cros_ec.h b/include/linux/mfd/cros_ec.h
index 5ddca44be06d..45aba26db964 100644
--- a/include/linux/mfd/cros_ec.h
+++ b/include/linux/mfd/cros_ec.h
@@ -155,6 +155,7 @@ struct cros_ec_device {
 	struct ec_response_get_next_event_v1 event_data;
 	int event_size;
 	u32 host_event_wake_mask;
+	u32 last_resume_result;
 };
 
 /**
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] platform/chrome: Expose resume result via debugfs
  2019-06-27 20:44 [PATCH v3] platform/chrome: Expose resume result via debugfs Evan Green
@ 2019-06-27 21:18 ` Enric Balletbo Serra
  2019-07-01  6:01   ` Lee Jones
  0 siblings, 1 reply; 6+ messages in thread
From: Enric Balletbo Serra @ 2019-06-27 21:18 UTC (permalink / raw)
  To: Evan Green
  Cc: Enric Balletbo i Serra, Lee Jones, Ravi Chandra Sadineni,
	Rajat Jain, Guenter Roeck, linux-kernel, Benson Leung,
	Tim Wawrzynczak

Hi Evan, Lee,

Missatge de Evan Green <evgreen@chromium.org> del dia dj., 27 de juny
2019 a les 22:46:
>
> For ECs that support it, the EC returns the number of slp_s0
> transitions and whether or not there was a timeout in the resume
> response. Expose the last resume result to usermode via debugfs so
> that usermode can detect and report S0ix timeouts.
>
> Signed-off-by: Evan Green <evgreen@chromium.org>

Acked-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>

Lee, actually this patch depends on some patches from chrome-platform
to apply cleanly. Once is fine with you and if you're happy to have
this merged for 5.3, I can just carry the patch with me, shouldn't be
any conflicts with your current changes or if you prefer I can create
an immutable branch for you.

Thanks,
~ Enric

> ---
>
> Changes in v3:
>  - Expose the debugfs file on all EC types (Enric)
>
> Changes in v2:
>  - Moved from sysfs to debugfs (Enric)
>  - Added documentation (Enric)
>
>
> ---
>  Documentation/ABI/testing/debugfs-cros-ec | 22 ++++++++++++++++++++++
>  drivers/mfd/cros_ec.c                     |  6 +++++-
>  drivers/platform/chrome/cros_ec_debugfs.c |  5 +++++
>  include/linux/mfd/cros_ec.h               |  1 +
>  4 files changed, 33 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/ABI/testing/debugfs-cros-ec b/Documentation/ABI/testing/debugfs-cros-ec
> index 573a82d23c89..1fe0add99a2a 100644
> --- a/Documentation/ABI/testing/debugfs-cros-ec
> +++ b/Documentation/ABI/testing/debugfs-cros-ec
> @@ -32,3 +32,25 @@ Description:
>                 is used for synchronizing the AP host time with the EC
>                 log. An error is returned if the command is not supported
>                 by the EC or there is a communication problem.
> +
> +What:          /sys/kernel/debug/<cros-ec-device>/last_resume_result
> +Date:          June 2019
> +KernelVersion: 5.3
> +Description:
> +               Some ECs have a feature where they will track transitions to
> +               the (Intel) processor's SLP_S0 line, in order to detect cases
> +               where a system failed to go into S0ix. When the system resumes,
> +               an EC with this feature will return a summary of SLP_S0
> +               transitions that occurred. The last_resume_result file returns
> +               the most recent response from the AP's resume message to the EC.
> +
> +               The bottom 31 bits contain a count of the number of SLP_S0
> +               transitions that occurred since the suspend message was
> +               received. Bit 31 is set if the EC attempted to wake the
> +               system due to a timeout when watching for SLP_S0 transitions.
> +               Callers can use this to detect a wake from the EC due to
> +               S0ix timeouts. The result will be zero if no suspend
> +               transitions have been attempted, or the EC does not support
> +               this feature.
> +
> +               Output will be in the format: "0x%08x\n".
> diff --git a/drivers/mfd/cros_ec.c b/drivers/mfd/cros_ec.c
> index 5d5c41ac3845..2a9ac5213893 100644
> --- a/drivers/mfd/cros_ec.c
> +++ b/drivers/mfd/cros_ec.c
> @@ -102,12 +102,16 @@ static int cros_ec_sleep_event(struct cros_ec_device *ec_dev, u8 sleep_event)
>
>         /* For now, report failure to transition to S0ix with a warning. */
>         if (ret >= 0 && ec_dev->host_sleep_v1 &&
> -           (sleep_event == HOST_SLEEP_EVENT_S0IX_RESUME))
> +           (sleep_event == HOST_SLEEP_EVENT_S0IX_RESUME)) {
> +               ec_dev->last_resume_result =
> +                       buf.u.resp1.resume_response.sleep_transitions;
> +
>                 WARN_ONCE(buf.u.resp1.resume_response.sleep_transitions &
>                           EC_HOST_RESUME_SLEEP_TIMEOUT,
>                           "EC detected sleep transition timeout. Total slp_s0 transitions: %d",
>                           buf.u.resp1.resume_response.sleep_transitions &
>                           EC_HOST_RESUME_SLEEP_TRANSITIONS_MASK);
> +       }
>
>         return ret;
>  }
> diff --git a/drivers/platform/chrome/cros_ec_debugfs.c b/drivers/platform/chrome/cros_ec_debugfs.c
> index 7ee060743844..967c78abfdd3 100644
> --- a/drivers/platform/chrome/cros_ec_debugfs.c
> +++ b/drivers/platform/chrome/cros_ec_debugfs.c
> @@ -447,6 +447,11 @@ static int cros_ec_debugfs_probe(struct platform_device *pd)
>         debugfs_create_file("uptime", 0444, debug_info->dir, debug_info,
>                             &cros_ec_uptime_fops);
>
> +       debugfs_create_x32("last_resume_result",
> +                          0444,
> +                          debug_info->dir,
> +                          &ec->ec_dev->last_resume_result);
> +
>         ec->debug_info = debug_info;
>
>         dev_set_drvdata(&pd->dev, ec);
> diff --git a/include/linux/mfd/cros_ec.h b/include/linux/mfd/cros_ec.h
> index 5ddca44be06d..45aba26db964 100644
> --- a/include/linux/mfd/cros_ec.h
> +++ b/include/linux/mfd/cros_ec.h
> @@ -155,6 +155,7 @@ struct cros_ec_device {
>         struct ec_response_get_next_event_v1 event_data;
>         int event_size;
>         u32 host_event_wake_mask;
> +       u32 last_resume_result;
>  };
>
>  /**
> --
> 2.20.1
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] platform/chrome: Expose resume result via debugfs
  2019-06-27 21:18 ` Enric Balletbo Serra
@ 2019-07-01  6:01   ` Lee Jones
  2019-07-01 13:41     ` Enric Balletbo i Serra
  0 siblings, 1 reply; 6+ messages in thread
From: Lee Jones @ 2019-07-01  6:01 UTC (permalink / raw)
  To: Enric Balletbo Serra
  Cc: Evan Green, Enric Balletbo i Serra, Ravi Chandra Sadineni,
	Rajat Jain, Guenter Roeck, linux-kernel, Benson Leung,
	Tim Wawrzynczak

On Thu, 27 Jun 2019, Enric Balletbo Serra wrote:

> Hi Evan, Lee,
> 
> Missatge de Evan Green <evgreen@chromium.org> del dia dj., 27 de juny
> 2019 a les 22:46:
> >
> > For ECs that support it, the EC returns the number of slp_s0
> > transitions and whether or not there was a timeout in the resume
> > response. Expose the last resume result to usermode via debugfs so
> > that usermode can detect and report S0ix timeouts.
> >
> > Signed-off-by: Evan Green <evgreen@chromium.org>
> 
> Acked-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> 
> Lee, actually this patch depends on some patches from chrome-platform
> to apply cleanly. Once is fine with you and if you're happy to have
> this merged for 5.3, I can just carry the patch with me, shouldn't be
> any conflicts with your current changes or if you prefer I can create
> an immutable branch for you.

I won't be taking any more patches this cycle, so if you're sure that
it does not conflict, there is no need for an immutable branch.

Acked-by: Lee Jones <lee.jones@linaro.org>

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] platform/chrome: Expose resume result via debugfs
  2019-07-01  6:01   ` Lee Jones
@ 2019-07-01 13:41     ` Enric Balletbo i Serra
  2019-07-12 17:04       ` Evan Green
  0 siblings, 1 reply; 6+ messages in thread
From: Enric Balletbo i Serra @ 2019-07-01 13:41 UTC (permalink / raw)
  To: Lee Jones, Enric Balletbo Serra
  Cc: Evan Green, Ravi Chandra Sadineni, Rajat Jain, Guenter Roeck,
	linux-kernel, Benson Leung, Tim Wawrzynczak



On 1/7/19 8:01, Lee Jones wrote:
> On Thu, 27 Jun 2019, Enric Balletbo Serra wrote:
> 
>> Hi Evan, Lee,
>>
>> Missatge de Evan Green <evgreen@chromium.org> del dia dj., 27 de juny
>> 2019 a les 22:46:
>>>
>>> For ECs that support it, the EC returns the number of slp_s0
>>> transitions and whether or not there was a timeout in the resume
>>> response. Expose the last resume result to usermode via debugfs so
>>> that usermode can detect and report S0ix timeouts.
>>>
>>> Signed-off-by: Evan Green <evgreen@chromium.org>
>>
>> Acked-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
>>
>> Lee, actually this patch depends on some patches from chrome-platform
>> to apply cleanly. Once is fine with you and if you're happy to have
>> this merged for 5.3, I can just carry the patch with me, shouldn't be
>> any conflicts with your current changes or if you prefer I can create
>> an immutable branch for you.
> 
> I won't be taking any more patches this cycle, so if you're sure that
> it does not conflict, there is no need for an immutable branch.
> 
> Acked-by: Lee Jones <lee.jones@linaro.org>
> 

Thanks Lee.

I think the patch is simple enough, I queued for the autobuilders to play with,
and if all goes well I'll add for 5.3 via chrome-platform.

Thanks,
~ Enric

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] platform/chrome: Expose resume result via debugfs
  2019-07-01 13:41     ` Enric Balletbo i Serra
@ 2019-07-12 17:04       ` Evan Green
  2019-07-12 17:11         ` Evan Green
  0 siblings, 1 reply; 6+ messages in thread
From: Evan Green @ 2019-07-12 17:04 UTC (permalink / raw)
  To: Enric Balletbo i Serra
  Cc: Lee Jones, Enric Balletbo Serra, Ravi Chandra Sadineni,
	Rajat Jain, Guenter Roeck, linux-kernel, Benson Leung,
	Tim Wawrzynczak

On Mon, Jul 1, 2019 at 6:41 AM Enric Balletbo i Serra
<enric.balletbo@collabora.com> wrote:
>
>
>
> On 1/7/19 8:01, Lee Jones wrote:
> > On Thu, 27 Jun 2019, Enric Balletbo Serra wrote:
> >
> >> Hi Evan, Lee,
> >>
> >> Missatge de Evan Green <evgreen@chromium.org> del dia dj., 27 de juny
> >> 2019 a les 22:46:
> >>>
> >>> For ECs that support it, the EC returns the number of slp_s0
> >>> transitions and whether or not there was a timeout in the resume
> >>> response. Expose the last resume result to usermode via debugfs so
> >>> that usermode can detect and report S0ix timeouts.
> >>>
> >>> Signed-off-by: Evan Green <evgreen@chromium.org>
> >>
> >> Acked-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> >>
> >> Lee, actually this patch depends on some patches from chrome-platform
> >> to apply cleanly. Once is fine with you and if you're happy to have
> >> this merged for 5.3, I can just carry the patch with me, shouldn't be
> >> any conflicts with your current changes or if you prefer I can create
> >> an immutable branch for you.
> >
> > I won't be taking any more patches this cycle, so if you're sure that
> > it does not conflict, there is no need for an immutable branch.
> >
> > Acked-by: Lee Jones <lee.jones@linaro.org>
> >
>
> Thanks Lee.
>
> I think the patch is simple enough, I queued for the autobuilders to play with,
> and if all goes well I'll add for 5.3 via chrome-platform.
>

I was hoping to pick this patch from a maintainer's tree, has it
landed anywhere?
-Evan

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] platform/chrome: Expose resume result via debugfs
  2019-07-12 17:04       ` Evan Green
@ 2019-07-12 17:11         ` Evan Green
  0 siblings, 0 replies; 6+ messages in thread
From: Evan Green @ 2019-07-12 17:11 UTC (permalink / raw)
  To: Enric Balletbo i Serra
  Cc: Lee Jones, Enric Balletbo Serra, Ravi Chandra Sadineni,
	Rajat Jain, Guenter Roeck, linux-kernel, Benson Leung,
	Tim Wawrzynczak

On Fri, Jul 12, 2019 at 10:04 AM Evan Green <evgreen@chromium.org> wrote:
>
> On Mon, Jul 1, 2019 at 6:41 AM Enric Balletbo i Serra
> <enric.balletbo@collabora.com> wrote:
> >
> >
> >
> > On 1/7/19 8:01, Lee Jones wrote:
> > > On Thu, 27 Jun 2019, Enric Balletbo Serra wrote:
> > >
> > >> Hi Evan, Lee,
> > >>
> > >> Missatge de Evan Green <evgreen@chromium.org> del dia dj., 27 de juny
> > >> 2019 a les 22:46:
> > >>>
> > >>> For ECs that support it, the EC returns the number of slp_s0
> > >>> transitions and whether or not there was a timeout in the resume
> > >>> response. Expose the last resume result to usermode via debugfs so
> > >>> that usermode can detect and report S0ix timeouts.
> > >>>
> > >>> Signed-off-by: Evan Green <evgreen@chromium.org>
> > >>
> > >> Acked-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> > >>
> > >> Lee, actually this patch depends on some patches from chrome-platform
> > >> to apply cleanly. Once is fine with you and if you're happy to have
> > >> this merged for 5.3, I can just carry the patch with me, shouldn't be
> > >> any conflicts with your current changes or if you prefer I can create
> > >> an immutable branch for you.
> > >
> > > I won't be taking any more patches this cycle, so if you're sure that
> > > it does not conflict, there is no need for an immutable branch.
> > >
> > > Acked-by: Lee Jones <lee.jones@linaro.org>
> > >
> >
> > Thanks Lee.
> >
> > I think the patch is simple enough, I queued for the autobuilders to play with,
> > and if all goes well I'll add for 5.3 via chrome-platform.
> >
>
> I was hoping to pick this patch from a maintainer's tree, has it
> landed anywhere?
> -Evan

Nevermind, it's all the way in Linus' tree. Sorry for the spam, and
thanks Benson for the heads up!
-Evan

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-07-12 17:12 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-27 20:44 [PATCH v3] platform/chrome: Expose resume result via debugfs Evan Green
2019-06-27 21:18 ` Enric Balletbo Serra
2019-07-01  6:01   ` Lee Jones
2019-07-01 13:41     ` Enric Balletbo i Serra
2019-07-12 17:04       ` Evan Green
2019-07-12 17:11         ` Evan Green

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).