From: Ravikiran G Thirumalai <kiran@scalex86.org>
To: Yasunori Goto <y-goto@jp.fujitsu.com>
Cc: Linus Torvalds <torvalds@osdl.org>,
Muli Ben-Yehuda <mulix@mulix.org>, Andi Kleen <ak@suse.de>,
discuss@x86-64.org, Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org, tglx@linutronix.de,
shai@scalex86.org, clameter@engr.sgi.com, muli@il.ibm.com,
jdmason@us.ibm.com
Subject: Re: [discuss] Re: x86_64: 2.6.14-rc4 swiotlb broken
Date: Mon, 17 Oct 2005 23:13:25 -0700 [thread overview]
Message-ID: <20051018061325.GB3692@localhost.localdomain> (raw)
In-Reply-To: <20051018125342.6799.Y-GOTO@jp.fujitsu.com>
On Tue, Oct 18, 2005 at 01:28:20PM +0900, Yasunori Goto wrote:
> > > So, just "use NODE(0)" is not enough hack for our machine.
> > > If "use NODE(0)" is selected, kernel must sort pgdat link and
> > > node id by memory address. I think that hot add code will be a
> > > bit messy instead.
> >
> > Yasunori-san,
> > Does this patch work on your boxes instead? (For 2.6.14)
> > http://marc.theaimsgroup.com/?l=linux-kernel&m=112959469914681&w=2
>
> Not yet. But could you change this line at least?
>
> +
> + for_each_node(node) {
> + io_tlb_start = alloc_bootmem_node(NODE_DATA(node), iotlbsz);
>
> for_each_node() loop walks around node_possible_map which includes
> "offlined" node.
> Please use for_each_online_node() instead. Then, I'll check it. :-)
Since swiotlb is is allocated even before APs are brought up, I thought,
if the node containing lowmem32 was not the boot node, it would not be
online. But on closer look, my assumption was wrong. Here is the patch
which iterates through online nodes to allocate lowmem32 bootmem for
swiotlb.
--
Patch to ensure low32 mem allocation for x86_64 swiotlb
Signed-off-by: Ravikiran Thirumalai <kiran@scalex86.org>
Index: linux-2.6.14-rc4/arch/ia64/lib/swiotlb.c
===================================================================
--- linux-2.6.14-rc4.orig/arch/ia64/lib/swiotlb.c 2005-10-17 13:27:35.000000000 -0700
+++ linux-2.6.14-rc4/arch/ia64/lib/swiotlb.c 2005-10-17 16:00:44.000000000 -0700
@@ -106,6 +106,8 @@
__setup("swiotlb=", setup_io_tlb_npages);
/* make io_tlb_overflow tunable too? */
+#define IS_LOWPAGES(paddr, size) ((paddr < 0xffffffff) && ((paddr+size) < 0xffffffff))
+
/*
* Statically reserve bounce buffer space and initialize bounce buffer data
* structures for the software IO TLB used to implement the PCI DMA API.
@@ -114,17 +116,32 @@
swiotlb_init_with_default_size (size_t default_size)
{
unsigned long i;
+ unsigned long iotlbsz;
+ int node;
if (!io_tlb_nslabs) {
io_tlb_nslabs = (default_size >> IO_TLB_SHIFT);
io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE);
}
+ iotlbsz = io_tlb_nslabs * (1 << IO_TLB_SHIFT);
+
/*
- * Get IO TLB memory from the low pages
+ * Get IO TLB memory from the 0-4G range
*/
- io_tlb_start = alloc_bootmem_low_pages(io_tlb_nslabs *
- (1 << IO_TLB_SHIFT));
+
+ for_each_online_node(node) {
+ io_tlb_start = alloc_bootmem_node(NODE_DATA(node), iotlbsz);
+ if (io_tlb_start) {
+ if (IS_LOWPAGES(virt_to_phys(io_tlb_start), iotlbsz))
+ break;
+ free_bootmem_node(NODE_DATA(node),
+ virt_to_phys(io_tlb_start), iotlbsz);
+ io_tlb_start = NULL;
+ }
+ }
+
+
if (!io_tlb_start)
panic("Cannot allocate SWIOTLB buffer");
io_tlb_end = io_tlb_start + io_tlb_nslabs * (1 << IO_TLB_SHIFT);
next prev parent reply other threads:[~2005-10-18 6:13 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-10-17 9:36 x86_64: 2.6.14-rc4 swiotlb broken Ravikiran G Thirumalai
2005-10-17 9:50 ` Andrew Morton
2005-10-17 9:53 ` Andi Kleen
2005-10-17 10:54 ` Yasunori Goto
2005-10-17 15:27 ` Linus Torvalds
2005-10-17 15:37 ` Ravikiran G Thirumalai
2005-10-17 15:40 ` Andi Kleen
2005-10-17 15:56 ` Muli Ben-Yehuda
2005-10-17 16:02 ` Andi Kleen
2005-10-17 18:53 ` [discuss] " Russell King
2005-10-17 16:02 ` Linus Torvalds
2005-10-17 16:26 ` Andi Kleen
2005-10-17 16:42 ` Linus Torvalds
2005-10-17 17:09 ` Andi Kleen
2005-10-17 17:52 ` Ravikiran G Thirumalai
2005-10-17 18:08 ` [discuss] " Andi Kleen
2005-10-17 18:27 ` Muli Ben-Yehuda
2005-10-17 18:32 ` Andi Kleen
2005-10-17 18:45 ` Muli Ben-Yehuda
2005-10-17 19:04 ` Linus Torvalds
2005-10-17 19:09 ` Andi Kleen
2005-10-17 19:15 ` Arjan van de Ven
2005-10-17 19:47 ` Ravikiran G Thirumalai
2005-10-17 23:50 ` David Lang
2005-10-18 2:29 ` Yasunori Goto
2005-10-18 3:20 ` Ravikiran G Thirumalai
2005-10-18 4:28 ` Yasunori Goto
2005-10-18 6:13 ` Ravikiran G Thirumalai [this message]
2005-10-18 10:09 ` Yasunori Goto
2005-10-18 18:51 ` Ravikiran G Thirumalai
2005-10-19 17:18 ` Jon Mason
2005-10-20 7:27 ` Andi Kleen
2005-10-17 18:38 ` Ravikiran G Thirumalai
2005-10-17 18:20 ` Christoph Lameter
2005-10-17 19:04 ` Alex Williamson
2005-10-17 19:26 ` Ravikiran G Thirumalai
2005-10-17 19:52 ` Alex Williamson
2005-10-17 15:30 ` Ravikiran G Thirumalai
2005-10-17 15:43 ` Andi Kleen
2005-10-17 20:44 ` Andrew Morton
2005-10-17 21:11 ` Linus Torvalds
2005-10-18 0:16 ` Ravikiran G Thirumalai
2005-10-18 8:23 ` Andi Kleen
2005-10-18 19:07 ` [discuss] " Ravikiran G Thirumalai
2005-10-18 15:48 ` Linus Torvalds
2005-10-18 15:50 ` Linus Torvalds
2005-10-18 19:54 ` [discuss] " Ravikiran G Thirumalai
2005-10-18 21:28 ` Alex Williamson
2005-10-18 21:53 ` Ravikiran G Thirumalai
2005-10-18 22:04 ` Alex Williamson
2005-10-18 22:37 ` Alex Williamson
2005-10-18 23:22 ` Ravikiran G Thirumalai
2005-10-19 1:22 ` Alex Williamson
2005-10-19 2:02 ` Alex Williamson
2005-10-19 12:47 ` Yasunori Goto
2005-10-19 14:19 ` Alex Williamson
2005-10-19 18:07 ` Ravikiran G Thirumalai
2005-10-19 20:45 ` Linus Torvalds
2005-10-19 22:52 ` Ravikiran G Thirumalai
2005-10-20 0:51 ` Yasunori Goto
2005-10-20 7:45 ` Andi Kleen
2005-10-18 22:47 ` Ravikiran G Thirumalai
2005-10-17 10:02 ` Muli Ben-Yehuda
2005-10-17 19:07 ` Tony Luck
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=20051018061325.GB3692@localhost.localdomain \
--to=kiran@scalex86.org \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=clameter@engr.sgi.com \
--cc=discuss@x86-64.org \
--cc=jdmason@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=muli@il.ibm.com \
--cc=mulix@mulix.org \
--cc=shai@scalex86.org \
--cc=tglx@linutronix.de \
--cc=torvalds@osdl.org \
--cc=y-goto@jp.fujitsu.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.