|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 22/52] xen/arch/x86/x86_64/mmconfig-shared.c: let custom parameter parsing routines return errno
Modify the custom parameter parsing routines in:
xen/arch/x86/x86_64/mmconfig-shared.c
to indicate whether the parameter value was parsed successfully.
Cc: Jan Beulich <jbeulich@xxxxxxxx>
Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
---
V3:
- dont return out of loop (Jan Beulich)
- dont modify option value in parsing function
---
xen/arch/x86/x86_64/mmconfig-shared.c | 29 +++++++++++++++++++++--------
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git a/xen/arch/x86/x86_64/mmconfig-shared.c
b/xen/arch/x86/x86_64/mmconfig-shared.c
index 488470bfeb..5a7118481d 100644
--- a/xen/arch/x86/x86_64/mmconfig-shared.c
+++ b/xen/arch/x86/x86_64/mmconfig-shared.c
@@ -28,22 +28,35 @@
unsigned int pci_probe = PCI_PROBE_CONF1 | PCI_PROBE_MMCONF;
-static void __init parse_mmcfg(char *s)
+static int __init parse_mmcfg(const char *s)
{
- char *ss;
+ const char *ss;
+ int rc = 0;
do {
ss = strchr(s, ',');
- if ( ss )
- *ss = '\0';
+ if ( !ss )
+ ss = strchr(s, '\0');
- if ( !parse_bool(s) )
+ switch ( parse_bool(s) ) {
+ case 0:
pci_probe &= ~PCI_PROBE_MMCONF;
- else if ( !strcmp(s, "amd_fam10") || !strcmp(s, "amd-fam10") )
- pci_probe |= PCI_CHECK_ENABLE_AMD_MMCONF;
+ break;
+ case 1:
+ break;
+ default:
+ if ( !strncmp(s, "amd_fam10", ss - s) ||
+ !strncmp(s, "amd-fam10", ss - s) )
+ pci_probe |= PCI_CHECK_ENABLE_AMD_MMCONF;
+ else
+ rc = -EINVAL;
+ break;
+ }
s = ss + 1;
- } while ( ss );
+ } while ( *ss );
+
+ return rc;
}
custom_param("mmcfg", parse_mmcfg);
--
2.12.3
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |