aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAlex Williamson <alex.williamson@hp.com>2005-08-04 13:06:00 -0700
committerTony Luck <tony.luck@intel.com>2005-08-18 16:33:28 -0700
commite8579e72ca240f3fbaa669f09a9d610436505366 (patch)
tree8b2cca8bedf9305dc9686e25d90b4f15752b88fc /arch
parent30d5b64b63fa69af31b2cba32e6d71d68526eec9 (diff)
downloadkernel_samsung_smdk4412-e8579e72ca240f3fbaa669f09a9d610436505366.zip
kernel_samsung_smdk4412-e8579e72ca240f3fbaa669f09a9d610436505366.tar.gz
kernel_samsung_smdk4412-e8579e72ca240f3fbaa669f09a9d610436505366.tar.bz2
[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.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/ia64/lib/swiotlb.c b/arch/ia64/lib/swiotlb.c
index ab7b3ad..dbc0b3e 100644
--- a/arch/ia64/lib/swiotlb.c
+++ b/arch/ia64/lib/swiotlb.c
@@ -93,8 +93,7 @@ static int __init
setup_io_tlb_npages(char *str)
{
if (isdigit(*str)) {
- io_tlb_nslabs = simple_strtoul(str, &str, 0) <<
- (PAGE_SHIFT - IO_TLB_SHIFT);
+ io_tlb_nslabs = simple_strtoul(str, &str, 0);
/* avoid tail segment of size < IO_TLB_SEGSIZE */
io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE);
}
@@ -117,7 +116,7 @@ swiotlb_init_with_default_size (size_t default_size)
unsigned long i;
if (!io_tlb_nslabs) {
- io_tlb_nslabs = (default_size >> PAGE_SHIFT);
+ io_tlb_nslabs = (default_size >> IO_TLB_SHIFT);
io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE);
}