[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 1/2] x86/svm: add support for pause filtering threshold



Looks good. 
Reviewed-by: Babu Moger <babu.moger@xxxxxxx>

> -----Original Message-----
> From: Woods, Brian
> Sent: Tuesday, February 20, 2018 6:13 PM
> To: xen-devel@xxxxxxxxxxxxx
> Cc: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>; Suthikulpanit, Suravee
> <Suravee.Suthikulpanit@xxxxxxx>; Jan Beulich <jbeulich@xxxxxxxx>;
> Andrew Cooper <andrew.cooper3@xxxxxxxxxx>; Woods, Brian
> <Brian.Woods@xxxxxxx>
> Subject: [PATCH 1/2] x86/svm: add support for pause filtering threshold
> 
> Add support for enabling the pause filtering threshold feature.  This
> causes the pause filtering count to reset if there's pause filtering
> threshold cycles or greater between pauses.  See AMD APM Vol 2 Section
> 15.14.4 for more details.
> 
> The values of the pause filtering count and threshold were found by
> iterating over different values of the count and threshold while running
> kernbench and a pi spigot algorithm with yields placed in it.  A
> balanced setting for both variable provides:
> 
> (Using averaged elapsed time with kernbench)
> old = 852.0
> new = 848.8
> improvement = .4%
> 
> For system without pause filtering threshold, the change, from 3000 to
> 4000 for the count, should not negatively effect system performance.
> 
> Signed-off-by: Brian Woods <brian.woods@xxxxxxx>
> ---
>  xen/include/asm-x86/hvm/svm/svm.h  | 5 ++++-
>  xen/include/asm-x86/hvm/svm/vmcb.h | 3 ++-
>  2 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/include/asm-x86/hvm/svm/svm.h b/xen/include/asm-
> x86/hvm/svm/svm.h
> index 462cb89b7c..593546fb56 100644
> --- a/xen/include/asm-x86/hvm/svm/svm.h
> +++ b/xen/include/asm-x86/hvm/svm/svm.h
> @@ -64,6 +64,7 @@ extern u32 svm_feature_flags;
>  #define SVM_FEATURE_FLUSHBYASID    6 /* TLB flush by ASID support */
>  #define SVM_FEATURE_DECODEASSISTS  7 /* Decode assists support */
>  #define SVM_FEATURE_PAUSEFILTER   10 /* Pause intercept filter support
> */
> +#define SVM_FEATURE_PAUSETHRESH   12 /* Pause intercept filter support
> */
>  #define SVM_FEATURE_VLOADSAVE     15 /* virtual vmload/vmsave */
>  #define SVM_FEATURE_VGIF          16 /* Virtual GIF */
> 
> @@ -76,10 +77,12 @@ extern u32 svm_feature_flags;
>  #define cpu_has_svm_decode
> cpu_has_svm_feature(SVM_FEATURE_DECODEASSISTS)
>  #define cpu_has_svm_vgif      cpu_has_svm_feature(SVM_FEATURE_VGIF)
>  #define cpu_has_pause_filter
> cpu_has_svm_feature(SVM_FEATURE_PAUSEFILTER)
> +#define cpu_has_pause_thresh
> cpu_has_svm_feature(SVM_FEATURE_PAUSETHRESH)
>  #define cpu_has_tsc_ratio
> cpu_has_svm_feature(SVM_FEATURE_TSCRATEMSR)
>  #define cpu_has_svm_vloadsave
> cpu_has_svm_feature(SVM_FEATURE_VLOADSAVE)
> 
> -#define SVM_PAUSEFILTER_INIT    3000
> +#define SVM_PAUSEFILTER_INIT    4000
> +#define SVM_PAUSETHRESH_INIT    1000
> 
>  /* TSC rate */
>  #define DEFAULT_TSC_RATIO       0x0000000100000000ULL
> diff --git a/xen/include/asm-x86/hvm/svm/vmcb.h b/xen/include/asm-
> x86/hvm/svm/vmcb.h
> index 9d5dfc58f2..de07429dff 100644
> --- a/xen/include/asm-x86/hvm/svm/vmcb.h
> +++ b/xen/include/asm-x86/hvm/svm/vmcb.h
> @@ -412,7 +412,7 @@ struct vmcb_struct {
>      u64 res04;                  /* offset 0x28 */
>      u64 res05;                  /* offset 0x30 */
>      u32 res06;                  /* offset 0x38 */
> -    u16 res06a;                 /* offset 0x3C */
> +    u16 _pause_filter_thresh;   /* offset 0x3C - cleanbit 0 */
>      u16 _pause_filter_count;    /* offset 0x3E - cleanbit 0 */
>      u64 _iopm_base_pa;          /* offset 0x40 - cleanbit 1 */
>      u64 _msrpm_base_pa;         /* offset 0x48 - cleanbit 1 */
> @@ -568,6 +568,7 @@ VMCB_ACCESSORS(exception_intercepts, intercepts)
>  VMCB_ACCESSORS(general1_intercepts, intercepts)
>  VMCB_ACCESSORS(general2_intercepts, intercepts)
>  VMCB_ACCESSORS(pause_filter_count, intercepts)
> +VMCB_ACCESSORS(pause_filter_thresh, intercepts)
>  VMCB_ACCESSORS(tsc_offset, intercepts)
>  VMCB_ACCESSORS(iopm_base_pa, iopm)
>  VMCB_ACCESSORS(msrpm_base_pa, iopm)
> --
> 2.11.0


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.