From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: linux-kernel@vger.kernel.org, fujita.tomonori@lab.ntt.co.jp,
chrisw@sous-sol.org, iommu@lists.linux-foundation.org,
dwmw2@infradead.org, alex.williamson@hp.com
Cc: jeremy@goop.org, Ian.Campbell@eu.citrix.com,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Subject: [PATCH 02/10] swiotlb: Make 'setup_io_tlb_npages' accept new 'swiotlb=' syntax.
Date: Thu, 18 Feb 2010 11:26:58 -0500 [thread overview]
Message-ID: <1266510426-6815-3-git-send-email-konrad.wilk@oracle.com> (raw)
In-Reply-To: <1266510426-6815-2-git-send-email-konrad.wilk@oracle.com>
The old syntax for 'swiotlb' is still in effect, and we extend it
now to include the overflow buffer size. The syntax is now:
swiotlb=[force,][nslabs=<pages>,][overflow=<size>] or more
commonly know as:
swiotlb=[force]
swiotlb=[nslabs=<pages>]
swiotlb=[overflow=<size>]
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
Documentation/x86/x86_64/boot-options.txt | 6 ++++-
lib/swiotlb.c | 36 +++++++++++++++++++++++++---
2 files changed, 37 insertions(+), 5 deletions(-)
diff --git a/Documentation/x86/x86_64/boot-options.txt b/Documentation/x86/x86_64/boot-options.txt
index 29a6ff8..81f9b94 100644
--- a/Documentation/x86/x86_64/boot-options.txt
+++ b/Documentation/x86/x86_64/boot-options.txt
@@ -267,10 +267,14 @@ 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]
+ swiotlb=[overflow=<size>]
+
<pages> Prereserve that many 128K pages for the software IO
bounce buffering.
force Force all IO through the software TLB.
+ <size> Size in bytes of the overflow buffer.
Settings for the IBM Calgary hardware IOMMU currently found in IBM
pSeries and xSeries machines:
diff --git a/lib/swiotlb.c b/lib/swiotlb.c
index e6d9e32..0663879 100644
--- a/lib/swiotlb.c
+++ b/lib/swiotlb.c
@@ -102,7 +102,27 @@ static int late_alloc;
static int __init
setup_io_tlb_npages(char *str)
{
+ int get_value(const char *token, char *str, char **endp)
+ {
+ ssize_t len;
+ int val = 0;
+
+ len = strlen(token);
+ if (!strncmp(str, token, len)) {
+ str += len;
+ if (*str == '=')
+ ++str;
+ if (*str != '\0')
+ val = simple_strtoul(str, endp, 0);
+ }
+ *endp = str;
+ return val;
+ }
+
+ int val;
+
while (*str) {
+ /* The old syntax */
if (isdigit(*str)) {
io_tlb_nslabs = simple_strtoul(str, &str, 0);
/* avoid tail segment of size < IO_TLB_SEGSIZE */
@@ -110,14 +130,22 @@ setup_io_tlb_npages(char *str)
}
if (!strncmp(str, "force", 5))
swiotlb_force = 1;
- str += strcspn(str, ",");
- if (*str == ',')
- ++str;
+ /* The new syntax: swiotlb=nslabs=16384,overflow=32768,force */
+ val = get_value("nslabs", str, &str);
+ if (val)
+ io_tlb_nslabs = ALIGN(val, IO_TLB_SEGSIZE);
+
+ val = get_value("overflow", str, &str);
+ if (val)
+ io_tlb_overflow = val;
+ str = strpbrk(str, ",");
+ if (!str)
+ break;
+ str++; /* skip ',' */
}
return 1;
}
__setup("swiotlb=", setup_io_tlb_npages);
-/* make io_tlb_overflow tunable too? */
/* Note that this doesn't work with highmem page */
static dma_addr_t swiotlb_virt_to_bus(struct device *hwdev,
--
1.6.2.5
next prev parent reply other threads:[~2010-02-18 16:54 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-18 16:26 [REPOST PATCH RFC SWIOTLB 0.5] Separate address translation routines from core SWIOTLB book-keeping Konrad Rzeszutek Wilk
2010-02-18 16:26 ` [PATCH 01/10] swiotlb: fix: Update 'setup_io_tlb_npages' to accept both arguments in either order Konrad Rzeszutek Wilk
2010-02-18 16:26 ` Konrad Rzeszutek Wilk [this message]
2010-02-18 16:26 ` [PATCH 03/10] swiotlb: Normalize the swiotlb_init_* function's naming syntax Konrad Rzeszutek Wilk
2010-02-18 16:27 ` [PATCH 04/10] swiotlb: Make printk's use same prefix and include dev_err when possible Konrad Rzeszutek Wilk
2010-02-18 16:27 ` [PATCH 05/10] swiotlb: Make internal bookkeeping functions have 'do_' prefix Konrad Rzeszutek Wilk
2010-02-18 16:27 ` [PATCH 06/10] swiotlb: do_map_single: abstract out swiotlb_virt_to_bus calls out Konrad Rzeszutek Wilk
2010-02-18 16:27 ` [PATCH 07/10] swiotlb: Fix checkpatch warnings Konrad Rzeszutek Wilk
2010-02-18 16:27 ` [PATCH 08/10] swiotlb: Re-order the function declerations Konrad Rzeszutek Wilk
2010-02-18 16:27 ` [PATCH 09/10] swiotlb: Make swiotlb bookkeeping functions visible in the header file Konrad Rzeszutek Wilk
2010-02-18 16:27 ` [PATCH 10/10] swiotlb: EXPORT_SYMBOL_GPL functions + variables that are defined " Konrad Rzeszutek Wilk
2010-02-25 6:53 ` [PATCH 02/10] swiotlb: Make 'setup_io_tlb_npages' accept new 'swiotlb=' syntax FUJITA Tomonori
2010-02-25 12:49 ` Konrad Rzeszutek Wilk
2010-02-25 23:52 ` FUJITA Tomonori
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=1266510426-6815-3-git-send-email-konrad.wilk@oracle.com \
--to=konrad.wilk@oracle.com \
--cc=Ian.Campbell@eu.citrix.com \
--cc=alex.williamson@hp.com \
--cc=chrisw@sous-sol.org \
--cc=dwmw2@infradead.org \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=iommu@lists.linux-foundation.org \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®