Re: [Xen-devel] [PATCH v3 22/52] xen/arch/x86/x86_64/mmconfig-shared.c: let custom parameter parsing routines return errno

2017-08-23 Thread Juergen Gross
On 22/08/17 11:55, Jan Beulich wrote:
 On 16.08.17 at 14:51,  wrote:
>> --- 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) ) {
> 
> Style. With this corrected

Another parse_bool() victim.


Juergen

___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH v3 22/52] xen/arch/x86/x86_64/mmconfig-shared.c: let custom parameter parsing routines return errno

2017-08-22 Thread Jan Beulich
>>> On 16.08.17 at 14:51,  wrote:
> --- 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) ) {

Style. With this corrected
Reviewed-by: Jan Beulich 

Jan


___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel


[Xen-devel] [PATCH v3 22/52] xen/arch/x86/x86_64/mmconfig-shared.c: let custom parameter parsing routines return errno

2017-08-16 Thread Juergen Gross
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 
Cc: Andrew Cooper 
Signed-off-by: Juergen Gross 
---
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@lists.xen.org
https://lists.xen.org/xen-devel