Looks good. 
Reviewed-by: Babu Moger <babu.mo...@amd.com>

> -----Original Message-----
> From: Woods, Brian
> Sent: Tuesday, February 20, 2018 6:13 PM
> To: xen-de...@lists.xen.org
> Cc: Boris Ostrovsky <boris.ostrov...@oracle.com>; Suthikulpanit, Suravee
> <suravee.suthikulpa...@amd.com>; Jan Beulich <jbeul...@suse.com>;
> Andrew Cooper <andrew.coop...@citrix.com>; Woods, Brian
> <brian.wo...@amd.com>
> 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.wo...@amd.com>
> ---
>  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@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to