mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-23 17:58:30 +00:00
HV:Hypercall:Remove redundant error checking
In the current hypervisor hypercall, first all vcpu is allocated to SOS, vcpu's vm field is initialized to vm0. When the vcpu is offlined, vcpu will be paused and vcpu's vm field is set as NULL by DM. When UOS is created, vcpu's vm field is set as UOS's vm. So when vmcall_vmexit_handler is invoked, vcpu's vm filed is always non-NULL. error checking for vm pointer is done in the function "vmcall_vmexit_handler", vmcall_vmexit_handler will guarantee that vm is vm0. So all hypercall functions (these functions is just for handler hypercall, except vmcall_vmexit_handler) don't need to check whether invoking vm is NULL and don't need to check whether invoking vm is vm0 or not. Remove related invoking vm error checking for hypercall handling. V1 --> V2: Add pre-condition for hypercall in the head file. V2 --> V3: Add pre-condition for copy_from_gpa and copy_to_gpa. V3 --> V4: Add pre-condition both in the head file and source file. Tracked-On:#1258 Signed-off-by: Xiangyang Wu <xiangyang.wu@linux.intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
@@ -132,7 +132,21 @@ int general_sw_loader(struct vm *vm, struct vcpu *vcpu);
|
||||
typedef int (*vm_sw_loader_t)(struct vm *vm, struct vcpu *vcpu);
|
||||
extern vm_sw_loader_t vm_sw_loader;
|
||||
|
||||
/* @pre Caller(Guest) should make sure gpa is continuous.
|
||||
* - gpa from hypercall input which from kernel stack is gpa continuous, not
|
||||
* support kernel stack from vmap
|
||||
* - some other gpa from hypercall parameters, VHM should make sure it's
|
||||
* continuous
|
||||
* @pre Pointer vm is non-NULL
|
||||
*/
|
||||
int copy_from_gpa(const struct vm *vm, void *h_ptr, uint64_t gpa, uint32_t size);
|
||||
/* @pre Caller(Guest) should make sure gpa is continuous.
|
||||
* - gpa from hypercall input which from kernel stack is gpa continuous, not
|
||||
* support kernel stack from vmap
|
||||
* - some other gpa from hypercall parameters, VHM should make sure it's
|
||||
* continuous
|
||||
* @pre Pointer vm is non-NULL
|
||||
*/
|
||||
int copy_to_gpa(const struct vm *vm, void *h_ptr, uint64_t gpa, uint32_t size);
|
||||
int copy_from_gva(struct vcpu *vcpu, void *h_ptr, uint64_t gva,
|
||||
uint32_t size, uint32_t *err_code, uint64_t *fault_addr);
|
||||
|
Reference in New Issue
Block a user