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
