On Sun, Mar 12, 2023 at 08:01:53PM +0800, Huang Rui wrote: > Xen PVH is the paravirtualized mode and takes advantage of hardware > virtualization support when possible. It will using the hardware IOMMU > support instead of xen-swiotlb, so disable swiotlb if current domain is > Xen PVH. > > Signed-off-by: Huang Rui <ray.huang@xxxxxxx> > --- > arch/x86/kernel/pci-dma.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c > index 30bbe4abb5d6..f5c73dd18f2a 100644 > --- a/arch/x86/kernel/pci-dma.c > +++ b/arch/x86/kernel/pci-dma.c > @@ -74,6 +74,12 @@ static inline void __init pci_swiotlb_detect(void) > #ifdef CONFIG_SWIOTLB_XEN > static void __init pci_xen_swiotlb_init(void) > { > + /* Xen PVH domain won't use swiotlb */ > + if (xen_pvh_domain()) { > + x86_swiotlb_enable = false; > + return; > + } I'm very confused by this: pci_xen_swiotlb_init() is only called for PV domains, see the only caller in pci_iommu_alloc(). So this is just dead code. > + > if (!xen_initial_domain() && !x86_swiotlb_enable) > return; > x86_swiotlb_enable = true; > @@ -86,7 +92,7 @@ static void __init pci_xen_swiotlb_init(void) > > int pci_xen_swiotlb_init_late(void) > { > - if (dma_ops == &xen_swiotlb_dma_ops) > + if (xen_pvh_domain() || dma_ops == &xen_swiotlb_dma_ops) Same here, this function is only called by pcifront_connect_and_init_dma() and pcifront should never attach on a PVH domain, hence it's also dead code. Thanks, Roger.