qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Cédric Le Goater" <clg@redhat.com>
To: eric.auger@redhat.com, qemu-devel@nongnu.org
Cc: Zhenzhong Duan <zhenzhong.duan@intel.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Avihai Horon <avihaih@nvidia.com>,
	Joao Martins <joao.m.martins@oracle.com>
Subject: Re: [PATCH v2 04/17] vfio/common: Extract vIOMMU code from vfio_sync_dirty_bitmap()
Date: Tue, 18 Jun 2024 13:22:43 +0200	[thread overview]
Message-ID: <fecee4bd-edfb-49e4-b901-9511a54300a9@redhat.com> (raw)
In-Reply-To: <b02d50c5-7cb8-4903-9c12-f7ec9c29151e@redhat.com>

On 6/17/24 4:00 PM, Eric Auger wrote:
> Hi Cédric,
> 
> On 6/17/24 08:33, Cédric Le Goater wrote:
>> From: Avihai Horon <avihaih@nvidia.com>
>>
>> Extract vIOMMU code from vfio_sync_dirty_bitmap() to a new function and
>> restructure the code.
>>
>> This is done in preparation for optimizing vIOMMU deviice dirty page
> device

fixed.


>> tracking. No functional changes intended.
>>
>> Signed-off-by: Avihai Horon <avihaih@nvidia.com>
>> Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
>> [ clg: - Rebased on upstream ]
>> Signed-off-by: Cédric Le Goater <clg@redhat.com>
>> Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
>> ---
>>   hw/vfio/common.c | 63 +++++++++++++++++++++++++++++-------------------
>>   1 file changed, 38 insertions(+), 25 deletions(-)
>>
>> diff --git a/hw/vfio/common.c b/hw/vfio/common.c
>> index fe215918bdf66ddbe3c5db803e10ce1aa9756b90..f28641bad5cf4b71fcdc0a6c9d42b24c8d786248 100644
>> --- a/hw/vfio/common.c
>> +++ b/hw/vfio/common.c
>> @@ -1302,37 +1302,50 @@ vfio_sync_ram_discard_listener_dirty_bitmap(VFIOContainerBase *bcontainer,
>>                                                   &vrdl);
>>   }
>>   
>> +static int vfio_sync_iommu_dirty_bitmap(VFIOContainerBase *bcontainer,
>> +                                        MemoryRegionSection *section)
>> +{
>> +    VFIOGuestIOMMU *giommu;
>> +    bool found = false;
>> +    Int128 llend;
>> +    vfio_giommu_dirty_notifier gdn;
>> +    int idx;
>> +
>> +    QLIST_FOREACH(giommu, &bcontainer->giommu_list, giommu_next) {
>> +        if (MEMORY_REGION(giommu->iommu_mr) == section->mr &&
>> +            giommu->n.start == section->offset_within_region) {
>> +            found = true;
>> +            break;
>> +        }
>> +    }
>> +
>> +    if (!found) {
>> +        return 0;
>> +    }
>> +
>> +    gdn.giommu = giommu;
>> +    idx = memory_region_iommu_attrs_to_index(giommu->iommu_mr,
>> +                                             MEMTXATTRS_UNSPECIFIED);
>> +
>> +    llend = int128_add(int128_make64(section->offset_within_region),
>> +                       section->size);
>> +    llend = int128_sub(llend, int128_one());
>> +
>> +    iommu_notifier_init(&gdn.n, vfio_iommu_map_dirty_notify, IOMMU_NOTIFIER_MAP,
>> +                        section->offset_within_region, int128_get64(llend),
>> +                        idx);
>> +    memory_region_iommu_replay(giommu->iommu_mr, &gdn.n);
>> +
>> +    return 0;
> if this does not return anything else than 0, shouldn't it be void?

Yes it could. The return value is practical for the caller below though. Let's
keep it that way for now, it's harmless.


Thanks,

C.


> 
> Thanks
> 
> Eric
>> +}
>> +
>>   static int vfio_sync_dirty_bitmap(VFIOContainerBase *bcontainer,
>>                                     MemoryRegionSection *section, Error **errp)
>>   {
>>       ram_addr_t ram_addr;
>>   
>>       if (memory_region_is_iommu(section->mr)) {
>> -        VFIOGuestIOMMU *giommu;
>> -
>> -        QLIST_FOREACH(giommu, &bcontainer->giommu_list, giommu_next) {
>> -            if (MEMORY_REGION(giommu->iommu_mr) == section->mr &&
>> -                giommu->n.start == section->offset_within_region) {
>> -                Int128 llend;
>> -                vfio_giommu_dirty_notifier gdn = { .giommu = giommu };
>> -                int idx = memory_region_iommu_attrs_to_index(giommu->iommu_mr,
>> -                                                       MEMTXATTRS_UNSPECIFIED);
>> -
>> -                llend = int128_add(int128_make64(section->offset_within_region),
>> -                                   section->size);
>> -                llend = int128_sub(llend, int128_one());
>> -
>> -                iommu_notifier_init(&gdn.n,
>> -                                    vfio_iommu_map_dirty_notify,
>> -                                    IOMMU_NOTIFIER_MAP,
>> -                                    section->offset_within_region,
>> -                                    int128_get64(llend),
>> -                                    idx);
>> -                memory_region_iommu_replay(giommu->iommu_mr, &gdn.n);
>> -                break;
>> -            }
>> -        }
>> -        return 0;
>> +        return vfio_sync_iommu_dirty_bitmap(bcontainer, section);
>>       } else if (memory_region_has_ram_discard_manager(section->mr)) {
>>           int ret;
>>   
> 



  reply	other threads:[~2024-06-18 11:23 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-17  6:33 [PATCH v2 00/17] vfio: QOMify VFIOContainer Cédric Le Goater
2024-06-17  6:33 ` [PATCH v2 01/17] vfio: Make vfio_devices_dma_logging_start() return bool Cédric Le Goater
2024-06-17 11:31   ` Eric Auger
2024-06-17 12:34     ` Cédric Le Goater
2024-06-17 13:55       ` Eric Auger
2024-06-17  6:33 ` [PATCH v2 02/17] vfio: Remove unused declarations from vfio-common.h Cédric Le Goater
2024-06-17 11:32   ` Eric Auger
2024-06-17  6:33 ` [PATCH v2 03/17] vfio/common: Move dirty tracking ranges update to helper Cédric Le Goater
2024-06-17 11:39   ` Eric Auger
2024-06-18 11:22     ` Cédric Le Goater
2024-06-17  6:33 ` [PATCH v2 04/17] vfio/common: Extract vIOMMU code from vfio_sync_dirty_bitmap() Cédric Le Goater
2024-06-17 14:00   ` Eric Auger
2024-06-18 11:22     ` Cédric Le Goater [this message]
2024-06-17  6:33 ` [PATCH v2 05/17] vfio/container: Introduce vfio_address_space_insert() Cédric Le Goater
2024-06-17 14:04   ` Eric Auger
2024-06-18 11:27     ` Cédric Le Goater
2024-06-17  6:33 ` [PATCH v2 06/17] vfio/container: Simplify vfio_container_init() Cédric Le Goater
2024-06-17 14:25   ` Eric Auger
2024-06-18 11:29     ` Cédric Le Goater
2024-06-17  6:33 ` [PATCH v2 07/17] vfio/container: Modify vfio_get_iommu_type() to use a container fd Cédric Le Goater
2024-06-17 14:26   ` Eric Auger
2024-06-17  6:34 ` [PATCH v2 08/17] vfio/container: Introduce vfio_get_iommu_class_name() Cédric Le Goater
2024-06-17 14:29   ` Eric Auger
2024-06-17  6:34 ` [PATCH v2 09/17] vfio/container: Introduce vfio_create_container() Cédric Le Goater
2024-06-17 14:29   ` Eric Auger
2024-06-17  6:34 ` [PATCH v2 10/17] vfio/container: Discover IOMMU type before creating the container Cédric Le Goater
2024-06-17 14:39   ` Eric Auger
2024-06-17  6:34 ` [PATCH v2 11/17] vfio/container: Change VFIOContainerBase to use QOM Cédric Le Goater
2024-06-17 15:26   ` Eric Auger
2024-06-17  6:34 ` [PATCH v2 12/17] vfio/container: Switch to QOM Cédric Le Goater
2024-06-17 15:26   ` Eric Auger
2024-06-17  6:34 ` [PATCH v2 13/17] vfio/container: Introduce an instance_init() handler Cédric Le Goater
2024-06-17 15:27   ` Eric Auger
2024-06-17  6:34 ` [PATCH v2 14/17] vfio/container: Remove VFIOContainerBase::ops Cédric Le Goater
2024-06-17 15:27   ` Eric Auger
2024-06-17  6:34 ` [PATCH v2 15/17] vfio/container: Remove vfio_container_init() Cédric Le Goater
2024-06-17 15:28   ` Eric Auger
2024-06-17  6:34 ` [PATCH v2 16/17] vfio/container: Introduce vfio_iommu_legacy_instance_init() Cédric Le Goater
2024-06-17 15:29   ` Eric Auger
2024-06-17  6:34 ` [PATCH v2 17/17] vfio/container: Move vfio_container_destroy() to an instance_finalize() handler Cédric Le Goater
2024-06-17 10:24   ` Duan, Zhenzhong
2024-06-17 15:30   ` Eric Auger
2024-06-17 16:22 ` [PATCH v2 00/17] vfio: QOMify VFIOContainer Eric Auger
2024-06-18 11:45   ` Cédric Le Goater
2024-06-24 21:17 ` Cédric Le Goater

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fecee4bd-edfb-49e4-b901-9511a54300a9@redhat.com \
    --to=clg@redhat.com \
    --cc=alex.williamson@redhat.com \
    --cc=avihaih@nvidia.com \
    --cc=eric.auger@redhat.com \
    --cc=joao.m.martins@oracle.com \
    --cc=qemu-devel@nongnu.org \
    --cc=zhenzhong.duan@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).