qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC v3 1/1] memory: Skip bad range assertion if notifier supports a


From: Jason Wang
Subject: Re: [RFC v3 1/1] memory: Skip bad range assertion if notifier supports arbitrary masks
Date: Tue, 1 Sep 2020 11:05:18 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0


On 2020/8/21 下午10:12, Peter Xu wrote:
On Thu, Aug 20, 2020 at 10:28:00AM +0800, Jason Wang wrote:
On 2020/8/19 下午11:50, Peter Xu wrote:
On Wed, Aug 19, 2020 at 03:15:26PM +0800, Jason Wang wrote:
Yes, actually, I feel confused after reading the codes. Is notifier->start
IOVA or GPA?

In vfio.c, we did:

          iommu_notifier_init(&giommu->n, vfio_iommu_map_notify,
                              IOMMU_NOTIFIER_ALL,
                              section->offset_within_region,
                              int128_get64(llend),
                              iommu_idx);

So it looks to me the start and end are GPA, but the assertion above check
it against IOVA which seems to be wrong ....
It should be iova; both section->offset_within_region and llend are for the
device's iova address space.  Thanks,

Interesting, how can memory region know which IOVA is used by guest?
Does it need to know? :)

AFAICT what we do here is only register with the whole possible IOVA address
space (e.g., across the whole 64bit address space).  Then vfio will get
notifications when there're new iova ranges mapped into it.


Right, but the whole IOVA address space should be something vIOMMU specific, e.g for Intel it should be calculated by GAW, but I found:

        memory_region_init_iommu(&vtd_dev_as->iommu, sizeof(vtd_dev_as->iommu),
                                 TYPE_INTEL_IOMMU_MEMORY_REGION, OBJECT(s),
                                 name, UINT64_MAX);

which assumes UINT64_MAX.

Thanks








reply via email to

[Prev in Thread] Current Thread [Next in Thread]