On Mon, Sep 21, 2026 at 02:08:47PM +0100, Matt Evans wrote:
Not quite; the priv->revoked flag tracks temporary periods of inaccessibility. An example is VFIO resetting a function; the BAR mappings as seen by the CPU and DMABUFs made from the BARs are all made inaccessible before the reset, and made accessible again after the reset.
From the importer perspective this is a permanent revoke.
The right way to view this flow is VFIO permanently revokes the DMABUF FD. Then instead of forcing a new FD to be obtained it replaces the existing FD with a working one.
From an importer perspective it sees the revoke happen and then that's it, the dmabuf never does anything further. The importer has to unmap and start from scratch, get a FD and map it.
That VFIO re-used the FD to make a new live export isn't visible to the importer at all.
I think that is where this "temporary revoke" language gets confusing.
Call it "VFIO reuses the FD to create a new live mapping" is clearer than calling it "temporarily revoke" which sounds too much like move.
Jason