qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH V6 4/5] pvrdma: initial implementation


From: Marcel Apfelbaum
Subject: Re: [Qemu-devel] [PATCH V6 4/5] pvrdma: initial implementation
Date: Wed, 10 Jan 2018 11:06:14 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.4.0

Hi Cornelia,

On 09/01/2018 12:39, Cornelia Huck wrote:
On Sun,  7 Jan 2018 14:32:23 +0200
Marcel Apfelbaum <address@hidden> wrote:

From: Yuval Shaia <address@hidden>

PVRDMA is the QEMU implementation of VMware's paravirtualized RDMA device.
It works with its Linux Kernel driver AS IS, no need for any special guest
modifications.

While it complies with the VMware device, it can also communicate with bare
metal RDMA-enabled machines and does not require an RDMA HCA in the host, it
can work with Soft-RoCE (rxe).

It does not require the whole guest RAM to be pinned allowing memory
over-commit and, even if not implemented yet, migration support will be
possible with some HW assistance.

Signed-off-by: Yuval Shaia <address@hidden>
Signed-off-by: Marcel Apfelbaum <address@hidden>
---
  Makefile.objs                      |   2 +
  configure                          |   9 +-
  default-configs/arm-softmmu.mak    |   1 +
  default-configs/i386-softmmu.mak   |   1 +
  default-configs/x86_64-softmmu.mak |   1 +
  hw/Makefile.objs                   |   1 +
  hw/rdma/Makefile.objs              |   6 +
  hw/rdma/rdma_backend.c             | 815 +++++++++++++++++++++++++++++++++++++
  hw/rdma/rdma_backend.h             |  92 +++++
  hw/rdma/rdma_backend_defs.h        |  62 +++
  hw/rdma/rdma_rm.c                  | 619 ++++++++++++++++++++++++++++
  hw/rdma/rdma_rm.h                  |  69 ++++
  hw/rdma/rdma_rm_defs.h             | 106 +++++
  hw/rdma/rdma_utils.c               |  52 +++
  hw/rdma/rdma_utils.h               |  43 ++
  hw/rdma/trace-events               |   5 +
  hw/rdma/vmw/pvrdma.h               | 122 ++++++
  hw/rdma/vmw/pvrdma_cmd.c           | 679 ++++++++++++++++++++++++++++++
  hw/rdma/vmw/pvrdma_dev_api.h       | 602 +++++++++++++++++++++++++++
  hw/rdma/vmw/pvrdma_dev_ring.c      | 139 +++++++
  hw/rdma/vmw/pvrdma_dev_ring.h      |  42 ++
  hw/rdma/vmw/pvrdma_ib_verbs.h      | 433 ++++++++++++++++++++
  hw/rdma/vmw/pvrdma_main.c          | 644 +++++++++++++++++++++++++++++
  hw/rdma/vmw/pvrdma_qp_ops.c        | 212 ++++++++++
  hw/rdma/vmw/pvrdma_qp_ops.h        |  27 ++
  hw/rdma/vmw/pvrdma_ring.h          | 134 ++++++
  hw/rdma/vmw/trace-events           |   5 +
  hw/rdma/vmw/vmw_pvrdma-abi.h       | 311 ++++++++++++++
  include/hw/pci/pci_ids.h           |   3 +
  29 files changed, 5233 insertions(+), 4 deletions(-)
  create mode 100644 hw/rdma/Makefile.objs
  create mode 100644 hw/rdma/rdma_backend.c
  create mode 100644 hw/rdma/rdma_backend.h
  create mode 100644 hw/rdma/rdma_backend_defs.h
  create mode 100644 hw/rdma/rdma_rm.c
  create mode 100644 hw/rdma/rdma_rm.h
  create mode 100644 hw/rdma/rdma_rm_defs.h
  create mode 100644 hw/rdma/rdma_utils.c
  create mode 100644 hw/rdma/rdma_utils.h
  create mode 100644 hw/rdma/trace-events
  create mode 100644 hw/rdma/vmw/pvrdma.h
  create mode 100644 hw/rdma/vmw/pvrdma_cmd.c
  create mode 100644 hw/rdma/vmw/pvrdma_dev_api.h
  create mode 100644 hw/rdma/vmw/pvrdma_dev_ring.c
  create mode 100644 hw/rdma/vmw/pvrdma_dev_ring.h
  create mode 100644 hw/rdma/vmw/pvrdma_ib_verbs.h
  create mode 100644 hw/rdma/vmw/pvrdma_main.c
  create mode 100644 hw/rdma/vmw/pvrdma_qp_ops.c
  create mode 100644 hw/rdma/vmw/pvrdma_qp_ops.h
  create mode 100644 hw/rdma/vmw/pvrdma_ring.h
  create mode 100644 hw/rdma/vmw/trace-events
  create mode 100644 hw/rdma/vmw/vmw_pvrdma-abi.h

(...)

diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak
index b0d6e65038..0e7a3c1700 100644
--- a/default-configs/arm-softmmu.mak
+++ b/default-configs/arm-softmmu.mak
@@ -132,3 +132,4 @@ CONFIG_GPIO_KEY=y
  CONFIG_MSF2=y
  CONFIG_FW_CFG_DMA=y
  CONFIG_XILINX_AXI=y
+CONFIG_PVRDMA=y
diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak
index 95ac4b464a..88298e4ef5 100644
--- a/default-configs/i386-softmmu.mak
+++ b/default-configs/i386-softmmu.mak
@@ -61,3 +61,4 @@ CONFIG_HYPERV_TESTDEV=$(CONFIG_KVM)
  CONFIG_PXB=y
  CONFIG_ACPI_VMGENID=y
  CONFIG_FW_CFG_DMA=y
+CONFIG_PVRDMA=y
diff --git a/default-configs/x86_64-softmmu.mak 
b/default-configs/x86_64-softmmu.mak
index 0221236825..f571da36eb 100644
--- a/default-configs/x86_64-softmmu.mak
+++ b/default-configs/x86_64-softmmu.mak
@@ -61,3 +61,4 @@ CONFIG_HYPERV_TESTDEV=$(CONFIG_KVM)
  CONFIG_PXB=y
  CONFIG_ACPI_VMGENID=y
  CONFIG_FW_CFG_DMA=y
+CONFIG_PVRDMA=y

Any reason you did not add this to other architectures?


We simply didn't test other architectures, but it could work.

I added "CONFIG_PVRDMA=$(CONFIG_PCI)" to s390x-softmmu.mak, and it at
least builds (did not try to actually get it to work, although I don't
see any immediate blocker for that).

We will add it to s390, sure.

Thanks,
Marcel

(...)

[...]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]