On Thu, Jul 28, 2016 at 03:44:57AM +0530, Alex Williamson wrote: > Hi, > > I took a quick look at the dpdk vfio code and spotted an invalid > assumption that should probably be corrected ASAP. That is: > > lib/librte_eal/linuxapp/eal/eal_vfio.h: > #define VFIO_GET_REGION_ADDR(x) ((uint64_t) x << 40ULL) > #define VFIO_GET_REGION_IDX(x) (x >> 40)
Yes. I agree. We need some way to carry essential vfio region info in pci_dev, needed for pread/pwrite. currently, rte_intr_handle only has vfio_dev_fd but thats not sufficient information. I stumbled while adding ioport support in vfio and took a short path to define region_idx thatway. To get-rid of this, Possible approach could be; - add essential vfio region specific info (ie.. offset, idx, flag) in rte_intr_handle. - or pull dev_fd to rte_pci_device{}; and define region specific details. Thanks. > Region offset to index is an implementation detail of the kernel, the > vfio API defines that the offset of a given region (BAR) is found via > the offset field of struct vfio_region_info returned via the > VFIO_DEVICE_GET_REGION_INFO ioctl. You're free to cache the offset > into any sort of local variable you like, but the kernel may change the > implementation of region index to offset at any point in time. This is > explicitly not part of the ABI. Is there a place to file a bug, or is > this sufficient? Thanks, > > Alex