Hi all,

> The last patch from Rahul does not solve the problem. For those cases where 
> the MSI-X table is in one of the BARs to map, the memreg array is still in 
> use.

Rahul's initial patch was pretty much what you have submitted, it just didn't 
build on a 32-bit system.

> My fix was using unsigned long instead of uint32_t for the memreg array as 
> this is used as ?a parameter for mmap system call which expects such a type 
> for the offset (and size).

Maybe use off_t? That would at least be guaranteed to compile on any system...

> In a 32-bit system mmap system call and VFIO mmap implementation will get an 
> unsigned long offset, as it does the struct vma_area_struct for vm_pgoff.
> VFIO will not be able to map the right BAR except for BAR 0.
> 
> So, basically, VFIO kernel code does not work for 32 bit systems.
> 
> I think we should define memreg as unsigned long and to report this problem 
> to the VFIO kernel maintainer.

If that's the case, this should indeed be taken up with the kernel maintainers. 
I don't have a 32-bit system handy to test it, unfortunately.

Thanks,
Anatoly

Reply via email to