[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Strange PVM spinlock case revisited (nailed down)
>>> On 14.02.13 at 12:04, Stefan Bader <stefan.bader@xxxxxxxxxxxxx> wrote: > There was a bit more on the stack but try_to_wake_up seemed a believable > current > path. Even more so after looking into the function: > > #ifdef CONFIG_SMP > /* > * If the owning (remote) cpu is still in the middle of schedule() > with > * this task as prev, wait until its done referencing the task. > */ > while (p->on_cpu) { > #ifdef __ARCH_WANT_INTERRUPTS_ON_CTXSW > /* > * In case the architecture enables interrupts in > * context_switch(), we cannot busy wait, since that > * would lead to deadlocks when an interrupt hits and > * tries to wake up @prev. So bail and do a complete > * remote wakeup. > */ > if (ttwu_activate_remote(p, wake_flags)) > goto stat; > #else > cpu_relax(); > #endif > > And prying out the task in question from the stack, it was one currently > being accounted for VCPU 6 and on_cpu. VCPU 6 is one of the other waiters > for > the runq lock of VCPU 1. Which would get picked up as soon as this callback > is > done. Unfortunately we "stay awhile... stay forever!". When analyzing a similar problem with our old PV ticket lock implementation (and the interrupt re-enabling there when possible before going into polling mode), it was precisely this open coded lock construct that caused problems for us. Back then I didn't, however, realize that this would even affect the simplistic byte locks used by the pv-ops Xen code (or else I would have pointed this out). Being relatively certain that with our new implementation we don't have any such problems, I can only recommend against dropping the re-enabling of interrupts - this needlessly introduces high interrupt latencies in a broader range of cases. Instead, the interactions ought to be fixed properly. And it's time for using ticket locks in the Xen code too... Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |