On Fri, 26 Apr 2019 20:32:44 +0200
Halil Pasic <pa...@linux.ibm.com> wrote:

> Before virtio-ccw could get away with not using DMA API for the pieces of
> memory it does ccw I/O with. With protected virtualization this has to
> change, since the hypervisor needs to read and sometimes also write these
> pieces of memory.
> 
> The hypervisor is supposed to poke the classic notifiers, if these are
> used, out of band with regards to ccw I/O. So these need to be allocated
> as DMA memory (which is shared memory for protected virtualization
> guests).
> 
> Let us factor out everything from struct virtio_ccw_device that needs to
> be DMA memory in a satellite that is allocated as such.
> 
> Note: The control blocks of I/O instructions do not need to be shared.
> These are marshalled by the ultravisor.
> 
> Signed-off-by: Halil Pasic <pa...@linux.ibm.com>
> ---
>  drivers/s390/virtio/virtio_ccw.c | 177 
> +++++++++++++++++++++------------------
>  1 file changed, 96 insertions(+), 81 deletions(-)
> 

> @@ -176,6 +180,22 @@ static struct virtio_ccw_device *to_vc_device(struct 
> virtio_device *vdev)
>       return container_of(vdev, struct virtio_ccw_device, vdev);
>  }
>  
> +static inline void *__vc_dma_alloc(struct virtio_device *vdev, size_t size)
> +{
> +     return ccw_device_dma_zalloc(to_vc_device(vdev)->cdev, size);
> +}
> +
> +static inline void __vc_dma_free(struct virtio_device *vdev, size_t size,
> +                              void *cpu_addr)
> +{
> +     return ccw_device_dma_free(to_vc_device(vdev)->cdev, cpu_addr, size);
> +}

Hm, why do these use leading underscores?

Also, maybe make the _free function safe for NULL to simplify the
cleanup paths?


> +
> +#define vc_dma_alloc_struct(vdev, ptr) \
> +     ({ptr = __vc_dma_alloc(vdev, sizeof(*(ptr))); })
> +#define vc_dma_free_struct(vdev, ptr) \
> +     __vc_dma_free(vdev, sizeof(*(ptr)), (ptr))

I find these a bit ugly... does adding a wrapper help that much?

> +
>  static void drop_airq_indicator(struct virtqueue *vq, struct airq_info *info)
>  {
>       unsigned long i, flags;
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to