[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v8 5/9] memory: add MemoryRegionIOMMUOps.replay(
From: |
Auger Eric |
Subject: |
Re: [Qemu-devel] [PATCH v8 5/9] memory: add MemoryRegionIOMMUOps.replay() callback |
Date: |
Thu, 6 Apr 2017 12:58:30 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 |
Hi Peter,
On 06/04/2017 09:08, Peter Xu wrote:
> Originally we have one memory_region_iommu_replay() function, which is
> the default behavior to replay the translations of the whole IOMMU
> region. However, on some platform like x86, we may want our own replay
> logic for IOMMU regions. This patch add one more hook for IOMMUOps for
s/add/adds
> the callback, and it'll override the default if set.
>
> Reviewed-by: David Gibson <address@hidden>
> Signed-off-by: Peter Xu <address@hidden>
Reviewed-by: Eric Auger <address@hidden>
Thanks
Eric
> ---
> include/exec/memory.h | 2 ++
> memory.c | 6 ++++++
> 2 files changed, 8 insertions(+)
>
> diff --git a/include/exec/memory.h b/include/exec/memory.h
> index 055b3a8..c0280b7 100644
> --- a/include/exec/memory.h
> +++ b/include/exec/memory.h
> @@ -191,6 +191,8 @@ struct MemoryRegionIOMMUOps {
> void (*notify_flag_changed)(MemoryRegion *iommu,
> IOMMUNotifierFlag old_flags,
> IOMMUNotifierFlag new_flags);
> + /* Set this up to provide customized IOMMU replay function */
> + void (*replay)(MemoryRegion *iommu, IOMMUNotifier *notifier);
> };
>
> typedef struct CoalescedMemoryRange CoalescedMemoryRange;
> diff --git a/memory.c b/memory.c
> index ded4bf1..b782d5b 100644
> --- a/memory.c
> +++ b/memory.c
> @@ -1626,6 +1626,12 @@ void memory_region_iommu_replay(MemoryRegion *mr,
> IOMMUNotifier *n,
> hwaddr addr, granularity;
> IOMMUTLBEntry iotlb;
>
> + /* If the IOMMU has its own replay callback, override */
> + if (mr->iommu_ops->replay) {
> + mr->iommu_ops->replay(mr, n);
> + return;
> + }
> +
> granularity = memory_region_iommu_get_min_page_size(mr);
>
> for (addr = 0; addr < memory_region_size(mr); addr += granularity) {
>
- Re: [Qemu-devel] [PATCH v8 2/9] memory: provide IOMMU_NOTIFIER_FOREACH macro, (continued)
- [Qemu-devel] [PATCH v8 4/9] memory: introduce memory_region_notify_one(), Peter Xu, 2017/04/06
- [Qemu-devel] [PATCH v8 5/9] memory: add MemoryRegionIOMMUOps.replay() callback, Peter Xu, 2017/04/06
- [Qemu-devel] [PATCH v8 6/9] intel_iommu: use the correct memory region for device IOTLB notification, Peter Xu, 2017/04/06
- [Qemu-devel] [PATCH v8 7/9] intel_iommu: provide its own replay() callback, Peter Xu, 2017/04/06
- [Qemu-devel] [PATCH v8 8/9] intel_iommu: allow dynamic switch of IOMMU region, Peter Xu, 2017/04/06
- [Qemu-devel] [PATCH v8 9/9] intel_iommu: enable remote IOTLB, Peter Xu, 2017/04/06
- Re: [Qemu-devel] [PATCH v8 0/9] VT-d: vfio enablement and misc enhances, Michael S. Tsirkin, 2017/04/06