From 3c7177e208bcd23c09db2b56dc503e54ac31d2d5 Mon Sep 17 00:00:00 2001 From: Venu Busireddy Date: Wed, 1 Mar 2017 10:29:23 +0100 Subject: [PATCH] iommu: elaborate the usage of RMRR specification on the command line MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit As some users have suggested, elaborate the usage of RMRR specification on the command line, and provide a usage example. Also, always treat the specified page numbers as hexadecimal values. Signed-off-by: Venu Busireddy Acked-by: Roger Pau Monné Reviewed-by: Jan Beulich Acked-by: Kevin Tian --- docs/misc/xen-command-line.markdown | 10 ++++++++++ xen/drivers/passthrough/vtd/dmar.c | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/misc/xen-command-line.markdown b/docs/misc/xen-command-line.markdown index deeedf9809..6882e35790 100644 --- a/docs/misc/xen-command-line.markdown +++ b/docs/misc/xen-command-line.markdown @@ -1412,6 +1412,16 @@ If segment of the first device is not specified, segment zero will be used. If other segments are not specified, first device segment will be used. If a segment is specified for other than the first device and it does not match the one specified for the first one, an error will be reported. + +'start' and 'end' values are page numbers (not full physical addresses), +in hexadecimal format (can optionally be preceded by "0x"). + +Usage example: If device 0:0:1d.0 requires one page (0xd5d45) to be +reserved, and device 0:0:1a.0 requires three pages (0xd5d46 thru 0xd5d48) +to be reserved, one usage would be: + +rmrr=d5d45=0:0:1d.0;0xd5d46-0xd5d48=0:0:1a.0 + Note: grub2 requires to escape or use quotations if special characters are used, namely ';', refer to the grub2 documentation if multiple ranges are specified. diff --git a/xen/drivers/passthrough/vtd/dmar.c b/xen/drivers/passthrough/vtd/dmar.c index 16ae6f6ef7..82040ddc05 100644 --- a/xen/drivers/passthrough/vtd/dmar.c +++ b/xen/drivers/passthrough/vtd/dmar.c @@ -1097,13 +1097,13 @@ static void __init parse_rmrr_param(const char *str) unsigned long start, end; do { - start = simple_strtoul(cur = s, &s, 0); + start = simple_strtoul(cur = s, &s, 16); if ( cur == s ) break; if ( *s == '-' ) { - end = simple_strtoul(cur = s + 1, &s, 0); + end = simple_strtoul(cur = s + 1, &s, 16); if ( cur == s ) break; } -- 2.30.2