Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
cc867094
Commit
cc867094
authored
Apr 16, 2019
by
Ingo Molnar
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'perf/urgent' into perf/core, to pick up fixes
Signed-off-by:
Ingo Molnar
<
mingo@kernel.org
>
parents
496156e3
9d5dcc93
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
58 additions
and
58 deletions
+58
-58
arch/x86/events/intel/core.c
arch/x86/events/intel/core.c
+1
-1
arch/x86/events/perf_event.h
arch/x86/events/perf_event.h
+19
-19
kernel/events/core.c
kernel/events/core.c
+21
-16
kernel/events/ring_buffer.c
kernel/events/ring_buffer.c
+15
-18
kernel/kprobes.c
kernel/kprobes.c
+2
-4
No files found.
arch/x86/events/intel/core.c
View file @
cc867094
...
...
@@ -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
;
}
...
...
arch/x86/events/perf_event.h
View file @
cc867094
...
...
@@ -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.
...
...
kernel/events/core.c
View file @
cc867094
...
...
@@ -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
;
mm
=
get_task_mm
(
event
->
ctx
->
task
);
if
(
!
mm
)
goto
restart
;
if
(
ifh
->
nr_file_filters
)
{
mm
=
get_task_mm
(
event
->
ctx
->
task
);
if
(
!
mm
)
goto
restart
;
down_read
(
&
mm
->
mmap_sem
);
down_read
(
&
mm
->
mmap_sem
);
}
raw_spin_lock_irqsave
(
&
ifh
->
lock
,
flags
);
list_for_each_entry
(
filter
,
&
ifh
->
list
,
entry
)
{
event
->
addr_filter_ranges
[
count
].
start
=
0
;
event
->
addr_filter_ranges
[
count
].
size
=
0
;
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
++
;
}
...
...
@@ -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
);
up_read
(
&
mm
->
mmap_sem
);
if
(
ifh
->
nr_file_filters
)
{
up_read
(
&
mm
->
mmap_sem
);
mmput
(
mm
);
mmput
(
mm
);
}
restart:
perf_event_stop
(
event
,
1
);
...
...
kernel/events/ring_buffer.c
View file @
cc867094
...
...
@@ -455,24 +455,21 @@ 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
*
* Note: the OVERWRITE records by themselves are not considered
* useful, as they don't communicate any *new* information,
* aside from the short-lived offset, that becomes history at
* the next event sched-in and therefore isn't useful.
* The userspace that needs to copy out AUX data in overwrite
* mode should know to use user_page::aux_head for the actual
* 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
)
perf_event_aux_event
(
handle
->
event
,
aux_head
,
size
,
handle
->
aux_flags
);
}
/*
* Only send RECORD_AUX if we have something useful to communicate
*
* Note: the OVERWRITE records by themselves are not considered
* useful, as they don't communicate any *new* information,
* aside from the short-lived offset, that becomes history at
* the next event sched-in and therefore isn't useful.
* The userspace that needs to copy out AUX data in overwrite
* mode should know to use user_page::aux_head for the actual
* offset. So, from now on we don't output AUX records that
* have *only* OVERWRITE flag set.
*/
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
))
...
...
kernel/kprobes.c
View file @
cc867094
...
...
@@ -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
...
...
@@ -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
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment