Re: [PATCH v2 1/2] perf/x86/intel: Expose EPT-friendly PEBS for SPR and future models

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

 




On 2022-09-22 1:19 a.m., Like Xu wrote:
> From: Like Xu <likexu@xxxxxxxxxxx>
> 
> According to Intel SDM, the EPT-friendly PEBS is supported by all the
> platforms after ICX, ADL and the future platforms with PEBS format 5.
> 
> Currently the only in-kernel user of this capability is KVM, which has
> very limited support for hybrid core pmu, so ADL and its successors do
> not currently expose this capability. When both hybrid core and PEBS
> format 5 are present, KVM will decide on its own merits.
> 
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Cc: linux-perf-users@xxxxxxxxxxxxxxx
> Suggested-by: Kan Liang <kan.liang@xxxxxxxxxxxxxxx>
> Signed-off-by: Like Xu <likexu@xxxxxxxxxxx>


Reviewed-by: Kan Liang <kan.liang@xxxxxxxxxxxxxxx>

Thanks,
Kan

> ---
> V1 -> V2 Changelog:
> - the perf part should be a separate patch; (Kan)
> - apply PEBS format 5 to avoid patching every future model; (Kan)
> 
>  arch/x86/events/intel/core.c | 1 +
>  arch/x86/events/intel/ds.c   | 4 +++-
>  2 files changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
> index 2db93498ff71..804540ba4599 100644
> --- a/arch/x86/events/intel/core.c
> +++ b/arch/x86/events/intel/core.c
> @@ -6288,6 +6288,7 @@ __init int intel_pmu_init(void)
>  		x86_pmu.pebs_constraints = intel_spr_pebs_event_constraints;
>  		x86_pmu.extra_regs = intel_spr_extra_regs;
>  		x86_pmu.limit_period = spr_limit_period;
> +		x86_pmu.pebs_ept = 1;
>  		x86_pmu.pebs_aliases = NULL;
>  		x86_pmu.pebs_prec_dist = true;
>  		x86_pmu.pebs_block = true;
> diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c
> index ba60427caa6d..4e937f685cdc 100644
> --- a/arch/x86/events/intel/ds.c
> +++ b/arch/x86/events/intel/ds.c
> @@ -2253,8 +2253,10 @@ void __init intel_ds_init(void)
>  			x86_pmu.large_pebs_flags |= PERF_SAMPLE_TIME;
>  			break;
>  
> -		case 4:
>  		case 5:
> +			x86_pmu.pebs_ept = 1;
> +			fallthrough;
> +		case 4:
>  			x86_pmu.drain_pebs = intel_pmu_drain_pebs_icl;
>  			x86_pmu.pebs_record_size = sizeof(struct pebs_basic);
>  			if (x86_pmu.intel_cap.pebs_baseline) {



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux