|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC PATCH] dpci: Put the dpci back on the list if running on another CPU.
>>> On 23.01.15 at 02:44, <konrad.wilk@xxxxxxxxxx> wrote:
> Here is a patch that does this. I don't yet have an setup to test
> the failing scenario (working on that). I removed the part in
> the softirq because with this patch I cannot see a way it would
> ever get there (in the softirq hitting the BUG).
Hmm, but how do you now schedule the second instance that needed ...
> --- a/xen/drivers/passthrough/io.c
> +++ b/xen/drivers/passthrough/io.c
> @@ -64,16 +64,24 @@ static void raise_softirq_for(struct hvm_pirq_dpci
> *pirq_dpci)
> {
> unsigned long flags;
>
> - if ( test_and_set_bit(STATE_SCHED, &pirq_dpci->state) )
> + switch ( cmpxchg(&pirq_dpci->state, 0, 1 << STATE_SCHED) )
> + {
> + case (1 << STATE_SCHED):
> + case (1 << STATE_RUN):
... in this case?
>> Additionally I think it should be considered whether the bitmap
>> approach of interpreting ->state is the right one, and we don't
>> instead want a clean 3-state (idle, sched, run) model.
>
> Could you elaborate a bit more please? As in three different unsigned int
> (or bool_t) that set in what state we are in?
An enum { STATE_IDLE, STATE_SCHED, STATE_RUN }. Especially
if my comment above turns out to be wrong, you'd have no real
need for the SCHED and RUN flags to be set at the same time.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |