File "common.c" has been emptied of most of its definitions by the
previous changes and the only definitions left are related to dirty
tracking. Rename it to "dirty-tracking.c" and introduce its associated
"dirty-tracking.h" header file for the declarations.
Cleanup a little the includes while at it.
Signed-off-by: Cédric Le Goater <clg@redhat.com>
---
hw/vfio/dirty-tracking.h | 22 ++++++++++++++++++++++
include/hw/vfio/vfio-common.h | 10 ----------
hw/vfio/container.c | 1 +
hw/vfio/{common.c => dirty-tracking.c} | 5 +----
hw/vfio/iommufd.c | 1 +
hw/vfio/meson.build | 2 +-
hw/vfio/trace-events | 2 +-
7 files changed, 27 insertions(+), 16 deletions(-)
create mode 100644 hw/vfio/dirty-tracking.h
rename hw/vfio/{common.c => dirty-tracking.c} (99%)
diff --git a/hw/vfio/dirty-tracking.h b/hw/vfio/dirty-tracking.h
new file mode 100644
index 0000000000000000000000000000000000000000..4b83dc54ab50dabfff040d7cc3db27b80bfe2d3a
--- /dev/null
+++ b/hw/vfio/dirty-tracking.h
@@ -0,0 +1,22 @@
+/*
+ * VFIO dirty page tracking routines
+ *
+ * Copyright Red Hat, Inc. 2025
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef HW_VFIO_DIRTY_TRACKING_H
+#define HW_VFIO_DIRTY_TRACKING_H
+
+extern const MemoryListener vfio_memory_listener;
+
+bool vfio_devices_all_dirty_tracking_started(const VFIOContainerBase *bcontainer);
+bool vfio_devices_all_device_dirty_tracking(const VFIOContainerBase *bcontainer);
+int vfio_devices_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
+ VFIOBitmap *vbmap, hwaddr iova, hwaddr size,
+ Error **errp);
+int vfio_get_dirty_bitmap(const VFIOContainerBase *bcontainer, uint64_t iova,
+ uint64_t size, ram_addr_t ram_addr, Error **errp);
+
+#endif /* HW_VFIO_DIRTY_TRACKING_H */
diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
index 184a422916f62259158e8759efc473a5efb2b2f7..cc20110d9de8ac173b67e6e878d4d61818497426 100644
--- a/include/hw/vfio/vfio-common.h
+++ b/include/hw/vfio/vfio-common.h
@@ -130,7 +130,6 @@ VFIODevice *vfio_get_vfio_device(Object *obj);
typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList;
extern VFIODeviceList vfio_device_list;
-extern const MemoryListener vfio_memory_listener;
#ifdef CONFIG_LINUX
int vfio_get_region_info(VFIODevice *vbasedev, int index,
@@ -140,15 +139,6 @@ int vfio_get_dev_region_info(VFIODevice *vbasedev, uint32_t type,
bool vfio_has_region_cap(VFIODevice *vbasedev, int region, uint16_t cap_type);
#endif
-bool vfio_devices_all_dirty_tracking_started(
- const VFIOContainerBase *bcontainer);
-bool
-vfio_devices_all_device_dirty_tracking(const VFIOContainerBase *bcontainer);
-int vfio_devices_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
- VFIOBitmap *vbmap, hwaddr iova, hwaddr size, Error **errp);
-int vfio_get_dirty_bitmap(const VFIOContainerBase *bcontainer, uint64_t iova,
- uint64_t size, ram_addr_t ram_addr, Error **errp);
-
/* Returns 0 on success, or a negative errno. */
bool vfio_device_get_name(VFIODevice *vbasedev, Error **errp);
void vfio_device_set_fd(VFIODevice *vbasedev, const char *str, Error **errp);
diff --git a/hw/vfio/container.c b/hw/vfio/container.c
index 4e41a7476549a0c5e464e499d059db5aca6e3470..e88dfe12edd6dee469c06ee2e46ab9c8b5019ae7 100644
--- a/hw/vfio/container.c
+++ b/hw/vfio/container.c
@@ -35,6 +35,7 @@
#include "hw/vfio/vfio-container.h"
#include "helpers.h"
#include "cpr.h"
+#include "dirty-tracking.h"
#define TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO TYPE_HOST_IOMMU_DEVICE "-legacy-vfio"
diff --git a/hw/vfio/common.c b/hw/vfio/dirty-tracking.c
similarity index 99%
rename from hw/vfio/common.c
rename to hw/vfio/dirty-tracking.c
index ed2f2ed8839caaf40fabb0cbbcaa1df2c5b70d67..441f9d9a08c06a88dda44ef143dcee5f0a89a900 100644
--- a/hw/vfio/common.c
+++ b/hw/vfio/dirty-tracking.c
@@ -20,14 +20,10 @@
#include "qemu/osdep.h"
#include <sys/ioctl.h>
-#ifdef CONFIG_KVM
-#include <linux/kvm.h>
-#endif
#include <linux/vfio.h>
#include "hw/vfio/vfio-common.h"
#include "hw/vfio/pci.h"
-#include "exec/address-spaces.h"
#include "exec/memory.h"
#include "exec/ram_addr.h"
#include "exec/target_page.h"
@@ -45,6 +41,7 @@
#include "system/tpm.h"
#include "migration.h"
#include "helpers.h"
+#include "dirty-tracking.h"
/*
* Device state interfaces
diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
index b25f3b4086d7b7fc6fcd519a9b8b2904513a655f..9335a17920b32dc2bf9cb4eeb2b8f57382f14ac8 100644
--- a/hw/vfio/iommufd.c
+++ b/hw/vfio/iommufd.c
@@ -29,6 +29,7 @@
#include "iommufd.h"
#include "helpers.h"
#include "cpr.h"
+#include "dirty-tracking.h"
#define TYPE_HOST_IOMMU_DEVICE_IOMMUFD_VFIO \
TYPE_HOST_IOMMU_DEVICE_IOMMUFD "-vfio"
diff --git a/hw/vfio/meson.build b/hw/vfio/meson.build
index 1f89bd28c13dea55bcfff476ce99d51b453d8533..b6f5a7eeeda035b5872c2a19f8086384e000f420 100644
--- a/hw/vfio/meson.build
+++ b/hw/vfio/meson.build
@@ -1,6 +1,6 @@
vfio_ss = ss.source_set()
vfio_ss.add(files(
- 'common.c',
+ 'dirty-tracking.c',
'container.c',
'helpers.c',
))
diff --git a/hw/vfio/trace-events b/hw/vfio/trace-events
index a1d01e9dde6ec52964d4804e9cbce5a6a32b7879..f3bdcebe938dcca77b913ef81a74644c622b5d8a 100644
--- a/hw/vfio/trace-events
+++ b/hw/vfio/trace-events
@@ -89,7 +89,7 @@ vfio_pci_igd_bdsm_enabled(const char *name, int size) "%s %dMB"
vfio_pci_igd_host_bridge_enabled(const char *name) "%s"
vfio_pci_igd_lpc_bridge_enabled(const char *name) "%s"
-# common.c
+# dirty-tracking.c
vfio_iommu_map_notify(const char *op, uint64_t iova_start, uint64_t iova_end) "iommu %s @ 0x%"PRIx64" - 0x%"PRIx64
vfio_listener_region_skip(const char *name, uint64_t start, uint64_t end) "SKIPPING %s 0x%"PRIx64" - 0x%"PRIx64
vfio_spapr_group_attach(int groupfd, int tablefd) "Attached groupfd %d to liobn fd %d"
--
2.48.1
>-----Original Message-----
>From: Cédric Le Goater <clg@redhat.com>
>Subject: [PATCH for-10.1 24/32] vfio: Introduce new files for dirty tracking
>definitions and declarations
>
>File "common.c" has been emptied of most of its definitions by the
>previous changes and the only definitions left are related to dirty
>tracking. Rename it to "dirty-tracking.c" and introduce its associated
>"dirty-tracking.h" header file for the declarations.
>
>Cleanup a little the includes while at it.
>
>Signed-off-by: Cédric Le Goater <clg@redhat.com>
>---
> hw/vfio/dirty-tracking.h | 22 ++++++++++++++++++++++
> include/hw/vfio/vfio-common.h | 10 ----------
> hw/vfio/container.c | 1 +
> hw/vfio/{common.c => dirty-tracking.c} | 5 +----
> hw/vfio/iommufd.c | 1 +
> hw/vfio/meson.build | 2 +-
> hw/vfio/trace-events | 2 +-
> 7 files changed, 27 insertions(+), 16 deletions(-)
> create mode 100644 hw/vfio/dirty-tracking.h
> rename hw/vfio/{common.c => dirty-tracking.c} (99%)
>
>diff --git a/hw/vfio/dirty-tracking.h b/hw/vfio/dirty-tracking.h
>new file mode 100644
>index
>0000000000000000000000000000000000000000..4b83dc54ab50dabfff040d7cc3
>db27b80bfe2d3a
>--- /dev/null
>+++ b/hw/vfio/dirty-tracking.h
>@@ -0,0 +1,22 @@
>+/*
>+ * VFIO dirty page tracking routines
>+ *
>+ * Copyright Red Hat, Inc. 2025
>+ *
>+ * SPDX-License-Identifier: GPL-2.0-or-later
>+ */
>+
>+#ifndef HW_VFIO_DIRTY_TRACKING_H
>+#define HW_VFIO_DIRTY_TRACKING_H
>+
>+extern const MemoryListener vfio_memory_listener;
>+
>+bool vfio_devices_all_dirty_tracking_started(const VFIOContainerBase
>*bcontainer);
>+bool vfio_devices_all_device_dirty_tracking(const VFIOContainerBase
>*bcontainer);
>+int vfio_devices_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
>+ VFIOBitmap *vbmap, hwaddr iova, hwaddr size,
>+ Error **errp);
>+int vfio_get_dirty_bitmap(const VFIOContainerBase *bcontainer, uint64_t iova,
>+ uint64_t size, ram_addr_t ram_addr, Error **errp);
>+
>+#endif /* HW_VFIO_DIRTY_TRACKING_H */
>diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
>index
>184a422916f62259158e8759efc473a5efb2b2f7..cc20110d9de8ac173b67e6e878
>d4d61818497426 100644
>--- a/include/hw/vfio/vfio-common.h
>+++ b/include/hw/vfio/vfio-common.h
>@@ -130,7 +130,6 @@ VFIODevice *vfio_get_vfio_device(Object *obj);
>
> typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList;
> extern VFIODeviceList vfio_device_list;
>-extern const MemoryListener vfio_memory_listener;
>
> #ifdef CONFIG_LINUX
> int vfio_get_region_info(VFIODevice *vbasedev, int index,
>@@ -140,15 +139,6 @@ int vfio_get_dev_region_info(VFIODevice *vbasedev,
>uint32_t type,
> bool vfio_has_region_cap(VFIODevice *vbasedev, int region, uint16_t cap_type);
> #endif
>
>-bool vfio_devices_all_dirty_tracking_started(
>- const VFIOContainerBase *bcontainer);
>-bool
>-vfio_devices_all_device_dirty_tracking(const VFIOContainerBase *bcontainer);
>-int vfio_devices_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
>- VFIOBitmap *vbmap, hwaddr iova, hwaddr size, Error **errp);
>-int vfio_get_dirty_bitmap(const VFIOContainerBase *bcontainer, uint64_t iova,
>- uint64_t size, ram_addr_t ram_addr, Error **errp);
>-
> /* Returns 0 on success, or a negative errno. */
> bool vfio_device_get_name(VFIODevice *vbasedev, Error **errp);
> void vfio_device_set_fd(VFIODevice *vbasedev, const char *str, Error **errp);
>diff --git a/hw/vfio/container.c b/hw/vfio/container.c
>index
>4e41a7476549a0c5e464e499d059db5aca6e3470..e88dfe12edd6dee469c06ee2e
>46ab9c8b5019ae7 100644
>--- a/hw/vfio/container.c
>+++ b/hw/vfio/container.c
>@@ -35,6 +35,7 @@
> #include "hw/vfio/vfio-container.h"
> #include "helpers.h"
> #include "cpr.h"
>+#include "dirty-tracking.h"
>
> #define TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO
>TYPE_HOST_IOMMU_DEVICE "-legacy-vfio"
>
>diff --git a/hw/vfio/common.c b/hw/vfio/dirty-tracking.c
>similarity index 99%
>rename from hw/vfio/common.c
>rename to hw/vfio/dirty-tracking.c
>index
>ed2f2ed8839caaf40fabb0cbbcaa1df2c5b70d67..441f9d9a08c06a88dda44ef143d
>cee5f0a89a900 100644
>--- a/hw/vfio/common.c
>+++ b/hw/vfio/dirty-tracking.c
>@@ -20,14 +20,10 @@
>
> #include "qemu/osdep.h"
> #include <sys/ioctl.h>
>-#ifdef CONFIG_KVM
>-#include <linux/kvm.h>
>-#endif
It looks this change unrelated to this patch?
> #include <linux/vfio.h>
>
> #include "hw/vfio/vfio-common.h"
> #include "hw/vfio/pci.h"
>-#include "exec/address-spaces.h"
Same here.
Thanks
Zhenzhong
> #include "exec/memory.h"
> #include "exec/ram_addr.h"
> #include "exec/target_page.h"
>@@ -45,6 +41,7 @@
> #include "system/tpm.h"
> #include "migration.h"
> #include "helpers.h"
>+#include "dirty-tracking.h"
>
> /*
> * Device state interfaces
>diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
>index
>b25f3b4086d7b7fc6fcd519a9b8b2904513a655f..9335a17920b32dc2bf9cb4eeb2b
>8f57382f14ac8 100644
>--- a/hw/vfio/iommufd.c
>+++ b/hw/vfio/iommufd.c
>@@ -29,6 +29,7 @@
> #include "iommufd.h"
> #include "helpers.h"
> #include "cpr.h"
>+#include "dirty-tracking.h"
>
> #define TYPE_HOST_IOMMU_DEVICE_IOMMUFD_VFIO \
> TYPE_HOST_IOMMU_DEVICE_IOMMUFD "-vfio"
>diff --git a/hw/vfio/meson.build b/hw/vfio/meson.build
>index
>1f89bd28c13dea55bcfff476ce99d51b453d8533..b6f5a7eeeda035b5872c2a19f80
>86384e000f420 100644
>--- a/hw/vfio/meson.build
>+++ b/hw/vfio/meson.build
>@@ -1,6 +1,6 @@
> vfio_ss = ss.source_set()
> vfio_ss.add(files(
>- 'common.c',
>+ 'dirty-tracking.c',
> 'container.c',
> 'helpers.c',
> ))
>diff --git a/hw/vfio/trace-events b/hw/vfio/trace-events
>index
>a1d01e9dde6ec52964d4804e9cbce5a6a32b7879..f3bdcebe938dcca77b913ef81a
>74644c622b5d8a 100644
>--- a/hw/vfio/trace-events
>+++ b/hw/vfio/trace-events
>@@ -89,7 +89,7 @@ vfio_pci_igd_bdsm_enabled(const char *name, int size)
>"%s %dMB"
> vfio_pci_igd_host_bridge_enabled(const char *name) "%s"
> vfio_pci_igd_lpc_bridge_enabled(const char *name) "%s"
>
>-# common.c
>+# dirty-tracking.c
> vfio_iommu_map_notify(const char *op, uint64_t iova_start, uint64_t iova_end)
>"iommu %s @ 0x%"PRIx64" - 0x%"PRIx64
> vfio_listener_region_skip(const char *name, uint64_t start, uint64_t end)
>"SKIPPING %s 0x%"PRIx64" - 0x%"PRIx64
> vfio_spapr_group_attach(int groupfd, int tablefd) "Attached groupfd %d to liobn
>fd %d"
>--
>2.48.1
On 3/20/25 10:52, Duan, Zhenzhong wrote:
>
>
>> -----Original Message-----
>> From: Cédric Le Goater <clg@redhat.com>
>> Subject: [PATCH for-10.1 24/32] vfio: Introduce new files for dirty tracking
>> definitions and declarations
>>
>> File "common.c" has been emptied of most of its definitions by the
>> previous changes and the only definitions left are related to dirty
>> tracking. Rename it to "dirty-tracking.c" and introduce its associated
>> "dirty-tracking.h" header file for the declarations.
>>
>> Cleanup a little the includes while at it.
>>
>> Signed-off-by: Cédric Le Goater <clg@redhat.com>
>> ---
>> hw/vfio/dirty-tracking.h | 22 ++++++++++++++++++++++
>> include/hw/vfio/vfio-common.h | 10 ----------
>> hw/vfio/container.c | 1 +
>> hw/vfio/{common.c => dirty-tracking.c} | 5 +----
>> hw/vfio/iommufd.c | 1 +
>> hw/vfio/meson.build | 2 +-
>> hw/vfio/trace-events | 2 +-
>> 7 files changed, 27 insertions(+), 16 deletions(-)
>> create mode 100644 hw/vfio/dirty-tracking.h
>> rename hw/vfio/{common.c => dirty-tracking.c} (99%)
>>
>> diff --git a/hw/vfio/dirty-tracking.h b/hw/vfio/dirty-tracking.h
>> new file mode 100644
>> index
>> 0000000000000000000000000000000000000000..4b83dc54ab50dabfff040d7cc3
>> db27b80bfe2d3a
>> --- /dev/null
>> +++ b/hw/vfio/dirty-tracking.h
>> @@ -0,0 +1,22 @@
>> +/*
>> + * VFIO dirty page tracking routines
>> + *
>> + * Copyright Red Hat, Inc. 2025
>> + *
>> + * SPDX-License-Identifier: GPL-2.0-or-later
>> + */
>> +
>> +#ifndef HW_VFIO_DIRTY_TRACKING_H
>> +#define HW_VFIO_DIRTY_TRACKING_H
>> +
>> +extern const MemoryListener vfio_memory_listener;
>> +
>> +bool vfio_devices_all_dirty_tracking_started(const VFIOContainerBase
>> *bcontainer);
>> +bool vfio_devices_all_device_dirty_tracking(const VFIOContainerBase
>> *bcontainer);
>> +int vfio_devices_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
>> + VFIOBitmap *vbmap, hwaddr iova, hwaddr size,
>> + Error **errp);
>> +int vfio_get_dirty_bitmap(const VFIOContainerBase *bcontainer, uint64_t iova,
>> + uint64_t size, ram_addr_t ram_addr, Error **errp);
>> +
>> +#endif /* HW_VFIO_DIRTY_TRACKING_H */
>> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
>> index
>> 184a422916f62259158e8759efc473a5efb2b2f7..cc20110d9de8ac173b67e6e878
>> d4d61818497426 100644
>> --- a/include/hw/vfio/vfio-common.h
>> +++ b/include/hw/vfio/vfio-common.h
>> @@ -130,7 +130,6 @@ VFIODevice *vfio_get_vfio_device(Object *obj);
>>
>> typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList;
>> extern VFIODeviceList vfio_device_list;
>> -extern const MemoryListener vfio_memory_listener;
>>
>> #ifdef CONFIG_LINUX
>> int vfio_get_region_info(VFIODevice *vbasedev, int index,
>> @@ -140,15 +139,6 @@ int vfio_get_dev_region_info(VFIODevice *vbasedev,
>> uint32_t type,
>> bool vfio_has_region_cap(VFIODevice *vbasedev, int region, uint16_t cap_type);
>> #endif
>>
>> -bool vfio_devices_all_dirty_tracking_started(
>> - const VFIOContainerBase *bcontainer);
>> -bool
>> -vfio_devices_all_device_dirty_tracking(const VFIOContainerBase *bcontainer);
>> -int vfio_devices_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
>> - VFIOBitmap *vbmap, hwaddr iova, hwaddr size, Error **errp);
>> -int vfio_get_dirty_bitmap(const VFIOContainerBase *bcontainer, uint64_t iova,
>> - uint64_t size, ram_addr_t ram_addr, Error **errp);
>> -
>> /* Returns 0 on success, or a negative errno. */
>> bool vfio_device_get_name(VFIODevice *vbasedev, Error **errp);
>> void vfio_device_set_fd(VFIODevice *vbasedev, const char *str, Error **errp);
>> diff --git a/hw/vfio/container.c b/hw/vfio/container.c
>> index
>> 4e41a7476549a0c5e464e499d059db5aca6e3470..e88dfe12edd6dee469c06ee2e
>> 46ab9c8b5019ae7 100644
>> --- a/hw/vfio/container.c
>> +++ b/hw/vfio/container.c
>> @@ -35,6 +35,7 @@
>> #include "hw/vfio/vfio-container.h"
>> #include "helpers.h"
>> #include "cpr.h"
>> +#include "dirty-tracking.h"
>>
>> #define TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO
>> TYPE_HOST_IOMMU_DEVICE "-legacy-vfio"
>>
>> diff --git a/hw/vfio/common.c b/hw/vfio/dirty-tracking.c
>> similarity index 99%
>> rename from hw/vfio/common.c
>> rename to hw/vfio/dirty-tracking.c
>> index
>> ed2f2ed8839caaf40fabb0cbbcaa1df2c5b70d67..441f9d9a08c06a88dda44ef143d
>> cee5f0a89a900 100644
>> --- a/hw/vfio/common.c
>> +++ b/hw/vfio/dirty-tracking.c
>> @@ -20,14 +20,10 @@
>>
>> #include "qemu/osdep.h"
>> #include <sys/ioctl.h>
>> -#ifdef CONFIG_KVM
>> -#include <linux/kvm.h>
>> -#endif
>
> It looks this change unrelated to this patch?
>
>> #include <linux/vfio.h>
>>
>> #include "hw/vfio/vfio-common.h"
>> #include "hw/vfio/pci.h"
>> -#include "exec/address-spaces.h"
>
> Same here.
yes and no. Commit log says :
Cleanup a little the includes while at it.
but if you prefer we can address the include proliferation in a patch
of its own ?
Thanks,
C.
>-----Original Message-----
>From: Cédric Le Goater <clg@redhat.com>
>Subject: Re: [PATCH for-10.1 24/32] vfio: Introduce new files for dirty tracking
>definitions and declarations
>
>On 3/20/25 10:52, Duan, Zhenzhong wrote:
>>
>>
>>> -----Original Message-----
>>> From: Cédric Le Goater <clg@redhat.com>
>>> Subject: [PATCH for-10.1 24/32] vfio: Introduce new files for dirty tracking
>>> definitions and declarations
>>>
>>> File "common.c" has been emptied of most of its definitions by the
>>> previous changes and the only definitions left are related to dirty
>>> tracking. Rename it to "dirty-tracking.c" and introduce its associated
>>> "dirty-tracking.h" header file for the declarations.
>>>
>>> Cleanup a little the includes while at it.
>>>
>>> Signed-off-by: Cédric Le Goater <clg@redhat.com>
>>> ---
>>> hw/vfio/dirty-tracking.h | 22 ++++++++++++++++++++++
>>> include/hw/vfio/vfio-common.h | 10 ----------
>>> hw/vfio/container.c | 1 +
>>> hw/vfio/{common.c => dirty-tracking.c} | 5 +----
>>> hw/vfio/iommufd.c | 1 +
>>> hw/vfio/meson.build | 2 +-
>>> hw/vfio/trace-events | 2 +-
>>> 7 files changed, 27 insertions(+), 16 deletions(-)
>>> create mode 100644 hw/vfio/dirty-tracking.h
>>> rename hw/vfio/{common.c => dirty-tracking.c} (99%)
>>>
>>> diff --git a/hw/vfio/dirty-tracking.h b/hw/vfio/dirty-tracking.h
>>> new file mode 100644
>>> index
>>>
>0000000000000000000000000000000000000000..4b83dc54ab50dabfff040d7cc3
>>> db27b80bfe2d3a
>>> --- /dev/null
>>> +++ b/hw/vfio/dirty-tracking.h
>>> @@ -0,0 +1,22 @@
>>> +/*
>>> + * VFIO dirty page tracking routines
>>> + *
>>> + * Copyright Red Hat, Inc. 2025
>>> + *
>>> + * SPDX-License-Identifier: GPL-2.0-or-later
>>> + */
>>> +
>>> +#ifndef HW_VFIO_DIRTY_TRACKING_H
>>> +#define HW_VFIO_DIRTY_TRACKING_H
>>> +
>>> +extern const MemoryListener vfio_memory_listener;
>>> +
>>> +bool vfio_devices_all_dirty_tracking_started(const VFIOContainerBase
>>> *bcontainer);
>>> +bool vfio_devices_all_device_dirty_tracking(const VFIOContainerBase
>>> *bcontainer);
>>> +int vfio_devices_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
>>> + VFIOBitmap *vbmap, hwaddr iova, hwaddr size,
>>> + Error **errp);
>>> +int vfio_get_dirty_bitmap(const VFIOContainerBase *bcontainer, uint64_t
>iova,
>>> + uint64_t size, ram_addr_t ram_addr, Error **errp);
>>> +
>>> +#endif /* HW_VFIO_DIRTY_TRACKING_H */
>>> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
>>> index
>>>
>184a422916f62259158e8759efc473a5efb2b2f7..cc20110d9de8ac173b67e6e878
>>> d4d61818497426 100644
>>> --- a/include/hw/vfio/vfio-common.h
>>> +++ b/include/hw/vfio/vfio-common.h
>>> @@ -130,7 +130,6 @@ VFIODevice *vfio_get_vfio_device(Object *obj);
>>>
>>> typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList;
>>> extern VFIODeviceList vfio_device_list;
>>> -extern const MemoryListener vfio_memory_listener;
>>>
>>> #ifdef CONFIG_LINUX
>>> int vfio_get_region_info(VFIODevice *vbasedev, int index,
>>> @@ -140,15 +139,6 @@ int vfio_get_dev_region_info(VFIODevice *vbasedev,
>>> uint32_t type,
>>> bool vfio_has_region_cap(VFIODevice *vbasedev, int region, uint16_t
>cap_type);
>>> #endif
>>>
>>> -bool vfio_devices_all_dirty_tracking_started(
>>> - const VFIOContainerBase *bcontainer);
>>> -bool
>>> -vfio_devices_all_device_dirty_tracking(const VFIOContainerBase
>*bcontainer);
>>> -int vfio_devices_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
>>> - VFIOBitmap *vbmap, hwaddr iova, hwaddr size, Error **errp);
>>> -int vfio_get_dirty_bitmap(const VFIOContainerBase *bcontainer, uint64_t
>iova,
>>> - uint64_t size, ram_addr_t ram_addr, Error **errp);
>>> -
>>> /* Returns 0 on success, or a negative errno. */
>>> bool vfio_device_get_name(VFIODevice *vbasedev, Error **errp);
>>> void vfio_device_set_fd(VFIODevice *vbasedev, const char *str, Error **errp);
>>> diff --git a/hw/vfio/container.c b/hw/vfio/container.c
>>> index
>>>
>4e41a7476549a0c5e464e499d059db5aca6e3470..e88dfe12edd6dee469c06ee2e
>>> 46ab9c8b5019ae7 100644
>>> --- a/hw/vfio/container.c
>>> +++ b/hw/vfio/container.c
>>> @@ -35,6 +35,7 @@
>>> #include "hw/vfio/vfio-container.h"
>>> #include "helpers.h"
>>> #include "cpr.h"
>>> +#include "dirty-tracking.h"
>>>
>>> #define TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO
>>> TYPE_HOST_IOMMU_DEVICE "-legacy-vfio"
>>>
>>> diff --git a/hw/vfio/common.c b/hw/vfio/dirty-tracking.c
>>> similarity index 99%
>>> rename from hw/vfio/common.c
>>> rename to hw/vfio/dirty-tracking.c
>>> index
>>>
>ed2f2ed8839caaf40fabb0cbbcaa1df2c5b70d67..441f9d9a08c06a88dda44ef143d
>>> cee5f0a89a900 100644
>>> --- a/hw/vfio/common.c
>>> +++ b/hw/vfio/dirty-tracking.c
>>> @@ -20,14 +20,10 @@
>>>
>>> #include "qemu/osdep.h"
>>> #include <sys/ioctl.h>
>>> -#ifdef CONFIG_KVM
>>> -#include <linux/kvm.h>
>>> -#endif
>>
>> It looks this change unrelated to this patch?
>>
>>> #include <linux/vfio.h>
>>>
>>> #include "hw/vfio/vfio-common.h"
>>> #include "hw/vfio/pci.h"
>>> -#include "exec/address-spaces.h"
>>
>> Same here.
>
>yes and no. Commit log says :
>
> Cleanup a little the includes while at it.
>
>but if you prefer we can address the include proliferation in a patch
>of its own ?
No need, this is fine already.
Previously I thought better to move into '[PATCH for-10.1 13/32] vfio: Move VFIOAddressSpace helpers into container-base.c',
but I'm wrong, it's just purely useless code.
Thanks
Zhenzhong
On 20/03/2025 09:52, Duan, Zhenzhong wrote: >> -----Original Message----- >> From: Cédric Le Goater <clg@redhat.com> >> Subject: [PATCH for-10.1 24/32] vfio: Introduce new files for dirty tracking >> definitions and declarations >> >> File "common.c" has been emptied of most of its definitions by the >> previous changes and the only definitions left are related to dirty >> tracking. Rename it to "dirty-tracking.c" and introduce its associated >> "dirty-tracking.h" header file for the declarations. >> >> Cleanup a little the includes while at it. >> >> Signed-off-by: Cédric Le Goater <clg@redhat.com> >> --- a/hw/vfio/common.c >> +++ b/hw/vfio/dirty-tracking.c >> @@ -20,14 +20,10 @@ >> >> #include "qemu/osdep.h" >> #include <sys/ioctl.h> >> -#ifdef CONFIG_KVM >> -#include <linux/kvm.h> >> -#endif > > It looks this change unrelated to this patch? > >> #include <linux/vfio.h> >> >> #include "hw/vfio/vfio-common.h" >> #include "hw/vfio/pci.h" >> -#include "exec/address-spaces.h" > > Same here. > It's written in the commit message: "Cleanup a little the includes while at it."
>-----Original Message----- >From: Joao Martins <joao.m.martins@oracle.com> >Subject: Re: [PATCH for-10.1 24/32] vfio: Introduce new files for dirty tracking >definitions and declarations > >On 20/03/2025 09:52, Duan, Zhenzhong wrote: >>> -----Original Message----- >>> From: Cédric Le Goater <clg@redhat.com> >>> Subject: [PATCH for-10.1 24/32] vfio: Introduce new files for dirty tracking >>> definitions and declarations >>> >>> File "common.c" has been emptied of most of its definitions by the >>> previous changes and the only definitions left are related to dirty >>> tracking. Rename it to "dirty-tracking.c" and introduce its associated >>> "dirty-tracking.h" header file for the declarations. >>> >>> Cleanup a little the includes while at it. >>> >>> Signed-off-by: Cédric Le Goater <clg@redhat.com> >>> --- a/hw/vfio/common.c >>> +++ b/hw/vfio/dirty-tracking.c >>> @@ -20,14 +20,10 @@ >>> >>> #include "qemu/osdep.h" >>> #include <sys/ioctl.h> >>> -#ifdef CONFIG_KVM >>> -#include <linux/kvm.h> >>> -#endif >> >> It looks this change unrelated to this patch? >> >>> #include <linux/vfio.h> >>> >>> #include "hw/vfio/vfio-common.h" >>> #include "hw/vfio/pci.h" >>> -#include "exec/address-spaces.h" >> >> Same here. >> > >It's written in the commit message: > > "Cleanup a little the includes while at it." Oh yes, I missed it, no problem here. Thanks Zhenzhong
On Tue, Mar 18, 2025 at 10:54:07AM +0100, Cédric Le Goater wrote: > File "common.c" has been emptied of most of its definitions by the > previous changes and the only definitions left are related to dirty > tracking. Rename it to "dirty-tracking.c" and introduce its associated > "dirty-tracking.h" header file for the declarations. > > Cleanup a little the includes while at it. > > Signed-off-by: Cédric Le Goater <clg@redhat.com> > rename from hw/vfio/common.c > rename to hw/vfio/dirty-tracking.c > index ed2f2ed8839caaf40fabb0cbbcaa1df2c5b70d67..441f9d9a08c06a88dda44ef143dcee5f0a89a900 100644 > --- a/hw/vfio/common.c > +++ b/hw/vfio/dirty-tracking.c > @@ -20,14 +20,10 @@ I think you might want to update the file comment from "generic functions used by VFIO devices". regards john
On 3/20/25 10:46, John Levon wrote: > On Tue, Mar 18, 2025 at 10:54:07AM +0100, Cédric Le Goater wrote: > >> File "common.c" has been emptied of most of its definitions by the >> previous changes and the only definitions left are related to dirty >> tracking. Rename it to "dirty-tracking.c" and introduce its associated >> "dirty-tracking.h" header file for the declarations. >> >> Cleanup a little the includes while at it. >> >> Signed-off-by: Cédric Le Goater <clg@redhat.com> > >> rename from hw/vfio/common.c >> rename to hw/vfio/dirty-tracking.c >> index ed2f2ed8839caaf40fabb0cbbcaa1df2c5b70d67..441f9d9a08c06a88dda44ef143dcee5f0a89a900 100644 >> --- a/hw/vfio/common.c >> +++ b/hw/vfio/dirty-tracking.c >> @@ -20,14 +20,10 @@ > > I think you might want to update the file comment from "generic functions used > by VFIO devices". Yes. next respin will have to take a closer look at the top of the files: comments, copyrights, includes. Thanks, C.
On 18/03/2025 09:54, Cédric Le Goater wrote:
> File "common.c" has been emptied of most of its definitions by the
> previous changes and the only definitions left are related to dirty
> tracking. Rename it to "dirty-tracking.c" and introduce its associated
> "dirty-tracking.h" header file for the declarations.
>
> Cleanup a little the includes while at it.
>
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Joao Martins <joao.m.martins@oracle.com>
> ---
> hw/vfio/dirty-tracking.h | 22 ++++++++++++++++++++++
> include/hw/vfio/vfio-common.h | 10 ----------
> hw/vfio/container.c | 1 +
> hw/vfio/{common.c => dirty-tracking.c} | 5 +----
> hw/vfio/iommufd.c | 1 +
> hw/vfio/meson.build | 2 +-
> hw/vfio/trace-events | 2 +-
> 7 files changed, 27 insertions(+), 16 deletions(-)
> create mode 100644 hw/vfio/dirty-tracking.h
> rename hw/vfio/{common.c => dirty-tracking.c} (99%)
>
> diff --git a/hw/vfio/dirty-tracking.h b/hw/vfio/dirty-tracking.h
> new file mode 100644
> index 0000000000000000000000000000000000000000..4b83dc54ab50dabfff040d7cc3db27b80bfe2d3a
> --- /dev/null
> +++ b/hw/vfio/dirty-tracking.h
> @@ -0,0 +1,22 @@
> +/*
> + * VFIO dirty page tracking routines
> + *
> + * Copyright Red Hat, Inc. 2025
> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +#ifndef HW_VFIO_DIRTY_TRACKING_H
> +#define HW_VFIO_DIRTY_TRACKING_H
> +
> +extern const MemoryListener vfio_memory_listener;
> +
> +bool vfio_devices_all_dirty_tracking_started(const VFIOContainerBase *bcontainer);
> +bool vfio_devices_all_device_dirty_tracking(const VFIOContainerBase *bcontainer);
> +int vfio_devices_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
> + VFIOBitmap *vbmap, hwaddr iova, hwaddr size,
> + Error **errp);
> +int vfio_get_dirty_bitmap(const VFIOContainerBase *bcontainer, uint64_t iova,
> + uint64_t size, ram_addr_t ram_addr, Error **errp);
> +
> +#endif /* HW_VFIO_DIRTY_TRACKING_H */
> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
> index 184a422916f62259158e8759efc473a5efb2b2f7..cc20110d9de8ac173b67e6e878d4d61818497426 100644
> --- a/include/hw/vfio/vfio-common.h
> +++ b/include/hw/vfio/vfio-common.h
> @@ -130,7 +130,6 @@ VFIODevice *vfio_get_vfio_device(Object *obj);
>
> typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList;
> extern VFIODeviceList vfio_device_list;
> -extern const MemoryListener vfio_memory_listener;
>
> #ifdef CONFIG_LINUX
> int vfio_get_region_info(VFIODevice *vbasedev, int index,
> @@ -140,15 +139,6 @@ int vfio_get_dev_region_info(VFIODevice *vbasedev, uint32_t type,
> bool vfio_has_region_cap(VFIODevice *vbasedev, int region, uint16_t cap_type);
> #endif
>
> -bool vfio_devices_all_dirty_tracking_started(
> - const VFIOContainerBase *bcontainer);
> -bool
> -vfio_devices_all_device_dirty_tracking(const VFIOContainerBase *bcontainer);
> -int vfio_devices_query_dirty_bitmap(const VFIOContainerBase *bcontainer,
> - VFIOBitmap *vbmap, hwaddr iova, hwaddr size, Error **errp);
> -int vfio_get_dirty_bitmap(const VFIOContainerBase *bcontainer, uint64_t iova,
> - uint64_t size, ram_addr_t ram_addr, Error **errp);
> -
> /* Returns 0 on success, or a negative errno. */
> bool vfio_device_get_name(VFIODevice *vbasedev, Error **errp);
> void vfio_device_set_fd(VFIODevice *vbasedev, const char *str, Error **errp);
> diff --git a/hw/vfio/container.c b/hw/vfio/container.c
> index 4e41a7476549a0c5e464e499d059db5aca6e3470..e88dfe12edd6dee469c06ee2e46ab9c8b5019ae7 100644
> --- a/hw/vfio/container.c
> +++ b/hw/vfio/container.c
> @@ -35,6 +35,7 @@
> #include "hw/vfio/vfio-container.h"
> #include "helpers.h"
> #include "cpr.h"
> +#include "dirty-tracking.h"
>
> #define TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO TYPE_HOST_IOMMU_DEVICE "-legacy-vfio"
>
> diff --git a/hw/vfio/common.c b/hw/vfio/dirty-tracking.c
> similarity index 99%
> rename from hw/vfio/common.c
> rename to hw/vfio/dirty-tracking.c
> index ed2f2ed8839caaf40fabb0cbbcaa1df2c5b70d67..441f9d9a08c06a88dda44ef143dcee5f0a89a900 100644
> --- a/hw/vfio/common.c
> +++ b/hw/vfio/dirty-tracking.c
> @@ -20,14 +20,10 @@
>
> #include "qemu/osdep.h"
> #include <sys/ioctl.h>
> -#ifdef CONFIG_KVM
> -#include <linux/kvm.h>
> -#endif
> #include <linux/vfio.h>
>
> #include "hw/vfio/vfio-common.h"
> #include "hw/vfio/pci.h"
> -#include "exec/address-spaces.h"
> #include "exec/memory.h"
> #include "exec/ram_addr.h"
> #include "exec/target_page.h"
> @@ -45,6 +41,7 @@
> #include "system/tpm.h"
> #include "migration.h"
> #include "helpers.h"
> +#include "dirty-tracking.h"
>
> /*
> * Device state interfaces
> diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
> index b25f3b4086d7b7fc6fcd519a9b8b2904513a655f..9335a17920b32dc2bf9cb4eeb2b8f57382f14ac8 100644
> --- a/hw/vfio/iommufd.c
> +++ b/hw/vfio/iommufd.c
> @@ -29,6 +29,7 @@
> #include "iommufd.h"
> #include "helpers.h"
> #include "cpr.h"
> +#include "dirty-tracking.h"
>
> #define TYPE_HOST_IOMMU_DEVICE_IOMMUFD_VFIO \
> TYPE_HOST_IOMMU_DEVICE_IOMMUFD "-vfio"
> diff --git a/hw/vfio/meson.build b/hw/vfio/meson.build
> index 1f89bd28c13dea55bcfff476ce99d51b453d8533..b6f5a7eeeda035b5872c2a19f8086384e000f420 100644
> --- a/hw/vfio/meson.build
> +++ b/hw/vfio/meson.build
> @@ -1,6 +1,6 @@
> vfio_ss = ss.source_set()
> vfio_ss.add(files(
> - 'common.c',
> + 'dirty-tracking.c',
> 'container.c',
> 'helpers.c',
> ))
> diff --git a/hw/vfio/trace-events b/hw/vfio/trace-events
> index a1d01e9dde6ec52964d4804e9cbce5a6a32b7879..f3bdcebe938dcca77b913ef81a74644c622b5d8a 100644
> --- a/hw/vfio/trace-events
> +++ b/hw/vfio/trace-events
> @@ -89,7 +89,7 @@ vfio_pci_igd_bdsm_enabled(const char *name, int size) "%s %dMB"
> vfio_pci_igd_host_bridge_enabled(const char *name) "%s"
> vfio_pci_igd_lpc_bridge_enabled(const char *name) "%s"
>
> -# common.c
> +# dirty-tracking.c
> vfio_iommu_map_notify(const char *op, uint64_t iova_start, uint64_t iova_end) "iommu %s @ 0x%"PRIx64" - 0x%"PRIx64
> vfio_listener_region_skip(const char *name, uint64_t start, uint64_t end) "SKIPPING %s 0x%"PRIx64" - 0x%"PRIx64
> vfio_spapr_group_attach(int groupfd, int tablefd) "Attached groupfd %d to liobn fd %d"
© 2016 - 2026 Red Hat, Inc.