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

Re: [Xen-devel] Unshared IOMMU issues

Hi, Jan.

On Thu, Feb 16, 2017 at 11:36 AM, Jan Beulich <JBeulich@xxxxxxxx> wrote:
>>>> On 15.02.17 at 18:43, <olekstysh@xxxxxxxxx> wrote:
>> 1.
>> I need:
>> Allow P2M core on ARM to update IOMMU mapping from the first "p2m_set_entry".
>> I do:
>> I explicitly set need_iommu flag for *every* guest domain during
>> iommu_domain_init() on ARM in case if page table is not shared.
>> At that moment I have no knowledge about will any device be assigned
>> to this domain or not. I am just want to receive all mapping updates
>> from P2M code. The P2M will update IOMMU mapping only when need_iommu
>> is set and page table is not shared.
>> I have doubts:
>> Is it correct to just force need_iommu flag?
> No, I don't think so. This is a waste of a measurable amount of
> resources when page tables aren't shared.
>> Or maybe another flag should be introduced?
> Not sure what you think of here. Where's the problem with building
> IOMMU page tables at the time the first device gets assigned, just
> like x86 does?
OK, I have already had a look at  arch_iommu_populate_page_table() for x86.
I don't know at the moment how this solution can help me.
There are a least two points the prevent me from doing the similar thing.
1. For create IOMMU mapping I need both mfn and gfn. (+ flags).
I am able to get mfn only. How can I find corresponding gfn?
2. The d->page_list seems only contains domain RAM (not 100% sure).
Where can I get other regions (mmios, etc)?

>> Or we don't need to check for need_iommu flag before updating IOMMU
>> mapping in P2M code, maybe iommu_enabled would be enough?
> No, afaict that would again mean maintaining IOMMU page tables
> regardless of whether they're needed.
>> 2.
>> I need:
>> Allow IOMMU driver to be ready to handle IOMMU mapping updates from
>> the first "p2m_set_entry".
> Why (see also the question above)?
I explained above.  Unfortunately, I don't see how can I get all
iova-to-pa mapping
that took place for this domain from the start on ARM.

>> I do:
>> I always allocate IOMMU page table during iommu_domain_init() for every
>> domain even this domain won't have any assigned devices in future. I
>> don't wait for iommu_construct.
>> I have doubts:
>> Is it correct? It might be just wasting memory and CPU time if domain
>> doesn't have any assigned devices in future.
> Indeed.
> Jan


Oleksandr Tyshchenko

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.