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

hypervisor.h (2360B)


      1/*
      2 * Copyright (C) 2008, VMware, Inc.
      3 *
      4 * This program is free software; you can redistribute it and/or modify
      5 * it under the terms of the GNU General Public License as published by
      6 * the Free Software Foundation; either version 2 of the License, or
      7 * (at your option) any later version.
      8 *
      9 * This program is distributed in the hope that it will be useful, but
     10 * WITHOUT ANY WARRANTY; without even the implied warranty of
     11 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
     12 * NON INFRINGEMENT.  See the GNU General Public License for more
     13 * details.
     14 *
     15 * You should have received a copy of the GNU General Public License
     16 * along with this program; if not, write to the Free Software
     17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
     18 *
     19 */
     20#ifndef _ASM_X86_HYPERVISOR_H
     21#define _ASM_X86_HYPERVISOR_H
     22
     23/* x86 hypervisor types  */
     24enum x86_hypervisor_type {
     25	X86_HYPER_NATIVE = 0,
     26	X86_HYPER_VMWARE,
     27	X86_HYPER_MS_HYPERV,
     28	X86_HYPER_XEN_PV,
     29	X86_HYPER_XEN_HVM,
     30	X86_HYPER_KVM,
     31	X86_HYPER_JAILHOUSE,
     32	X86_HYPER_ACRN,
     33};
     34
     35#ifdef CONFIG_HYPERVISOR_GUEST
     36
     37#include <asm/kvm_para.h>
     38#include <asm/x86_init.h>
     39#include <asm/xen/hypervisor.h>
     40
     41struct hypervisor_x86 {
     42	/* Hypervisor name */
     43	const char	*name;
     44
     45	/* Detection routine */
     46	uint32_t	(*detect)(void);
     47
     48	/* Hypervisor type */
     49	enum x86_hypervisor_type type;
     50
     51	/* init time callbacks */
     52	struct x86_hyper_init init;
     53
     54	/* runtime callbacks */
     55	struct x86_hyper_runtime runtime;
     56
     57	/* ignore nopv parameter */
     58	bool ignore_nopv;
     59};
     60
     61extern const struct hypervisor_x86 x86_hyper_vmware;
     62extern const struct hypervisor_x86 x86_hyper_ms_hyperv;
     63extern const struct hypervisor_x86 x86_hyper_xen_pv;
     64extern const struct hypervisor_x86 x86_hyper_kvm;
     65extern const struct hypervisor_x86 x86_hyper_jailhouse;
     66extern const struct hypervisor_x86 x86_hyper_acrn;
     67extern struct hypervisor_x86 x86_hyper_xen_hvm;
     68
     69extern bool nopv;
     70extern enum x86_hypervisor_type x86_hyper_type;
     71extern void init_hypervisor_platform(void);
     72static inline bool hypervisor_is_type(enum x86_hypervisor_type type)
     73{
     74	return x86_hyper_type == type;
     75}
     76#else
     77static inline void init_hypervisor_platform(void) { }
     78static inline bool hypervisor_is_type(enum x86_hypervisor_type type)
     79{
     80	return type == X86_HYPER_NATIVE;
     81}
     82#endif /* CONFIG_HYPERVISOR_GUEST */
     83#endif /* _ASM_X86_HYPERVISOR_H */