1d6bdceb6SPeter Zijlstra #ifndef _ASM_POWERPC_DTL_H 2d6bdceb6SPeter Zijlstra #define _ASM_POWERPC_DTL_H 3d6bdceb6SPeter Zijlstra 4*a246daa2SMichael Ellerman #include <linux/rwsem.h> 5d6bdceb6SPeter Zijlstra #include <asm/lppaca.h> 6d6bdceb6SPeter Zijlstra 7d6bdceb6SPeter Zijlstra /* 8d6bdceb6SPeter Zijlstra * Layout of entries in the hypervisor's dispatch trace log buffer. 9d6bdceb6SPeter Zijlstra */ 10d6bdceb6SPeter Zijlstra struct dtl_entry { 11d6bdceb6SPeter Zijlstra u8 dispatch_reason; 12d6bdceb6SPeter Zijlstra u8 preempt_reason; 13d6bdceb6SPeter Zijlstra __be16 processor_id; 14d6bdceb6SPeter Zijlstra __be32 enqueue_to_dispatch_time; 15d6bdceb6SPeter Zijlstra __be32 ready_to_enqueue_time; 16d6bdceb6SPeter Zijlstra __be32 waiting_to_ready_time; 17d6bdceb6SPeter Zijlstra __be64 timebase; 18d6bdceb6SPeter Zijlstra __be64 fault_addr; 19d6bdceb6SPeter Zijlstra __be64 srr0; 20d6bdceb6SPeter Zijlstra __be64 srr1; 21d6bdceb6SPeter Zijlstra }; 22d6bdceb6SPeter Zijlstra 23d6bdceb6SPeter Zijlstra #define DISPATCH_LOG_BYTES 4096 /* bytes per cpu */ 24d6bdceb6SPeter Zijlstra #define N_DISPATCH_LOG (DISPATCH_LOG_BYTES / sizeof(struct dtl_entry)) 25d6bdceb6SPeter Zijlstra 26d6bdceb6SPeter Zijlstra /* 27d6bdceb6SPeter Zijlstra * Dispatch trace log event enable mask: 28d6bdceb6SPeter Zijlstra * 0x1: voluntary virtual processor waits 29d6bdceb6SPeter Zijlstra * 0x2: time-slice preempts 30d6bdceb6SPeter Zijlstra * 0x4: virtual partition memory page faults 31d6bdceb6SPeter Zijlstra */ 32d6bdceb6SPeter Zijlstra #define DTL_LOG_CEDE 0x1 33d6bdceb6SPeter Zijlstra #define DTL_LOG_PREEMPT 0x2 34d6bdceb6SPeter Zijlstra #define DTL_LOG_FAULT 0x4 35d6bdceb6SPeter Zijlstra #define DTL_LOG_ALL (DTL_LOG_CEDE | DTL_LOG_PREEMPT | DTL_LOG_FAULT) 36d6bdceb6SPeter Zijlstra 37d6bdceb6SPeter Zijlstra extern struct kmem_cache *dtl_cache; 38*a246daa2SMichael Ellerman extern struct rw_semaphore dtl_access_lock; 39d6bdceb6SPeter Zijlstra 40d6bdceb6SPeter Zijlstra extern void register_dtl_buffer(int cpu); 41d6bdceb6SPeter Zijlstra extern void alloc_dtl_buffers(unsigned long *time_limit); 42d6bdceb6SPeter Zijlstra 43d6bdceb6SPeter Zijlstra #endif /* _ASM_POWERPC_DTL_H */ 44