xen/virtio: Optimize the setup of "xen-grant-dma" devices
authorOleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Tue, 25 Oct 2022 16:20:03 +0000 (19:20 +0300)
committerJuergen Gross <jgross@suse.com>
Mon, 5 Dec 2022 11:59:49 +0000 (12:59 +0100)
commit035e3a4321f73c352b6408ec2153fa5bc3feb459
treeb4316270fadbeb589707275cbd607dda71a70e1d
parent76dcd734eca23168cb008912c0f69ff408905235
xen/virtio: Optimize the setup of "xen-grant-dma" devices

This is needed to avoid having to parse the same device-tree
several times for a given device.

For this to work we need to install the xen_virtio_restricted_mem_acc
callback in Arm's xen_guest_init() which is same callback as x86's
PV and HVM modes already use and remove the manual assignment in
xen_setup_dma_ops(). Also we need to split the code to initialize
backend_domid into a separate function.

Prior to current patch we parsed the device-tree three times:
1. xen_setup_dma_ops()->...->xen_is_dt_grant_dma_device()
2. xen_setup_dma_ops()->...->xen_dt_grant_init_backend_domid()
3. xen_virtio_mem_acc()->...->xen_is_dt_grant_dma_device()

With current patch we parse the device-tree only once in
xen_virtio_restricted_mem_acc()->...->xen_dt_grant_init_backend_domid()

Other benefits are:
- Not diverge from x86 when setting up Xen grant DMA ops
- Drop several global functions

Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Reviewed-by: Xenia Ragiadakou <burzalodowa@gmail.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Link: https://lore.kernel.org/r/20221025162004.8501-2-olekstysh@gmail.com
Signed-off-by: Juergen Gross <jgross@suse.com>
arch/arm/xen/enlighten.c
drivers/xen/grant-dma-ops.c
include/xen/arm/xen-ops.h
include/xen/xen-ops.h