mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-23 09:47:44 +00:00
hv: move pcpu offline request and vm shutdown request from schedule
From modulization perspective, it's not suitable to put pcpu and vm related request operations in schedule. So move them to pcpu and vm module respectively. Also change need_offline return value to bool. Tracked-On: #3663 Signed-off-by: Jason Chen CJ <jason.cj.chen@intel.com> Signed-off-by: Yu Wang <yu1.wang@intel.com> Signed-off-by: Shuo A Liu <shuo.a.liu@intel.com>
This commit is contained in:
@@ -342,6 +342,19 @@ bool start_pcpus(uint64_t mask)
|
||||
return ((pcpu_active_bitmap & mask) == mask);
|
||||
}
|
||||
|
||||
void make_pcpu_offline(uint16_t pcpu_id)
|
||||
{
|
||||
bitmap_set_lock(NEED_OFFLINE, &per_cpu(pcpu_flag, pcpu_id));
|
||||
if (get_pcpu_id() != pcpu_id) {
|
||||
send_single_ipi(pcpu_id, VECTOR_NOTIFY_VCPU);
|
||||
}
|
||||
}
|
||||
|
||||
bool need_offline(uint16_t pcpu_id)
|
||||
{
|
||||
return bitmap_test_and_clear_lock(NEED_OFFLINE, &per_cpu(pcpu_flag, pcpu_id));
|
||||
}
|
||||
|
||||
void wait_pcpus_offline(uint64_t mask)
|
||||
{
|
||||
uint32_t timeout;
|
||||
|
@@ -7,6 +7,8 @@
|
||||
#include <types.h>
|
||||
#include <errno.h>
|
||||
#include <sprintf.h>
|
||||
#include <per_cpu.h>
|
||||
#include <lapic.h>
|
||||
#include <vm.h>
|
||||
#include <vm_reset.h>
|
||||
#include <bits.h>
|
||||
@@ -878,3 +880,16 @@ bool has_rt_vm(void)
|
||||
|
||||
return ((vm_id == CONFIG_MAX_VM_NUM) ? false : true);
|
||||
}
|
||||
|
||||
void make_shutdown_vm_request(uint16_t pcpu_id)
|
||||
{
|
||||
bitmap_set_lock(NEED_SHUTDOWN_VM, &per_cpu(pcpu_flag, pcpu_id));
|
||||
if (get_pcpu_id() != pcpu_id) {
|
||||
send_single_ipi(pcpu_id, VECTOR_NOTIFY_VCPU);
|
||||
}
|
||||
}
|
||||
|
||||
bool need_shutdown_vm(uint16_t pcpu_id)
|
||||
{
|
||||
return bitmap_test_and_clear_lock(NEED_SHUTDOWN_VM, &per_cpu(pcpu_flag, pcpu_id));
|
||||
}
|
||||
|
Reference in New Issue
Block a user