]>
Commit | Line | Data |
---|---|---|
6b621f95 | 1 | /*\r |
6f21d772 | 2 | * SPDX-License-Identifier: MIT\r |
6b621f95 AP |
3 | */\r |
4 | \r | |
5 | #ifndef __XEN_PUBLIC_HVM_PARAMS_H__\r | |
6 | #define __XEN_PUBLIC_HVM_PARAMS_H__\r | |
7 | \r | |
8 | #include "hvm_op.h"\r | |
9 | \r | |
10 | /*\r | |
11 | * Parameter space for HVMOP_{set,get}_param.\r | |
12 | */\r | |
13 | \r | |
14 | /*\r | |
15 | * How should CPU0 event-channel notifications be delivered?\r | |
16 | * val[63:56] == 0: val[55:0] is a delivery GSI (Global System Interrupt).\r | |
17 | * val[63:56] == 1: val[55:0] is a delivery PCI INTx line, as follows:\r | |
18 | * Domain = val[47:32], Bus = val[31:16],\r | |
19 | * DevFn = val[15: 8], IntX = val[ 1: 0]\r | |
20 | * val[63:56] == 2: val[7:0] is a vector number, check for\r | |
21 | * XENFEAT_hvm_callback_vector to know if this delivery\r | |
22 | * method is available.\r | |
23 | * If val == 0 then CPU0 event-channel notifications are not delivered.\r | |
24 | */\r | |
ac0a286f | 25 | #define HVM_PARAM_CALLBACK_IRQ 0\r |
6b621f95 AP |
26 | \r |
27 | /*\r | |
28 | * These are not used by Xen. They are here for convenience of HVM-guest\r | |
29 | * xenbus implementations.\r | |
30 | */\r | |
ac0a286f MK |
31 | #define HVM_PARAM_STORE_PFN 1\r |
32 | #define HVM_PARAM_STORE_EVTCHN 2\r | |
6b621f95 AP |
33 | \r |
34 | #define HVM_PARAM_PAE_ENABLED 4\r | |
35 | \r | |
ac0a286f | 36 | #define HVM_PARAM_IOREQ_PFN 5\r |
6b621f95 | 37 | \r |
ac0a286f MK |
38 | #define HVM_PARAM_BUFIOREQ_PFN 6\r |
39 | #define HVM_PARAM_BUFIOREQ_EVTCHN 26\r | |
6b621f95 | 40 | \r |
ac0a286f | 41 | #if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)\r |
6b621f95 AP |
42 | \r |
43 | /* Expose Viridian interfaces to this HVM guest? */\r | |
ac0a286f | 44 | #define HVM_PARAM_VIRIDIAN 9\r |
6b621f95 AP |
45 | \r |
46 | #endif\r | |
47 | \r | |
48 | /*\r | |
49 | * Set mode for virtual timers (currently x86 only):\r | |
50 | * delay_for_missed_ticks (default):\r | |
51 | * Do not advance a vcpu's time beyond the correct delivery time for\r | |
52 | * interrupts that have been missed due to preemption. Deliver missed\r | |
53 | * interrupts when the vcpu is rescheduled and advance the vcpu's virtual\r | |
54 | * time stepwise for each one.\r | |
55 | * no_delay_for_missed_ticks:\r | |
56 | * As above, missed interrupts are delivered, but guest time always tracks\r | |
57 | * wallclock (i.e., real) time while doing so.\r | |
58 | * no_missed_ticks_pending:\r | |
59 | * No missed interrupts are held pending. Instead, to ensure ticks are\r | |
60 | * delivered at some non-zero rate, if we detect missed ticks then the\r | |
61 | * internal tick alarm is not disabled if the VCPU is preempted during the\r | |
62 | * next tick period.\r | |
63 | * one_missed_tick_pending:\r | |
64 | * Missed interrupts are collapsed together and delivered as one 'late tick'.\r | |
65 | * Guest time always tracks wallclock (i.e., real) time.\r | |
66 | */\r | |
ac0a286f MK |
67 | #define HVM_PARAM_TIMER_MODE 10\r |
68 | #define HVMPTM_delay_for_missed_ticks 0\r | |
69 | #define HVMPTM_no_delay_for_missed_ticks 1\r | |
70 | #define HVMPTM_no_missed_ticks_pending 2\r | |
71 | #define HVMPTM_one_missed_tick_pending 3\r | |
6b621f95 AP |
72 | \r |
73 | /* Boolean: Enable virtual HPET (high-precision event timer)? (x86-only) */\r | |
ac0a286f | 74 | #define HVM_PARAM_HPET_ENABLED 11\r |
6b621f95 AP |
75 | \r |
76 | /* Identity-map page directory used by Intel EPT when CR0.PG=0. */\r | |
ac0a286f | 77 | #define HVM_PARAM_IDENT_PT 12\r |
6b621f95 AP |
78 | \r |
79 | /* Device Model domain, defaults to 0. */\r | |
ac0a286f | 80 | #define HVM_PARAM_DM_DOMAIN 13\r |
6b621f95 AP |
81 | \r |
82 | /* ACPI S state: currently support S0 and S3 on x86. */\r | |
ac0a286f | 83 | #define HVM_PARAM_ACPI_S_STATE 14\r |
6b621f95 AP |
84 | \r |
85 | /* TSS used on Intel when CR0.PE=0. */\r | |
ac0a286f | 86 | #define HVM_PARAM_VM86_TSS 15\r |
6b621f95 AP |
87 | \r |
88 | /* Boolean: Enable aligning all periodic vpts to reduce interrupts */\r | |
ac0a286f | 89 | #define HVM_PARAM_VPT_ALIGN 16\r |
6b621f95 AP |
90 | \r |
91 | /* Console debug shared memory ring and event channel */\r | |
ac0a286f MK |
92 | #define HVM_PARAM_CONSOLE_PFN 17\r |
93 | #define HVM_PARAM_CONSOLE_EVTCHN 18\r | |
6b621f95 AP |
94 | \r |
95 | /*\r | |
96 | * Select location of ACPI PM1a and TMR control blocks. Currently two locations\r | |
97 | * are supported, specified by version 0 or 1 in this parameter:\r | |
98 | * - 0: default, use the old addresses\r | |
99 | * PM1A_EVT == 0x1f40; PM1A_CNT == 0x1f44; PM_TMR == 0x1f48\r | |
100 | * - 1: use the new default qemu addresses\r | |
101 | * PM1A_EVT == 0xb000; PM1A_CNT == 0xb004; PM_TMR == 0xb008\r | |
102 | * You can find these address definitions in <hvm/ioreq.h>\r | |
103 | */\r | |
ac0a286f | 104 | #define HVM_PARAM_ACPI_IOPORTS_LOCATION 19\r |
6b621f95 | 105 | \r |
4040754d | 106 | /* Enable blocking memory events, async or sync (pause vcpu until response)\r |
6b621f95 AP |
107 | * onchangeonly indicates messages only on a change of value */\r |
108 | #define HVM_PARAM_MEMORY_EVENT_CR0 20\r | |
109 | #define HVM_PARAM_MEMORY_EVENT_CR3 21\r | |
110 | #define HVM_PARAM_MEMORY_EVENT_CR4 22\r | |
111 | #define HVM_PARAM_MEMORY_EVENT_INT3 23\r | |
112 | #define HVM_PARAM_MEMORY_EVENT_SINGLE_STEP 25\r | |
113 | #define HVM_PARAM_MEMORY_EVENT_MSR 30\r | |
114 | \r | |
ac0a286f MK |
115 | #define HVMPME_MODE_MASK (3 << 0)\r |
116 | #define HVMPME_mode_disabled 0\r | |
117 | #define HVMPME_mode_async 1\r | |
118 | #define HVMPME_mode_sync 2\r | |
119 | #define HVMPME_onchangeonly (1 << 2)\r | |
6b621f95 AP |
120 | \r |
121 | /* Boolean: Enable nestedhvm (hvm only) */\r | |
ac0a286f | 122 | #define HVM_PARAM_NESTEDHVM 24\r |
6b621f95 AP |
123 | \r |
124 | /* Params for the mem event rings */\r | |
125 | #define HVM_PARAM_PAGING_RING_PFN 27\r | |
126 | #define HVM_PARAM_ACCESS_RING_PFN 28\r | |
127 | #define HVM_PARAM_SHARING_RING_PFN 29\r | |
128 | \r | |
129 | /* SHUTDOWN_* action in case of a triple fault */\r | |
ac0a286f | 130 | #define HVM_PARAM_TRIPLE_FAULT_REASON 31\r |
6b621f95 | 131 | \r |
ac0a286f | 132 | #define HVM_NR_PARAMS 32\r |
6b621f95 AP |
133 | \r |
134 | #endif /* __XEN_PUBLIC_HVM_PARAMS_H__ */\r |