[alsa-devel] [PATCH 00/15] ARM build regressions in v3.8
I know this comes late, but we have a number of broken configurations in ARM in v3.8 that were still building in v3.7, and I'd like to get them all fixed in the final 3.8 release.
It would be nice if the respective maintainers could have a look at these patches and apply them directly when they are happy with them.
The first patch in the series is strictly speaking not a build error but just a warning, but it is a particularly annoying one that came in through the latest binutils release rather than a kernel change.
The same binutils update also broke the samsung and w90x900 platforms.
A few of the other changes are the result of the imx multiplatform conversion. I'm not really fixing those here, just picking up the pieces. It would be much nicer if we could actually get those drivers to work again with CONFIG_MULTIPLATFORM enabled rather than just disabling them, but it may be much too late for that. At least the drivers don't seem to be too essential, as they are only built in allyesconfig but not in any of the defconfigs.
Arnd
Arnd Bergmann (15): ARM: compressed/head.S: work around new binutils warning ARM: mvebu: build coherency_ll.S for arch=armv7-a ARM: samsung: fix assembly syntax for new gas ARM: w90x900: fix legacy assembly syntax ASoC: fsl: fiq and dma cannot both be modules clk: export __clk_get_name drm/exynos: don't include plat/gpio-cfg.h drm/exynos: fimd and ipp are broken on multiplatform media: coda: don't build on multiplatform mfd/vexpress: export vexpress_config_func_{put,get} mtd: davinci_nand: fix OF support USB: gadget/freescale: disable non-multiplatform drivers USB: ehci: make orion and mxc bus glues coexist samples/seccomp: be less stupid about cross compiling staging/omapdrm: don't build on multiplatform
arch/arm/boot/compressed/Makefile | 2 +- arch/arm/boot/compressed/head.S | 12 ++++++++++++ arch/arm/mach-mvebu/coherency_ll.S | 1 + arch/arm/mach-s3c24xx/include/mach/debug-macro.S | 12 ++++++------ arch/arm/mach-s3c24xx/include/mach/entry-macro.S | 4 ++-- arch/arm/mach-s3c24xx/pm-h1940.S | 2 +- arch/arm/mach-s3c24xx/sleep-s3c2410.S | 12 ++++++------ arch/arm/mach-s3c24xx/sleep-s3c2412.S | 12 ++++++------ arch/arm/mach-w90x900/include/mach/entry-macro.S | 4 ++-- arch/arm/plat-samsung/include/plat/debug-macro.S | 18 +++++++++--------- drivers/clk/clk.c | 1 + drivers/gpu/drm/exynos/Kconfig | 4 ++-- drivers/gpu/drm/exynos/exynos_hdmi.c | 1 - drivers/media/platform/Kconfig | 2 +- drivers/mfd/vexpress-config.c | 3 ++- drivers/mtd/nand/davinci_nand.c | 2 +- drivers/staging/omapdrm/Kconfig | 2 +- drivers/usb/gadget/Kconfig | 3 ++- drivers/usb/host/ehci-hcd.c | 16 +++++++++++++++- samples/seccomp/Makefile | 2 ++ sound/soc/fsl/Kconfig | 3 +++ 21 files changed, 76 insertions(+), 42 deletions(-)
The dma and fiq portions of the imx-pcm driver both have a module_init() call, of which there can be only one in any given module. This changes Kconfig to enforce either the driver to be built-in in the kernel, or to have only one of the two when building imx-pcm as a module.
Without this patch, we cannot build the ARM 'allmodconfig', or we get this error:
sound/soc/fsl/imx-pcm-dma.o: In function `init_module': sound/soc/fsl/imx-pcm-dma.c:177: multiple definition of `init_module' sound/soc/fsl/imx-pcm-fiq.o:sound/soc/fsl/imx-pcm-fiq.c:334: first defined here sound/soc/fsl/imx-pcm-dma.o: In function `cleanup_module': sound/soc/fsl/imx-pcm-dma.c:177: multiple definition of `cleanup_module' sound/soc/fsl/imx-pcm-fiq.o:sound/soc/fsl/imx-pcm-fiq.c:334: first defined here
Signed-off-by: Arnd Bergmann arnd@arndb.de Cc: Liam Girdwood lrg@ti.com Cc: Mark Brown broonie@opensource.wolfsonmicro.com Cc: Shawn Guo shawn.guo@linaro.org Cc: alsa-devel@alsa-project.org --- sound/soc/fsl/Kconfig | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig index 3b98159..282b08e 100644 --- a/sound/soc/fsl/Kconfig +++ b/sound/soc/fsl/Kconfig @@ -127,6 +127,7 @@ config SND_SOC_IMX_AUDMUX config SND_MXC_SOC_WM1133_EV1 tristate "Audio on the i.MX31ADS with WM1133-EV1 fitted" depends on MACH_MX31ADS_WM1133_EV1 + depends on !SND_SOC_IMX_PCM_DMA || SND_IMX_SOC=y select SND_SOC_WM8350 select SND_SOC_IMX_PCM_FIQ select SND_SOC_IMX_AUDMUX @@ -149,6 +150,7 @@ config SND_SOC_MX27VIS_AIC32X4 config SND_SOC_PHYCORE_AC97 tristate "SoC Audio support for Phytec phyCORE (and phyCARD) boards" depends on MACH_PCM043 || MACH_PCA100 + depends on !SND_SOC_IMX_PCM_DMA || SND_IMX_SOC=y select SND_SOC_AC97_BUS select SND_SOC_WM9712 select SND_SOC_IMX_PCM_FIQ @@ -165,6 +167,7 @@ config SND_SOC_EUKREA_TLV320 || MACH_EUKREA_MBIMXSD35_BASEBOARD \ || MACH_EUKREA_MBIMXSD51_BASEBOARD depends on I2C + depends on !SND_SOC_IMX_PCM_DMA || SND_IMX_SOC=y select SND_SOC_TLV320AIC23 select SND_SOC_IMX_PCM_FIQ select SND_SOC_IMX_AUDMUX
On Mon, Jan 21, 2013 at 05:15:58PM +0000, Arnd Bergmann wrote:
The dma and fiq portions of the imx-pcm driver both have a module_init() call, of which there can be only one in any given module. This changes Kconfig to enforce either the driver to be built-in in the kernel, or to have only one of the two when building imx-pcm as a module.
Without this patch, we cannot build the ARM 'allmodconfig', or we get this error:
sound/soc/fsl/imx-pcm-dma.o: In function `init_module': sound/soc/fsl/imx-pcm-dma.c:177: multiple definition of `init_module' sound/soc/fsl/imx-pcm-fiq.o:sound/soc/fsl/imx-pcm-fiq.c:334: first defined here sound/soc/fsl/imx-pcm-dma.o: In function `cleanup_module': sound/soc/fsl/imx-pcm-dma.c:177: multiple definition of `cleanup_module' sound/soc/fsl/imx-pcm-fiq.o:sound/soc/fsl/imx-pcm-fiq.c:334: first defined here
Signed-off-by: Arnd Bergmann arnd@arndb.de Cc: Liam Girdwood lrg@ti.com Cc: Mark Brown broonie@opensource.wolfsonmicro.com Cc: Shawn Guo shawn.guo@linaro.org Cc: alsa-devel@alsa-project.org
I sent a fix [1] for that queued by Mark.
Mark,
Is the patch on the way to 3.8-rc?
Shawn
On Tue, Jan 22, 2013 at 11:50:30AM +0800, Shawn Guo wrote:
On Mon, Jan 21, 2013 at 05:15:58PM +0000, Arnd Bergmann wrote:
Without this patch, we cannot build the ARM 'allmodconfig', or we get this error:
sound/soc/fsl/imx-pcm-dma.o: In function `init_module': sound/soc/fsl/imx-pcm-dma.c:177: multiple definition of `init_module' sound/soc/fsl/imx-pcm-fiq.o:sound/soc/fsl/imx-pcm-fiq.c:334: first defined here sound/soc/fsl/imx-pcm-dma.o: In function `cleanup_module': sound/soc/fsl/imx-pcm-dma.c:177: multiple definition of `cleanup_module' sound/soc/fsl/imx-pcm-fiq.o:sound/soc/fsl/imx-pcm-fiq.c:334: first defined here
I sent a fix [1] for that queued by Mark.
Mark,
Is the patch on the way to 3.8-rc?
Yes, should be.
On Tuesday 22 January 2013, Mark Brown wrote:
On Tue, Jan 22, 2013 at 11:50:30AM +0800, Shawn Guo wrote:
I sent a fix [1] for that queued by Mark.
Right, that patch looks good, too.
Is the patch on the way to 3.8-rc?
Yes, should be.
Ok, thanks!
Arnd
On Tuesday 22 January 2013, Mark Brown wrote:
Show Details On Tue, Jan 22, 2013 at 11:50:30AM +0800, Shawn Guo wrote:
On Mon, Jan 21, 2013 at 05:15:58PM +0000, Arnd Bergmann wrote:
Without this patch, we cannot build the ARM 'allmodconfig', or we get this error:
sound/soc/fsl/imx-pcm-dma.o: In function `init_module': sound/soc/fsl/imx-pcm-dma.c:177: multiple definition of `init_module' sound/soc/fsl/imx-pcm-fiq.o:sound/soc/fsl/imx-pcm-fiq.c:334: first defined here sound/soc/fsl/imx-pcm-dma.o: In function `cleanup_module': sound/soc/fsl/imx-pcm-dma.c:177: multiple definition of `cleanup_module' sound/soc/fsl/imx-pcm-fiq.o:sound/soc/fsl/imx-pcm-fiq.c:334: first defined here
I sent a fix [1] for that queued by Mark.
Mark,
Is the patch on the way to 3.8-rc?
Yes, should be.
Hmm, I tried building 3.8-rc again, which contains the fix to make 'make allmodconfig' work with this code, but it broke 'make allyesconfig', which was working before :(
8<---------- Subject: [PATCH] ASoC: fsl: fix allyesconfig build for imx-pcm
Patch 25b8d314 "ASoC: fsl: fix multiple definition of init_module changed the Makefile for imx-pcm.ko to build two modules that both contain the imx-pcm.c file, which nicely solves the problem of building both versions of the driver as modules, but it causes two new problems:
1. Since imx-pcm.c is now used in two different modules, Kbuild no longer sets the KBUILD_MODNAME symbol when building the object file, which makes it impossible to use dynamic pr_debug code, resulting in this error
sound/soc/fsl/imx-pcm.c: In function 'snd_imx_pcm_mmap': sound/soc/fsl/imx-pcm.c:28:121: error: 'KBUILD_MODNAME' undeclared (first use in this function) sound/soc/fsl/imx-pcm.c:28:121: note: each undeclared identifier is reported only once for each function it appears insound/soc/fsl/snd-soc-imx-pcm-dma.o: In function `imx_pcm_free':
2. If we don't use the dynamic debug code, we get a link error since we now try to link together the same file into built-in.o twice:
sound/soc/fsl/imx-pcm.c:80: multiple definition of `imx_pcm_free' sound/soc/fsl/snd-soc-imx-pcm-fiq.o:/sound/soc/fsl/imx-pcm.c:80: first defined here sound/soc/fsl/snd-soc-imx-pcm-dma.o: In function `snd_imx_pcm_mmap': sound/soc/fsl/imx-pcm.c:21: multiple definition of `snd_imx_pcm_mmap' sound/soc/fsl/snd-soc-imx-pcm-fiq.o:/sound/soc/fsl/imx-pcm.c:21: first defined here sound/soc/fsl/snd-soc-imx-pcm-dma.o: In function `imx_pcm_new': sound/soc/fsl/imx-pcm.c:52: multiple definition of `imx_pcm_new' sound/soc/fsl/snd-soc-imx-pcm-fiq.o:/sound/soc/fsl/imx-pcm.c:52: first defined here
I originally suggested disallowing the selection of both the DMA and FIQ code in the same kernel. That is not very nice, but it resolves the build error for both built-in and modular code.
Signed-off-by: Arnd Bergmann arnd@arndb.de
diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig index e24e417..3f20cb7 100644 --- a/sound/soc/fsl/Kconfig +++ b/sound/soc/fsl/Kconfig @@ -122,7 +122,7 @@ config SND_SOC_IMX_AUDMUX config SND_MXC_SOC_WM1133_EV1 tristate "Audio on the i.MX31ADS with WM1133-EV1 fitted" depends on MACH_MX31ADS_WM1133_EV1 - depends on !SND_SOC_IMX_PCM_DMA || SND_IMX_SOC=y + depends on !SND_SOC_IMX_PCM_DMA select SND_SOC_WM8350 select SND_SOC_IMX_PCM_FIQ select SND_SOC_IMX_AUDMUX @@ -145,7 +145,7 @@ config SND_SOC_MX27VIS_AIC32X4 config SND_SOC_PHYCORE_AC97 tristate "SoC Audio support for Phytec phyCORE (and phyCARD) boards" depends on MACH_PCM043 || MACH_PCA100 - depends on !SND_SOC_IMX_PCM_DMA || SND_IMX_SOC=y + depends on !SND_SOC_IMX_PCM_DMA select SND_SOC_AC97_BUS select SND_SOC_WM9712 select SND_SOC_IMX_PCM_FIQ @@ -162,7 +162,7 @@ config SND_SOC_EUKREA_TLV320 || MACH_EUKREA_MBIMXSD35_BASEBOARD \ || MACH_EUKREA_MBIMXSD51_BASEBOARD depends on I2C - depends on !SND_SOC_IMX_PCM_DMA || SND_IMX_SOC=y + depends on !SND_SOC_IMX_PCM_DMA select SND_SOC_TLV320AIC23 select SND_SOC_IMX_PCM_FIQ select SND_SOC_IMX_AUDMUX diff --git a/sound/soc/fsl/Makefile b/sound/soc/fsl/Makefile index ec14579..ddd9076 100644 --- a/sound/soc/fsl/Makefile +++ b/sound/soc/fsl/Makefile @@ -30,13 +30,6 @@ obj-$(CONFIG_SND_MPC52xx_SOC_EFIKA) += efika-audio-fabric.o # i.MX Platform Support snd-soc-imx-ssi-objs := imx-ssi.o snd-soc-imx-audmux-objs := imx-audmux.o -snd-soc-imx-pcm-objs := imx-pcm.o -ifneq ($(CONFIG_SND_SOC_IMX_PCM_FIQ),) - snd-soc-imx-pcm-objs += imx-pcm-fiq.o -endif -ifneq ($(CONFIG_SND_SOC_IMX_PCM_DMA),) - snd-soc-imx-pcm-objs += imx-pcm-dma.o -endif
obj-$(CONFIG_SND_SOC_IMX_SSI) += snd-soc-imx-ssi.o obj-$(CONFIG_SND_SOC_IMX_AUDMUX) += snd-soc-imx-audmux.o
Patch 25b8d314 "ASoC: fsl: fix multiple definition of init_module changed the Makefile for imx-pcm.ko to build two modules that both contain the imx-pcm.c file, which nicely solves the problem of building both versions of the driver as modules, but it causes two new problems:
1. Since imx-pcm.c is now used in two different modules, Kbuild no longer sets the KBUILD_MODNAME symbol when building the object file, which makes it impossible to use dynamic pr_debug code, resulting in this error
sound/soc/fsl/imx-pcm.c: In function 'snd_imx_pcm_mmap': sound/soc/fsl/imx-pcm.c:28:121: error: 'KBUILD_MODNAME' undeclared (first use in this function) sound/soc/fsl/imx-pcm.c:28:121: note: each undeclared identifier is reported only once for each function it appears insound/soc/fsl/snd-soc-imx-pcm-dma.o: In function `imx_pcm_free':
2. If we don't use the dynamic debug code, we get a link error since we now try to link together the same file into built-in.o twice:
sound/soc/fsl/imx-pcm.c:80: multiple definition of `imx_pcm_free' sound/soc/fsl/snd-soc-imx-pcm-fiq.o:/sound/soc/fsl/imx-pcm.c:80: first defined here sound/soc/fsl/snd-soc-imx-pcm-dma.o: In function `snd_imx_pcm_mmap': sound/soc/fsl/imx-pcm.c:21: multiple definition of `snd_imx_pcm_mmap' sound/soc/fsl/snd-soc-imx-pcm-fiq.o:/sound/soc/fsl/imx-pcm.c:21: first defined here sound/soc/fsl/snd-soc-imx-pcm-dma.o: In function `imx_pcm_new': sound/soc/fsl/imx-pcm.c:52: multiple definition of `imx_pcm_new' sound/soc/fsl/snd-soc-imx-pcm-fiq.o:/sound/soc/fsl/imx-pcm.c:52: first defined here
I originally suggested disallowing the selection of both the DMA and FIQ code in the same kernel. That is not very nice, but it resolves the build error for both built-in and modular code.
Signed-off-by: Arnd Bergmann arnd@arndb.de ---- Sorry, the previous version did not apply, it was on top of my older patch accidentally
diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig index a210c8d..3f20cb7 100644 --- a/sound/soc/fsl/Kconfig +++ b/sound/soc/fsl/Kconfig @@ -122,6 +122,7 @@ config SND_SOC_IMX_AUDMUX config SND_MXC_SOC_WM1133_EV1 tristate "Audio on the i.MX31ADS with WM1133-EV1 fitted" depends on MACH_MX31ADS_WM1133_EV1 + depends on !SND_SOC_IMX_PCM_DMA select SND_SOC_WM8350 select SND_SOC_IMX_PCM_FIQ select SND_SOC_IMX_AUDMUX @@ -144,6 +145,7 @@ config SND_SOC_MX27VIS_AIC32X4 config SND_SOC_PHYCORE_AC97 tristate "SoC Audio support for Phytec phyCORE (and phyCARD) boards" depends on MACH_PCM043 || MACH_PCA100 + depends on !SND_SOC_IMX_PCM_DMA select SND_SOC_AC97_BUS select SND_SOC_WM9712 select SND_SOC_IMX_PCM_FIQ @@ -160,6 +162,7 @@ config SND_SOC_EUKREA_TLV320 || MACH_EUKREA_MBIMXSD35_BASEBOARD \ || MACH_EUKREA_MBIMXSD51_BASEBOARD depends on I2C + depends on !SND_SOC_IMX_PCM_DMA select SND_SOC_TLV320AIC23 select SND_SOC_IMX_PCM_FIQ select SND_SOC_IMX_AUDMUX diff --git a/sound/soc/fsl/Makefile b/sound/soc/fsl/Makefile index ec14579..ddd9076 100644 --- a/sound/soc/fsl/Makefile +++ b/sound/soc/fsl/Makefile @@ -30,13 +30,6 @@ obj-$(CONFIG_SND_MPC52xx_SOC_EFIKA) += efika-audio-fabric.o # i.MX Platform Support snd-soc-imx-ssi-objs := imx-ssi.o snd-soc-imx-audmux-objs := imx-audmux.o -snd-soc-imx-pcm-objs := imx-pcm.o -ifneq ($(CONFIG_SND_SOC_IMX_PCM_FIQ),) - snd-soc-imx-pcm-objs += imx-pcm-fiq.o -endif -ifneq ($(CONFIG_SND_SOC_IMX_PCM_DMA),) - snd-soc-imx-pcm-objs += imx-pcm-dma.o -endif
obj-$(CONFIG_SND_SOC_IMX_SSI) += snd-soc-imx-ssi.o obj-$(CONFIG_SND_SOC_IMX_AUDMUX) += snd-soc-imx-audmux.o
On Tue, Feb 05, 2013 at 04:42:25PM +0000, Arnd Bergmann wrote:
Patch 25b8d314 "ASoC: fsl: fix multiple definition of init_module changed the Makefile for imx-pcm.ko to build two modules that both contain the imx-pcm.c file, which nicely solves the problem of building both versions of the driver as modules, but it causes two new problems:
It's my fault, Arnd. The patch 25b8d314 is a crap. Instead of making the Kconfig even complexer, I chose to revert the patch and do a little surgery on the code to make it match the Kconfig rational. The fix[1] should be on the way to mainline now.
I'm sorry for messing thing up during -rc time.
Shawn
On Wednesday 06 February 2013, Shawn Guo wrote:
On Tue, Feb 05, 2013 at 04:42:25PM +0000, Arnd Bergmann wrote:
Patch 25b8d314 "ASoC: fsl: fix multiple definition of init_module changed the Makefile for imx-pcm.ko to build two modules that both contain the imx-pcm.c file, which nicely solves the problem of building both versions of the driver as modules, but it causes two new problems:
It's my fault, Arnd. The patch 25b8d314 is a crap. Instead of making the Kconfig even complexer, I chose to revert the patch and do a little surgery on the code to make it match the Kconfig rational. The fix[1] should be on the way to mainline now.
I'm sorry for messing thing up during -rc time.
Shawn
Ok, again you were faster than I was at finding a solution, and the new one looks good to me.
Thanks for taking care of this already,
Arnd
participants (3)
-
Arnd Bergmann
-
Mark Brown
-
Shawn Guo