All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] PM / sleep: define inline functions
@ 2015-12-16 11:41 Sudip Mukherjee
  2015-12-17  0:41   ` Eric Anholt
  0 siblings, 1 reply; 6+ messages in thread
From: Sudip Mukherjee @ 2015-12-16 11:41 UTC (permalink / raw)
  To: Rafael J. Wysocki, Pavel Machek, Len Brown
  Cc: linux-kernel, linux-pm, Sudip Mukherjee, Eric Anholt

If CONFIG_PM_SLEEP is not defined then the functions are defined as
NULL. And as a result we are getting build failure with
alpha allmodconfig with the error:

drivers/gpu/drm/vc4/vc4_v3d.c: In function 'vc4_v3d_set_power':
include/linux/stddef.h:7:14: error: called object is not a function or function pointer
 #define NULL ((void *)0)
              ^
include/linux/pm.h:776:30: note: in expansion of macro 'NULL'
 #define pm_generic_poweroff  NULL
                              ^
drivers/gpu/drm/vc4/vc4_v3d.c:157:10: note: in expansion of macro 'pm_generic_poweroff'
   return pm_generic_poweroff(&vc4->v3d->pdev->dev);
          ^
include/linux/stddef.h:7:14: error: called object is not a function or function pointer
 #define NULL ((void *)0)
              ^
include/linux/pm.h:764:28: note: in expansion of macro 'NULL'
 #define pm_generic_resume  NULL
                            ^
drivers/gpu/drm/vc4/vc4_v3d.c:159:10: note: in expansion of macro 'pm_generic_resume'
   return pm_generic_resume(&vc4->v3d->pdev->dev);
          ^

Fixes: d5b1a78a772f ("drm/vc4: Add support for drawing 3D frames.")
Cc: Eric Anholt <eric@anholt.net>
Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
---

build log is at:
https://travis-ci.org/sudipm-mukherjee/parport/jobs/97149763

Also tested with x86_64 allmodconfig.

 include/linux/pm.h | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/include/linux/pm.h b/include/linux/pm.h
index 528be67..5fe5dbb 100644
--- a/include/linux/pm.h
+++ b/include/linux/pm.h
@@ -755,13 +755,22 @@ static inline void dpm_for_each_dev(void *data, void (*fn)(struct device *, void
 {
 }
 
+static inline int pm_generic_resume(struct device *dev)
+{
+	return 0;
+}
+
+static inline int pm_generic_poweroff(struct device *dev)
+{
+	return 0;
+}
+
 #define pm_generic_prepare		NULL
 #define pm_generic_suspend_late		NULL
 #define pm_generic_suspend_noirq	NULL
 #define pm_generic_suspend		NULL
 #define pm_generic_resume_early		NULL
 #define pm_generic_resume_noirq		NULL
-#define pm_generic_resume		NULL
 #define pm_generic_freeze_noirq		NULL
 #define pm_generic_freeze_late		NULL
 #define pm_generic_freeze		NULL
@@ -773,7 +782,6 @@ static inline void dpm_for_each_dev(void *data, void (*fn)(struct device *, void
 #define pm_generic_restore		NULL
 #define pm_generic_poweroff_noirq	NULL
 #define pm_generic_poweroff_late	NULL
-#define pm_generic_poweroff		NULL
 #define pm_generic_complete		NULL
 #endif /* !CONFIG_PM_SLEEP */
 
-- 
1.9.1


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

* Re: [PATCH] PM / sleep: define inline functions
  2015-12-16 11:41 [PATCH] PM / sleep: define inline functions Sudip Mukherjee
@ 2015-12-17  0:41   ` Eric Anholt
  0 siblings, 0 replies; 6+ messages in thread
From: Eric Anholt @ 2015-12-17  0:41 UTC (permalink / raw)
  To: Sudip Mukherjee, Rafael J. Wysocki, Pavel Machek, Len Brown
  Cc: linux-kernel, linux-pm, Sudip Mukherjee

[-- Attachment #1: Type: text/plain, Size: 1431 bytes --]

Sudip Mukherjee <sudipm.mukherjee@gmail.com> writes:

> If CONFIG_PM_SLEEP is not defined then the functions are defined as
> NULL. And as a result we are getting build failure with
> alpha allmodconfig with the error:
>
> drivers/gpu/drm/vc4/vc4_v3d.c: In function 'vc4_v3d_set_power':
> include/linux/stddef.h:7:14: error: called object is not a function or function pointer
>  #define NULL ((void *)0)
>               ^
> include/linux/pm.h:776:30: note: in expansion of macro 'NULL'
>  #define pm_generic_poweroff  NULL
>                               ^
> drivers/gpu/drm/vc4/vc4_v3d.c:157:10: note: in expansion of macro 'pm_generic_poweroff'
>    return pm_generic_poweroff(&vc4->v3d->pdev->dev);
>           ^
> include/linux/stddef.h:7:14: error: called object is not a function or function pointer
>  #define NULL ((void *)0)
>               ^
> include/linux/pm.h:764:28: note: in expansion of macro 'NULL'
>  #define pm_generic_resume  NULL
>                             ^
> drivers/gpu/drm/vc4/vc4_v3d.c:159:10: note: in expansion of macro 'pm_generic_resume'
>    return pm_generic_resume(&vc4->v3d->pdev->dev);
>           ^
>
> Fixes: d5b1a78a772f ("drm/vc4: Add support for drawing 3D frames.")
> Cc: Eric Anholt <eric@anholt.net>
> Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>

I'm happy with this solution, and would also be willing to just depend
on the config option as well.  Whatever people prefer.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]

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

* Re: [PATCH] PM / sleep: define inline functions
@ 2015-12-17  0:41   ` Eric Anholt
  0 siblings, 0 replies; 6+ messages in thread
From: Eric Anholt @ 2015-12-17  0:41 UTC (permalink / raw)
  To: Rafael J. Wysocki, Pavel Machek, Len Brown
  Cc: linux-kernel, linux-pm, Sudip Mukherjee

[-- Attachment #1: Type: text/plain, Size: 1431 bytes --]

Sudip Mukherjee <sudipm.mukherjee@gmail.com> writes:

> If CONFIG_PM_SLEEP is not defined then the functions are defined as
> NULL. And as a result we are getting build failure with
> alpha allmodconfig with the error:
>
> drivers/gpu/drm/vc4/vc4_v3d.c: In function 'vc4_v3d_set_power':
> include/linux/stddef.h:7:14: error: called object is not a function or function pointer
>  #define NULL ((void *)0)
>               ^
> include/linux/pm.h:776:30: note: in expansion of macro 'NULL'
>  #define pm_generic_poweroff  NULL
>                               ^
> drivers/gpu/drm/vc4/vc4_v3d.c:157:10: note: in expansion of macro 'pm_generic_poweroff'
>    return pm_generic_poweroff(&vc4->v3d->pdev->dev);
>           ^
> include/linux/stddef.h:7:14: error: called object is not a function or function pointer
>  #define NULL ((void *)0)
>               ^
> include/linux/pm.h:764:28: note: in expansion of macro 'NULL'
>  #define pm_generic_resume  NULL
>                             ^
> drivers/gpu/drm/vc4/vc4_v3d.c:159:10: note: in expansion of macro 'pm_generic_resume'
>    return pm_generic_resume(&vc4->v3d->pdev->dev);
>           ^
>
> Fixes: d5b1a78a772f ("drm/vc4: Add support for drawing 3D frames.")
> Cc: Eric Anholt <eric@anholt.net>
> Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>

I'm happy with this solution, and would also be willing to just depend
on the config option as well.  Whatever people prefer.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]

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

* Re: [PATCH] PM / sleep: define inline functions
  2015-12-17  0:41   ` Eric Anholt
  (?)
@ 2015-12-17  1:43   ` Rafael J. Wysocki
  2015-12-17  7:55     ` Sudip Mukherjee
  2015-12-17 19:12     ` Eric Anholt
  -1 siblings, 2 replies; 6+ messages in thread
From: Rafael J. Wysocki @ 2015-12-17  1:43 UTC (permalink / raw)
  To: Eric Anholt
  Cc: Sudip Mukherjee, Pavel Machek, Len Brown, linux-kernel, linux-pm

On Wednesday, December 16, 2015 04:41:37 PM Eric Anholt wrote:
> 
> --=-=-=
> Content-Type: text/plain
> 
> Sudip Mukherjee <sudipm.mukherjee@gmail.com> writes:
> 
> > If CONFIG_PM_SLEEP is not defined then the functions are defined as
> > NULL. And as a result we are getting build failure with
> > alpha allmodconfig with the error:
> >
> > drivers/gpu/drm/vc4/vc4_v3d.c: In function 'vc4_v3d_set_power':
> > include/linux/stddef.h:7:14: error: called object is not a function or function pointer
> >  #define NULL ((void *)0)
> >               ^
> > include/linux/pm.h:776:30: note: in expansion of macro 'NULL'
> >  #define pm_generic_poweroff  NULL
> >                               ^
> > drivers/gpu/drm/vc4/vc4_v3d.c:157:10: note: in expansion of macro 'pm_generic_poweroff'
> >    return pm_generic_poweroff(&vc4->v3d->pdev->dev);
> >           ^
> > include/linux/stddef.h:7:14: error: called object is not a function or function pointer
> >  #define NULL ((void *)0)
> >               ^
> > include/linux/pm.h:764:28: note: in expansion of macro 'NULL'
> >  #define pm_generic_resume  NULL
> >                             ^
> > drivers/gpu/drm/vc4/vc4_v3d.c:159:10: note: in expansion of macro 'pm_generic_resume'
> >    return pm_generic_resume(&vc4->v3d->pdev->dev);
> >           ^
> >
> > Fixes: d5b1a78a772f ("drm/vc4: Add support for drawing 3D frames.")
> > Cc: Eric Anholt <eric@anholt.net>
> > Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
> 
> I'm happy with this solution, and would also be willing to just depend
> on the config option as well.  Whatever people prefer.

These functions are intended to be used as PM callbacks rather than to be
called directly from code that doesn't depend on PM_SLEEP, so I'd prefer
all code calling them directly to depend on the config option.

Thanks,
Rafael


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

* Re: [PATCH] PM / sleep: define inline functions
  2015-12-17  1:43   ` Rafael J. Wysocki
@ 2015-12-17  7:55     ` Sudip Mukherjee
  2015-12-17 19:12     ` Eric Anholt
  1 sibling, 0 replies; 6+ messages in thread
From: Sudip Mukherjee @ 2015-12-17  7:55 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Eric Anholt, Pavel Machek, Len Brown, linux-kernel, linux-pm

On Thu, Dec 17, 2015 at 02:43:38AM +0100, Rafael J. Wysocki wrote:
> On Wednesday, December 16, 2015 04:41:37 PM Eric Anholt wrote:
> > 
> > --=-=-=
> > Content-Type: text/plain
> > 
> > Sudip Mukherjee <sudipm.mukherjee@gmail.com> writes:
> > 
> > > If CONFIG_PM_SLEEP is not defined then the functions are defined as
> > > NULL. And as a result we are getting build failure with
> > > alpha allmodconfig with the error:
> > >
> > > drivers/gpu/drm/vc4/vc4_v3d.c: In function 'vc4_v3d_set_power':
> > > include/linux/stddef.h:7:14: error: called object is not a function or function pointer
> > >  #define NULL ((void *)0)
> > >               ^
> > > include/linux/pm.h:776:30: note: in expansion of macro 'NULL'
> > >  #define pm_generic_poweroff  NULL
> > >                               ^
> > > drivers/gpu/drm/vc4/vc4_v3d.c:157:10: note: in expansion of macro 'pm_generic_poweroff'
> > >    return pm_generic_poweroff(&vc4->v3d->pdev->dev);
> > >           ^
> > > include/linux/stddef.h:7:14: error: called object is not a function or function pointer
> > >  #define NULL ((void *)0)
> > >               ^
> > > include/linux/pm.h:764:28: note: in expansion of macro 'NULL'
> > >  #define pm_generic_resume  NULL
> > >                             ^
> > > drivers/gpu/drm/vc4/vc4_v3d.c:159:10: note: in expansion of macro 'pm_generic_resume'
> > >    return pm_generic_resume(&vc4->v3d->pdev->dev);
> > >           ^
> > >
> > > Fixes: d5b1a78a772f ("drm/vc4: Add support for drawing 3D frames.")
> > > Cc: Eric Anholt <eric@anholt.net>
> > > Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
> > 
> > I'm happy with this solution, and would also be willing to just depend
> > on the config option as well.  Whatever people prefer.
> 
> These functions are intended to be used as PM callbacks rather than to be
> called directly from code that doesn't depend on PM_SLEEP, so I'd prefer
> all code calling them directly to depend on the config option.

Apart from alpha some other arch also failed on allmodconfig for
next-20151216.
next-20151217 is now getting compiled on travis. If it still shows the
build failure I will send v2 with config options.

regards
sudip

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

* Re: [PATCH] PM / sleep: define inline functions
  2015-12-17  1:43   ` Rafael J. Wysocki
  2015-12-17  7:55     ` Sudip Mukherjee
@ 2015-12-17 19:12     ` Eric Anholt
  1 sibling, 0 replies; 6+ messages in thread
From: Eric Anholt @ 2015-12-17 19:12 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Sudip Mukherjee, Pavel Machek, Len Brown, linux-kernel, linux-pm

[-- Attachment #1: Type: text/plain, Size: 2492 bytes --]

"Rafael J. Wysocki" <rjw@rjwysocki.net> writes:

> On Wednesday, December 16, 2015 04:41:37 PM Eric Anholt wrote:
>> 
>> --=-=-=
>> Content-Type: text/plain
>> 
>> Sudip Mukherjee <sudipm.mukherjee@gmail.com> writes:
>> 
>> > If CONFIG_PM_SLEEP is not defined then the functions are defined as
>> > NULL. And as a result we are getting build failure with
>> > alpha allmodconfig with the error:
>> >
>> > drivers/gpu/drm/vc4/vc4_v3d.c: In function 'vc4_v3d_set_power':
>> > include/linux/stddef.h:7:14: error: called object is not a function or function pointer
>> >  #define NULL ((void *)0)
>> >               ^
>> > include/linux/pm.h:776:30: note: in expansion of macro 'NULL'
>> >  #define pm_generic_poweroff  NULL
>> >                               ^
>> > drivers/gpu/drm/vc4/vc4_v3d.c:157:10: note: in expansion of macro 'pm_generic_poweroff'
>> >    return pm_generic_poweroff(&vc4->v3d->pdev->dev);
>> >           ^
>> > include/linux/stddef.h:7:14: error: called object is not a function or function pointer
>> >  #define NULL ((void *)0)
>> >               ^
>> > include/linux/pm.h:764:28: note: in expansion of macro 'NULL'
>> >  #define pm_generic_resume  NULL
>> >                             ^
>> > drivers/gpu/drm/vc4/vc4_v3d.c:159:10: note: in expansion of macro 'pm_generic_resume'
>> >    return pm_generic_resume(&vc4->v3d->pdev->dev);
>> >           ^
>> >
>> > Fixes: d5b1a78a772f ("drm/vc4: Add support for drawing 3D frames.")
>> > Cc: Eric Anholt <eric@anholt.net>
>> > Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
>> 
>> I'm happy with this solution, and would also be willing to just depend
>> on the config option as well.  Whatever people prefer.
>
> These functions are intended to be used as PM callbacks rather than to be
> called directly from code that doesn't depend on PM_SLEEP, so I'd prefer
> all code calling them directly to depend on the config option.

Actually, I should have probably checked what the right way to do this
is.

I'm using these functions for reset when the device gets wedged.  Before
swapping to using a generic power domain, I was just sending the command
through the firmware driver to turn the GPU off and back on.  The genpd
wraps my firmware driver's interface, so what is the best way to force
my domain (I assert I'm the only consumer of it) off and back on again?

If this is the best interface, then I do need to just depend on
CONFIG_PM_SLEEP in Kconfig.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]

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

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

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-16 11:41 [PATCH] PM / sleep: define inline functions Sudip Mukherjee
2015-12-17  0:41 ` Eric Anholt
2015-12-17  0:41   ` Eric Anholt
2015-12-17  1:43   ` Rafael J. Wysocki
2015-12-17  7:55     ` Sudip Mukherjee
2015-12-17 19:12     ` Eric Anholt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.