On 2/4/19 2:40 PM, Andrew Jones wrote: > 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 at arm.com> >>>> --- >>>> 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 at redhat.com> >> 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. Hi, Any updates? Thank you, Alex > > drew