|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [for-xen-4.5 PATCH v2 2/2] dpci: Add ZOMBIE state to allow the softirq to finish with the dpci_pirq.
>>> On 19.11.14 at 23:21, <konrad.wilk@xxxxxxxxxx> wrote:
Leaving aside the question of whether this is the right approach, in
case it is a couple of comments:
> @@ -85,7 +91,7 @@ static void raise_softirq_for(struct hvm_pirq_dpci
> *pirq_dpci)
> */
> bool_t pt_pirq_softirq_active(struct hvm_pirq_dpci *pirq_dpci)
> {
> - if ( pirq_dpci->state & ((1 << STATE_RUN) | (1 << STATE_SCHED)) )
> + if ( pirq_dpci->state & ((1 << STATE_RUN) | (1 << STATE_SCHED) | (1 <<
> STATE_ZOMBIE) ) )
This is becoming unwieldy - perhaps better just "if ( pirq_dpci->state )"?
> @@ -122,6 +128,7 @@ static void pt_pirq_softirq_cancel(struct hvm_pirq_dpci
> *pirq_dpci,
> /* fallthrough. */
> case (1 << STATE_RUN):
> case (1 << STATE_RUN) | (1 << STATE_SCHED):
> + case (1 << STATE_RUN) | (1 << STATE_SCHED) | (1 << STATE_ZOMBIE):
How would we get into this state? Afaict STATE_ZOMBIE can't be set
at the same time as STATE_SCHED.
> @@ -786,6 +793,7 @@ unlock:
> static void dpci_softirq(void)
> {
> unsigned int cpu = smp_processor_id();
> + unsigned int reset = 0;
bool_t (and would better be inside the loop, avoiding the pointless
re-init on the last iteration).
But taking it as a whole - aren't we now at risk of losing an interrupt
instance the guest expects, due to raise_softirq_for() bailing on
zombie entries, and dpci_softirq() being the only place where the
zombie state gets cleared?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |