diff mbox

input: ambakmi: Fix system PM by converting to modern callbacks

Message ID 1429008108-29295-1-git-send-email-ulf.hansson@linaro.org (mailing list archive)
State New, archived
Headers show

Commit Message

Ulf Hansson April 14, 2015, 10:41 a.m. UTC
The legacy system PM support has long time ago been dropped from the
AMBA bus. Align to that by converting to the modern system PM
callbacks.

Fixes: 26825cfd90f9 (ARM: 7914/1: amba: Drop legacy PM support ...)
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
 drivers/input/serio/ambakmi.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

Comments

Dmitry Torokhov April 14, 2015, 4:22 p.m. UTC | #1
On Tue, Apr 14, 2015 at 12:41:48PM +0200, Ulf Hansson wrote:
> The legacy system PM support has long time ago been dropped from the
> AMBA bus. Align to that by converting to the modern system PM
> callbacks.
> 
> Fixes: 26825cfd90f9 (ARM: 7914/1: amba: Drop legacy PM support ...)
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

If this has not been noticed since end of 2013 maybe we should drop the
driver?

> ---
>  drivers/input/serio/ambakmi.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/input/serio/ambakmi.c b/drivers/input/serio/ambakmi.c
> index 8b748d9..058e1d8 100644
> --- a/drivers/input/serio/ambakmi.c
> +++ b/drivers/input/serio/ambakmi.c
> @@ -175,15 +175,19 @@ static int amba_kmi_remove(struct amba_device *dev)
>  	return 0;
>  }
>  
> -static int amba_kmi_resume(struct amba_device *dev)
> +#ifdef CONFIG_PM_SLEEP
> +static int amba_kmi_resume(struct device *dev)
>  {
> -	struct amba_kmi_port *kmi = amba_get_drvdata(dev);
> +	struct amba_kmi_port *kmi = dev_get_drvdata(dev);
>  
>  	/* kick the serio layer to rescan this port */
>  	serio_reconnect(kmi->io);
>  
>  	return 0;
>  }
> +#endif
> +
> +static SIMPLE_DEV_PM_OPS(amba_kmi_dev_pm_ops, NULL, amba_kmi_resume);
>  
>  static struct amba_id amba_kmi_idtable[] = {
>  	{
> @@ -199,11 +203,11 @@ static struct amba_driver ambakmi_driver = {
>  	.drv		= {
>  		.name	= "kmi-pl050",
>  		.owner	= THIS_MODULE,
> +		.pm	= &amba_kmi_dev_pm_ops,
>  	},
>  	.id_table	= amba_kmi_idtable,
>  	.probe		= amba_kmi_probe,
>  	.remove		= amba_kmi_remove,
> -	.resume		= amba_kmi_resume,
>  };
>  
>  module_amba_driver(ambakmi_driver);
> -- 
> 1.9.1
>
Russell King - ARM Linux April 14, 2015, 10:30 p.m. UTC | #2
On Tue, Apr 14, 2015 at 09:22:10AM -0700, Dmitry Torokhov wrote:
> On Tue, Apr 14, 2015 at 12:41:48PM +0200, Ulf Hansson wrote:
> > The legacy system PM support has long time ago been dropped from the
> > AMBA bus. Align to that by converting to the modern system PM
> > callbacks.
> > 
> > Fixes: 26825cfd90f9 (ARM: 7914/1: amba: Drop legacy PM support ...)
> > Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> 
> If this has not been noticed since end of 2013 maybe we should drop the
> driver?

That's rather silly.  It isn't a build breakage, and it's not a
functional breakage.  In fact, this driver gets build and boot tested
every evening on hardware I have here in my autobuild system.

The regression is only visible if it is used on a platform with power
management support, and that's probably close to none - unless hibernate
support is enabled.  I'm just pushing up some patches which fix long
term hibernation issues on ARM.

If we apply your "lets drop stuff" argument, maybe we should drop ARM
hibernation support because its been broken for many years... obviously
that's also a rediculous suggestion.
Dmitry Torokhov April 14, 2015, 11:58 p.m. UTC | #3
On Tue, Apr 14, 2015 at 11:30:29PM +0100, Russell King - ARM Linux wrote:
> On Tue, Apr 14, 2015 at 09:22:10AM -0700, Dmitry Torokhov wrote:
> > On Tue, Apr 14, 2015 at 12:41:48PM +0200, Ulf Hansson wrote:
> > > The legacy system PM support has long time ago been dropped from the
> > > AMBA bus. Align to that by converting to the modern system PM
> > > callbacks.
> > > 
> > > Fixes: 26825cfd90f9 (ARM: 7914/1: amba: Drop legacy PM support ...)
> > > Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> > 
> > If this has not been noticed since end of 2013 maybe we should drop the
> > driver?
> 
> That's rather silly.  It isn't a build breakage, and it's not a
> functional breakage.  In fact, this driver gets build and boot tested
> every evening on hardware I have here in my autobuild system.

OK.

> 
> The regression is only visible if it is used on a platform with power
> management support, and that's probably close to none - unless hibernate
> support is enabled.  I'm just pushing up some patches which fix long
> term hibernation issues on ARM.
> 
> If we apply your "lets drop stuff" argument, maybe we should drop ARM
> hibernation support because its been broken for many years... obviously
> that's also a rediculous suggestion.

Why is it a ridiculous suggestion? If it has been broken for  many
years I do not see why it has to be kept? Is there someone who is
actively working on making it functional?

Thanks.
Russell King - ARM Linux April 15, 2015, 9:32 a.m. UTC | #4
On Tue, Apr 14, 2015 at 04:58:22PM -0700, Dmitry Torokhov wrote:
> On Tue, Apr 14, 2015 at 11:30:29PM +0100, Russell King - ARM Linux wrote:
> > On Tue, Apr 14, 2015 at 09:22:10AM -0700, Dmitry Torokhov wrote:
> > > On Tue, Apr 14, 2015 at 12:41:48PM +0200, Ulf Hansson wrote:
> > > > The legacy system PM support has long time ago been dropped from the
> > > > AMBA bus. Align to that by converting to the modern system PM
> > > > callbacks.
> > > > 
> > > > Fixes: 26825cfd90f9 (ARM: 7914/1: amba: Drop legacy PM support ...)
> > > > Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> > > 
> > > If this has not been noticed since end of 2013 maybe we should drop the
> > > driver?
> > 
> > That's rather silly.  It isn't a build breakage, and it's not a
> > functional breakage.  In fact, this driver gets build and boot tested
> > every evening on hardware I have here in my autobuild system.
> 
> OK.
> 
> > 
> > The regression is only visible if it is used on a platform with power
> > management support, and that's probably close to none - unless hibernate
> > support is enabled.  I'm just pushing up some patches which fix long
> > term hibernation issues on ARM.
> > 
> > If we apply your "lets drop stuff" argument, maybe we should drop ARM
> > hibernation support because its been broken for many years... obviously
> > that's also a rediculous suggestion.
> 
> Why is it a ridiculous suggestion? If it has been broken for  many
> years I do not see why it has to be kept? Is there someone who is
> actively working on making it functional?

I *didn't* say it was broken everywhere - it's exactly the same situation
as ambakmi.  It doesn't work in a certain scenario, but that doesn't mean
it doesn't work at all, and it doesn't mean that there are no users of it.

The lesson I'm trying to teach you is that a patch or a report which says
something is broken does not _necessarily_ mean it's broken everywhere,
and jumping on the "oh we can remove it then" bandwagon immediately without
taking the time to understand the nature of the breakage is a totally
rediculous attitude for a kernel maintainer to take.  In fact, it's
positively harmful.

Had I not noticed your message, you would have probably ended up removing
a driver which is very much in use, is functional, and therefore is not
as broken as Ulf claims.

The other lesson to come away from this is that just because someone claims
something is broken does *not* make it broken.  It means _they_ are seeing
some problem which maybe no one else is seeing.  Again, that's no basis to
jump on the "lets remove the whole driver then" bandwagon.

And I doubt that Ulf even has the hardware to be able to test this change,
which makes it even worse.

So please, stop this idiotic "someone reports something broken, lets remove
the driver" attitude without first analysing whether the breakage actually
prevents anyone from using the driver.
Ulf Hansson April 15, 2015, 11:54 a.m. UTC | #5
[...]

>
> Had I not noticed your message, you would have probably ended up removing
> a driver which is very much in use, is functional, and therefore is not
> as broken as Ulf claims.

I claimed the system PM needed to be fixed, nothing else. :-)

>
> The other lesson to come away from this is that just because someone claims
> something is broken does *not* make it broken.  It means _they_ are seeing
> some problem which maybe no one else is seeing.  Again, that's no basis to
> jump on the "lets remove the whole driver then" bandwagon.
>
> And I doubt that Ulf even has the hardware to be able to test this change,
> which makes it even worse.

Correct, this patch is only compile time tested.

Actually I found it when I just realized that commit 26825cfd90f9
("ARM: 7914/1: amba: Drop legacy PM support and use the pm_generic
functions"), missed to remove the legacy system PM callbacks from the
struct amba_driver, as it should have.

I intended to send a patch for the above when I found these legacy
callbacks still being used. Somehow I missed this once when removing
the legacy system PM support in the amba bus. Sorry about that.

Kind regards
Uffe
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dmitry Torokhov April 15, 2015, 5:23 p.m. UTC | #6
On Wed, Apr 15, 2015 at 10:32:45AM +0100, Russell King - ARM Linux wrote:
> On Tue, Apr 14, 2015 at 04:58:22PM -0700, Dmitry Torokhov wrote:
> > On Tue, Apr 14, 2015 at 11:30:29PM +0100, Russell King - ARM Linux wrote:
> > > On Tue, Apr 14, 2015 at 09:22:10AM -0700, Dmitry Torokhov wrote:
> > > > On Tue, Apr 14, 2015 at 12:41:48PM +0200, Ulf Hansson wrote:
> > > > > The legacy system PM support has long time ago been dropped from the
> > > > > AMBA bus. Align to that by converting to the modern system PM
> > > > > callbacks.
> > > > > 
> > > > > Fixes: 26825cfd90f9 (ARM: 7914/1: amba: Drop legacy PM support ...)
> > > > > Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> > > > 
> > > > If this has not been noticed since end of 2013 maybe we should drop the
> > > > driver?
> > > 
> > > That's rather silly.  It isn't a build breakage, and it's not a
> > > functional breakage.  In fact, this driver gets build and boot tested
> > > every evening on hardware I have here in my autobuild system.
> > 
> > OK.
> > 
> > > 
> > > The regression is only visible if it is used on a platform with power
> > > management support, and that's probably close to none - unless hibernate
> > > support is enabled.  I'm just pushing up some patches which fix long
> > > term hibernation issues on ARM.
> > > 
> > > If we apply your "lets drop stuff" argument, maybe we should drop ARM
> > > hibernation support because its been broken for many years... obviously
> > > that's also a rediculous suggestion.
> > 
> > Why is it a ridiculous suggestion? If it has been broken for  many
> > years I do not see why it has to be kept? Is there someone who is
> > actively working on making it functional?
> 
> I *didn't* say it was broken everywhere - it's exactly the same situation
> as ambakmi.  It doesn't work in a certain scenario, but that doesn't mean
> it doesn't work at all, and it doesn't mean that there are no users of it.

I can only go by what you told me and if you re-read what you wrote
above you will see that you said that "ARM hibernation support ... been
broken for many years". You did not say that if was broken only in
certain cases.

> 
> The lesson I'm trying to teach you is that a patch or a report which says

I do not need to you to "teach me a lesson", thank you very much.
Please keep your condescension to yourself.

> something is broken does not _necessarily_ mean it's broken everywhere,
> and jumping on the "oh we can remove it then" bandwagon immediately without
> taking the time to understand the nature of the breakage is a totally
> rediculous attitude for a kernel maintainer to take.  In fact, it's
> positively harmful.
> 
> Had I not noticed your message, you would have probably ended up removing
> a driver which is very much in use, is functional, and therefore is not
> as broken as Ulf claims.
> 
> The other lesson to come away from this is that just because someone claims
> something is broken does *not* make it broken.  It means _they_ are seeing
> some problem which maybe no one else is seeing.  Again, that's no basis to
> jump on the "lets remove the whole driver then" bandwagon.

You were on the mail as well as arm list, so I was not concerned about
accidentally removing something that is in active use. Still, when I see
a patch to a driver that claims to fix a regression in basic
functionality (and I do consider PM basic functionality nowadays) that
was introduced about year and a half ago the question if this driver is
still relevant is warranted. I can't keep in mind everyone's pet
sub-arches and whether all drivers are used or not.

> 
> And I doubt that Ulf even has the hardware to be able to test this change,
> which makes it even worse.

But you will be able to, right?

> 
> So please, stop this idiotic "someone reports something broken, lets remove
> the driver" attitude without first analysing whether the breakage actually
> prevents anyone from using the driver.

Did you see the patch going in removing the driver? No? So take it easy,
the process worked as it should have been - the question was posted and
the answer was given.

Thanks.
Ulf Hansson May 22, 2015, 2:37 p.m. UTC | #7
On 14 April 2015 at 12:41, Ulf Hansson <ulf.hansson@linaro.org> wrote:
> The legacy system PM support has long time ago been dropped from the
> AMBA bus. Align to that by converting to the modern system PM
> callbacks.
>
> Fixes: 26825cfd90f9 (ARM: 7914/1: amba: Drop legacy PM support ...)
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

What happened with this one? Can we queue it for 4.2?

Kind regards
Uffe

> ---
>  drivers/input/serio/ambakmi.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/input/serio/ambakmi.c b/drivers/input/serio/ambakmi.c
> index 8b748d9..058e1d8 100644
> --- a/drivers/input/serio/ambakmi.c
> +++ b/drivers/input/serio/ambakmi.c
> @@ -175,15 +175,19 @@ static int amba_kmi_remove(struct amba_device *dev)
>         return 0;
>  }
>
> -static int amba_kmi_resume(struct amba_device *dev)
> +#ifdef CONFIG_PM_SLEEP
> +static int amba_kmi_resume(struct device *dev)
>  {
> -       struct amba_kmi_port *kmi = amba_get_drvdata(dev);
> +       struct amba_kmi_port *kmi = dev_get_drvdata(dev);
>
>         /* kick the serio layer to rescan this port */
>         serio_reconnect(kmi->io);
>
>         return 0;
>  }
> +#endif
> +
> +static SIMPLE_DEV_PM_OPS(amba_kmi_dev_pm_ops, NULL, amba_kmi_resume);
>
>  static struct amba_id amba_kmi_idtable[] = {
>         {
> @@ -199,11 +203,11 @@ static struct amba_driver ambakmi_driver = {
>         .drv            = {
>                 .name   = "kmi-pl050",
>                 .owner  = THIS_MODULE,
> +               .pm     = &amba_kmi_dev_pm_ops,
>         },
>         .id_table       = amba_kmi_idtable,
>         .probe          = amba_kmi_probe,
>         .remove         = amba_kmi_remove,
> -       .resume         = amba_kmi_resume,
>  };
>
>  module_amba_driver(ambakmi_driver);
> --
> 1.9.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Russell King - ARM Linux May 22, 2015, 2:39 p.m. UTC | #8
On Fri, May 22, 2015 at 04:37:12PM +0200, Ulf Hansson wrote:
> On 14 April 2015 at 12:41, Ulf Hansson <ulf.hansson@linaro.org> wrote:
> > The legacy system PM support has long time ago been dropped from the
> > AMBA bus. Align to that by converting to the modern system PM
> > callbacks.
> >
> > Fixes: 26825cfd90f9 (ARM: 7914/1: amba: Drop legacy PM support ...)
> > Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> 
> What happened with this one? Can we queue it for 4.2?

Why does it have a Fixes: tag?  Is it fixing a real bug, or is it just
fixing a warning that the kernel prints?
Dmitry Torokhov May 22, 2015, 4:49 p.m. UTC | #9
On Fri, May 22, 2015 at 04:37:12PM +0200, Ulf Hansson wrote:
> On 14 April 2015 at 12:41, Ulf Hansson <ulf.hansson@linaro.org> wrote:
> > The legacy system PM support has long time ago been dropped from the
> > AMBA bus. Align to that by converting to the modern system PM
> > callbacks.
> >
> > Fixes: 26825cfd90f9 (ARM: 7914/1: amba: Drop legacy PM support ...)
> > Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> 
> What happened with this one? Can we queue it for 4.2?

I was hoping that Russel could give it a spin since he has the
relevant hardware.

Thanks.
Ulf Hansson May 26, 2015, 1:50 p.m. UTC | #10
On 22 May 2015 at 16:39, Russell King - ARM Linux
<linux@arm.linux.org.uk> wrote:
> On Fri, May 22, 2015 at 04:37:12PM +0200, Ulf Hansson wrote:
>> On 14 April 2015 at 12:41, Ulf Hansson <ulf.hansson@linaro.org> wrote:
>> > The legacy system PM support has long time ago been dropped from the
>> > AMBA bus. Align to that by converting to the modern system PM
>> > callbacks.
>> >
>> > Fixes: 26825cfd90f9 (ARM: 7914/1: amba: Drop legacy PM support ...)
>> > Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
>>
>> What happened with this one? Can we queue it for 4.2?
>
> Why does it have a Fixes: tag?  Is it fixing a real bug, or is it just
> fixing a warning that the kernel prints?

I would expect it to fix a real bug, but I am not able to test this on HW.

Since the commit 26825cfd90f9, the amba bus doesn't invoke the legacy
system PM callbacks any more. Instead it uses pm_generic_resume() as
its ->resume() callback which means amba_kmi_resume() won't be invoked
during system PM resume.

Kind regards
Uffe
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ulf Hansson July 16, 2015, 8:48 a.m. UTC | #11
On 22 May 2015 at 18:49, Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote:
> On Fri, May 22, 2015 at 04:37:12PM +0200, Ulf Hansson wrote:
>> On 14 April 2015 at 12:41, Ulf Hansson <ulf.hansson@linaro.org> wrote:
>> > The legacy system PM support has long time ago been dropped from the
>> > AMBA bus. Align to that by converting to the modern system PM
>> > callbacks.
>> >
>> > Fixes: 26825cfd90f9 (ARM: 7914/1: amba: Drop legacy PM support ...)
>> > Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
>>
>> What happened with this one? Can we queue it for 4.2?
>
> I was hoping that Russel could give it a spin since he has the
> relevant hardware.
>

Hmm, as there are still no progress could we give it a try and queue
it to get some test in linux-next? I think the patch is trivial and it
would be nice to get it queued as a fix.

Kind regards
Uffe
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dmitry Torokhov July 16, 2015, 5:37 p.m. UTC | #12
On Thu, Jul 16, 2015 at 10:48:06AM +0200, Ulf Hansson wrote:
> On 22 May 2015 at 18:49, Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote:
> > On Fri, May 22, 2015 at 04:37:12PM +0200, Ulf Hansson wrote:
> >> On 14 April 2015 at 12:41, Ulf Hansson <ulf.hansson@linaro.org> wrote:
> >> > The legacy system PM support has long time ago been dropped from the
> >> > AMBA bus. Align to that by converting to the modern system PM
> >> > callbacks.
> >> >
> >> > Fixes: 26825cfd90f9 (ARM: 7914/1: amba: Drop legacy PM support ...)
> >> > Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> >>
> >> What happened with this one? Can we queue it for 4.2?
> >
> > I was hoping that Russel could give it a spin since he has the
> > relevant hardware.
> >
> 
> Hmm, as there are still no progress could we give it a try and queue
> it to get some test in linux-next? I think the patch is trivial and it
> would be nice to get it queued as a fix.

Yep. I removed #ifdef CONFIG_PM_SLEEP guard in favor of __maybe_unused
and applied.

Thanks.
diff mbox

Patch

diff --git a/drivers/input/serio/ambakmi.c b/drivers/input/serio/ambakmi.c
index 8b748d9..058e1d8 100644
--- a/drivers/input/serio/ambakmi.c
+++ b/drivers/input/serio/ambakmi.c
@@ -175,15 +175,19 @@  static int amba_kmi_remove(struct amba_device *dev)
 	return 0;
 }
 
-static int amba_kmi_resume(struct amba_device *dev)
+#ifdef CONFIG_PM_SLEEP
+static int amba_kmi_resume(struct device *dev)
 {
-	struct amba_kmi_port *kmi = amba_get_drvdata(dev);
+	struct amba_kmi_port *kmi = dev_get_drvdata(dev);
 
 	/* kick the serio layer to rescan this port */
 	serio_reconnect(kmi->io);
 
 	return 0;
 }
+#endif
+
+static SIMPLE_DEV_PM_OPS(amba_kmi_dev_pm_ops, NULL, amba_kmi_resume);
 
 static struct amba_id amba_kmi_idtable[] = {
 	{
@@ -199,11 +203,11 @@  static struct amba_driver ambakmi_driver = {
 	.drv		= {
 		.name	= "kmi-pl050",
 		.owner	= THIS_MODULE,
+		.pm	= &amba_kmi_dev_pm_ops,
 	},
 	.id_table	= amba_kmi_idtable,
 	.probe		= amba_kmi_probe,
 	.remove		= amba_kmi_remove,
-	.resume		= amba_kmi_resume,
 };
 
 module_amba_driver(ambakmi_driver);