Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ia64/xen: add a necessary header file to compile include/xen/interface/xen.h

Create include/asm-ia64/pvclock-abi.h to compile which contains
the same definitions of include/asm-x86/pvclock-abi.h because ia64/xen
uses same structure.
Hopefully include/asm-x86/pvclock-abi.h would be moved to somewhere
more generic.

Another approach is to include include/asm-x86/pvclock-abi.h
from include/asm-ia64/pvclock-abi.h. But this would break
if/when x86 header files are moved under arch/x86.
So for now, same definitions are duplicated as suggested by Tony.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Tony Luck <tony.luck@intel.com>

authored by

Isaku Yamahata and committed by
Tony Luck
25c7bfae b31c09bd

+48
+48
arch/ia64/include/asm/pvclock-abi.h
··· 1 + /* 2 + * same structure to x86's 3 + * Hopefully asm-x86/pvclock-abi.h would be moved to somewhere more generic. 4 + * For now, define same duplicated definitions. 5 + */ 6 + 7 + #ifndef _ASM_IA64__PVCLOCK_ABI_H 8 + #define _ASM_IA64__PVCLOCK_ABI_H 9 + #ifndef __ASSEMBLY__ 10 + 11 + /* 12 + * These structs MUST NOT be changed. 13 + * They are the ABI between hypervisor and guest OS. 14 + * Both Xen and KVM are using this. 15 + * 16 + * pvclock_vcpu_time_info holds the system time and the tsc timestamp 17 + * of the last update. So the guest can use the tsc delta to get a 18 + * more precise system time. There is one per virtual cpu. 19 + * 20 + * pvclock_wall_clock references the point in time when the system 21 + * time was zero (usually boot time), thus the guest calculates the 22 + * current wall clock by adding the system time. 23 + * 24 + * Protocol for the "version" fields is: hypervisor raises it (making 25 + * it uneven) before it starts updating the fields and raises it again 26 + * (making it even) when it is done. Thus the guest can make sure the 27 + * time values it got are consistent by checking the version before 28 + * and after reading them. 29 + */ 30 + 31 + struct pvclock_vcpu_time_info { 32 + u32 version; 33 + u32 pad0; 34 + u64 tsc_timestamp; 35 + u64 system_time; 36 + u32 tsc_to_system_mul; 37 + s8 tsc_shift; 38 + u8 pad[3]; 39 + } __attribute__((__packed__)); /* 32 bytes */ 40 + 41 + struct pvclock_wall_clock { 42 + u32 version; 43 + u32 sec; 44 + u32 nsec; 45 + } __attribute__((__packed__)); 46 + 47 + #endif /* __ASSEMBLY__ */ 48 + #endif /* _ASM_IA64__PVCLOCK_ABI_H */