Messages in this thread |  | | Subject | Re: [RFC PATCH 6/6] arm/xen: Assign xen-virtio DMA ops for virtio devices in Xen guests | From | Oleksandr <> | Date | Sun, 17 Apr 2022 22:20:04 +0300 |
| |
On 16.04.22 01:02, Stefano Stabellini wrote:
Hello Stefano
> On Thu, 14 Apr 2022, Oleksandr Tyshchenko wrote: >> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com> >> >> Call xen_virtio_setup_dma_ops() only for Xen-aware virtio devices >> in Xen guests if restricted access to the guest memory is enabled. >> >> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com> >> --- >> include/xen/arm/xen-ops.h | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/include/xen/arm/xen-ops.h b/include/xen/arm/xen-ops.h >> index 621da05..28b2ad3 100644 >> --- a/include/xen/arm/xen-ops.h >> +++ b/include/xen/arm/xen-ops.h >> @@ -2,12 +2,19 @@ >> #ifndef _ASM_ARM_XEN_OPS_H >> #define _ASM_ARM_XEN_OPS_H >> >> +#include <linux/virtio_config.h> >> #include <xen/swiotlb-xen.h> >> +#include <xen/xen-ops.h> >> >> static inline void xen_setup_dma_ops(struct device *dev) >> { >> if (xen_swiotlb_detect()) >> dev->dma_ops = &xen_swiotlb_dma_ops; >> + >> +#ifdef CONFIG_XEN_VIRTIO >> + if (arch_has_restricted_virtio_memory_access() && xen_is_virtio_device(dev)) >> + xen_virtio_setup_dma_ops(dev); >> +#endif > This makes sense overall.
thank you
> Considering that the swiotlb-xen case and the > virtio case are mutually exclusive, I would write it like this: > > if (arch_has_restricted_virtio_memory_access() && xen_is_virtio_device(dev)) > xen_virtio_setup_dma_ops(dev); > else if (xen_swiotlb_detect()) > dev->dma_ops = &xen_swiotlb_dma_ops;
Agree, will do
> > There is no need for #ifdef (also see other comments).
Agree, if !CONFIG_XEN_VIRTIO then xen_virtio_ are just stubs.
#ifdef CONFIG_XEN_VIRTIO void xen_virtio_setup_dma_ops(struct device *dev); bool xen_is_virtio_device(struct device *dev); #else static inline void xen_virtio_setup_dma_ops(struct device *dev) { } static inline bool xen_is_virtio_device(struct device *dev) { return false; } #endif /* CONFIG_XEN_VIRTIO */
-- Regards,
Oleksandr Tyshchenko
|  |