Commit fd502729 authored by Jason Wang's avatar Jason Wang Committed by Michael S. Tsirkin
Browse files

virtio-pci: introduce modern device module



Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
Link: https://lore.kernel.org/r/20210104065503.199631-17-jasowang@redhat.com



Including a bugfix:

virtio: don't prompt CONFIG_VIRTIO_PCI_MODERN

Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Anders Roxell <anders.roxell@linaro.org>
Cc: Guenter Roeck <linux@roeck-us.net>
Reported-by: default avatarNaresh Kamboju <naresh.kamboju@linaro.org>
Fixes: 86b87c9d858b6 ("virtio-pci: introduce modern device module")
Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Link: https://lore.kernel.org/r/20210223061905.422659-2-jasowang@redhat.com


Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent 8000a6b6
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -12,6 +12,14 @@ config ARCH_HAS_RESTRICTED_VIRTIO_MEMORY_ACCESS
	  This option is selected if the architecture may need to enforce
	  VIRTIO_F_ACCESS_PLATFORM

config VIRTIO_PCI_LIB
	tristate
	help
	  Modern PCI device implementation. This module implements the
	  basic probe and control for devices which are based on modern
	  PCI device with possible vendor specific extensions. Any
	  module that selects this module must depend on PCI.

menuconfig VIRTIO_MENU
	bool "Virtio drivers"
	default y
@@ -21,6 +29,7 @@ if VIRTIO_MENU
config VIRTIO_PCI
	tristate "PCI driver for virtio devices"
	depends on PCI
	select VIRTIO_PCI_LIB
	select VIRTIO
	help
	  This driver provides support for virtio based paravirtual device
+1 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_VIRTIO) += virtio.o virtio_ring.o
obj-$(CONFIG_VIRTIO_PCI_LIB) += virtio_pci_modern_dev.o
obj-$(CONFIG_VIRTIO_MMIO) += virtio_mmio.o
obj-$(CONFIG_VIRTIO_PCI) += virtio_pci.o
virtio_pci-y := virtio_pci_modern.o virtio_pci_common.o
+1 −26
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
#include <linux/virtio_config.h>
#include <linux/virtio_ring.h>
#include <linux/virtio_pci.h>
#include <linux/virtio_pci_modern.h>
#include <linux/highmem.h>
#include <linux/spinlock.h>

@@ -39,32 +40,6 @@ struct virtio_pci_vq_info {
	unsigned msix_vector;
};

struct virtio_pci_modern_device {
	struct pci_dev *pci_dev;

	struct virtio_pci_common_cfg __iomem *common;
	/* Device-specific data (non-legacy mode)  */
	void __iomem *device;
	/* Base of vq notifications (non-legacy mode). */
	void __iomem *notify_base;
	/* Where to read and clear interrupt */
	u8 __iomem *isr;

	/* So we can sanity-check accesses. */
	size_t notify_len;
	size_t device_len;

	/* Capability for when we need to map notifications per-vq. */
	int notify_map_cap;

	/* Multiply queue_notify_off by this value. (non-legacy mode). */
	u32 notify_offset_multiplier;

	int modern_bars;

	struct virtio_device_id id;
};

/* Our device structure */
struct virtio_pci_device {
	struct virtio_device vdev;
+0 −617

File changed.

Preview size limit exceeded, changes collapsed.

+599 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading