2009-06-17 16:22:14 +04:00
# if !defined(_TRACE_KVM_MAIN_H) || defined(TRACE_HEADER_MULTI_READ)
# define _TRACE_KVM_MAIN_H
# include <linux/tracepoint.h>
# undef TRACE_SYSTEM
# define TRACE_SYSTEM kvm
# define TRACE_INCLUDE_FILE kvm
# if defined(__KVM_HAVE_IOAPIC)
TRACE_EVENT ( kvm_set_irq ,
2009-07-01 13:09:41 +04:00
TP_PROTO ( unsigned int gsi , int level , int irq_source_id ) ,
TP_ARGS ( gsi , level , irq_source_id ) ,
2009-06-17 16:22:14 +04:00
TP_STRUCT__entry (
__field ( unsigned int , gsi )
2009-07-01 13:09:41 +04:00
__field ( int , level )
__field ( int , irq_source_id )
2009-06-17 16:22:14 +04:00
) ,
TP_fast_assign (
__entry - > gsi = gsi ;
2009-07-01 13:09:41 +04:00
__entry - > level = level ;
__entry - > irq_source_id = irq_source_id ;
2009-06-17 16:22:14 +04:00
) ,
2009-07-01 13:09:41 +04:00
TP_printk ( " gsi %u level %d source %d " ,
__entry - > gsi , __entry - > level , __entry - > irq_source_id )
2009-06-17 16:22:14 +04:00
) ;
2009-07-07 17:00:57 +04:00
# define kvm_deliver_mode \
{ 0x0 , " Fixed " } , \
{ 0x1 , " LowPrio " } , \
{ 0x2 , " SMI " } , \
{ 0x3 , " Res3 " } , \
{ 0x4 , " NMI " } , \
{ 0x5 , " INIT " } , \
{ 0x6 , " SIPI " } , \
{ 0x7 , " ExtINT " }
TRACE_EVENT ( kvm_ioapic_set_irq ,
TP_PROTO ( __u64 e , int pin , bool coalesced ) ,
TP_ARGS ( e , pin , coalesced ) ,
TP_STRUCT__entry (
__field ( __u64 , e )
__field ( int , pin )
__field ( bool , coalesced )
) ,
TP_fast_assign (
__entry - > e = e ;
__entry - > pin = pin ;
__entry - > coalesced = coalesced ;
) ,
TP_printk ( " pin %u dst %x vec=%u (%s|%s|%s%s)%s " ,
__entry - > pin , ( u8 ) ( __entry - > e > > 56 ) , ( u8 ) __entry - > e ,
__print_symbolic ( ( __entry - > e > > 8 & 0x7 ) , kvm_deliver_mode ) ,
( __entry - > e & ( 1 < < 11 ) ) ? " logical " : " physical " ,
( __entry - > e & ( 1 < < 15 ) ) ? " level " : " edge " ,
( __entry - > e & ( 1 < < 16 ) ) ? " |masked " : " " ,
__entry - > coalesced ? " (coalesced) " : " " )
) ;
TRACE_EVENT ( kvm_msi_set_irq ,
TP_PROTO ( __u64 address , __u64 data ) ,
TP_ARGS ( address , data ) ,
TP_STRUCT__entry (
__field ( __u64 , address )
__field ( __u64 , data )
) ,
TP_fast_assign (
__entry - > address = address ;
__entry - > data = data ;
) ,
TP_printk ( " dst %u vec %x (%s|%s|%s%s) " ,
( u8 ) ( __entry - > address > > 12 ) , ( u8 ) __entry - > data ,
__print_symbolic ( ( __entry - > data > > 8 & 0x7 ) , kvm_deliver_mode ) ,
( __entry - > address & ( 1 < < 2 ) ) ? " logical " : " physical " ,
( __entry - > data & ( 1 < < 15 ) ) ? " level " : " edge " ,
( __entry - > address & ( 1 < < 3 ) ) ? " |rh " : " " )
) ;
2009-06-17 16:22:14 +04:00
# define kvm_irqchips \
{ KVM_IRQCHIP_PIC_MASTER , " PIC master " } , \
{ KVM_IRQCHIP_PIC_SLAVE , " PIC slave " } , \
{ KVM_IRQCHIP_IOAPIC , " IOAPIC " }
TRACE_EVENT ( kvm_ack_irq ,
TP_PROTO ( unsigned int irqchip , unsigned int pin ) ,
TP_ARGS ( irqchip , pin ) ,
TP_STRUCT__entry (
__field ( unsigned int , irqchip )
__field ( unsigned int , pin )
) ,
TP_fast_assign (
__entry - > irqchip = irqchip ;
__entry - > pin = pin ;
) ,
TP_printk ( " irqchip %s pin %u " ,
__print_symbolic ( __entry - > irqchip , kvm_irqchips ) ,
__entry - > pin )
) ;
# endif /* defined(__KVM_HAVE_IOAPIC) */
2009-07-01 17:01:02 +04:00
# define KVM_TRACE_MMIO_READ_UNSATISFIED 0
# define KVM_TRACE_MMIO_READ 1
# define KVM_TRACE_MMIO_WRITE 2
# define kvm_trace_symbol_mmio \
{ KVM_TRACE_MMIO_READ_UNSATISFIED , " unsatisfied-read " } , \
{ KVM_TRACE_MMIO_READ , " read " } , \
{ KVM_TRACE_MMIO_WRITE , " write " }
TRACE_EVENT ( kvm_mmio ,
TP_PROTO ( int type , int len , u64 gpa , u64 val ) ,
TP_ARGS ( type , len , gpa , val ) ,
TP_STRUCT__entry (
__field ( u32 , type )
__field ( u32 , len )
__field ( u64 , gpa )
__field ( u64 , val )
) ,
TP_fast_assign (
__entry - > type = type ;
__entry - > len = len ;
__entry - > gpa = gpa ;
__entry - > val = val ;
) ,
TP_printk ( " mmio %s len %u gpa 0x%llx val 0x%llx " ,
__print_symbolic ( __entry - > type , kvm_trace_symbol_mmio ) ,
__entry - > len , __entry - > gpa , __entry - > val )
) ;
2010-01-21 16:31:52 +03:00
# define kvm_fpu_load_symbol \
{ 0 , " unload " } , \
{ 1 , " load " }
TRACE_EVENT ( kvm_fpu ,
TP_PROTO ( int load ) ,
TP_ARGS ( load ) ,
TP_STRUCT__entry (
__field ( u32 , load )
) ,
TP_fast_assign (
__entry - > load = load ;
) ,
TP_printk ( " %s " , __print_symbolic ( __entry - > load , kvm_fpu_load_symbol ) )
) ;
2009-06-17 16:22:14 +04:00
# endif /* _TRACE_KVM_MAIN_H */
/* This part must be outside protection */
# include <trace/define_trace.h>