]> xenbits.xensource.com Git - xen.git/commitdiff
x86/PSR: fix cmdline option handling
authorYi Sun <yi.y.sun@linux.intel.com>
Fri, 22 Sep 2017 14:28:35 +0000 (16:28 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 22 Sep 2017 14:28:35 +0000 (16:28 +0200)
Commit 0ade5e causes a bug that the psr features presented in cmdline
cannot be correctly enumerated.
1. If there is only 'psr=', then CMT is enumerated which is not right.
2. If cmdline is 'psr=cmt,cat,cdp,mba', only the last feature is enumerated.

This patch fixes the issues.

Signed-off-by: Yi Sun <yi.y.sun@linux.intel.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
xen/arch/x86/psr.c

index 451510078590191ab8f89d4eff6601aeba21b141..daa2aeb9b20eb8f558736137ffa1499982ab7ca4 100644 (file)
@@ -422,9 +422,10 @@ static bool __init parse_psr_bool(const char *s, const char *delim,
                                   const char *ss, const char *feature,
                                   unsigned int mask)
 {
-    if ( !strncmp(s, feature, delim - s) )
+    /* If cmdline is 'psr=', we need make sure delim != s */
+    if ( delim != s && !strncmp(s, feature, delim - s) )
     {
-        if ( !*delim )
+        if ( !*delim || *delim == ',' )
             opt_psr |= mask;
         else
         {
@@ -457,6 +458,10 @@ static int __init parse_psr_param(const char *s)
         if ( !val_delim )
             val_delim = strchr(s, '\0');
 
+        /* E.g. 'psr=cmt,rmid_max:200' */
+        if ( val_delim > ss )
+            val_delim = ss;
+
         if ( *val_delim && !strncmp(s, "rmid_max", val_delim - s) )
         {
             opt_rmid_max = simple_strtoul(val_delim + 1, &q, 0);