On Wed, Feb 04, 2026 at 07:00:08PM +0000, Shameer Kolothum wrote:
> Install an event handler on the vEVENTQ fd to read and propagate host
> generated vIOMMU events to the guest.
>
> The handler runs in QEMU’s main loop, using a non-blocking fd registered
s/’s/'s
> +static void smmuv3_accel_event_read(void *opaque)
> + /* Check sequence in hdr for lost events if any */
> + if (accel->event_start && (buf.hdr.sequence - last_seq != 1)) {
> + error_report_once("vEVENTQ: detected lost %u event(s)",
> + buf.hdr.sequence - last_seq - 1);
> + }
> + accel->last_event_seq = buf.hdr.sequence;
> + accel->event_start = true;
> + smmuv3_propagate_event(s, (Evt *)&buf.vevent);
[..]
> + /* Set up event handler for veventq fd */
> + qemu_set_fd_handler(veventq_fd, smmuv3_accel_event_read, NULL, s);
Are callbacks serialized across threads? Otherwise, we need a mutex?
Thanks
Nicolin