On Fri, Jul 07, 2023 at 10:00:51AM +0100, Julien Grall wrote: > On 07/07/2023 02:47, Stewart Hildebrand wrote: > > Note that CONFIG_HAS_VPCI_GUEST_SUPPORT is not currently used in the > > upstream > > code base. It will be used by the vPCI series [1]. This patch is intended > > to be > > merged as part of the vPCI series. > > > > v1->v2: > > * new patch > > --- > > xen/arch/arm/Kconfig | 1 + > > xen/arch/arm/include/asm/domain.h | 2 +- > > 2 files changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig > > index 4e0cc421ad48..75dfa2f5a82d 100644 > > --- a/xen/arch/arm/Kconfig > > +++ b/xen/arch/arm/Kconfig > > @@ -195,6 +195,7 @@ config PCI_PASSTHROUGH > > depends on ARM_64 > > select HAS_PCI > > select HAS_VPCI > > + select HAS_VPCI_GUEST_SUPPORT > > default n > > help > > This option enables PCI device passthrough > > diff --git a/xen/arch/arm/include/asm/domain.h > > b/xen/arch/arm/include/asm/domain.h > > index 1a13965a26b8..6e016b00bae1 100644 > > --- a/xen/arch/arm/include/asm/domain.h > > +++ b/xen/arch/arm/include/asm/domain.h > > @@ -298,7 +298,7 @@ static inline void arch_vcpu_block(struct vcpu *v) {} > > #define arch_vm_assist_valid_mask(d) (1UL << > > VMASST_TYPE_runstate_update_flag) > > -#define has_vpci(d) ({ IS_ENABLED(CONFIG_HAS_VPCI) && > > is_hardware_domain(d); }) > > +#define has_vpci(d) ({ (void)(d); IS_ENABLED(CONFIG_HAS_VPCI); }) > > As I mentioned in the previous patch, wouldn't this enable vPCI > unconditionally for all the domain? Shouldn't this be instead an optional > feature which would be selected by the toolstack?
I do think so, at least on x86 we signal whether vPCI should be enabled for a domain using xen_arch_domainconfig at domain creation. Ideally we would like to do this on a per-device basis for domUs, so we should consider adding a new flag to xen_domctl_assign_device in order to signal whether the assigned device should use vPCI. Thanks, Roger.