|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 2/5] xen/common: Guard iommu symbols with CONFIG_HAS_PASSTHROUGH
On 18.05.2021 06:11, Connor Davis wrote:
>
> On 5/17/21 9:42 AM, Julien Grall wrote:
>> Hi Jan,
>>
>> On 17/05/2021 12:16, Jan Beulich wrote:
>>> On 14.05.2021 20:53, Connor Davis wrote:
>>>> --- a/xen/common/memory.c
>>>> +++ b/xen/common/memory.c
>>>> @@ -294,7 +294,9 @@ int guest_remove_page(struct domain *d, unsigned
>>>> long gmfn)
>>>> p2m_type_t p2mt;
>>>> #endif
>>>> mfn_t mfn;
>>>> +#ifdef CONFIG_HAS_PASSTHROUGH
>>>> bool *dont_flush_p, dont_flush;
>>>> +#endif
>>>> int rc;
>>>> #ifdef CONFIG_X86
>>>> @@ -385,13 +387,17 @@ int guest_remove_page(struct domain *d,
>>>> unsigned long gmfn)
>>>> * Since we're likely to free the page below, we need to suspend
>>>> * xenmem_add_to_physmap()'s suppressing of IOMMU TLB flushes.
>>>> */
>>>> +#ifdef CONFIG_HAS_PASSTHROUGH
>>>> dont_flush_p = &this_cpu(iommu_dont_flush_iotlb);
>>>> dont_flush = *dont_flush_p;
>>>> *dont_flush_p = false;
>>>> +#endif
>>>> rc = guest_physmap_remove_page(d, _gfn(gmfn), mfn, 0);
>>>> +#ifdef CONFIG_HAS_PASSTHROUGH
>>>> *dont_flush_p = dont_flush;
>>>> +#endif
>>>> /*
>>>> * With the lack of an IOMMU on some platforms, domains with
>>>> DMA-capable
>>>> @@ -839,11 +845,13 @@ int xenmem_add_to_physmap(struct domain *d,
>>>> struct xen_add_to_physmap *xatp,
>>>> xatp->gpfn += start;
>>>> xatp->size -= start;
>>>> +#ifdef CONFIG_HAS_PASSTHROUGH
>>>> if ( is_iommu_enabled(d) )
>>>> {
>>>> this_cpu(iommu_dont_flush_iotlb) = 1;
>>>> extra.ppage = &pages[0];
>>>> }
>>>> +#endif
>>>> while ( xatp->size > done )
>>>> {
>>>> @@ -868,6 +876,7 @@ int xenmem_add_to_physmap(struct domain *d,
>>>> struct xen_add_to_physmap *xatp,
>>>> }
>>>> }
>>>> +#ifdef CONFIG_HAS_PASSTHROUGH
>>>> if ( is_iommu_enabled(d) )
>>>> {
>>>> int ret;
>>>> @@ -894,6 +903,7 @@ int xenmem_add_to_physmap(struct domain *d,
>>>> struct xen_add_to_physmap *xatp,
>>>> if ( unlikely(ret) && rc >= 0 )
>>>> rc = ret;
>>>> }
>>>> +#endif
>>>> return rc;
>>>> }
>>>
>>> I wonder whether all of these wouldn't better become CONFIG_X86:
>>> ISTR Julien indicating that he doesn't see the override getting used
>>> on Arm. (Julien, please correct me if I'm misremembering.)
>>
>> Right, so far, I haven't been in favor to introduce it because:
>> 1) The P2M code may free some memory. So you can't always ignore
>> the flush (I think this is wrong for the upper layer to know when this
>> can happen).
>> 2) It is unclear what happen if the IOMMU TLBs and the PT contains
>> different mappings (I received conflicted advice).
>>
>> So it is better to always flush and as early as possible.
>
> So keep it as is or switch to CONFIG_X86?
Please switch, unless anyone else voices a strong opinion towards
keeping as is.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |