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
ab78f7ad
Commit
ab78f7ad
authored
Dec 17, 2010
by
Jeremy Fitzhardinge
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
xen/trace: add segment desc tracing
Signed-off-by:
Jeremy Fitzhardinge
<
jeremy.fitzhardinge@citrix.com
>
parent
5f94fb5b
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
90 additions
and
1 deletion
+90
-1
arch/x86/xen/enlighten.c
arch/x86/xen/enlighten.c
+15
-1
include/trace/events/xen.h
include/trace/events/xen.h
+75
-0
No files found.
arch/x86/xen/enlighten.c
View file @
ab78f7ad
...
...
@@ -341,6 +341,8 @@ static void xen_set_ldt(const void *addr, unsigned entries)
struct
mmuext_op
*
op
;
struct
multicall_space
mcs
=
xen_mc_entry
(
sizeof
(
*
op
));
trace_xen_cpu_set_ldt
(
addr
,
entries
);
op
=
mcs
.
args
;
op
->
cmd
=
MMUEXT_SET_LDT
;
op
->
arg1
.
linear_addr
=
(
unsigned
long
)
addr
;
...
...
@@ -496,6 +498,8 @@ static void xen_write_ldt_entry(struct desc_struct *dt, int entrynum,
xmaddr_t
mach_lp
=
arbitrary_virt_to_machine
(
&
dt
[
entrynum
]);
u64
entry
=
*
(
u64
*
)
ptr
;
trace_xen_cpu_write_ldt_entry
(
dt
,
entrynum
,
entry
);
preempt_disable
();
xen_mc_flush
();
...
...
@@ -565,6 +569,8 @@ static void xen_write_idt_entry(gate_desc *dt, int entrynum, const gate_desc *g)
unsigned
long
p
=
(
unsigned
long
)
&
dt
[
entrynum
];
unsigned
long
start
,
end
;
trace_xen_cpu_write_idt_entry
(
dt
,
entrynum
,
g
);
preempt_disable
();
start
=
__this_cpu_read
(
idt_desc
.
address
);
...
...
@@ -619,6 +625,8 @@ static void xen_load_idt(const struct desc_ptr *desc)
static
DEFINE_SPINLOCK
(
lock
);
static
struct
trap_info
traps
[
257
];
trace_xen_cpu_load_idt
(
desc
);
spin_lock
(
&
lock
);
__get_cpu_var
(
idt_desc
)
=
*
desc
;
...
...
@@ -637,6 +645,8 @@ static void xen_load_idt(const struct desc_ptr *desc)
static
void
xen_write_gdt_entry
(
struct
desc_struct
*
dt
,
int
entry
,
const
void
*
desc
,
int
type
)
{
trace_xen_cpu_write_gdt_entry
(
dt
,
entry
,
desc
,
type
);
preempt_disable
();
switch
(
type
)
{
...
...
@@ -665,6 +675,8 @@ static void xen_write_gdt_entry(struct desc_struct *dt, int entry,
static
void
__init
xen_write_gdt_entry_boot
(
struct
desc_struct
*
dt
,
int
entry
,
const
void
*
desc
,
int
type
)
{
trace_xen_cpu_write_gdt_entry
(
dt
,
entry
,
desc
,
type
);
switch
(
type
)
{
case
DESC_LDT
:
case
DESC_TSS
:
...
...
@@ -684,7 +696,9 @@ static void __init xen_write_gdt_entry_boot(struct desc_struct *dt, int entry,
static
void
xen_load_sp0
(
struct
tss_struct
*
tss
,
struct
thread_struct
*
thread
)
{
struct
multicall_space
mcs
=
xen_mc_entry
(
0
);
struct
multicall_space
mcs
;
mcs
=
xen_mc_entry
(
0
);
MULTI_stack_switch
(
mcs
.
mc
,
__KERNEL_DS
,
thread
->
sp0
);
xen_mc_issue
(
PARAVIRT_LAZY_CPU
);
}
...
...
include/trace/events/xen.h
View file @
ab78f7ad
...
...
@@ -405,6 +405,81 @@ TRACE_EVENT(xen_mmu_pgd_unpin,
TP_printk
(
"mm %p pgd %p"
,
__entry
->
mm
,
__entry
->
pgd
)
);
/* CPU */
TRACE_EVENT
(
xen_cpu_write_ldt_entry
,
TP_PROTO
(
struct
desc_struct
*
dt
,
int
entrynum
,
u64
desc
),
TP_ARGS
(
dt
,
entrynum
,
desc
),
TP_STRUCT__entry
(
__field
(
struct
desc_struct
*
,
dt
)
__field
(
int
,
entrynum
)
__field
(
u64
,
desc
)
),
TP_fast_assign
(
__entry
->
dt
=
dt
;
__entry
->
entrynum
=
entrynum
;
__entry
->
desc
=
desc
;
),
TP_printk
(
"dt %p entrynum %d entry %016llx"
,
__entry
->
dt
,
__entry
->
entrynum
,
(
unsigned
long
long
)
__entry
->
desc
)
);
TRACE_EVENT
(
xen_cpu_write_idt_entry
,
TP_PROTO
(
gate_desc
*
dt
,
int
entrynum
,
const
gate_desc
*
ent
),
TP_ARGS
(
dt
,
entrynum
,
ent
),
TP_STRUCT__entry
(
__field
(
gate_desc
*
,
dt
)
__field
(
int
,
entrynum
)
),
TP_fast_assign
(
__entry
->
dt
=
dt
;
__entry
->
entrynum
=
entrynum
;
),
TP_printk
(
"dt %p entrynum %d"
,
__entry
->
dt
,
__entry
->
entrynum
)
);
TRACE_EVENT
(
xen_cpu_load_idt
,
TP_PROTO
(
const
struct
desc_ptr
*
desc
),
TP_ARGS
(
desc
),
TP_STRUCT__entry
(
__field
(
unsigned
long
,
addr
)
),
TP_fast_assign
(
__entry
->
addr
=
desc
->
address
),
TP_printk
(
"addr %lx"
,
__entry
->
addr
)
);
TRACE_EVENT
(
xen_cpu_write_gdt_entry
,
TP_PROTO
(
struct
desc_struct
*
dt
,
int
entrynum
,
const
void
*
desc
,
int
type
),
TP_ARGS
(
dt
,
entrynum
,
desc
,
type
),
TP_STRUCT__entry
(
__field
(
u64
,
desc
)
__field
(
struct
desc_struct
*
,
dt
)
__field
(
int
,
entrynum
)
__field
(
int
,
type
)
),
TP_fast_assign
(
__entry
->
dt
=
dt
;
__entry
->
entrynum
=
entrynum
;
__entry
->
desc
=
*
(
u64
*
)
desc
;
__entry
->
type
=
type
;
),
TP_printk
(
"dt %p entrynum %d type %d desc %016llx"
,
__entry
->
dt
,
__entry
->
entrynum
,
__entry
->
type
,
(
unsigned
long
long
)
__entry
->
desc
)
);
TRACE_EVENT
(
xen_cpu_set_ldt
,
TP_PROTO
(
const
void
*
addr
,
unsigned
entries
),
TP_ARGS
(
addr
,
entries
),
TP_STRUCT__entry
(
__field
(
const
void
*
,
addr
)
__field
(
unsigned
,
entries
)
),
TP_fast_assign
(
__entry
->
addr
=
addr
;
__entry
->
entries
=
entries
),
TP_printk
(
"addr %p entries %u"
,
__entry
->
addr
,
__entry
->
entries
)
);
#endif
/* _TRACE_XEN_H */
/* This part must be outside protection */
...
...
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