[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 1/2] xen/passthrough: Provide stub functions when !HAS_PASSTHROUGH
Hi Jan, thanks for your review, > On 17 Feb 2025, at 10:50, Jan Beulich <jbeulich@xxxxxxxx> wrote: > > On 17.02.2025 11:27, 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. > > Why the mention of x86, where HAS_PASSTHROUGH is always selected? sure, I’ll remove x86 > >> 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. > > Is this fixing a build issue when MPU=y? If so, ... > >> For gnttab_need_iommu_mapping() in the Arm part, modify the macro >> to use IS_ENABLED for the HAS_PASSTHROUGH Kconfig. >> >> Signed-off-by: Luca Fancellu <luca.fancellu@xxxxxxx> > > ... is there a Fixes: tag missing? right, I’ll add a tag, but I don’t expect it to be backported, also the MPU will still have some changes needed before being able to build, should I put a tag even if this is the case? > >> --- a/xen/include/xen/iommu.h >> +++ b/xen/include/xen/iommu.h >> @@ -110,6 +110,8 @@ extern int8_t iommu_hwdom_reserved; >> >> extern unsigned int iommu_dev_iotlb_timeout; >> >> +#ifdef CONFIG_HAS_PASSTHROUGH >> + >> int iommu_setup(void); >> int iommu_hardware_setup(void); >> >> @@ -122,6 +124,24 @@ int arch_iommu_domain_init(struct domain *d); >> void arch_iommu_check_autotranslated_hwdom(struct domain *d); >> void arch_iommu_hwdom_init(struct domain *d); >> >> +#else >> + >> +static inline int iommu_setup(void) >> +{ >> + return -ENODEV; >> +} >> + >> +static inline int iommu_domain_init(struct domain *d, unsigned int opts) >> +{ >> + return 0; > > Shouldn't this fail when is_iommu_enabled(d) is true? (The use of the > predicate here as well as in the real function is slightly strange, but > that's the way it is.) Right, probably you know better this code than me, I started from the assumption that when !HAS_PASSTHROUGH, 'iommu_enabled' is false. is_iommu_enabled(d) checks if the domain structure ‘options’ field has XEN_DOMCTL_CDF_iommu, this flag is set on domain creation when ‘iommu_enabled' is true on arm and x86. So when !HAS_PASSTHROUGH can we assume is_iommu_enabled(d) give false? Or shall we return for example the value of is_iommu_enabled(d)? > >> @@ -381,17 +423,19 @@ struct domain_iommu { >> #define iommu_set_feature(d, f) set_bit(f, dom_iommu(d)->features) >> #define iommu_clear_feature(d, f) clear_bit(f, dom_iommu(d)->features) >> >> +/* Does the IOMMU pagetable need to be kept synchronized with the P2M */ > > This comment belongs to just ... > >> +#ifdef CONFIG_HAS_PASSTHROUGH >> /* Are we using the domain P2M table as its IOMMU pagetable? */ >> #define iommu_use_hap_pt(d) (IS_ENABLED(CONFIG_HVM) && \ >> dom_iommu(d)->hap_pt_share) >> >> -/* Does the IOMMU pagetable need to be kept synchronized with the P2M */ >> -#ifdef CONFIG_HAS_PASSTHROUGH >> #define need_iommu_pt_sync(d) (dom_iommu(d)->need_sync) > > ... this, not also iommu_use_hap_pt(). I’ll move that close to need_iommu_pt_sync(d) > There's a connection between the > two, but that is unrelated to what the comment says. I'm also not clear > about the need for ... > >> int iommu_do_domctl(struct xen_domctl *domctl, struct domain *d, >> XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl); >> #else >> +#define iommu_use_hap_pt(d) ({ (void)(d); false; }) >> + >> #define need_iommu_pt_sync(d) ({ (void)(d); false; }) > > ... this change, i.e. the need for a stub. Afaics there's nothing in the > description to help understanding this need. Ok, so in arch/arm/p2m.c the function p2m_set_way_flush() uses this, so I provided a stub, do you think I should provide something in the commit message to explain that or shold I try to find another way in order to don’t provide this stub? Cheers, Luca
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |