78109066e6
hw/rdma: Use the IEC binary prefix definitions
...
It eases code review, unit is explicit.
Patch generated using:
$ git grep -E '(1024|2048|4096|8192|(<<|>>).?(10|20|30))' hw/ include/hw/
and modified manually.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com >
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Message-Id: <20180625124238.25339-40-f4bug@amsat.org >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2018-07-02 15:41:17 +02:00
350929172b
hw/rdma: Fix possible out of bounds access to regs array
...
Coverity (CID1390589, CID1390608).
Array size is RDMA_BAR1_REGS_SIZE, let's make sure the given address is
in range.
While there also:
1. Adjust the size of this bar to reasonable size
2. Report the size of the array with sizeof(array)
Reported-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Message-Id: <20180430200223.4119-6-marcel.apfelbaum@gmail.com >
2018-05-03 20:52:29 +03:00
c387e8a4ec
hw/rdma: Fix possible out of bounds access to GID table
...
Array size is MAX_PORT_GIDS, let's make sure the given index is in
range.
While there limit device table size to 1.
Reported-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Message-Id: <20180430200223.4119-5-marcel.apfelbaum@gmail.com >
2018-05-03 20:52:29 +03:00
b9e34872b9
hw/rdma: Delete port's pkey table
...
Support for PKEY is not yet implemented. Removing the unneeded table
until a support will be added.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Message-Id: <20180430200223.4119-4-marcel.apfelbaum@gmail.com >
2018-05-03 20:52:29 +03:00
b0197cf80a
hw/rdma: Fix possible usage of a NULL pointer
...
Coverity CID 1390586; The cq handle is provided by the guest
and cannot be trusted to be previuosly allocated.
Fix it by exiting the completion flow.
Reported-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Message-Id: <20180430200223.4119-3-marcel.apfelbaum@gmail.com >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
2018-05-03 20:52:29 +03:00
1bad4957c8
hw/rdma: Fix possible munmap call on a NULL pointer
...
Coverity CID 1390620: we call munmap() on a NULL pointer.
Reported-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Message-Id: <20180430200223.4119-2-marcel.apfelbaum@gmail.com >
2018-05-03 20:52:29 +03:00
6f559013c8
hw/rdma: Fix 32-bit compilation
...
Use the correct printf formats, so that a 32-bit compile doesn't spit
out lots of warnings about %lx being incompatible with uint64_t.
Suggested-by: Eric Blake <eblake@redhat.com >
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Eric Blake <eblake@redhat.com >
Tested-by: Eric Blake <eblake@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20180322095220.9976-4-yuval.shaia@oracle.com >
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com >
2018-03-23 18:38:55 +03:00
197053e212
hw/rdma: fix clang compilation errors
...
Fix some enum castings and extra parentheses.
Reported-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com >
Message-Id: <20180321140316.96045-1-marcel@redhat.com >
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
2018-03-23 18:38:55 +03:00
0efc9511aa
rdma: fix up include directives
...
Our rule right now is to use <> for external headers only.
RDMA code violates that, fix it up.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com >
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com >
2018-03-23 18:38:55 +03:00
79cfdca7aa
hw/rdma: Add support for Query QP verb to pvrdma device
...
This IB verb is needed by some applications - implement it.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com >
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com >
2018-03-23 18:38:55 +03:00
919ae3dd11
hw/rdma: Implementation of PVRDMA device
...
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.
Implementation is divided into 2 components, rdma general and pvRDMA
specific functions and structures.
The second PVRDMA sub-module - interaction with PCI layer.
- Device configuration and setup (MSIX, BARs etc).
- Setup of DSR (Device Shared Resources)
- Setup of device ring.
- Device management.
Reviewed-by: Dotan Barak <dotanb@mellanox.com >
Reviewed-by: Zhu Yanjun <yanjun.zhu@oracle.com >
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com >
2018-02-19 13:03:24 +02:00
98d176f8e5
hw/rdma: PVRDMA commands and data-path ops
...
First PVRDMA sub-module - implementation of the PVRDMA device.
- PVRDMA commands such as create CQ and create MR.
- Data path QP operations - post_send and post_recv.
- Completion handler.
Reviewed-by: Dotan Barak <dotanb@mellanox.com >
Reviewed-by: Zhu Yanjun <yanjun.zhu@oracle.com >
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com >
2018-02-19 13:03:24 +02:00