All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Ingo Molnar <mingo@elte.hu>
Cc: linux-kernel@vger.kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
	Xen Devel <xen-devel@lists.xensource.com>,
	Andi Kleen <andi@firstfloor.org>
Subject: [PATCH 6 of 7] x86: use early_ioremap in __acpi_map_table
Date: Sun, 07 Sep 2008 15:21:18 -0700	[thread overview]
Message-ID: <944fe7ea3da7707eb90f.1220826078@localhost> (raw)
In-Reply-To: <patchbomb.1220826072@localhost>

__acpi_map_table() effectively reimplements early_ioremap().  Rather
than have that duplication, just implement it in terms of
early_ioremap().

However, unlike early_ioremap(), __acpi_map_table() just maintains a
single mapping which gets replaced each call, and has no corresponding
unmap function.  Implement this by just removing the previous mapping
each time its called.  Unfortunately, this will leave a stray mapping
at the end.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
---
 arch/x86/kernel/acpi/boot.c |   27 +++++++--------------------
 include/asm-x86/acpi.h      |    3 ---
 include/asm-x86/fixmap_32.h |    4 ----
 include/asm-x86/fixmap_64.h |    4 ----
 4 files changed, 7 insertions(+), 31 deletions(-)

diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -121,8 +121,8 @@
  */
 char *__init __acpi_map_table(unsigned long phys, unsigned long size)
 {
-	unsigned long base, offset, mapped_size;
-	int idx;
+	static char *prev_map;
+	static unsigned long prev_size;
 
 	if (!phys || !size)
 		return NULL;
@@ -130,26 +130,13 @@
 	if (phys+size <= (max_low_pfn_mapped << PAGE_SHIFT))
 		return __va(phys);
 
-	offset = phys & (PAGE_SIZE - 1);
-	mapped_size = PAGE_SIZE - offset;
-	clear_fixmap(FIX_ACPI_END);
-	set_fixmap(FIX_ACPI_END, phys);
-	base = fix_to_virt(FIX_ACPI_END);
+	if (prev_map)
+		early_iounmap(prev_map, prev_size);
 
-	/*
-	 * Most cases can be covered by the below.
-	 */
-	idx = FIX_ACPI_END;
-	while (mapped_size < size) {
-		if (--idx < FIX_ACPI_BEGIN)
-			return NULL;	/* cannot handle this */
-		phys += PAGE_SIZE;
-		clear_fixmap(idx);
-		set_fixmap(idx, phys);
-		mapped_size += PAGE_SIZE;
-	}
+	prev_size = size;
+	prev_map = early_ioremap(phys, size);
 
-	return ((unsigned char *)base + offset);
+	return prev_map;
 }
 
 #ifdef CONFIG_PCI_MMCONFIG
diff --git a/include/asm-x86/acpi.h b/include/asm-x86/acpi.h
--- a/include/asm-x86/acpi.h
+++ b/include/asm-x86/acpi.h
@@ -102,9 +102,6 @@
 	acpi_noirq = 1;
 }
 
-/* Fixmap pages to reserve for ACPI boot-time tables (see fixmap.h) */
-#define FIX_ACPI_PAGES 4
-
 extern int acpi_gsi_to_irq(u32 gsi, unsigned int *irq);
 
 static inline void acpi_noirq_set(void) { acpi_noirq = 1; }
diff --git a/include/asm-x86/fixmap_32.h b/include/asm-x86/fixmap_32.h
--- a/include/asm-x86/fixmap_32.h
+++ b/include/asm-x86/fixmap_32.h
@@ -99,10 +99,6 @@
 			(__end_of_permanent_fixed_addresses & 255),
 	FIX_BTMAP_BEGIN = FIX_BTMAP_END + NR_FIX_BTMAPS*FIX_BTMAPS_NESTING - 1,
 	FIX_WP_TEST,
-#ifdef CONFIG_ACPI
-	FIX_ACPI_BEGIN,
-	FIX_ACPI_END = FIX_ACPI_BEGIN + FIX_ACPI_PAGES - 1,
-#endif
 #ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT
 	FIX_OHCI1394_BASE,
 #endif
diff --git a/include/asm-x86/fixmap_64.h b/include/asm-x86/fixmap_64.h
--- a/include/asm-x86/fixmap_64.h
+++ b/include/asm-x86/fixmap_64.h
@@ -50,10 +50,6 @@
 	FIX_PARAVIRT_BOOTMAP,
 #endif
 	__end_of_permanent_fixed_addresses,
-#ifdef CONFIG_ACPI
-	FIX_ACPI_BEGIN,
-	FIX_ACPI_END = FIX_ACPI_BEGIN + FIX_ACPI_PAGES - 1,
-#endif
 #ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT
 	FIX_OHCI1394_BASE,
 #endif



  parent reply	other threads:[~2008-09-07 22:26 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-07 22:21 [PATCH 0 of 7] x86: lay groundwork for Xen domain 0 support Jeremy Fitzhardinge
2008-09-07 22:21 ` [PATCH 1 of 7] x86: add _PAGE_IOMAP pte flag for IO mappings Jeremy Fitzhardinge
2008-09-09 13:32   ` Avi Kivity
2008-09-09 13:32     ` Avi Kivity
2008-09-09 14:47     ` Jeremy Fitzhardinge
2008-09-09 14:47       ` Jeremy Fitzhardinge
2008-09-09 14:56       ` Avi Kivity
2008-09-09 14:56         ` Avi Kivity
2008-09-09 15:29         ` [Xen-devel] " Keir Fraser
2008-09-09 15:29           ` Keir Fraser
2008-09-09 15:48           ` [Xen-devel] " Jeremy Fitzhardinge
2008-09-09 15:48             ` Jeremy Fitzhardinge
2008-09-09 16:05             ` [Xen-devel] " Keir Fraser
2008-09-09 16:05               ` Keir Fraser
2008-09-10  9:55         ` [Xen-devel] " Avi Kivity
2008-09-10  9:55           ` Avi Kivity
2008-09-10 16:38           ` [Xen-devel] " Jeremy Fitzhardinge
2008-09-10 16:38             ` Jeremy Fitzhardinge
2008-09-10 16:55             ` [Xen-devel] " Nick Piggin
2008-09-10 17:27               ` Jeremy Fitzhardinge
2008-09-07 22:21 ` [PATCH 2 of 7] x86: remove duplicate early_ioremap declarations Jeremy Fitzhardinge
2008-09-07 22:21   ` Jeremy Fitzhardinge
2008-09-07 22:21 ` [PATCH 3 of 7] x86: add early_memremap() Jeremy Fitzhardinge
2008-09-07 22:21   ` Jeremy Fitzhardinge
2008-09-07 22:21 ` [PATCH 4 of 7] x86: use early_memremap() in setup.c Jeremy Fitzhardinge
2008-09-07 22:21 ` [PATCH 5 of 7] x86-64: don't check for map replacement Jeremy Fitzhardinge
2008-09-07 22:21 ` Jeremy Fitzhardinge [this message]
2008-09-07 23:44   ` [PATCH 6 of 7] x86: use early_ioremap in __acpi_map_table Andi Kleen
2008-09-08  0:03     ` Jeremy Fitzhardinge
2008-09-08  0:03       ` Jeremy Fitzhardinge
2008-09-08 14:26       ` Ingo Molnar
2008-09-08 14:26         ` Ingo Molnar
2008-09-08 16:29         ` Jeremy Fitzhardinge
2008-09-08 16:29           ` Jeremy Fitzhardinge
2008-09-08 19:41         ` Jeremy Fitzhardinge
2008-09-08 19:41           ` Jeremy Fitzhardinge
2008-09-10 11:55         ` Ingo Molnar
2008-09-10 16:49           ` Jeremy Fitzhardinge
2008-09-11  7:33             ` Ingo Molnar
2008-09-11 18:36               ` Jeremy Fitzhardinge
2008-09-11 18:56                 ` Ingo Molnar
2008-09-11 20:34             ` Yinghai Lu
2008-09-11 21:07               ` Jeremy Fitzhardinge
2008-09-12  9:49                 ` Ingo Molnar
2008-09-12 17:31                   ` Yinghai Lu
     [not found]             ` <20080911125748.GA14698@elte.hu>
2008-09-11 21:33               ` [PATCH] acpi: remove final __acpi_map_table mapping before setting acpi_gbl_permanent_mmap Jeremy Fitzhardinge
2008-09-07 22:21 ` [PATCH 7 of 7] x86: always explicitly map acpi memory Jeremy Fitzhardinge
2008-09-07 23:35   ` [Xen-devel] " Yinghai Lu
2008-09-07 23:35     ` Yinghai Lu
2008-09-08  0:02     ` [Xen-devel] " Jeremy Fitzhardinge
2008-09-08  0:02       ` Jeremy Fitzhardinge
2008-09-08  0:14       ` [Xen-devel] " Yinghai Lu
2008-09-08  0:14         ` Yinghai Lu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=944fe7ea3da7707eb90f.1220826078@localhost \
    --to=jeremy@goop.org \
    --cc=andi@firstfloor.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.