scheduler: refine make_reschedule_request

just use pcpu_id for make_reschedule_request is enough

Tracked-On: #1842
Signed-off-by: Jason Chen CJ <jason.cj.chen@intel.com>
Acked-by: Anthony Xu <anthony.xu@intel.com>
Acked-by: Eddie Dong <edide.dong@intel.com>
This commit is contained in:
Jason Chen CJ 2018-12-20 13:09:58 +08:00 committed by wenlingz
parent 6d67364881
commit 8aae0dff87
3 changed files with 8 additions and 8 deletions

View File

@ -573,7 +573,7 @@ void pause_vcpu(struct acrn_vcpu *vcpu, enum vcpu_state new_state)
if (atomic_load32(&vcpu->running) == 1U) { if (atomic_load32(&vcpu->running) == 1U) {
remove_from_cpu_runqueue(&vcpu->sched_obj, vcpu->pcpu_id); remove_from_cpu_runqueue(&vcpu->sched_obj, vcpu->pcpu_id);
make_reschedule_request(vcpu); make_reschedule_request(vcpu->pcpu_id);
release_schedule_lock(vcpu->pcpu_id); release_schedule_lock(vcpu->pcpu_id);
if (vcpu->pcpu_id != pcpu_id) { if (vcpu->pcpu_id != pcpu_id) {
@ -595,7 +595,7 @@ void resume_vcpu(struct acrn_vcpu *vcpu)
if (vcpu->state == VCPU_RUNNING) { if (vcpu->state == VCPU_RUNNING) {
add_to_cpu_runqueue(&vcpu->sched_obj, vcpu->pcpu_id); add_to_cpu_runqueue(&vcpu->sched_obj, vcpu->pcpu_id);
make_reschedule_request(vcpu); make_reschedule_request(vcpu->pcpu_id);
} }
release_schedule_lock(vcpu->pcpu_id); release_schedule_lock(vcpu->pcpu_id);
} }
@ -607,7 +607,7 @@ void schedule_vcpu(struct acrn_vcpu *vcpu)
get_schedule_lock(vcpu->pcpu_id); get_schedule_lock(vcpu->pcpu_id);
add_to_cpu_runqueue(&vcpu->sched_obj, vcpu->pcpu_id); add_to_cpu_runqueue(&vcpu->sched_obj, vcpu->pcpu_id);
make_reschedule_request(vcpu); make_reschedule_request(vcpu->pcpu_id);
release_schedule_lock(vcpu->pcpu_id); release_schedule_lock(vcpu->pcpu_id);
} }

View File

@ -106,13 +106,13 @@ static struct acrn_vcpu *select_next_vcpu(uint16_t pcpu_id)
return vcpu; return vcpu;
} }
void make_reschedule_request(const struct acrn_vcpu *vcpu) void make_reschedule_request(uint16_t pcpu_id)
{ {
struct sched_context *ctx = &per_cpu(sched_ctx, vcpu->pcpu_id); struct sched_context *ctx = &per_cpu(sched_ctx, pcpu_id);
bitmap_set_lock(NEED_RESCHEDULE, &ctx->flags); bitmap_set_lock(NEED_RESCHEDULE, &ctx->flags);
if (get_cpu_id() != vcpu->pcpu_id) { if (get_cpu_id() != pcpu_id) {
send_single_ipi(vcpu->pcpu_id, VECTOR_NOTIFY_VCPU); send_single_ipi(pcpu_id, VECTOR_NOTIFY_VCPU);
} }
} }

View File

@ -35,7 +35,7 @@ void remove_from_cpu_runqueue(struct sched_object *obj, uint16_t pcpu_id);
void default_idle(void); void default_idle(void);
void make_reschedule_request(const struct acrn_vcpu *vcpu); void make_reschedule_request(uint16_t pcpu_id);
int32_t need_reschedule(uint16_t pcpu_id); int32_t need_reschedule(uint16_t pcpu_id);
void make_pcpu_offline(uint16_t pcpu_id); void make_pcpu_offline(uint16_t pcpu_id);
int32_t need_offline(uint16_t pcpu_id); int32_t need_offline(uint16_t pcpu_id);