Peter Maydell
bae9fb4b01
target/arm: Handle AArch64 in TYPE_ARM_CPU gdb_arch_name
...
Instead of having the TYPE_AARCH64_CPU subclass set
CPUClass::gdb_arch_name to a different function, make the
TYPE_ARM_CPU implementation of the method handle AArch64.
For the moment we make the "is this AArch64?" function test "is the
CPU of TYPE_AARCH64_CPU?", so that this produces no behavioural
change. When we've moved all the gdbstub related methods across to
the base class, we will be able to change this to be "does the CPU
have the ARM_FEATURE_AARCH64 feature?".
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20250317142819.900029-4-peter.maydell@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2025-04-25 17:00:41 +02:00
Peter Maydell
a1f728ecc9
gdbstub: Allow gdb_core_xml_file to be set at runtime
...
Currently the CPUClass:gdb_core_xml_file setting is a simple 'const
char *' which the CPU class must set to a fixed string. Allow the
CPU class to instead set a new method gdb_get_core_xml_file() which
returns this string.
This will allow Arm CPUs to use different XML files for AArch32 vs
AArch64 without having to have an extra AArch64-specific class type
purely to give somewhere to set cc->gdb_core_xml_file differently.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
Acked-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20250317142819.900029-3-peter.maydell@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2025-04-25 17:00:41 +02:00
Peter Maydell
56a9f0d4c4
hw/core/cpu: gdb_arch_name string should not be freed
...
The documentation for the CPUClass::gdb_arch_name method claims that
the returned string should be freed with g_free(). This is not
correct: in commit a650683871 we changed this method to
instead return a simple constant string, but forgot to update
the documentation.
Make the documentation match the new semantics.
Fixes: a650683871 ("hw/core/cpu: Return static value with gdb_arch_name()")
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20250317142819.900029-2-peter.maydell@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2025-04-25 17:00:41 +02:00
Philippe Mathieu-Daudé
d5f241834b
hw/core: Get default_cpu_type calling machine_class_default_cpu_type()
...
Since commit 62b4a227a3 the default cpu type can come from the
valid_cpu_types[] array. Call the machine_class_default_cpu_type()
instead of accessing MachineClass::default_cpu_type field.
Cc: qemu-stable@nongnu.org
Fixes: 62b4a227a3 ("hw/core: Add machine_class_default_cpu_type()")
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Message-Id: <20250422084114.39499-1-philmd@linaro.org >
2025-04-25 17:00:41 +02:00
Kohei Tokunaga
7748cdbae8
qom/object: Fix type conflict of GLib function pointers
...
On Emscripten, function pointer casts can result in runtime failures due to
strict function signature checks. This affects the use of g_list_sort and
g_slist_sort, which internally perform function pointer casts that are not
supported by Emscripten. To avoid these issues, g_list_sort_with_data and
g_slist_sort_with_data should be used instead, as they do not rely on
function pointer casting.
Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <8ca13f4e2b9eba9d1f6030b0afb442a24330e463.1745295397.git.ktokunaga.mail@gmail.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2025-04-25 17:00:41 +02:00
Philippe Mathieu-Daudé
2cd09e47aa
qom: Make InterfaceInfo[] uses const
...
Mechanical change using:
$ sed -i -E 's/\(InterfaceInfo.?\[/\(const InterfaceInfo\[/g' \
$(git grep -lE '\(InterfaceInfo.?\[\]\)')
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20250424194905.82506-7-philmd@linaro.org >
2025-04-25 17:00:41 +02:00
Philippe Mathieu-Daudé
231bf6dda1
qom: Constify TypeInfo::interfaces
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20250424194905.82506-6-philmd@linaro.org >
2025-04-25 17:00:41 +02:00
Philippe Mathieu-Daudé
b282b859cf
qom: Constify TypeInfo::class_data
...
All callers now correctly expect a const class data.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20250424194905.82506-5-philmd@linaro.org >
2025-04-25 17:00:41 +02:00
Philippe Mathieu-Daudé
12d1a768bd
qom: Have class_init() take a const data argument
...
Mechanical change using gsed, then style manually adapted
to pass checkpatch.pl script.
Suggested-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20250424194905.82506-4-philmd@linaro.org >
2025-04-25 17:00:41 +02:00
Philippe Mathieu-Daudé
f1fa787b92
qom: Have class_base_init() take a const data argument
...
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20250424194905.82506-3-philmd@linaro.org >
2025-04-25 17:00:41 +02:00
Philippe Mathieu-Daudé
fbb23135d6
hw/misc/edu: Convert type_init() -> DEFINE_TYPES()
...
Prefer DEFINE_TYPES() macro over type_init() to register
QOM types.
Initialize the .interfaces struct field as compound literal
casted to InterfaceInfo type like the rest of our code base.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20250424194905.82506-2-philmd@linaro.org >
2025-04-25 17:00:41 +02:00
Philippe Mathieu-Daudé
6970f91ac7
hw/pci-host/designware: Use deposit/extract API
...
Prefer the safer (less bug-prone) deposit/extract API
to access lower/upper 32-bit of 64-bit registers.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org >
Message-Id: <20250331152041.74533-3-philmd@linaro.org >
2025-04-25 17:00:40 +02:00
Stefan Hajnoczi
4733cb0833
block/io: skip head/tail requests on EINVAL
...
When guests send misaligned discard requests, the block layer breaks
them up into a misaligned head, an aligned main body, and a misaligned
tail.
The file-posix block driver on Linux returns -EINVAL on misaligned
discard requests. This causes bdrv_co_pdiscard() to fail and guests
configured with werror=stop will pause.
Add a special case for misaligned head/tail requests. Simply continue
when EINVAL is encountered so that the aligned main body of the request
can be completed and the guest is not paused. This is the best we can do
when guest discard limits do not match the host discard limits.
Fixes: https://issues.redhat.com/browse/RHEL-86032
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
Reviewed-by: Hanna Czenczek <hreitz@redhat.com >
Message-ID: <20250417150528.76470-3-stefanha@redhat.com >
Reviewed-by: Kevin Wolf <kwolf@redhat.com >
Signed-off-by: Kevin Wolf <kwolf@redhat.com >
2025-04-25 16:42:06 +02:00
Stefan Hajnoczi
f605796aae
file-posix: probe discard alignment on Linux block devices
...
Populate the pdiscard_alignment block limit so the block layer is able
align discard requests correctly.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com >
Message-ID: <20250417150528.76470-2-stefanha@redhat.com >
Reviewed-by: Kevin Wolf <kwolf@redhat.com >
Signed-off-by: Kevin Wolf <kwolf@redhat.com >
2025-04-25 16:42:01 +02:00
Philippe Mathieu-Daudé
edbb66bb30
cpus: Remove #ifdef check on cpu_list definition
...
Since we removed all definitions of cpu_list, the #ifdef
check is always true. Remove it, inlining cpu_list().
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Message-Id: <20250324185837.46506-7-philmd@linaro.org >
2025-04-25 12:59:09 +02:00
Philippe Mathieu-Daudé
e828206a0f
target/s390x: Register CPUClass:list_cpus
...
Both s390_cpu_list() and s390_set_qemu_cpu_model() are
defined in cpu_models.c, move their declarations in the
related "cpu_models.h" header. Use full path to header
in s390-virtio-ccw.c file.
Register s390_cpu_list() as CPUClass:list_cpus callback
and remove the cpu_list definition.
Reviewed-by: Thomas Huth <thuth@redhat.com >
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Reviewed-by: Eric Farman <farman@linux.ibm.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20250324185837.46506-6-philmd@linaro.org >
2025-04-25 12:59:09 +02:00
Philippe Mathieu-Daudé
8b54467fb6
target/sparc: Register CPUClass:list_cpus
...
Register sparc_cpu_list() as CPUClass:list_cpus callback.
Reduce its scope and remove the cpu_list definition.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Message-Id: <20250324185837.46506-5-philmd@linaro.org >
2025-04-25 12:59:09 +02:00
Philippe Mathieu-Daudé
53c895fbb2
target/ppc: Register CPUClass:list_cpus
...
Register ppc_cpu_list() as CPUClass:list_cpus callback.
Reduce its scope and remove the cpu_list definition.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Message-Id: <20250324185837.46506-4-philmd@linaro.org >
2025-04-25 12:59:09 +02:00
Philippe Mathieu-Daudé
0bc15e47f0
target/i386: Register CPUClass:list_cpus
...
Register x86_cpu_list() as CPUClass:list_cpus callback.
Reduce its scope and remove the cpu_list definition.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Message-Id: <20250324185837.46506-3-philmd@linaro.org >
2025-04-25 12:59:09 +02:00
Philippe Mathieu-Daudé
0a5692fecc
cpus: Introduce CPUClass::list_cpus() callback
...
Some targets define cpu_list to a method listing their
CPUs on stdout. In order to make list_cpus() generic,
introduce the CPUClass::list_cpus() callback.
When no callback is registered, list_cpus() defaults
to the cpu_list definition.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Zhao Liu <zhao1.liu@intel.com >
Message-Id: <20250324185837.46506-2-philmd@linaro.org >
2025-04-25 12:59:09 +02:00
John Levon
a9d270f6b8
vfio: refactor out vfio_pci_config_setup()
...
Refactor the PCI config setup code out of vfio_realize() for
readability.
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Signed-off-by: John Levon <john.levon@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20250409134814.478903-3-john.levon@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:38 +02:00
John Levon
54594b5208
vfio: refactor out vfio_interrupt_setup()
...
Refactor the interrupt setup code out of vfio_realize() for readability.
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/20250409134814.478903-2-john.levon@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:38 +02:00
Zhenzhong Duan
f3028b7d2d
vfio: Register/unregister container for CPR only once for each container
...
vfio_cpr_register_container and vfio_cpr_unregister_container are container
scoped function. Calling them for each device attaching/detaching would
corrupt CPR reboot notifier list, i.e., when two VFIO devices are attached
to same container and have same notifier registered twice.
Fixes: d9fa4223b3 ("vfio: register container for cpr")
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250424063355.3855174-1-zhenzhong.duan@intel.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:38 +02:00
Zhenzhong Duan
fdd7596783
vfio: Remove hiod_typename property
...
Because we handle host IOMMU device creation in each container backend,
we know which type name to use, so hiod_typename property is useless
now, just remove it.
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250423072824.3647952-6-zhenzhong.duan@intel.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:38 +02:00
Zhenzhong Duan
0805f829a1
vfio: Cleanup host IOMMU device creation
...
realize() is now moved after attachment, do the same for hiod creation.
Introduce a new function vfio_device_hiod_create_and_realize() to do
them all in one go.
Suggested-by: Cédric Le Goater <clg@redhat.com >
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250423072824.3647952-5-zhenzhong.duan@intel.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:38 +02:00
Zhenzhong Duan
0327ffc853
vfio/container: Move realize() after attachment
...
To match the change for IOMMUFD backend, move realize() after attachment
for legacy backend too.
Suggested-by: Cédric Le Goater <clg@redhat.com >
Suggested-by: Donald Dutile <ddutile@redhat.com >
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250423072824.3647952-4-zhenzhong.duan@intel.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:38 +02:00
Zhenzhong Duan
c45d88b8a2
vfio/iommufd: Move realize() after attachment
...
Previously device attaching depends on realize() getting host IOMMU
capabilities to check dirty tracking support.
Now we have a separate call to ioctl(IOMMU_GET_HW_INFO) to get host
IOMMU capabilities and check that for dirty tracking support, there
is no dependency any more, move realize() call after attachment
succeed.
Suggested-by: Cédric Le Goater <clg@redhat.com >
Suggested-by: Donald Dutile <ddutile@redhat.com >
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Reviewed-by: Joao Martins <joao.m.martins@oracle.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250423072824.3647952-3-zhenzhong.duan@intel.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:38 +02:00
Zhenzhong Duan
436114cc43
vfio/iommufd: Make a separate call to get IOMMU capabilities
...
Currently we depend on .realize() calling iommufd_backend_get_device_info()
to get IOMMU capabilities and check for dirty page tracking support.
By make a extra separate call, this dependency is removed. This happens
only during device attach, it's not a hot path.
Suggested-by: Cédric Le Goater <clg@redhat.com >
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Reviewed-by: Joao Martins <joao.m.martins@oracle.com >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Link: https://lore.kernel.org/qemu-devel/20250423072824.3647952-2-zhenzhong.duan@intel.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
85ae745edd
MAINTAINERS: Add a maintainer for util/vfio-helpers.c
...
The NVMe Block device driver makes use of a reduced VFIO library
managing the host interface. These routines are VFIO related and do
not have a maintainer. Move util/vfio-helpers.c under VFIO jurisdiction.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20250422162954.210706-1-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
7d810bb166
vfio: Rename VFIOContainer related services
...
Rename these routines :
vfio_put_group -> vfio_group_put
vfio_get_group -> vfio_group_get
vfio_kvm_device_del_group -> vfio_group_del_kvm_device
vfio_kvm_device_add_group -> vfio_group_add_kvm_device
vfio_get_device -> vfio_device_get
vfio_put_base_device -> vfio_device_put
vfio_device_groupid -> vfio_device_get_groupid
vfio_connect_container -> vfio_container_connect
vfio_disconnect_container -> vfio_container_disconnect
to better reflect the namespace they belong to.
Reviewed-by: John Levon <john.levon@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20250318095415.670319-30-clg@redhat.com
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-38-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
e218ccf0c9
vfio: Rename VFIODevice related services
...
Rename these routines :
vfio_disable_irqindex -> vfio_device_irq_disable
vfio_unmask_single_irqindex -> vfio_device_irq_unmask
vfio_mask_single_irqindex -> vfio_device_irq_mask
vfio_set_irq_signaling -> vfio_device_irq_set_signaling
vfio_attach_device -> vfio_device_attach
vfio_detach_device -> vfio_device_detach
vfio_get_region_info -> vfio_device_get_region_info
vfio_get_dev_region_info -> vfio_device_get_region_info_type
vfio_has_region_cap -> vfio_device_has_region_cap
vfio_reset_handler -> vfio_device_reset_hander
to better reflect the namespace they belong to.
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-37-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
11b8b9d53d
vfio: Rename vfio-common.h to vfio-device.h
...
"hw/vfio/vfio-common.h" has been emptied of most of its declarations
by the previous changes and the only declarations left are related to
VFIODevice. Rename it to "hw/vfio/vfio-device.h" and make the
necessary adjustments.
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-36-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
a9183378f5
vfio: Introduce vfio_listener_un/register() routines
...
This hides the MemoryListener implementation and makes the code common
to both IOMMU backends, legacy and IOMMUFD.
Reviewed-by: Joao Martins <joao.m.martins@oracle.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-35-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
74d376378e
vfio: Rename RAM discard related services
...
Rename some routines to better reflect the namespace they belong to.
Reviewed-by: Avihai Horon <avihaih@nvidia.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-34-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
6b62a90c24
vfio: Introduce new files for VFIO MemoryListener
...
File "common.c" has been emptied of most of its definitions by the
previous changes and the only definitions left are related to the VFIO
MemoryListener handlers. Rename it to "listener.c" and introduce its
associated "vfio-listener.h" header file for the declarations.
Cleanup a little the includes while at it.
Reviewed-by: Joao Martins <joao.m.martins@oracle.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Avihai Horon <avihaih@nvidia.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-33-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
c51358bd17
vfio: Rename vfio_get_dirty_bitmap()
...
Rename to vfio_container_query_dirty_bitmap() to be consistent with
the VFIO container routine naming scheme.
Reviewed-by: Joao Martins <joao.m.martins@oracle.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Avihai Horon <avihaih@nvidia.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-32-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
60f29d0823
vfio: Rename vfio_devices_all_device_dirty_tracking()
...
Use the prefix 'vfio_container_devices_' to reflect the routine simply
loops over the container's device list.
Reviewed-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Avihai Horon <avihaih@nvidia.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-31-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
e17c281e7c
vfio: Rename vfio_devices_all_dirty_tracking_started()
...
Also rename vfio_devices_all_device_dirty_tracking_started() while at
it and use the prefix 'vfio_container_devices_' for routines simply
looping over the container's device list.
Reviewed-by: Joao Martins <joao.m.martins@oracle.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Avihai Horon <avihaih@nvidia.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-30-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
35e6d2c1d0
vfio: Make vfio_container_query_dirty_bitmap() static
...
vfio_container_query_dirty_bitmap() is only used in "container-base.c".
Also, rename to vfio_container_iommu_query_dirty_bitmap() to reflect it
is using the VFIO IOMMU backend device ->query_dirty_bitmap() handler.
Reviewed-by: Joao Martins <joao.m.martins@oracle.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Avihai Horon <avihaih@nvidia.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-29-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
d90aa1b862
vfio: Make vfio_devices_query_dirty_bitmap() static
...
vfio_devices_query_dirty_bitmap() is only used in "container-base.c".
Also, rename to vfio_container_devices_query_dirty_bitmap() to reflect
with the prefix 'vfio_container_devices_' that it simply loops over
the container's device list.
Reviewed-by: Joao Martins <joao.m.martins@oracle.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Reviewed-by: Avihai Horon <avihaih@nvidia.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-28-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
6b7c812972
vfio: Move dirty tracking related services into container-base.c
...
Routines of common.c :
vfio_devices_all_dirty_tracking_started
vfio_devices_all_device_dirty_tracking
vfio_devices_query_dirty_bitmap
vfio_get_dirty_bitmap
are all related to dirty page tracking directly at the container level
or at the container device level. Naming is a bit confusing. We will
propose new names in the following changes.
Reviewed-by: Joao Martins <joao.m.martins@oracle.com >
Reviewed-by: Avihai Horon <avihaih@nvidia.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-27-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
819a5865c0
vfio: Move vfio_reset_handler() into device.c
...
Pass-through devices of a VM are not necessarily in the same group and
all groups/address_spaces need to be scanned when the machine is
reset. Commit f16f39c3fc ("Implement PCI hot reset") introduced a VM
reset handler for this purpose. Move it under device.c
Also reintroduce the comment which explained the context and was lost
along the way.
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-26-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
923b11411e
vfio: Move vfio_de/attach_device() into device.c
...
These routines are VFIODevice related. Move their definitions into
"device.c".
Reviewed-by: John Levon <john.levon@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20250318095415.670319-24-clg@redhat.com
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-25-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
a997b506e7
vfio: Move vfio_device_list into device.c
...
'vfio_device_list' is VFIODevice related. Move its definitions into
"device.c".
Reviewed-by: John Levon <john.levon@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20250318095415.670319-23-clg@redhat.com
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-24-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
c3fbdba15a
vfio: Move vfio_kvm_device_fd() into helpers.c
...
The vfio_kvm_device_add/del_fd() routines opening the VFIO pseudo
device are defined in "helpers.c". Move 'vfio_kvm_device_fd'
definition there and its declaration into "vfio-helpers.h" to reduce
exposure of VFIO internals in "hw/vfio/vfio-common.h".
Reviewed-by: John Levon <john.levon@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20250318095415.670319-22-clg@redhat.com
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-23-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
8140d45b10
vfio: Introduce new files for CPR definitions and declarations
...
Gather all CPR related declarations into "vfio-cpr.h" to reduce exposure
of VFIO internals in "hw/vfio/vfio-common.h". These were introduced in
commit d9fa4223b3 ("vfio: register container for cpr").
Order file list in meson.build while at it.
Cc: Steve Sistare <steven.sistare@oracle.com >
Reviewed-by: Steve Sistare <steven.sistare@oracle.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-22-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
68c07d7635
vfio: Introduce a new file for VFIODevice definitions
...
Move all VFIODevice related routines of "helpers.c" into a new "device.c"
file.
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-21-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
005b8d1045
vfio: Move vfio_get_device_info() to helpers.c
...
vfio_get_device_info() is a low level routine. Move it with the other
helpers.
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20250318095415.670319-19-clg@redhat.com
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-20-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
545256134f
vfio: Move vfio_kvm_device_add/del_fd() to helpers.c
...
vfio_kvm_device_add/del_fd() are low level routines. Move them with
the other helpers.
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Reviewed-by: John Levon <john.levon@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20250318095415.670319-18-clg@redhat.com
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-19-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00
Cédric Le Goater
f6d7f5d02b
vfio: Move vfio_get_info_dma_avail() into helpers.c
...
vfio_get_info_dma_avail() is a low level routine similar to the other
routines extracting capabilities from 'struct vfio_iommu_type1_info'.
It belongs to file "helpers.c".
Reviewed-by: John Levon <john.levon@nutanix.com >
Link: https://lore.kernel.org/qemu-devel/20250318095415.670319-17-clg@redhat.com
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com >
Link: https://lore.kernel.org/qemu-devel/20250326075122.1299361-18-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2025-04-25 09:01:37 +02:00