commit 5fb7ad8d1220101e69a87014d5a485d19aea9917 Author: Dario Faggioli Date: Wed Apr 11 09:04:33 2018 +0200 xen: credit: implement SCHED_OP(migrate) with just sanity checking in it, to catch a race. Signed-off-by: Dario Faggioli diff --git a/xen/common/sched_credit.c b/xen/common/sched_credit.c index 9bc638c09c..7a909376e6 100644 --- a/xen/common/sched_credit.c +++ b/xen/common/sched_credit.c @@ -867,6 +867,17 @@ _csched_cpu_pick(const struct scheduler *ops, struct vcpu *vc, bool_t commit) return cpu; } +static void +csched_vcpu_migrate(const struct scheduler *ops, struct vcpu *vc, + unsigned int new_cpu) +{ + BUG_ON(vc->is_running); + BUG_ON(test_bit(_VPF_migrating, &vc->pause_flags)); + BUG_ON(__vcpu_on_runq(CSCHED_VCPU(vc))); + BUG_ON(CSCHED_VCPU(vc) == CSCHED_VCPU(curr_on_cpu(vc->processor))); + vc->processor = new_cpu; +} + static int csched_cpu_pick(const struct scheduler *ops, struct vcpu *vc) { @@ -2278,6 +2289,7 @@ static const struct scheduler sched_credit_def = { .adjust_global = csched_sys_cntl, .pick_cpu = csched_cpu_pick, + .migrate = csched_vcpu_migrate, .do_schedule = csched_schedule, .dump_cpu_state = csched_dump_pcpu,