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
next prev parent reply other threads:[~2008-09-07 22:26 UTC|newest]
Thread overview: 36+ 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 14:47 ` Jeremy Fitzhardinge
2008-09-09 14:56 ` Avi Kivity
2008-09-09 15:29 ` [Xen-devel] " Keir Fraser
2008-09-09 15:48 ` Jeremy Fitzhardinge
2008-09-09 16:05 ` Keir Fraser
2008-09-10 9:55 ` Avi Kivity
2008-09-10 16:38 ` Jeremy Fitzhardinge
2008-09-10 16:55 ` 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 ` [PATCH 3 of 7] x86: add early_memremap() 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 14:26 ` Ingo Molnar
2008-09-08 16:29 ` 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-08 0:02 ` Jeremy Fitzhardinge
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).