On 5/21/25 10:25, John Levon wrote:
On Wed, May 21, 2025 at 10:11:06AM +0200, Cédric Le Goater wrote:

-     * Fill in @info with information on the region given by @info->index.
+     * Fill in @info (and optionally @fd) with information on the region given
+     * by @info->index.

The whole VFIODeviceIOOps struct needs better documentation. The arguments
are missing.

Will add another preparatory patch, thanks.

@@ -29,6 +29,7 @@ typedef struct VFIORegion {
       uint32_t nr_mmaps;
       VFIOMmap *mmaps;
       uint8_t nr; /* cache the region number for debug */
+    int fd; /* fd to mmap() region */

Could you split this change ? I am not sure it is needed.

The idea was to avoid having every bit of code that needed the region fd having
to remember to do:

@@ -278,7 +283,7 @@ int vfio_region_mmap(VFIORegion *region)
           region->mmaps[i].mmap = mmap(map_align, region->mmaps[i].size, prot,
                                        MAP_SHARED | MAP_FIXED,
-                                     region->vbasedev->fd,
+                                     region->fd,

Would this work ?

                vbasedev->region_fds ? vbasedev->region_fds[region->nr] : 
vbasedev->fd,

That is, region->fd is *always* correct, and there is less chance of a bug where
somebody incorrectly uses vbasedev fd instead. IMO "region->fd" is much
cleaner/clearer.

maybe. It's only used in one place : vfio_region_mmap(). I think caching the
fd value under VFIORegion is overkill.


Thanks,

C.




But, if you don't like that, yes, I can drop region->fd in favour of the above.

thanks
john



Reply via email to