~ubuntu-branches/ubuntu/trusty/linux-armadaxp/trusty

« back to all changes in this revision

Viewing changes to arch/x86/kvm/trace.h

  • Committer: Package Import Robot
  • Author(s): Michael Casadevall, Bryan Wu, Dann Frazier, Michael Casadeall
  • Date: 2012-03-10 15:00:54 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20120310150054-flugb39zon8vvgwe
Tags: 3.2.0-1600.1
[ Bryan Wu ]
* UBUNTU: import debian/debian.env and debian.armadaxp

[ Dann Frazier ]
* ARM: Armada XP: remove trailing '/' in dirnames in mvRules.mk

[ Michael Casadeall ]
* tools: add some tools for Marvell Armada XP processor
* kernel: timer tick hacking from Marvell
* kernel: Sheeva Errata: add delay on Sheeva when powering down
* net: add Marvell NFP netfilter
* net: socket and skb modifications made by Marvell
* miscdevice: add minor IDs for some Marvell Armada drivers
* fs: introduce memory pool for splice()
* video: EDID detection updates from Marvell Armada XP patchset
* video: backlight: add Marvell Dove LCD backlight driver
* video: display: add THS8200 display driver
* video: framebuffer: add Marvell Dove and Armada XP processor onchip LCD controller driver
* usbtest: add Interrupt transfer testing by Marvell Armada XP code
* usb: ehci: add support for Marvell EHCI controler
* tty/serial: 8250: add support for Marvell Armada XP processor and DeviceTree work
* rtc: add support for Marvell Armada XP onchip RTC controller
* net: pppoe: add Marvell ethernet NFP hook in PPPoE networking driver
* mtd: nand: add support for Marvell Armada XP Nand Flash Controller
* mtd: maps: add Marvell Armada XP specific map driver
* mmc: add support for Marvell Armada XP MMC/SD host controller
* i2c: add support for Marvell Armada XP onchip i2c bus controller
* hwmon: add Kconfig option for Armada XP onchip thermal sensor driver
* dmaengine: add Net DMA support for splice and update Marvell XOR DMA engine driver
* ata: add support for Marvell Armada XP SATA controller and update some quirks
* ARM: add Marvell Armada XP machine to mach-types
* ARM: oprofile: add support for Marvell PJ4B core
* ARM: mm: more ARMv6 switches for Marvell Armada XP
* ARM: remove static declaration to allow compilation
* ARM: alignment access fault trick
* ARM: mm: skip some fault fixing when run on NONE SMP ARMv6 mode during early abort event
* ARM: mm: add Marvell Sheeva CPU Architecture for PJ4B
* ARM: introduce optimized copy operation for Marvell Armada XP
* ARM: SAUCE: hardware breakpoint trick for Marvell Armada XP
* ARM: big endian and little endian tricks for Marvell Armada XP
* ARM: SAUCE: Add Marvell Armada XP build rules to arch/arm/kernel/Makefile
* ARM: vfp: add special handling for Marvell Armada XP
* ARM: add support for Marvell U-Boot
* ARM: add mv_controller_num for ARM PCI drivers
* ARM: add support for local PMUs, general SMP tweaks and cache flushing
* ARM: add Marvell device identifies in glue-proc.h
* ARM: add IPC driver support for Marvell platforms
* ARM: add DMA mapping for Marvell platforms
* ARM: add Sheeva errata and PJ4B code for booting
* ARM: update Kconfig and Makefile to include Marvell Armada XP platforms
* ARM: Armada XP: import LSP from Marvell for Armada XP 3.2 kernel enablement

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
#define _TRACE_KVM_H
3
3
 
4
4
#include <linux/tracepoint.h>
 
5
#include <asm/vmx.h>
 
6
#include <asm/svm.h>
5
7
 
6
8
#undef TRACE_SYSTEM
7
9
#define TRACE_SYSTEM kvm
181
183
#define KVM_ISA_VMX   1
182
184
#define KVM_ISA_SVM   2
183
185
 
 
186
#define VMX_EXIT_REASONS \
 
187
        { EXIT_REASON_EXCEPTION_NMI,            "EXCEPTION_NMI" }, \
 
188
        { EXIT_REASON_EXTERNAL_INTERRUPT,       "EXTERNAL_INTERRUPT" }, \
 
189
        { EXIT_REASON_TRIPLE_FAULT,             "TRIPLE_FAULT" }, \
 
190
        { EXIT_REASON_PENDING_INTERRUPT,        "PENDING_INTERRUPT" }, \
 
191
        { EXIT_REASON_NMI_WINDOW,               "NMI_WINDOW" }, \
 
192
        { EXIT_REASON_TASK_SWITCH,              "TASK_SWITCH" }, \
 
193
        { EXIT_REASON_CPUID,                    "CPUID" }, \
 
194
        { EXIT_REASON_HLT,                      "HLT" }, \
 
195
        { EXIT_REASON_INVLPG,                   "INVLPG" }, \
 
196
        { EXIT_REASON_RDPMC,                    "RDPMC" }, \
 
197
        { EXIT_REASON_RDTSC,                    "RDTSC" }, \
 
198
        { EXIT_REASON_VMCALL,                   "VMCALL" }, \
 
199
        { EXIT_REASON_VMCLEAR,                  "VMCLEAR" }, \
 
200
        { EXIT_REASON_VMLAUNCH,                 "VMLAUNCH" }, \
 
201
        { EXIT_REASON_VMPTRLD,                  "VMPTRLD" }, \
 
202
        { EXIT_REASON_VMPTRST,                  "VMPTRST" }, \
 
203
        { EXIT_REASON_VMREAD,                   "VMREAD" }, \
 
204
        { EXIT_REASON_VMRESUME,                 "VMRESUME" }, \
 
205
        { EXIT_REASON_VMWRITE,                  "VMWRITE" }, \
 
206
        { EXIT_REASON_VMOFF,                    "VMOFF" }, \
 
207
        { EXIT_REASON_VMON,                     "VMON" }, \
 
208
        { EXIT_REASON_CR_ACCESS,                "CR_ACCESS" }, \
 
209
        { EXIT_REASON_DR_ACCESS,                "DR_ACCESS" }, \
 
210
        { EXIT_REASON_IO_INSTRUCTION,           "IO_INSTRUCTION" }, \
 
211
        { EXIT_REASON_MSR_READ,                 "MSR_READ" }, \
 
212
        { EXIT_REASON_MSR_WRITE,                "MSR_WRITE" }, \
 
213
        { EXIT_REASON_MWAIT_INSTRUCTION,        "MWAIT_INSTRUCTION" }, \
 
214
        { EXIT_REASON_MONITOR_INSTRUCTION,      "MONITOR_INSTRUCTION" }, \
 
215
        { EXIT_REASON_PAUSE_INSTRUCTION,        "PAUSE_INSTRUCTION" }, \
 
216
        { EXIT_REASON_MCE_DURING_VMENTRY,       "MCE_DURING_VMENTRY" }, \
 
217
        { EXIT_REASON_TPR_BELOW_THRESHOLD,      "TPR_BELOW_THRESHOLD" },        \
 
218
        { EXIT_REASON_APIC_ACCESS,              "APIC_ACCESS" }, \
 
219
        { EXIT_REASON_EPT_VIOLATION,            "EPT_VIOLATION" }, \
 
220
        { EXIT_REASON_EPT_MISCONFIG,            "EPT_MISCONFIG" }, \
 
221
        { EXIT_REASON_WBINVD,                   "WBINVD" }
 
222
 
 
223
#define SVM_EXIT_REASONS \
 
224
        { SVM_EXIT_READ_CR0,                    "read_cr0" }, \
 
225
        { SVM_EXIT_READ_CR3,                    "read_cr3" }, \
 
226
        { SVM_EXIT_READ_CR4,                    "read_cr4" }, \
 
227
        { SVM_EXIT_READ_CR8,                    "read_cr8" }, \
 
228
        { SVM_EXIT_WRITE_CR0,                   "write_cr0" }, \
 
229
        { SVM_EXIT_WRITE_CR3,                   "write_cr3" }, \
 
230
        { SVM_EXIT_WRITE_CR4,                   "write_cr4" }, \
 
231
        { SVM_EXIT_WRITE_CR8,                   "write_cr8" }, \
 
232
        { SVM_EXIT_READ_DR0,                    "read_dr0" }, \
 
233
        { SVM_EXIT_READ_DR1,                    "read_dr1" }, \
 
234
        { SVM_EXIT_READ_DR2,                    "read_dr2" }, \
 
235
        { SVM_EXIT_READ_DR3,                    "read_dr3" }, \
 
236
        { SVM_EXIT_WRITE_DR0,                   "write_dr0" }, \
 
237
        { SVM_EXIT_WRITE_DR1,                   "write_dr1" }, \
 
238
        { SVM_EXIT_WRITE_DR2,                   "write_dr2" }, \
 
239
        { SVM_EXIT_WRITE_DR3,                   "write_dr3" }, \
 
240
        { SVM_EXIT_WRITE_DR5,                   "write_dr5" }, \
 
241
        { SVM_EXIT_WRITE_DR7,                   "write_dr7" }, \
 
242
        { SVM_EXIT_EXCP_BASE + DB_VECTOR,       "DB excp" }, \
 
243
        { SVM_EXIT_EXCP_BASE + BP_VECTOR,       "BP excp" }, \
 
244
        { SVM_EXIT_EXCP_BASE + UD_VECTOR,       "UD excp" }, \
 
245
        { SVM_EXIT_EXCP_BASE + PF_VECTOR,       "PF excp" }, \
 
246
        { SVM_EXIT_EXCP_BASE + NM_VECTOR,       "NM excp" }, \
 
247
        { SVM_EXIT_EXCP_BASE + MC_VECTOR,       "MC excp" }, \
 
248
        { SVM_EXIT_INTR,                        "interrupt" }, \
 
249
        { SVM_EXIT_NMI,                         "nmi" }, \
 
250
        { SVM_EXIT_SMI,                         "smi" }, \
 
251
        { SVM_EXIT_INIT,                        "init" }, \
 
252
        { SVM_EXIT_VINTR,                       "vintr" }, \
 
253
        { SVM_EXIT_CPUID,                       "cpuid" }, \
 
254
        { SVM_EXIT_INVD,                        "invd" }, \
 
255
        { SVM_EXIT_HLT,                         "hlt" }, \
 
256
        { SVM_EXIT_INVLPG,                      "invlpg" }, \
 
257
        { SVM_EXIT_INVLPGA,                     "invlpga" }, \
 
258
        { SVM_EXIT_IOIO,                        "io" }, \
 
259
        { SVM_EXIT_MSR,                         "msr" }, \
 
260
        { SVM_EXIT_TASK_SWITCH,                 "task_switch" }, \
 
261
        { SVM_EXIT_SHUTDOWN,                    "shutdown" }, \
 
262
        { SVM_EXIT_VMRUN,                       "vmrun" }, \
 
263
        { SVM_EXIT_VMMCALL,                     "hypercall" }, \
 
264
        { SVM_EXIT_VMLOAD,                      "vmload" }, \
 
265
        { SVM_EXIT_VMSAVE,                      "vmsave" }, \
 
266
        { SVM_EXIT_STGI,                        "stgi" }, \
 
267
        { SVM_EXIT_CLGI,                        "clgi" }, \
 
268
        { SVM_EXIT_SKINIT,                      "skinit" }, \
 
269
        { SVM_EXIT_WBINVD,                      "wbinvd" }, \
 
270
        { SVM_EXIT_MONITOR,                     "monitor" }, \
 
271
        { SVM_EXIT_MWAIT,                       "mwait" }, \
 
272
        { SVM_EXIT_XSETBV,                      "xsetbv" }, \
 
273
        { SVM_EXIT_NPF,                         "npf" }
 
274
 
184
275
/*
185
276
 * Tracepoint for kvm guest exit:
186
277
 */
205
296
        ),
206
297
 
207
298
        TP_printk("reason %s rip 0x%lx info %llx %llx",
208
 
                 ftrace_print_symbols_seq(p, __entry->exit_reason,
209
 
                                          kvm_x86_ops->exit_reasons_str),
 
299
                 (__entry->isa == KVM_ISA_VMX) ?
 
300
                 __print_symbolic(__entry->exit_reason, VMX_EXIT_REASONS) :
 
301
                 __print_symbolic(__entry->exit_reason, SVM_EXIT_REASONS),
210
302
                 __entry->guest_rip, __entry->info1, __entry->info2)
211
303
);
212
304
 
486
578
TRACE_EVENT(kvm_nested_vmexit,
487
579
            TP_PROTO(__u64 rip, __u32 exit_code,
488
580
                     __u64 exit_info1, __u64 exit_info2,
489
 
                     __u32 exit_int_info, __u32 exit_int_info_err),
 
581
                     __u32 exit_int_info, __u32 exit_int_info_err, __u32 isa),
490
582
            TP_ARGS(rip, exit_code, exit_info1, exit_info2,
491
 
                    exit_int_info, exit_int_info_err),
 
583
                    exit_int_info, exit_int_info_err, isa),
492
584
 
493
585
        TP_STRUCT__entry(
494
586
                __field(        __u64,          rip                     )
497
589
                __field(        __u64,          exit_info2              )
498
590
                __field(        __u32,          exit_int_info           )
499
591
                __field(        __u32,          exit_int_info_err       )
 
592
                __field(        __u32,          isa                     )
500
593
        ),
501
594
 
502
595
        TP_fast_assign(
506
599
                __entry->exit_info2             = exit_info2;
507
600
                __entry->exit_int_info          = exit_int_info;
508
601
                __entry->exit_int_info_err      = exit_int_info_err;
 
602
                __entry->isa                    = isa;
509
603
        ),
510
604
        TP_printk("rip: 0x%016llx reason: %s ext_inf1: 0x%016llx "
511
605
                  "ext_inf2: 0x%016llx ext_int: 0x%08x ext_int_err: 0x%08x",
512
606
                  __entry->rip,
513
 
                  ftrace_print_symbols_seq(p, __entry->exit_code,
514
 
                                           kvm_x86_ops->exit_reasons_str),
 
607
                 (__entry->isa == KVM_ISA_VMX) ?
 
608
                 __print_symbolic(__entry->exit_code, VMX_EXIT_REASONS) :
 
609
                 __print_symbolic(__entry->exit_code, SVM_EXIT_REASONS),
515
610
                  __entry->exit_info1, __entry->exit_info2,
516
611
                  __entry->exit_int_info, __entry->exit_int_info_err)
517
612
);
522
617
TRACE_EVENT(kvm_nested_vmexit_inject,
523
618
            TP_PROTO(__u32 exit_code,
524
619
                     __u64 exit_info1, __u64 exit_info2,
525
 
                     __u32 exit_int_info, __u32 exit_int_info_err),
 
620
                     __u32 exit_int_info, __u32 exit_int_info_err, __u32 isa),
526
621
            TP_ARGS(exit_code, exit_info1, exit_info2,
527
 
                    exit_int_info, exit_int_info_err),
 
622
                    exit_int_info, exit_int_info_err, isa),
528
623
 
529
624
        TP_STRUCT__entry(
530
625
                __field(        __u32,          exit_code               )
532
627
                __field(        __u64,          exit_info2              )
533
628
                __field(        __u32,          exit_int_info           )
534
629
                __field(        __u32,          exit_int_info_err       )
 
630
                __field(        __u32,          isa                     )
535
631
        ),
536
632
 
537
633
        TP_fast_assign(
540
636
                __entry->exit_info2             = exit_info2;
541
637
                __entry->exit_int_info          = exit_int_info;
542
638
                __entry->exit_int_info_err      = exit_int_info_err;
 
639
                __entry->isa                    = isa;
543
640
        ),
544
641
 
545
642
        TP_printk("reason: %s ext_inf1: 0x%016llx "
546
643
                  "ext_inf2: 0x%016llx ext_int: 0x%08x ext_int_err: 0x%08x",
547
 
                  ftrace_print_symbols_seq(p, __entry->exit_code,
548
 
                                           kvm_x86_ops->exit_reasons_str),
 
644
                 (__entry->isa == KVM_ISA_VMX) ?
 
645
                 __print_symbolic(__entry->exit_code, VMX_EXIT_REASONS) :
 
646
                 __print_symbolic(__entry->exit_code, SVM_EXIT_REASONS),
549
647
                __entry->exit_info1, __entry->exit_info2,
550
648
                __entry->exit_int_info, __entry->exit_int_info_err)
551
649
);
675
773
                ),
676
774
 
677
775
        TP_fast_assign(
678
 
                __entry->rip = vcpu->arch.emulate_ctxt.decode.fetch.start;
 
776
                __entry->rip = vcpu->arch.emulate_ctxt.fetch.start;
679
777
                __entry->csbase = kvm_x86_ops->get_segment_base(vcpu, VCPU_SREG_CS);
680
 
                __entry->len = vcpu->arch.emulate_ctxt.decode.eip
681
 
                               - vcpu->arch.emulate_ctxt.decode.fetch.start;
 
778
                __entry->len = vcpu->arch.emulate_ctxt._eip
 
779
                               - vcpu->arch.emulate_ctxt.fetch.start;
682
780
                memcpy(__entry->insn,
683
 
                       vcpu->arch.emulate_ctxt.decode.fetch.data,
 
781
                       vcpu->arch.emulate_ctxt.fetch.data,
684
782
                       15);
685
783
                __entry->flags = kei_decode_mode(vcpu->arch.emulate_ctxt.mode);
686
784
                __entry->failed = failed;
698
796
#define trace_kvm_emulate_insn_start(vcpu) trace_kvm_emulate_insn(vcpu, 0)
699
797
#define trace_kvm_emulate_insn_failed(vcpu) trace_kvm_emulate_insn(vcpu, 1)
700
798
 
 
799
TRACE_EVENT(
 
800
        vcpu_match_mmio,
 
801
        TP_PROTO(gva_t gva, gpa_t gpa, bool write, bool gpa_match),
 
802
        TP_ARGS(gva, gpa, write, gpa_match),
 
803
 
 
804
        TP_STRUCT__entry(
 
805
                __field(gva_t, gva)
 
806
                __field(gpa_t, gpa)
 
807
                __field(bool, write)
 
808
                __field(bool, gpa_match)
 
809
                ),
 
810
 
 
811
        TP_fast_assign(
 
812
                __entry->gva = gva;
 
813
                __entry->gpa = gpa;
 
814
                __entry->write = write;
 
815
                __entry->gpa_match = gpa_match
 
816
                ),
 
817
 
 
818
        TP_printk("gva %#lx gpa %#llx %s %s", __entry->gva, __entry->gpa,
 
819
                  __entry->write ? "Write" : "Read",
 
820
                  __entry->gpa_match ? "GPA" : "GVA")
 
821
);
701
822
#endif /* _TRACE_KVM_H */
702
823
 
703
824
#undef TRACE_INCLUDE_PATH