cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pvclock-abi.h (1530B)


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