Messages in this thread Patch in this message | | | From | Konrad Rzeszutek Wilk <> | Subject | [PATCH 1/4] swiotlb: fix: Update 'setup_io_tlb_npages' to accept both arguments in either order. | Date | Tue, 9 Mar 2010 16:54:19 -0500 |
| |
Before this patch, if you specified 'swiotlb=force,1024' it would ignore both arguments. This fixes it and allows the user specify it in any order (or none at all).
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> --- Documentation/x86/x86_64/boot-options.txt | 4 +++- lib/swiotlb.c | 20 +++++++++++--------- 2 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/Documentation/x86/x86_64/boot-options.txt b/Documentation/x86/x86_64/boot-options.txt index 7fbbaf8..7055341 100644 --- a/Documentation/x86/x86_64/boot-options.txt +++ b/Documentation/x86/x86_64/boot-options.txt @@ -261,7 +261,9 @@ IOMMU (input/output memory management unit) iommu options only relevant to the software bounce buffering (SWIOTLB) IOMMU implementation: - swiotlb=<pages>[,force] + swiotlb=[npages=<pages>] + swiotlb=[force] + <pages> Prereserve that many 128K pages for the software IO bounce buffering. force Force all IO through the software TLB. diff --git a/lib/swiotlb.c b/lib/swiotlb.c index 437eedb..e6d9e32 100644 --- a/lib/swiotlb.c +++ b/lib/swiotlb.c @@ -102,16 +102,18 @@ static int late_alloc; static int __init setup_io_tlb_npages(char *str) { - if (isdigit(*str)) { - 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); + while (*str) { + if (isdigit(*str)) { + 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); + } + if (!strncmp(str, "force", 5)) + swiotlb_force = 1; + str += strcspn(str, ","); + if (*str == ',') + ++str; } - if (*str == ',') - ++str; - if (!strcmp(str, "force")) - swiotlb_force = 1; - return 1; } __setup("swiotlb=", setup_io_tlb_npages); -- 1.6.2.5
| |