* [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-01-25 15:41 ` Arnd Bergmann 0 siblings, 0 replies; 28+ messages in thread From: Arnd Bergmann @ 2016-01-25 15:41 UTC (permalink / raw) To: Arnd Bergmann, David Woodhouse, Brian Norris Cc: linux-arm-kernel, linux-arch, linux-kernel, linux-mtd When XIP_KERNEL is enabled, some functions are defined in the .data ELF section because we require them to be in RAM whenever we communicate with the flash chip. However this causes problems when FTRACE is enabled and gcc emits calls to __gnu_mcount_nc in the function prolog: drivers/built-in.o: In function `cfi_chip_setup': :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o drivers/built-in.o: In function `cfi_probe_chip': :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o /tmp/ccY172rP.s: Assembler messages: /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 /tmp/ccK4rjeO.s: Assembler messages: /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 /tmp/ccUvhCYR.s: Assembler messages: /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors Specifically, this does not work because the .data section is not marked executable, which leads LD to not generate trampolines for long calls. This moves the __xipram functions into their own .xiptext section instead. The section is still placed next to .data and located in RAM but is marked executable, which avoids the build errors. Also, we only need to place the XIP functions into a separate section if both CONFIG_XIP_KERNEL and CONFIG_MTD_XIP are set: When only MTD_XIP is used, the whole kernel is still in RAM and we do not need to worry about pulling out the rug under it. When only XIP_KERNEL but not MTD_XIP is set, the kernel is in some form of ROM, but we never write to it. Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- include/asm-generic/vmlinux.lds.h | 1 + include/linux/mtd/xip.h | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index c4bd0e2c173c..73a2c72e4252 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -199,6 +199,7 @@ /* .data section */ #define DATA_DATA \ + *(.xiptext) \ *(.data) \ *(.ref.data) \ *(.data..shared_aligned) /* percpu related */ \ diff --git a/include/linux/mtd/xip.h b/include/linux/mtd/xip.h index abed4dec5c2f..e373690cce0a 100644 --- a/include/linux/mtd/xip.h +++ b/include/linux/mtd/xip.h @@ -30,7 +30,9 @@ * obviously not be running from flash. The __xipram is therefore marking * those functions so they get relocated to ram. */ -#define __xipram noinline __attribute__ ((__section__ (".data"))) +#ifdef CONFIG_XIP_KERNEL +#define __xipram noinline __attribute__ ((__section__ (".xiptext"))) +#endif /* * Each architecture has to provide the following macros. They must access @@ -90,10 +92,10 @@ #define xip_cpu_idle() do { } while (0) #endif -#else +#endif /* CONFIG_MTD_XIP */ +#ifndef __xipram #define __xipram - -#endif /* CONFIG_MTD_XIP */ +#endif #endif /* __LINUX_MTD_XIP_H__ */ -- 2.7.0 ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-01-25 15:41 ` Arnd Bergmann 0 siblings, 0 replies; 28+ messages in thread From: Arnd Bergmann @ 2016-01-25 15:41 UTC (permalink / raw) To: linux-arm-kernel When XIP_KERNEL is enabled, some functions are defined in the .data ELF section because we require them to be in RAM whenever we communicate with the flash chip. However this causes problems when FTRACE is enabled and gcc emits calls to __gnu_mcount_nc in the function prolog: drivers/built-in.o: In function `cfi_chip_setup': :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o drivers/built-in.o: In function `cfi_probe_chip': :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o /tmp/ccY172rP.s: Assembler messages: /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 /tmp/ccK4rjeO.s: Assembler messages: /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 /tmp/ccUvhCYR.s: Assembler messages: /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors Specifically, this does not work because the .data section is not marked executable, which leads LD to not generate trampolines for long calls. This moves the __xipram functions into their own .xiptext section instead. The section is still placed next to .data and located in RAM but is marked executable, which avoids the build errors. Also, we only need to place the XIP functions into a separate section if both CONFIG_XIP_KERNEL and CONFIG_MTD_XIP are set: When only MTD_XIP is used, the whole kernel is still in RAM and we do not need to worry about pulling out the rug under it. When only XIP_KERNEL but not MTD_XIP is set, the kernel is in some form of ROM, but we never write to it. Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- include/asm-generic/vmlinux.lds.h | 1 + include/linux/mtd/xip.h | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index c4bd0e2c173c..73a2c72e4252 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -199,6 +199,7 @@ /* .data section */ #define DATA_DATA \ + *(.xiptext) \ *(.data) \ *(.ref.data) \ *(.data..shared_aligned) /* percpu related */ \ diff --git a/include/linux/mtd/xip.h b/include/linux/mtd/xip.h index abed4dec5c2f..e373690cce0a 100644 --- a/include/linux/mtd/xip.h +++ b/include/linux/mtd/xip.h @@ -30,7 +30,9 @@ * obviously not be running from flash. The __xipram is therefore marking * those functions so they get relocated to ram. */ -#define __xipram noinline __attribute__ ((__section__ (".data"))) +#ifdef CONFIG_XIP_KERNEL +#define __xipram noinline __attribute__ ((__section__ (".xiptext"))) +#endif /* * Each architecture has to provide the following macros. They must access @@ -90,10 +92,10 @@ #define xip_cpu_idle() do { } while (0) #endif -#else +#endif /* CONFIG_MTD_XIP */ +#ifndef __xipram #define __xipram - -#endif /* CONFIG_MTD_XIP */ +#endif #endif /* __LINUX_MTD_XIP_H__ */ -- 2.7.0 ^ permalink raw reply related [flat|nested] 28+ messages in thread
* Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set 2016-01-25 15:41 ` Arnd Bergmann @ 2016-03-05 0:02 ` Brian Norris -1 siblings, 0 replies; 28+ messages in thread From: Brian Norris @ 2016-03-05 0:02 UTC (permalink / raw) To: Arnd Bergmann Cc: David Woodhouse, linux-arm-kernel, linux-arch, linux-kernel, linux-mtd Hi Arnd, I know you're travelling, but... On Mon, Jan 25, 2016 at 04:41:50PM +0100, Arnd Bergmann wrote: > When XIP_KERNEL is enabled, some functions are defined in the .data > ELF section because we require them to be in RAM whenever we communicate > with the flash chip. However this causes problems when FTRACE is > enabled and gcc emits calls to __gnu_mcount_nc in the function > prolog: > > drivers/built-in.o: In function `cfi_chip_setup': > :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > drivers/built-in.o: In function `cfi_probe_chip': > :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > /tmp/ccY172rP.s: Assembler messages: > /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data > /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors > make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 > /tmp/ccK4rjeO.s: Assembler messages: > /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data > /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors > make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 > /tmp/ccUvhCYR.s: Assembler messages: > /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data > /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors Can you provide a sample .config that DOES build correctly with XIP_KERNEL enabled + this patch? My first attempt yields some other failures I don't care to fixup right now... Anyway, I don't doubt you have a good fix here, so I can probably take it. Any review from others would be welcome though. > Specifically, this does not work because the .data section is not > marked executable, which leads LD to not generate trampolines for > long calls. > > This moves the __xipram functions into their own .xiptext section instead. > The section is still placed next to .data and located in RAM but is marked > executable, which avoids the build errors. > > Also, we only need to place the XIP functions into a separate section > if both CONFIG_XIP_KERNEL and CONFIG_MTD_XIP are set: When only MTD_XIP > is used, the whole kernel is still in RAM and we do not need to worry > about pulling out the rug under it. When only XIP_KERNEL but not MTD_XIP > is set, the kernel is in some form of ROM, but we never write to it. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Brian ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-05 0:02 ` Brian Norris 0 siblings, 0 replies; 28+ messages in thread From: Brian Norris @ 2016-03-05 0:02 UTC (permalink / raw) To: linux-arm-kernel Hi Arnd, I know you're travelling, but... On Mon, Jan 25, 2016 at 04:41:50PM +0100, Arnd Bergmann wrote: > When XIP_KERNEL is enabled, some functions are defined in the .data > ELF section because we require them to be in RAM whenever we communicate > with the flash chip. However this causes problems when FTRACE is > enabled and gcc emits calls to __gnu_mcount_nc in the function > prolog: > > drivers/built-in.o: In function `cfi_chip_setup': > :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > drivers/built-in.o: In function `cfi_probe_chip': > :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > /tmp/ccY172rP.s: Assembler messages: > /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data > /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors > make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 > /tmp/ccK4rjeO.s: Assembler messages: > /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data > /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors > make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 > /tmp/ccUvhCYR.s: Assembler messages: > /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data > /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors Can you provide a sample .config that DOES build correctly with XIP_KERNEL enabled + this patch? My first attempt yields some other failures I don't care to fixup right now... Anyway, I don't doubt you have a good fix here, so I can probably take it. Any review from others would be welcome though. > Specifically, this does not work because the .data section is not > marked executable, which leads LD to not generate trampolines for > long calls. > > This moves the __xipram functions into their own .xiptext section instead. > The section is still placed next to .data and located in RAM but is marked > executable, which avoids the build errors. > > Also, we only need to place the XIP functions into a separate section > if both CONFIG_XIP_KERNEL and CONFIG_MTD_XIP are set: When only MTD_XIP > is used, the whole kernel is still in RAM and we do not need to worry > about pulling out the rug under it. When only XIP_KERNEL but not MTD_XIP > is set, the kernel is in some form of ROM, but we never write to it. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Brian ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set 2016-03-05 0:02 ` Brian Norris @ 2016-03-05 0:10 ` Brian Norris -1 siblings, 0 replies; 28+ messages in thread From: Brian Norris @ 2016-03-05 0:10 UTC (permalink / raw) To: Arnd Bergmann Cc: David Woodhouse, linux-arm-kernel, linux-arch, linux-kernel, linux-mtd, Robert Jarzmik, Haojian Zhuang, Daniel Mack + others On Fri, Mar 04, 2016 at 04:02:25PM -0800, Brian Norris wrote: > Hi Arnd, > > I know you're travelling, but... > > On Mon, Jan 25, 2016 at 04:41:50PM +0100, Arnd Bergmann wrote: > > When XIP_KERNEL is enabled, some functions are defined in the .data > > ELF section because we require them to be in RAM whenever we communicate > > with the flash chip. However this causes problems when FTRACE is > > enabled and gcc emits calls to __gnu_mcount_nc in the function > > prolog: > > > > drivers/built-in.o: In function `cfi_chip_setup': > > :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > drivers/built-in.o: In function `cfi_probe_chip': > > :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > /tmp/ccY172rP.s: Assembler messages: > > /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data > > /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors > > make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 > > /tmp/ccK4rjeO.s: Assembler messages: > > /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data > > /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors > > make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 > > /tmp/ccUvhCYR.s: Assembler messages: > > /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data > > /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors > > Can you provide a sample .config that DOES build correctly with > XIP_KERNEL enabled + this patch? My first attempt yields some other > failures I don't care to fixup right now... Particularly, mach-pxa MTD_XIP looks like it's broken, at least since here: 5d284e353eb1 ARM: pxa: avoid accessing interrupt registers directly CC drivers/mtd/chips/cfi_cmdset_0002.o drivers/mtd/chips/cfi_cmdset_0002.c: In function ‘xip_udelay’: drivers/mtd/chips/cfi_cmdset_0002.c:962:35: warning: initialization makes integer from pointer without a cast [enabled by default] drivers/mtd/chips/cfi_cmdset_0002.c:967:8: error: ‘ICIP’ undeclared (first use in this function) drivers/mtd/chips/cfi_cmdset_0002.c:967:8: note: each undeclared identifier is reported only once for each function it appears in drivers/mtd/chips/cfi_cmdset_0002.c:967:15: error: ‘ICMR’ undeclared (first use in this function) drivers/mtd/chips/cfi_cmdset_0002.c:981:123: error: invalid operands to binary / (have ‘void *’ and ‘int’) drivers/mtd/chips/cfi_cmdset_0002.c:982:14: warning: assignment makes integer from pointer without a cast [enabled by default] drivers/mtd/chips/cfi_cmdset_0002.c:984:124: error: invalid operands to binary / (have ‘void *’ and ‘int’) drivers/mtd/chips/cfi_cmdset_0002.c:1034:10: warning: assignment makes integer from pointer without a cast [enabled by default] drivers/mtd/chips/cfi_cmdset_0002.c:1045:118: error: invalid operands to binary / (have ‘void *’ and ‘int’) Looks like arch/arm/mach-pxa/include/mach/mtd-xip.h can't find ICIP or ICMR... > Anyway, I don't doubt you have a good fix here, so I can probably take > it. Any review from others would be welcome though. > > > Specifically, this does not work because the .data section is not > > marked executable, which leads LD to not generate trampolines for > > long calls. > > > > This moves the __xipram functions into their own .xiptext section instead. > > The section is still placed next to .data and located in RAM but is marked > > executable, which avoids the build errors. > > > > Also, we only need to place the XIP functions into a separate section > > if both CONFIG_XIP_KERNEL and CONFIG_MTD_XIP are set: When only MTD_XIP > > is used, the whole kernel is still in RAM and we do not need to worry > > about pulling out the rug under it. When only XIP_KERNEL but not MTD_XIP > > is set, the kernel is in some form of ROM, but we never write to it. > > > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Brian ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-05 0:10 ` Brian Norris 0 siblings, 0 replies; 28+ messages in thread From: Brian Norris @ 2016-03-05 0:10 UTC (permalink / raw) To: linux-arm-kernel + others On Fri, Mar 04, 2016 at 04:02:25PM -0800, Brian Norris wrote: > Hi Arnd, > > I know you're travelling, but... > > On Mon, Jan 25, 2016 at 04:41:50PM +0100, Arnd Bergmann wrote: > > When XIP_KERNEL is enabled, some functions are defined in the .data > > ELF section because we require them to be in RAM whenever we communicate > > with the flash chip. However this causes problems when FTRACE is > > enabled and gcc emits calls to __gnu_mcount_nc in the function > > prolog: > > > > drivers/built-in.o: In function `cfi_chip_setup': > > :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > drivers/built-in.o: In function `cfi_probe_chip': > > :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > /tmp/ccY172rP.s: Assembler messages: > > /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data > > /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors > > make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 > > /tmp/ccK4rjeO.s: Assembler messages: > > /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data > > /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors > > make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 > > /tmp/ccUvhCYR.s: Assembler messages: > > /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data > > /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors > > Can you provide a sample .config that DOES build correctly with > XIP_KERNEL enabled + this patch? My first attempt yields some other > failures I don't care to fixup right now... Particularly, mach-pxa MTD_XIP looks like it's broken, at least since here: 5d284e353eb1 ARM: pxa: avoid accessing interrupt registers directly CC drivers/mtd/chips/cfi_cmdset_0002.o drivers/mtd/chips/cfi_cmdset_0002.c: In function ?xip_udelay?: drivers/mtd/chips/cfi_cmdset_0002.c:962:35: warning: initialization makes integer from pointer without a cast [enabled by default] drivers/mtd/chips/cfi_cmdset_0002.c:967:8: error: ?ICIP? undeclared (first use in this function) drivers/mtd/chips/cfi_cmdset_0002.c:967:8: note: each undeclared identifier is reported only once for each function it appears in drivers/mtd/chips/cfi_cmdset_0002.c:967:15: error: ?ICMR? undeclared (first use in this function) drivers/mtd/chips/cfi_cmdset_0002.c:981:123: error: invalid operands to binary / (have ?void *? and ?int?) drivers/mtd/chips/cfi_cmdset_0002.c:982:14: warning: assignment makes integer from pointer without a cast [enabled by default] drivers/mtd/chips/cfi_cmdset_0002.c:984:124: error: invalid operands to binary / (have ?void *? and ?int?) drivers/mtd/chips/cfi_cmdset_0002.c:1034:10: warning: assignment makes integer from pointer without a cast [enabled by default] drivers/mtd/chips/cfi_cmdset_0002.c:1045:118: error: invalid operands to binary / (have ?void *? and ?int?) Looks like arch/arm/mach-pxa/include/mach/mtd-xip.h can't find ICIP or ICMR... > Anyway, I don't doubt you have a good fix here, so I can probably take > it. Any review from others would be welcome though. > > > Specifically, this does not work because the .data section is not > > marked executable, which leads LD to not generate trampolines for > > long calls. > > > > This moves the __xipram functions into their own .xiptext section instead. > > The section is still placed next to .data and located in RAM but is marked > > executable, which avoids the build errors. > > > > Also, we only need to place the XIP functions into a separate section > > if both CONFIG_XIP_KERNEL and CONFIG_MTD_XIP are set: When only MTD_XIP > > is used, the whole kernel is still in RAM and we do not need to worry > > about pulling out the rug under it. When only XIP_KERNEL but not MTD_XIP > > is set, the kernel is in some form of ROM, but we never write to it. > > > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Brian ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-05 0:24 ` Arnd Bergmann 0 siblings, 0 replies; 28+ messages in thread From: Arnd Bergmann @ 2016-03-05 0:24 UTC (permalink / raw) To: Brian Norris Cc: linux-arch, David Woodhouse, linux-kernel, Haojian Zhuang, linux-mtd, Daniel Mack, Robert Jarzmik, linux-arm-kernel On Friday 04 March 2016 16:10:57 Brian Norris wrote: > 5d284e353eb1 ARM: pxa: avoid accessing interrupt registers directly > > CC drivers/mtd/chips/cfi_cmdset_0002.o > drivers/mtd/chips/cfi_cmdset_0002.c: In function ‘xip_udelay’: > drivers/mtd/chips/cfi_cmdset_0002.c:962:35: warning: initialization makes integer from pointer without a cast [enabled by default] > drivers/mtd/chips/cfi_cmdset_0002.c:967:8: error: ‘ICIP’ undeclared (first use in this function) > drivers/mtd/chips/cfi_cmdset_0002.c:967:8: note: each undeclared identifier is reported only once for each function it appears in > drivers/mtd/chips/cfi_cmdset_0002.c:967:15: error: ‘ICMR’ undeclared (first use in this function) > drivers/mtd/chips/cfi_cmdset_0002.c:981:123: error: invalid operands to binary / (have ‘void *’ and ‘int’) > drivers/mtd/chips/cfi_cmdset_0002.c:982:14: warning: assignment makes integer from pointer without a cast [enabled by default] > drivers/mtd/chips/cfi_cmdset_0002.c:984:124: error: invalid operands to binary / (have ‘void *’ and ‘int’) > drivers/mtd/chips/cfi_cmdset_0002.c:1034:10: warning: assignment makes integer from pointer without a cast [enabled by default] > drivers/mtd/chips/cfi_cmdset_0002.c:1045:118: error: invalid operands to binary / (have ‘void *’ and ‘int’) > > Looks like arch/arm/mach-pxa/include/mach/mtd-xip.h can't find ICIP or ICMR... > Right, I also have a workaround for that one, but found later that it won't work. I think this is the patch that broke it five years ago: commit 5d284e353eb11ab2e8b1c5671ba06489b0bd1e0c Author: Eric Miao <eric.y.miao@gmail.com> Date: Wed Apr 27 22:48:04 2011 +0800 ARM: pxa: avoid accessing interrupt registers directly Signed-off-by: Eric Miao <eric.y.miao@gmail.com> diff --git a/arch/arm/mach-pxa/include/mach/regs-intc.h b/arch/arm/mach-pxa/include/mach/regs-intc.h deleted file mode 100644 index 662288eb6f95..000000000000 --- a/arch/arm/mach-pxa/include/mach/regs-intc.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef __ASM_MACH_REGS_INTC_H -#define __ASM_MACH_REGS_INTC_H - -#include <mach/hardware.h> - -/* - * Interrupt Controller - */ - -#define ICIP __REG(0x40D00000) /* Interrupt Controller IRQ Pending Register */ -#define ICMR __REG(0x40D00004) /* Interrupt Controller Mask Register */ -#define ICLR __REG(0x40D00008) /* Interrupt Controller Level Register */ -#define ICFP __REG(0x40D0000C) /* Interrupt Controller FIQ Pending Register */ -#define ICPR __REG(0x40D00010) /* Interrupt Controller Pending Register */ -#define ICCR __REG(0x40D00014) /* Interrupt Controller Control Register */ -#define ICHP __REG(0x40D00018) /* Interrupt Controller Highest Priority Register */ and it's possible that nobody ever noticed... I guess we can bring back the macros for the case that MTD_XIP and XIP_KERNEL are both enabled. Arnd _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-05 0:24 ` Arnd Bergmann 0 siblings, 0 replies; 28+ messages in thread From: Arnd Bergmann @ 2016-03-05 0:24 UTC (permalink / raw) To: linux-arm-kernel On Friday 04 March 2016 16:10:57 Brian Norris wrote: > 5d284e353eb1 ARM: pxa: avoid accessing interrupt registers directly > > CC drivers/mtd/chips/cfi_cmdset_0002.o > drivers/mtd/chips/cfi_cmdset_0002.c: In function ?xip_udelay?: > drivers/mtd/chips/cfi_cmdset_0002.c:962:35: warning: initialization makes integer from pointer without a cast [enabled by default] > drivers/mtd/chips/cfi_cmdset_0002.c:967:8: error: ?ICIP? undeclared (first use in this function) > drivers/mtd/chips/cfi_cmdset_0002.c:967:8: note: each undeclared identifier is reported only once for each function it appears in > drivers/mtd/chips/cfi_cmdset_0002.c:967:15: error: ?ICMR? undeclared (first use in this function) > drivers/mtd/chips/cfi_cmdset_0002.c:981:123: error: invalid operands to binary / (have ?void *? and ?int?) > drivers/mtd/chips/cfi_cmdset_0002.c:982:14: warning: assignment makes integer from pointer without a cast [enabled by default] > drivers/mtd/chips/cfi_cmdset_0002.c:984:124: error: invalid operands to binary / (have ?void *? and ?int?) > drivers/mtd/chips/cfi_cmdset_0002.c:1034:10: warning: assignment makes integer from pointer without a cast [enabled by default] > drivers/mtd/chips/cfi_cmdset_0002.c:1045:118: error: invalid operands to binary / (have ?void *? and ?int?) > > Looks like arch/arm/mach-pxa/include/mach/mtd-xip.h can't find ICIP or ICMR... > Right, I also have a workaround for that one, but found later that it won't work. I think this is the patch that broke it five years ago: commit 5d284e353eb11ab2e8b1c5671ba06489b0bd1e0c Author: Eric Miao <eric.y.miao@gmail.com> Date: Wed Apr 27 22:48:04 2011 +0800 ARM: pxa: avoid accessing interrupt registers directly Signed-off-by: Eric Miao <eric.y.miao@gmail.com> diff --git a/arch/arm/mach-pxa/include/mach/regs-intc.h b/arch/arm/mach-pxa/include/mach/regs-intc.h deleted file mode 100644 index 662288eb6f95..000000000000 --- a/arch/arm/mach-pxa/include/mach/regs-intc.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef __ASM_MACH_REGS_INTC_H -#define __ASM_MACH_REGS_INTC_H - -#include <mach/hardware.h> - -/* - * Interrupt Controller - */ - -#define ICIP __REG(0x40D00000) /* Interrupt Controller IRQ Pending Register */ -#define ICMR __REG(0x40D00004) /* Interrupt Controller Mask Register */ -#define ICLR __REG(0x40D00008) /* Interrupt Controller Level Register */ -#define ICFP __REG(0x40D0000C) /* Interrupt Controller FIQ Pending Register */ -#define ICPR __REG(0x40D00010) /* Interrupt Controller Pending Register */ -#define ICCR __REG(0x40D00014) /* Interrupt Controller Control Register */ -#define ICHP __REG(0x40D00018) /* Interrupt Controller Highest Priority Register */ and it's possible that nobody ever noticed... I guess we can bring back the macros for the case that MTD_XIP and XIP_KERNEL are both enabled. Arnd ^ permalink raw reply related [flat|nested] 28+ messages in thread
* Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-05 0:24 ` Arnd Bergmann 0 siblings, 0 replies; 28+ messages in thread From: Arnd Bergmann @ 2016-03-05 0:24 UTC (permalink / raw) To: Brian Norris Cc: David Woodhouse, linux-arm-kernel, linux-arch, linux-kernel, linux-mtd, Robert Jarzmik, Haojian Zhuang, Daniel Mack On Friday 04 March 2016 16:10:57 Brian Norris wrote: > 5d284e353eb1 ARM: pxa: avoid accessing interrupt registers directly > > CC drivers/mtd/chips/cfi_cmdset_0002.o > drivers/mtd/chips/cfi_cmdset_0002.c: In function ‘xip_udelay’: > drivers/mtd/chips/cfi_cmdset_0002.c:962:35: warning: initialization makes integer from pointer without a cast [enabled by default] > drivers/mtd/chips/cfi_cmdset_0002.c:967:8: error: ‘ICIP’ undeclared (first use in this function) > drivers/mtd/chips/cfi_cmdset_0002.c:967:8: note: each undeclared identifier is reported only once for each function it appears in > drivers/mtd/chips/cfi_cmdset_0002.c:967:15: error: ‘ICMR’ undeclared (first use in this function) > drivers/mtd/chips/cfi_cmdset_0002.c:981:123: error: invalid operands to binary / (have ‘void *’ and ‘int’) > drivers/mtd/chips/cfi_cmdset_0002.c:982:14: warning: assignment makes integer from pointer without a cast [enabled by default] > drivers/mtd/chips/cfi_cmdset_0002.c:984:124: error: invalid operands to binary / (have ‘void *’ and ‘int’) > drivers/mtd/chips/cfi_cmdset_0002.c:1034:10: warning: assignment makes integer from pointer without a cast [enabled by default] > drivers/mtd/chips/cfi_cmdset_0002.c:1045:118: error: invalid operands to binary / (have ‘void *’ and ‘int’) > > Looks like arch/arm/mach-pxa/include/mach/mtd-xip.h can't find ICIP or ICMR... > Right, I also have a workaround for that one, but found later that it won't work. I think this is the patch that broke it five years ago: commit 5d284e353eb11ab2e8b1c5671ba06489b0bd1e0c Author: Eric Miao <eric.y.miao@gmail.com> Date: Wed Apr 27 22:48:04 2011 +0800 ARM: pxa: avoid accessing interrupt registers directly Signed-off-by: Eric Miao <eric.y.miao@gmail.com> diff --git a/arch/arm/mach-pxa/include/mach/regs-intc.h b/arch/arm/mach-pxa/include/mach/regs-intc.h deleted file mode 100644 index 662288eb6f95..000000000000 --- a/arch/arm/mach-pxa/include/mach/regs-intc.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef __ASM_MACH_REGS_INTC_H -#define __ASM_MACH_REGS_INTC_H - -#include <mach/hardware.h> - -/* - * Interrupt Controller - */ - -#define ICIP __REG(0x40D00000) /* Interrupt Controller IRQ Pending Register */ -#define ICMR __REG(0x40D00004) /* Interrupt Controller Mask Register */ -#define ICLR __REG(0x40D00008) /* Interrupt Controller Level Register */ -#define ICFP __REG(0x40D0000C) /* Interrupt Controller FIQ Pending Register */ -#define ICPR __REG(0x40D00010) /* Interrupt Controller Pending Register */ -#define ICCR __REG(0x40D00014) /* Interrupt Controller Control Register */ -#define ICHP __REG(0x40D00018) /* Interrupt Controller Highest Priority Register */ and it's possible that nobody ever noticed... I guess we can bring back the macros for the case that MTD_XIP and XIP_KERNEL are both enabled. Arnd ^ permalink raw reply related [flat|nested] 28+ messages in thread
* Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set 2016-03-05 0:24 ` Arnd Bergmann @ 2016-03-05 8:45 ` Robert Jarzmik -1 siblings, 0 replies; 28+ messages in thread From: Robert Jarzmik @ 2016-03-05 8:45 UTC (permalink / raw) To: Arnd Bergmann Cc: Brian Norris, David Woodhouse, linux-arm-kernel, linux-arch, linux-kernel, linux-mtd, Haojian Zhuang, Daniel Mack Arnd Bergmann <arnd@arndb.de> writes: > I guess we can bring back the macros for the case that MTD_XIP and XIP_KERNEL > are both enabled. > > Arnd I wouldn't have ICMR and ICIP exposed to drivers, Eric's original move looks corect to me. On the other hand, I'm wondering if xip_irqpending(), xip_currtime() and xip_cpu_idle() should be declared as functions in mtd-xip.h, and be part of something like arch/arm/mach-pxa/xip.c ... Cheers. -- Robert ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-05 8:45 ` Robert Jarzmik 0 siblings, 0 replies; 28+ messages in thread From: Robert Jarzmik @ 2016-03-05 8:45 UTC (permalink / raw) To: linux-arm-kernel Arnd Bergmann <arnd@arndb.de> writes: > I guess we can bring back the macros for the case that MTD_XIP and XIP_KERNEL > are both enabled. > > Arnd I wouldn't have ICMR and ICIP exposed to drivers, Eric's original move looks corect to me. On the other hand, I'm wondering if xip_irqpending(), xip_currtime() and xip_cpu_idle() should be declared as functions in mtd-xip.h, and be part of something like arch/arm/mach-pxa/xip.c ... Cheers. -- Robert ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set 2016-03-05 8:45 ` Robert Jarzmik @ 2016-03-06 19:56 ` Arnd Bergmann -1 siblings, 0 replies; 28+ messages in thread From: Arnd Bergmann @ 2016-03-06 19:56 UTC (permalink / raw) To: Robert Jarzmik Cc: Brian Norris, David Woodhouse, linux-arm-kernel, linux-arch, linux-kernel, linux-mtd, Haojian Zhuang, Daniel Mack On Saturday 05 March 2016, Robert Jarzmik wrote: > Arnd Bergmann <arnd@arndb.de> writes: > > > I guess we can bring back the macros for the case that MTD_XIP and XIP_KERNEL > > are both enabled. > > > > Arnd > I wouldn't have ICMR and ICIP exposed to drivers, Eric's original move looks > corect to me. Yes, it's a reasonable cleanup that we have done in many places, except this one introduced a regression for MTD_XIP. > On the other hand, I'm wondering if xip_irqpending(), xip_currtime() and > xip_cpu_idle() should be declared as functions in mtd-xip.h, and be part of > something like arch/arm/mach-pxa/xip.c ... They have to at least be marked __xipram and must not reference anything in .text or .rodata, but there might be additional requirements. Arnd ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-06 19:56 ` Arnd Bergmann 0 siblings, 0 replies; 28+ messages in thread From: Arnd Bergmann @ 2016-03-06 19:56 UTC (permalink / raw) To: linux-arm-kernel On Saturday 05 March 2016, Robert Jarzmik wrote: > Arnd Bergmann <arnd@arndb.de> writes: > > > I guess we can bring back the macros for the case that MTD_XIP and XIP_KERNEL > > are both enabled. > > > > Arnd > I wouldn't have ICMR and ICIP exposed to drivers, Eric's original move looks > corect to me. Yes, it's a reasonable cleanup that we have done in many places, except this one introduced a regression for MTD_XIP. > On the other hand, I'm wondering if xip_irqpending(), xip_currtime() and > xip_cpu_idle() should be declared as functions in mtd-xip.h, and be part of > something like arch/arm/mach-pxa/xip.c ... They have to at least be marked __xipram and must not reference anything in .text or .rodata, but there might be additional requirements. Arnd ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set 2016-03-05 0:02 ` Brian Norris @ 2016-03-05 0:19 ` Arnd Bergmann -1 siblings, 0 replies; 28+ messages in thread From: Arnd Bergmann @ 2016-03-05 0:19 UTC (permalink / raw) To: Brian Norris Cc: David Woodhouse, linux-arm-kernel, linux-arch, linux-kernel, linux-mtd [-- Attachment #1: Type: text/plain, Size: 2654 bytes --] On Friday 04 March 2016 16:02:25 Brian Norris wrote: > Hi Arnd, > > I know you're travelling, but... > > On Mon, Jan 25, 2016 at 04:41:50PM +0100, Arnd Bergmann wrote: > > When XIP_KERNEL is enabled, some functions are defined in the .data > > ELF section because we require them to be in RAM whenever we communicate > > with the flash chip. However this causes problems when FTRACE is > > enabled and gcc emits calls to __gnu_mcount_nc in the function > > prolog: > > > > drivers/built-in.o: In function `cfi_chip_setup': > > :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > drivers/built-in.o: In function `cfi_probe_chip': > > :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > /tmp/ccY172rP.s: Assembler messages: > > /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data > > /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors > > make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 > > /tmp/ccK4rjeO.s: Assembler messages: > > /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data > > /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors > > make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 > > /tmp/ccUvhCYR.s: Assembler messages: > > /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data > > /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors > > Can you provide a sample .config that DOES build correctly with > XIP_KERNEL enabled + this patch? My first attempt yields some other > failures I don't care to fixup right now... > > Anyway, I don't doubt you have a good fix here, so I can probably take > it. Any review from others would be welcome though. I found the config in the attachment in my logs. To get this config working, I also needed this hunk from my set of old unsubmitted patches: diff --git a/arch/arm/mach-sa1100/include/mach/mtd-xip.h b/arch/arm/mach-sa1100/include/mach/mtd-xip.h index b3d684098fbf..cb76096a2e36 100644 --- a/arch/arm/mach-sa1100/include/mach/mtd-xip.h +++ b/arch/arm/mach-sa1100/include/mach/mtd-xip.h @@ -20,7 +20,7 @@ #define xip_irqpending() (ICIP & ICMR) /* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */ -#define xip_currtime() (OSCR) -#define xip_elapsed_since(x) (signed)((OSCR - (x)) / 4) +#define xip_currtime() readl_relaxed(OSCR) +#define xip_elapsed_since(x) (signed)((readl_relaxed(OSCR) - (x)) / 4) #endif /* __ARCH_SA1100_MTD_XIP_H__ */ Arnd [-- Attachment #2: xip-config.gz --] [-- Type: application/gzip, Size: 29837 bytes --] ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-05 0:19 ` Arnd Bergmann 0 siblings, 0 replies; 28+ messages in thread From: Arnd Bergmann @ 2016-03-05 0:19 UTC (permalink / raw) To: linux-arm-kernel On Friday 04 March 2016 16:02:25 Brian Norris wrote: > Hi Arnd, > > I know you're travelling, but... > > On Mon, Jan 25, 2016 at 04:41:50PM +0100, Arnd Bergmann wrote: > > When XIP_KERNEL is enabled, some functions are defined in the .data > > ELF section because we require them to be in RAM whenever we communicate > > with the flash chip. However this causes problems when FTRACE is > > enabled and gcc emits calls to __gnu_mcount_nc in the function > > prolog: > > > > drivers/built-in.o: In function `cfi_chip_setup': > > :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > drivers/built-in.o: In function `cfi_probe_chip': > > :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > /tmp/ccY172rP.s: Assembler messages: > > /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data > > /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors > > make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 > > /tmp/ccK4rjeO.s: Assembler messages: > > /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data > > /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors > > make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 > > /tmp/ccUvhCYR.s: Assembler messages: > > /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data > > /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors > > Can you provide a sample .config that DOES build correctly with > XIP_KERNEL enabled + this patch? My first attempt yields some other > failures I don't care to fixup right now... > > Anyway, I don't doubt you have a good fix here, so I can probably take > it. Any review from others would be welcome though. I found the config in the attachment in my logs. To get this config working, I also needed this hunk from my set of old unsubmitted patches: diff --git a/arch/arm/mach-sa1100/include/mach/mtd-xip.h b/arch/arm/mach-sa1100/include/mach/mtd-xip.h index b3d684098fbf..cb76096a2e36 100644 --- a/arch/arm/mach-sa1100/include/mach/mtd-xip.h +++ b/arch/arm/mach-sa1100/include/mach/mtd-xip.h @@ -20,7 +20,7 @@ #define xip_irqpending() (ICIP & ICMR) /* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */ -#define xip_currtime() (OSCR) -#define xip_elapsed_since(x) (signed)((OSCR - (x)) / 4) +#define xip_currtime() readl_relaxed(OSCR) +#define xip_elapsed_since(x) (signed)((readl_relaxed(OSCR) - (x)) / 4) #endif /* __ARCH_SA1100_MTD_XIP_H__ */ Arnd -------------- next part -------------- A non-text attachment was scrubbed... Name: xip-config.gz Type: application/gzip Size: 29837 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160305/4fce9742/attachment-0001.gz> ^ permalink raw reply related [flat|nested] 28+ messages in thread
* Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set 2016-03-05 0:19 ` Arnd Bergmann @ 2016-03-05 0:22 ` Brian Norris -1 siblings, 0 replies; 28+ messages in thread From: Brian Norris @ 2016-03-05 0:22 UTC (permalink / raw) To: Arnd Bergmann Cc: David Woodhouse, linux-arm-kernel, linux-arch, linux-kernel, linux-mtd Hi Arnd, On Sat, Mar 05, 2016 at 01:19:21AM +0100, Arnd Bergmann wrote: > On Friday 04 March 2016 16:02:25 Brian Norris wrote: > > On Mon, Jan 25, 2016 at 04:41:50PM +0100, Arnd Bergmann wrote: > > > When XIP_KERNEL is enabled, some functions are defined in the .data > > > ELF section because we require them to be in RAM whenever we communicate > > > with the flash chip. However this causes problems when FTRACE is > > > enabled and gcc emits calls to __gnu_mcount_nc in the function > > > prolog: > > > > > > drivers/built-in.o: In function `cfi_chip_setup': > > > :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > > drivers/built-in.o: In function `cfi_probe_chip': > > > :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > > /tmp/ccY172rP.s: Assembler messages: > > > /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data > > > /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors > > > make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 > > > /tmp/ccK4rjeO.s: Assembler messages: > > > /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data > > > /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors > > > make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 > > > /tmp/ccUvhCYR.s: Assembler messages: > > > /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data > > > /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors > > > > Can you provide a sample .config that DOES build correctly with > > XIP_KERNEL enabled + this patch? My first attempt yields some other > > failures I don't care to fixup right now... > > > > Anyway, I don't doubt you have a good fix here, so I can probably take > > it. Any review from others would be welcome though. > > I found the config in the attachment in my logs. Thanks... > To get this config working, I also needed this hunk from my set of > old unsubmitted patches: ...but, does anyone care about XIP / MTD_XIP then, if the first two examples we have both have long-standing build issues? Regards, Brian > diff --git a/arch/arm/mach-sa1100/include/mach/mtd-xip.h b/arch/arm/mach-sa1100/include/mach/mtd-xip.h > index b3d684098fbf..cb76096a2e36 100644 > --- a/arch/arm/mach-sa1100/include/mach/mtd-xip.h > +++ b/arch/arm/mach-sa1100/include/mach/mtd-xip.h > @@ -20,7 +20,7 @@ > #define xip_irqpending() (ICIP & ICMR) > > /* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */ > -#define xip_currtime() (OSCR) > -#define xip_elapsed_since(x) (signed)((OSCR - (x)) / 4) > +#define xip_currtime() readl_relaxed(OSCR) > +#define xip_elapsed_since(x) (signed)((readl_relaxed(OSCR) - (x)) / 4) > > #endif /* __ARCH_SA1100_MTD_XIP_H__ */ > > Arnd ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-05 0:22 ` Brian Norris 0 siblings, 0 replies; 28+ messages in thread From: Brian Norris @ 2016-03-05 0:22 UTC (permalink / raw) To: linux-arm-kernel Hi Arnd, On Sat, Mar 05, 2016 at 01:19:21AM +0100, Arnd Bergmann wrote: > On Friday 04 March 2016 16:02:25 Brian Norris wrote: > > On Mon, Jan 25, 2016 at 04:41:50PM +0100, Arnd Bergmann wrote: > > > When XIP_KERNEL is enabled, some functions are defined in the .data > > > ELF section because we require them to be in RAM whenever we communicate > > > with the flash chip. However this causes problems when FTRACE is > > > enabled and gcc emits calls to __gnu_mcount_nc in the function > > > prolog: > > > > > > drivers/built-in.o: In function `cfi_chip_setup': > > > :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > > drivers/built-in.o: In function `cfi_probe_chip': > > > :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > > /tmp/ccY172rP.s: Assembler messages: > > > /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data > > > /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors > > > make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 > > > /tmp/ccK4rjeO.s: Assembler messages: > > > /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data > > > /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors > > > make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 > > > /tmp/ccUvhCYR.s: Assembler messages: > > > /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data > > > /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors > > > > Can you provide a sample .config that DOES build correctly with > > XIP_KERNEL enabled + this patch? My first attempt yields some other > > failures I don't care to fixup right now... > > > > Anyway, I don't doubt you have a good fix here, so I can probably take > > it. Any review from others would be welcome though. > > I found the config in the attachment in my logs. Thanks... > To get this config working, I also needed this hunk from my set of > old unsubmitted patches: ...but, does anyone care about XIP / MTD_XIP then, if the first two examples we have both have long-standing build issues? Regards, Brian > diff --git a/arch/arm/mach-sa1100/include/mach/mtd-xip.h b/arch/arm/mach-sa1100/include/mach/mtd-xip.h > index b3d684098fbf..cb76096a2e36 100644 > --- a/arch/arm/mach-sa1100/include/mach/mtd-xip.h > +++ b/arch/arm/mach-sa1100/include/mach/mtd-xip.h > @@ -20,7 +20,7 @@ > #define xip_irqpending() (ICIP & ICMR) > > /* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */ > -#define xip_currtime() (OSCR) > -#define xip_elapsed_since(x) (signed)((OSCR - (x)) / 4) > +#define xip_currtime() readl_relaxed(OSCR) > +#define xip_elapsed_since(x) (signed)((readl_relaxed(OSCR) - (x)) / 4) > > #endif /* __ARCH_SA1100_MTD_XIP_H__ */ > > Arnd ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set 2016-03-05 0:22 ` Brian Norris @ 2016-03-05 0:28 ` David Woodhouse -1 siblings, 0 replies; 28+ messages in thread From: David Woodhouse @ 2016-03-05 0:28 UTC (permalink / raw) To: Brian Norris, Arnd Bergmann Cc: linux-arm-kernel, linux-arch, linux-kernel, linux-mtd [-- Attachment #1: Type: text/plain, Size: 423 bytes --] On Fri, 2016-03-04 at 16:22 -0800, Brian Norris wrote: > > ...but, does anyone care about XIP / MTD_XIP then, if the first two > examples we have both have long-standing build issues? I think there are people trying to make it work on other platforms, yes. -- David Woodhouse Open Source Technology Centre David.Woodhouse@intel.com Intel Corporation [-- Attachment #2: smime.p7s --] [-- Type: application/x-pkcs7-signature, Size: 5691 bytes --] ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-05 0:28 ` David Woodhouse 0 siblings, 0 replies; 28+ messages in thread From: David Woodhouse @ 2016-03-05 0:28 UTC (permalink / raw) To: linux-arm-kernel On Fri, 2016-03-04 at 16:22 -0800, Brian Norris wrote: > > ...but, does anyone care about XIP / MTD_XIP then, if the first two > examples we have both have long-standing build issues? I think there are people trying to make it work on other platforms, yes. -- David Woodhouse Open Source Technology Centre David.Woodhouse at intel.com Intel Corporation -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 5691 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160305/caad6369/attachment-0001.bin> ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set 2016-03-05 0:28 ` David Woodhouse @ 2016-03-05 0:43 ` Brian Norris -1 siblings, 0 replies; 28+ messages in thread From: Brian Norris @ 2016-03-05 0:43 UTC (permalink / raw) To: David Woodhouse Cc: Arnd Bergmann, linux-arm-kernel, linux-arch, linux-kernel, linux-mtd On Sat, Mar 05, 2016 at 12:28:38AM +0000, David Woodhouse wrote: > On Fri, 2016-03-04 at 16:22 -0800, Brian Norris wrote: > > > > ...but, does anyone care about XIP / MTD_XIP then, if the first two > > examples we have both have long-standing build issues? > > I think there are people trying to make it work on other platforms, > yes. OK... can we kill the broken platforms though? I'm not confident that my and Arnd's workaround attempts will yield anything more than a pat on our own backs to say "yay, it compiles!" And given the number of practically unused things we're already maintaining in MTD, I'm always happy for an excuse to kill off some of it. Brian ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-05 0:43 ` Brian Norris 0 siblings, 0 replies; 28+ messages in thread From: Brian Norris @ 2016-03-05 0:43 UTC (permalink / raw) To: linux-arm-kernel On Sat, Mar 05, 2016 at 12:28:38AM +0000, David Woodhouse wrote: > On Fri, 2016-03-04 at 16:22 -0800, Brian Norris wrote: > > > > ...but, does anyone care about XIP / MTD_XIP then, if the first two > > examples we have both have long-standing build issues? > > I think there are people trying to make it work on other platforms, > yes. OK... can we kill the broken platforms though? I'm not confident that my and Arnd's workaround attempts will yield anything more than a pat on our own backs to say "yay, it compiles!" And given the number of practically unused things we're already maintaining in MTD, I'm always happy for an excuse to kill off some of it. Brian ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set 2016-03-05 0:43 ` Brian Norris @ 2016-03-17 15:56 ` Arnd Bergmann -1 siblings, 0 replies; 28+ messages in thread From: Arnd Bergmann @ 2016-03-17 15:56 UTC (permalink / raw) To: linux-arm-kernel Cc: Brian Norris, David Woodhouse, linux-arch, linux-mtd, linux-kernel On Friday 04 March 2016 16:43:36 Brian Norris wrote: > On Sat, Mar 05, 2016 at 12:28:38AM +0000, David Woodhouse wrote: > > On Fri, 2016-03-04 at 16:22 -0800, Brian Norris wrote: > > > > > > ...but, does anyone care about XIP / MTD_XIP then, if the first two > > > examples we have both have long-standing build issues? > > > > I think there are people trying to make it work on other platforms, > > yes. > > OK... can we kill the broken platforms though? I'm not confident that my > and Arnd's workaround attempts will yield anything more than a pat on > our own backs to say "yay, it compiles!" And given the number of > practically unused things we're already maintaining in MTD, I'm always > happy for an excuse to kill off some of it. Sorry for the late reply. As the three platforms that use this have all been broken for around ten years, it seems reasonable to assume nobody is going to miss the current implementation, but I'd leave it up to the individual platform maintainers. If we remove all three, that would also give us more flexibility regarding the interface definition for any future users of the feature. I think the most likely to use it is the Renesas RZ/A1H platform with its 10MB of on-chip SRAM, and this one doesn't work with the current method anyway. Arnd ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-17 15:56 ` Arnd Bergmann 0 siblings, 0 replies; 28+ messages in thread From: Arnd Bergmann @ 2016-03-17 15:56 UTC (permalink / raw) To: linux-arm-kernel On Friday 04 March 2016 16:43:36 Brian Norris wrote: > On Sat, Mar 05, 2016 at 12:28:38AM +0000, David Woodhouse wrote: > > On Fri, 2016-03-04 at 16:22 -0800, Brian Norris wrote: > > > > > > ...but, does anyone care about XIP / MTD_XIP then, if the first two > > > examples we have both have long-standing build issues? > > > > I think there are people trying to make it work on other platforms, > > yes. > > OK... can we kill the broken platforms though? I'm not confident that my > and Arnd's workaround attempts will yield anything more than a pat on > our own backs to say "yay, it compiles!" And given the number of > practically unused things we're already maintaining in MTD, I'm always > happy for an excuse to kill off some of it. Sorry for the late reply. As the three platforms that use this have all been broken for around ten years, it seems reasonable to assume nobody is going to miss the current implementation, but I'd leave it up to the individual platform maintainers. If we remove all three, that would also give us more flexibility regarding the interface definition for any future users of the feature. I think the most likely to use it is the Renesas RZ/A1H platform with its 10MB of on-chip SRAM, and this one doesn't work with the current method anyway. Arnd ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-05 0:33 ` Arnd Bergmann 0 siblings, 0 replies; 28+ messages in thread From: Arnd Bergmann @ 2016-03-05 0:33 UTC (permalink / raw) To: Brian Norris Cc: linux-arch, Tony Lindgren, linux-kernel, linux-mtd, David Woodhouse, linux-arm-kernel On Friday 04 March 2016 16:22:03 Brian Norris wrote: > Hi Arnd, > > On Sat, Mar 05, 2016 at 01:19:21AM +0100, Arnd Bergmann wrote: > > On Friday 04 March 2016 16:02:25 Brian Norris wrote: > > > On Mon, Jan 25, 2016 at 04:41:50PM +0100, Arnd Bergmann wrote: > > > > When XIP_KERNEL is enabled, some functions are defined in the .data > > > > ELF section because we require them to be in RAM whenever we communicate > > > > with the flash chip. However this causes problems when FTRACE is > > > > enabled and gcc emits calls to __gnu_mcount_nc in the function > > > > prolog: > > > > > > > > drivers/built-in.o: In function `cfi_chip_setup': > > > > :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > > > drivers/built-in.o: In function `cfi_probe_chip': > > > > :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > > > /tmp/ccY172rP.s: Assembler messages: > > > > /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data > > > > /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors > > > > make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 > > > > /tmp/ccK4rjeO.s: Assembler messages: > > > > /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data > > > > /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors > > > > make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 > > > > /tmp/ccUvhCYR.s: Assembler messages: > > > > /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data > > > > /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors > > > > > > Can you provide a sample .config that DOES build correctly with > > > XIP_KERNEL enabled + this patch? My first attempt yields some other > > > failures I don't care to fixup right now... > > > > > > Anyway, I don't doubt you have a good fix here, so I can probably take > > > it. Any review from others would be welcome though. > > > > I found the config in the attachment in my logs. > > Thanks... > > > To get this config working, I also needed this hunk from my set of > > old unsubmitted patches: > > ...but, does anyone care about XIP / MTD_XIP then, if the first two > examples we have both have long-standing build issues? > Probably not. I just checked the third user (omap1), and it seems that one has been broken since 2009 with 941132606c76 ("OMAP: Remove OMAP_IO_ADDRESS, use OMAP1_IO_ADDRESS and OMAP2_IO_ADDRESS instead"), when Tony replaced the inline omap_readl() with an extern function, thus breaking the implementation of xip_irqpending() that must be inlined. The other two have apparently been broken since 2011, by other patches that also broke compilation. Arnd ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-05 0:33 ` Arnd Bergmann 0 siblings, 0 replies; 28+ messages in thread From: Arnd Bergmann @ 2016-03-05 0:33 UTC (permalink / raw) To: linux-arm-kernel On Friday 04 March 2016 16:22:03 Brian Norris wrote: > Hi Arnd, > > On Sat, Mar 05, 2016 at 01:19:21AM +0100, Arnd Bergmann wrote: > > On Friday 04 March 2016 16:02:25 Brian Norris wrote: > > > On Mon, Jan 25, 2016 at 04:41:50PM +0100, Arnd Bergmann wrote: > > > > When XIP_KERNEL is enabled, some functions are defined in the .data > > > > ELF section because we require them to be in RAM whenever we communicate > > > > with the flash chip. However this causes problems when FTRACE is > > > > enabled and gcc emits calls to __gnu_mcount_nc in the function > > > > prolog: > > > > > > > > drivers/built-in.o: In function `cfi_chip_setup': > > > > :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > > > drivers/built-in.o: In function `cfi_probe_chip': > > > > :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > > > /tmp/ccY172rP.s: Assembler messages: > > > > /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data > > > > /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors > > > > make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 > > > > /tmp/ccK4rjeO.s: Assembler messages: > > > > /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data > > > > /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors > > > > make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 > > > > /tmp/ccUvhCYR.s: Assembler messages: > > > > /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data > > > > /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors > > > > > > Can you provide a sample .config that DOES build correctly with > > > XIP_KERNEL enabled + this patch? My first attempt yields some other > > > failures I don't care to fixup right now... > > > > > > Anyway, I don't doubt you have a good fix here, so I can probably take > > > it. Any review from others would be welcome though. > > > > I found the config in the attachment in my logs. > > Thanks... > > > To get this config working, I also needed this hunk from my set of > > old unsubmitted patches: > > ...but, does anyone care about XIP / MTD_XIP then, if the first two > examples we have both have long-standing build issues? > Probably not. I just checked the third user (omap1), and it seems that one has been broken since 2009 with 941132606c76 ("OMAP: Remove OMAP_IO_ADDRESS, use OMAP1_IO_ADDRESS and OMAP2_IO_ADDRESS instead"), when Tony replaced the inline omap_readl() with an extern function, thus breaking the implementation of xip_irqpending() that must be inlined. The other two have apparently been broken since 2011, by other patches that also broke compilation. Arnd ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-05 0:33 ` Arnd Bergmann 0 siblings, 0 replies; 28+ messages in thread From: Arnd Bergmann @ 2016-03-05 0:33 UTC (permalink / raw) To: Brian Norris Cc: David Woodhouse, linux-arm-kernel, linux-arch, linux-kernel, linux-mtd, Tony Lindgren On Friday 04 March 2016 16:22:03 Brian Norris wrote: > Hi Arnd, > > On Sat, Mar 05, 2016 at 01:19:21AM +0100, Arnd Bergmann wrote: > > On Friday 04 March 2016 16:02:25 Brian Norris wrote: > > > On Mon, Jan 25, 2016 at 04:41:50PM +0100, Arnd Bergmann wrote: > > > > When XIP_KERNEL is enabled, some functions are defined in the .data > > > > ELF section because we require them to be in RAM whenever we communicate > > > > with the flash chip. However this causes problems when FTRACE is > > > > enabled and gcc emits calls to __gnu_mcount_nc in the function > > > > prolog: > > > > > > > > drivers/built-in.o: In function `cfi_chip_setup': > > > > :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > > > drivers/built-in.o: In function `cfi_probe_chip': > > > > :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > > > /tmp/ccY172rP.s: Assembler messages: > > > > /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data > > > > /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors > > > > make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 > > > > /tmp/ccK4rjeO.s: Assembler messages: > > > > /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data > > > > /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors > > > > make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 > > > > /tmp/ccUvhCYR.s: Assembler messages: > > > > /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data > > > > /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors > > > > > > Can you provide a sample .config that DOES build correctly with > > > XIP_KERNEL enabled + this patch? My first attempt yields some other > > > failures I don't care to fixup right now... > > > > > > Anyway, I don't doubt you have a good fix here, so I can probably take > > > it. Any review from others would be welcome though. > > > > I found the config in the attachment in my logs. > > Thanks... > > > To get this config working, I also needed this hunk from my set of > > old unsubmitted patches: > > ...but, does anyone care about XIP / MTD_XIP then, if the first two > examples we have both have long-standing build issues? > Probably not. I just checked the third user (omap1), and it seems that one has been broken since 2009 with 941132606c76 ("OMAP: Remove OMAP_IO_ADDRESS, use OMAP1_IO_ADDRESS and OMAP2_IO_ADDRESS instead"), when Tony replaced the inline omap_readl() with an extern function, thus breaking the implementation of xip_irqpending() that must be inlined. The other two have apparently been broken since 2011, by other patches that also broke compilation. Arnd ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set 2016-03-05 0:33 ` Arnd Bergmann @ 2016-03-07 16:43 ` Tony Lindgren -1 siblings, 0 replies; 28+ messages in thread From: Tony Lindgren @ 2016-03-07 16:43 UTC (permalink / raw) To: Arnd Bergmann Cc: Brian Norris, David Woodhouse, linux-arm-kernel, linux-arch, linux-kernel, linux-mtd * Arnd Bergmann <arnd@arndb.de> [160304 16:34]: > On Friday 04 March 2016 16:22:03 Brian Norris wrote: > > Hi Arnd, > > > > On Sat, Mar 05, 2016 at 01:19:21AM +0100, Arnd Bergmann wrote: > > > On Friday 04 March 2016 16:02:25 Brian Norris wrote: > > > > On Mon, Jan 25, 2016 at 04:41:50PM +0100, Arnd Bergmann wrote: > > > > > When XIP_KERNEL is enabled, some functions are defined in the .data > > > > > ELF section because we require them to be in RAM whenever we communicate > > > > > with the flash chip. However this causes problems when FTRACE is > > > > > enabled and gcc emits calls to __gnu_mcount_nc in the function > > > > > prolog: > > > > > > > > > > drivers/built-in.o: In function `cfi_chip_setup': > > > > > :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > > > > drivers/built-in.o: In function `cfi_probe_chip': > > > > > :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > > > > /tmp/ccY172rP.s: Assembler messages: > > > > > /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data > > > > > /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors > > > > > make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 > > > > > /tmp/ccK4rjeO.s: Assembler messages: > > > > > /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data > > > > > /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors > > > > > make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 > > > > > /tmp/ccUvhCYR.s: Assembler messages: > > > > > /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data > > > > > /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors > > > > > > > > Can you provide a sample .config that DOES build correctly with > > > > XIP_KERNEL enabled + this patch? My first attempt yields some other > > > > failures I don't care to fixup right now... > > > > > > > > Anyway, I don't doubt you have a good fix here, so I can probably take > > > > it. Any review from others would be welcome though. > > > > > > I found the config in the attachment in my logs. > > > > Thanks... > > > > > To get this config working, I also needed this hunk from my set of > > > old unsubmitted patches: > > > > ...but, does anyone care about XIP / MTD_XIP then, if the first two > > examples we have both have long-standing build issues? > > > > Probably not. I just checked the third user (omap1), and it seems that one > has been broken since 2009 with 941132606c76 ("OMAP: Remove OMAP_IO_ADDRESS, > use OMAP1_IO_ADDRESS and OMAP2_IO_ADDRESS instead"), when Tony replaced > the inline omap_readl() with an extern function, thus breaking the > implementation of xip_irqpending() that must be inlined. > > The other two have apparently been broken since 2011, by other patches > that also broke compilation. For omaps, I don't recall anybody working on xip for probably close to 10 years. Regards, Tony ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set @ 2016-03-07 16:43 ` Tony Lindgren 0 siblings, 0 replies; 28+ messages in thread From: Tony Lindgren @ 2016-03-07 16:43 UTC (permalink / raw) To: linux-arm-kernel * Arnd Bergmann <arnd@arndb.de> [160304 16:34]: > On Friday 04 March 2016 16:22:03 Brian Norris wrote: > > Hi Arnd, > > > > On Sat, Mar 05, 2016 at 01:19:21AM +0100, Arnd Bergmann wrote: > > > On Friday 04 March 2016 16:02:25 Brian Norris wrote: > > > > On Mon, Jan 25, 2016 at 04:41:50PM +0100, Arnd Bergmann wrote: > > > > > When XIP_KERNEL is enabled, some functions are defined in the .data > > > > > ELF section because we require them to be in RAM whenever we communicate > > > > > with the flash chip. However this causes problems when FTRACE is > > > > > enabled and gcc emits calls to __gnu_mcount_nc in the function > > > > > prolog: > > > > > > > > > > drivers/built-in.o: In function `cfi_chip_setup': > > > > > :(.data+0x272fc): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > > > > drivers/built-in.o: In function `cfi_probe_chip': > > > > > :(.data+0x27de8): relocation truncated to fit: R_ARM_CALL against symbol `__gnu_mcount_nc' defined in .text section in arch/arm/kernel/built-in.o > > > > > /tmp/ccY172rP.s: Assembler messages: > > > > > /tmp/ccY172rP.s:70: Warning: ignoring changed section attributes for .data > > > > > /tmp/ccY172rP.s: Error: 1 warning, treating warnings as errors > > > > > make[5]: *** [drivers/mtd/chips/cfi_probe.o] Error 1 > > > > > /tmp/ccK4rjeO.s: Assembler messages: > > > > > /tmp/ccK4rjeO.s:421: Warning: ignoring changed section attributes for .data > > > > > /tmp/ccK4rjeO.s: Error: 1 warning, treating warnings as errors > > > > > make[5]: *** [drivers/mtd/chips/cfi_util.o] Error 1 > > > > > /tmp/ccUvhCYR.s: Assembler messages: > > > > > /tmp/ccUvhCYR.s:1895: Warning: ignoring changed section attributes for .data > > > > > /tmp/ccUvhCYR.s: Error: 1 warning, treating warnings as errors > > > > > > > > Can you provide a sample .config that DOES build correctly with > > > > XIP_KERNEL enabled + this patch? My first attempt yields some other > > > > failures I don't care to fixup right now... > > > > > > > > Anyway, I don't doubt you have a good fix here, so I can probably take > > > > it. Any review from others would be welcome though. > > > > > > I found the config in the attachment in my logs. > > > > Thanks... > > > > > To get this config working, I also needed this hunk from my set of > > > old unsubmitted patches: > > > > ...but, does anyone care about XIP / MTD_XIP then, if the first two > > examples we have both have long-standing build issues? > > > > Probably not. I just checked the third user (omap1), and it seems that one > has been broken since 2009 with 941132606c76 ("OMAP: Remove OMAP_IO_ADDRESS, > use OMAP1_IO_ADDRESS and OMAP2_IO_ADDRESS instead"), when Tony replaced > the inline omap_readl() with an extern function, thus breaking the > implementation of xip_irqpending() that must be inlined. > > The other two have apparently been broken since 2011, by other patches > that also broke compilation. For omaps, I don't recall anybody working on xip for probably close to 10 years. Regards, Tony ^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2016-03-17 15:56 UTC | newest] Thread overview: 28+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-01-25 15:41 [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set Arnd Bergmann 2016-01-25 15:41 ` Arnd Bergmann 2016-03-05 0:02 ` Brian Norris 2016-03-05 0:02 ` Brian Norris 2016-03-05 0:10 ` Brian Norris 2016-03-05 0:10 ` Brian Norris 2016-03-05 0:24 ` Arnd Bergmann 2016-03-05 0:24 ` Arnd Bergmann 2016-03-05 0:24 ` Arnd Bergmann 2016-03-05 8:45 ` Robert Jarzmik 2016-03-05 8:45 ` Robert Jarzmik 2016-03-06 19:56 ` Arnd Bergmann 2016-03-06 19:56 ` Arnd Bergmann 2016-03-05 0:19 ` Arnd Bergmann 2016-03-05 0:19 ` Arnd Bergmann 2016-03-05 0:22 ` Brian Norris 2016-03-05 0:22 ` Brian Norris 2016-03-05 0:28 ` David Woodhouse 2016-03-05 0:28 ` David Woodhouse 2016-03-05 0:43 ` Brian Norris 2016-03-05 0:43 ` Brian Norris 2016-03-17 15:56 ` Arnd Bergmann 2016-03-17 15:56 ` Arnd Bergmann 2016-03-05 0:33 ` Arnd Bergmann 2016-03-05 0:33 ` Arnd Bergmann 2016-03-05 0:33 ` Arnd Bergmann 2016-03-07 16:43 ` Tony Lindgren 2016-03-07 16:43 ` Tony Lindgren
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.