summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Wang <jasowang@redhat.com>2021-06-02 16:41:05 +0800
committerJason Wang <jasowang@redhat.com>2021-06-11 10:30:13 +0800
commitd60c75d28fe9d49bef28f7fa863481e1d9f6ff96 (patch)
tree2efc3efd70a182a0b428de708d08a49c3302139d
parent7fe7fae8b48e3f9c647fd685e5155ebc8e6fb84d (diff)
downloadqemu-d60c75d28fe9d49bef28f7fa863481e1d9f6ff96.zip
vhost-vdpa: skip ram device from the IOTLB mapping
vDPA is not tie to any specific hardware, for safety and simplicity, vhost-vDPA doesn't allow MMIO area to be mapped via IOTLB. Only the doorbell could be mapped via mmap(). So this patch exclude skip the ram device from the IOTLB mapping. Reviewed-by: Si-Wei Liu <si-wei.liu@oracle.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
-rw-r--r--hw/virtio/vhost-vdpa.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
index ee51863d28..aef5055abf 100644
--- a/hw/virtio/vhost-vdpa.c
+++ b/hw/virtio/vhost-vdpa.c
@@ -28,6 +28,8 @@ static bool vhost_vdpa_listener_skipped_section(MemoryRegionSection *section)
{
return (!memory_region_is_ram(section->mr) &&
!memory_region_is_iommu(section->mr)) ||
+ /* vhost-vDPA doesn't allow MMIO to be mapped */
+ memory_region_is_ram_device(section->mr) ||
/*
* Sizing an enabled 64-bit BAR can cause spurious mappings to
* addresses in the upper part of the 64-bit address space. These
@@ -172,22 +174,12 @@ static void vhost_vdpa_listener_region_add(MemoryListener *listener,
vaddr, section->readonly);
if (ret) {
error_report("vhost vdpa map fail!");
- if (memory_region_is_ram_device(section->mr)) {
- /* Allow unexpected mappings not to be fatal for RAM devices */
- error_report("map ram fail!");
- return ;
- }
goto fail;
}
return;
fail:
- if (memory_region_is_ram_device(section->mr)) {
- error_report("failed to vdpa_dma_map. pci p2p may not work");
- return;
-
- }
/*
* On the initfn path, store the first error in the container so we
* can gracefully fail. Runtime, there's not much we can do other