16#define HV_INTERFACE_ID 0x31237648
38#define HV_GUEST_OS_ID_IPXE ( ( 1ULL << 63 ) | ( 0x18aeULL << 48 ) )
45#define HV_GUEST_OS_ID_UEFI ( 1ULL << 40 )
48#define HV_HYPERCALL_ENABLE 0x00000001UL
51#define HV_SCONTROL_ENABLE 0x00000001UL
54#define HV_SIEFP_ENABLE 0x00000001UL
57#define HV_SIMP_ENABLE 0x00000001UL
60#define HV_SINT_AUTO_EOI 0x00020000UL
63#define HV_SINT_MASKED 0x00010000UL
66#define HV_SINT_VECTOR(x) ( (x) << 0 )
69#define HV_SINT_VECTOR_MASK HV_SINT_VECTOR ( 0xff )
75#define HV_POST_MESSAGE 0x005c
116#define HV_SIGNAL_EVENT 0x005d
227 return ( last_pfn - first_pfn + 1 );
uint32_t flag
Flag number.
unsigned long long uint64_t
uint32_t type
Operating system type.
uint8_t data[48]
Additional event data.
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
void hv_free_pages(struct hv_hypervisor *hv,...)
Free pages.
int hv_alloc_pages(struct hv_hypervisor *hv,...)
Allocate zeroed pages.
int hv_wait_for_message(struct hv_hypervisor *hv, unsigned int sintx)
Wait for received message.
void hv_disable_sint(struct hv_hypervisor *hv, unsigned int sintx)
Disable synthetic interrupt.
int hv_post_message(struct hv_hypervisor *hv, unsigned int id, unsigned int type, const void *data, size_t len)
Post message.
int hv_signal_event(struct hv_hypervisor *hv, unsigned int id, unsigned int flag)
Signal event.
void hv_enable_sint(struct hv_hypervisor *hv, unsigned int sintx)
Enable synthetic interrupt.
static unsigned int hv_pfn_count(physaddr_t data, size_t len)
Calculate the number of pages covering an address range.
#define PAGE_SIZE
Page size.
uint8_t flags[256]
Event flags.
struct hv_synic synic
Synthetic interrupt controller (SynIC)
union hv_message_buffer * message
Message buffer.
struct vmbus * vmbus
Virtual machine bus.
void * hypercall
Hypercall page.
uint16_t reserved
Padding.
uint8_t data[240]
Message.
uint8_t len
Length of message.
uint32_t id
Connection ID.
uint16_t flag
Flag number.
uint16_t reserved
Reserved.
uint32_t armed
Armed events.
uint32_t pending
Pending events.
uint16 latency[4][32]
Latencies.
uint8_t reserved_b[536]
Reserved.
uint8_t reserved_a[4]
Reserved.
uint8_t reserved_d[1984]
Reserved.
struct hv_monitor_trigger trigger[4]
Trigger groups.
uint8_t reserved_c[256]
Reserved.
struct hv_monitor_parameter param[4][32]
Parameters.
uint32_t len
Length of message.
uint8_t data[240]
Message.
uint32_t reserved
Padding.
uint32_t id
Connection ID.
uint32_t id
Connection ID.
uint16_t reserved
Reserved.
uint16_t flag
Flag number.
A synthetic interrupt controller.
struct hv_event * event
Event flag page.
struct hv_message * message
Message page.
struct hv_message received
Received message.
struct hv_post_message posted
Posted message.
struct hv_signal_event signalled
Signalled event.