|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |