Re: [PATCH v2] clk: renesas: r9a06g032: Drop __packed for portability
Quoting Geert Uytterhoeven (2020-11-30 00:57:43) > The R9A06G032 clock driver uses an array of packed structures to reduce > kernel size. However, this array contains pointers, which are no longer > aligned naturally, and cannot be relocated on PPC64. Hence when > compile-testing this driver on PPC64 with CONFIG_RELOCATABLE=y (e.g. > PowerPC allyesconfig), the following warnings are produced: > > WARNING: 136 bad relocations > c0616be3 R_PPC64_UADDR64 .rodata+0x000cf338 > c0616bfe R_PPC64_UADDR64 .rodata+0x000cf370 > ... > > Fix this by dropping the __packed attribute from the r9a06g032_clkdesc > definition, trading a small size increase for portability. > > This increases the 156-entry clock table by 1 byte per entry, but due to > the compiler generating more efficient code for unpacked accesses, the > net size increase is only 76 bytes (gcc 9.3.0 on arm32). > > Reported-by: Stephen Rothwell > Fixes: 4c3d88526eba2143 ("clk: renesas: Renesas R9A06G032 clock driver") > Signed-off-by: Geert Uytterhoeven > --- Applied to clk-fixes
Re: [PATCH v2] clk: renesas: r9a06g032: Drop __packed for portability
Hi Stephen, On Sat, Dec 5, 2020 at 7:24 AM Stephen Boyd wrote: > Quoting Geert Uytterhoeven (2020-11-30 00:57:43) > > The R9A06G032 clock driver uses an array of packed structures to reduce > > kernel size. However, this array contains pointers, which are no longer > > aligned naturally, and cannot be relocated on PPC64. Hence when > > compile-testing this driver on PPC64 with CONFIG_RELOCATABLE=y (e.g. > > PowerPC allyesconfig), the following warnings are produced: > > > > WARNING: 136 bad relocations > > c0616be3 R_PPC64_UADDR64 .rodata+0x000cf338 > > c0616bfe R_PPC64_UADDR64 .rodata+0x000cf370 > > ... > > > > Fix this by dropping the __packed attribute from the r9a06g032_clkdesc > > definition, trading a small size increase for portability. > > > > This increases the 156-entry clock table by 1 byte per entry, but due to > > the compiler generating more efficient code for unpacked accesses, the > > net size increase is only 76 bytes (gcc 9.3.0 on arm32). > > > > Reported-by: Stephen Rothwell > > Fixes: 4c3d88526eba2143 ("clk: renesas: Renesas R9A06G032 clock driver") > > Signed-off-by: Geert Uytterhoeven > > --- > > Acked-by: Stephen Boyd > > Unless you want me to pick this up for clk-fixes? Yes please. Forgot to retain this comment for v2: "Please take directly (ppc or clk), as this is a build fix. https://lore.kernel.org/linux-clk/20201128122819.32187...@canb.auug.org.au/; Thanks! Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@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
Re: [PATCH v2] clk: renesas: r9a06g032: Drop __packed for portability
Quoting Geert Uytterhoeven (2020-11-30 00:57:43) > The R9A06G032 clock driver uses an array of packed structures to reduce > kernel size. However, this array contains pointers, which are no longer > aligned naturally, and cannot be relocated on PPC64. Hence when > compile-testing this driver on PPC64 with CONFIG_RELOCATABLE=y (e.g. > PowerPC allyesconfig), the following warnings are produced: > > WARNING: 136 bad relocations > c0616be3 R_PPC64_UADDR64 .rodata+0x000cf338 > c0616bfe R_PPC64_UADDR64 .rodata+0x000cf370 > ... > > Fix this by dropping the __packed attribute from the r9a06g032_clkdesc > definition, trading a small size increase for portability. > > This increases the 156-entry clock table by 1 byte per entry, but due to > the compiler generating more efficient code for unpacked accesses, the > net size increase is only 76 bytes (gcc 9.3.0 on arm32). > > Reported-by: Stephen Rothwell > Fixes: 4c3d88526eba2143 ("clk: renesas: Renesas R9A06G032 clock driver") > Signed-off-by: Geert Uytterhoeven > --- Acked-by: Stephen Boyd Unless you want me to pick this up for clk-fixes?
Re: [PATCH v2] clk: renesas: r9a06g032: Drop __packed for portability
Hi Geert, On Mon, 30 Nov 2020 09:57:43 +0100 Geert Uytterhoeven wrote: > > The R9A06G032 clock driver uses an array of packed structures to reduce > kernel size. However, this array contains pointers, which are no longer > aligned naturally, and cannot be relocated on PPC64. Hence when > compile-testing this driver on PPC64 with CONFIG_RELOCATABLE=y (e.g. > PowerPC allyesconfig), the following warnings are produced: > > WARNING: 136 bad relocations > c0616be3 R_PPC64_UADDR64 .rodata+0x000cf338 > c0616bfe R_PPC64_UADDR64 .rodata+0x000cf370 > ... > > Fix this by dropping the __packed attribute from the r9a06g032_clkdesc > definition, trading a small size increase for portability. > > This increases the 156-entry clock table by 1 byte per entry, but due to > the compiler generating more efficient code for unpacked accesses, the > net size increase is only 76 bytes (gcc 9.3.0 on arm32). > > Reported-by: Stephen Rothwell > Fixes: 4c3d88526eba2143 ("clk: renesas: Renesas R9A06G032 clock driver") > Signed-off-by: Geert Uytterhoeven > --- > v2: > - Fix authorship. > --- > drivers/clk/renesas/r9a06g032-clocks.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/clk/renesas/r9a06g032-clocks.c > b/drivers/clk/renesas/r9a06g032-clocks.c > index d900f6bf53d0b944..892e91b92f2c80f5 100644 > --- a/drivers/clk/renesas/r9a06g032-clocks.c > +++ b/drivers/clk/renesas/r9a06g032-clocks.c > @@ -55,7 +55,7 @@ struct r9a06g032_clkdesc { > u16 sel, g1, r1, g2, r2; > } dual; > }; > -} __packed; > +}; > > #define I_GATE(_clk, _rst, _rdy, _midle, _scon, _mirack, _mistat) \ > { .gate = _clk, .reset = _rst, \ > -- > 2.25.1 > Tested-by: Stephen Rothwell # PowerPC allyesconfig build -- Cheers, Stephen Rothwell pgpM8PracTgTU.pgp Description: OpenPGP digital signature
Re: [PATCH v2] clk: renesas: r9a06g032: Drop __packed for portability
Hi Geert, On Mon, 30 Nov 2020 09:57:43 +0100 Geert Uytterhoeven wrote: > > The R9A06G032 clock driver uses an array of packed structures to reduce > kernel size. However, this array contains pointers, which are no longer > aligned naturally, and cannot be relocated on PPC64. Hence when > compile-testing this driver on PPC64 with CONFIG_RELOCATABLE=y (e.g. > PowerPC allyesconfig), the following warnings are produced: > > WARNING: 136 bad relocations > c0616be3 R_PPC64_UADDR64 .rodata+0x000cf338 > c0616bfe R_PPC64_UADDR64 .rodata+0x000cf370 > ... > > Fix this by dropping the __packed attribute from the r9a06g032_clkdesc > definition, trading a small size increase for portability. > > This increases the 156-entry clock table by 1 byte per entry, but due to > the compiler generating more efficient code for unpacked accesses, the > net size increase is only 76 bytes (gcc 9.3.0 on arm32). > > Reported-by: Stephen Rothwell > Fixes: 4c3d88526eba2143 ("clk: renesas: Renesas R9A06G032 clock driver") > Signed-off-by: Geert Uytterhoeven > --- > v2: > - Fix authorship. > --- > drivers/clk/renesas/r9a06g032-clocks.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Thanks. I have added that to my fixes tree until it gets picked up elsewhere. -- Cheers, Stephen Rothwell pgpO2hQKtMGxP.pgp Description: OpenPGP digital signature
[PATCH v2] clk: renesas: r9a06g032: Drop __packed for portability
The R9A06G032 clock driver uses an array of packed structures to reduce kernel size. However, this array contains pointers, which are no longer aligned naturally, and cannot be relocated on PPC64. Hence when compile-testing this driver on PPC64 with CONFIG_RELOCATABLE=y (e.g. PowerPC allyesconfig), the following warnings are produced: WARNING: 136 bad relocations c0616be3 R_PPC64_UADDR64 .rodata+0x000cf338 c0616bfe R_PPC64_UADDR64 .rodata+0x000cf370 ... Fix this by dropping the __packed attribute from the r9a06g032_clkdesc definition, trading a small size increase for portability. This increases the 156-entry clock table by 1 byte per entry, but due to the compiler generating more efficient code for unpacked accesses, the net size increase is only 76 bytes (gcc 9.3.0 on arm32). Reported-by: Stephen Rothwell Fixes: 4c3d88526eba2143 ("clk: renesas: Renesas R9A06G032 clock driver") Signed-off-by: Geert Uytterhoeven --- v2: - Fix authorship. --- drivers/clk/renesas/r9a06g032-clocks.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r9a06g032-clocks.c index d900f6bf53d0b944..892e91b92f2c80f5 100644 --- a/drivers/clk/renesas/r9a06g032-clocks.c +++ b/drivers/clk/renesas/r9a06g032-clocks.c @@ -55,7 +55,7 @@ struct r9a06g032_clkdesc { u16 sel, g1, r1, g2, r2; } dual; }; -} __packed; +}; #define I_GATE(_clk, _rst, _rdy, _midle, _scon, _mirack, _mistat) \ { .gate = _clk, .reset = _rst, \ -- 2.25.1