hv: vcpu: Move offline_vcpu to common vcpu.c and rename to destroy_vcpu

destroy_vcpu: Call arch_deinit_vcpu, and do common deinit.

Tracked-On: #8830
Signed-off-by: Yifan Liu <yifan1.liu@intel.com>
Reviewed-by: Fei Li <fei1.li@intel.com>
Acked-by: Wang Yu1 <yu1.wang@intel.com>
This commit is contained in:
Yifan Liu
2025-08-27 06:26:35 +00:00
committed by acrnsi-robot
parent 70bcf024da
commit 62d07897e2
8 changed files with 34 additions and 23 deletions

View File

@@ -549,17 +549,6 @@ void load_iwkey(struct acrn_vcpu *vcpu);
*/
int32_t run_vcpu(struct acrn_vcpu *vcpu);
/**
* @brief unmap the vcpu with pcpu and free its vlapic
*
* Unmap the vcpu with pcpu and free its vlapic, and set the vcpu state to offline
*
* @param[inout] vcpu pointer to vcpu data structure
* @pre vcpu != NULL
* @pre vcpu->state == VCPU_ZOMBIE
*/
void offline_vcpu(struct acrn_vcpu *vcpu);
/**
* @brief reset vcpu state and values
*

View File

@@ -35,7 +35,6 @@ struct per_cpu_arch {
struct acrn_vcpu *whose_iwkey;
uint32_t kick_pcpu_mode;
uint32_t idle_mode;
} __aligned(PAGE_SIZE); /* per_cpu_region size aligned with PAGE_SIZE */

View File

@@ -54,7 +54,7 @@ struct per_cpu_region {
* share same pCPU. So the maximum possible # of vCPUs that can
* run on a pCPU is CONFIG_MAX_VM_NUM.
* vcpu_array address must be aligned to 64-bit for atomic access
* to avoid contention between offline_vcpu and posted interrupt handler
* to avoid contention between destroy_vcpu and posted interrupt handler
*/
struct acrn_vcpu *vcpu_array[CONFIG_MAX_VM_NUM] __aligned(8);
struct shared_buf *sbuf[ACRN_SBUF_PER_PCPU_ID_MAX];

View File

@@ -99,6 +99,7 @@ void vcpu_set_state(struct acrn_vcpu *vcpu, enum vcpu_state new_state);
uint16_t pcpuid_from_vcpu(const struct acrn_vcpu *vcpu);
int32_t arch_init_vcpu(struct acrn_vcpu *vcpu);
void arch_deinit_vcpu(struct acrn_vcpu *vcpu);
void arch_vcpu_thread(struct thread_object *obj);
void arch_context_switch_out(struct thread_object *prev);
@@ -117,6 +118,17 @@ uint64_t arch_build_stack_frame(struct acrn_vcpu *vcpu);
*/
int32_t create_vcpu(struct acrn_vm *vm, uint16_t pcpu_id);
/**
* @brief Destroy a vcpu structure
*
* Unmap the vcpu with pcpu and deinitialize a vcpu structure
*
* @param[inout] vcpu pointer to vcpu data structure
* @pre vcpu != NULL
* @pre vcpu->state == VCPU_ZOMBIE
*/
void destroy_vcpu(struct acrn_vcpu *vcpu);
/**
* @}
*/