[U-Boot] [PATCH] arm: fix missing exception handling

Commit 41623c9 'arm: move exception handling out of start.S files' missed some linker scripts. Hence, some boards no longer had exception handling linked since this commit. Restore the original behavior by adding the .vectors section to these linker scripts.
Signed-off-by: Benoît Thébaudeau benoit.thebaudeau.dev@gmail.com Cc: Albert ARIBAUD albert.u.boot@aribaud.net --- arch/arm/cpu/arm1136/u-boot-spl.lds | 1 + arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds | 1 + arch/arm/cpu/armv7/am33xx/u-boot-spl.lds | 1 + arch/arm/cpu/armv7/omap-common/u-boot-spl.lds | 1 + arch/arm/cpu/armv7/socfpga/u-boot-spl.lds | 1 + arch/arm/cpu/armv7/zynq/u-boot-spl.lds | 1 + arch/arm/cpu/at91-common/u-boot-spl.lds | 1 + board/Barix/ipam390/u-boot-spl-ipam390.lds | 1 + board/ait/cam_enc_4xx/u-boot-spl.lds | 1 + board/cirrus/edb93xx/u-boot.lds | 1 + board/davinci/da8xxevm/u-boot-spl-da850evm.lds | 1 + board/davinci/da8xxevm/u-boot-spl-hawk.lds | 1 + board/samsung/common/exynos-uboot-spl.lds | 1 + board/vpac270/u-boot-spl.lds | 1 + 14 files changed, 14 insertions(+)
diff --git a/arch/arm/cpu/arm1136/u-boot-spl.lds b/arch/arm/cpu/arm1136/u-boot-spl.lds index 0299902..97e4a8b 100644 --- a/arch/arm/cpu/arm1136/u-boot-spl.lds +++ b/arch/arm/cpu/arm1136/u-boot-spl.lds @@ -22,6 +22,7 @@ SECTIONS .text : { __start = .; + *(.vectors) arch/arm/cpu/arm1136/start.o (.text*) *(.text*) } >.sram diff --git a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds index f4bf8ac..bf2ac13 100644 --- a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds +++ b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds @@ -21,6 +21,7 @@ SECTIONS . = ALIGN(4); .text : { + *(.vectors) arch/arm/cpu/arm926ejs/mxs/start.o (.text*) *(.text*) } diff --git a/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds b/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds index b1c28c9..07cf267 100644 --- a/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds +++ b/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds @@ -22,6 +22,7 @@ SECTIONS .text : { __start = .; + *(.vectors) arch/arm/cpu/armv7/start.o (.text) *(.text*) } >.sram diff --git a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds index 745603d..ccd0c83 100644 --- a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds +++ b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds @@ -22,6 +22,7 @@ SECTIONS .text : { __start = .; + *(.vectors) arch/arm/cpu/armv7/start.o (.text*) *(.text*) } >.sram diff --git a/arch/arm/cpu/armv7/socfpga/u-boot-spl.lds b/arch/arm/cpu/armv7/socfpga/u-boot-spl.lds index 4282beb..db9bdad 100644 --- a/arch/arm/cpu/armv7/socfpga/u-boot-spl.lds +++ b/arch/arm/cpu/armv7/socfpga/u-boot-spl.lds @@ -16,6 +16,7 @@ SECTIONS . = ALIGN(4); .text : { + *(.vectors) arch/arm/cpu/armv7/start.o (.text*) *(.text*) } >.sdram diff --git a/arch/arm/cpu/armv7/zynq/u-boot-spl.lds b/arch/arm/cpu/armv7/zynq/u-boot-spl.lds index 0c4501e..0f2f756 100644 --- a/arch/arm/cpu/armv7/zynq/u-boot-spl.lds +++ b/arch/arm/cpu/armv7/zynq/u-boot-spl.lds @@ -22,6 +22,7 @@ SECTIONS .text : { __image_copy_start = .; + *(.vectors) CPUDIR/start.o (.text*) *(.text*) } > .sram diff --git a/arch/arm/cpu/at91-common/u-boot-spl.lds b/arch/arm/cpu/at91-common/u-boot-spl.lds index 57ac1eb..eccca43 100644 --- a/arch/arm/cpu/at91-common/u-boot-spl.lds +++ b/arch/arm/cpu/at91-common/u-boot-spl.lds @@ -25,6 +25,7 @@ SECTIONS .text : { __start = .; + *(.vectors) arch/arm/cpu/armv7/start.o (.text*) *(.text*) } >.sram diff --git a/board/Barix/ipam390/u-boot-spl-ipam390.lds b/board/Barix/ipam390/u-boot-spl-ipam390.lds index 8604696..5f290ec 100644 --- a/board/Barix/ipam390/u-boot-spl-ipam390.lds +++ b/board/Barix/ipam390/u-boot-spl-ipam390.lds @@ -22,6 +22,7 @@ SECTIONS .text : { __start = .; + *(.vectors) arch/arm/cpu/arm926ejs/start.o (.text*) *(.text*) } >.sram diff --git a/board/ait/cam_enc_4xx/u-boot-spl.lds b/board/ait/cam_enc_4xx/u-boot-spl.lds index c0d09ad..f5c19df 100644 --- a/board/ait/cam_enc_4xx/u-boot-spl.lds +++ b/board/ait/cam_enc_4xx/u-boot-spl.lds @@ -22,6 +22,7 @@ SECTIONS .text : { __start = .; + *(.vectors) arch/arm/cpu/arm926ejs/start.o (.text*) *(.text*) } >.sram diff --git a/board/cirrus/edb93xx/u-boot.lds b/board/cirrus/edb93xx/u-boot.lds index b0d892a..4aa7891 100644 --- a/board/cirrus/edb93xx/u-boot.lds +++ b/board/cirrus/edb93xx/u-boot.lds @@ -21,6 +21,7 @@ SECTIONS . = ALIGN(4); .text : { *(.__image_copy_start) + *(.vectors) arch/arm/cpu/arm920t/start.o (.text*) . = 0x1000;
diff --git a/board/davinci/da8xxevm/u-boot-spl-da850evm.lds b/board/davinci/da8xxevm/u-boot-spl-da850evm.lds index de21a13..ab4f50c 100644 --- a/board/davinci/da8xxevm/u-boot-spl-da850evm.lds +++ b/board/davinci/da8xxevm/u-boot-spl-da850evm.lds @@ -22,6 +22,7 @@ SECTIONS .text : { __start = .; + *(.vectors) arch/arm/cpu/arm926ejs/start.o (.text*) *(.text*) } >.sram diff --git a/board/davinci/da8xxevm/u-boot-spl-hawk.lds b/board/davinci/da8xxevm/u-boot-spl-hawk.lds index 299226b..682f268 100644 --- a/board/davinci/da8xxevm/u-boot-spl-hawk.lds +++ b/board/davinci/da8xxevm/u-boot-spl-hawk.lds @@ -18,6 +18,7 @@ SECTIONS . = ALIGN(4); .text : { + *(.vectors) arch/arm/cpu/arm926ejs/start.o (.text*) arch/arm/cpu/arm926ejs/davinci/built-in.o (.text*) drivers/mtd/nand/built-in.o (.text*) diff --git a/board/samsung/common/exynos-uboot-spl.lds b/board/samsung/common/exynos-uboot-spl.lds index b22f9e0..4a933c8 100644 --- a/board/samsung/common/exynos-uboot-spl.lds +++ b/board/samsung/common/exynos-uboot-spl.lds @@ -21,6 +21,7 @@ SECTIONS .text : { __start = .; + *(.vectors) arch/arm/cpu/armv7/start.o (.text*) *(.text*) } >.sram diff --git a/board/vpac270/u-boot-spl.lds b/board/vpac270/u-boot-spl.lds index 5dbf94e..a10ea71 100644 --- a/board/vpac270/u-boot-spl.lds +++ b/board/vpac270/u-boot-spl.lds @@ -19,6 +19,7 @@ SECTIONS . = CONFIG_SPL_TEXT_BASE; .text.0 : { + *(.vectors) arch/arm/cpu/pxa/start.o (.text*) arch/arm/lib/built-in.o (.text*) board/vpac270/built-in.o (.text*)

Benoît,
On Tue, Aug 19, 2014 at 8:35 PM, Benoît Thébaudeau benoit.thebaudeau.dev@gmail.com wrote:
Commit 41623c9 'arm: move exception handling out of start.S files' missed some linker scripts. Hence, some boards no longer had exception handling linked since this commit. Restore the original behavior by adding the .vectors section to these linker scripts.
Signed-off-by: Benoît Thébaudeau benoit.thebaudeau.dev@gmail.com Cc: Albert ARIBAUD albert.u.boot@aribaud.net
Does this really _fix_ exception handling for all of these boards (as your message subject states) or just restore the state before commit 41623c9? I believe exception handling has never worked for most of these boards, they don't use it. See the discussion in [1], in particular [2] and [3].
Regards, Christian
[1] http://marc.info/?t=140247105400001&r=1&w=2 [2] http://marc.info/?l=u-boot&m=140309659906074&w=2 [3] http://marc.info/?l=u-boot&m=140450616517545&w=2

Christian,
On Wed, Aug 20, 2014 at 9:21 AM, Christian Riesch christian.riesch@omicron.at wrote:
Benoît,
On Tue, Aug 19, 2014 at 8:35 PM, Benoît Thébaudeau benoit.thebaudeau.dev@gmail.com wrote:
Commit 41623c9 'arm: move exception handling out of start.S files' missed some linker scripts. Hence, some boards no longer had exception handling linked since this commit. Restore the original behavior by adding the .vectors section to these linker scripts.
Signed-off-by: Benoît Thébaudeau benoit.thebaudeau.dev@gmail.com Cc: Albert ARIBAUD albert.u.boot@aribaud.net
Does this really _fix_ exception handling for all of these boards (as your message subject states) or just restore the state before commit 41623c9? I believe exception handling has never worked for most of these boards, they don't use it. See the discussion in [1], in particular [2] and [3].
Regards, Christian
[1] http://marc.info/?t=140247105400001&r=1&w=2 [2] http://marc.info/?l=u-boot&m=140309659906074&w=2 [3] http://marc.info/?l=u-boot&m=140450616517545&w=2
The issue is that commit 41623c9 silently removed exception handling for many boards. Whether it was working or not for these boards before this commit is another issue. My patch only fixes _missing_ exception handling, not exception handling itself. I had discussed that with Albert here: http://lists.denx.de/pipermail/u-boot/2014-July/183073.html
What do you suggest? - Changing the wording? In which way? - Dropping some boards from this patch? Which ones? I think that there should be an explicit commit from the board maintainers doing that, rather than just commit 41623c9.
Regards, Benoît

Benoît,
On Wed, Aug 20, 2014 at 12:47 PM, Benoît Thébaudeau benoit.thebaudeau.dev@gmail.com wrote:
On Wed, Aug 20, 2014 at 9:21 AM, Christian Riesch christian.riesch@omicron.at wrote:
On Tue, Aug 19, 2014 at 8:35 PM, Benoît Thébaudeau benoit.thebaudeau.dev@gmail.com wrote:
Commit 41623c9 'arm: move exception handling out of start.S files' missed some linker scripts. Hence, some boards no longer had exception handling linked since this commit. Restore the original behavior by adding the .vectors section to these linker scripts.
Signed-off-by: Benoît Thébaudeau benoit.thebaudeau.dev@gmail.com Cc: Albert ARIBAUD albert.u.boot@aribaud.net
Does this really _fix_ exception handling for all of these boards (as your message subject states) or just restore the state before commit 41623c9? I believe exception handling has never worked for most of these boards, they don't use it. See the discussion in [1], in particular [2] and [3].
Regards, Christian
[1] http://marc.info/?t=140247105400001&r=1&w=2 [2] http://marc.info/?l=u-boot&m=140309659906074&w=2 [3] http://marc.info/?l=u-boot&m=140450616517545&w=2
The issue is that commit 41623c9 silently removed exception handling for many boards. Whether it was working or not for these boards before this commit is another issue. My patch only fixes _missing_ exception handling, not exception handling itself. I had discussed that with Albert here: http://lists.denx.de/pipermail/u-boot/2014-July/183073.html
Thanks for the pointer to the discussion.
What do you suggest?
- Changing the wording? In which way?
Yes, how about "Add missing .vectors section to linker scripts"? Regards, Christian

On Thu, Aug 21, 2014 at 8:36 AM, Christian Riesch christian.riesch@omicron.at wrote:
Benoît,
On Wed, Aug 20, 2014 at 12:47 PM, Benoît Thébaudeau benoit.thebaudeau.dev@gmail.com wrote:
On Wed, Aug 20, 2014 at 9:21 AM, Christian Riesch christian.riesch@omicron.at wrote:
On Tue, Aug 19, 2014 at 8:35 PM, Benoît Thébaudeau benoit.thebaudeau.dev@gmail.com wrote:
Commit 41623c9 'arm: move exception handling out of start.S files' missed some linker scripts. Hence, some boards no longer had exception handling linked since this commit. Restore the original behavior by adding the .vectors section to these linker scripts.
Signed-off-by: Benoît Thébaudeau benoit.thebaudeau.dev@gmail.com Cc: Albert ARIBAUD albert.u.boot@aribaud.net
Does this really _fix_ exception handling for all of these boards (as your message subject states) or just restore the state before commit 41623c9? I believe exception handling has never worked for most of these boards, they don't use it. See the discussion in [1], in particular [2] and [3].
Regards, Christian
[1] http://marc.info/?t=140247105400001&r=1&w=2 [2] http://marc.info/?l=u-boot&m=140309659906074&w=2 [3] http://marc.info/?l=u-boot&m=140450616517545&w=2
The issue is that commit 41623c9 silently removed exception handling for many boards. Whether it was working or not for these boards before this commit is another issue. My patch only fixes _missing_ exception handling, not exception handling itself. I had discussed that with Albert here: http://lists.denx.de/pipermail/u-boot/2014-July/183073.html
Thanks for the pointer to the discussion.
What do you suggest?
- Changing the wording? In which way?
Yes, how about "Add missing .vectors section to linker scripts"?
Superseded by: http://patchwork.ozlabs.org/patch/381971/
Benoît
participants (2)
-
Benoît Thébaudeau
-
Christian Riesch