mirror of
https://github.com/torvalds/linux.git
synced 2026-01-25 07:47:50 +00:00
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
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user