All of lore.kernel.org
 help / color / mirror / Atom feed
* [v3 PATCH] x86: let 'reservetop' functioning right
@ 2010-04-30 10:01 Liang Li
  2010-04-30 10:22 ` Ingo Molnar
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Liang Li @ 2010-04-30 10:01 UTC (permalink / raw)
  To: linux-kernel, mingo, akpm
  Cc: wangchen, tglx, hpa, yinghai, jeremy.fitzhardinge, konrad.wilk

When specify 'reservetop=0xbadc0de' kernel parameter, the kernel will
stop booting due to a early_ioremap bug that relate to commit 8827247ff.

The root cause of boot failure problem is the value of 'slot_virt[i]'
was initialized in setup_arch->early_ioremap_init. But later in
setup_arch, the function 'parse_early_param' will modify 'FIXADDR_TOP'
when 'reservetop=0xbadc0de' being specified.

The simplest fix might be use __fix_to_virt(idx0) to get updated value
of 'FIXADDR_TOP' in '__early_ioremap' instead of reference old value
from slot_virt[slot] directly.

Changelog since v0:

-v1: When reservetop being handled then FIXADDR_TOP get adjusted, Hence
check prev_map then re-initialize slot_virt and PMD based on new
FIXADDR_TOP.

-v2: place fixup_early_ioremap hence call early_ioremap_init in
reserve_top_address  to re-initialize slot_virt and corresponding PMD
when parse_reservertop

-v3: move fixup_early_ioremap out of reserve_top_address to make sure
other clients of reserve_top_address like xen/lguest won't broken

Signed-off-by: Liang Li <liang.li@windriver.com>
Cc: Wang Chen <wangchen@cn.fujitsu.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Yinghai Lu <yinghai@kernel.org>
Acked-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
Hi all,

Just resend the patch according to Ingo's demand.
Thanks.

 arch/x86/include/asm/io.h |    1 +
 arch/x86/mm/ioremap.c     |   15 +++++++++++++++
 arch/x86/mm/pgtable_32.c  |    1 +
 3 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
index a1dcfa3..30a3e97 100644
--- a/arch/x86/include/asm/io.h
+++ b/arch/x86/include/asm/io.h
@@ -347,6 +347,7 @@ extern void __iomem *early_ioremap(resource_size_t phys_addr,
 extern void __iomem *early_memremap(resource_size_t phys_addr,
 				    unsigned long size);
 extern void early_iounmap(void __iomem *addr, unsigned long size);
+extern void fixup_early_ioremap(void);
 
 #define IO_SPACE_LIMIT 0xffff
 
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index 5eb1ba7..e4ab706 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -448,6 +448,21 @@ static inline void __init early_clear_fixmap(enum fixed_addresses idx)
 static void __iomem *prev_map[FIX_BTMAPS_SLOTS] __initdata;
 static unsigned long prev_size[FIX_BTMAPS_SLOTS] __initdata;
 
+void __init fixup_early_ioremap(void)
+{
+	int i;
+	for (i = 0; i < FIX_BTMAPS_SLOTS; i++) {
+		if (prev_map[i])
+			break;
+	}
+
+	if (i < FIX_BTMAPS_SLOTS)
+		BUG_ON(1);
+
+	early_ioremap_init();
+	return;
+}
+
 static int __init check_early_ioremap_leak(void)
 {
 	int count = 0;
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c
index 1a8faf0..26eadaa 100644
--- a/arch/x86/mm/pgtable_32.c
+++ b/arch/x86/mm/pgtable_32.c
@@ -128,6 +128,7 @@ static int __init parse_reservetop(char *arg)
 
 	address = memparse(arg, &arg);
 	reserve_top_address(address);
+	fixup_early_ioremap();
 	return 0;
 }
 early_param("reservetop", parse_reservetop);
-- 
1.6.6


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [v3 PATCH] x86: let 'reservetop' functioning right
  2010-04-30 10:01 [v3 PATCH] x86: let 'reservetop' functioning right Liang Li
@ 2010-04-30 10:22 ` Ingo Molnar
  2010-04-30 15:34   ` Liang Li
  2010-04-30 10:52 ` [tip:x86/urgent] x86: Fix 'reservetop=' functionality tip-bot for Liang Li
  2010-05-03  7:44 ` [tip:x86/urgent] x86: Fix parse_reservetop() build failure on certain configs tip-bot for Ingo Molnar
  2 siblings, 1 reply; 5+ messages in thread
From: Ingo Molnar @ 2010-04-30 10:22 UTC (permalink / raw)
  To: Liang Li
  Cc: linux-kernel, akpm, wangchen, tglx, hpa, yinghai,
	jeremy.fitzhardinge, konrad.wilk


* Liang Li <liang.li@windriver.com> wrote:

> When specify 'reservetop=0xbadc0de' kernel parameter, the kernel will
> stop booting due to a early_ioremap bug that relate to commit 8827247ff.
> 
> The root cause of boot failure problem is the value of 'slot_virt[i]'
> was initialized in setup_arch->early_ioremap_init. But later in
> setup_arch, the function 'parse_early_param' will modify 'FIXADDR_TOP'
> when 'reservetop=0xbadc0de' being specified.
> 
> The simplest fix might be use __fix_to_virt(idx0) to get updated value
> of 'FIXADDR_TOP' in '__early_ioremap' instead of reference old value
> from slot_virt[slot] directly.
> 
> Changelog since v0:
> 
> -v1: When reservetop being handled then FIXADDR_TOP get adjusted, Hence
> check prev_map then re-initialize slot_virt and PMD based on new
> FIXADDR_TOP.
> 
> -v2: place fixup_early_ioremap hence call early_ioremap_init in
> reserve_top_address  to re-initialize slot_virt and corresponding PMD
> when parse_reservertop
> 
> -v3: move fixup_early_ioremap out of reserve_top_address to make sure
> other clients of reserve_top_address like xen/lguest won't broken
> 
> Signed-off-by: Liang Li <liang.li@windriver.com>
> Cc: Wang Chen <wangchen@cn.fujitsu.com>
> Cc: Ingo Molnar <mingo@elte.hu>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Acked-by: Yinghai Lu <yinghai@kernel.org>
> Acked-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
> Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> ---
> Hi all,
> 
> Just resend the patch according to Ingo's demand.
> Thanks.
> 
>  arch/x86/include/asm/io.h |    1 +
>  arch/x86/mm/ioremap.c     |   15 +++++++++++++++
>  arch/x86/mm/pgtable_32.c  |    1 +
>  3 files changed, 17 insertions(+), 0 deletions(-)

Applied, thanks. Note, i cleaned up the fixup_early_ioremap() code (and 
changed the BUG_ON to WARN_ON - we dont want to crash the box), mind double 
checking the end result? See the commit below.

	Ingo

----------------->
>From e67a807f3d9a82fa91817871f1c0e2e04da993b8 Mon Sep 17 00:00:00 2001
From: Liang Li <liang.li@windriver.com>
Date: Fri, 30 Apr 2010 18:01:51 +0800
Subject: [PATCH] x86: Fix 'reservetop=' functionality

When specifying the 'reservetop=0xbadc0de' kernel parameter,
the kernel will stop booting due to a early_ioremap bug that
relates to commit 8827247ff.

The root cause of boot failure problem is the value of
'slot_virt[i]' was initialized in setup_arch->early_ioremap_init().
But later in setup_arch, the function 'parse_early_param' will
modify 'FIXADDR_TOP' when 'reservetop=0xbadc0de' being specified.

The simplest fix might be use __fix_to_virt(idx0) to get updated
value of 'FIXADDR_TOP' in '__early_ioremap' instead of reference
old value from slot_virt[slot] directly.

Changelog since v0:

-v1: When reservetop being handled then FIXADDR_TOP get
     adjusted, Hence check prev_map then re-initialize slot_virt and
     PMD based on new FIXADDR_TOP.

-v2: place fixup_early_ioremap hence call early_ioremap_init in
     reserve_top_address  to re-initialize slot_virt and
     corresponding PMD when parse_reservertop

-v3: move fixup_early_ioremap out of reserve_top_address to make
     sure other clients of reserve_top_address like xen/lguest won't
     broken

Signed-off-by: Liang Li <liang.li@windriver.com>
Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Acked-by: Yinghai Lu <yinghai@kernel.org>
Acked-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Wang Chen <wangchen@cn.fujitsu.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
LKML-Reference: <1272621711-8683-1-git-send-email-liang.li@windriver.com>
[ fixed three small cleanliness details in fixup_early_ioremap() ]
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 arch/x86/include/asm/io.h |    1 +
 arch/x86/mm/ioremap.c     |   14 ++++++++++++++
 arch/x86/mm/pgtable_32.c  |    1 +
 3 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
index a1dcfa3..30a3e97 100644
--- a/arch/x86/include/asm/io.h
+++ b/arch/x86/include/asm/io.h
@@ -347,6 +347,7 @@ extern void __iomem *early_ioremap(resource_size_t phys_addr,
 extern void __iomem *early_memremap(resource_size_t phys_addr,
 				    unsigned long size);
 extern void early_iounmap(void __iomem *addr, unsigned long size);
+extern void fixup_early_ioremap(void);
 
 #define IO_SPACE_LIMIT 0xffff
 
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index 5eb1ba7..12e4d2d 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -448,6 +448,20 @@ static inline void __init early_clear_fixmap(enum fixed_addresses idx)
 static void __iomem *prev_map[FIX_BTMAPS_SLOTS] __initdata;
 static unsigned long prev_size[FIX_BTMAPS_SLOTS] __initdata;
 
+void __init fixup_early_ioremap(void)
+{
+	int i;
+
+	for (i = 0; i < FIX_BTMAPS_SLOTS; i++) {
+		if (prev_map[i]) {
+			WARN_ON(1);
+			break;
+		}
+	}
+
+	early_ioremap_init();
+}
+
 static int __init check_early_ioremap_leak(void)
 {
 	int count = 0;
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c
index 1a8faf0..26eadaa 100644
--- a/arch/x86/mm/pgtable_32.c
+++ b/arch/x86/mm/pgtable_32.c
@@ -128,6 +128,7 @@ static int __init parse_reservetop(char *arg)
 
 	address = memparse(arg, &arg);
 	reserve_top_address(address);
+	fixup_early_ioremap();
 	return 0;
 }
 early_param("reservetop", parse_reservetop);

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [tip:x86/urgent] x86: Fix 'reservetop=' functionality
  2010-04-30 10:01 [v3 PATCH] x86: let 'reservetop' functioning right Liang Li
  2010-04-30 10:22 ` Ingo Molnar
@ 2010-04-30 10:52 ` tip-bot for Liang Li
  2010-05-03  7:44 ` [tip:x86/urgent] x86: Fix parse_reservetop() build failure on certain configs tip-bot for Ingo Molnar
  2 siblings, 0 replies; 5+ messages in thread
From: tip-bot for Liang Li @ 2010-04-30 10:52 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, hpa, mingo, yinghai, konrad.wilk, liang.li,
	wangchen, jeremy.fitzhardinge, akpm, tglx, mingo

Commit-ID:  e67a807f3d9a82fa91817871f1c0e2e04da993b8
Gitweb:     http://git.kernel.org/tip/e67a807f3d9a82fa91817871f1c0e2e04da993b8
Author:     Liang Li <liang.li@windriver.com>
AuthorDate: Fri, 30 Apr 2010 18:01:51 +0800
Committer:  Ingo Molnar <mingo@elte.hu>
CommitDate: Fri, 30 Apr 2010 12:19:53 +0200

x86: Fix 'reservetop=' functionality

When specifying the 'reservetop=0xbadc0de' kernel parameter,
the kernel will stop booting due to a early_ioremap bug that
relates to commit 8827247ff.

The root cause of boot failure problem is the value of
'slot_virt[i]' was initialized in setup_arch->early_ioremap_init().
But later in setup_arch, the function 'parse_early_param' will
modify 'FIXADDR_TOP' when 'reservetop=0xbadc0de' being specified.

The simplest fix might be use __fix_to_virt(idx0) to get updated
value of 'FIXADDR_TOP' in '__early_ioremap' instead of reference
old value from slot_virt[slot] directly.

Changelog since v0:

-v1: When reservetop being handled then FIXADDR_TOP get
     adjusted, Hence check prev_map then re-initialize slot_virt and
     PMD based on new FIXADDR_TOP.

-v2: place fixup_early_ioremap hence call early_ioremap_init in
     reserve_top_address  to re-initialize slot_virt and
     corresponding PMD when parse_reservertop

-v3: move fixup_early_ioremap out of reserve_top_address to make
     sure other clients of reserve_top_address like xen/lguest won't
     broken

Signed-off-by: Liang Li <liang.li@windriver.com>
Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Acked-by: Yinghai Lu <yinghai@kernel.org>
Acked-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Wang Chen <wangchen@cn.fujitsu.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
LKML-Reference: <1272621711-8683-1-git-send-email-liang.li@windriver.com>
[ fixed three small cleanliness details in fixup_early_ioremap() ]
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 arch/x86/include/asm/io.h |    1 +
 arch/x86/mm/ioremap.c     |   14 ++++++++++++++
 arch/x86/mm/pgtable_32.c  |    1 +
 3 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
index a1dcfa3..30a3e97 100644
--- a/arch/x86/include/asm/io.h
+++ b/arch/x86/include/asm/io.h
@@ -347,6 +347,7 @@ extern void __iomem *early_ioremap(resource_size_t phys_addr,
 extern void __iomem *early_memremap(resource_size_t phys_addr,
 				    unsigned long size);
 extern void early_iounmap(void __iomem *addr, unsigned long size);
+extern void fixup_early_ioremap(void);
 
 #define IO_SPACE_LIMIT 0xffff
 
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index 5eb1ba7..12e4d2d 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -448,6 +448,20 @@ static inline void __init early_clear_fixmap(enum fixed_addresses idx)
 static void __iomem *prev_map[FIX_BTMAPS_SLOTS] __initdata;
 static unsigned long prev_size[FIX_BTMAPS_SLOTS] __initdata;
 
+void __init fixup_early_ioremap(void)
+{
+	int i;
+
+	for (i = 0; i < FIX_BTMAPS_SLOTS; i++) {
+		if (prev_map[i]) {
+			WARN_ON(1);
+			break;
+		}
+	}
+
+	early_ioremap_init();
+}
+
 static int __init check_early_ioremap_leak(void)
 {
 	int count = 0;
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c
index 1a8faf0..26eadaa 100644
--- a/arch/x86/mm/pgtable_32.c
+++ b/arch/x86/mm/pgtable_32.c
@@ -128,6 +128,7 @@ static int __init parse_reservetop(char *arg)
 
 	address = memparse(arg, &arg);
 	reserve_top_address(address);
+	fixup_early_ioremap();
 	return 0;
 }
 early_param("reservetop", parse_reservetop);

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [v3 PATCH] x86: let 'reservetop' functioning right
  2010-04-30 10:22 ` Ingo Molnar
@ 2010-04-30 15:34   ` Liang Li
  0 siblings, 0 replies; 5+ messages in thread
From: Liang Li @ 2010-04-30 15:34 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, akpm, wangchen, tglx, hpa, yinghai,
	jeremy.fitzhardinge, konrad.wilk

On Fri, Apr 30, 2010 at 12:22:05PM +0200, Ingo Molnar wrote:
> 
> * Liang Li <liang.li@windriver.com> wrote:
> 
> > When specify 'reservetop=0xbadc0de' kernel parameter, the kernel will
> > stop booting due to a early_ioremap bug that relate to commit 8827247ff.
> > 
> > The root cause of boot failure problem is the value of 'slot_virt[i]'
> > was initialized in setup_arch->early_ioremap_init. But later in
> > setup_arch, the function 'parse_early_param' will modify 'FIXADDR_TOP'
> > when 'reservetop=0xbadc0de' being specified.
> > 
> > The simplest fix might be use __fix_to_virt(idx0) to get updated value
> > of 'FIXADDR_TOP' in '__early_ioremap' instead of reference old value
> > from slot_virt[slot] directly.
> > 
> > Changelog since v0:
> > 
> > -v1: When reservetop being handled then FIXADDR_TOP get adjusted, Hence
> > check prev_map then re-initialize slot_virt and PMD based on new
> > FIXADDR_TOP.
> > 
> > -v2: place fixup_early_ioremap hence call early_ioremap_init in
> > reserve_top_address  to re-initialize slot_virt and corresponding PMD
> > when parse_reservertop
> > 
> > -v3: move fixup_early_ioremap out of reserve_top_address to make sure
> > other clients of reserve_top_address like xen/lguest won't broken
> > 
> > Signed-off-by: Liang Li <liang.li@windriver.com>
> > Cc: Wang Chen <wangchen@cn.fujitsu.com>
> > Cc: Ingo Molnar <mingo@elte.hu>
> > Cc: Thomas Gleixner <tglx@linutronix.de>
> > Cc: "H. Peter Anvin" <hpa@zytor.com>
> > Cc: Andrew Morton <akpm@linux-foundation.org>
> > Acked-by: Yinghai Lu <yinghai@kernel.org>
> > Acked-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
> > Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> > ---
> > Hi all,
> > 
> > Just resend the patch according to Ingo's demand.
> > Thanks.
> > 
> >  arch/x86/include/asm/io.h |    1 +
> >  arch/x86/mm/ioremap.c     |   15 +++++++++++++++
> >  arch/x86/mm/pgtable_32.c  |    1 +
> >  3 files changed, 17 insertions(+), 0 deletions(-)
> 
> Applied, thanks. Note, i cleaned up the fixup_early_ioremap() code (and 
> changed the BUG_ON to WARN_ON - we dont want to crash the box), mind double 
> checking the end result? See the commit below.

Checked. It is fine. Thanks. :)

Regards,
		-Liang Li

> 
> 	Ingo
> 
> ----------------->
> >From e67a807f3d9a82fa91817871f1c0e2e04da993b8 Mon Sep 17 00:00:00 2001
> From: Liang Li <liang.li@windriver.com>
> Date: Fri, 30 Apr 2010 18:01:51 +0800
> Subject: [PATCH] x86: Fix 'reservetop=' functionality
> 
> When specifying the 'reservetop=0xbadc0de' kernel parameter,
> the kernel will stop booting due to a early_ioremap bug that
> relates to commit 8827247ff.
> 
> The root cause of boot failure problem is the value of
> 'slot_virt[i]' was initialized in setup_arch->early_ioremap_init().
> But later in setup_arch, the function 'parse_early_param' will
> modify 'FIXADDR_TOP' when 'reservetop=0xbadc0de' being specified.
> 
> The simplest fix might be use __fix_to_virt(idx0) to get updated
> value of 'FIXADDR_TOP' in '__early_ioremap' instead of reference
> old value from slot_virt[slot] directly.
> 
> Changelog since v0:
> 
> -v1: When reservetop being handled then FIXADDR_TOP get
>      adjusted, Hence check prev_map then re-initialize slot_virt and
>      PMD based on new FIXADDR_TOP.
> 
> -v2: place fixup_early_ioremap hence call early_ioremap_init in
>      reserve_top_address  to re-initialize slot_virt and
>      corresponding PMD when parse_reservertop
> 
> -v3: move fixup_early_ioremap out of reserve_top_address to make
>      sure other clients of reserve_top_address like xen/lguest won't
>      broken
> 
> Signed-off-by: Liang Li <liang.li@windriver.com>
> Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> Acked-by: Yinghai Lu <yinghai@kernel.org>
> Acked-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
> Cc: Wang Chen <wangchen@cn.fujitsu.com>
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> LKML-Reference: <1272621711-8683-1-git-send-email-liang.li@windriver.com>
> [ fixed three small cleanliness details in fixup_early_ioremap() ]
> Signed-off-by: Ingo Molnar <mingo@elte.hu>
> ---
>  arch/x86/include/asm/io.h |    1 +
>  arch/x86/mm/ioremap.c     |   14 ++++++++++++++
>  arch/x86/mm/pgtable_32.c  |    1 +
>  3 files changed, 16 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
> index a1dcfa3..30a3e97 100644
> --- a/arch/x86/include/asm/io.h
> +++ b/arch/x86/include/asm/io.h
> @@ -347,6 +347,7 @@ extern void __iomem *early_ioremap(resource_size_t phys_addr,
>  extern void __iomem *early_memremap(resource_size_t phys_addr,
>  				    unsigned long size);
>  extern void early_iounmap(void __iomem *addr, unsigned long size);
> +extern void fixup_early_ioremap(void);
>  
>  #define IO_SPACE_LIMIT 0xffff
>  
> diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
> index 5eb1ba7..12e4d2d 100644
> --- a/arch/x86/mm/ioremap.c
> +++ b/arch/x86/mm/ioremap.c
> @@ -448,6 +448,20 @@ static inline void __init early_clear_fixmap(enum fixed_addresses idx)
>  static void __iomem *prev_map[FIX_BTMAPS_SLOTS] __initdata;
>  static unsigned long prev_size[FIX_BTMAPS_SLOTS] __initdata;
>  
> +void __init fixup_early_ioremap(void)
> +{
> +	int i;
> +
> +	for (i = 0; i < FIX_BTMAPS_SLOTS; i++) {
> +		if (prev_map[i]) {
> +			WARN_ON(1);
> +			break;
> +		}
> +	}
> +
> +	early_ioremap_init();
> +}
> +
>  static int __init check_early_ioremap_leak(void)
>  {
>  	int count = 0;
> diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c
> index 1a8faf0..26eadaa 100644
> --- a/arch/x86/mm/pgtable_32.c
> +++ b/arch/x86/mm/pgtable_32.c
> @@ -128,6 +128,7 @@ static int __init parse_reservetop(char *arg)
>  
>  	address = memparse(arg, &arg);
>  	reserve_top_address(address);
> +	fixup_early_ioremap();
>  	return 0;
>  }
>  early_param("reservetop", parse_reservetop);

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [tip:x86/urgent] x86: Fix parse_reservetop() build failure on certain configs
  2010-04-30 10:01 [v3 PATCH] x86: let 'reservetop' functioning right Liang Li
  2010-04-30 10:22 ` Ingo Molnar
  2010-04-30 10:52 ` [tip:x86/urgent] x86: Fix 'reservetop=' functionality tip-bot for Liang Li
@ 2010-05-03  7:44 ` tip-bot for Ingo Molnar
  2 siblings, 0 replies; 5+ messages in thread
From: tip-bot for Ingo Molnar @ 2010-05-03  7:44 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, hpa, mingo, yinghai, konrad.wilk, liang.li,
	wangchen, jeremy.fitzhardinge, akpm, tglx, mingo

Commit-ID:  56f0e74c9cf98941af700b61466648a2d06277bb
Gitweb:     http://git.kernel.org/tip/56f0e74c9cf98941af700b61466648a2d06277bb
Author:     Ingo Molnar <mingo@elte.hu>
AuthorDate: Mon, 3 May 2010 09:19:43 +0200
Committer:  Ingo Molnar <mingo@elte.hu>
CommitDate: Mon, 3 May 2010 09:22:19 +0200

x86: Fix parse_reservetop() build failure on certain configs

Commit e67a807 ("x86: Fix 'reservetop=' functionality") added a
fixup_early_ioremap() call to parse_reservetop() and declared it
in io.h.

But asm/io.h was only included indirectly - and on some configs
not at all, causing a build failure on those configs.

Cc: Liang Li <liang.li@windriver.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Wang Chen <wangchen@cn.fujitsu.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
LKML-Reference: <1272621711-8683-1-git-send-email-liang.li@windriver.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 arch/x86/mm/pgtable_32.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c
index 26eadaa..7928540 100644
--- a/arch/x86/mm/pgtable_32.c
+++ b/arch/x86/mm/pgtable_32.c
@@ -18,6 +18,7 @@
 #include <asm/e820.h>
 #include <asm/tlb.h>
 #include <asm/tlbflush.h>
+#include <asm/io.h>
 
 unsigned int __VMALLOC_RESERVE = 128 << 20;
 

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-05-03  7:44 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-30 10:01 [v3 PATCH] x86: let 'reservetop' functioning right Liang Li
2010-04-30 10:22 ` Ingo Molnar
2010-04-30 15:34   ` Liang Li
2010-04-30 10:52 ` [tip:x86/urgent] x86: Fix 'reservetop=' functionality tip-bot for Liang Li
2010-05-03  7:44 ` [tip:x86/urgent] x86: Fix parse_reservetop() build failure on certain configs tip-bot for Ingo Molnar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.