Re: [PATCH v2 2/5] virtio-mmio: refactor common functionality

From: Michael S. Tsirkin
Date: Tue Feb 11 2020 - 06:19:18 EST


On Mon, Feb 10, 2020 at 05:05:18PM +0800, Zha Bin wrote:
> From: Liu Jiang <gerry@xxxxxxxxxxxxxxxxx>
>
> Common functionality is refactored into virtio_mmio_common.h
> in order to MSI support in later patch set.
>
> Signed-off-by: Liu Jiang <gerry@xxxxxxxxxxxxxxxxx>
> Co-developed-by: Zha Bin <zhabin@xxxxxxxxxxxxxxxxx>
> Signed-off-by: Zha Bin <zhabin@xxxxxxxxxxxxxxxxx>
> Co-developed-by: Jing Liu <jing2.liu@xxxxxxxxxxxxxxx>
> Signed-off-by: Jing Liu <jing2.liu@xxxxxxxxxxxxxxx>
> Co-developed-by: Chao Peng <chao.p.peng@xxxxxxxxxxxxxxx>
> Signed-off-by: Chao Peng <chao.p.peng@xxxxxxxxxxxxxxx>

What does this proliferation of header files achieve?
common with what?

> ---
> drivers/virtio/virtio_mmio.c | 21 +--------------------
> drivers/virtio/virtio_mmio_common.h | 31 +++++++++++++++++++++++++++++++
> 2 files changed, 32 insertions(+), 20 deletions(-)
> create mode 100644 drivers/virtio/virtio_mmio_common.h
>
> diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
> index 1733ab97..41e1c93 100644
> --- a/drivers/virtio/virtio_mmio.c
> +++ b/drivers/virtio/virtio_mmio.c
> @@ -61,13 +61,12 @@
> #include <linux/io.h>
> #include <linux/list.h>
> #include <linux/module.h>
> -#include <linux/platform_device.h>
> #include <linux/slab.h>
> #include <linux/spinlock.h>
> -#include <linux/virtio.h>
> #include <linux/virtio_config.h>
> #include <uapi/linux/virtio_mmio.h>
> #include <linux/virtio_ring.h>
> +#include "virtio_mmio_common.h"
>
>
>
> @@ -77,24 +76,6 @@
>
>
>
> -#define to_virtio_mmio_device(_plat_dev) \
> - container_of(_plat_dev, struct virtio_mmio_device, vdev)
> -
> -struct virtio_mmio_device {
> - struct virtio_device vdev;
> - struct platform_device *pdev;
> -
> - void __iomem *base;
> - unsigned long version;
> -
> - /* a list of queues so we can dispatch IRQs */
> - spinlock_t lock;
> - struct list_head virtqueues;
> -
> - unsigned short notify_base;
> - unsigned short notify_multiplier;
> -};
> -
> struct virtio_mmio_vq_info {
> /* the actual virtqueue */
> struct virtqueue *vq;
> diff --git a/drivers/virtio/virtio_mmio_common.h b/drivers/virtio/virtio_mmio_common.h
> new file mode 100644
> index 0000000..90cb304
> --- /dev/null
> +++ b/drivers/virtio/virtio_mmio_common.h
> @@ -0,0 +1,31 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +#ifndef _DRIVERS_VIRTIO_VIRTIO_MMIO_COMMON_H
> +#define _DRIVERS_VIRTIO_VIRTIO_MMIO_COMMON_H
> +/*
> + * Virtio MMIO driver - common functionality for all device versions
> + *
> + * This module allows virtio devices to be used over a memory-mapped device.
> + */
> +
> +#include <linux/platform_device.h>
> +#include <linux/virtio.h>
> +
> +#define to_virtio_mmio_device(_plat_dev) \
> + container_of(_plat_dev, struct virtio_mmio_device, vdev)
> +
> +struct virtio_mmio_device {
> + struct virtio_device vdev;
> + struct platform_device *pdev;
> +
> + void __iomem *base;
> + unsigned long version;
> +
> + /* a list of queues so we can dispatch IRQs */
> + spinlock_t lock;
> + struct list_head virtqueues;
> +
> + unsigned short notify_base;
> + unsigned short notify_multiplier;
> +};
> +
> +#endif
> --
> 1.8.3.1