virtio_console: Use virtio device index to generate port name
Use virtio device index for creating unique device port names. Current index allocation in virtio is based on a monotonically increasing variable "index". A better handling of this is to use device index which is allocated by ida. Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:

committed by
Rusty Russell

parent
35cdc9eb65
commit
dc18f0800f
@@ -61,9 +61,6 @@ struct ports_driver_data {
|
|||||||
/* List of all the devices we're handling */
|
/* List of all the devices we're handling */
|
||||||
struct list_head portdevs;
|
struct list_head portdevs;
|
||||||
|
|
||||||
/* Number of devices this driver is handling */
|
|
||||||
unsigned int index;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is used to keep track of the number of hvc consoles
|
* This is used to keep track of the number of hvc consoles
|
||||||
* spawned by this driver. This number is given as the first
|
* spawned by this driver. This number is given as the first
|
||||||
@@ -169,9 +166,6 @@ struct ports_device {
|
|||||||
/* Array of per-port IO virtqueues */
|
/* Array of per-port IO virtqueues */
|
||||||
struct virtqueue **in_vqs, **out_vqs;
|
struct virtqueue **in_vqs, **out_vqs;
|
||||||
|
|
||||||
/* Used for numbering devices for sysfs and debugfs */
|
|
||||||
unsigned int drv_index;
|
|
||||||
|
|
||||||
/* Major number for this device. Ports will be created as minors. */
|
/* Major number for this device. Ports will be created as minors. */
|
||||||
int chr_major;
|
int chr_major;
|
||||||
};
|
};
|
||||||
@@ -1415,7 +1409,7 @@ static int add_port(struct ports_device *portdev, u32 id)
|
|||||||
}
|
}
|
||||||
port->dev = device_create(pdrvdata.class, &port->portdev->vdev->dev,
|
port->dev = device_create(pdrvdata.class, &port->portdev->vdev->dev,
|
||||||
devt, port, "vport%up%u",
|
devt, port, "vport%up%u",
|
||||||
port->portdev->drv_index, id);
|
port->portdev->vdev->index, id);
|
||||||
if (IS_ERR(port->dev)) {
|
if (IS_ERR(port->dev)) {
|
||||||
err = PTR_ERR(port->dev);
|
err = PTR_ERR(port->dev);
|
||||||
dev_err(&port->portdev->vdev->dev,
|
dev_err(&port->portdev->vdev->dev,
|
||||||
@@ -1470,7 +1464,7 @@ static int add_port(struct ports_device *portdev, u32 id)
|
|||||||
* inspect a port's state at any time
|
* inspect a port's state at any time
|
||||||
*/
|
*/
|
||||||
sprintf(debugfs_name, "vport%up%u",
|
sprintf(debugfs_name, "vport%up%u",
|
||||||
port->portdev->drv_index, id);
|
port->portdev->vdev->index, id);
|
||||||
port->debugfs_file = debugfs_create_file(debugfs_name, 0444,
|
port->debugfs_file = debugfs_create_file(debugfs_name, 0444,
|
||||||
pdrvdata.debugfs_dir,
|
pdrvdata.debugfs_dir,
|
||||||
port,
|
port,
|
||||||
@@ -1961,16 +1955,12 @@ static int virtcons_probe(struct virtio_device *vdev)
|
|||||||
portdev->vdev = vdev;
|
portdev->vdev = vdev;
|
||||||
vdev->priv = portdev;
|
vdev->priv = portdev;
|
||||||
|
|
||||||
spin_lock_irq(&pdrvdata_lock);
|
|
||||||
portdev->drv_index = pdrvdata.index++;
|
|
||||||
spin_unlock_irq(&pdrvdata_lock);
|
|
||||||
|
|
||||||
portdev->chr_major = register_chrdev(0, "virtio-portsdev",
|
portdev->chr_major = register_chrdev(0, "virtio-portsdev",
|
||||||
&portdev_fops);
|
&portdev_fops);
|
||||||
if (portdev->chr_major < 0) {
|
if (portdev->chr_major < 0) {
|
||||||
dev_err(&vdev->dev,
|
dev_err(&vdev->dev,
|
||||||
"Error %d registering chrdev for device %u\n",
|
"Error %d registering chrdev for device %u\n",
|
||||||
portdev->chr_major, portdev->drv_index);
|
portdev->chr_major, vdev->index);
|
||||||
err = portdev->chr_major;
|
err = portdev->chr_major;
|
||||||
goto free;
|
goto free;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user