Commit e8579e72 authored by Alex Williamson's avatar Alex Williamson Committed by Tony Luck

[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: default avatarAlex Williamson <alex.williamson@hp.com>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent 30d5b64b
...@@ -93,8 +93,7 @@ static int __init ...@@ -93,8 +93,7 @@ static int __init
setup_io_tlb_npages(char *str) setup_io_tlb_npages(char *str)
{ {
if (isdigit(*str)) { if (isdigit(*str)) {
io_tlb_nslabs = simple_strtoul(str, &str, 0) << io_tlb_nslabs = simple_strtoul(str, &str, 0);
(PAGE_SHIFT - IO_TLB_SHIFT);
/* avoid tail segment of size < IO_TLB_SEGSIZE */ /* avoid tail segment of size < IO_TLB_SEGSIZE */
io_tlb_nslabs = ALIGN(io_tlb_nslabs, 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) ...@@ -117,7 +116,7 @@ swiotlb_init_with_default_size (size_t default_size)
unsigned long i; unsigned long i;
if (!io_tlb_nslabs) { 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); io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment