8b42cfab82
hw/rdma: Modify create/destroy QP to support SRQ
...
Modify create/destroy QP to support shared receive queue and rearrange
the destroy_qp() code to avoid touching the QP after calling
rdma_rm_dealloc_qp().
Signed-off-by: Kamal Heib <kamalheib1@gmail.com >
Message-Id: <20190403113343.26384-4-kamalheib1@gmail.com >
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-05-04 15:55:56 +03:00
cdc84058bc
hw/rdma: Add support for managing SRQ resource
...
Adding the required functions and definitions for support managing the
shared receive queues (SRQs).
Signed-off-by: Kamal Heib <kamalheib1@gmail.com >
Message-Id: <20190403113343.26384-3-kamalheib1@gmail.com >
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-05-04 15:55:56 +03:00
e926c9f1bc
hw/rdma: Add SRQ support to backend layer
...
Add the required functions and definitions to support shared receive
queues (SRQs) in the backend layer.
Signed-off-by: Kamal Heib <kamalheib1@gmail.com >
Message-Id: <20190403113343.26384-2-kamalheib1@gmail.com >
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-05-04 15:55:56 +03:00
84bdc58c06
Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging
...
* Kconfig improvements (msi_nonbroken, imply for default PCI devices)
* intel-iommu: sharing passthrough FlatViews (Peter)
* Fix for SEV with VFIO (Brijesh)
* Allow compilation without CONFIG_PARALLEL (Thomas)
# gpg: Signature made Thu 21 Mar 2019 16:42:24 GMT
# gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg: issuer "pbonzini@redhat.com "
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org >" [full]
# gpg: aka "Paolo Bonzini <pbonzini@redhat.com >" [full]
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1
# Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83
* remotes/bonzini/tags/for-upstream: (23 commits)
virtio-vga: only enable for specific boards
config-all-devices.mak: rebuild on reconfigure
minikconf: fix parser typo
intel-iommu: optimize nodmar memory regions
test-announce-self: convert to qgraph
hw/alpha/Kconfig: DP264 hardware requires e1000 network card
hw/hppa/Kconfig: Dino board requires e1000 network card
hw/sh4/Kconfig: r2d machine requires the rtl8139 network card
hw/ppc/Kconfig: e500 based machines require virtio-net-pci device
hw/ppc/Kconfig: Bamboo machine requires e1000 network card
hw/mips/Kconfig: Fulong 2e board requires ati-vga/rtl8139 PCI devices
hw/mips/Kconfig: Malta machine requires the pcnet network card
hw/i386/Kconfig: enable devices that can be created by default
hw/isa/Kconfig: PIIX4 southbridge requires USB UHCI
hw/isa/Kconfig: i82378 SuperIO requires PC speaker device
prep: do not select I82374
hw/i386/Kconfig: PC uses I8257, not I82374
hw/char/parallel: Make it possible to compile also without CONFIG_PARALLEL
target/i386: sev: Do not pin the ram device memory region
memory: Fix the memory region type assignment order
...
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
# Conflicts:
# hw/rdma/Makefile.objs
# hw/riscv/sifive_plic.c
2019-03-28 09:18:53 +00:00
500016e5db
trace-events: Shorten file names in comments
...
We spell out sub/dir/ in sub/dir/trace-events' comments pointing to
source files. That's because when trace-events got split up, the
comments were moved verbatim.
Delete the sub/dir/ part from these comments. Gets rid of several
misspellings.
Signed-off-by: Markus Armbruster <armbru@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-id: 20190314180929.27722-3-armbru@redhat.com
Message-Id: <20190314180929.27722-3-armbru@redhat.com >
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
2019-03-22 16:18:07 +00:00
d6c1bd4a22
kconfig: add dependencies on CONFIG_MSI_NONBROKEN
...
For devices that require msi_init/msix_init to succeed, add a
dependency on CONFIG_MSI_NONBROKEN. This will prevent those devices
from appearing in a binary that cannot instantiate them.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2019-03-18 09:39:57 +01:00
cb42a5867e
hw/rdma: Fix the error prints in create_qp_rings()
...
The prints should indicate that we are talking about QP and not CQ.
Fixes: 98d176f8e5
("hw/rdma: PVRDMA commands and data-path ops")
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Signed-off-by: Kamal Heib <kamalheib1@gmail.com >
Message-Id: <20190227085546.23690-1-kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
d151f5debd
hw/pvrdma: Fix zero-initialization of resp in {query/modify}_qp
...
Make sure to zero-initialize only the pvrdma_cmd_query_qp_resp and not
the whole pvrdma_cmd_resp for query_qp, in modify_qp the resp isn't used
so remove it.
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Signed-off-by: Kamal Heib <kamalheib1@gmail.com >
Message-Id: <20190314153031.7197-5-kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
a421c81148
hw/rdma: Use {} instead of {0}
...
Initialize structs with {} instead of {0} to make sure that all code is
using the same convention.
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Kamal Heib <kamalheib1@gmail.com >
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Message-Id: <20190314153031.7197-4-kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
1373f4a872
hw/rdma: Remove unused parameter from rdma_poll_cq()
...
The 'rdma_dev_res' parameter is not used in rdma_poll_cq(), so remove it.
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Kamal Heib <kamalheib1@gmail.com >
Message-Id: <20190314153031.7197-3-kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
7b6f6e8138
hw/rdma: Fix broken paths to docs/devel/tracing.txt
...
The tracing.txt file is under "docs/devel" and not "docs".
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Signed-off-by: Kamal Heib <kamalheib1@gmail.com >
Message-Id: <20190314153031.7197-2-kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
59f911938f
hw/rdma: another clang compilation fix
...
Configuring QEMU with:
configure --target-list="x86_64-softmmu" --cc=clang --enable-pvrdma
Results in:
qemu/hw/rdma/rdma_rm_defs.h:108:3: error: redefinition of typedef 'RdmaDeviceResources' is a C11 feature [-Werror,-Wtypedef-redefinition]
} RdmaDeviceResources;
^
qemu/hw/rdma/rdma_backend_defs.h:24:36: note: previous definition is here
typedef struct RdmaDeviceResources RdmaDeviceResources;
Fix by removing one of the 'typedef' definitions.
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Message-Id: <20190214154053.15050-1-marcel.apfelbaum@gmail.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Acked-by: Kamal Heib <kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
db8b88bf2c
hw/pvrdma: Provide correct value to object_get_typename
...
Use base object of PCIDevice in call to object_get_typename().
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Message-Id: <1552300155-25216-12-git-send-email-yuval.shaia@oracle.com >
Reviewed-by: Kamal Heib <kamalheib1@gmail.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
b556c3cefc
hw/pvrdma: Unregister from shutdown notifier when device goes down
...
This hook was installed to close the device when VM is going down.
After the device is closed there is no need to be informed on VM
shutdown.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Message-Id: <1552300155-25216-11-git-send-email-yuval.shaia@oracle.com >
Reviewed-by: Kamal Heib <kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
a2f1dc6091
hw/pvrdma: Delete pvrdma_exit function
...
This hook is not called and was implemented by mistake.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Message-Id: <1552300155-25216-10-git-send-email-yuval.shaia@oracle.com >
Reviewed-by: Kamal Heib <kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
3c890bcf30
hw/pvrdma: Delete unneeded function argument
...
The function's argument rdma_dev_res is not needed as it is stored in
the backend_dev object at init.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Message-Id: <1552300155-25216-9-git-send-email-yuval.shaia@oracle.com >
Reviewed-by: Kamal Heib <kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
bf4414515b
hw/rdma: Free all receive buffers when QP is destroyed
...
When QP is destroyed the backend QP is destroyed as well. This ensures
we clean all received buffer we posted to it.
However, a contexts of these buffers are still remain in the device.
Fix it by maintaining a list of buffer's context and free them when QP
is destroyed.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Message-Id: <1552300155-25216-8-git-send-email-yuval.shaia@oracle.com >
Reviewed-by: Kamal Heib <kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
ff30a446b1
hw/rdma: Free all MAD receive buffers when device is closed
...
When device is going down free all saved MAD buffers.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Message-Id: <1552300155-25216-7-git-send-email-yuval.shaia@oracle.com >
Reviewed-by: Kamal Heib <kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
f4b2c02a29
{hmp, hw/pvrdma}: Expose device internals via monitor interface
...
Allow interrogating device internals through HMP interface.
The exposed indicators can be used for troubleshooting by developers or
sysadmin.
There is no need to expose these attributes to a management system (e.x.
libvirt) because (1) most of them are not "device-management' related
info and (2) there is no guarantee the interface is stable.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com >
Acked-by: Markus Armbruster <armbru@redhat.com >
Message-Id: <1552300155-25216-6-git-send-email-yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
c2dd117b38
hw/pvrdma: Collect debugging statistics
...
Add counters to enable enhance debugging
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Message-Id: <1552300155-25216-5-git-send-email-yuval.shaia@oracle.com >
Reviewed-by: Kamal Heib <kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
2cfa953009
hw/rdma: Protect against concurrent execution of poll_cq
...
The function rdma_poll_cq is called from two contexts - completion
handler thread which sense new completion on backend channel and
explicitly as result of guest issuing poll_cq command.
Add lock to protect against concurrent executions.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Message-Id: <1552300155-25216-4-git-send-email-yuval.shaia@oracle.com >
Reviewed-by: Kamal Heib <kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
b20fc79510
hw/rdma: Introduce protected qlist
...
To make code more readable move handling of protected list to a
rdma_utils
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Message-Id: <1552300155-25216-3-git-send-email-yuval.shaia@oracle.com >
Reviewed-by: Kamal Heib <kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
4d71b38ae8
hw/rdma: Switch to generic error reporting way
...
Utilize error_report for all pr_err calls and some pr_dbg that are
considered as errors.
For the remaining pr_dbg calls, the important ones were replaced by
trace points while other deleted.
Some of the functions got renamed to include prefix "rdma/pvrdma"
in the function name.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Message-Id: <1552300155-25216-2-git-send-email-yuval.shaia@oracle.com >
Reviewed-by: Kamal Heib <kamalheib1@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-03-16 15:52:44 +02:00
555b3d67bc
hw/rdma: modify struct initialization
...
Do not initialize structs with {0} since some
CLANG versions do not support it.
Use {} construct instead.
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Tested-by: Cornelia Huck <cohuck@redhat.com >
Message-Id: <20190118124614.24548-3-marcel.apfelbaum@gmail.com >
Reviewed-by: Cornelia Huck <cohuck@redhat.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-01-19 11:01:33 +02:00
a5fe209d71
hw: rdma: fix an off-by-one issue
...
In rdma_rm_get_backend_gid_index(), the 'sgid_idx' is used
to index the array 'dev_res->port.gid_tbl' which size is
MAX_PORT_GIDS. Current the 'sgid_idx' may be MAX_PORT_GIDS
thus cause an off-by-one issue.
Spotted by Coverity: CID 1398594
Signed-off-by: Li Qiang <liq3ea@163.com >
Message-Id: <20190103131251.49271-1-liq3ea@163.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-01-19 10:57:48 +02:00
a1aa88b7dc
hw/rdma: Verify that ptr is not NULL before freeing
...
To cover the case where fini() was called even when init() fails make
sure objects are not NULL before calling to non-null-safe destructors.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Message-Id: <20190116151538.14088-1-yuval.shaia@oracle.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-01-19 10:54:37 +02:00
5bb8b73987
hw/pvrdma: Make function pvrdma_qp_send/recv return void.
...
The functions handles errors internaly, callers have nothing to do with
the return value.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Message-Id: <20190109202140.4051-1-yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum<marcel.apfelbaum@gmail.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-01-19 10:53:16 +02:00
26fd869556
hw/pvrdma: Post CQE when receive invalid gid index
...
This error should propagate back to guest.
Spotted by Coverity: CID 1398595
Fixes: 2b05705dc8
Reported-by: Li Qiang <liq3ea@163.com >
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-01-19 10:49:40 +02:00
732d948ca5
hw/rdma: Delete unused struct member
...
This member is used only in init_device_caps function, make it local.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum<marcel.apfelbaum@gmail.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com >
2019-01-19 10:45:23 +02:00
ffef47754a
hw/pvrdma: Remove max-sge command-line param
...
This parameter has no effect, fix it.
The function init_dev_caps sets the front-end's max-sge to MAX_SGE. Then
it checks backend's max-sge and adjust it accordingly (we can't send
more than what the device supports).
On send and recv we need to make sure the num_sge in the WQE does not
exceeds the backend device capability.
This check is done in pvrdma level so check on rdma level is deleted.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Message-Id: <20190109194123.3468-1-yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum<marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2019-01-19 10:31:24 +02:00
f1e2e38ee0
pvrdma: check return value from pvrdma_idx_ring_has_ routines
...
pvrdma_idx_ring_has_[data/space] routines also return invalid
index PVRDMA_INVALID_IDX[=-1], if ring has no data/space. Check
return value from these routines to avoid plausible infinite loops.
Reported-by: Li Qiang <liq3ea@163.com >
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org >
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:57 +02:00
7be3a21325
rdma: remove unused VENDOR_ERR_NO_SGE macro
...
With commit 4481985c (rdma: check num_sge does not exceed MAX_SGE)
macro VENDOR_ERR_NO_SGE is no longer in use - delete it.
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org >
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:57 +02:00
509f57c98e
pvrdma: release ring object in case of an error
...
create_cq and create_qp routines allocate ring object, but it's
not released in case of an error, leading to memory leakage.
Reported-by: Li Qiang <liq3ea@163.com >
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org >
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:57 +02:00
2c858ce5da
pvrdma: check number of pages when creating rings
...
When creating CQ/QP rings, an object can have up to
PVRDMA_MAX_FAST_REG_PAGES 8 pages. Check 'npages' parameter
to avoid excessive memory allocation or a null dereference.
Reported-by: Li Qiang <liq3ea@163.com >
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org >
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:57 +02:00
2aa86456fb
pvrdma: add uar_read routine
...
Define skeleton 'uar_read' routine. Avoid NULL dereference.
Reported-by: Li Qiang <liq3ea@163.com >
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:57 +02:00
0e68373cc2
rdma: check num_sge does not exceed MAX_SGE
...
rdma back-end has scatter/gather array ibv_sge[MAX_SGE=4] set
to have 4 elements. A guest could send a 'PvrdmaSqWqe' ring element
with 'num_sge' set to > MAX_SGE, which may lead to OOB access issue.
Add check to avoid it.
Reported-by: Saar Amar <saaramar5@gmail.com >
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org >
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:57 +02:00
cce648613b
pvrdma: release device resources in case of an error
...
If during pvrdma device initialisation an error occurs,
pvrdma_realize() does not release memory resources, leading
to memory leakage.
Reported-by: Li Qiang <liq3ea@163.com >
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org >
Message-Id: <20181212175817.815-1-ppandit@redhat.com >
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:57 +02:00
305fd2ba06
hw/rdma: Do not call rdma_backend_del_gid on an empty gid
...
When device goes down the function fini_ports loops over all entries in
gid table regardless of the fact whether entry is valid or not. In case
that entry is not valid we'd like to skip from any further processing in
backend device.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:57 +02:00
9a3053d2e8
hw/rdma: Do not use bitmap_zero_extend to free bitmap
...
bitmap_zero_extend is designed to work for extending, not for
shrinking.
Using g_free instead.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:57 +02:00
ffa65d97fc
hw/pvrdma: Clean device's resource when system is shutdown
...
In order to clean some external resources such as GIDs, QPs etc,
register to receive notification when VM is shutdown.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:57 +02:00
14c74f7207
hw/rdma: Remove unneeded code that handles more that one port
...
Device supports only one port, let's remove a dead code that handles
more than one port.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:56 +02:00
091782171f
hw/pvrdma: Fill error code in command's response
...
Driver checks error code let's set it.
In addition, for code simplification purposes, set response's fields
ack, response and err outside of the scope of command handlers.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:56 +02:00
eaac01005d
hw/pvrdma: Fill all CQE fields
...
Add ability to pass specific WC attributes to CQE such as GRH_BIT flag.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:56 +02:00
e976ebc87c
hw/pvrdma: Make device state depend on Ethernet function state
...
User should be able to control the device by changing Ethernet function
state so if user runs 'ifconfig ens3 down' the PVRDMA function should be
down as well.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:56 +02:00
028c3f93d6
hw/rdma: Initialize node_guid from vmxnet3 mac address
...
node_guid should be set once device is load.
Make node_guid be GID format (32 bit) of PCI function 0 vmxnet3 device's
MAC.
A new function was added to do the conversion.
So for example the MAC 56:b6:44:e9:62:dc will be converted to GID
54b6:44ff:fee9:62dc.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:56 +02:00
d961ead16e
hw/pvrdma: Make sure PCI function 0 is vmxnet3
...
Guest driver enforces it, we should also.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:56 +02:00
2b05705dc8
hw/pvrdma: Add support to allow guest to configure GID table
...
The control over the RDMA device's GID table is done by updating the
device's Ethernet function addresses.
Usually the first GID entry is determined by the MAC address, the second
by the first IPv6 address and the third by the IPv4 address. Other
entries can be added by adding more IP addresses. The opposite is the
same, i.e. whenever an address is removed, the corresponding GID entry
is removed.
The process is done by the network and RDMA stacks. Whenever an address
is added the ib_core driver is notified and calls the device driver
add_gid function which in turn update the device.
To support this in pvrdma device we need to hook into the create_bind
and destroy_bind HW commands triggered by pvrdma driver in guest.
Whenever a change is made to the pvrdma port's GID table a special QMP
message is sent to be processed by libvirt to update the address of the
backend Ethernet device.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum<marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:56 +02:00
1625bb13da
hw/pvrdma: Set the correct opcode for send completion
...
opcode for WC should be set by the device and not taken from work
element.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:56 +02:00
2bff59e699
hw/pvrdma: Set the correct opcode for recv completion
...
The function pvrdma_post_cqe populates CQE entry with opcode from the
given completion element. For receive operation value was not set. Fix
it by setting it to IBV_WC_RECV.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:56 +02:00
536692ca1d
hw/pvrdma: Make default pkey 0xFFFF
...
Commit 6e7dba23af
("hw/pvrdma: Make default pkey 0xFFFF") exports
default pkey as external definition but omit the change from 0x7FFF to
0xFFFF.
Fixes: 6e7dba23af
("hw/pvrdma: Make default pkey 0xFFFF")
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com >
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com >
2018-12-22 11:09:56 +02:00