vfio-pci: Use io_remap_pfn_range() for PCI IO memory
authorJason Gunthorpe <jgg@nvidia.com>
Thu, 5 Nov 2020 16:34:58 +0000 (12:34 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 29 Dec 2020 12:44:57 +0000 (13:44 +0100)
[ Upstream commit 7b06a56d468b756ad6bb43ac21b11e474ebc54a0 ]

commit f8f6ae5d077a ("mm: always have io_remap_pfn_range() set
pgprot_decrypted()") allows drivers using mmap to put PCI memory mapped
BAR space into userspace to work correctly on AMD SME systems that default
to all memory encrypted.

Since vfio_pci_mmap_fault() is working with PCI memory mapped BAR space it
should be calling io_remap_pfn_range() otherwise it will not work on SME
systems.

Fixes: 11c4cd07ba11 ("vfio-pci: Fault mmaps to enable vma tracking")
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Acked-by: Peter Xu <peterx@redhat.com>
Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/vfio/pci/vfio_pci.c

index 237d5aceb302d17dcba3ae8ccd03e2719597366f..f9a3da02c631b698b93a54a2ae36675bc28b4e4b 100644 (file)
@@ -1403,8 +1403,8 @@ static int vfio_pci_mmap_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
 
        mutex_unlock(&vdev->vma_lock);
 
-       if (remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
-                           vma->vm_end - vma->vm_start, vma->vm_page_prot))
+       if (io_remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
+                              vma->vm_end - vma->vm_start, vma->vm_page_prot))
                ret = VM_FAULT_SIGBUS;
 
 up_out: