Message ID | 20190927094708.11563-1-geert@linux-m68k.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] fbdev: c2p: Fix link failure on non-inlining | expand |
Hi Bartlomiej, Andrew, On Fri, Sep 27, 2019 at 11:47 AM Geert Uytterhoeven <geert@linux-m68k.org> wrote: > When the compiler decides not to inline the Chunky-to-Planar core > functions, the build fails with: > > c2p_planar.c:(.text+0xd6): undefined reference to `c2p_unsupported' > c2p_planar.c:(.text+0x1dc): undefined reference to `c2p_unsupported' > c2p_iplan2.c:(.text+0xc4): undefined reference to `c2p_unsupported' > c2p_iplan2.c:(.text+0x150): undefined reference to `c2p_unsupported' > > Fix this by marking the functions __always_inline. > > While this could be triggered before by manually enabling both > CONFIG_OPTIMIZE_INLINING and CONFIG_CC_OPTIMIZE_FOR_SIZE, it was exposed > in the m68k defconfig by commit ac7c3e4ff401b304 ("compiler: enable > CONFIG_OPTIMIZE_INLINING forcibly"). > > Fixes: 9012d011660ea5cf ("compiler: allow all arches to enable CONFIG_OPTIMIZE_INLINING") > Reported-by: noreply@ellerman.id.au > Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> > Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com> > --- > This is a fix for v5.4-rc1. Can you please apply this for v5.4? This is one of the 4 remaining build regressions, compared to v5.3. Thanks! > v2: > - Add Reviewed-by, > - Fix Fixes, > - Add more explanation. Gr{oetje,eeting}s, Geert
On Mon, Nov 04, 2019 at 08:43:07AM +0100, Geert Uytterhoeven wrote: > Hi Bartlomiej, Andrew, > > On Fri, Sep 27, 2019 at 11:47 AM Geert Uytterhoeven > <geert@linux-m68k.org> wrote: > > When the compiler decides not to inline the Chunky-to-Planar core > > functions, the build fails with: > > > > c2p_planar.c:(.text+0xd6): undefined reference to `c2p_unsupported' > > c2p_planar.c:(.text+0x1dc): undefined reference to `c2p_unsupported' > > c2p_iplan2.c:(.text+0xc4): undefined reference to `c2p_unsupported' > > c2p_iplan2.c:(.text+0x150): undefined reference to `c2p_unsupported' > > > > Fix this by marking the functions __always_inline. > > > > While this could be triggered before by manually enabling both > > CONFIG_OPTIMIZE_INLINING and CONFIG_CC_OPTIMIZE_FOR_SIZE, it was exposed > > in the m68k defconfig by commit ac7c3e4ff401b304 ("compiler: enable > > CONFIG_OPTIMIZE_INLINING forcibly"). > > > > Fixes: 9012d011660ea5cf ("compiler: allow all arches to enable CONFIG_OPTIMIZE_INLINING") > > Reported-by: noreply@ellerman.id.au > > Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> > > Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com> > > --- > > This is a fix for v5.4-rc1. > > Can you please apply this for v5.4? > This is one of the 4 remaining build regressions, compared to v5.3. Applied to drm-misc-fixes, thanks for your patch. -Daniel > > Thanks! > > > v2: > > - Add Reviewed-by, > > - Fix Fixes, > > - Add more explanation. > > Gr{oetje,eeting}s, > > Geert > > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org > > In personal conversations with technical people, I call myself a hacker. But > when I'm talking to journalists I just say "programmer" or something like that. > -- Linus Torvalds > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff --git a/drivers/video/fbdev/c2p_core.h b/drivers/video/fbdev/c2p_core.h index e1035a865fb945f0..45a6d895a7d7208e 100644 --- a/drivers/video/fbdev/c2p_core.h +++ b/drivers/video/fbdev/c2p_core.h @@ -29,7 +29,7 @@ static inline void _transp(u32 d[], unsigned int i1, unsigned int i2, extern void c2p_unsupported(void); -static inline u32 get_mask(unsigned int n) +static __always_inline u32 get_mask(unsigned int n) { switch (n) { case 1: @@ -57,7 +57,7 @@ static inline u32 get_mask(unsigned int n) * Transpose operations on 8 32-bit words */ -static inline void transp8(u32 d[], unsigned int n, unsigned int m) +static __always_inline void transp8(u32 d[], unsigned int n, unsigned int m) { u32 mask = get_mask(n); @@ -99,7 +99,7 @@ static inline void transp8(u32 d[], unsigned int n, unsigned int m) * Transpose operations on 4 32-bit words */ -static inline void transp4(u32 d[], unsigned int n, unsigned int m) +static __always_inline void transp4(u32 d[], unsigned int n, unsigned int m) { u32 mask = get_mask(n); @@ -126,7 +126,7 @@ static inline void transp4(u32 d[], unsigned int n, unsigned int m) * Transpose operations on 4 32-bit words (reverse order) */ -static inline void transp4x(u32 d[], unsigned int n, unsigned int m) +static __always_inline void transp4x(u32 d[], unsigned int n, unsigned int m) { u32 mask = get_mask(n);