lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <ff49b3013a4ff7626c6f6ac574f85348c35ccc42.camel@infradead.org>
Date: Wed, 14 Jan 2026 17:25:37 +0000
From: David Woodhouse <dwmw2@...radead.org>
To: Fernand Sieber <sieberf@...zon.com>, peterz@...radead.org
Cc: abusse@...zon.de, bp@...en8.de, dave.hansen@...ux.intel.com, 
 hborghor@...zon.de, hpa@...or.com, jschoenh@...zon.de, kvm@...r.kernel.org,
  linux-kernel@...r.kernel.org, mingo@...hat.com, nh-open-source@...zon.com,
  nsaenz@...zon.com, pbonzini@...hat.com, seanjc@...gle.com,
 stable@...r.kernel.org,  tglx@...utronix.de, x86@...nel.org
Subject: Re: [PATCH v2] perf/x86/intel: Do not enable BTS for guests

On Thu, 2025-12-11 at 20:36 +0200, Fernand Sieber wrote:
> By default when users program perf to sample branch instructions
> (PERF_COUNT_HW_BRANCH_INSTRUCTIONS) with a sample period of 1, perf
> interprets this as a special case and enables BTS (Branch Trace Store)
> as an optimization to avoid taking an interrupt on every branch.
> 
> Since BTS doesn't virtualize, this optimization doesn't make sense when
> the request originates from a guest. Add an additional check that
> prevents this optimization for virtualized events (exclude_host).
> 
> Reported-by: Jan H. Schönherr <jschoenh@...zon.de>
> Suggested-by: Peter Zijlstra <peterz@...radead.org>
> Signed-off-by: Fernand Sieber <sieberf@...zon.com>

Did this get applied?

I think you want Cc: stable@...r.kernel.org here in the body of the
commit itself, not just on the actual email.

> ---
>  arch/x86/events/perf_event.h | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/x86/events/perf_event.h b/arch/x86/events/perf_event.h
> index 3161ec0a3416..f2e2d9b03367 100644
> --- a/arch/x86/events/perf_event.h
> +++ b/arch/x86/events/perf_event.h
> @@ -1574,13 +1574,22 @@ static inline bool intel_pmu_has_bts_period(struct perf_event *event, u64 period
>  	struct hw_perf_event *hwc = &event->hw;
>  	unsigned int hw_event, bts_event;
>  
> -	if (event->attr.freq)
> +	/*
> +	 * Only use BTS for fixed rate period==1 events.
> +	 */
> +	if (event->attr.freq || period != 1)
> +		return false;
> +
> +	/*
> +	 * BTS doesn't virtualize.
> +	 */
> +	if (event->attr.exclude_host)
>  		return false;
>  
>  	hw_event = hwc->config & INTEL_ARCH_EVENT_MASK;
>  	bts_event = x86_pmu.event_map(PERF_COUNT_HW_BRANCH_INSTRUCTIONS);
>  
> -	return hw_event == bts_event && period == 1;
> +	return hw_event == bts_event;
>  }
>  
>  static inline bool intel_pmu_has_bts(struct perf_event *event)


Download attachment "smime.p7s" of type "application/pkcs7-signature" (5069 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ