Re: [PATCH v3 1/6] drm/vc4: select PM (openrisc)
From: Nathan Chancellor
Date: Thu Sep 23 2021 - 10:55:42 EST
On Thu, Sep 23, 2021 at 04:52:08PM +0200, Maxime Ripard wrote:
> Hi Nathan,
>
> On Wed, Sep 22, 2021 at 08:49:50AM -0700, Nathan Chancellor wrote:
> > On Wed, Sep 22, 2021 at 10:41:56AM +0200, Maxime Ripard wrote:
> > > Hi Randy,
> > >
> > > On Sun, Sep 19, 2021 at 09:40:44AM -0700, Randy Dunlap wrote:
> > > > On 8/19/21 6:59 AM, Maxime Ripard wrote:
> > > > > We already depend on runtime PM to get the power domains and clocks for
> > > > > most of the devices supported by the vc4 driver, so let's just select it
> > > > > to make sure it's there, and remove the ifdef.
> > > > >
> > > > > Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx>
> > > > > ---
> > > > > drivers/gpu/drm/vc4/Kconfig | 1 +
> > > > > drivers/gpu/drm/vc4/vc4_hdmi.c | 2 --
> > > > > 2 files changed, 1 insertion(+), 2 deletions(-)
> > > > >
> > > > > diff --git a/drivers/gpu/drm/vc4/Kconfig b/drivers/gpu/drm/vc4/Kconfig
> > > > > index 118e8a426b1a..f774ab340863 100644
> > > > > --- a/drivers/gpu/drm/vc4/Kconfig
> > > > > +++ b/drivers/gpu/drm/vc4/Kconfig
> > > > > @@ -9,6 +9,7 @@ config DRM_VC4
> > > > > select DRM_KMS_CMA_HELPER
> > > > > select DRM_GEM_CMA_HELPER
> > > > > select DRM_PANEL_BRIDGE
> > > > > + select PM
> > > > > select SND_PCM
> > > > > select SND_PCM_ELD
> > > > > select SND_SOC_GENERIC_DMAENGINE_PCM
> > > > > diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
> > > > > index c2876731ee2d..602203b2d8e1 100644
> > > > > --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
> > > > > +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
> > > > > @@ -2107,7 +2107,6 @@ static int vc5_hdmi_init_resources(struct vc4_hdmi *vc4_hdmi)
> > > > > return 0;
> > > > > }
> > > > > -#ifdef CONFIG_PM
> > > > > static int vc4_hdmi_runtime_suspend(struct device *dev)
> > > > > {
> > > > > struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
> > > > > @@ -2128,7 +2127,6 @@ static int vc4_hdmi_runtime_resume(struct device *dev)
> > > > > return 0;
> > > > > }
> > > > > -#endif
> > > > > static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
> > > > > {
> > > > >
> > > >
> > > > Hi,
> > > >
> > > > FYI.
> > > >
> > > > This still causes a build error on arch/openrisc/ since it does not support
> > > > CONFIG_PM (it does not source "kernel/power/Kconfig" like some other arches do):
> > > >
> > > > ./arch/riscv/Kconfig:source "kernel/power/Kconfig"
> > > > ./arch/x86/Kconfig:source "kernel/power/Kconfig"
> > > > ./arch/nds32/Kconfig:source "kernel/power/Kconfig"
> > > > ./arch/sh/Kconfig:source "kernel/power/Kconfig"
> > > > ./arch/arc/Kconfig:source "kernel/power/Kconfig"
> > > > ./arch/arm64/Kconfig:source "kernel/power/Kconfig"
> > > > ./arch/xtensa/Kconfig:source "kernel/power/Kconfig"
> > > > ./arch/sparc/Kconfig:source "kernel/power/Kconfig"
> > > > ./arch/arm/Kconfig:source "kernel/power/Kconfig"
> > > > ./arch/mips/Kconfig:source "kernel/power/Kconfig"
> > > > ./arch/powerpc/Kconfig:source "kernel/power/Kconfig"
> > > > ./arch/um/Kconfig:source "kernel/power/Kconfig"
> > > > ./arch/ia64/Kconfig:source "kernel/power/Kconfig"
> > > >
> > > > so with
> > > > CONFIG_DRM_VC4=y
> > > > # CONFIG_DRM_VC4_HDMI_CEC is not set
> > > >
> > > > I still see
> > > > ../drivers/gpu/drm/vc4/vc4_hdmi.c:2139:12: warning: 'vc4_hdmi_runtime_suspend' defined but not used [-Wunused-function]
> > > > 2139 | static int vc4_hdmi_runtime_suspend(struct device *dev)
> > > > | ^~~~~~~~~~~~~~~~~~~~~~~~
> > >
> > > With what version did you get that build error? -rc2 shouldn't have it
> > > anymore since the runtime_pm hooks introduction got reverted.
> >
> > -next still contains these patches as Stephen effectively reverted the
> > changes in Linus' tree when merging in the drm-misc-fixes tree:
> >
> > https://lore.kernel.org/r/20210920090729.19458953@xxxxxxxxxxxxxxxx/
>
> Ah, indeed, thanks.
>
> What's the typical fix for these errors?
>
> I guess adding a depends on ARM || ARM64 || COMPILE_TEST would work?
I think the typical fix from most people is marking these functions as
__maybe_unused so that they are always defined but the compiler does not
warn. An alternative would be changing the "select PM" to be
"depends on PM" I believe but that is less frequent.
Cheers,
Nathan