Message ID | 20231027182650.281405-7-jiaxun.yang@flygoat.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | None | expand |
Hi Jiaxun, kernel test robot noticed the following build warnings: [auto build test WARNING on tty/tty-testing] [also build test WARNING on tty/tty-next tty/tty-linus linus/master v6.6 next-20231030] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Jiaxun-Yang/MIPS-zboot-Add-UHI-semihosting-debug-print-support/20231028-032719 base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git tty-testing patch link: https://lore.kernel.org/r/20231027182650.281405-7-jiaxun.yang%40flygoat.com patch subject: [PATCH 2/3] MIPS: zboot: Add UHI semihosting debug print support config: mips-allmodconfig (https://download.01.org/0day-ci/archive/20231101/202311010521.7YJZiVJm-lkp@intel.com/config) compiler: mips-linux-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231101/202311010521.7YJZiVJm-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202311010521.7YJZiVJm-lkp@intel.com/ Note: functions only called from assembly code should be annotated with the asmlinkage attribute All warnings (new ones prefixed by >>): >> arch/mips/boot/compressed/dbg-uhi.c:8:6: warning: no previous prototype for 'puts' [-Wmissing-prototypes] 8 | void puts(const char *s) | ^~~~ vim +/puts +8 arch/mips/boot/compressed/dbg-uhi.c 7 > 8 void puts(const char *s)
diff --git a/arch/mips/Kconfig.debug b/arch/mips/Kconfig.debug index f4ae7900fcd3..1393bdb33f5c 100644 --- a/arch/mips/Kconfig.debug +++ b/arch/mips/Kconfig.debug @@ -98,6 +98,17 @@ config DEBUG_ZBOOT to reduce the kernel image size and speed up the booting procedure a little. +config ZBOOT_DBG_UHI + bool "Enable UHI debugging" + depends on DEBUG_ZBOOT + default n + help + Enable this option to debug compressed kernel support via UHI. + Logs will be outputed to the host machine via UHI Plog function. + You MUST connect system to a debugger with UHI semihosting support + or use a boot montor implemented UHI exceptions, otherwise the + system will hang. + config ZBOOT_INGENIC_UART int "UART to use for compressed kernel debugging" depends on DEBUG_ZBOOT && MACH_INGENIC_SOC diff --git a/arch/mips/boot/compressed/Makefile b/arch/mips/boot/compressed/Makefile index 6cc28173bee8..5667597c3584 100644 --- a/arch/mips/boot/compressed/Makefile +++ b/arch/mips/boot/compressed/Makefile @@ -45,6 +45,7 @@ vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o $(obj)/bswaps ifdef CONFIG_DEBUG_ZBOOT vmlinuzobjs-$(CONFIG_DEBUG_ZBOOT) += $(obj)/dbg.o +vmlinuzobjs-$(CONFIG_ZBOOT_DBG_UHI) += $(obj)/dbg-uhi.o vmlinuzobjs-$(CONFIG_SYS_SUPPORTS_ZBOOT_UART16550) += $(obj)/uart-16550.o vmlinuzobjs-$(CONFIG_SYS_SUPPORTS_ZBOOT_UART_PROM) += $(obj)/uart-prom.o vmlinuzobjs-$(CONFIG_MIPS_ALCHEMY) += $(obj)/uart-alchemy.o diff --git a/arch/mips/boot/compressed/dbg-uhi.c b/arch/mips/boot/compressed/dbg-uhi.c new file mode 100644 index 000000000000..7daa8de717b0 --- /dev/null +++ b/arch/mips/boot/compressed/dbg-uhi.c @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * zboot debug output for MIPS UHI semihosting + */ + +#include <asm/uhi.h> + +void puts(const char *s) +{ + uhi_plog(s, 0); +} diff --git a/arch/mips/boot/compressed/dbg.c b/arch/mips/boot/compressed/dbg.c index f6728a8fd1c3..7fa5242e2b7d 100644 --- a/arch/mips/boot/compressed/dbg.c +++ b/arch/mips/boot/compressed/dbg.c @@ -4,7 +4,7 @@ * * NOTE: putc() is board specific, if your board have a 16550 compatible uart, * please select SYS_SUPPORTS_ZBOOT_UART16550 for your machine. othewise, you - * need to implement your own putc(). + * need to implement your own putc() or puts(). */ #include <linux/compiler.h> #include <linux/types.h> @@ -13,7 +13,7 @@ void __weak putc(char c) { } -void puts(const char *s) +void __weak puts(const char *s) { char c; while ((c = *s++) != '\0') { diff --git a/arch/mips/boot/compressed/decompress.c b/arch/mips/boot/compressed/decompress.c index c5dd415254d3..f4e69dfe2923 100644 --- a/arch/mips/boot/compressed/decompress.c +++ b/arch/mips/boot/compressed/decompress.c @@ -17,6 +17,7 @@ #include <asm/addrspace.h> #include <asm/unaligned.h> +#include <asm/uhi.h> #include <asm-generic/vmlinux.lds.h> /* @@ -46,6 +47,9 @@ void error(char *x) puts(x); puts("\n\n -- System halted"); +#ifdef CONFIG_ZBOOT_DBG_UHI + uhi_bootfailure(0); +#endif while (1) ; /* Halt */ }
Support print debug message via MIPS UHI semihosting Plog functions. Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> --- arch/mips/Kconfig.debug | 11 +++++++++++ arch/mips/boot/compressed/Makefile | 1 + arch/mips/boot/compressed/dbg-uhi.c | 11 +++++++++++ arch/mips/boot/compressed/dbg.c | 4 ++-- arch/mips/boot/compressed/decompress.c | 4 ++++ 5 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 arch/mips/boot/compressed/dbg-uhi.c