# HG changeset patch
# User Keir Fraser <keir@xxxxxxx>
# Date 1290173154 0
# Node ID 437576a0f2026ded6dcc4b11558714dad1d1d042
# Parent ff98da15205f18744bc01a32df7cb983ca69e115
consolidate custom parameter parsing routines looking for boolean values
Have a single function for this, rather than doing the same in half a
dozen places.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---
xen/arch/x86/cpu/amd.c | 15 ++++++++++-----
xen/arch/x86/setup.c | 2 +-
xen/arch/x86/x86_64/mmconfig-shared.c | 3 +--
xen/common/kernel.c | 26 +++++++++++++++++++++-----
xen/drivers/passthrough/iommu.c | 3 +--
xen/drivers/passthrough/vtd/x86/ats.c | 12 +++++++-----
xen/include/xen/lib.h | 1 +
7 files changed, 42 insertions(+), 20 deletions(-)
diff -r ff98da15205f -r 437576a0f202 xen/arch/x86/cpu/amd.c
--- a/xen/arch/x86/cpu/amd.c Fri Nov 19 13:24:00 2010 +0000
+++ b/xen/arch/x86/cpu/amd.c Fri Nov 19 13:25:54 2010 +0000
@@ -240,13 +240,18 @@ int cpu_has_amd_erratum(const struct cpu
* amd_flush_filter={on,off}. Forcibly Enable or disable the TLB flush
* filter on AMD 64-bit processors.
*/
-static int flush_filter_force;
-static void flush_filter(char *s)
-{
- if (!strcmp(s, "off"))
+static int __read_mostly flush_filter_force;
+static void __init flush_filter(char *s)
+{
+ switch (parse_bool(s))
+ {
+ case 0:
flush_filter_force = -1;
- if (!strcmp(s, "on"))
+ break;
+ case 1:
flush_filter_force = 1;
+ break;
+ }
}
custom_param("amd_flush_filter", flush_filter);
diff -r ff98da15205f -r 437576a0f202 xen/arch/x86/setup.c
--- a/xen/arch/x86/setup.c Fri Nov 19 13:24:00 2010 +0000
+++ b/xen/arch/x86/setup.c Fri Nov 19 13:25:54 2010 +0000
@@ -113,7 +113,7 @@ static void __init parse_acpi_param(char
safe_strcpy(acpi_param, s);
/* Interpret the parameter for use within Xen. */
- if ( !strcmp(s, "off") )
+ if ( !parse_bool(s) )
{
disable_acpi();
}
diff -r ff98da15205f -r 437576a0f202 xen/arch/x86/x86_64/mmconfig-shared.c
--- a/xen/arch/x86/x86_64/mmconfig-shared.c Fri Nov 19 13:24:00 2010 +0000
+++ b/xen/arch/x86/x86_64/mmconfig-shared.c Fri Nov 19 13:25:54 2010 +0000
@@ -37,8 +37,7 @@ static void __init parse_mmcfg(char *s)
if ( ss )
*ss = '\0';
- if ( !strcmp(s, "off") || !strcmp(s, "no") || !strcmp(s, "false") ||
- !strcmp(s, "0") || !strcmp(s, "disable") )
+ if ( !parse_bool(s) )
pci_probe &= ~PCI_PROBE_MMCONF;
else if ( !strcmp(s, "amd_fam10") || !strcmp(s, "amd-fam10") )
pci_probe |= PCI_CHECK_ENABLE_AMD_MMCONF;
diff -r ff98da15205f -r 437576a0f202 xen/common/kernel.c
--- a/xen/common/kernel.c Fri Nov 19 13:24:00 2010 +0000
+++ b/xen/common/kernel.c Fri Nov 19 13:25:54 2010 +0000
@@ -26,7 +26,7 @@ int tainted;
xen_commandline_t saved_cmdline;
-void cmdline_parse(char *cmdline)
+void __init cmdline_parse(char *cmdline)
{
char opt[100], *optval, *optkey, *q;
const char *p = cmdline;
@@ -83,10 +83,7 @@ void cmdline_parse(char *cmdline)
break;
case OPT_BOOL:
case OPT_INVBOOL:
- if ( !strcmp("no", optval) ||
- !strcmp("off", optval) ||
- !strcmp("false", optval) ||
- !strcmp("0", optval) )
+ if ( !parse_bool(optval) )
bool_assert = !bool_assert;
if ( param->type == OPT_INVBOOL )
bool_assert = !bool_assert;
@@ -113,6 +110,25 @@ void cmdline_parse(char *cmdline)
}
}
}
+}
+
+int __init parse_bool(const char *s)
+{
+ if ( !strcmp("no", s) ||
+ !strcmp("off", s) ||
+ !strcmp("false", s) ||
+ !strcmp("disable", s) ||
+ !strcmp("0", s) )
+ return 0;
+
+ if ( !strcmp("yes", s) ||
+ !strcmp("on", s) ||
+ !strcmp("true", s) ||
+ !strcmp("enable", s) ||
+ !strcmp("1", s) )
+ return 1;
+
+ return -1;
}
/**
diff -r ff98da15205f -r 437576a0f202 xen/drivers/passthrough/iommu.c
--- a/xen/drivers/passthrough/iommu.c Fri Nov 19 13:24:00 2010 +0000
+++ b/xen/drivers/passthrough/iommu.c Fri Nov 19 13:25:54 2010 +0000
@@ -59,8 +59,7 @@ static void __init parse_iommu_param(cha
if ( ss )
*ss = '\0';
- if ( !strcmp(s, "off") || !strcmp(s, "no") || !strcmp(s, "false") ||
- !strcmp(s, "0") || !strcmp(s, "disable") )
+ if ( !parse_bool(s) )
iommu_enabled = 0;
else if ( !strcmp(s, "force") || !strcmp(s, "required") )
force_iommu = 1;
diff -r ff98da15205f -r 437576a0f202 xen/drivers/passthrough/vtd/x86/ats.c
--- a/xen/drivers/passthrough/vtd/x86/ats.c Fri Nov 19 13:24:00 2010 +0000
+++ b/xen/drivers/passthrough/vtd/x86/ats.c Fri Nov 19 13:25:54 2010 +0000
@@ -58,13 +58,15 @@ static void __init parse_ats_param(char
if ( ss )
*ss = '\0';
- if ( !strcmp(s, "off") || !strcmp(s, "no") || !strcmp(s, "false") ||
- !strcmp(s, "0") || !strcmp(s, "disable") )
+ switch ( parse_bool(s) )
+ {
+ case 0:
ats_enabled = 0;
-
- if ( !strcmp(s, "on") || !strcmp(s, "yes") || !strcmp(s, "true") ||
- !strcmp(s, "1") || !strcmp(s, "enable") )
+ break;
+ case 1:
ats_enabled = 1;
+ break;
+ }
s = ss + 1;
} while ( ss );
diff -r ff98da15205f -r 437576a0f202 xen/include/xen/lib.h
--- a/xen/include/xen/lib.h Fri Nov 19 13:24:00 2010 +0000
+++ b/xen/include/xen/lib.h Fri Nov 19 13:25:54 2010 +0000
@@ -57,6 +57,7 @@ struct domain;
struct domain;
void cmdline_parse(char *cmdline);
+int parse_bool(const char *s);
/*#define DEBUG_TRACE_DUMP*/
#ifdef DEBUG_TRACE_DUMP
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|