[PATCH v7 0/4] arm: Fix DEBUG_LL for multi-platform kernels (without PL01X)
From: Daniel Thompson <hidden>
Date: 2014-07-14 09:06:18
Also in:
lkml
On 12/07/14 12:10, Russell King - ARM Linux wrote:
On Sat, Jul 12, 2014 at 11:16:02AM +0100, Russell King - ARM Linux wrote:quoted
On Mon, Jun 30, 2014 at 12:30:51PM +0100, Daniel Thompson wrote:quoted
This patchset removes some single-platform compatibility tricks related to DEBUG_LL and, as a result, allows multi_v7_defconfig derived builds to enable DEBUG_LL. Currently the user selected kbuild setting is ignored and the PL01X's DEBUG_LL stub is silently selected instead. This is a pain if your hardware doesn't have this cell, not least because it takes a little time to figure out that kbuild built the wrong code.I don't think this is quite right, because I'm now seeing randconfig finding build errors with this. We can end up with this configuration: CONFIG_DEBUG_LL=y CONFIG_DEBUG_LL_UART_NONE=y # CONFIG_DEBUG_ICEDCC is not set # CONFIG_DEBUG_SEMIHOSTING is not set # CONFIG_DEBUG_LL_UART_8250 is not set # CONFIG_DEBUG_LL_UART_PL01X is not set CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" # CONFIG_DEBUG_UART_8250 is not set which results in: arch/arm/kernel/debug.S:24:33: fatal error: mach/debug-macro.S: No such file or directory make[2]: *** [arch/arm/kernel/debug.o] Error 1 arch/arm/kernel/head.S:27:33: fatal error: mach/debug-macro.S: No such file or directory make[2]: *** [arch/arm/kernel/head.o] Error 1 Full config file: http://www.arm.linux.org.uk/developer/build/file.php?lid=11023
Thanks. I will look at this. Problem is that by making the build system honour the user choice we end up breaking the build when the user makes a bad choice (albeit a bad choice that they should not have been given in the first place). I guess the best fix is to get rid of CONFIG_DEBUG_LL_UART_NONE altogether.
Note that this also breaks building versatile as an oldconfig. I'll drop the patch series from my tree for the time being.
There is a difficult problem with oldconfig. Today DEBUG_LL only works on versatile defconfigs (and oldconfig upgrades from there) because although CONFIG_DEBUG_LL_UART_NONE is selected the build system does not honour this and behaves as though the use selected CONFIG_DEBUG_LL_UART_PL01X instead. Unfortunately if we fix this and remove CONFIG_DEBUG_LL_UART_NONE as proposed above then the oldconfig will silently select CONFIG_DEBUG_SEMIHOSTING. In other words I will be able to offer a patch so that oldconfig *compiles* but I don't know how to get it to preserve behaviour (or whether this matters). Hints about what to do would be very welcome. Daniel.