>>> On 12.11.14 at 03:23, <konrad.w...@oracle.com> wrote: > +static void pt_pirq_softirq_reset(struct hvm_pirq_dpci *pirq_dpci) > +{ > + struct domain *d = pirq_dpci->dom; > + > + ASSERT(spin_is_locked(&d->event_lock)); > + > + switch ( cmpxchg(&pirq_dpci->state, 1 << STATE_SCHED, 0) ) > + { > + case (1 << STATE_SCHED): > + /* > + * We are going to try to de-schedule the softirq before it goes in > + * STATE_RUN. Whoever clears STATE_SCHED MUST refcount the 'dom'. > + */ > + put_domain(d); > + /* fallthrough. */
Considering Sander's report, the only suspicious place I find is this one: When the STATE_SCHED flag is set, pirq_dpci is on some CPU's list. What guarantees it to get removed from that list before getting inserted on another one? Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel