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

book3s_hv.h (1110B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2
      3/*
      4 * Privileged (non-hypervisor) host registers to save.
      5 */
      6struct p9_host_os_sprs {
      7	unsigned long iamr;
      8	unsigned long amr;
      9
     10	unsigned int pmc1;
     11	unsigned int pmc2;
     12	unsigned int pmc3;
     13	unsigned int pmc4;
     14	unsigned int pmc5;
     15	unsigned int pmc6;
     16	unsigned long mmcr0;
     17	unsigned long mmcr1;
     18	unsigned long mmcr2;
     19	unsigned long mmcr3;
     20	unsigned long mmcra;
     21	unsigned long siar;
     22	unsigned long sier1;
     23	unsigned long sier2;
     24	unsigned long sier3;
     25	unsigned long sdar;
     26};
     27
     28static inline bool nesting_enabled(struct kvm *kvm)
     29{
     30	return kvm->arch.nested_enable && kvm_is_radix(kvm);
     31}
     32
     33bool load_vcpu_state(struct kvm_vcpu *vcpu,
     34			   struct p9_host_os_sprs *host_os_sprs);
     35void store_vcpu_state(struct kvm_vcpu *vcpu);
     36void save_p9_host_os_sprs(struct p9_host_os_sprs *host_os_sprs);
     37void restore_p9_host_os_sprs(struct kvm_vcpu *vcpu,
     38				    struct p9_host_os_sprs *host_os_sprs);
     39void switch_pmu_to_guest(struct kvm_vcpu *vcpu,
     40			    struct p9_host_os_sprs *host_os_sprs);
     41void switch_pmu_to_host(struct kvm_vcpu *vcpu,
     42			    struct p9_host_os_sprs *host_os_sprs);