Loading arch/x86/events/intel/core.c +1 −1 Original line number Diff line number Diff line Loading @@ -3134,7 +3134,7 @@ static unsigned long intel_pmu_large_pebs_flags(struct perf_event *event) flags &= ~PERF_SAMPLE_TIME; if (!event->attr.exclude_kernel) flags &= ~PERF_SAMPLE_REGS_USER; if (event->attr.sample_regs_user & ~PEBS_REGS) if (event->attr.sample_regs_user & ~PEBS_GP_REGS) flags &= ~(PERF_SAMPLE_REGS_USER | PERF_SAMPLE_REGS_INTR); return flags; } Loading arch/x86/events/perf_event.h +19 −19 Original line number Diff line number Diff line Loading @@ -95,25 +95,25 @@ struct amd_nb { PERF_SAMPLE_REGS_INTR | PERF_SAMPLE_REGS_USER | \ PERF_SAMPLE_PERIOD) #define PEBS_REGS \ (PERF_REG_X86_AX | \ PERF_REG_X86_BX | \ PERF_REG_X86_CX | \ PERF_REG_X86_DX | \ PERF_REG_X86_DI | \ PERF_REG_X86_SI | \ PERF_REG_X86_SP | \ PERF_REG_X86_BP | \ PERF_REG_X86_IP | \ PERF_REG_X86_FLAGS | \ PERF_REG_X86_R8 | \ PERF_REG_X86_R9 | \ PERF_REG_X86_R10 | \ PERF_REG_X86_R11 | \ PERF_REG_X86_R12 | \ PERF_REG_X86_R13 | \ PERF_REG_X86_R14 | \ PERF_REG_X86_R15) #define PEBS_GP_REGS \ ((1ULL << PERF_REG_X86_AX) | \ (1ULL << PERF_REG_X86_BX) | \ (1ULL << PERF_REG_X86_CX) | \ (1ULL << PERF_REG_X86_DX) | \ (1ULL << PERF_REG_X86_DI) | \ (1ULL << PERF_REG_X86_SI) | \ (1ULL << PERF_REG_X86_SP) | \ (1ULL << PERF_REG_X86_BP) | \ (1ULL << PERF_REG_X86_IP) | \ (1ULL << PERF_REG_X86_FLAGS) | \ (1ULL << PERF_REG_X86_R8) | \ (1ULL << PERF_REG_X86_R9) | \ (1ULL << PERF_REG_X86_R10) | \ (1ULL << PERF_REG_X86_R11) | \ (1ULL << PERF_REG_X86_R12) | \ (1ULL << PERF_REG_X86_R13) | \ (1ULL << PERF_REG_X86_R14) | \ (1ULL << PERF_REG_X86_R15)) /* * Per register state. Loading kernel/events/core.c +21 −16 Original line number Diff line number Diff line Loading @@ -9077,26 +9077,29 @@ static void perf_event_addr_filters_apply(struct perf_event *event) if (task == TASK_TOMBSTONE) return; if (!ifh->nr_file_filters) return; if (ifh->nr_file_filters) { mm = get_task_mm(event->ctx->task); if (!mm) goto restart; down_read(&mm->mmap_sem); } raw_spin_lock_irqsave(&ifh->lock, flags); list_for_each_entry(filter, &ifh->list, entry) { if (filter->path.dentry) { /* * Adjust base offset if the filter is associated to a * binary that needs to be mapped: */ event->addr_filter_ranges[count].start = 0; event->addr_filter_ranges[count].size = 0; /* * Adjust base offset if the filter is associated to a binary * that needs to be mapped: */ if (filter->path.dentry) perf_addr_filter_apply(filter, mm, &event->addr_filter_ranges[count]); } else { event->addr_filter_ranges[count].start = filter->offset; event->addr_filter_ranges[count].size = filter->size; } count++; } Loading @@ -9104,9 +9107,11 @@ static void perf_event_addr_filters_apply(struct perf_event *event) event->addr_filters_gen++; raw_spin_unlock_irqrestore(&ifh->lock, flags); if (ifh->nr_file_filters) { up_read(&mm->mmap_sem); mmput(mm); } restart: perf_event_stop(event, 1); Loading kernel/events/ring_buffer.c +15 −18 Original line number Diff line number Diff line Loading @@ -455,7 +455,6 @@ void perf_aux_output_end(struct perf_output_handle *handle, unsigned long size) rb->aux_head += size; } if (size || handle->aux_flags) { /* * Only send RECORD_AUX if we have something useful to communicate * Loading @@ -468,11 +467,9 @@ void perf_aux_output_end(struct perf_output_handle *handle, unsigned long size) * offset. So, from now on we don't output AUX records that * have *only* OVERWRITE flag set. */ if (handle->aux_flags & ~(u64)PERF_AUX_FLAG_OVERWRITE) if (size || (handle->aux_flags & ~(u64)PERF_AUX_FLAG_OVERWRITE)) perf_event_aux_event(handle->event, aux_head, size, handle->aux_flags); } rb->user_page->aux_head = rb->aux_head; if (rb_need_aux_wakeup(rb)) Loading kernel/kprobes.c +2 −4 Original line number Diff line number Diff line Loading @@ -709,7 +709,6 @@ static void unoptimize_kprobe(struct kprobe *p, bool force) static int reuse_unused_kprobe(struct kprobe *ap) { struct optimized_kprobe *op; int ret; /* * Unused kprobe MUST be on the way of delayed unoptimizing (means Loading @@ -720,9 +719,8 @@ static int reuse_unused_kprobe(struct kprobe *ap) /* Enable the probe again */ ap->flags &= ~KPROBE_FLAG_DISABLED; /* Optimize it again (remove from op->list) */ ret = kprobe_optready(ap); if (ret) return ret; if (!kprobe_optready(ap)) return -EINVAL; optimize_kprobe(ap); return 0; Loading Loading
arch/x86/events/intel/core.c +1 −1 Original line number Diff line number Diff line Loading @@ -3134,7 +3134,7 @@ static unsigned long intel_pmu_large_pebs_flags(struct perf_event *event) flags &= ~PERF_SAMPLE_TIME; if (!event->attr.exclude_kernel) flags &= ~PERF_SAMPLE_REGS_USER; if (event->attr.sample_regs_user & ~PEBS_REGS) if (event->attr.sample_regs_user & ~PEBS_GP_REGS) flags &= ~(PERF_SAMPLE_REGS_USER | PERF_SAMPLE_REGS_INTR); return flags; } Loading
arch/x86/events/perf_event.h +19 −19 Original line number Diff line number Diff line Loading @@ -95,25 +95,25 @@ struct amd_nb { PERF_SAMPLE_REGS_INTR | PERF_SAMPLE_REGS_USER | \ PERF_SAMPLE_PERIOD) #define PEBS_REGS \ (PERF_REG_X86_AX | \ PERF_REG_X86_BX | \ PERF_REG_X86_CX | \ PERF_REG_X86_DX | \ PERF_REG_X86_DI | \ PERF_REG_X86_SI | \ PERF_REG_X86_SP | \ PERF_REG_X86_BP | \ PERF_REG_X86_IP | \ PERF_REG_X86_FLAGS | \ PERF_REG_X86_R8 | \ PERF_REG_X86_R9 | \ PERF_REG_X86_R10 | \ PERF_REG_X86_R11 | \ PERF_REG_X86_R12 | \ PERF_REG_X86_R13 | \ PERF_REG_X86_R14 | \ PERF_REG_X86_R15) #define PEBS_GP_REGS \ ((1ULL << PERF_REG_X86_AX) | \ (1ULL << PERF_REG_X86_BX) | \ (1ULL << PERF_REG_X86_CX) | \ (1ULL << PERF_REG_X86_DX) | \ (1ULL << PERF_REG_X86_DI) | \ (1ULL << PERF_REG_X86_SI) | \ (1ULL << PERF_REG_X86_SP) | \ (1ULL << PERF_REG_X86_BP) | \ (1ULL << PERF_REG_X86_IP) | \ (1ULL << PERF_REG_X86_FLAGS) | \ (1ULL << PERF_REG_X86_R8) | \ (1ULL << PERF_REG_X86_R9) | \ (1ULL << PERF_REG_X86_R10) | \ (1ULL << PERF_REG_X86_R11) | \ (1ULL << PERF_REG_X86_R12) | \ (1ULL << PERF_REG_X86_R13) | \ (1ULL << PERF_REG_X86_R14) | \ (1ULL << PERF_REG_X86_R15)) /* * Per register state. Loading
kernel/events/core.c +21 −16 Original line number Diff line number Diff line Loading @@ -9077,26 +9077,29 @@ static void perf_event_addr_filters_apply(struct perf_event *event) if (task == TASK_TOMBSTONE) return; if (!ifh->nr_file_filters) return; if (ifh->nr_file_filters) { mm = get_task_mm(event->ctx->task); if (!mm) goto restart; down_read(&mm->mmap_sem); } raw_spin_lock_irqsave(&ifh->lock, flags); list_for_each_entry(filter, &ifh->list, entry) { if (filter->path.dentry) { /* * Adjust base offset if the filter is associated to a * binary that needs to be mapped: */ event->addr_filter_ranges[count].start = 0; event->addr_filter_ranges[count].size = 0; /* * Adjust base offset if the filter is associated to a binary * that needs to be mapped: */ if (filter->path.dentry) perf_addr_filter_apply(filter, mm, &event->addr_filter_ranges[count]); } else { event->addr_filter_ranges[count].start = filter->offset; event->addr_filter_ranges[count].size = filter->size; } count++; } Loading @@ -9104,9 +9107,11 @@ static void perf_event_addr_filters_apply(struct perf_event *event) event->addr_filters_gen++; raw_spin_unlock_irqrestore(&ifh->lock, flags); if (ifh->nr_file_filters) { up_read(&mm->mmap_sem); mmput(mm); } restart: perf_event_stop(event, 1); Loading
kernel/events/ring_buffer.c +15 −18 Original line number Diff line number Diff line Loading @@ -455,7 +455,6 @@ void perf_aux_output_end(struct perf_output_handle *handle, unsigned long size) rb->aux_head += size; } if (size || handle->aux_flags) { /* * Only send RECORD_AUX if we have something useful to communicate * Loading @@ -468,11 +467,9 @@ void perf_aux_output_end(struct perf_output_handle *handle, unsigned long size) * offset. So, from now on we don't output AUX records that * have *only* OVERWRITE flag set. */ if (handle->aux_flags & ~(u64)PERF_AUX_FLAG_OVERWRITE) if (size || (handle->aux_flags & ~(u64)PERF_AUX_FLAG_OVERWRITE)) perf_event_aux_event(handle->event, aux_head, size, handle->aux_flags); } rb->user_page->aux_head = rb->aux_head; if (rb_need_aux_wakeup(rb)) Loading
kernel/kprobes.c +2 −4 Original line number Diff line number Diff line Loading @@ -709,7 +709,6 @@ static void unoptimize_kprobe(struct kprobe *p, bool force) static int reuse_unused_kprobe(struct kprobe *ap) { struct optimized_kprobe *op; int ret; /* * Unused kprobe MUST be on the way of delayed unoptimizing (means Loading @@ -720,9 +719,8 @@ static int reuse_unused_kprobe(struct kprobe *ap) /* Enable the probe again */ ap->flags &= ~KPROBE_FLAG_DISABLED; /* Optimize it again (remove from op->list) */ ret = kprobe_optready(ap); if (ret) return ret; if (!kprobe_optready(ap)) return -EINVAL; optimize_kprobe(ap); return 0; Loading