* [PATCH] x86: reuse the boot-time mappings of fixed_addresses
@ 2009-08-23 2:35 Xiao Guangrong
2009-08-29 11:00 ` Ingo Molnar
0 siblings, 1 reply; 9+ messages in thread
From: Xiao Guangrong @ 2009-08-23 2:35 UTC (permalink / raw)
To: Andrew Morton
Cc: Ingo Molnar, H. Peter Anvin, Rusty Russell, Jens Axboe,
Xiao Guangrong, LKML, linux-mm, x86
From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Some fixed_addresses items are only used when system boot, after
boot, they are free but no way to use, like early ioremap area.
They are wasted for us, we can reuse them after system boot.
In this patch, we put them in permanent kmap's area and expand
vmalloc's address range. In boot time, reserve them in
permanent_kmaps_init() to avoid multiple used, after system boot,
we unreserved them then user can use it.
Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
---
arch/x86/include/asm/fixmap.h | 2 ++
arch/x86/include/asm/pgtable_32_types.h | 4 ++--
arch/x86/mm/init_32.c | 8 ++++++++
include/linux/highmem.h | 2 ++
mm/highmem.c | 26 ++++++++++++++++++++++++++
5 files changed, 40 insertions(+), 2 deletions(-)
diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h
index 7b2d71d..604f135 100644
--- a/arch/x86/include/asm/fixmap.h
+++ b/arch/x86/include/asm/fixmap.h
@@ -142,6 +142,8 @@ extern void reserve_top_address(unsigned long reserve);
#define FIXADDR_BOOT_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE)
#define FIXADDR_BOOT_START (FIXADDR_TOP - FIXADDR_BOOT_SIZE)
+#define FIXMAP_REUSE (__end_of_fixed_addresses - \
+ __end_of_permanent_fixed_addresses)
extern int fixmaps_set;
diff --git a/arch/x86/include/asm/pgtable_32_types.h b/arch/x86/include/asm/pgtable_32_types.h
index 5e67c15..328b8af 100644
--- a/arch/x86/include/asm/pgtable_32_types.h
+++ b/arch/x86/include/asm/pgtable_32_types.h
@@ -37,8 +37,8 @@ extern bool __vmalloc_start_set; /* set once high_memory is set */
#define LAST_PKMAP 1024
#endif
-#define PKMAP_BASE ((FIXADDR_BOOT_START - PAGE_SIZE * (LAST_PKMAP + 1)) \
- & PMD_MASK)
+#define PKMAP_BASE ((FIXADDR_BOOT_START - PAGE_SIZE * (LAST_PKMAP - \
+ FIXMAP_REUSE + 1)) & PMD_MASK)
#ifdef CONFIG_HIGHMEM
# define VMALLOC_END (PKMAP_BASE - 2 * PAGE_SIZE)
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
index 3cd7711..595e485 100644
--- a/arch/x86/mm/init_32.c
+++ b/arch/x86/mm/init_32.c
@@ -410,8 +410,16 @@ static void __init permanent_kmaps_init(pgd_t *pgd_base)
pmd = pmd_offset(pud, vaddr);
pte = pte_offset_kernel(pmd, vaddr);
pkmap_page_table = pte;
+ kmaps_reserve(LAST_PKMAP-FIXMAP_REUSE, LAST_PKMAP-1);
}
+static int __init permanent_kmaps_unreserve(void)
+{
+ kmaps_unreserve(LAST_PKMAP-FIXMAP_REUSE, LAST_PKMAP-1);
+ return 0;
+}
+late_initcall(permanent_kmaps_unreserve);
+
static void __init add_one_highpage_init(struct page *page, int pfn)
{
ClearPageReserved(page);
diff --git a/include/linux/highmem.h b/include/linux/highmem.h
index 211ff44..984c4c9 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
@@ -41,6 +41,8 @@ unsigned int nr_free_highpages(void);
extern unsigned long totalhigh_pages;
void kmap_flush_unused(void);
+void kmaps_reserve(int start, int end);
+void kmaps_unreserve(int start, int end);
#else /* CONFIG_HIGHMEM */
diff --git a/mm/highmem.c b/mm/highmem.c
index 25878cc..a481fa7 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -85,6 +85,32 @@ static DECLARE_WAIT_QUEUE_HEAD(pkmap_map_wait);
do { spin_unlock(&kmap_lock); (void)(flags); } while (0)
#endif
+void kmaps_reserve(int start, int end)
+{
+ int i;
+
+ lock_kmap();
+ for (i = start; i <= end; i++) {
+ BUG_ON(pkmap_count[i]);
+ pkmap_count[i] = -1;
+ }
+ unlock_kmap();
+}
+
+void kmaps_unreserve(int start, int end)
+{
+ int i;
+
+ lock_kmap();
+ for (i = start; i <= end; i++) {
+ BUG_ON(pkmap_count[i] != -1);
+ pkmap_count[i] = 0;
+ }
+
+ flush_tlb_kernel_range(PKMAP_ADDR(start), PKMAP_ADDR(end));
+ unlock_kmap();
+}
+
static void flush_all_zero_pkmaps(void)
{
int i;
--
1.6.0.4
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH] x86: reuse the boot-time mappings of fixed_addresses
2009-08-23 2:35 [PATCH] x86: reuse the boot-time mappings of fixed_addresses Xiao Guangrong
@ 2009-08-29 11:00 ` Ingo Molnar
2009-08-29 18:16 ` H. Peter Anvin
0 siblings, 1 reply; 9+ messages in thread
From: Ingo Molnar @ 2009-08-29 11:00 UTC (permalink / raw)
To: Xiao Guangrong
Cc: Andrew Morton, H. Peter Anvin, Rusty Russell, Jens Axboe,
Xiao Guangrong, LKML, linux-mm, x86, Jeremy Fitzhardinge,
Thomas Gleixner
* Xiao Guangrong <ericxiao.gr@gmail.com> wrote:
> From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
>
> Some fixed_addresses items are only used when system boot, after
> boot, they are free but no way to use, like early ioremap area.
> They are wasted for us, we can reuse them after system boot.
>
> In this patch, we put them in permanent kmap's area and expand
> vmalloc's address range. In boot time, reserve them in
> permanent_kmaps_init() to avoid multiple used, after system boot,
> we unreserved them then user can use it.
>
> Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
> ---
> arch/x86/include/asm/fixmap.h | 2 ++
> arch/x86/include/asm/pgtable_32_types.h | 4 ++--
> arch/x86/mm/init_32.c | 8 ++++++++
> include/linux/highmem.h | 2 ++
> mm/highmem.c | 26 ++++++++++++++++++++++++++
> 5 files changed, 40 insertions(+), 2 deletions(-)
I'm wondering, how much space do we save this way, on a typical
bootup on a typical PC?
Ingo
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] x86: reuse the boot-time mappings of fixed_addresses
2009-08-29 11:00 ` Ingo Molnar
@ 2009-08-29 18:16 ` H. Peter Anvin
2009-08-31 8:26 ` Ingo Molnar
0 siblings, 1 reply; 9+ messages in thread
From: H. Peter Anvin @ 2009-08-29 18:16 UTC (permalink / raw)
To: Ingo Molnar
Cc: Xiao Guangrong, Andrew Morton, Rusty Russell, Jens Axboe,
Xiao Guangrong, LKML, linux-mm, x86, Jeremy Fitzhardinge,
Thomas Gleixner
Ingo Molnar wrote:
> * Xiao Guangrong <ericxiao.gr@gmail.com> wrote:
>
>> From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
>>
>> Some fixed_addresses items are only used when system boot, after
>> boot, they are free but no way to use, like early ioremap area.
>> They are wasted for us, we can reuse them after system boot.
>>
>> In this patch, we put them in permanent kmap's area and expand
>> vmalloc's address range. In boot time, reserve them in
>> permanent_kmaps_init() to avoid multiple used, after system boot,
>> we unreserved them then user can use it.
>>
>> Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
>> ---
>> arch/x86/include/asm/fixmap.h | 2 ++
>> arch/x86/include/asm/pgtable_32_types.h | 4 ++--
>> arch/x86/mm/init_32.c | 8 ++++++++
>> include/linux/highmem.h | 2 ++
>> mm/highmem.c | 26 ++++++++++++++++++++++++++
>> 5 files changed, 40 insertions(+), 2 deletions(-)
>
> I'm wondering, how much space do we save this way, on a typical
> bootup on a typical PC?
>
Not a huge lot... a few dozen pages.
-hpa
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] x86: reuse the boot-time mappings of fixed_addresses
2009-08-29 18:16 ` H. Peter Anvin
@ 2009-08-31 8:26 ` Ingo Molnar
2009-09-01 0:29 ` Jeremy Fitzhardinge
0 siblings, 1 reply; 9+ messages in thread
From: Ingo Molnar @ 2009-08-31 8:26 UTC (permalink / raw)
To: H. Peter Anvin
Cc: Xiao Guangrong, Andrew Morton, Rusty Russell, Jens Axboe,
Xiao Guangrong, LKML, linux-mm, x86, Jeremy Fitzhardinge,
Thomas Gleixner
* H. Peter Anvin <hpa@zytor.com> wrote:
> Ingo Molnar wrote:
>> * Xiao Guangrong <ericxiao.gr@gmail.com> wrote:
>>
>>> From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
>>>
>>> Some fixed_addresses items are only used when system boot, after
>>> boot, they are free but no way to use, like early ioremap area. They
>>> are wasted for us, we can reuse them after system boot.
>>>
>>> In this patch, we put them in permanent kmap's area and expand
>>> vmalloc's address range. In boot time, reserve them in
>>> permanent_kmaps_init() to avoid multiple used, after system boot, we
>>> unreserved them then user can use it.
>>>
>>> Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
>>> ---
>>> arch/x86/include/asm/fixmap.h | 2 ++
>>> arch/x86/include/asm/pgtable_32_types.h | 4 ++--
>>> arch/x86/mm/init_32.c | 8 ++++++++
>>> include/linux/highmem.h | 2 ++
>>> mm/highmem.c | 26 ++++++++++++++++++++++++++
>>> 5 files changed, 40 insertions(+), 2 deletions(-)
>>
>> I'm wondering, how much space do we save this way, on a typical bootup
>> on a typical PC?
>>
>
> Not a huge lot... a few dozen pages.
I guess it's still worth doing - what do you think?
Ingo
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] x86: reuse the boot-time mappings of fixed_addresses
2009-08-31 8:26 ` Ingo Molnar
@ 2009-09-01 0:29 ` Jeremy Fitzhardinge
2009-09-04 7:33 ` Ingo Molnar
0 siblings, 1 reply; 9+ messages in thread
From: Jeremy Fitzhardinge @ 2009-09-01 0:29 UTC (permalink / raw)
To: Ingo Molnar
Cc: H. Peter Anvin, Xiao Guangrong, Andrew Morton, Rusty Russell,
Jens Axboe, Xiao Guangrong, LKML, linux-mm, x86, Thomas Gleixner
On 08/31/09 01:26, Ingo Molnar wrote:
>>> I'm wondering, how much space do we save this way, on a typical bootup
>>> on a typical PC?
>>>
>>>
>> Not a huge lot... a few dozen pages.
>>
> I guess it's still worth doing - what do you think?
>
It hardly seems worth it, but I guess it isn't much code. Will having
an apparent overlap of vmalloc and fixmap spaces confuse anything?
J
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH] x86: reuse the boot-time mappings of fixed_addresses
2009-09-01 0:29 ` Jeremy Fitzhardinge
@ 2009-09-04 7:33 ` Ingo Molnar
2009-09-04 15:47 ` Jeremy Fitzhardinge
0 siblings, 1 reply; 9+ messages in thread
From: Ingo Molnar @ 2009-09-04 7:33 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: H. Peter Anvin, Xiao Guangrong, Andrew Morton, Rusty Russell,
Jens Axboe, Xiao Guangrong, LKML, linux-mm, x86, Thomas Gleixner
* Jeremy Fitzhardinge <jeremy@goop.org> wrote:
> On 08/31/09 01:26, Ingo Molnar wrote:
> >>> I'm wondering, how much space do we save this way, on a typical bootup
> >>> on a typical PC?
> >>>
> >>>
> >> Not a huge lot... a few dozen pages.
> >>
> > I guess it's still worth doing - what do you think?
> >
>
> It hardly seems worth it, but I guess it isn't much code. [...]
Ok, i understood this as an Acked-by from you - lemme know if that's
wrong ;-)
> [...] Will having an apparent overlap of vmalloc and fixmap
> spaces confuse anything?
At most perhaps some debug tools - kcrash & co.
Ingo
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] x86: reuse the boot-time mappings of fixed_addresses
2009-09-04 7:33 ` Ingo Molnar
@ 2009-09-04 15:47 ` Jeremy Fitzhardinge
2009-09-04 16:15 ` H. Peter Anvin
0 siblings, 1 reply; 9+ messages in thread
From: Jeremy Fitzhardinge @ 2009-09-04 15:47 UTC (permalink / raw)
To: Ingo Molnar
Cc: H. Peter Anvin, Xiao Guangrong, Andrew Morton, Rusty Russell,
Jens Axboe, Xiao Guangrong, LKML, linux-mm, x86, Thomas Gleixner
On 09/04/09 00:33, Ingo Molnar wrote:
>> It hardly seems worth it, but I guess it isn't much code. [...]
>>
> Ok, i understood this as an Acked-by from you - lemme know if that's
> wrong ;-)
>
That's a bit proactive. It's more "Meh-I-suppose-d-by: ".
J
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH] x86: reuse the boot-time mappings of fixed_addresses
2009-09-04 15:47 ` Jeremy Fitzhardinge
@ 2009-09-04 16:15 ` H. Peter Anvin
2009-09-04 18:55 ` Ingo Molnar
0 siblings, 1 reply; 9+ messages in thread
From: H. Peter Anvin @ 2009-09-04 16:15 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: Ingo Molnar, Xiao Guangrong, Andrew Morton, Rusty Russell,
Jens Axboe, Xiao Guangrong, LKML, linux-mm, x86, Thomas Gleixner
On 09/04/2009 08:47 AM, Jeremy Fitzhardinge wrote:
> On 09/04/09 00:33, Ingo Molnar wrote:
>>> It hardly seems worth it, but I guess it isn't much code. [...]
>>>
>> Ok, i understood this as an Acked-by from you - lemme know if that's
>> wrong ;-)
>>
>
> That's a bit proactive. It's more "Meh-I-suppose-d-by: ".
>
Pretty much. I suspect we'll have to undo this when we fix the fixmap,
since it will no longer be adjacent to the vmalloc range.
-hpa
--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] x86: reuse the boot-time mappings of fixed_addresses
2009-09-04 16:15 ` H. Peter Anvin
@ 2009-09-04 18:55 ` Ingo Molnar
0 siblings, 0 replies; 9+ messages in thread
From: Ingo Molnar @ 2009-09-04 18:55 UTC (permalink / raw)
To: H. Peter Anvin
Cc: Jeremy Fitzhardinge, Xiao Guangrong, Andrew Morton,
Rusty Russell, Jens Axboe, Xiao Guangrong, LKML, linux-mm, x86,
Thomas Gleixner
* H. Peter Anvin <hpa@zytor.com> wrote:
> On 09/04/2009 08:47 AM, Jeremy Fitzhardinge wrote:
> > On 09/04/09 00:33, Ingo Molnar wrote:
> >>> It hardly seems worth it, but I guess it isn't much code. [...]
> >>>
> >> Ok, i understood this as an Acked-by from you - lemme know if that's
> >> wrong ;-)
> >>
> >
> > That's a bit proactive. It's more "Meh-I-suppose-d-by: ".
> >
>
> Pretty much. I suspect we'll have to undo this when we fix the
> fixmap, since it will no longer be adjacent to the vmalloc range.
Ok, i've removed the patch from tip:x86/mm ...
Ingo
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2009-09-04 18:55 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-08-23 2:35 [PATCH] x86: reuse the boot-time mappings of fixed_addresses Xiao Guangrong
2009-08-29 11:00 ` Ingo Molnar
2009-08-29 18:16 ` H. Peter Anvin
2009-08-31 8:26 ` Ingo Molnar
2009-09-01 0:29 ` Jeremy Fitzhardinge
2009-09-04 7:33 ` Ingo Molnar
2009-09-04 15:47 ` Jeremy Fitzhardinge
2009-09-04 16:15 ` H. Peter Anvin
2009-09-04 18:55 ` Ingo Molnar
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox