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?

Cheers,
Luca

Reply via email to