Path: blob/main/sys/contrib/xen/hvm/hvm_info_table.h
109162 views
/******************************************************************************1* hvm/hvm_info_table.h2*3* HVM parameter and information table, written into guest memory map.4*5* Permission is hereby granted, free of charge, to any person obtaining a copy6* of this software and associated documentation files (the "Software"), to7* deal in the Software without restriction, including without limitation the8* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or9* sell copies of the Software, and to permit persons to whom the Software is10* furnished to do so, subject to the following conditions:11*12* The above copyright notice and this permission notice shall be included in13* all copies or substantial portions of the Software.14*15* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR16* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,17* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE18* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER19* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING20* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER21* DEALINGS IN THE SOFTWARE.22*23* Copyright (c) 2006, Keir Fraser24*/2526#ifndef __XEN_PUBLIC_HVM_HVM_INFO_TABLE_H__27#define __XEN_PUBLIC_HVM_HVM_INFO_TABLE_H__2829#define HVM_INFO_PFN 0x09F30#define HVM_INFO_OFFSET 0x80031#define HVM_INFO_PADDR ((HVM_INFO_PFN << 12) + HVM_INFO_OFFSET)3233/* Maximum we can support with current vLAPIC ID mapping. */34#define HVM_MAX_VCPUS 1283536/*37* In some cases SMP HVM guests may require knowledge of Xen's idea of vCPU ids38* for their vCPUs. For example, HYPERVISOR_vcpu_op and some EVTCHNOP_*39* hypercalls take vcpu id as a parameter. It is valid for HVM guests to assume40* that Xen's vCPU id always equals to ACPI (not APIC!) id in MADT table which41* is always present for SMP guests.42*/4344struct hvm_info_table {45char signature[8]; /* "HVM INFO" */46uint32_t length;47uint8_t checksum;4849/* Should firmware build APIC descriptors (APIC MADT / MP BIOS)? */50uint8_t apic_mode;5152/* How many CPUs does this domain have? */53uint32_t nr_vcpus;5455/*56* MEMORY MAP provided by HVM domain builder.57* Notes:58* 1. page_to_phys(x) = x << 1259* 2. If a field is zero, the corresponding range does not exist.60*/61/*62* 0x0 to page_to_phys(low_mem_pgend)-1:63* RAM below 4GB (except for VGA hole 0xA0000-0xBFFFF)64*/65uint32_t low_mem_pgend;66/*67* page_to_phys(reserved_mem_pgstart) to 0xFFFFFFFF:68* Reserved for special memory mappings69*/70uint32_t reserved_mem_pgstart;71/*72* 0x100000000 to page_to_phys(high_mem_pgend)-1:73* RAM above 4GB74*/75uint32_t high_mem_pgend;7677/* Bitmap of which CPUs are online at boot time. */78uint8_t vcpu_online[(HVM_MAX_VCPUS + 7)/8];79};8081#endif /* __XEN_PUBLIC_HVM_HVM_INFO_TABLE_H__ */828384