On 27.11.20 14:27, Jan Beulich wrote:
On 25.11.2020 11:51, Juergen Gross wrote:--- a/xen/common/event_fifo.c +++ b/xen/common/event_fifo.c @@ -175,6 +175,18 @@ static void evtchn_fifo_set_pending(struct vcpu *v, struct evtchn *evtchn) return; }+ /*+ * Control block not mapped. The guest must not unmask an + * event until the control block is initialized, so we can + * just drop the event. + */ + if ( unlikely(!v->evtchn_fifo->control_block) ) + { + printk(XENLOG_G_WARNING + "%pv has no FIFO event channel control block\n", v); + return; + }This results in bypassing the setting of PENDING and the possible call to evtchn_check_pollers(). It may in particular be the case that a very special purpose guest uses event channels just for waking up pollers, which - afaict - then doesn't require setting up a control block. To give an example, I could easily see an XTF test avoid that step if indeed it's unnecessary.
Okay, I can move the test after setting PENDING and do a "goto unlock" instead of returning. Juergen
OpenPGP_0xB0DE9DD628BF132F.asc
Description: application/pgp-keys
OpenPGP_signature
Description: OpenPGP digital signature