Commit ceaeaf66 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'perf-urgent-2026-01-24' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull perf events fixes from Ingo Molnar:

 - Fix mmap_count warning & bug when creating a group member event
   with the PERF_FLAG_FD_OUTPUT flag

 - Disable the sample period == 1 branch events BTS optimization
   on guests, because BTS is not virtualized

* tag 'perf-urgent-2026-01-24' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  perf/x86/intel: Do not enable BTS for guests
  perf: Fix refcount warning on event->mmap_count increment
parents dc67a355 91dcfae0
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -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)
+9 −0
Original line number Diff line number Diff line
@@ -6997,6 +6997,15 @@ static int perf_mmap_rb(struct vm_area_struct *vma, struct perf_event *event,
		if (data_page_nr(event->rb) != nr_pages)
			return -EINVAL;

		/*
		 * If this event doesn't have mmap_count, we're attempting to
		 * create an alias of another event's mmap(); this would mean
		 * both events will end up scribbling the same user_page;
		 * which makes no sense.
		 */
		if (!refcount_read(&event->mmap_count))
			return -EBUSY;

		if (refcount_inc_not_zero(&event->rb->mmap_count)) {
			/*
			 * Success -- managed to mmap() the same buffer