Message ID | 1450266099-4352-1-git-send-email-sudipm.mukherjee@gmail.com (mailing list archive) |
---|---|
State | Changes Requested, archived |
Headers | show |
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.
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 -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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 -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
"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.
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 */
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(-)