forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-13 9d77db3c730780c8ef5ccd4b66403ff5675cfe4e
kernel/arch/x86/kvm/trace.h
....@@ -15,18 +15,20 @@
1515 * Tracepoint for guest mode entry.
1616 */
1717 TRACE_EVENT(kvm_entry,
18
- TP_PROTO(unsigned int vcpu_id),
19
- TP_ARGS(vcpu_id),
18
+ TP_PROTO(struct kvm_vcpu *vcpu),
19
+ TP_ARGS(vcpu),
2020
2121 TP_STRUCT__entry(
2222 __field( unsigned int, vcpu_id )
23
+ __field( unsigned long, rip )
2324 ),
2425
2526 TP_fast_assign(
26
- __entry->vcpu_id = vcpu_id;
27
+ __entry->vcpu_id = vcpu->vcpu_id;
28
+ __entry->rip = kvm_rip_read(vcpu);
2729 ),
2830
29
- TP_printk("vcpu %u", __entry->vcpu_id)
31
+ TP_printk("vcpu %u, rip 0x%lx", __entry->vcpu_id, __entry->rip)
3032 );
3133
3234 /*
....@@ -151,32 +153,38 @@
151153 * Tracepoint for cpuid.
152154 */
153155 TRACE_EVENT(kvm_cpuid,
154
- TP_PROTO(unsigned int function, unsigned long rax, unsigned long rbx,
155
- unsigned long rcx, unsigned long rdx, bool found),
156
- TP_ARGS(function, rax, rbx, rcx, rdx, found),
156
+ TP_PROTO(unsigned int function, unsigned int index, unsigned long rax,
157
+ unsigned long rbx, unsigned long rcx, unsigned long rdx,
158
+ bool found, bool used_max_basic),
159
+ TP_ARGS(function, index, rax, rbx, rcx, rdx, found, used_max_basic),
157160
158161 TP_STRUCT__entry(
159162 __field( unsigned int, function )
163
+ __field( unsigned int, index )
160164 __field( unsigned long, rax )
161165 __field( unsigned long, rbx )
162166 __field( unsigned long, rcx )
163167 __field( unsigned long, rdx )
164168 __field( bool, found )
169
+ __field( bool, used_max_basic )
165170 ),
166171
167172 TP_fast_assign(
168173 __entry->function = function;
174
+ __entry->index = index;
169175 __entry->rax = rax;
170176 __entry->rbx = rbx;
171177 __entry->rcx = rcx;
172178 __entry->rdx = rdx;
173179 __entry->found = found;
180
+ __entry->used_max_basic = used_max_basic;
174181 ),
175182
176
- TP_printk("func %x rax %lx rbx %lx rcx %lx rdx %lx, cpuid entry %s",
177
- __entry->function, __entry->rax,
183
+ TP_printk("func %x idx %x rax %lx rbx %lx rcx %lx rdx %lx, cpuid entry %s%s",
184
+ __entry->function, __entry->index, __entry->rax,
178185 __entry->rbx, __entry->rcx, __entry->rdx,
179
- __entry->found ? "found" : "not found")
186
+ __entry->found ? "found" : "not found",
187
+ __entry->used_max_basic ? ", used max basic" : "")
180188 );
181189
182190 #define AREG(x) { APIC_##x, "APIC_" #x }
....@@ -219,35 +227,53 @@
219227 #define KVM_ISA_VMX 1
220228 #define KVM_ISA_SVM 2
221229
230
+#define kvm_print_exit_reason(exit_reason, isa) \
231
+ (isa == KVM_ISA_VMX) ? \
232
+ __print_symbolic(exit_reason & 0xffff, VMX_EXIT_REASONS) : \
233
+ __print_symbolic(exit_reason, SVM_EXIT_REASONS), \
234
+ (isa == KVM_ISA_VMX && exit_reason & ~0xffff) ? " " : "", \
235
+ (isa == KVM_ISA_VMX) ? \
236
+ __print_flags(exit_reason & ~0xffff, " ", VMX_EXIT_REASON_FLAGS) : ""
237
+
238
+#define TRACE_EVENT_KVM_EXIT(name) \
239
+TRACE_EVENT(name, \
240
+ TP_PROTO(unsigned int exit_reason, struct kvm_vcpu *vcpu, u32 isa), \
241
+ TP_ARGS(exit_reason, vcpu, isa), \
242
+ \
243
+ TP_STRUCT__entry( \
244
+ __field( unsigned int, exit_reason ) \
245
+ __field( unsigned long, guest_rip ) \
246
+ __field( u32, isa ) \
247
+ __field( u64, info1 ) \
248
+ __field( u64, info2 ) \
249
+ __field( u32, intr_info ) \
250
+ __field( u32, error_code ) \
251
+ __field( unsigned int, vcpu_id ) \
252
+ ), \
253
+ \
254
+ TP_fast_assign( \
255
+ __entry->exit_reason = exit_reason; \
256
+ __entry->guest_rip = kvm_rip_read(vcpu); \
257
+ __entry->isa = isa; \
258
+ __entry->vcpu_id = vcpu->vcpu_id; \
259
+ kvm_x86_ops.get_exit_info(vcpu, &__entry->info1, \
260
+ &__entry->info2, \
261
+ &__entry->intr_info, \
262
+ &__entry->error_code); \
263
+ ), \
264
+ \
265
+ TP_printk("vcpu %u reason %s%s%s rip 0x%lx info1 0x%016llx " \
266
+ "info2 0x%016llx intr_info 0x%08x error_code 0x%08x", \
267
+ __entry->vcpu_id, \
268
+ kvm_print_exit_reason(__entry->exit_reason, __entry->isa), \
269
+ __entry->guest_rip, __entry->info1, __entry->info2, \
270
+ __entry->intr_info, __entry->error_code) \
271
+)
272
+
222273 /*
223274 * Tracepoint for kvm guest exit:
224275 */
225
-TRACE_EVENT(kvm_exit,
226
- TP_PROTO(unsigned int exit_reason, struct kvm_vcpu *vcpu, u32 isa),
227
- TP_ARGS(exit_reason, vcpu, isa),
228
-
229
- TP_STRUCT__entry(
230
- __field( unsigned int, exit_reason )
231
- __field( unsigned long, guest_rip )
232
- __field( u32, isa )
233
- __field( u64, info1 )
234
- __field( u64, info2 )
235
- ),
236
-
237
- TP_fast_assign(
238
- __entry->exit_reason = exit_reason;
239
- __entry->guest_rip = kvm_rip_read(vcpu);
240
- __entry->isa = isa;
241
- kvm_x86_ops->get_exit_info(vcpu, &__entry->info1,
242
- &__entry->info2);
243
- ),
244
-
245
- TP_printk("reason %s rip 0x%lx info %llx %llx",
246
- (__entry->isa == KVM_ISA_VMX) ?
247
- __print_symbolic(__entry->exit_reason, VMX_EXIT_REASONS) :
248
- __print_symbolic(__entry->exit_reason, SVM_EXIT_REASONS),
249
- __entry->guest_rip, __entry->info1, __entry->info2)
250
-);
276
+TRACE_EVENT_KVM_EXIT(kvm_exit);
251277
252278 /*
253279 * Tracepoint for kvm interrupt injection:
....@@ -278,25 +304,29 @@
278304 * Tracepoint for kvm interrupt injection:
279305 */
280306 TRACE_EVENT(kvm_inj_exception,
281
- TP_PROTO(unsigned exception, bool has_error, unsigned error_code),
282
- TP_ARGS(exception, has_error, error_code),
307
+ TP_PROTO(unsigned exception, bool has_error, unsigned error_code,
308
+ bool reinjected),
309
+ TP_ARGS(exception, has_error, error_code, reinjected),
283310
284311 TP_STRUCT__entry(
285312 __field( u8, exception )
286313 __field( u8, has_error )
287314 __field( u32, error_code )
315
+ __field( bool, reinjected )
288316 ),
289317
290318 TP_fast_assign(
291319 __entry->exception = exception;
292320 __entry->has_error = has_error;
293321 __entry->error_code = error_code;
322
+ __entry->reinjected = reinjected;
294323 ),
295324
296
- TP_printk("%s (0x%x)",
325
+ TP_printk("%s (0x%x)%s",
297326 __print_symbolic(__entry->exception, kvm_trace_sym_exc),
298327 /* FIXME: don't print error_code if not present */
299
- __entry->has_error ? __entry->error_code : 0)
328
+ __entry->has_error ? __entry->error_code : 0,
329
+ __entry->reinjected ? " [reinjected]" : "")
300330 );
301331
302332 /*
....@@ -529,65 +559,38 @@
529559 );
530560
531561 TRACE_EVENT(kvm_nested_intercepts,
532
- TP_PROTO(__u16 cr_read, __u16 cr_write, __u32 exceptions, __u64 intercept),
533
- TP_ARGS(cr_read, cr_write, exceptions, intercept),
562
+ TP_PROTO(__u16 cr_read, __u16 cr_write, __u32 exceptions,
563
+ __u32 intercept1, __u32 intercept2, __u32 intercept3),
564
+ TP_ARGS(cr_read, cr_write, exceptions, intercept1,
565
+ intercept2, intercept3),
534566
535567 TP_STRUCT__entry(
536568 __field( __u16, cr_read )
537569 __field( __u16, cr_write )
538570 __field( __u32, exceptions )
539
- __field( __u64, intercept )
571
+ __field( __u32, intercept1 )
572
+ __field( __u32, intercept2 )
573
+ __field( __u32, intercept3 )
540574 ),
541575
542576 TP_fast_assign(
543577 __entry->cr_read = cr_read;
544578 __entry->cr_write = cr_write;
545579 __entry->exceptions = exceptions;
546
- __entry->intercept = intercept;
580
+ __entry->intercept1 = intercept1;
581
+ __entry->intercept2 = intercept2;
582
+ __entry->intercept3 = intercept3;
547583 ),
548584
549
- TP_printk("cr_read: %04x cr_write: %04x excp: %08x intercept: %016llx",
550
- __entry->cr_read, __entry->cr_write, __entry->exceptions,
551
- __entry->intercept)
585
+ TP_printk("cr_read: %04x cr_write: %04x excp: %08x "
586
+ "intercepts: %08x %08x %08x",
587
+ __entry->cr_read, __entry->cr_write, __entry->exceptions,
588
+ __entry->intercept1, __entry->intercept2, __entry->intercept3)
552589 );
553590 /*
554591 * Tracepoint for #VMEXIT while nested
555592 */
556
-TRACE_EVENT(kvm_nested_vmexit,
557
- TP_PROTO(__u64 rip, __u32 exit_code,
558
- __u64 exit_info1, __u64 exit_info2,
559
- __u32 exit_int_info, __u32 exit_int_info_err, __u32 isa),
560
- TP_ARGS(rip, exit_code, exit_info1, exit_info2,
561
- exit_int_info, exit_int_info_err, isa),
562
-
563
- TP_STRUCT__entry(
564
- __field( __u64, rip )
565
- __field( __u32, exit_code )
566
- __field( __u64, exit_info1 )
567
- __field( __u64, exit_info2 )
568
- __field( __u32, exit_int_info )
569
- __field( __u32, exit_int_info_err )
570
- __field( __u32, isa )
571
- ),
572
-
573
- TP_fast_assign(
574
- __entry->rip = rip;
575
- __entry->exit_code = exit_code;
576
- __entry->exit_info1 = exit_info1;
577
- __entry->exit_info2 = exit_info2;
578
- __entry->exit_int_info = exit_int_info;
579
- __entry->exit_int_info_err = exit_int_info_err;
580
- __entry->isa = isa;
581
- ),
582
- TP_printk("rip: 0x%016llx reason: %s ext_inf1: 0x%016llx "
583
- "ext_inf2: 0x%016llx ext_int: 0x%08x ext_int_err: 0x%08x",
584
- __entry->rip,
585
- (__entry->isa == KVM_ISA_VMX) ?
586
- __print_symbolic(__entry->exit_code, VMX_EXIT_REASONS) :
587
- __print_symbolic(__entry->exit_code, SVM_EXIT_REASONS),
588
- __entry->exit_info1, __entry->exit_info2,
589
- __entry->exit_int_info, __entry->exit_int_info_err)
590
-);
593
+TRACE_EVENT_KVM_EXIT(kvm_nested_vmexit);
591594
592595 /*
593596 * Tracepoint for #VMEXIT reinjected to the guest
....@@ -617,13 +620,11 @@
617620 __entry->isa = isa;
618621 ),
619622
620
- TP_printk("reason: %s ext_inf1: 0x%016llx "
623
+ TP_printk("reason: %s%s%s ext_inf1: 0x%016llx "
621624 "ext_inf2: 0x%016llx ext_int: 0x%08x ext_int_err: 0x%08x",
622
- (__entry->isa == KVM_ISA_VMX) ?
623
- __print_symbolic(__entry->exit_code, VMX_EXIT_REASONS) :
624
- __print_symbolic(__entry->exit_code, SVM_EXIT_REASONS),
625
- __entry->exit_info1, __entry->exit_info2,
626
- __entry->exit_int_info, __entry->exit_int_info_err)
625
+ kvm_print_exit_reason(__entry->exit_code, __entry->isa),
626
+ __entry->exit_info1, __entry->exit_info2,
627
+ __entry->exit_int_info, __entry->exit_int_info_err)
627628 );
628629
629630 /*
....@@ -741,14 +742,14 @@
741742 ),
742743
743744 TP_fast_assign(
744
- __entry->csbase = kvm_x86_ops->get_segment_base(vcpu, VCPU_SREG_CS);
745
- __entry->len = vcpu->arch.emulate_ctxt.fetch.ptr
746
- - vcpu->arch.emulate_ctxt.fetch.data;
747
- __entry->rip = vcpu->arch.emulate_ctxt._eip - __entry->len;
745
+ __entry->csbase = kvm_x86_ops.get_segment_base(vcpu, VCPU_SREG_CS);
746
+ __entry->len = vcpu->arch.emulate_ctxt->fetch.ptr
747
+ - vcpu->arch.emulate_ctxt->fetch.data;
748
+ __entry->rip = vcpu->arch.emulate_ctxt->_eip - __entry->len;
748749 memcpy(__entry->insn,
749
- vcpu->arch.emulate_ctxt.fetch.data,
750
+ vcpu->arch.emulate_ctxt->fetch.data,
750751 15);
751
- __entry->flags = kei_decode_mode(vcpu->arch.emulate_ctxt.mode);
752
+ __entry->flags = kei_decode_mode(vcpu->arch.emulate_ctxt->mode);
752753 __entry->failed = failed;
753754 ),
754755
....@@ -812,8 +813,8 @@
812813 #ifdef CONFIG_X86_64
813814
814815 #define host_clocks \
815
- {VCLOCK_NONE, "none"}, \
816
- {VCLOCK_TSC, "tsc"} \
816
+ {VDSO_CLOCKMODE_NONE, "none"}, \
817
+ {VDSO_CLOCKMODE_TSC, "tsc"} \
817818
818819 TRACE_EVENT(kvm_update_master_clock,
819820 TP_PROTO(bool use_master_clock, unsigned int host_clock, bool offset_matched),
....@@ -887,35 +888,26 @@
887888 TP_printk("vcpu %d: PML full", __entry->vcpu_id)
888889 );
889890
890
-TRACE_EVENT(kvm_ple_window,
891
- TP_PROTO(bool grow, unsigned int vcpu_id, int new, int old),
892
- TP_ARGS(grow, vcpu_id, new, old),
891
+TRACE_EVENT(kvm_ple_window_update,
892
+ TP_PROTO(unsigned int vcpu_id, unsigned int new, unsigned int old),
893
+ TP_ARGS(vcpu_id, new, old),
893894
894895 TP_STRUCT__entry(
895
- __field( bool, grow )
896896 __field( unsigned int, vcpu_id )
897
- __field( int, new )
898
- __field( int, old )
897
+ __field( unsigned int, new )
898
+ __field( unsigned int, old )
899899 ),
900900
901901 TP_fast_assign(
902
- __entry->grow = grow;
903902 __entry->vcpu_id = vcpu_id;
904903 __entry->new = new;
905904 __entry->old = old;
906905 ),
907906
908
- TP_printk("vcpu %u: ple_window %d (%s %d)",
909
- __entry->vcpu_id,
910
- __entry->new,
911
- __entry->grow ? "grow" : "shrink",
912
- __entry->old)
907
+ TP_printk("vcpu %u old %u new %u (%s)",
908
+ __entry->vcpu_id, __entry->old, __entry->new,
909
+ __entry->old < __entry->new ? "growed" : "shrinked")
913910 );
914
-
915
-#define trace_kvm_ple_window_grow(vcpu_id, new, old) \
916
- trace_kvm_ple_window(true, vcpu_id, new, old)
917
-#define trace_kvm_ple_window_shrink(vcpu_id, new, old) \
918
- trace_kvm_ple_window(false, vcpu_id, new, old)
919911
920912 TRACE_EVENT(kvm_pvclock_update,
921913 TP_PROTO(unsigned int vcpu_id, struct pvclock_vcpu_time_info *pvclock),
....@@ -1254,24 +1246,26 @@
12541246 * Tracepoint for stimer_expiration.
12551247 */
12561248 TRACE_EVENT(kvm_hv_stimer_expiration,
1257
- TP_PROTO(int vcpu_id, int timer_index, int msg_send_result),
1258
- TP_ARGS(vcpu_id, timer_index, msg_send_result),
1249
+ TP_PROTO(int vcpu_id, int timer_index, int direct, int msg_send_result),
1250
+ TP_ARGS(vcpu_id, timer_index, direct, msg_send_result),
12591251
12601252 TP_STRUCT__entry(
12611253 __field(int, vcpu_id)
12621254 __field(int, timer_index)
1255
+ __field(int, direct)
12631256 __field(int, msg_send_result)
12641257 ),
12651258
12661259 TP_fast_assign(
12671260 __entry->vcpu_id = vcpu_id;
12681261 __entry->timer_index = timer_index;
1262
+ __entry->direct = direct;
12691263 __entry->msg_send_result = msg_send_result;
12701264 ),
12711265
1272
- TP_printk("vcpu_id %d timer %d msg send result %d",
1266
+ TP_printk("vcpu_id %d timer %d direct %d send result %d",
12731267 __entry->vcpu_id, __entry->timer_index,
1274
- __entry->msg_send_result)
1268
+ __entry->direct, __entry->msg_send_result)
12751269 );
12761270
12771271 /*
....@@ -1293,6 +1287,25 @@
12931287
12941288 TP_printk("vcpu_id %d timer %d",
12951289 __entry->vcpu_id, __entry->timer_index)
1290
+);
1291
+
1292
+TRACE_EVENT(kvm_apicv_update_request,
1293
+ TP_PROTO(bool activate, unsigned long bit),
1294
+ TP_ARGS(activate, bit),
1295
+
1296
+ TP_STRUCT__entry(
1297
+ __field(bool, activate)
1298
+ __field(unsigned long, bit)
1299
+ ),
1300
+
1301
+ TP_fast_assign(
1302
+ __entry->activate = activate;
1303
+ __entry->bit = bit;
1304
+ ),
1305
+
1306
+ TP_printk("%s bit=%lu",
1307
+ __entry->activate ? "activate" : "deactivate",
1308
+ __entry->bit)
12961309 );
12971310
12981311 /*
....@@ -1318,7 +1331,7 @@
13181331 __entry->index = index;
13191332 ),
13201333
1321
- TP_printk("vcpu=%u, icrh:icrl=%#010x:%08x, id=%u, index=%u\n",
1334
+ TP_printk("vcpu=%u, icrh:icrl=%#010x:%08x, id=%u, index=%u",
13221335 __entry->vcpu, __entry->icrh, __entry->icrl,
13231336 __entry->id, __entry->index)
13241337 );
....@@ -1343,13 +1356,31 @@
13431356 __entry->vec = vec;
13441357 ),
13451358
1346
- TP_printk("vcpu=%u, offset=%#x(%s), %s, %s, vec=%#x\n",
1359
+ TP_printk("vcpu=%u, offset=%#x(%s), %s, %s, vec=%#x",
13471360 __entry->vcpu,
13481361 __entry->offset,
13491362 __print_symbolic(__entry->offset, kvm_trace_symbol_apic),
13501363 __entry->ft ? "trap" : "fault",
13511364 __entry->rw ? "write" : "read",
13521365 __entry->vec)
1366
+);
1367
+
1368
+TRACE_EVENT(kvm_avic_ga_log,
1369
+ TP_PROTO(u32 vmid, u32 vcpuid),
1370
+ TP_ARGS(vmid, vcpuid),
1371
+
1372
+ TP_STRUCT__entry(
1373
+ __field(u32, vmid)
1374
+ __field(u32, vcpuid)
1375
+ ),
1376
+
1377
+ TP_fast_assign(
1378
+ __entry->vmid = vmid;
1379
+ __entry->vcpuid = vcpuid;
1380
+ ),
1381
+
1382
+ TP_printk("vmid=%u, vcpuid=%u",
1383
+ __entry->vmid, __entry->vcpuid)
13531384 );
13541385
13551386 TRACE_EVENT(kvm_hv_timer_state,
....@@ -1363,7 +1394,7 @@
13631394 __entry->vcpu_id = vcpu_id;
13641395 __entry->hv_timer_in_use = hv_timer_in_use;
13651396 ),
1366
- TP_printk("vcpu_id %x hv_timer %x\n",
1397
+ TP_printk("vcpu_id %x hv_timer %x",
13671398 __entry->vcpu_id,
13681399 __entry->hv_timer_in_use)
13691400 );
....@@ -1418,10 +1449,143 @@
14181449 __entry->valid_bank_mask, __entry->format,
14191450 __entry->address_space, __entry->flags)
14201451 );
1452
+
1453
+/*
1454
+ * Tracepoints for kvm_hv_send_ipi.
1455
+ */
1456
+TRACE_EVENT(kvm_hv_send_ipi,
1457
+ TP_PROTO(u32 vector, u64 processor_mask),
1458
+ TP_ARGS(vector, processor_mask),
1459
+
1460
+ TP_STRUCT__entry(
1461
+ __field(u32, vector)
1462
+ __field(u64, processor_mask)
1463
+ ),
1464
+
1465
+ TP_fast_assign(
1466
+ __entry->vector = vector;
1467
+ __entry->processor_mask = processor_mask;
1468
+ ),
1469
+
1470
+ TP_printk("vector %x processor_mask 0x%llx",
1471
+ __entry->vector, __entry->processor_mask)
1472
+);
1473
+
1474
+TRACE_EVENT(kvm_hv_send_ipi_ex,
1475
+ TP_PROTO(u32 vector, u64 format, u64 valid_bank_mask),
1476
+ TP_ARGS(vector, format, valid_bank_mask),
1477
+
1478
+ TP_STRUCT__entry(
1479
+ __field(u32, vector)
1480
+ __field(u64, format)
1481
+ __field(u64, valid_bank_mask)
1482
+ ),
1483
+
1484
+ TP_fast_assign(
1485
+ __entry->vector = vector;
1486
+ __entry->format = format;
1487
+ __entry->valid_bank_mask = valid_bank_mask;
1488
+ ),
1489
+
1490
+ TP_printk("vector %x format %llx valid_bank_mask 0x%llx",
1491
+ __entry->vector, __entry->format,
1492
+ __entry->valid_bank_mask)
1493
+);
1494
+
1495
+TRACE_EVENT(kvm_pv_tlb_flush,
1496
+ TP_PROTO(unsigned int vcpu_id, bool need_flush_tlb),
1497
+ TP_ARGS(vcpu_id, need_flush_tlb),
1498
+
1499
+ TP_STRUCT__entry(
1500
+ __field( unsigned int, vcpu_id )
1501
+ __field( bool, need_flush_tlb )
1502
+ ),
1503
+
1504
+ TP_fast_assign(
1505
+ __entry->vcpu_id = vcpu_id;
1506
+ __entry->need_flush_tlb = need_flush_tlb;
1507
+ ),
1508
+
1509
+ TP_printk("vcpu %u need_flush_tlb %s", __entry->vcpu_id,
1510
+ __entry->need_flush_tlb ? "true" : "false")
1511
+);
1512
+
1513
+/*
1514
+ * Tracepoint for failed nested VMX VM-Enter.
1515
+ */
1516
+TRACE_EVENT(kvm_nested_vmenter_failed,
1517
+ TP_PROTO(const char *msg, u32 err),
1518
+ TP_ARGS(msg, err),
1519
+
1520
+ TP_STRUCT__entry(
1521
+ __string(msg, msg)
1522
+ __field(u32, err)
1523
+ ),
1524
+
1525
+ TP_fast_assign(
1526
+ __assign_str(msg, msg);
1527
+ __entry->err = err;
1528
+ ),
1529
+
1530
+ TP_printk("%s%s", __get_str(msg), !__entry->err ? "" :
1531
+ __print_symbolic(__entry->err, VMX_VMENTER_INSTRUCTION_ERRORS))
1532
+);
1533
+
1534
+/*
1535
+ * Tracepoint for syndbg_set_msr.
1536
+ */
1537
+TRACE_EVENT(kvm_hv_syndbg_set_msr,
1538
+ TP_PROTO(int vcpu_id, u32 vp_index, u32 msr, u64 data),
1539
+ TP_ARGS(vcpu_id, vp_index, msr, data),
1540
+
1541
+ TP_STRUCT__entry(
1542
+ __field(int, vcpu_id)
1543
+ __field(u32, vp_index)
1544
+ __field(u32, msr)
1545
+ __field(u64, data)
1546
+ ),
1547
+
1548
+ TP_fast_assign(
1549
+ __entry->vcpu_id = vcpu_id;
1550
+ __entry->vp_index = vp_index;
1551
+ __entry->msr = msr;
1552
+ __entry->data = data;
1553
+ ),
1554
+
1555
+ TP_printk("vcpu_id %d vp_index %u msr 0x%x data 0x%llx",
1556
+ __entry->vcpu_id, __entry->vp_index, __entry->msr,
1557
+ __entry->data)
1558
+);
1559
+
1560
+/*
1561
+ * Tracepoint for syndbg_get_msr.
1562
+ */
1563
+TRACE_EVENT(kvm_hv_syndbg_get_msr,
1564
+ TP_PROTO(int vcpu_id, u32 vp_index, u32 msr, u64 data),
1565
+ TP_ARGS(vcpu_id, vp_index, msr, data),
1566
+
1567
+ TP_STRUCT__entry(
1568
+ __field(int, vcpu_id)
1569
+ __field(u32, vp_index)
1570
+ __field(u32, msr)
1571
+ __field(u64, data)
1572
+ ),
1573
+
1574
+ TP_fast_assign(
1575
+ __entry->vcpu_id = vcpu_id;
1576
+ __entry->vp_index = vp_index;
1577
+ __entry->msr = msr;
1578
+ __entry->data = data;
1579
+ ),
1580
+
1581
+ TP_printk("vcpu_id %d vp_index %u msr 0x%x data 0x%llx",
1582
+ __entry->vcpu_id, __entry->vp_index, __entry->msr,
1583
+ __entry->data)
1584
+);
14211585 #endif /* _TRACE_KVM_H */
14221586
14231587 #undef TRACE_INCLUDE_PATH
1424
-#define TRACE_INCLUDE_PATH arch/x86/kvm
1588
+#define TRACE_INCLUDE_PATH ../../arch/x86/kvm
14251589 #undef TRACE_INCLUDE_FILE
14261590 #define TRACE_INCLUDE_FILE trace
14271591