@@ -28,8 +28,9 @@ static int32_t dispatch_sos_hypercall(const struct acrn_vcpu *vcpu)
28
28
uint64_t param1 = vcpu_get_gpreg (vcpu , CPU_REG_RDI );
29
29
/* hypercall param2 from guest*/
30
30
uint64_t param2 = vcpu_get_gpreg (vcpu , CPU_REG_RSI );
31
- /* in case hypercall param1 is a vm id */
32
- uint16_t vm_id = (uint16_t )param1 ;
31
+ /* hypercall param1 is a relative vm id from SOS view */
32
+ uint16_t relative_vm_id = (uint16_t )param1 ;
33
+ uint16_t vm_id = rel_vmid_2_vmid (sos_vm -> vm_id , relative_vm_id );
33
34
bool vmid_is_valid = (vm_id < CONFIG_MAX_VM_NUM ) ? true : false;
34
35
int32_t ret = -1 ;
35
36
@@ -59,7 +60,7 @@ static int32_t dispatch_sos_hypercall(const struct acrn_vcpu *vcpu)
59
60
break ;
60
61
61
62
case HC_DESTROY_VM :
62
- /* param1: vmid */
63
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
63
64
if (vmid_is_valid ) {
64
65
spinlock_obtain (& vmm_hypercall_lock );
65
66
ret = hcall_destroy_vm (vm_id );
@@ -68,7 +69,7 @@ static int32_t dispatch_sos_hypercall(const struct acrn_vcpu *vcpu)
68
69
break ;
69
70
70
71
case HC_START_VM :
71
- /* param1: vmid */
72
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
72
73
if (vmid_is_valid ) {
73
74
spinlock_obtain (& vmm_hypercall_lock );
74
75
ret = hcall_start_vm (vm_id );
@@ -77,7 +78,7 @@ static int32_t dispatch_sos_hypercall(const struct acrn_vcpu *vcpu)
77
78
break ;
78
79
79
80
case HC_RESET_VM :
80
- /* param1: vmid */
81
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
81
82
if (vmid_is_valid ) {
82
83
spinlock_obtain (& vmm_hypercall_lock );
83
84
ret = hcall_reset_vm (vm_id );
@@ -86,7 +87,7 @@ static int32_t dispatch_sos_hypercall(const struct acrn_vcpu *vcpu)
86
87
break ;
87
88
88
89
case HC_PAUSE_VM :
89
- /* param1: vmid */
90
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
90
91
if (vmid_is_valid ) {
91
92
spinlock_obtain (& vmm_hypercall_lock );
92
93
ret = hcall_pause_vm (vm_id );
@@ -95,7 +96,7 @@ static int32_t dispatch_sos_hypercall(const struct acrn_vcpu *vcpu)
95
96
break ;
96
97
97
98
case HC_CREATE_VCPU :
98
- /* param1: vmid */
99
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
99
100
if (vmid_is_valid ) {
100
101
spinlock_obtain (& vmm_hypercall_lock );
101
102
ret = hcall_create_vcpu (sos_vm , vm_id , param2 );
@@ -104,7 +105,7 @@ static int32_t dispatch_sos_hypercall(const struct acrn_vcpu *vcpu)
104
105
break ;
105
106
106
107
case HC_SET_VCPU_REGS :
107
- /* param1: vmid */
108
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
108
109
if (vmid_is_valid ) {
109
110
spinlock_obtain (& vmm_hypercall_lock );
110
111
ret = hcall_set_vcpu_regs (sos_vm , vm_id , param2 );
@@ -113,22 +114,22 @@ static int32_t dispatch_sos_hypercall(const struct acrn_vcpu *vcpu)
113
114
break ;
114
115
115
116
case HC_SET_IRQLINE :
116
- /* param1: vmid */
117
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
117
118
if (vmid_is_valid ) {
118
119
ret = hcall_set_irqline (sos_vm , vm_id ,
119
120
(struct acrn_irqline_ops * )& param2 );
120
121
}
121
122
break ;
122
123
123
124
case HC_INJECT_MSI :
124
- /* param1: vmid */
125
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
125
126
if (vmid_is_valid ) {
126
127
ret = hcall_inject_msi (sos_vm , vm_id , param2 );
127
128
}
128
129
break ;
129
130
130
131
case HC_SET_IOREQ_BUFFER :
131
- /* param1: vmid */
132
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
132
133
if (vmid_is_valid ) {
133
134
spinlock_obtain (& vmm_hypercall_lock );
134
135
ret = hcall_set_ioreq_buffer (sos_vm , vm_id , param2 );
@@ -137,7 +138,7 @@ static int32_t dispatch_sos_hypercall(const struct acrn_vcpu *vcpu)
137
138
break ;
138
139
139
140
case HC_NOTIFY_REQUEST_FINISH :
140
- /* param1: vmid
141
+ /* param1: relative vmid to sos, vm_id: absolute vmid
141
142
* param2: vcpu_id */
142
143
if (vmid_is_valid ) {
143
144
ret = hcall_notify_ioreq_finish (vm_id ,
@@ -150,7 +151,7 @@ static int32_t dispatch_sos_hypercall(const struct acrn_vcpu *vcpu)
150
151
break ;
151
152
152
153
case HC_VM_WRITE_PROTECT_PAGE :
153
- /* param1: vmid */
154
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
154
155
if (vmid_is_valid ) {
155
156
ret = hcall_write_protect_page (sos_vm , vm_id , param2 );
156
157
}
@@ -165,35 +166,35 @@ static int32_t dispatch_sos_hypercall(const struct acrn_vcpu *vcpu)
165
166
break ;
166
167
167
168
case HC_VM_GPA2HPA :
168
- /* param1: vmid */
169
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
169
170
if (vmid_is_valid ) {
170
171
ret = hcall_gpa_to_hpa (sos_vm , vm_id , param2 );
171
172
}
172
173
break ;
173
174
174
175
case HC_ASSIGN_PTDEV :
175
- /* param1: vmid */
176
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
176
177
if (vmid_is_valid ) {
177
178
ret = hcall_assign_ptdev (sos_vm , vm_id , param2 );
178
179
}
179
180
break ;
180
181
181
182
case HC_DEASSIGN_PTDEV :
182
- /* param1: vmid */
183
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
183
184
if (vmid_is_valid ) {
184
185
ret = hcall_deassign_ptdev (sos_vm , vm_id , param2 );
185
186
}
186
187
break ;
187
188
188
189
case HC_SET_PTDEV_INTR_INFO :
189
- /* param1: vmid */
190
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
190
191
if (vmid_is_valid ) {
191
192
ret = hcall_set_ptdev_intr_info (sos_vm , vm_id , param2 );
192
193
}
193
194
break ;
194
195
195
196
case HC_RESET_PTDEV_INTR_INFO :
196
- /* param1: vmid */
197
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
197
198
if (vmid_is_valid ) {
198
199
ret = hcall_reset_ptdev_intr_info (sos_vm , vm_id , param2 );
199
200
}
@@ -204,7 +205,7 @@ static int32_t dispatch_sos_hypercall(const struct acrn_vcpu *vcpu)
204
205
break ;
205
206
206
207
case HC_VM_INTR_MONITOR :
207
- /* param1: vmid */
208
+ /* param1: relative vmid to sos, vm_id: absolute vmid */
208
209
if (vmid_is_valid ) {
209
210
ret = hcall_vm_intr_monitor (sos_vm , vm_id , param2 );
210
211
}
0 commit comments