Message ID | 20190503194349.42831-1-elnikety@amazon.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] sched/credit: avoid priority boost for capped domains when unpark | expand |
On 03/05/2019 20:43, Eslam Elnikety wrote: > When unpausing a capped domain, the scheduler currently clears the > CSCHED_FLAG_VCPU_PARKED flag before vcpu_wake(). This, in turn, causes the > vcpu_wake to set CSCHED_PRI_TS_BOOST, resulting in an unfair credit boost. The > comment around the changed lines already states that clearing the flag should > happen AFTER the unpause. This bug was introduced in commit be650750945 > "credit1: Use atomic bit operations for the flags structure". > > Original patch author credit: Xi Xiong while at Amazon. > > Signed-off-by: Eslam Elnikety <elnikety@amazon.com> > Reviewed-by: Leonard Foerster <foersleo@amazon.de> > Reviewed-by: Petre Eftime <epetre@amazon.com> > Acked-by: Dario Faggioli <dfaggioli@suse.com> Pulled into x86-next. ~Andrew
diff --git a/xen/common/sched_credit.c b/xen/common/sched_credit.c index 3abe20def8..7b7facbace 100644 --- a/xen/common/sched_credit.c +++ b/xen/common/sched_credit.c @@ -1538,7 +1538,7 @@ csched_acct(void* dummy) svc->pri = CSCHED_PRI_TS_UNDER; /* Unpark any capped domains whose credits go positive */ - if ( test_and_clear_bit(CSCHED_FLAG_VCPU_PARKED, &svc->flags) ) + if ( test_bit(CSCHED_FLAG_VCPU_PARKED, &svc->flags) ) { /* * It's important to unset the flag AFTER the unpause() @@ -1547,6 +1547,7 @@ csched_acct(void* dummy) */ SCHED_STAT_CRANK(vcpu_unpark); vcpu_unpause(svc->vcpu); + clear_bit(CSCHED_FLAG_VCPU_PARKED, &svc->flags); } /* Upper bound on credits means VCPU stops earning */