From: Venu Busireddy Date: Wed, 1 Mar 2017 09:29:23 +0000 (+0100) Subject: iommu: elaborate the usage of RMRR specification on the command line X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~2628 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=3c7177e208bcd23c09db2b56dc503e54ac31d2d5;p=xen.git iommu: elaborate the usage of RMRR specification on the command line 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 --- 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; }