blob: 29a2c04af2b780baf9e2d71120e7cb232f573ab6 [file] [log] [blame]
Kevin O'Connore7cc7642009-10-04 10:05:16 -04001#ifndef __PV_H
2#define __PV_H
3
4#include "util.h"
5
6/* This CPUID returns the signature 'KVMKVMKVM' in ebx, ecx, and edx. It
7 * should be used to determine that a VM is running under KVM.
8 */
9#define KVM_CPUID_SIGNATURE 0x40000000
10
11static inline int kvm_para_available(void)
12{
13 unsigned int eax, ebx, ecx, edx;
14 char signature[13];
15
16 cpuid(KVM_CPUID_SIGNATURE, &eax, &ebx, &ecx, &edx);
17 memcpy(signature + 0, &ebx, 4);
18 memcpy(signature + 4, &ecx, 4);
19 memcpy(signature + 8, &edx, 4);
20 signature[12] = 0;
21
22 if (strcmp(signature, "KVMKVMKVM") == 0)
23 return 1;
24
25 return 0;
26}
27
28#define QEMU_CFG_SIGNATURE 0x00
29#define QEMU_CFG_ID 0x01
30#define QEMU_CFG_UUID 0x02
31#define QEMU_CFG_NUMA 0x0d
32#define QEMU_CFG_BOOT_MENU 0x0e
33#define QEMU_CFG_MAX_CPUS 0x0f
34#define QEMU_CFG_ARCH_LOCAL 0x8000
35#define QEMU_CFG_ACPI_TABLES (QEMU_CFG_ARCH_LOCAL + 0)
36#define QEMU_CFG_SMBIOS_ENTRIES (QEMU_CFG_ARCH_LOCAL + 1)
Kevin O'Connor812654a2009-10-12 12:02:33 -040037#define QEMU_CFG_IRQ0_OVERRIDE (QEMU_CFG_ARCH_LOCAL + 2)
Kevin O'Connore7cc7642009-10-04 10:05:16 -040038
39extern int qemu_cfg_present;
40
41void qemu_cfg_port_probe(void);
42int qemu_cfg_show_boot_menu(void);
43void qemu_cfg_get_uuid(u8 *uuid);
Kevin O'Connor4d2b6192009-10-08 21:37:21 -040044int qemu_cfg_irq0_override(void);
Kevin O'Connorcc6dc462009-10-08 21:18:41 -040045u16 qemu_cfg_acpi_additional_tables(void);
46u16 qemu_cfg_next_acpi_table_len(void);
47void *qemu_cfg_next_acpi_table_load(void *addr, u16 len);
Kevin O'Connor4e4b4102009-10-08 21:21:59 -040048u16 qemu_cfg_smbios_entries(void);
49size_t qemu_cfg_smbios_load_field(int type, size_t offset, void *addr);
50int qemu_cfg_smbios_load_external(int type, char **p, unsigned *nr_structs,
51 unsigned *max_struct_size, char *end);
Kevin O'Connor590e5542009-10-08 22:09:02 -040052int qemu_cfg_get_numa_nodes(void);
53void qemu_cfg_get_numa_data(u64 *data, int n);
Kevin O'Connor84705852009-10-08 22:13:15 -040054u16 qemu_cfg_get_max_cpus(void);
Kevin O'Connore7cc7642009-10-04 10:05:16 -040055
56#endif