On 1/18/24 20:20, Vivek Kasireddy wrote: > Recent updates in OVMF and Seabios have resulted in MMIO regions > being placed at the upper end of the physical address space. As a > result, when a Host device is assigned to the Guest via VFIO, the > following mapping failures occur when VFIO tries to map the MMIO > regions of the device: > VFIO_MAP_DMA failed: Invalid argument > vfio_dma_map(0x557b2f2736d0, 0x380000000000, 0x1000000, 0x7f98ac400000) = -22 > (Invalid argument) > > The above failures are mainly seen on some Intel platforms where > the physical address width is larger than the Host's IOMMU > address width. In these cases, VFIO fails to map the MMIO regions > because the IOVAs would be larger than the IOMMU aperture regions. > > Therefore, one way to solve this problem would be to ensure that > cpu->phys_bits = <IOMMU phys_bits> > This can be done by parsing the IOMMU caps value from sysfs and > extracting the address width and using it to override the > phys_bits value as shown in this patch. > > Previous attempt at solving this issue in OVMF: > https://edk2.groups.io/g/devel/topic/102359124 > > Cc: Gerd Hoffmann <kra...@redhat.com> > Cc: Philippe Mathieu-Daudé <phi...@linaro.org> > Cc: Alex Williamson <alex.william...@redhat.com> > Cc: Cédric Le Goater <c...@redhat.com> > Cc: Laszlo Ersek <ler...@redhat.com> > Cc: Dongwon Kim <dongwon....@intel.com> > Acked-by: Gerd Hoffmann <kra...@redhat.com> > Tested-by: Yanghang Liu <yangh...@redhat.com> > Signed-off-by: Vivek Kasireddy <vivek.kasire...@intel.com> > > --- > v2: > - Replace the term passthrough with assigned (Laszlo)
v1 of the patch was posted in last November; I've now re-read my (superficial) comments from back then. Acked-by: Laszlo Ersek <ler...@redhat.com>