John Levon and Cédric Le Goater
23c586abf2
vfio-user: recycle msg on failure
...
If we fail to read an incoming request, recycle the message.
Resolves: Coverity CID 1611807
Resolves: Coverity CID 1611808
Signed-off-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20251203100316.3604456-6-john.levon@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-12-03 15:07:47 +01:00
John Levon and Cédric Le Goater
0df8baec95
vfio-user: simplify vfio_user_recv_one()
...
This function was unnecessarily difficult to understand due to the
separate handling of request and reply messages. Use common code for
both where we can.
Signed-off-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20251203100316.3604456-5-john.levon@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-12-03 15:07:47 +01:00
John Levon and Cédric Le Goater
7b884e2a27
vfio-user: refactor out header handling
...
Simplify vfio_user_recv_one() by moving the header handling out to a
helper function.
Signed-off-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20251203100316.3604456-4-john.levon@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-12-03 15:07:47 +01:00
John Levon and Cédric Le Goater
356c7b1752
vfio-user: clarify partial message handling
...
Improve a comment for this.
Signed-off-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Reviewed-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20251203100316.3604456-3-john.levon@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-12-03 15:07:47 +01:00
John Levon and Cédric Le Goater
a8731f691d
vfio-user: simplify vfio_user_process()
...
It can figure out if it's a reply by itself, rather than passing that
information in.
Signed-off-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Reviewed-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20251203100316.3604456-2-john.levon@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-12-03 15:07:47 +01:00
Peter Maydell
b1f4f4695c
vfio: Clean up includes
...
This commit was created with scripts/clean-includes:
./scripts/clean-includes --git vfio hw/vfio hw/vfio-user
All .c should include qemu/osdep.h first. The script performs three
related cleanups:
* Ensure .c files include qemu/osdep.h first.
* Including it in a .h is redundant, since the .c already includes
it. Drop such inclusions.
* Likewise, including headers qemu/osdep.h includes is redundant.
Drop these, too.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-id: 20251104160943.751997-9-peter.maydell@linaro.org
2025-11-14 13:18:04 +00:00
John Levon and Cédric Le Goater
aaca725884
vfio: rename field to "num_initial_regions"
...
We set VFIODevice::num_regions at initialization time, and do not
otherwise refresh it. As it is valid in theory for a VFIO device to
later increase the number of supported regions, rename the field to
"num_initial_regions" to better reflect its semantics.
Signed-off-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Reviewed-by: Alex Williamson <alex@shazbot.org >
Link: https://lore.kernel.org/qemu-devel/20251014151227.2298892-2-john.levon@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-10-22 08:12:52 +02:00
Philippe Mathieu-Daudé and Cédric Le Goater
f0b52aa08a
hw/vfio: Use uint64_t for IOVA mapping size in vfio_container_dma_*map
...
The 'ram_addr_t' type is described as:
a QEMU internal address space that maps guest RAM physical
addresses into an intermediate address space that can map
to host virtual address spaces.
This doesn't represent well an IOVA mapping size. Simply use
the uint64_t type.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250930123528.42878-5-philmd@linaro.org
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-10-02 10:41:23 +02:00
Mark Cave-Ayland and Cédric Le Goater
d0776b8c60
vfio-user/pci.c: rename vfio_user_pci_dev_info to vfio_user_pci_info
...
This changes the prefix to match the name of the QOM type.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-28-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-25 17:55:20 +02:00
Mark Cave-Ayland and Cédric Le Goater
d5447437ae
vfio-user/pci.c: rename vfio_user_instance_finalize() to vfio_user_pci_finalize()
...
This is the more typical naming convention for QOM finalize() functions, in
particular it changes the prefix to match the name of the QOM type.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-27-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-25 17:55:20 +02:00
Mark Cave-Ayland and Cédric Le Goater
de837b5cbd
vfio-user/pci.c: rename vfio_user_instance_init() to vfio_user_pci_init()
...
This is the more typical naming convention for QOM init() functions, in
particular it changes the prefix to match the name of the QOM type.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-26-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-25 17:55:20 +02:00
Mark Cave-Ayland and Cédric Le Goater
78f4b77607
vfio-user/pci.c: rename vfio_user_pci_dev_properties[] to vfio_user_pci_properties[]
...
This changes the prefix to match the name of the QOM type.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-25-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-25 17:55:20 +02:00
Mark Cave-Ayland and Cédric Le Goater
c833f7a5c6
vfio-user/pci.c: rename vfio_user_pci_dev_class_init() to vfio_user_pci_class_init()
...
This changes the function prefix to match the name of the QOM type.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-24-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-25 17:55:20 +02:00
Mark Cave-Ayland and Cédric Le Goater
af2a8bfb3c
hw/vfio/types.h: rename TYPE_VFIO_PCI_BASE to TYPE_VFIO_PCI_DEVICE
...
This brings the QOM type name in line with the underlying VFIOPCIDevice structure.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-17-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-25 17:55:20 +02:00
Mark Cave-Ayland and Cédric Le Goater
ef70eb32b8
include/hw/vfio/vfio-container-base.h: rename file to vfio-container.h
...
With the rename of VFIOContainerBase to VFIOContainer, the vfio-container-base.h
header file containing the struct definition is misleading. Rename it from
vfio-container-base.h to vfio-container.h accordingly, fixing up the name
of the include guard at the same time.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-5-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-25 17:55:19 +02:00
Mark Cave-Ayland and Cédric Le Goater
e2e269d580
include/hw/vfio/vfio-container-base.h: rename VFIOContainerBase to VFIOContainer
...
Now that the VFIOContainer struct name is available, rename VFIOContainerBase
to VFIOContainer to better indicate that it is the superclass of other
VFIOFooContainer structs.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-3-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-25 17:55:19 +02:00
Vladimir Sementsov-Ogievskiy and Daniel P. Berrangé
1ed8903916
treewide: handle result of qio_channel_set_blocking()
...
Currently, we just always pass NULL as errp argument. That doesn't
look good.
Some realizations of interface may actually report errors.
Channel-socket realization actually either ignore or crash on
errors, but we are going to straighten it out to always reporting
an errp in further commits.
So, convert all callers to either handle the error (where environment
allows) or explicitly use &error_abort.
Take also a chance to change the return value to more convenient
bool (keeping also in mind, that underlying realizations may
return -1 on failure, not -errno).
Suggested-by: Daniel P. Berrangé <berrange@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru >
[DB: fix return type mismatch in TLS/websocket channel
impls for qio_channel_set_blocking]
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com >
2025-09-19 12:46:07 +01:00
Mark Cave-Ayland and Cédric Le Goater
a49ef7a467
vfio-user/pci.c: use QOM casts where appropriate
...
Use QOM casts to convert between VFIOPCIDevice and PCIDevice instead of
accessing pdev directly.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20250715093110.107317-21-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-08 16:46:31 +02:00
Mark Cave-Ayland and Cédric Le Goater
5fc421b8cd
vfio-user/pci.c: rename VFIOUserPCIDevice device field to parent_obj
...
Now that nothing accesses the device field directly, rename device to
parent_obj as per our current coding guidelines.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20250715093110.107317-14-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-08 16:46:31 +02:00
Mark Cave-Ayland and Cédric Le Goater
5d1219e358
vfio-user/pci.c: use QOM casts where appropriate
...
Use QOM casts to convert between VFIOUserPCIDevice and VFIOPCIDevice instead
of accessing device directly.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20250715093110.107317-13-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-08 16:46:31 +02:00
Mark Cave-Ayland and Cédric Le Goater
b458e9e9e4
vfio-user/pci.c: update VFIOUserPCIDevice declaration
...
Update the VFIOUserPCIDevice declaration so that it is closer to our coding
guidelines: add a blank line after the parent object.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20250715093110.107317-12-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-08 16:46:31 +02:00
Mark Cave-Ayland and Cédric Le Goater
81b53891ca
vfio-user/container.h: rename VFIOUserContainer bcontainer field to parent_obj
...
Now that nothing accesses the bcontainer field directly, rename bcontainer to
parent_obj as per our current coding guidelines.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20250715093110.107317-11-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-08 16:46:31 +02:00
Mark Cave-Ayland and Cédric Le Goater
06229592fa
vfio/container.c: use QOM casts where appropriate
...
Use QOM casts to convert between VFIOUserContainer and VFIOContainerBase instead
of accessing bcontainer directly.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20250715093110.107317-10-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-08 16:46:31 +02:00
Mark Cave-Ayland and Cédric Le Goater
52a1cc3dc0
vfio-user/container.h: update VFIOUserContainer declaration
...
Update the VFIOUserContainer declaration so that it is closer to our coding
guidelines: remove the explicit typedef (this is already handled by the
OBJECT_DECLARE_TYPE() macro) and add a blank line after the parent object.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20250715093110.107317-9-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-08 16:46:31 +02:00
John Levon and Cédric Le Goater
1b50621881
hw/vfio-user: add x-pci-class-code
...
This new option was not added to vfio_user_pci_dev_properties, which
caused an incorrect class code for vfio-user devices.
Fixes: a59d06305f ("vfio/pci: Introduce x-pci-class-code option")
Signed-off-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250827190810.1645340-1-john.levon@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-09-08 16:46:31 +02:00