[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v16 QEMU 12/16] memory: Set DIRTY_MEMORY_MIGRATION when IOMMU
From: |
Alex Williamson |
Subject: |
Re: [PATCH v16 QEMU 12/16] memory: Set DIRTY_MEMORY_MIGRATION when IOMMU is enabled |
Date: |
Wed, 1 Apr 2020 13:42:02 -0600 |
On Wed, 1 Apr 2020 20:00:32 +0100
"Dr. David Alan Gilbert" <address@hidden> wrote:
> * Kirti Wankhede (address@hidden) wrote:
> > Signed-off-by: Kirti Wankhede <address@hidden>
> > ---
> > memory.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/memory.c b/memory.c
> > index acb7546971c3..285ca2ed6dd9 100644
> > --- a/memory.c
> > +++ b/memory.c
> > @@ -1788,7 +1788,7 @@ bool memory_region_is_ram_device(MemoryRegion *mr)
> > uint8_t memory_region_get_dirty_log_mask(MemoryRegion *mr)
> > {
> > uint8_t mask = mr->dirty_log_mask;
> > - if (global_dirty_log && mr->ram_block) {
> > + if (global_dirty_log && (mr->ram_block || memory_region_is_iommu(mr)))
> > {
> > mask |= (1 << DIRTY_MEMORY_MIGRATION);
>
> I'm missing why the two go together here.
> What does 'is_iommu' really mean?
I take that to mean MemoryRegion is translated by an IOMMU, ie. it's an
IOVA range of the IOMMU. Therefore we're adding it to dirty log
tracking, just as we do for ram blocks. At least that's my
interpretation of what it's supposed to do, I'm not an expert here on
whether it's the right way to do that. Thanks,
Alex