Message ID | 1505981483-3885-1-git-send-email-yi.y.sun@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 21/09/17 10:11, Yi Sun wrote: > Commit 0ade5e causes a bug that only the psr features presented in cmdline > cannot be correctly enumerated. > 1. If there is only 'psr=', the 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> Juergen > --- > xen/arch/x86/psr.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c > index 4515100..daa2aeb 100644 > --- a/xen/arch/x86/psr.c > +++ b/xen/arch/x86/psr.c > @@ -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); >
>>> On 21.09.17 at 10:11, <yi.y.sun@linux.intel.com> wrote: A better title for the patch is needed. > Commit 0ade5e causes a bug that only the psr features presented in cmdline > cannot be correctly enumerated. To me it looks like either the "only" is wrong here, or the "cannot" was meant to be "can"; the way it's now I can't make sense of it. > 1. If there is only 'psr=', the CMT is enumerated which is not right. s/,the /,then/ ? Jan
diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c index 4515100..daa2aeb 100644 --- a/xen/arch/x86/psr.c +++ b/xen/arch/x86/psr.c @@ -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);
Commit 0ade5e causes a bug that only the psr features presented in cmdline cannot be correctly enumerated. 1. If there is only 'psr=', the 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> --- xen/arch/x86/psr.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)