Hi Henry,
On 11/05/2024 08:29, Henry Wang wrote:
+ /*
+ * Handle the LR where the physical interrupt is de-assigned
from the
+ * guest before it was EOIed
+ */
+ struct vcpu *v_target = vgic_get_target_vcpu(d->vcpu[0], virq);
This will return a vCPU from the current affinity. This may not be
where the interrupt was injected. From a brief look, I can't tell
whether we have an easy way to know where the interrupt was injected
(other than the pending_irq is in the list lr_queue/inflight)
I doubt if we need to handle more than this - I think if the pending_irq
is not in the lr_queue/inflight list, it would not belong to the corner
case we are talking about (?).
I didn't suggest we would need to handle the case where the pending_irq
is not any of the queues. I was pointing out that I think we don't
directly store the vCPU ID where we injected the IRQ. Instead, the
pending_irq is just in list, so we will possibly need to store the vCPU
ID for convenience.
Cheers,
--
Julien Grall