diff mbox series

[kvm-unit-tests,v3,1/5] lib: arm: Use UART address from generated config.h

Message ID 20190204134412.47877-2-alexandru.elisei@arm.com (mailing list archive)
State New, archived
Headers show
Series arm/arm64: Add support for running under kvmtool | expand

Commit Message

Alexandru Elisei Feb. 4, 2019, 1:44 p.m. UTC
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@arm.com>
---
 configure    | 17 +++++++++++++++++
 Makefile     |  2 +-
 lib/arm/io.c | 12 ++++++------
 .gitignore   |  1 +
 4 files changed, 25 insertions(+), 7 deletions(-)

Comments

Andrew Jones Feb. 4, 2019, 2 p.m. UTC | #1
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@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@redhat.com>
Alexandru Elisei Feb. 4, 2019, 2:17 p.m. UTC | #2
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@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@redhat.com>

Thank you for taking the time to review the patches!

What is my next step?
Andrew Jones Feb. 4, 2019, 2:40 p.m. UTC | #3
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@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@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.

drew
Alexandru Elisei Feb. 20, 2019, 1:14 p.m. UTC | #4
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@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@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
Vladimir Murzin Feb. 26, 2019, 9:29 a.m. UTC | #5
... snip

>>>
>>> What is my next step?
>>>
>> Wait for Paolo or Radim to merge :-)  I've added them to CC.
> 
> Hi,
> 
> Any updates?
> 

Pabl/Radim, these patches have been on a list for several weeks. It
looks to me that Alex addressed all points raised by Andrew.

Do you think they can be merged in foreseeable feature or you have
concerns about them? 


Cheers
Vladimir
diff mbox series

Patch

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