From: Zou Nan hai <nanhai.zou@intel.com>
To: "Zhang, Yanmin" <yanmin.zhang@intel.com>
Cc: Andi Kleen <ak@suse.de>, "Luck, Tony" <tony.luck@intel.com>,
LKML <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@osdl.org>,
"Pallipadi, Venkatesh" <venkatesh.pallipadi@intel.com>
Subject: RE: [Patch] Move swiotlb_init early on X86_64
Date: 03 Mar 2006 07:35:29 +0800 [thread overview]
Message-ID: <1141342529.2537.11.camel@linux-znh> (raw)
In-Reply-To: <117E3EB5059E4E48ADFF2822933287A441C94D@pdsmsx404>
On Thu, 2006-03-02 at 17:09, Zhang, Yanmin wrote:
> >>-----Original Message-----
> >>From: linux-kernel-owner@vger.kernel.org [mailto:linux-kernel-owner@vger.kernel.org] On Behalf Of Zou Nan hai
> >>Sent: 2006年3月2日 12:33
> >>
> >>Really, then how about the following patch?
> >>
> >>Let normal bootmem allocator go above 4G first.
> >>This will save more memory with address less than 4G.
> >>
> >>Signed-off-by: Zou Nan hai <nanhai.zou@intel.com>
> >>
> >>--- linux-2.6.16-rc5/mm/bootmem.c 2006-03-03 08:31:52.000000000 +0800
> >>+++ b/mm/bootmem.c 2006-03-03 09:05:17.000000000 +0800
> >>@@ -381,16 +381,24 @@ unsigned long __init free_all_bootmem (v
> >> return(free_all_bootmem_core(NODE_DATA(0)));
> >> }
> >>
> >>+#define LOW32LIMIT 0xffffffff
> >>+
> >> void * __init __alloc_bootmem(unsigned long size, unsigned long align, unsigned long goal)
> >> {
> >> pg_data_t *pgdat = pgdat_list;
> >> void *ptr;
> >>
> >>+ if (goal < LOW32LIMIT) {
> On i386, above is always true.
>
>
Ok, I modified the patch.
On single node SMP System with large physical memory,
allocation from bootmem allocator like memmap and vfs_cache
may eat up usable memory under 4G, then software I/O TLB will not be able to allocate bounce buffer.
This patch modify the bootmem allocator,
let normal bootmem allocation on 64 bit system first go above 4G
address.
Signed-off-by: Zou Nan hai <nanhai.zou@intel.com>
--- linux-2.6.16-rc5/mm/bootmem.c 2006-03-03 08:31:52.000000000 +0800
+++ b/mm/bootmem.c 2006-03-04 03:48:55.000000000 +0800
@@ -381,16 +381,25 @@ unsigned long __init free_all_bootmem (v
return(free_all_bootmem_core(NODE_DATA(0)));
}
+#define LOW32LIMIT 0xffffffff
+
void * __init __alloc_bootmem(unsigned long size, unsigned long align, unsigned long goal)
{
pg_data_t *pgdat = pgdat_list;
void *ptr;
+#if (BITS_PER_LONG == 64)
+ if (goal < LOW32LIMIT) {
+ for_each_pgdat(pgdat)
+ if ((ptr = __alloc_bootmem_core(pgdat->bdata, size,
+ align, LOW32LIMIT, 0)))
+ return(ptr);
+ }
+#endif
for_each_pgdat(pgdat)
if ((ptr = __alloc_bootmem_core(pgdat->bdata, size,
align, goal, 0)))
return(ptr);
-
/*
* Whoops, we cannot satisfy the allocation request.
*/
@@ -404,6 +413,14 @@ void * __init __alloc_bootmem_node(pg_da
unsigned long goal)
{
void *ptr;
+#if (BITS_PER_LONG == 64)
+ if (goal < LOW32LIMIT) {
+ ptr = __alloc_bootmem_core(pgdat->bdata, size, align,
+ LOW32LIMIT, 0);
+ if (ptr)
+ return (ptr);
+ }
+#endif
ptr = __alloc_bootmem_core(pgdat->bdata, size, align, goal, 0);
if (ptr)
@@ -412,7 +429,6 @@ void * __init __alloc_bootmem_node(pg_da
return __alloc_bootmem(size, align, goal);
}
-#define LOW32LIMIT 0xffffffff
void * __init __alloc_bootmem_low(unsigned long size, unsigned long align, unsigned long goal)
{
next prev parent reply other threads:[~2006-03-03 1:16 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-02 9:09 [Patch] Move swiotlb_init early on X86_64 Zhang, Yanmin
2006-03-02 23:35 ` Zou Nan hai [this message]
2006-03-03 1:32 ` Andi Kleen
-- strict thread matches above, loose matches on Subject: below --
2006-03-03 1:59 Pallipadi, Venkatesh
2006-03-01 1:10 Zou Nan hai
2006-03-02 4:15 ` Tony Luck
2006-03-02 4:30 ` Andi Kleen
2006-03-02 4:33 ` Zou Nan hai
2006-03-07 8:39 ` Andi Kleen
2006-03-07 23:23 ` Zou Nan hai
2006-03-08 9:33 ` Andi Kleen
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=1141342529.2537.11.camel@linux-znh \
--to=nanhai.zou@intel.com \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tony.luck@intel.com \
--cc=venkatesh.pallipadi@intel.com \
--cc=yanmin.zhang@intel.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