> On 12 Feb 2025, at 12:37, Luca Fancellu <[email protected]> wrote:
> 
> Hi Andrew,
> 
> thanks for your review,
> 
>> On 12 Feb 2025, at 11:50, Andrew Cooper <[email protected]> wrote:
>> 
>> On 12/02/2025 9:18 am, Luca Fancellu wrote:
>>> When Xen is built without HAS_PASSTHROUGH, there are some parts
>>> in arm and x86 where iommu_* functions are called in the codebase,
>>> but their implementation is under xen/drivers/passthrough that is
>>> not built.
>>> 
>>> So provide some stub for these functions in order to build Xen
>>> when !HAS_PASSTHROUGH, which is the case for example on systems
>>> with MPU support.
>>> 
>>> Signed-off-by: Luca Fancellu <[email protected]>
>>> ---
>>> xen/arch/arm/include/asm/grant_table.h |  8 ++++++
>>> xen/include/xen/iommu.h                | 40 +++++++++++++++++++++++---
>>> 2 files changed, 44 insertions(+), 4 deletions(-)
>>> 
>>> diff --git a/xen/arch/arm/include/asm/grant_table.h 
>>> b/xen/arch/arm/include/asm/grant_table.h
>>> index d3c518a926b9..e21634b752df 100644
>>> --- a/xen/arch/arm/include/asm/grant_table.h
>>> +++ b/xen/arch/arm/include/asm/grant_table.h
>>> @@ -73,9 +73,17 @@ int replace_grant_host_mapping(uint64_t gpaddr, mfn_t 
>>> frame,
>>> #define gnttab_status_gfn(d, t, i)                                       \
>>>    page_get_xenheap_gfn(gnttab_status_page(t, i))
>>> 
>>> +#ifdef CONFIG_HAS_PASSTHROUGH
>>> +
>>> #define gnttab_need_iommu_mapping(d)                    \
>>>    (is_domain_direct_mapped(d) && is_iommu_enabled(d))
>>> 
>>> +#else
>>> +
>>> +#define gnttab_need_iommu_mapping(d) (false)
>> 
>> This doesn't evaluate d, which can lead to other build problems.
>> 
>> Instead of providing two, you should insert
>> "IS_ENABLED(CONFIG_HAS_PASSTHROUGH) &&" into the existing
>> gnttab_need_iommu_mapping().
> 
> I’ll do that for this case, I already checked and it works well, just for my 
> knowledge could you
> explain to me what build problems can happen? Is it something related to the 
> compiler that
> doesn’t see a usage for d?
> 
> 
>> 
>> The same applies to several other hunks too.
> 
> Are you referring to iommu_use_hap_pt? I have to say that I’ve tried before 
> to insert another
> IS_ENABLED(…) but it was failing the compilation because without 
> HAS_PASSTHROUGH
> dom_iommu(d) is (&(d)->iommu), but the iommu field doesn’t exists.
> 
> So I’m not sure how to proceed there, do you have any suggestions?

Oh sorry, nevermind this point, I see I can maybe use the same approach as 
need_iommu_pt_sync(d)

> 
> Cheers,
> Luca


Reply via email to