On Mon, Feb 04, 2019 at 02:17:05PM +0000, Alexandru Elisei wrote: > On 2/4/19 2:00 PM, Andrew Jones wrote: > > On Mon, Feb 04, 2019 at 01:44:08PM +0000, Alexandru Elisei wrote: > >> Generate lib/config.h when configuring kvm-unit-tests. The file is empty > >> for all architectures except for arm and arm64, where it is used to store > >> the UART base address. This removes the hardcoded address from lib/arm/io.c > >> and provides a mechanism for using different UART addresses in the future. > >> > >> Signed-off-by: Alexandru Elisei <alexandru.elisei@xxxxxxx> > >> --- > >> configure | 17 +++++++++++++++++ > >> Makefile | 2 +- > >> lib/arm/io.c | 12 ++++++------ > >> .gitignore | 1 + > >> 4 files changed, 25 insertions(+), 7 deletions(-) > >> > >> diff --git a/configure b/configure > >> index df8581e3a906..b4732c6c04e4 100755 > >> --- a/configure > >> +++ b/configure > >> @@ -198,3 +198,20 @@ ENVIRON_DEFAULT=$environ_default > >> ERRATATXT=errata.txt > >> U32_LONG_FMT=$u32_long > >> EOF > >> + > >> +cat <<EOF > lib/config.h > >> +#ifndef CONFIG_H > >> +#define CONFIG_H 1 > >> +/* > >> + * Generated file. DO NOT MODIFY. > >> + * > >> + */ > >> +EOF > >> +if [ "$arch" = "arm" ] || [ "$arch" = "arm64" ]; then > >> +cat <<EOF >> lib/config.h > >> + > >> +#define CONFIG_UART_EARLY_BASE 0x09000000 > >> + > >> +EOF > >> +fi > >> +echo "#endif" >> lib/config.h > >> diff --git a/Makefile b/Makefile > >> index e9f02272e156..643af05678ad 100644 > >> --- a/Makefile > >> +++ b/Makefile > >> @@ -115,7 +115,7 @@ libfdt_clean: > >> $(LIBFDT_objdir)/.*.d > >> > >> distclean: clean libfdt_clean > >> - $(RM) lib/asm config.mak $(TEST_DIR)-run msr.out cscope.* build-head > >> + $(RM) lib/asm lib/config.h config.mak $(TEST_DIR)-run msr.out cscope.* build-head > >> $(RM) -r tests logs logs.old > >> > >> cscope: cscope_dirs = lib lib/libfdt lib/linux $(TEST_DIR) $(ARCH_LIBDIRS) lib/asm-generic > >> diff --git a/lib/arm/io.c b/lib/arm/io.c > >> index d2c1a07c19ee..e84a5c89fcb1 100644 > >> --- a/lib/arm/io.c > >> +++ b/lib/arm/io.c > >> @@ -11,6 +11,7 @@ > >> #include <libcflat.h> > >> #include <devicetree.h> > >> #include <chr-testdev.h> > >> +#include <config.h> > >> #include <asm/spinlock.h> > >> #include <asm/io.h> > >> > >> @@ -18,6 +19,7 @@ > >> > >> extern void halt(int code); > >> > >> +static struct spinlock uart_lock; > >> /* > >> * Use this guess for the pl011 base in order to make an attempt at > >> * having earlier printf support. We'll overwrite it with the real > >> @@ -25,10 +27,8 @@ extern void halt(int code); > >> * the address we expect QEMU's mach-virt machine type to put in > >> * its generated device tree. > >> */ > >> -#define UART_EARLY_BASE 0x09000000UL > >> - > >> -static struct spinlock uart_lock; > >> -static volatile u8 *uart0_base = (u8 *)UART_EARLY_BASE; > >> +#define UART_EARLY_BASE (u8 *)(unsigned long)CONFIG_UART_EARLY_BASE > >> +static volatile u8 *uart0_base = UART_EARLY_BASE; > >> > >> static void uart0_init(void) > >> { > >> @@ -58,10 +58,10 @@ static void uart0_init(void) > >> > >> uart0_base = ioremap(base.addr, base.size); > >> > >> - if (uart0_base != (u8 *)UART_EARLY_BASE) { > >> + if (uart0_base != UART_EARLY_BASE) { > >> printf("WARNING: early print support may not work. " > >> "Found uart at %p, but early base is %p.\n", > >> - uart0_base, (u8 *)UART_EARLY_BASE); > >> + uart0_base, UART_EARLY_BASE); > >> } > >> } > >> > >> diff --git a/.gitignore b/.gitignore > >> index 2405a8087ae5..483f7c7a09ea 100644 > >> --- a/.gitignore > >> +++ b/.gitignore > >> @@ -10,6 +10,7 @@ patches > >> cscope.* > >> *.swp > >> /lib/asm > >> +/lib/config.h > >> /config.mak > >> /*-run > >> /msr.out > >> -- > >> 2.17.0 > >> > > Reviewed-by: Andrew Jones <drjones@xxxxxxxxxx> > > Thank you for taking the time to review the patches! > > What is my next step? > Wait for Paolo or Radim to merge :-) I've added them to CC. drew