diff options
author | Alex Williamson <alex.williamson@hp.com> | 2005-08-04 16:06:00 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2005-08-18 19:33:28 -0400 |
commit | e8579e72ca240f3fbaa669f09a9d610436505366 (patch) | |
tree | 8b2cca8bedf9305dc9686e25d90b4f15752b88fc /arch | |
parent | 30d5b64b63fa69af31b2cba32e6d71d68526eec9 (diff) |
[IA64, X86_64] fix swiotlb sizing
Fix swiotlb sizing to match what the comments and the kernel
parameters documentation indicate. Given a default 16k page size kernel
(ia64) and a 2k swiotlb page size, we're off by a multiple of 8 trying
to size the swiotlb. When specified on the boot line, the swiotlb is
made 8x bigger than requested. When left to the default value, it's 8x
smaller than the comments indicate. For x86_64 the multiplier would be
2x. The patch below fixes this. Now, what's a good default swiotlb
size? Apparently we don't really need 64MB.
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/lib/swiotlb.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/ia64/lib/swiotlb.c b/arch/ia64/lib/swiotlb.c index ab7b3ad99a7f..dbc0b3e449c5 100644 --- a/arch/ia64/lib/swiotlb.c +++ b/arch/ia64/lib/swiotlb.c | |||
@@ -93,8 +93,7 @@ static int __init | |||
93 | setup_io_tlb_npages(char *str) | 93 | setup_io_tlb_npages(char *str) |
94 | { | 94 | { |
95 | if (isdigit(*str)) { | 95 | if (isdigit(*str)) { |
96 | io_tlb_nslabs = simple_strtoul(str, &str, 0) << | 96 | io_tlb_nslabs = simple_strtoul(str, &str, 0); |
97 | (PAGE_SHIFT - IO_TLB_SHIFT); | ||
98 | /* avoid tail segment of size < IO_TLB_SEGSIZE */ | 97 | /* avoid tail segment of size < IO_TLB_SEGSIZE */ |
99 | io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE); | 98 | io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE); |
100 | } | 99 | } |
@@ -117,7 +116,7 @@ swiotlb_init_with_default_size (size_t default_size) | |||
117 | unsigned long i; | 116 | unsigned long i; |
118 | 117 | ||
119 | if (!io_tlb_nslabs) { | 118 | if (!io_tlb_nslabs) { |
120 | io_tlb_nslabs = (default_size >> PAGE_SHIFT); | 119 | io_tlb_nslabs = (default_size >> IO_TLB_SHIFT); |
121 | io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE); | 120 | io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE); |
122 | } | 121 | } |
123 | 122 | ||