File Index
Files and directories
Sign in
FILE

hypervisor.h

File preview with syntax highlighting.

linux-6.19.14/arch/x86/include/asm/xen/hypervisor.h C
  1/******************************************************************************
  2 * hypervisor.h
  3 *
  4 * Linux-specific hypervisor handling.
  5 *
  6 * Copyright (c) 2002-2004, K A Fraser
  7 *
  8 * This program is free software; you can redistribute it and/or
  9 * modify it under the terms of the GNU General Public License version 2
 10 * as published by the Free Software Foundation; or, when distributed
 11 * separately from the Linux kernel or incorporated into other
 12 * software packages, subject to the following license:
 13 *
 14 * Permission is hereby granted, free of charge, to any person obtaining a copy
 15 * of this source file (the "Software"), to deal in the Software without
 16 * restriction, including without limitation the rights to use, copy, modify,
 17 * merge, publish, distribute, sublicense, and/or sell copies of the Software,
 18 * and to permit persons to whom the Software is furnished to do so, subject to
 19 * the following conditions:
 20 *
 21 * The above copyright notice and this permission notice shall be included in
 22 * all copies or substantial portions of the Software.
 23 *
 24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 25 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 26 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 27 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 28 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 29 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 30 * IN THE SOFTWARE.
 31 */
 32
 33#ifndef _ASM_X86_XEN_HYPERVISOR_H
 34#define _ASM_X86_XEN_HYPERVISOR_H
 35
 36extern struct shared_info *HYPERVISOR_shared_info;
 37extern struct start_info *xen_start_info;
 38
 39#include <asm/bug.h>
 40#include <asm/processor.h>
 41
 42#define XEN_SIGNATURE "XenVMMXenVMM"
 43
 44static inline uint32_t xen_cpuid_base(void)
 45{
 46	return cpuid_base_hypervisor(XEN_SIGNATURE, 2);
 47}
 48
 49struct pci_dev;
 50
 51#ifdef CONFIG_XEN_PV_DOM0
 52bool xen_initdom_restore_msi(struct pci_dev *dev);
 53#else
 54static inline bool xen_initdom_restore_msi(struct pci_dev *dev) { return true; }
 55#endif
 56
 57#ifdef CONFIG_HOTPLUG_CPU
 58void xen_arch_register_cpu(int num);
 59void xen_arch_unregister_cpu(int num);
 60#endif
 61
 62#ifdef CONFIG_PVH
 63void __init xen_pvh_init(struct boot_params *boot_params);
 64void __init mem_map_via_hcall(struct boot_params *boot_params_p);
 65#endif
 66
 67/* Lazy mode for batching updates / context switch */
 68enum xen_lazy_mode {
 69	XEN_LAZY_NONE,
 70	XEN_LAZY_MMU,
 71	XEN_LAZY_CPU,
 72};
 73
 74DECLARE_PER_CPU(enum xen_lazy_mode, xen_lazy_mode);
 75
 76static inline void enter_lazy(enum xen_lazy_mode mode)
 77{
 78	BUG_ON(this_cpu_read(xen_lazy_mode) != XEN_LAZY_NONE);
 79
 80	this_cpu_write(xen_lazy_mode, mode);
 81}
 82
 83static inline void leave_lazy(enum xen_lazy_mode mode)
 84{
 85	BUG_ON(this_cpu_read(xen_lazy_mode) != mode);
 86
 87	this_cpu_write(xen_lazy_mode, XEN_LAZY_NONE);
 88}
 89
 90enum xen_lazy_mode xen_get_lazy_mode(void);
 91
 92#if defined(CONFIG_XEN_DOM0) && defined(CONFIG_ACPI)
 93void xen_sanitize_proc_cap_bits(uint32_t *buf);
 94#else
 95static inline void xen_sanitize_proc_cap_bits(uint32_t *buf)
 96{
 97	BUG();
 98}
 99#endif
100
101#endif /* _ASM_X86_XEN_HYPERVISOR_H */
~/ Read-only file preview.