Annotation of qemu/roms/seabios/src/paravirt.h, revision 1.1.1.5

1.1       root        1: #ifndef __PV_H
                      2: #define __PV_H
                      3: 
1.1.1.4   root        4: #include "config.h" // CONFIG_COREBOOT
1.1       root        5: #include "util.h"
                      6: 
                      7: /* This CPUID returns the signature 'KVMKVMKVM' in ebx, ecx, and edx.  It
                      8:  * should be used to determine that a VM is running under KVM.
                      9:  */
                     10: #define KVM_CPUID_SIGNATURE     0x40000000
                     11: 
                     12: static inline int kvm_para_available(void)
                     13: {
1.1.1.5 ! root       14:     if (CONFIG_COREBOOT)
        !            15:         return 0;
1.1       root       16:     unsigned int eax, ebx, ecx, edx;
                     17:     char signature[13];
                     18: 
                     19:     cpuid(KVM_CPUID_SIGNATURE, &eax, &ebx, &ecx, &edx);
                     20:     memcpy(signature + 0, &ebx, 4);
                     21:     memcpy(signature + 4, &ecx, 4);
                     22:     memcpy(signature + 8, &edx, 4);
                     23:     signature[12] = 0;
                     24: 
                     25:     if (strcmp(signature, "KVMKVMKVM") == 0)
                     26:         return 1;
                     27: 
                     28:     return 0;
                     29: }
                     30: 
1.1.1.5 ! root       31: #define QEMU_CFG_SIGNATURE              0x00
        !            32: #define QEMU_CFG_ID                     0x01
        !            33: #define QEMU_CFG_UUID                   0x02
        !            34: #define QEMU_CFG_NUMA                   0x0d
        !            35: #define QEMU_CFG_BOOT_MENU              0x0e
        !            36: #define QEMU_CFG_MAX_CPUS               0x0f
1.1       root       37: #define QEMU_CFG_FILE_DIR               0x19
1.1.1.5 ! root       38: #define QEMU_CFG_ARCH_LOCAL             0x8000
        !            39: #define QEMU_CFG_ACPI_TABLES            (QEMU_CFG_ARCH_LOCAL + 0)
        !            40: #define QEMU_CFG_SMBIOS_ENTRIES         (QEMU_CFG_ARCH_LOCAL + 1)
        !            41: #define QEMU_CFG_IRQ0_OVERRIDE          (QEMU_CFG_ARCH_LOCAL + 2)
        !            42: #define QEMU_CFG_E820_TABLE             (QEMU_CFG_ARCH_LOCAL + 3)
1.1       root       43: 
                     44: extern int qemu_cfg_present;
                     45: 
                     46: void qemu_cfg_port_probe(void);
                     47: int qemu_cfg_show_boot_menu(void);
                     48: void qemu_cfg_get_uuid(u8 *uuid);
                     49: int qemu_cfg_irq0_override(void);
                     50: u16 qemu_cfg_acpi_additional_tables(void);
                     51: u16 qemu_cfg_next_acpi_table_len(void);
                     52: void *qemu_cfg_next_acpi_table_load(void *addr, u16 len);
                     53: u16 qemu_cfg_smbios_entries(void);
                     54: size_t qemu_cfg_smbios_load_field(int type, size_t offset, void *addr);
                     55: int qemu_cfg_smbios_load_external(int type, char **p, unsigned *nr_structs,
                     56:                                   unsigned *max_struct_size, char *end);
                     57: int qemu_cfg_get_numa_nodes(void);
                     58: void qemu_cfg_get_numa_data(u64 *data, int n);
                     59: u16 qemu_cfg_get_max_cpus(void);
                     60: 
                     61: typedef struct QemuCfgFile {
                     62:     u32  size;        /* file size */
                     63:     u16  select;      /* write this to 0x510 to read it */
                     64:     u16  reserved;
                     65:     char name[56];
                     66: } QemuCfgFile;
                     67: 
1.1.1.2   root       68: struct e820_reservation {
                     69:     u64 address;
                     70:     u64 length;
                     71:     u32 type;
                     72: };
                     73: 
                     74: u32 qemu_cfg_next_prefix_file(const char *prefix, u32 prevselect);
                     75: u32 qemu_cfg_find_file(const char *name);
                     76: int qemu_cfg_size_file(u32 select);
1.1.1.3   root       77: const char* qemu_cfg_name_file(u32 select);
1.1.1.2   root       78: int qemu_cfg_read_file(u32 select, void *dst, u32 maxlen);
                     79: 
                     80: // Wrappers that select cbfs or qemu_cfg file interface.
                     81: static inline u32 romfile_findprefix(const char *prefix, u32 previd) {
                     82:     if (CONFIG_COREBOOT)
                     83:         return (u32)cbfs_findprefix(prefix, (void*)previd);
                     84:     return qemu_cfg_next_prefix_file(prefix, previd);
                     85: }
                     86: static inline u32 romfile_find(const char *name) {
                     87:     if (CONFIG_COREBOOT)
                     88:         return (u32)cbfs_finddatafile(name);
                     89:     return qemu_cfg_find_file(name);
                     90: }
                     91: static inline u32 romfile_size(u32 fileid) {
                     92:     if (CONFIG_COREBOOT)
                     93:         return cbfs_datasize((void*)fileid);
                     94:     return qemu_cfg_size_file(fileid);
                     95: }
                     96: static inline int romfile_copy(u32 fileid, void *dst, u32 maxlen) {
                     97:     if (CONFIG_COREBOOT)
                     98:         return cbfs_copyfile((void*)fileid, dst, maxlen);
                     99:     return qemu_cfg_read_file(fileid, dst, maxlen);
                    100: }
1.1.1.3   root      101: static inline const char* romfile_name(u32 fileid) {
                    102:     if (CONFIG_COREBOOT)
                    103:         return cbfs_filename((void*)fileid);
                    104:     return qemu_cfg_name_file(fileid);
                    105: }
                    106: void *romfile_loadfile(const char *name, int *psize);
1.1.1.4   root      107: u64 romfile_loadint(const char *name, u64 defval);
1.1.1.2   root      108: 
                    109: u32 qemu_cfg_e820_entries(void);
                    110: void* qemu_cfg_e820_load_next(void *addr);
1.1       root      111: 
                    112: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.