Message ID | 1389367095-7760-1-git-send-email-ben.dooks@codethink.co.uk (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On Fri, Jan 10, 2014 at 03:18:15PM +0000, Ben Dooks wrote: > If the kernel is built to support multi-arm configurmation with shmobile > support built in, then the drivers/sh is not built. This contains drivers > that are essential to devices support by that configuration, including the > PM runtime code in drivers/sh/pm_runtime.c (which implicitly enables the > bus clocks for all devices). > > If CONFIG_ARCH_SHMOBILE_MULTI then build the drivers/sh directory, > but ensure that bits that may conflict (drivers/sh/clk if the common > clock framework is not enabled) are built. > > The ARCH_SHMOBILE_MULTI was added by efacfce5f8a ("ARM: shmobile: Introduce > ARCH_SHMOBILE_MULTI") but this has only just recently been found due to > building device-tree only kernels. > > Cc: Linux Kernel list <linux-kernel@vger.kernel.org> > Cc: Linus SH list <linux-sh@vger.kernel.org> > Cc: Simon Horman <horms@verge.net.au> > Cc: Magnus Damm <magnus.damm@gmail.com> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> > --- > drivers/Makefile | 1 + > drivers/sh/Makefile | 3 +++ > 2 files changed, 4 insertions(+) > > diff --git a/drivers/Makefile b/drivers/Makefile > index 8e3b8b0..abc4744 100644 > --- a/drivers/Makefile > +++ b/drivers/Makefile > @@ -118,6 +118,7 @@ obj-$(CONFIG_SGI_SN) += sn/ > obj-y += firmware/ > obj-$(CONFIG_CRYPTO) += crypto/ > obj-$(CONFIG_SUPERH) += sh/ > +obj-$(CONFIG_ARCH_SHMOBILE_MULTI) += sh/ > obj-$(CONFIG_ARCH_SHMOBILE_LEGACY) += sh/ Can't we just do the following? obj-$(CONFIG_ARCH_SHMOBILE) += sh/ > ifndef CONFIG_ARCH_USES_GETTIMEOFFSET > obj-y += clocksource/ > diff --git a/drivers/sh/Makefile b/drivers/sh/Makefile > index fc67f56..86604a5 100644 > --- a/drivers/sh/Makefile > +++ b/drivers/sh/Makefile > @@ -3,7 +3,10 @@ > # > obj-y := intc/ > > +ifeq ($(CONFIG_COMMON_CLK),n) > obj-$(CONFIG_HAVE_CLK) += clk/ > +endif > + > obj-$(CONFIG_MAPLE) += maple/ > obj-$(CONFIG_SUPERHYWAY) += superhyway/ > > -- > 1.8.5.2 > -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 13/01/14 00:30, Simon Horman wrote: > On Fri, Jan 10, 2014 at 03:18:15PM +0000, Ben Dooks wrote: >> If the kernel is built to support multi-arm configurmation with shmobile >> support built in, then the drivers/sh is not built. This contains drivers >> that are essential to devices support by that configuration, including the >> PM runtime code in drivers/sh/pm_runtime.c (which implicitly enables the >> bus clocks for all devices). >> >> If CONFIG_ARCH_SHMOBILE_MULTI then build the drivers/sh directory, >> but ensure that bits that may conflict (drivers/sh/clk if the common >> clock framework is not enabled) are built. >> >> The ARCH_SHMOBILE_MULTI was added by efacfce5f8a ("ARM: shmobile: Introduce >> ARCH_SHMOBILE_MULTI") but this has only just recently been found due to >> building device-tree only kernels. >> >> Cc: Linux Kernel list <linux-kernel@vger.kernel.org> >> Cc: Linus SH list <linux-sh@vger.kernel.org> >> Cc: Simon Horman <horms@verge.net.au> >> Cc: Magnus Damm <magnus.damm@gmail.com> >> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> >> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> >> --- >> drivers/Makefile | 1 + >> drivers/sh/Makefile | 3 +++ >> 2 files changed, 4 insertions(+) >> >> diff --git a/drivers/Makefile b/drivers/Makefile >> index 8e3b8b0..abc4744 100644 >> --- a/drivers/Makefile >> +++ b/drivers/Makefile >> @@ -118,6 +118,7 @@ obj-$(CONFIG_SGI_SN) += sn/ >> obj-y += firmware/ >> obj-$(CONFIG_CRYPTO) += crypto/ >> obj-$(CONFIG_SUPERH) += sh/ >> +obj-$(CONFIG_ARCH_SHMOBILE_MULTI) += sh/ >> obj-$(CONFIG_ARCH_SHMOBILE_LEGACY) += sh/ > > Can't we just do the following? I think this is probably a better fix. I am wondering what the original logic of not doing this was.
On Fri, Jan 10, 2014 at 4:18 PM, Ben Dooks <ben.dooks@codethink.co.uk> wrote: > --- a/drivers/sh/Makefile > +++ b/drivers/sh/Makefile > @@ -3,7 +3,10 @@ > # > obj-y := intc/ > > +ifeq ($(CONFIG_COMMON_CLK),n) > obj-$(CONFIG_HAVE_CLK) += clk/ > +endif > + This part breaks my Koelsch legacy (non-reference) build: arch/arm/kernel/built-in.o: In function `twd_local_timer_common_register': io.c:(.init.text+0x1804): undefined reference to `clk_enable' io.c:(.init.text+0x1828): undefined reference to `clk_get_rate' drivers/built-in.o: In function `sci_port_disable': clkdev.c:(.text+0x2ae30): undefined reference to `clk_disable' clkdev.c:(.text+0x2ae38): undefined reference to `clk_disable' drivers/built-in.o: In function `sci_port_enable': clkdev.c:(.text+0x2ae74): undefined reference to `clk_enable' clkdev.c:(.text+0x2ae7c): undefined reference to `clk_get_rate' clkdev.c:(.text+0x2ae88): undefined reference to `clk_enable' drivers/built-in.o: In function `sci_notifier': clkdev.c:(.text+0x2c85c): undefined reference to `clk_get_rate' drivers/built-in.o: In function `__pm_clk_remove': clkdev.c:(.text+0x40844): undefined reference to `clk_disable' drivers/built-in.o: In function `pm_clk_suspend': clkdev.c:(.text+0x40c6c): undefined reference to `clk_disable' drivers/built-in.o: In function `pm_clk_resume': clkdev.c:(.text+0x40ce0): undefined reference to `clk_enable' drivers/built-in.o: In function `qspi_set_config_register': clkdev.c:(.text+0x515a4): undefined reference to `clk_get_rate' drivers/built-in.o: In function `rspi_set_config_register': clkdev.c:(.text+0x516dc): undefined reference to `clk_get_rate' drivers/built-in.o: In function `rspi_remove': clkdev.c:(.text+0x518ac): undefined reference to `clk_disable' drivers/built-in.o: In function `rspi_probe': clkdev.c:(.text+0x51a20): undefined reference to `clk_enable' clkdev.c:(.text+0x51d60): undefined reference to `clk_disable' drivers/built-in.o: In function `hspi_transfer_one_message': clkdev.c:(.text+0x5312c): undefined reference to `clk_get_rate' drivers/built-in.o: In function `sh_msiof_spi_txrx': clkdev.c:(.text+0x53d90): undefined reference to `clk_get_rate' drivers/built-in.o: In function `sh_msiof_spi_chipselect': clkdev.c:(.text+0x54200): undefined reference to `clk_enable' clkdev.c:(.text+0x542b8): undefined reference to `clk_disable' drivers/built-in.o: In function `sh_cmt_start': clkdev.c:(.text+0x6f900): undefined reference to `clk_enable' clkdev.c:(.text+0x6f93c): undefined reference to `clk_get_rate' clkdev.c:(.text+0x6f95c): undefined reference to `clk_get_rate' clkdev.c:(.text+0x6fa08): undefined reference to `clk_disable' drivers/built-in.o: In function `sh_cmt_stop': clkdev.c:(.text+0x6fc14): undefined reference to `clk_disable' drivers/built-in.o: In function `__sh_tmu_disable': clkdev.c:(.text+0x70590): undefined reference to `clk_disable' drivers/built-in.o: In function `__sh_tmu_enable': clkdev.c:(.text+0x70980): undefined reference to `clk_enable' clkdev.c:(.text+0x709f0): undefined reference to `clk_get_rate' drivers/built-in.o: In function `em_sti_start': clkdev.c:(.text+0x70f44): undefined reference to `clk_enable' clkdev.c:(.text+0x70f68): undefined reference to `clk_get_rate' drivers/built-in.o: In function `em_sti_stop': clkdev.c:(.text+0x710d0): undefined reference to `clk_disable' arch/arm/mach-shmobile/built-in.o: In function `shmobile_clk_init': platsmp-apmu.c:(.init.text+0x7ac): undefined reference to `recalculate_root_clocks' platsmp-apmu.c:(.init.text+0x7b0): undefined reference to `clk_enable_init_clocks' arch/arm/mach-shmobile/built-in.o: In function `r8a7791_clock_init': platsmp-apmu.c:(.init.text+0x8fc): undefined reference to `clk_register' platsmp-apmu.c:(.init.text+0x920): undefined reference to `sh_clk_mstp_register' arch/arm/mach-shmobile/built-in.o:(.data+0x16f0): undefined reference to `followparent_recalc' Both of my Koelsch legacy and reference configs have CONFIG_HAVE_CLK=y, but only the reference once has CONFIG_COMMON_CLK=y. 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 -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 13/01/14 09:28, Geert Uytterhoeven wrote: > On Fri, Jan 10, 2014 at 4:18 PM, Ben Dooks <ben.dooks@codethink.co.uk> wrote: >> --- a/drivers/sh/Makefile >> +++ b/drivers/sh/Makefile >> @@ -3,7 +3,10 @@ >> # >> obj-y := intc/ >> >> +ifeq ($(CONFIG_COMMON_CLK),n) >> obj-$(CONFIG_HAVE_CLK) += clk/ >> +endif >> + > > This part breaks my Koelsch legacy (non-reference) build: > > arch/arm/kernel/built-in.o: In function `twd_local_timer_common_register': > io.c:(.init.text+0x1804): undefined reference to `clk_enable' > io.c:(.init.text+0x1828): undefined reference to `clk_get_rate' ... > > Both of my Koelsch legacy and reference configs have CONFIG_HAVE_CLK=y, > but only the reference once has CONFIG_COMMON_CLK=y. Hmm, thought undefined symbols got set to 'n'. I can either fix this by ifneq ($(CONFIG_COMMON_CLK),y) endif or adding an extra Kconfig for SH specific legacy clock code.
Hi Ben, On Mon, Jan 13, 2014 at 10:35 AM, Ben Dooks <ben.dooks@codethink.co.uk> wrote: > On 13/01/14 09:28, Geert Uytterhoeven wrote: >> On Fri, Jan 10, 2014 at 4:18 PM, Ben Dooks <ben.dooks@codethink.co.uk> >> wrote: >>> >>> --- a/drivers/sh/Makefile >>> +++ b/drivers/sh/Makefile >>> @@ -3,7 +3,10 @@ >>> # >>> obj-y := intc/ >>> >>> +ifeq ($(CONFIG_COMMON_CLK),n) >>> obj-$(CONFIG_HAVE_CLK) += clk/ >>> +endif >>> + >> >> >> This part breaks my Koelsch legacy (non-reference) build: >> >> arch/arm/kernel/built-in.o: In function `twd_local_timer_common_register': >> io.c:(.init.text+0x1804): undefined reference to `clk_enable' >> io.c:(.init.text+0x1828): undefined reference to `clk_get_rate' > > ... > >> >> Both of my Koelsch legacy and reference configs have CONFIG_HAVE_CLK=y, >> but only the reference once has CONFIG_COMMON_CLK=y. > > Hmm, thought undefined symbols got set to 'n'. No, they're empty. Doh, should have realized that myself... > I can either fix this by > > ifneq ($(CONFIG_COMMON_CLK),y) > endif That's the typical pattern for this. Sometimes people use obj-$(CONFIG_COMMON_CLK)$(CONFIG_HAVE_CLK) += clk/ but that's less readable. > or adding an extra Kconfig for SH specific legacy clock code. 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 -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/Makefile b/drivers/Makefile index 8e3b8b0..abc4744 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -118,6 +118,7 @@ obj-$(CONFIG_SGI_SN) += sn/ obj-y += firmware/ obj-$(CONFIG_CRYPTO) += crypto/ obj-$(CONFIG_SUPERH) += sh/ +obj-$(CONFIG_ARCH_SHMOBILE_MULTI) += sh/ obj-$(CONFIG_ARCH_SHMOBILE_LEGACY) += sh/ ifndef CONFIG_ARCH_USES_GETTIMEOFFSET obj-y += clocksource/ diff --git a/drivers/sh/Makefile b/drivers/sh/Makefile index fc67f56..86604a5 100644 --- a/drivers/sh/Makefile +++ b/drivers/sh/Makefile @@ -3,7 +3,10 @@ # obj-y := intc/ +ifeq ($(CONFIG_COMMON_CLK),n) obj-$(CONFIG_HAVE_CLK) += clk/ +endif + obj-$(CONFIG_MAPLE) += maple/ obj-$(CONFIG_SUPERHYWAY) += superhyway/
If the kernel is built to support multi-arm configurmation with shmobile support built in, then the drivers/sh is not built. This contains drivers that are essential to devices support by that configuration, including the PM runtime code in drivers/sh/pm_runtime.c (which implicitly enables the bus clocks for all devices). If CONFIG_ARCH_SHMOBILE_MULTI then build the drivers/sh directory, but ensure that bits that may conflict (drivers/sh/clk if the common clock framework is not enabled) are built. The ARCH_SHMOBILE_MULTI was added by efacfce5f8a ("ARM: shmobile: Introduce ARCH_SHMOBILE_MULTI") but this has only just recently been found due to building device-tree only kernels. Cc: Linux Kernel list <linux-kernel@vger.kernel.org> Cc: Linus SH list <linux-sh@vger.kernel.org> Cc: Simon Horman <horms@verge.net.au> Cc: Magnus Damm <magnus.damm@gmail.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> --- drivers/Makefile | 1 + drivers/sh/Makefile | 3 +++ 2 files changed, 4 insertions(+)