[PATCH] x86/voyager: Switch voyager memory detection to early_ioremap.

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <linux-kernel@...>
Cc: Ian Campbell <ijc@...>, Thomas Gleixner <tglx@...>, Ingo Molnar <mingo@...>, H. Peter Anvin <hpa@...>, James Bottomley <James.Bottomley@...>, Eric W. Biederman <ebiederm@...>
Date: Saturday, January 19, 2008 - 12:08 pm

Extracted from an earlier patch by Eric Biederman.

Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
CC: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: Eric W. Biederman <ebiederm@xmission.com>
---
 arch/x86/mach-voyager/voyager_basic.c |   19 +++++++------------
 1 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/arch/x86/mach-voyager/voyager_basic.c b/arch/x86/mach-voyager/voyager_basic.c
index 6a949e4..ed41fd8 100644
--- a/arch/x86/mach-voyager/voyager_basic.c
+++ b/arch/x86/mach-voyager/voyager_basic.c
@@ -110,8 +110,9 @@ typedef struct ClickMap {
 	} Entry[CLICK_ENTRIES];
 } ClickMap_t;
 
-/* This routine is pretty much an awful hack to read the bios clickmap by
- * mapping it into page 0.  There are usually three regions in the map:
+/*
+ * This routine reads the bios clickmap.  There are usually three
+ * regions in the map:
  * 	Base Memory
  * 	Extended Memory
  *	zero length marker for end of map
@@ -125,7 +126,6 @@ int __init voyager_memory_detect(int region, __u32 * start, __u32 * length)
 	__u8 cmos[4];
 	ClickMap_t *map;
 	unsigned long map_addr;
-	unsigned long old;
 
 	if (region >= CLICK_ENTRIES) {
 		printk("Voyager: Illegal ClickMap region %d\n", region);
@@ -138,12 +138,8 @@ int __init voyager_memory_detect(int region, __u32 * start, __u32 * length)
 
 	map_addr = *(unsigned long *)cmos;
 
-	/* steal page 0 for this */
-	old = pg0[0];
-	pg0[0] = ((map_addr & PAGE_MASK) | _PAGE_RW | _PAGE_PRESENT);
-	local_flush_tlb();
-	/* now clear everything out but page 0 */
-	map = (ClickMap_t *) (map_addr & (~PAGE_MASK));
+	/* Setup a temporary mapping for the clickmap */
+	map = early_ioremap(map_addr, sizeof(*map));
 
 	/* zero length is the end of the clickmap */
 	if (map->Entry[region].Length != 0) {
@@ -152,9 +148,8 @@ int __init voyager_memory_detect(int region, __u32 * start, __u32 * length)
 		retval = 1;
 	}
 
-	/* replace the mapping */
-	pg0[0] = old;
-	local_flush_tlb();
+	/* undo the mapping */
+	early_iounmap(map, sizeof(*map));
 	return retval;
 }
 
-- 
1.5.3.8

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH] x86/voyager: Switch voyager memory detection to earl..., Ian Campbell, (Sat Jan 19, 12:08 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Jeremy Fitzhardinge, (Wed Jan 23, 9:06 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Jeremy Fitzhardinge, (Thu Jan 24, 6:35 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Jeremy Fitzhardinge, (Thu Jan 24, 6:58 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Jeremy Fitzhardinge, (Thu Jan 24, 7:40 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Rafael J. Wysocki, (Fri Jan 25, 6:02 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Rafael J. Wysocki, (Mon Jan 28, 1:02 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Rafael J. Wysocki, (Fri Feb 1, 10:28 am)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Rafael J. Wysocki, (Mon Jan 28, 11:25 am)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Rafael J. Wysocki, (Mon Jan 28, 4:26 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Jeremy Fitzhardinge, (Mon Jan 28, 4:44 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Rafael J. Wysocki, (Mon Jan 28, 4:50 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Rafael J. Wysocki, (Mon Jan 28, 6:02 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Rafael J. Wysocki, (Mon Jan 28, 4:59 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Jeremy Fitzhardinge, (Mon Jan 28, 4:03 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Rafael J. Wysocki, (Mon Jan 28, 4:28 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Eric W. Biederman, (Thu Jan 24, 10:16 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Rafael J. Wysocki, (Thu Jan 24, 8:46 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Jeremy Fitzhardinge, (Thu Jan 24, 7:51 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Jeremy Fitzhardinge, (Thu Jan 24, 8:11 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Jeremy Fitzhardinge, (Thu Jan 24, 8:31 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Eric W. Biederman, (Thu Jan 24, 10:56 pm)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Jeremy Fitzhardinge, (Fri Jan 25, 12:41 am)
Re: [PATCH] x86: Construct 32 bit boot time page tables in n..., Eric W. Biederman, (Fri Jan 25, 7:07 am)
[PATCH] x86: make nx_enabled conditional on CONFIG_X86_PAE, Harvey Harrison, (Tue Jan 22, 5:00 pm)