[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] sched_rt: implement the .free_pdata hook
commit 3c1eee047296bfe968ca1b62463d7eae698ed697 Author: Dario Faggioli <dario.faggioli@xxxxxxxxxx> AuthorDate: Tue Mar 17 15:11:05 2015 +0100 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Tue Mar 17 15:11:05 2015 +0100 sched_rt: implement the .free_pdata hook which is called by cpu_schedule_down(), and is necessary for resetting the spinlock pointers in schedule_data from the RTDS global runqueue lock, back to the default _lock fields in the struct. Not doing so causes Xen to explode, e.g., when removing pCPUs from an RTDS cpupool and assigning them to another one. Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx> Reviewed-by: Meng Xu <mengxu@xxxxxxxxxxxxx> Reviewed-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx> --- xen/common/sched_rt.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/xen/common/sched_rt.c b/xen/common/sched_rt.c index 2ad0c68..ffc5107 100644 --- a/xen/common/sched_rt.c +++ b/xen/common/sched_rt.c @@ -444,6 +444,23 @@ rt_alloc_pdata(const struct scheduler *ops, int cpu) return (void *)1; } +static void +rt_free_pdata(const struct scheduler *ops, void *pcpu, int cpu) +{ + struct rt_private *prv = rt_priv(ops); + struct schedule_data *sd = &per_cpu(schedule_data, cpu); + unsigned long flags; + + spin_lock_irqsave(&prv->lock, flags); + + /* Move spinlock back to the default lock */ + ASSERT(sd->schedule_lock == &prv->lock); + ASSERT(!spin_is_locked(&sd->_lock)); + sd->schedule_lock = &sd->_lock; + + spin_unlock_irqrestore(&prv->lock, flags); +} + static void * rt_alloc_domdata(const struct scheduler *ops, struct domain *dom) { @@ -1108,6 +1125,7 @@ const struct scheduler sched_rtds_def = { .init = rt_init, .deinit = rt_deinit, .alloc_pdata = rt_alloc_pdata, + .free_pdata = rt_free_pdata, .alloc_domdata = rt_alloc_domdata, .free_domdata = rt_free_domdata, .init_domain = rt_dom_init, -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |