[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v1 19/24] vfio-user: secure DMA support
|
From: |
John Johnson |
|
Subject: |
[PATCH v1 19/24] vfio-user: secure DMA support |
|
Date: |
Tue, 8 Nov 2022 15:13:41 -0800 |
Secure DMA forces the remote process to use DMA r/w messages
instead of directly mapping guest memeory.
Signed-off-by: John G Johnson <john.g.johnson@oracle.com>
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com>
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
---
hw/vfio/pci.c | 4 ++++
hw/vfio/pci.h | 1 +
hw/vfio/user.c | 2 +-
hw/vfio/user.h | 1 +
4 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index 53e3bb8..ce6776b 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -3610,6 +3610,9 @@ static void vfio_user_pci_realize(PCIDevice *pdev, Error
**errp)
vbasedev->proxy = proxy;
vfio_user_set_handler(vbasedev, vfio_user_pci_process_req, vdev);
+ if (udev->secure_dma) {
+ proxy->flags |= VFIO_PROXY_SECURE;
+ }
if (udev->send_queued) {
proxy->flags |= VFIO_PROXY_FORCE_QUEUED;
}
@@ -3718,6 +3721,7 @@ static void vfio_user_instance_finalize(Object *obj)
static Property vfio_user_pci_dev_properties[] = {
DEFINE_PROP_STRING("socket", VFIOUserPCIDevice, sock_name),
+ DEFINE_PROP_BOOL("secure-dma", VFIOUserPCIDevice, secure_dma, false),
DEFINE_PROP_BOOL("x-send-queued", VFIOUserPCIDevice, send_queued, false),
DEFINE_PROP_BOOL("x-no-posted-writes", VFIOUserPCIDevice, no_post, false),
DEFINE_PROP_END_OF_LIST(),
diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h
index c04fa58..c4b8e5c 100644
--- a/hw/vfio/pci.h
+++ b/hw/vfio/pci.h
@@ -196,6 +196,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(VFIOUserPCIDevice, VFIO_USER_PCI)
struct VFIOUserPCIDevice {
VFIOPCIDevice device;
char *sock_name;
+ bool secure_dma; /* disable shared mem for DMA */
bool send_queued; /* all sends are queued */
bool no_post; /* all regions write are sync */
};
diff --git a/hw/vfio/user.c b/hw/vfio/user.c
index d62fe05..0c5493e 100644
--- a/hw/vfio/user.c
+++ b/hw/vfio/user.c
@@ -1627,7 +1627,7 @@ static int vfio_user_io_dma_map(VFIOContainer *container,
MemoryRegion *mr,
* map->vaddr enters as a QEMU process address
* make it either a file offset for mapped areas or 0
*/
- if (fd != -1) {
+ if (fd != -1 && (container->proxy->flags & VFIO_PROXY_SECURE) == 0) {
void *addr = (void *)(uintptr_t)map->vaddr;
map->vaddr = qemu_ram_block_host_offset(mr->ram_block, addr);
diff --git a/hw/vfio/user.h b/hw/vfio/user.h
index 19b8a29..6bd9fd3 100644
--- a/hw/vfio/user.h
+++ b/hw/vfio/user.h
@@ -83,6 +83,7 @@ typedef struct VFIOProxy {
/* VFIOProxy flags */
#define VFIO_PROXY_CLIENT 0x1
+#define VFIO_PROXY_SECURE 0x2
#define VFIO_PROXY_FORCE_QUEUED 0x4
#define VFIO_PROXY_NO_POST 0x8
--
1.8.3.1
- [PATCH v1 06/24] vfio-user: Define type vfio_user_pci_dev_info, (continued)
- [PATCH v1 06/24] vfio-user: Define type vfio_user_pci_dev_info, John Johnson, 2022/11/08
- [PATCH v1 09/24] vfio-user: define socket send functions, John Johnson, 2022/11/08
- [PATCH v1 03/24] vfio-user: add container IO ops vector, John Johnson, 2022/11/08
- [PATCH v1 02/24] vfio-user: add VFIO base abstract class, John Johnson, 2022/11/08
- [PATCH v1 10/24] vfio-user: get device info, John Johnson, 2022/11/08
- [PATCH v1 05/24] vfio-user: add device IO ops vector, John Johnson, 2022/11/08
- [PATCH v1 08/24] vfio-user: define socket receive functions, John Johnson, 2022/11/08
- [PATCH v1 01/24] vfio-user: introduce vfio-user protocol specification, John Johnson, 2022/11/08
- [PATCH v1 14/24] vfio-user: get and set IRQs, John Johnson, 2022/11/08
- [PATCH v1 17/24] vfio-user: dma map/unmap operations, John Johnson, 2022/11/08
- [PATCH v1 19/24] vfio-user: secure DMA support,
John Johnson <=
- [PATCH v1 12/24] vfio-user: region read/write, John Johnson, 2022/11/08
- [PATCH v1 21/24] vfio-user: pci reset, John Johnson, 2022/11/08
- [PATCH v1 07/24] vfio-user: connect vfio proxy to remote server, John Johnson, 2022/11/08
- [PATCH v1 16/24] vfio-user: proxy container connect/disconnect, John Johnson, 2022/11/08
- [PATCH v1 18/24] vfio-user: add dma_unmap_all, John Johnson, 2022/11/08
- [PATCH v1 22/24] vfio-user: add 'x-msg-timeout' option that specifies msg wait times, John Johnson, 2022/11/08
- [PATCH v1 20/24] vfio-user: dma read/write operations, John Johnson, 2022/11/08
- [PATCH v1 23/24] vfio-user: add coalesced posted writes, John Johnson, 2022/11/08
- [PATCH v1 15/24] vfio-user: forward msix BAR accesses to server, John Johnson, 2022/11/08
- [PATCH v1 13/24] vfio-user: pci_user_realize PCI setup, John Johnson, 2022/11/08