mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-24 02:08:04 +00:00
hv: sched: move pcpu_id from acrn_vcpu to thread_object
With cpu sharing enabled, we will map acrn_vcpu to thread_object in scheduling. From modulization perspective, we'd better hide the pcpu_id in acrn_vcpu and move it to thread_object. Tracked-On: #3813 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> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
committed by
ACRN System Integration
parent
f85106d1ed
commit
891e46453d
@@ -26,7 +26,7 @@ void vcpu_thread(struct thread_object *obj)
|
||||
}
|
||||
|
||||
/* Don't open interrupt window between here and vmentry */
|
||||
if (need_reschedule(vcpu->pcpu_id)) {
|
||||
if (need_reschedule(pcpuid_from_vcpu(vcpu))) {
|
||||
schedule();
|
||||
}
|
||||
|
||||
|
@@ -408,7 +408,7 @@ static void inject_msi_lapic_pt(struct acrn_vm *vm, const struct acrn_msi_entry
|
||||
while (vcpu_id != INVALID_BIT_INDEX) {
|
||||
bitmap_clear_nolock(vcpu_id, &vdmask);
|
||||
vcpu = vcpu_from_vid(vm, vcpu_id);
|
||||
dest |= per_cpu(lapic_ldr, vcpu->pcpu_id);
|
||||
dest |= per_cpu(lapic_ldr, pcpuid_from_vcpu(vcpu));
|
||||
vcpu_id = ffs64(vdmask);
|
||||
}
|
||||
|
||||
|
@@ -13,6 +13,14 @@
|
||||
#include <schedule.h>
|
||||
#include <sprintf.h>
|
||||
|
||||
/**
|
||||
* @pre obj != NULL
|
||||
*/
|
||||
uint16_t sched_get_pcpuid(const struct thread_object *obj)
|
||||
{
|
||||
return obj->pcpu_id;
|
||||
}
|
||||
|
||||
void init_scheduler(void)
|
||||
{
|
||||
struct sched_control *ctl;
|
||||
@@ -141,6 +149,7 @@ void switch_to_idle(thread_entry_t idle_thread)
|
||||
|
||||
snprintf(idle_name, 16U, "idle%hu", pcpu_id);
|
||||
(void)strncpy_s(idle->name, 16U, idle_name, 16U);
|
||||
idle->pcpu_id = pcpu_id;
|
||||
idle->thread_entry = idle_thread;
|
||||
idle->switch_out = NULL;
|
||||
idle->switch_in = NULL;
|
||||
|
Reference in New Issue
Block a user