include/hyperv/hvgdk_mini.h
Source file repositories/reference/linux-study-clean/include/hyperv/hvgdk_mini.h
File Facts
- System
- Linux kernel
- Corpus path
include/hyperv/hvgdk_mini.h- Extension
.h- Size
- 45544 bytes
- Lines
- 1544
- Domain
- Repository Root And Misc
- Bucket
- include
- Inferred role
- Repository Root And Misc: implementation source
- Status
- source implementation candidate
Why This File Exists
Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/types.hlinux/bits.h
Detected Declarations
struct hv_u128struct hv_reenlightenment_controlstruct hv_tsc_emulation_statusstruct hv_tsc_emulation_controlstruct hv_output_get_partition_idstruct hv_vpsetstruct hv_guest_mapping_flushstruct hv_guest_mapping_flush_liststruct hv_tlb_flushstruct hv_tlb_flush_exstruct ms_hyperv_tsc_pagestruct hv_message_headerstruct hv_notification_message_payloadstruct hv_messagestruct hv_message_pagestruct hv_timer_message_payloadstruct hv_x64_segment_registerstruct hv_x64_table_registerstruct hv_init_vp_contextstruct hv_enable_vp_vtlstruct hv_get_vp_from_apic_id_instruct hv_nested_enlightenments_controlstruct hv_vp_assist_pagestruct hv_output_get_vp_registersstruct hv_get_vp_registers_outputstruct hv_register_assocstruct hv_input_get_vp_registersstruct hv_input_set_vp_registersstruct hv_send_ipistruct hv_gpa_range_for_visibilitystruct hv_interrupt_entrystruct hv_device_interrupt_targetstruct hv_retarget_device_interruptstruct hv_mmio_read_inputstruct hv_mmio_read_outputstruct hv_mmio_write_inputenum hv_isolation_typeenum hv_interrupt_typeenum hv_message_typeenum hv_register_nameenum hv_mem_host_visibilityenum hv_interrupt_sourceenum hv_intercept_typeenum hv_intercept_access_type
Annotated Snippet
struct hv_u128 {
u64 low_part;
u64 high_part;
} __packed;
/* NOTE: when adding below, update hv_result_to_string() */
#define HV_STATUS_SUCCESS 0x0
#define HV_STATUS_INVALID_HYPERCALL_CODE 0x2
#define HV_STATUS_INVALID_HYPERCALL_INPUT 0x3
#define HV_STATUS_INVALID_ALIGNMENT 0x4
#define HV_STATUS_INVALID_PARAMETER 0x5
#define HV_STATUS_ACCESS_DENIED 0x6
#define HV_STATUS_INVALID_PARTITION_STATE 0x7
#define HV_STATUS_OPERATION_DENIED 0x8
#define HV_STATUS_UNKNOWN_PROPERTY 0x9
#define HV_STATUS_PROPERTY_VALUE_OUT_OF_RANGE 0xA
#define HV_STATUS_INSUFFICIENT_MEMORY 0xB
#define HV_STATUS_INVALID_PARTITION_ID 0xD
#define HV_STATUS_INVALID_VP_INDEX 0xE
#define HV_STATUS_NOT_FOUND 0x10
#define HV_STATUS_INVALID_PORT_ID 0x11
#define HV_STATUS_INVALID_CONNECTION_ID 0x12
#define HV_STATUS_INSUFFICIENT_BUFFERS 0x13
#define HV_STATUS_NOT_ACKNOWLEDGED 0x14
#define HV_STATUS_INVALID_VP_STATE 0x15
#define HV_STATUS_NO_RESOURCES 0x1D
#define HV_STATUS_PROCESSOR_FEATURE_NOT_SUPPORTED 0x20
#define HV_STATUS_INVALID_LP_INDEX 0x41
#define HV_STATUS_INVALID_REGISTER_VALUE 0x50
#define HV_STATUS_OPERATION_FAILED 0x71
#define HV_STATUS_INSUFFICIENT_ROOT_MEMORY 0x73
#define HV_STATUS_INSUFFICIENT_CONTIGUOUS_MEMORY 0x75
#define HV_STATUS_TIME_OUT 0x78
#define HV_STATUS_CALL_PENDING 0x79
#define HV_STATUS_INSUFFICIENT_CONTIGUOUS_ROOT_MEMORY 0x83
#define HV_STATUS_VTL_ALREADY_ENABLED 0x86
/*
* The Hyper-V TimeRefCount register and the TSC
* page provide a guest VM clock with 100ns tick rate
*/
#define HV_CLOCK_HZ (NSEC_PER_SEC / 100)
#define HV_HYP_PAGE_SHIFT 12
#define HV_HYP_PAGE_SIZE BIT(HV_HYP_PAGE_SHIFT)
#define HV_HYP_PAGE_MASK (~(HV_HYP_PAGE_SIZE - 1))
#define HV_HYP_LARGE_PAGE_SHIFT 21
#define HV_PARTITION_ID_INVALID ((u64)0)
#define HV_PARTITION_ID_SELF ((u64)-1)
/* Hyper-V specific model specific registers (MSRs) */
#if defined(CONFIG_X86)
/* HV_X64_SYNTHETIC_MSR */
#define HV_X64_MSR_GUEST_OS_ID 0x40000000
#define HV_X64_MSR_HYPERCALL 0x40000001
#define HV_X64_MSR_VP_INDEX 0x40000002
#define HV_X64_MSR_RESET 0x40000003
#define HV_X64_MSR_VP_RUNTIME 0x40000010
#define HV_X64_MSR_TIME_REF_COUNT 0x40000020
#define HV_X64_MSR_REFERENCE_TSC 0x40000021
#define HV_X64_MSR_TSC_FREQUENCY 0x40000022
#define HV_X64_MSR_APIC_FREQUENCY 0x40000023
/* Define the virtual APIC registers */
#define HV_X64_MSR_EOI 0x40000070
#define HV_X64_MSR_ICR 0x40000071
#define HV_X64_MSR_TPR 0x40000072
#define HV_X64_MSR_VP_ASSIST_PAGE 0x40000073
/* Define synthetic interrupt controller model specific registers. */
#define HV_X64_MSR_SCONTROL 0x40000080
#define HV_X64_MSR_SVERSION 0x40000081
#define HV_X64_MSR_SIEFP 0x40000082
#define HV_X64_MSR_SIMP 0x40000083
#define HV_X64_MSR_EOM 0x40000084
#define HV_X64_MSR_SIRBP 0x40000085
#define HV_X64_MSR_SINT0 0x40000090
#define HV_X64_MSR_SINT1 0x40000091
#define HV_X64_MSR_SINT2 0x40000092
#define HV_X64_MSR_SINT3 0x40000093
#define HV_X64_MSR_SINT4 0x40000094
#define HV_X64_MSR_SINT5 0x40000095
#define HV_X64_MSR_SINT6 0x40000096
#define HV_X64_MSR_SINT7 0x40000097
#define HV_X64_MSR_SINT8 0x40000098
#define HV_X64_MSR_SINT9 0x40000099
#define HV_X64_MSR_SINT10 0x4000009A
#define HV_X64_MSR_SINT11 0x4000009B
Annotation
- Immediate include surface: `linux/types.h`, `linux/bits.h`.
- Detected declarations: `struct hv_u128`, `struct hv_reenlightenment_control`, `struct hv_tsc_emulation_status`, `struct hv_tsc_emulation_control`, `struct hv_output_get_partition_id`, `struct hv_vpset`, `struct hv_guest_mapping_flush`, `struct hv_guest_mapping_flush_list`, `struct hv_tlb_flush`, `struct hv_tlb_flush_ex`.
- Atlas domain: Repository Root And Misc / include.
- Implementation status: source implementation candidate.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.