mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
Pull virtio updates from Michael Tsirkin: "Several new features here: - virtio-net is finally supported in vduse - virtio (balloon and mem) interaction with suspend is improved - vhost-scsi now handles signals better/faster And fixes, cleanups all over the place" * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost: (48 commits) virtio-pci: Check if is_avq is NULL virtio: delete vq in vp_find_vqs_msix() when request_irq() fails MAINTAINERS: add Eugenio Pérez as reviewer vhost-vdpa: Remove usage of the deprecated ida_simple_xx() API vp_vdpa: don't allocate unused msix vectors sound: virtio: drop owner assignment fuse: virtio: drop owner assignment scsi: virtio: drop owner assignment rpmsg: virtio: drop owner assignment nvdimm: virtio_pmem: drop owner assignment wifi: mac80211_hwsim: drop owner assignment vsock/virtio: drop owner assignment net: 9p: virtio: drop owner assignment net: virtio: drop owner assignment net: caif: virtio: drop owner assignment misc: nsm: drop owner assignment iommu: virtio: drop owner assignment drm/virtio: drop owner assignment gpio: virtio: drop owner assignment firmware: arm_scmi: virtio: drop owner assignment ...
This commit is contained in:
10
MAINTAINERS
10
MAINTAINERS
@@ -10654,8 +10654,10 @@ F: include/net/nl802154.h
|
||||
F: net/ieee802154/
|
||||
F: net/mac802154/
|
||||
|
||||
IFCVF VIRTIO DATA PATH ACCELERATOR
|
||||
R: Zhu Lingshan <lingshan.zhu@intel.com>
|
||||
Intel VIRTIO DATA PATH ACCELERATOR
|
||||
M: Zhu Lingshan <lingshan.zhu@intel.com>
|
||||
L: virtualization@lists.linux.dev
|
||||
S: Supported
|
||||
F: drivers/vdpa/ifcvf/
|
||||
|
||||
IFE PROTOCOL
|
||||
@@ -23746,6 +23748,7 @@ M: "Michael S. Tsirkin" <mst@redhat.com>
|
||||
M: Jason Wang <jasowang@redhat.com>
|
||||
R: Paolo Bonzini <pbonzini@redhat.com>
|
||||
R: Stefan Hajnoczi <stefanha@redhat.com>
|
||||
R: Eugenio Pérez <eperezma@redhat.com>
|
||||
L: virtualization@lists.linux.dev
|
||||
S: Maintained
|
||||
F: drivers/block/virtio_blk.c
|
||||
@@ -23764,6 +23767,7 @@ VIRTIO CORE AND NET DRIVERS
|
||||
M: "Michael S. Tsirkin" <mst@redhat.com>
|
||||
M: Jason Wang <jasowang@redhat.com>
|
||||
R: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
|
||||
R: Eugenio Pérez <eperezma@redhat.com>
|
||||
L: virtualization@lists.linux.dev
|
||||
S: Maintained
|
||||
F: Documentation/ABI/testing/sysfs-bus-vdpa
|
||||
@@ -23805,6 +23809,7 @@ VIRTIO FILE SYSTEM
|
||||
M: Vivek Goyal <vgoyal@redhat.com>
|
||||
M: Stefan Hajnoczi <stefanha@redhat.com>
|
||||
M: Miklos Szeredi <miklos@szeredi.hu>
|
||||
R: Eugenio Pérez <eperezma@redhat.com>
|
||||
L: virtualization@lists.linux.dev
|
||||
L: linux-fsdevel@vger.kernel.org
|
||||
S: Supported
|
||||
@@ -23838,6 +23843,7 @@ F: include/uapi/linux/virtio_gpu.h
|
||||
VIRTIO HOST (VHOST)
|
||||
M: "Michael S. Tsirkin" <mst@redhat.com>
|
||||
M: Jason Wang <jasowang@redhat.com>
|
||||
R: Eugenio Pérez <eperezma@redhat.com>
|
||||
L: kvm@vger.kernel.org
|
||||
L: virtualization@lists.linux.dev
|
||||
L: netdev@vger.kernel.org
|
||||
|
||||
@@ -752,7 +752,6 @@ MODULE_DEVICE_TABLE(virtio, id_table);
|
||||
|
||||
static struct virtio_driver um_pci_virtio_driver = {
|
||||
.driver.name = "virtio-pci",
|
||||
.driver.owner = THIS_MODULE,
|
||||
.id_table = id_table,
|
||||
.probe = um_pci_virtio_probe,
|
||||
.remove = um_pci_virtio_remove,
|
||||
|
||||
@@ -1658,7 +1658,6 @@ static struct virtio_driver virtio_blk = {
|
||||
.feature_table_legacy = features_legacy,
|
||||
.feature_table_size_legacy = ARRAY_SIZE(features_legacy),
|
||||
.driver.name = KBUILD_MODNAME,
|
||||
.driver.owner = THIS_MODULE,
|
||||
.id_table = id_table,
|
||||
.probe = virtblk_probe,
|
||||
.remove = virtblk_remove,
|
||||
|
||||
@@ -415,7 +415,6 @@ static const unsigned int virtbt_features[] = {
|
||||
|
||||
static struct virtio_driver virtbt_driver = {
|
||||
.driver.name = KBUILD_MODNAME,
|
||||
.driver.owner = THIS_MODULE,
|
||||
.feature_table = virtbt_features,
|
||||
.feature_table_size = ARRAY_SIZE(virtbt_features),
|
||||
.id_table = virtbt_table,
|
||||
|
||||
@@ -245,7 +245,6 @@ static const struct virtio_device_id id_table[] = {
|
||||
|
||||
static struct virtio_driver virtio_rng_driver = {
|
||||
.driver.name = KBUILD_MODNAME,
|
||||
.driver.owner = THIS_MODULE,
|
||||
.id_table = id_table,
|
||||
.probe = virtrng_probe,
|
||||
.remove = virtrng_remove,
|
||||
|
||||
@@ -2173,7 +2173,6 @@ static struct virtio_driver virtio_console = {
|
||||
.feature_table = features,
|
||||
.feature_table_size = ARRAY_SIZE(features),
|
||||
.driver.name = KBUILD_MODNAME,
|
||||
.driver.owner = THIS_MODULE,
|
||||
.id_table = id_table,
|
||||
.probe = virtcons_probe,
|
||||
.remove = virtcons_remove,
|
||||
@@ -2188,7 +2187,6 @@ static struct virtio_driver virtio_rproc_serial = {
|
||||
.feature_table = rproc_serial_features,
|
||||
.feature_table_size = ARRAY_SIZE(rproc_serial_features),
|
||||
.driver.name = "virtio_rproc_serial",
|
||||
.driver.owner = THIS_MODULE,
|
||||
.id_table = rproc_serial_id_table,
|
||||
.probe = virtcons_probe,
|
||||
.remove = virtcons_remove,
|
||||
|
||||
@@ -581,7 +581,6 @@ static const struct virtio_device_id id_table[] = {
|
||||
|
||||
static struct virtio_driver virtio_crypto_driver = {
|
||||
.driver.name = KBUILD_MODNAME,
|
||||
.driver.owner = THIS_MODULE,
|
||||
.feature_table = features,
|
||||
.feature_table_size = ARRAY_SIZE(features),
|
||||
.id_table = id_table,
|
||||
|
||||
@@ -908,7 +908,6 @@ static const struct virtio_device_id id_table[] = {
|
||||
|
||||
static struct virtio_driver virtio_scmi_driver = {
|
||||
.driver.name = "scmi-virtio",
|
||||
.driver.owner = THIS_MODULE,
|
||||
.feature_table = features,
|
||||
.feature_table_size = ARRAY_SIZE(features),
|
||||
.id_table = id_table,
|
||||
|
||||
@@ -653,7 +653,6 @@ static struct virtio_driver virtio_gpio_driver = {
|
||||
.remove = virtio_gpio_remove,
|
||||
.driver = {
|
||||
.name = KBUILD_MODNAME,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
};
|
||||
module_virtio_driver(virtio_gpio_driver);
|
||||
|
||||
@@ -154,7 +154,6 @@ static struct virtio_driver virtio_gpu_driver = {
|
||||
.feature_table = features,
|
||||
.feature_table_size = ARRAY_SIZE(features),
|
||||
.driver.name = KBUILD_MODNAME,
|
||||
.driver.owner = THIS_MODULE,
|
||||
.id_table = id_table,
|
||||
.probe = virtio_gpu_probe,
|
||||
.remove = virtio_gpu_remove,
|
||||
|
||||
@@ -1251,7 +1251,6 @@ MODULE_DEVICE_TABLE(virtio, id_table);
|
||||
|
||||
static struct virtio_driver virtio_iommu_drv = {
|
||||
.driver.name = KBUILD_MODNAME,
|
||||
.driver.owner = THIS_MODULE,
|
||||
.id_table = id_table,
|
||||
.feature_table = features,
|
||||
.feature_table_size = ARRAY_SIZE(features),
|
||||
|
||||
@@ -494,7 +494,6 @@ static struct virtio_driver virtio_nsm_driver = {
|
||||
.feature_table_legacy = 0,
|
||||
.feature_table_size_legacy = 0,
|
||||
.driver.name = KBUILD_MODNAME,
|
||||
.driver.owner = THIS_MODULE,
|
||||
.id_table = id_table,
|
||||
.probe = nsm_device_probe,
|
||||
.remove = nsm_device_remove,
|
||||
|
||||
@@ -782,7 +782,6 @@ static struct virtio_driver caif_virtio_driver = {
|
||||
.feature_table = features,
|
||||
.feature_table_size = ARRAY_SIZE(features),
|
||||
.driver.name = KBUILD_MODNAME,
|
||||
.driver.owner = THIS_MODULE,
|
||||
.id_table = id_table,
|
||||
.probe = cfv_probe,
|
||||
.remove = cfv_remove,
|
||||
|
||||
@@ -6039,7 +6039,6 @@ static struct virtio_driver virtio_net_driver = {
|
||||
.feature_table_legacy = features_legacy,
|
||||
.feature_table_size_legacy = ARRAY_SIZE(features_legacy),
|
||||
.driver.name = KBUILD_MODNAME,
|
||||
.driver.owner = THIS_MODULE,
|
||||
.id_table = id_table,
|
||||
.validate = virtnet_validate,
|
||||
.probe = virtnet_probe,
|
||||
|
||||
@@ -6678,7 +6678,6 @@ MODULE_DEVICE_TABLE(virtio, id_table);
|
||||
|
||||
static struct virtio_driver virtio_hwsim = {
|
||||
.driver.name = KBUILD_MODNAME,
|
||||
.driver.owner = THIS_MODULE,
|
||||
.id_table = id_table,
|
||||
.probe = hwsim_virtio_probe,
|
||||
.remove = hwsim_virtio_remove,
|
||||
|
||||
@@ -151,7 +151,6 @@ static struct virtio_driver virtio_pmem_driver = {
|
||||
.feature_table = features,
|
||||
.feature_table_size = ARRAY_SIZE(features),
|
||||
.driver.name = KBUILD_MODNAME,
|
||||
.driver.owner = THIS_MODULE,
|
||||
.id_table = id_table,
|
||||
.validate = virtio_pmem_validate,
|
||||
.probe = virtio_pmem_probe,
|
||||
|
||||
@@ -1053,7 +1053,6 @@ static struct virtio_driver virtio_ipc_driver = {
|
||||
.feature_table = features,
|
||||
.feature_table_size = ARRAY_SIZE(features),
|
||||
.driver.name = KBUILD_MODNAME,
|
||||
.driver.owner = THIS_MODULE,
|
||||
.id_table = id_table,
|
||||
.probe = rpmsg_probe,
|
||||
.remove = rpmsg_remove,
|
||||
|
||||
@@ -1052,7 +1052,6 @@ static struct virtio_driver virtio_scsi_driver = {
|
||||
.feature_table = features,
|
||||
.feature_table_size = ARRAY_SIZE(features),
|
||||
.driver.name = KBUILD_MODNAME,
|
||||
.driver.owner = THIS_MODULE,
|
||||
.id_table = id_table,
|
||||
.probe = virtscsi_probe,
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
|
||||
@@ -98,7 +98,7 @@ static ssize_t driver_override_show(struct device *dev,
|
||||
ssize_t len;
|
||||
|
||||
device_lock(dev);
|
||||
len = snprintf(buf, PAGE_SIZE, "%s\n", vdev->driver_override);
|
||||
len = sysfs_emit(buf, "%s\n", vdev->driver_override);
|
||||
device_unlock(dev);
|
||||
|
||||
return len;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "linux/virtio_net.h"
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/cdev.h>
|
||||
@@ -28,6 +29,7 @@
|
||||
#include <uapi/linux/virtio_config.h>
|
||||
#include <uapi/linux/virtio_ids.h>
|
||||
#include <uapi/linux/virtio_blk.h>
|
||||
#include <uapi/linux/virtio_ring.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
|
||||
#include "iova_domain.h"
|
||||
@@ -141,6 +143,7 @@ static struct workqueue_struct *vduse_irq_bound_wq;
|
||||
|
||||
static u32 allowed_device_id[] = {
|
||||
VIRTIO_ID_BLOCK,
|
||||
VIRTIO_ID_NET,
|
||||
};
|
||||
|
||||
static inline struct vduse_dev *vdpa_to_vduse(struct vdpa_device *vdpa)
|
||||
@@ -1705,13 +1708,21 @@ static bool device_is_allowed(u32 device_id)
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool features_is_valid(u64 features)
|
||||
static bool features_is_valid(struct vduse_dev_config *config)
|
||||
{
|
||||
if (!(features & (1ULL << VIRTIO_F_ACCESS_PLATFORM)))
|
||||
if (!(config->features & BIT_ULL(VIRTIO_F_ACCESS_PLATFORM)))
|
||||
return false;
|
||||
|
||||
/* Now we only support read-only configuration space */
|
||||
if (features & (1ULL << VIRTIO_BLK_F_CONFIG_WCE))
|
||||
if ((config->device_id == VIRTIO_ID_BLOCK) &&
|
||||
(config->features & BIT_ULL(VIRTIO_BLK_F_CONFIG_WCE)))
|
||||
return false;
|
||||
else if ((config->device_id == VIRTIO_ID_NET) &&
|
||||
(config->features & BIT_ULL(VIRTIO_NET_F_CTRL_VQ)))
|
||||
return false;
|
||||
|
||||
if ((config->device_id == VIRTIO_ID_NET) &&
|
||||
!(config->features & BIT_ULL(VIRTIO_F_VERSION_1)))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@@ -1738,7 +1749,7 @@ static bool vduse_validate_config(struct vduse_dev_config *config)
|
||||
if (!device_is_allowed(config->device_id))
|
||||
return false;
|
||||
|
||||
if (!features_is_valid(config->features))
|
||||
if (!features_is_valid(config))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@@ -1821,6 +1832,10 @@ static int vduse_create_dev(struct vduse_dev_config *config,
|
||||
int ret;
|
||||
struct vduse_dev *dev;
|
||||
|
||||
ret = -EPERM;
|
||||
if ((config->device_id == VIRTIO_ID_NET) && !capable(CAP_NET_ADMIN))
|
||||
goto err;
|
||||
|
||||
ret = -EEXIST;
|
||||
if (vduse_find_dev(config->name))
|
||||
goto err;
|
||||
@@ -2064,6 +2079,7 @@ static const struct vdpa_mgmtdev_ops vdpa_dev_mgmtdev_ops = {
|
||||
|
||||
static struct virtio_device_id id_table[] = {
|
||||
{ VIRTIO_ID_BLOCK, VIRTIO_DEV_ANY_ID },
|
||||
{ VIRTIO_ID_NET, VIRTIO_DEV_ANY_ID },
|
||||
{ 0 },
|
||||
};
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user