|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] dpci: Put the dpci back on the list if scheduled from another CPU.
On Tue, Mar 17, 2015 at 04:06:14PM +0000, Jan Beulich wrote:
> >>> On 17.03.15 at 16:38, <konrad.wilk@xxxxxxxxxx> wrote:
> > --- a/xen/drivers/passthrough/io.c
> > +++ b/xen/drivers/passthrough/io.c
> > @@ -804,7 +804,17 @@ static void dpci_softirq(void)
> > d = pirq_dpci->dom;
> > smp_mb(); /* 'd' MUST be saved before we set/clear the bits. */
> > if ( test_and_set_bit(STATE_RUN, &pirq_dpci->state) )
> > - BUG();
> > + {
> > + unsigned long flags;
> > +
> > + /* Put back on the list and retry. */
> > + local_irq_save(flags);
> > + list_add_tail(&pirq_dpci->softirq_list, &this_cpu(dpci_list));
> > + local_irq_restore(flags);
> > +
> > + raise_softirq(HVM_DPCI_SOFTIRQ);
> > + continue;
> > + }
>
> As just said in another mail - unless there are convincing new
> arguments in favor of this (more of a hack than a real fix), I'm
> not going to accept it and instead consider reverting the
> offending commit. Iirc the latest we had come to looked quite a
> bit better than this one.
The latest one (please see attached) would cause an dead-lock iff
on the CPU we are running the softirq and an do_IRQ comes for the
exact dpci we are in process of executing.
>
> Jan
>
Attachment:
0001-dpci-when-scheduling-spin-until-STATE_RUN-or-STATE_S.patch _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |