Hi,
On 11/04/2022 07:13, Jan Beulich wrote:
--- a/xen/common/event_channel.c
+++ b/xen/common/event_channel.c
@@ -1559,6 +1559,16 @@ void evtchn_move_pirqs(struct vcpu *v)
unsigned int port;
struct evtchn *chn;
+ /*
+ * The work done below is an attempt to keep pIRQ-s on the pCPU-s that the
+ * vCPU-s they're to be delivered to run on. In order to limit lock
+ * contention, check for an empty list prior to acquiring the lock. In the
+ * worst case a pIRQ just bound to this vCPU will be delivered elsewhere
+ * until the vCPU is migrated (again) to another pCPU.
+ */
AFAIU, the downside is another pCPU (and therefore vCPU) will get
disturbed by the interrupt.
But only rarely, i.e. in case a race would actually have occurred.
Maybe I am too paranoid here. The other side of race is controlled by a
domain. So wouldn't it be possible to increase how often the race is hit?
Yes, of course - just to harm itself.
Are you sure? Wouldn't this also harm the next vCPU running on the pCPU
because it will get interrupted more often?
Cheers,
--
Julien Grall