* Re: [PATCH] virtio: remove virtio-pci root device
[not found] ` <virtio-pci-noroot@mdm.bga.com>
@ 2011-01-07 10:24 ` Michael S. Tsirkin
2011-01-09 15:18 ` Michael S. Tsirkin
` (4 subsequent siblings)
5 siblings, 0 replies; 24+ messages in thread
From: Michael S. Tsirkin @ 2011-01-07 10:24 UTC (permalink / raw)
To: Milton Miller
Cc: Anthony Liguori, Jamie Lokier, Thomas Weber, linux-kernel,
virtualization
On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> We sometimes need to map between the virtio device and
> the given pci device. One such use is OS installer that
> gets the boot pci device from BIOS and needs to
> find the relevant block device. Since it can't,
> installation fails.
>
> Instead of creating a top-level devices/virtio-pci
> directory, create each device under the corresponding
> pci device node. Symlinks to all virtio-pci
> devices can be found under the pci driver link in
> bus/pci/drivers/virtio-pci/devices, and all virtio
> devices under drivers/bus/virtio/devices.
>
> Signed-off-by: Milton Miller <miltonm@bga.com>
Thanks! I'll try this next week.
Some comments from looking at code:
- This will break apps that look for devices in the old virtio-pci directory.
There are not likely to be many of these,
but better be careful. Let's create a compatibility
option to put symlinks there?
Could be under a compile time option with a deprecation plan.
- This will create ./virtio0 under the pci device, right?
But if the device is then renamed, the installer
won't be able to find it, right?
And need to do pattern matching to find the name is a bit ugly.
Could we create ./virtio/virtio0 under the pci device?
Then one can open virtio directory and then the only file there.
> ---
>
> This is an alternative to the patch by Michael S. Tsirkin
> titled "virtio-pci: add softlinks between virtio and pci"
> https://patchwork.kernel.org/patch/454581/
>
> It creates simpler code, uses less memory, and should
> be even easier use by the installer as it won't have to
> know a virtio symlink to follow (just follow none).
>
> Compile tested only as I don't have kvm setup.
>
>
> diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
> index ef8d9d5..4fb5b2b 100644
> --- a/drivers/virtio/virtio_pci.c
> +++ b/drivers/virtio/virtio_pci.c
> @@ -96,11 +96,6 @@ static struct pci_device_id virtio_pci_id_table[] = {
>
> MODULE_DEVICE_TABLE(pci, virtio_pci_id_table);
>
> -/* A PCI device has it's own struct device and so does a virtio device so
> - * we create a place for the virtio devices to show up in sysfs. I think it
> - * would make more sense for virtio to not insist on having it's own device. */
> -static struct device *virtio_pci_root;
> -
> /* Convert a generic virtio device to our structure */
> static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev)
> {
> @@ -629,7 +624,7 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,
> if (vp_dev == NULL)
> return -ENOMEM;
>
> - vp_dev->vdev.dev.parent = virtio_pci_root;
> + vp_dev->vdev.dev.parent = &pci_dev->dev;
> vp_dev->vdev.dev.release = virtio_pci_release_dev;
> vp_dev->vdev.config = &virtio_pci_config_ops;
> vp_dev->pci_dev = pci_dev;
> @@ -717,17 +712,7 @@ static struct pci_driver virtio_pci_driver = {
>
> static int __init virtio_pci_init(void)
> {
> - int err;
> -
> - virtio_pci_root = root_device_register("virtio-pci");
> - if (IS_ERR(virtio_pci_root))
> - return PTR_ERR(virtio_pci_root);
> -
> - err = pci_register_driver(&virtio_pci_driver);
> - if (err)
> - root_device_unregister(virtio_pci_root);
> -
> - return err;
> + return pci_register_driver(&virtio_pci_driver);
> }
>
> module_init(virtio_pci_init);
> @@ -735,7 +720,6 @@ module_init(virtio_pci_init);
> static void __exit virtio_pci_exit(void)
> {
> pci_unregister_driver(&virtio_pci_driver);
> - root_device_unregister(virtio_pci_root);
> }
>
> module_exit(virtio_pci_exit);
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] virtio: remove virtio-pci root device
[not found] ` <virtio-pci-noroot@mdm.bga.com>
2011-01-07 10:24 ` Michael S. Tsirkin
@ 2011-01-09 15:18 ` Michael S. Tsirkin
[not found] ` <20110109151821.GA9063@redhat.com>
` (3 subsequent siblings)
5 siblings, 0 replies; 24+ messages in thread
From: Michael S. Tsirkin @ 2011-01-09 15:18 UTC (permalink / raw)
To: Milton Miller
Cc: Anthony Liguori, Jamie Lokier, Thomas Weber, linux-kernel,
virtualization
On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> We sometimes need to map between the virtio device and
> the given pci device. One such use is OS installer that
> gets the boot pci device from BIOS and needs to
> find the relevant block device. Since it can't,
> installation fails.
>
> Instead of creating a top-level devices/virtio-pci
> directory, create each device under the corresponding
> pci device node. Symlinks to all virtio-pci
> devices can be found under the pci driver link in
> bus/pci/drivers/virtio-pci/devices, and all virtio
> devices under drivers/bus/virtio/devices.
>
> Signed-off-by: Milton Miller <miltonm@bga.com>
OK, this works fine for me. I played with options to add compat
softlinks under devices/virtio-pci but we still don't get exactly the
same layout and since I don't think anyone actually uses them, it's
probably ok to just to the simple thing.
Tested/Acked-by: Michael S. Tsirkin <mst@redhat.com>
Rusty, since this help fix at least one user, any chance this can be put
in 2.6.38? OK to backport to -stable?
Gleb, could you try this out too?
> ---
>
> This is an alternative to the patch by Michael S. Tsirkin
> titled "virtio-pci: add softlinks between virtio and pci"
> https://patchwork.kernel.org/patch/454581/
>
> It creates simpler code, uses less memory, and should
> be even easier use by the installer as it won't have to
> know a virtio symlink to follow (just follow none).
>
> Compile tested only as I don't have kvm setup.
>
>
> diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
> index ef8d9d5..4fb5b2b 100644
> --- a/drivers/virtio/virtio_pci.c
> +++ b/drivers/virtio/virtio_pci.c
> @@ -96,11 +96,6 @@ static struct pci_device_id virtio_pci_id_table[] = {
>
> MODULE_DEVICE_TABLE(pci, virtio_pci_id_table);
>
> -/* A PCI device has it's own struct device and so does a virtio device so
> - * we create a place for the virtio devices to show up in sysfs. I think it
> - * would make more sense for virtio to not insist on having it's own device. */
> -static struct device *virtio_pci_root;
> -
> /* Convert a generic virtio device to our structure */
> static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev)
> {
> @@ -629,7 +624,7 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,
> if (vp_dev == NULL)
> return -ENOMEM;
>
> - vp_dev->vdev.dev.parent = virtio_pci_root;
> + vp_dev->vdev.dev.parent = &pci_dev->dev;
> vp_dev->vdev.dev.release = virtio_pci_release_dev;
> vp_dev->vdev.config = &virtio_pci_config_ops;
> vp_dev->pci_dev = pci_dev;
> @@ -717,17 +712,7 @@ static struct pci_driver virtio_pci_driver = {
>
> static int __init virtio_pci_init(void)
> {
> - int err;
> -
> - virtio_pci_root = root_device_register("virtio-pci");
> - if (IS_ERR(virtio_pci_root))
> - return PTR_ERR(virtio_pci_root);
> -
> - err = pci_register_driver(&virtio_pci_driver);
> - if (err)
> - root_device_unregister(virtio_pci_root);
> -
> - return err;
> + return pci_register_driver(&virtio_pci_driver);
> }
>
> module_init(virtio_pci_init);
> @@ -735,7 +720,6 @@ module_init(virtio_pci_init);
> static void __exit virtio_pci_exit(void)
> {
> pci_unregister_driver(&virtio_pci_driver);
> - root_device_unregister(virtio_pci_root);
> }
>
> module_exit(virtio_pci_exit);
^ permalink raw reply [flat|nested] 24+ messages in thread
[parent not found: <20110109151821.GA9063@redhat.com>]
* Re: [PATCH] virtio: remove virtio-pci root device
[not found] ` <20110109151821.GA9063@redhat.com>
@ 2011-01-10 11:18 ` Gleb Natapov
[not found] ` <20110110111859.GC2202@redhat.com>
1 sibling, 0 replies; 24+ messages in thread
From: Gleb Natapov @ 2011-01-10 11:18 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Anthony Liguori, Jamie Lokier, Thomas Weber, linux-kernel,
Milton Miller, virtualization
On Sun, Jan 09, 2011 at 05:18:21PM +0200, Michael S. Tsirkin wrote:
> On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> > We sometimes need to map between the virtio device and
> > the given pci device. One such use is OS installer that
> > gets the boot pci device from BIOS and needs to
> > find the relevant block device. Since it can't,
> > installation fails.
> >
> > Instead of creating a top-level devices/virtio-pci
> > directory, create each device under the corresponding
> > pci device node. Symlinks to all virtio-pci
> > devices can be found under the pci driver link in
> > bus/pci/drivers/virtio-pci/devices, and all virtio
> > devices under drivers/bus/virtio/devices.
> >
> > Signed-off-by: Milton Miller <miltonm@bga.com>
>
> OK, this works fine for me. I played with options to add compat
> softlinks under devices/virtio-pci but we still don't get exactly the
> same layout and since I don't think anyone actually uses them, it's
> probably ok to just to the simple thing.
>
> Tested/Acked-by: Michael S. Tsirkin <mst@redhat.com>
>
> Rusty, since this help fix at least one user, any chance this can be put
> in 2.6.38? OK to backport to -stable?
>
> Gleb, could you try this out too?
>
With this patch if I have 3 virtio disks for a VM I get:
/sys/devices/pci0000:00/0000:00:04.0/virtio0/block/vda
/sys/devices/pci0000:00/0000:00:05.0/virtio1/block/vdb
/sys/devices/pci0000:00/0000:00:06.0/virtio2/block/vdc
Number after virtio has no much sense. It either should be dropped at all
or be always zero in case we will support more then one virtio controller
per pci card. In that case each virtio controller will have directories
virtio0/virtio1/virtio2... under same pci device directory.
> > ---
> >
> > This is an alternative to the patch by Michael S. Tsirkin
> > titled "virtio-pci: add softlinks between virtio and pci"
> > https://patchwork.kernel.org/patch/454581/
> >
> > It creates simpler code, uses less memory, and should
> > be even easier use by the installer as it won't have to
> > know a virtio symlink to follow (just follow none).
> >
> > Compile tested only as I don't have kvm setup.
> >
> >
> > diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
> > index ef8d9d5..4fb5b2b 100644
> > --- a/drivers/virtio/virtio_pci.c
> > +++ b/drivers/virtio/virtio_pci.c
> > @@ -96,11 +96,6 @@ static struct pci_device_id virtio_pci_id_table[] = {
> >
> > MODULE_DEVICE_TABLE(pci, virtio_pci_id_table);
> >
> > -/* A PCI device has it's own struct device and so does a virtio device so
> > - * we create a place for the virtio devices to show up in sysfs. I think it
> > - * would make more sense for virtio to not insist on having it's own device. */
> > -static struct device *virtio_pci_root;
> > -
> > /* Convert a generic virtio device to our structure */
> > static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev)
> > {
> > @@ -629,7 +624,7 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,
> > if (vp_dev == NULL)
> > return -ENOMEM;
> >
> > - vp_dev->vdev.dev.parent = virtio_pci_root;
> > + vp_dev->vdev.dev.parent = &pci_dev->dev;
> > vp_dev->vdev.dev.release = virtio_pci_release_dev;
> > vp_dev->vdev.config = &virtio_pci_config_ops;
> > vp_dev->pci_dev = pci_dev;
> > @@ -717,17 +712,7 @@ static struct pci_driver virtio_pci_driver = {
> >
> > static int __init virtio_pci_init(void)
> > {
> > - int err;
> > -
> > - virtio_pci_root = root_device_register("virtio-pci");
> > - if (IS_ERR(virtio_pci_root))
> > - return PTR_ERR(virtio_pci_root);
> > -
> > - err = pci_register_driver(&virtio_pci_driver);
> > - if (err)
> > - root_device_unregister(virtio_pci_root);
> > -
> > - return err;
> > + return pci_register_driver(&virtio_pci_driver);
> > }
> >
> > module_init(virtio_pci_init);
> > @@ -735,7 +720,6 @@ module_init(virtio_pci_init);
> > static void __exit virtio_pci_exit(void)
> > {
> > pci_unregister_driver(&virtio_pci_driver);
> > - root_device_unregister(virtio_pci_root);
> > }
> >
> > module_exit(virtio_pci_exit);
--
Gleb.
^ permalink raw reply [flat|nested] 24+ messages in thread
[parent not found: <20110110111859.GC2202@redhat.com>]
* Re: [PATCH] virtio: remove virtio-pci root device
[not found] ` <20110110111859.GC2202@redhat.com>
@ 2011-01-10 11:22 ` Michael S. Tsirkin
[not found] ` <20110110112205.GC12065@redhat.com>
1 sibling, 0 replies; 24+ messages in thread
From: Michael S. Tsirkin @ 2011-01-10 11:22 UTC (permalink / raw)
To: Gleb Natapov
Cc: Anthony Liguori, Jamie Lokier, Thomas Weber, linux-kernel,
Milton Miller, virtualization
On Mon, Jan 10, 2011 at 01:18:59PM +0200, Gleb Natapov wrote:
> On Sun, Jan 09, 2011 at 05:18:21PM +0200, Michael S. Tsirkin wrote:
> > On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> > > We sometimes need to map between the virtio device and
> > > the given pci device. One such use is OS installer that
> > > gets the boot pci device from BIOS and needs to
> > > find the relevant block device. Since it can't,
> > > installation fails.
> > >
> > > Instead of creating a top-level devices/virtio-pci
> > > directory, create each device under the corresponding
> > > pci device node. Symlinks to all virtio-pci
> > > devices can be found under the pci driver link in
> > > bus/pci/drivers/virtio-pci/devices, and all virtio
> > > devices under drivers/bus/virtio/devices.
> > >
> > > Signed-off-by: Milton Miller <miltonm@bga.com>
> >
> > OK, this works fine for me. I played with options to add compat
> > softlinks under devices/virtio-pci but we still don't get exactly the
> > same layout and since I don't think anyone actually uses them, it's
> > probably ok to just to the simple thing.
> >
> > Tested/Acked-by: Michael S. Tsirkin <mst@redhat.com>
> >
> > Rusty, since this help fix at least one user, any chance this can be put
> > in 2.6.38? OK to backport to -stable?
> >
> > Gleb, could you try this out too?
> >
> With this patch if I have 3 virtio disks for a VM I get:
> /sys/devices/pci0000:00/0000:00:04.0/virtio0/block/vda
> /sys/devices/pci0000:00/0000:00:05.0/virtio1/block/vdb
> /sys/devices/pci0000:00/0000:00:06.0/virtio2/block/vdc
>
> Number after virtio has no much sense. It either should be dropped at all
> or be always zero in case we will support more then one virtio controller
> per pci card. In that case each virtio controller will have directories
> virtio0/virtio1/virtio2... under same pci device directory.
Yes. But this is the bus name. It must be unique - all devices
also appear under /sys/bus/virtio/devices.
> > > ---
> > >
> > > This is an alternative to the patch by Michael S. Tsirkin
> > > titled "virtio-pci: add softlinks between virtio and pci"
> > > https://patchwork.kernel.org/patch/454581/
> > >
> > > It creates simpler code, uses less memory, and should
> > > be even easier use by the installer as it won't have to
> > > know a virtio symlink to follow (just follow none).
> > >
> > > Compile tested only as I don't have kvm setup.
> > >
> > >
> > > diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
> > > index ef8d9d5..4fb5b2b 100644
> > > --- a/drivers/virtio/virtio_pci.c
> > > +++ b/drivers/virtio/virtio_pci.c
> > > @@ -96,11 +96,6 @@ static struct pci_device_id virtio_pci_id_table[] = {
> > >
> > > MODULE_DEVICE_TABLE(pci, virtio_pci_id_table);
> > >
> > > -/* A PCI device has it's own struct device and so does a virtio device so
> > > - * we create a place for the virtio devices to show up in sysfs. I think it
> > > - * would make more sense for virtio to not insist on having it's own device. */
> > > -static struct device *virtio_pci_root;
> > > -
> > > /* Convert a generic virtio device to our structure */
> > > static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev)
> > > {
> > > @@ -629,7 +624,7 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,
> > > if (vp_dev == NULL)
> > > return -ENOMEM;
> > >
> > > - vp_dev->vdev.dev.parent = virtio_pci_root;
> > > + vp_dev->vdev.dev.parent = &pci_dev->dev;
> > > vp_dev->vdev.dev.release = virtio_pci_release_dev;
> > > vp_dev->vdev.config = &virtio_pci_config_ops;
> > > vp_dev->pci_dev = pci_dev;
> > > @@ -717,17 +712,7 @@ static struct pci_driver virtio_pci_driver = {
> > >
> > > static int __init virtio_pci_init(void)
> > > {
> > > - int err;
> > > -
> > > - virtio_pci_root = root_device_register("virtio-pci");
> > > - if (IS_ERR(virtio_pci_root))
> > > - return PTR_ERR(virtio_pci_root);
> > > -
> > > - err = pci_register_driver(&virtio_pci_driver);
> > > - if (err)
> > > - root_device_unregister(virtio_pci_root);
> > > -
> > > - return err;
> > > + return pci_register_driver(&virtio_pci_driver);
> > > }
> > >
> > > module_init(virtio_pci_init);
> > > @@ -735,7 +720,6 @@ module_init(virtio_pci_init);
> > > static void __exit virtio_pci_exit(void)
> > > {
> > > pci_unregister_driver(&virtio_pci_driver);
> > > - root_device_unregister(virtio_pci_root);
> > > }
> > >
> > > module_exit(virtio_pci_exit);
>
> --
> Gleb.
^ permalink raw reply [flat|nested] 24+ messages in thread
[parent not found: <20110110112205.GC12065@redhat.com>]
* Re: [PATCH] virtio: remove virtio-pci root device
[not found] ` <20110110112205.GC12065@redhat.com>
@ 2011-01-10 11:27 ` Gleb Natapov
[not found] ` <20110110112739.GD2202@redhat.com>
1 sibling, 0 replies; 24+ messages in thread
From: Gleb Natapov @ 2011-01-10 11:27 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Anthony Liguori, Jamie Lokier, Thomas Weber, linux-kernel,
Milton Miller, virtualization
On Mon, Jan 10, 2011 at 01:22:05PM +0200, Michael S. Tsirkin wrote:
> On Mon, Jan 10, 2011 at 01:18:59PM +0200, Gleb Natapov wrote:
> > On Sun, Jan 09, 2011 at 05:18:21PM +0200, Michael S. Tsirkin wrote:
> > > On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> > > > We sometimes need to map between the virtio device and
> > > > the given pci device. One such use is OS installer that
> > > > gets the boot pci device from BIOS and needs to
> > > > find the relevant block device. Since it can't,
> > > > installation fails.
> > > >
> > > > Instead of creating a top-level devices/virtio-pci
> > > > directory, create each device under the corresponding
> > > > pci device node. Symlinks to all virtio-pci
> > > > devices can be found under the pci driver link in
> > > > bus/pci/drivers/virtio-pci/devices, and all virtio
> > > > devices under drivers/bus/virtio/devices.
> > > >
> > > > Signed-off-by: Milton Miller <miltonm@bga.com>
> > >
> > > OK, this works fine for me. I played with options to add compat
> > > softlinks under devices/virtio-pci but we still don't get exactly the
> > > same layout and since I don't think anyone actually uses them, it's
> > > probably ok to just to the simple thing.
> > >
> > > Tested/Acked-by: Michael S. Tsirkin <mst@redhat.com>
> > >
> > > Rusty, since this help fix at least one user, any chance this can be put
> > > in 2.6.38? OK to backport to -stable?
> > >
> > > Gleb, could you try this out too?
> > >
> > With this patch if I have 3 virtio disks for a VM I get:
> > /sys/devices/pci0000:00/0000:00:04.0/virtio0/block/vda
> > /sys/devices/pci0000:00/0000:00:05.0/virtio1/block/vdb
> > /sys/devices/pci0000:00/0000:00:06.0/virtio2/block/vdc
> >
> > Number after virtio has no much sense. It either should be dropped at all
> > or be always zero in case we will support more then one virtio controller
> > per pci card. In that case each virtio controller will have directories
> > virtio0/virtio1/virtio2... under same pci device directory.
>
> Yes. But this is the bus name. It must be unique - all devices
> also appear under /sys/bus/virtio/devices.
>
It is very strange king of bus that is spread over several PCI devices :)
It doesn't make much sense IMHO, but I can leave with it.
> > > > ---
> > > >
> > > > This is an alternative to the patch by Michael S. Tsirkin
> > > > titled "virtio-pci: add softlinks between virtio and pci"
> > > > https://patchwork.kernel.org/patch/454581/
> > > >
> > > > It creates simpler code, uses less memory, and should
> > > > be even easier use by the installer as it won't have to
> > > > know a virtio symlink to follow (just follow none).
> > > >
> > > > Compile tested only as I don't have kvm setup.
> > > >
> > > >
> > > > diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
> > > > index ef8d9d5..4fb5b2b 100644
> > > > --- a/drivers/virtio/virtio_pci.c
> > > > +++ b/drivers/virtio/virtio_pci.c
> > > > @@ -96,11 +96,6 @@ static struct pci_device_id virtio_pci_id_table[] = {
> > > >
> > > > MODULE_DEVICE_TABLE(pci, virtio_pci_id_table);
> > > >
> > > > -/* A PCI device has it's own struct device and so does a virtio device so
> > > > - * we create a place for the virtio devices to show up in sysfs. I think it
> > > > - * would make more sense for virtio to not insist on having it's own device. */
> > > > -static struct device *virtio_pci_root;
> > > > -
> > > > /* Convert a generic virtio device to our structure */
> > > > static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev)
> > > > {
> > > > @@ -629,7 +624,7 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,
> > > > if (vp_dev == NULL)
> > > > return -ENOMEM;
> > > >
> > > > - vp_dev->vdev.dev.parent = virtio_pci_root;
> > > > + vp_dev->vdev.dev.parent = &pci_dev->dev;
> > > > vp_dev->vdev.dev.release = virtio_pci_release_dev;
> > > > vp_dev->vdev.config = &virtio_pci_config_ops;
> > > > vp_dev->pci_dev = pci_dev;
> > > > @@ -717,17 +712,7 @@ static struct pci_driver virtio_pci_driver = {
> > > >
> > > > static int __init virtio_pci_init(void)
> > > > {
> > > > - int err;
> > > > -
> > > > - virtio_pci_root = root_device_register("virtio-pci");
> > > > - if (IS_ERR(virtio_pci_root))
> > > > - return PTR_ERR(virtio_pci_root);
> > > > -
> > > > - err = pci_register_driver(&virtio_pci_driver);
> > > > - if (err)
> > > > - root_device_unregister(virtio_pci_root);
> > > > -
> > > > - return err;
> > > > + return pci_register_driver(&virtio_pci_driver);
> > > > }
> > > >
> > > > module_init(virtio_pci_init);
> > > > @@ -735,7 +720,6 @@ module_init(virtio_pci_init);
> > > > static void __exit virtio_pci_exit(void)
> > > > {
> > > > pci_unregister_driver(&virtio_pci_driver);
> > > > - root_device_unregister(virtio_pci_root);
> > > > }
> > > >
> > > > module_exit(virtio_pci_exit);
> >
> > --
> > Gleb.
--
Gleb.
^ permalink raw reply [flat|nested] 24+ messages in thread
[parent not found: <20110110112739.GD2202@redhat.com>]
* Re: [PATCH] virtio: remove virtio-pci root device
[not found] ` <20110110112739.GD2202@redhat.com>
@ 2011-01-10 11:42 ` Gleb Natapov
2011-01-10 12:08 ` Michael S. Tsirkin
[not found] ` <20110110120808.GA15554@redhat.com>
0 siblings, 2 replies; 24+ messages in thread
From: Gleb Natapov @ 2011-01-10 11:42 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Anthony Liguori, Jamie Lokier, Thomas Weber, linux-kernel,
Milton Miller, virtualization
On Mon, Jan 10, 2011 at 01:27:39PM +0200, Gleb Natapov wrote:
> On Mon, Jan 10, 2011 at 01:22:05PM +0200, Michael S. Tsirkin wrote:
> > On Mon, Jan 10, 2011 at 01:18:59PM +0200, Gleb Natapov wrote:
> > > On Sun, Jan 09, 2011 at 05:18:21PM +0200, Michael S. Tsirkin wrote:
> > > > On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> > > > > We sometimes need to map between the virtio device and
> > > > > the given pci device. One such use is OS installer that
> > > > > gets the boot pci device from BIOS and needs to
> > > > > find the relevant block device. Since it can't,
> > > > > installation fails.
> > > > >
> > > > > Instead of creating a top-level devices/virtio-pci
> > > > > directory, create each device under the corresponding
> > > > > pci device node. Symlinks to all virtio-pci
> > > > > devices can be found under the pci driver link in
> > > > > bus/pci/drivers/virtio-pci/devices, and all virtio
> > > > > devices under drivers/bus/virtio/devices.
> > > > >
> > > > > Signed-off-by: Milton Miller <miltonm@bga.com>
> > > >
> > > > OK, this works fine for me. I played with options to add compat
> > > > softlinks under devices/virtio-pci but we still don't get exactly the
> > > > same layout and since I don't think anyone actually uses them, it's
> > > > probably ok to just to the simple thing.
> > > >
> > > > Tested/Acked-by: Michael S. Tsirkin <mst@redhat.com>
> > > >
> > > > Rusty, since this help fix at least one user, any chance this can be put
> > > > in 2.6.38? OK to backport to -stable?
> > > >
> > > > Gleb, could you try this out too?
> > > >
> > > With this patch if I have 3 virtio disks for a VM I get:
> > > /sys/devices/pci0000:00/0000:00:04.0/virtio0/block/vda
> > > /sys/devices/pci0000:00/0000:00:05.0/virtio1/block/vdb
> > > /sys/devices/pci0000:00/0000:00:06.0/virtio2/block/vdc
> > >
> > > Number after virtio has no much sense. It either should be dropped at all
> > > or be always zero in case we will support more then one virtio controller
> > > per pci card. In that case each virtio controller will have directories
> > > virtio0/virtio1/virtio2... under same pci device directory.
> >
> > Yes. But this is the bus name. It must be unique - all devices
> > also appear under /sys/bus/virtio/devices.
> >
> It is very strange king of bus that is spread over several PCI devices :)
> It doesn't make much sense IMHO, but I can leave with it.
>
I can't "leave" with it, but I can "live" with it.
--
Gleb.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] virtio: remove virtio-pci root device
2011-01-10 11:42 ` Gleb Natapov
@ 2011-01-10 12:08 ` Michael S. Tsirkin
[not found] ` <20110110120808.GA15554@redhat.com>
1 sibling, 0 replies; 24+ messages in thread
From: Michael S. Tsirkin @ 2011-01-10 12:08 UTC (permalink / raw)
To: Gleb Natapov
Cc: Anthony Liguori, Jamie Lokier, Thomas Weber, linux-kernel,
Milton Miller, virtualization
On Mon, Jan 10, 2011 at 01:42:19PM +0200, Gleb Natapov wrote:
> On Mon, Jan 10, 2011 at 01:27:39PM +0200, Gleb Natapov wrote:
> > On Mon, Jan 10, 2011 at 01:22:05PM +0200, Michael S. Tsirkin wrote:
> > > On Mon, Jan 10, 2011 at 01:18:59PM +0200, Gleb Natapov wrote:
> > > > On Sun, Jan 09, 2011 at 05:18:21PM +0200, Michael S. Tsirkin wrote:
> > > > > On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> > > > > > We sometimes need to map between the virtio device and
> > > > > > the given pci device. One such use is OS installer that
> > > > > > gets the boot pci device from BIOS and needs to
> > > > > > find the relevant block device. Since it can't,
> > > > > > installation fails.
> > > > > >
> > > > > > Instead of creating a top-level devices/virtio-pci
> > > > > > directory, create each device under the corresponding
> > > > > > pci device node. Symlinks to all virtio-pci
> > > > > > devices can be found under the pci driver link in
> > > > > > bus/pci/drivers/virtio-pci/devices, and all virtio
> > > > > > devices under drivers/bus/virtio/devices.
> > > > > >
> > > > > > Signed-off-by: Milton Miller <miltonm@bga.com>
> > > > >
> > > > > OK, this works fine for me. I played with options to add compat
> > > > > softlinks under devices/virtio-pci but we still don't get exactly the
> > > > > same layout and since I don't think anyone actually uses them, it's
> > > > > probably ok to just to the simple thing.
> > > > >
> > > > > Tested/Acked-by: Michael S. Tsirkin <mst@redhat.com>
> > > > >
> > > > > Rusty, since this help fix at least one user, any chance this can be put
> > > > > in 2.6.38? OK to backport to -stable?
> > > > >
> > > > > Gleb, could you try this out too?
> > > > >
> > > > With this patch if I have 3 virtio disks for a VM I get:
> > > > /sys/devices/pci0000:00/0000:00:04.0/virtio0/block/vda
> > > > /sys/devices/pci0000:00/0000:00:05.0/virtio1/block/vdb
> > > > /sys/devices/pci0000:00/0000:00:06.0/virtio2/block/vdc
> > > >
> > > > Number after virtio has no much sense. It either should be dropped at all
> > > > or be always zero in case we will support more then one virtio controller
> > > > per pci card. In that case each virtio controller will have directories
> > > > virtio0/virtio1/virtio2... under same pci device directory.
> > >
> > > Yes. But this is the bus name. It must be unique - all devices
> > > also appear under /sys/bus/virtio/devices.
> > >
> > It is very strange king of bus that is spread over several PCI devices :)
> > It doesn't make much sense IMHO, but I can leave with it.
> >
> I can't "leave" with it, but I can "live" with it.
The virtio bus is an attempt to make as many applications as
possible work transparently on any virtio system,
be it lguest, s390 or pci. Arbitrary IDs is just a hint to the
applications 'don't rely on the name at all'.
> --
> Gleb.
^ permalink raw reply [flat|nested] 24+ messages in thread
[parent not found: <20110110120808.GA15554@redhat.com>]
* Re: [PATCH] virtio: remove virtio-pci root device
[not found] ` <20110110120808.GA15554@redhat.com>
@ 2011-01-10 12:50 ` Gleb Natapov
[not found] ` <20110110125011.GI2202@redhat.com>
1 sibling, 0 replies; 24+ messages in thread
From: Gleb Natapov @ 2011-01-10 12:50 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Anthony Liguori, Jamie Lokier, Thomas Weber, linux-kernel,
Milton Miller, virtualization
On Mon, Jan 10, 2011 at 02:08:08PM +0200, Michael S. Tsirkin wrote:
> On Mon, Jan 10, 2011 at 01:42:19PM +0200, Gleb Natapov wrote:
> > On Mon, Jan 10, 2011 at 01:27:39PM +0200, Gleb Natapov wrote:
> > > On Mon, Jan 10, 2011 at 01:22:05PM +0200, Michael S. Tsirkin wrote:
> > > > On Mon, Jan 10, 2011 at 01:18:59PM +0200, Gleb Natapov wrote:
> > > > > On Sun, Jan 09, 2011 at 05:18:21PM +0200, Michael S. Tsirkin wrote:
> > > > > > On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> > > > > > > We sometimes need to map between the virtio device and
> > > > > > > the given pci device. One such use is OS installer that
> > > > > > > gets the boot pci device from BIOS and needs to
> > > > > > > find the relevant block device. Since it can't,
> > > > > > > installation fails.
> > > > > > >
> > > > > > > Instead of creating a top-level devices/virtio-pci
> > > > > > > directory, create each device under the corresponding
> > > > > > > pci device node. Symlinks to all virtio-pci
> > > > > > > devices can be found under the pci driver link in
> > > > > > > bus/pci/drivers/virtio-pci/devices, and all virtio
> > > > > > > devices under drivers/bus/virtio/devices.
> > > > > > >
> > > > > > > Signed-off-by: Milton Miller <miltonm@bga.com>
> > > > > >
> > > > > > OK, this works fine for me. I played with options to add compat
> > > > > > softlinks under devices/virtio-pci but we still don't get exactly the
> > > > > > same layout and since I don't think anyone actually uses them, it's
> > > > > > probably ok to just to the simple thing.
> > > > > >
> > > > > > Tested/Acked-by: Michael S. Tsirkin <mst@redhat.com>
> > > > > >
> > > > > > Rusty, since this help fix at least one user, any chance this can be put
> > > > > > in 2.6.38? OK to backport to -stable?
> > > > > >
> > > > > > Gleb, could you try this out too?
> > > > > >
> > > > > With this patch if I have 3 virtio disks for a VM I get:
> > > > > /sys/devices/pci0000:00/0000:00:04.0/virtio0/block/vda
> > > > > /sys/devices/pci0000:00/0000:00:05.0/virtio1/block/vdb
> > > > > /sys/devices/pci0000:00/0000:00:06.0/virtio2/block/vdc
> > > > >
> > > > > Number after virtio has no much sense. It either should be dropped at all
> > > > > or be always zero in case we will support more then one virtio controller
> > > > > per pci card. In that case each virtio controller will have directories
> > > > > virtio0/virtio1/virtio2... under same pci device directory.
> > > >
> > > > Yes. But this is the bus name. It must be unique - all devices
> > > > also appear under /sys/bus/virtio/devices.
> > > >
> > > It is very strange king of bus that is spread over several PCI devices :)
> > > It doesn't make much sense IMHO, but I can leave with it.
> > >
> > I can't "leave" with it, but I can "live" with it.
>
> The virtio bus is an attempt to make as many applications as
> possible work transparently on any virtio system,
> be it lguest, s390 or pci. Arbitrary IDs is just a hint to the
> applications 'don't rely on the name at all'.
>
Shouldn't sysfs directory reflect real device topology? There are other
buses AFAIK that connected differently on different HW. How virtio is
special? What applications this allow to work transparently?
--
Gleb.
^ permalink raw reply [flat|nested] 24+ messages in thread
[parent not found: <20110110125011.GI2202@redhat.com>]
* Re: [PATCH] virtio: remove virtio-pci root device
[not found] ` <20110110125011.GI2202@redhat.com>
@ 2011-01-10 13:31 ` Michael S. Tsirkin
[not found] ` <20110110133140.GB15554@redhat.com>
1 sibling, 0 replies; 24+ messages in thread
From: Michael S. Tsirkin @ 2011-01-10 13:31 UTC (permalink / raw)
To: Gleb Natapov
Cc: Anthony Liguori, Jamie Lokier, Thomas Weber, linux-kernel,
Milton Miller, virtualization
On Mon, Jan 10, 2011 at 02:50:11PM +0200, Gleb Natapov wrote:
> On Mon, Jan 10, 2011 at 02:08:08PM +0200, Michael S. Tsirkin wrote:
> > On Mon, Jan 10, 2011 at 01:42:19PM +0200, Gleb Natapov wrote:
> > > On Mon, Jan 10, 2011 at 01:27:39PM +0200, Gleb Natapov wrote:
> > > > On Mon, Jan 10, 2011 at 01:22:05PM +0200, Michael S. Tsirkin wrote:
> > > > > On Mon, Jan 10, 2011 at 01:18:59PM +0200, Gleb Natapov wrote:
> > > > > > On Sun, Jan 09, 2011 at 05:18:21PM +0200, Michael S. Tsirkin wrote:
> > > > > > > On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> > > > > > > > We sometimes need to map between the virtio device and
> > > > > > > > the given pci device. One such use is OS installer that
> > > > > > > > gets the boot pci device from BIOS and needs to
> > > > > > > > find the relevant block device. Since it can't,
> > > > > > > > installation fails.
> > > > > > > >
> > > > > > > > Instead of creating a top-level devices/virtio-pci
> > > > > > > > directory, create each device under the corresponding
> > > > > > > > pci device node. Symlinks to all virtio-pci
> > > > > > > > devices can be found under the pci driver link in
> > > > > > > > bus/pci/drivers/virtio-pci/devices, and all virtio
> > > > > > > > devices under drivers/bus/virtio/devices.
> > > > > > > >
> > > > > > > > Signed-off-by: Milton Miller <miltonm@bga.com>
> > > > > > >
> > > > > > > OK, this works fine for me. I played with options to add compat
> > > > > > > softlinks under devices/virtio-pci but we still don't get exactly the
> > > > > > > same layout and since I don't think anyone actually uses them, it's
> > > > > > > probably ok to just to the simple thing.
> > > > > > >
> > > > > > > Tested/Acked-by: Michael S. Tsirkin <mst@redhat.com>
> > > > > > >
> > > > > > > Rusty, since this help fix at least one user, any chance this can be put
> > > > > > > in 2.6.38? OK to backport to -stable?
> > > > > > >
> > > > > > > Gleb, could you try this out too?
> > > > > > >
> > > > > > With this patch if I have 3 virtio disks for a VM I get:
> > > > > > /sys/devices/pci0000:00/0000:00:04.0/virtio0/block/vda
> > > > > > /sys/devices/pci0000:00/0000:00:05.0/virtio1/block/vdb
> > > > > > /sys/devices/pci0000:00/0000:00:06.0/virtio2/block/vdc
> > > > > >
> > > > > > Number after virtio has no much sense. It either should be dropped at all
> > > > > > or be always zero in case we will support more then one virtio controller
> > > > > > per pci card. In that case each virtio controller will have directories
> > > > > > virtio0/virtio1/virtio2... under same pci device directory.
> > > > >
> > > > > Yes. But this is the bus name. It must be unique - all devices
> > > > > also appear under /sys/bus/virtio/devices.
> > > > >
> > > > It is very strange king of bus that is spread over several PCI devices :)
> > > > It doesn't make much sense IMHO, but I can leave with it.
> > > >
> > > I can't "leave" with it, but I can "live" with it.
> >
> > The virtio bus is an attempt to make as many applications as
> > possible work transparently on any virtio system,
> > be it lguest, s390 or pci. Arbitrary IDs is just a hint to the
> > applications 'don't rely on the name at all'.
> >
> Shouldn't sysfs directory reflect real device topology?
What exactly is proposed here? Are you acking or nacking this patch?
Prefer the older version? Can send your own?
> There are other buses AFAIK that connected differently on different
> HW. How virtio is special?
> What applications this allow to work transparently?
I don't know which applications use the current sysfs topology
but the assumption that there are none and we can break it
arbitrarily seems a bit drastic.
> --
> Gleb.
^ permalink raw reply [flat|nested] 24+ messages in thread
[parent not found: <20110110133140.GB15554@redhat.com>]
* Re: [PATCH] virtio: remove virtio-pci root device
[not found] ` <20110110133140.GB15554@redhat.com>
@ 2011-01-10 13:40 ` Gleb Natapov
[not found] ` <20110110134050.GK2202@redhat.com>
1 sibling, 0 replies; 24+ messages in thread
From: Gleb Natapov @ 2011-01-10 13:40 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Anthony Liguori, Jamie Lokier, Thomas Weber, linux-kernel,
Milton Miller, virtualization
On Mon, Jan 10, 2011 at 03:31:40PM +0200, Michael S. Tsirkin wrote:
> On Mon, Jan 10, 2011 at 02:50:11PM +0200, Gleb Natapov wrote:
> > On Mon, Jan 10, 2011 at 02:08:08PM +0200, Michael S. Tsirkin wrote:
> > > On Mon, Jan 10, 2011 at 01:42:19PM +0200, Gleb Natapov wrote:
> > > > On Mon, Jan 10, 2011 at 01:27:39PM +0200, Gleb Natapov wrote:
> > > > > On Mon, Jan 10, 2011 at 01:22:05PM +0200, Michael S. Tsirkin wrote:
> > > > > > On Mon, Jan 10, 2011 at 01:18:59PM +0200, Gleb Natapov wrote:
> > > > > > > On Sun, Jan 09, 2011 at 05:18:21PM +0200, Michael S. Tsirkin wrote:
> > > > > > > > On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> > > > > > > > > We sometimes need to map between the virtio device and
> > > > > > > > > the given pci device. One such use is OS installer that
> > > > > > > > > gets the boot pci device from BIOS and needs to
> > > > > > > > > find the relevant block device. Since it can't,
> > > > > > > > > installation fails.
> > > > > > > > >
> > > > > > > > > Instead of creating a top-level devices/virtio-pci
> > > > > > > > > directory, create each device under the corresponding
> > > > > > > > > pci device node. Symlinks to all virtio-pci
> > > > > > > > > devices can be found under the pci driver link in
> > > > > > > > > bus/pci/drivers/virtio-pci/devices, and all virtio
> > > > > > > > > devices under drivers/bus/virtio/devices.
> > > > > > > > >
> > > > > > > > > Signed-off-by: Milton Miller <miltonm@bga.com>
> > > > > > > >
> > > > > > > > OK, this works fine for me. I played with options to add compat
> > > > > > > > softlinks under devices/virtio-pci but we still don't get exactly the
> > > > > > > > same layout and since I don't think anyone actually uses them, it's
> > > > > > > > probably ok to just to the simple thing.
> > > > > > > >
> > > > > > > > Tested/Acked-by: Michael S. Tsirkin <mst@redhat.com>
> > > > > > > >
> > > > > > > > Rusty, since this help fix at least one user, any chance this can be put
> > > > > > > > in 2.6.38? OK to backport to -stable?
> > > > > > > >
> > > > > > > > Gleb, could you try this out too?
> > > > > > > >
> > > > > > > With this patch if I have 3 virtio disks for a VM I get:
> > > > > > > /sys/devices/pci0000:00/0000:00:04.0/virtio0/block/vda
> > > > > > > /sys/devices/pci0000:00/0000:00:05.0/virtio1/block/vdb
> > > > > > > /sys/devices/pci0000:00/0000:00:06.0/virtio2/block/vdc
> > > > > > >
> > > > > > > Number after virtio has no much sense. It either should be dropped at all
> > > > > > > or be always zero in case we will support more then one virtio controller
> > > > > > > per pci card. In that case each virtio controller will have directories
> > > > > > > virtio0/virtio1/virtio2... under same pci device directory.
> > > > > >
> > > > > > Yes. But this is the bus name. It must be unique - all devices
> > > > > > also appear under /sys/bus/virtio/devices.
> > > > > >
> > > > > It is very strange king of bus that is spread over several PCI devices :)
> > > > > It doesn't make much sense IMHO, but I can leave with it.
> > > > >
> > > > I can't "leave" with it, but I can "live" with it.
> > >
> > > The virtio bus is an attempt to make as many applications as
> > > possible work transparently on any virtio system,
> > > be it lguest, s390 or pci. Arbitrary IDs is just a hint to the
> > > applications 'don't rely on the name at all'.
> > >
> > Shouldn't sysfs directory reflect real device topology?
>
> What exactly is proposed here? Are you acking or nacking this patch?
> Prefer the older version? Can send your own?
>
What exactly is proposed is to get rid of random number in virtio
directory name. If this is complicated, as I said above, I can live
with it as is.
> > There are other buses AFAIK that connected differently on different
> > HW. How virtio is special?
> > What applications this allow to work transparently?
>
> I don't know which applications use the current sysfs topology
> but the assumption that there are none and we can break it
> arbitrarily seems a bit drastic.
>
> > --
> > Gleb.
--
Gleb.
^ permalink raw reply [flat|nested] 24+ messages in thread
[parent not found: <20110110134050.GK2202@redhat.com>]
* Re: [PATCH] virtio: remove virtio-pci root device
[not found] ` <20110110134050.GK2202@redhat.com>
@ 2011-01-10 14:19 ` Michael S. Tsirkin
0 siblings, 0 replies; 24+ messages in thread
From: Michael S. Tsirkin @ 2011-01-10 14:19 UTC (permalink / raw)
To: Gleb Natapov
Cc: Anthony Liguori, Jamie Lokier, Thomas Weber, linux-kernel,
Milton Miller, virtualization
On Mon, Jan 10, 2011 at 03:40:50PM +0200, Gleb Natapov wrote:
> On Mon, Jan 10, 2011 at 03:31:40PM +0200, Michael S. Tsirkin wrote:
> > On Mon, Jan 10, 2011 at 02:50:11PM +0200, Gleb Natapov wrote:
> > > On Mon, Jan 10, 2011 at 02:08:08PM +0200, Michael S. Tsirkin wrote:
> > > > On Mon, Jan 10, 2011 at 01:42:19PM +0200, Gleb Natapov wrote:
> > > > > On Mon, Jan 10, 2011 at 01:27:39PM +0200, Gleb Natapov wrote:
> > > > > > On Mon, Jan 10, 2011 at 01:22:05PM +0200, Michael S. Tsirkin wrote:
> > > > > > > On Mon, Jan 10, 2011 at 01:18:59PM +0200, Gleb Natapov wrote:
> > > > > > > > On Sun, Jan 09, 2011 at 05:18:21PM +0200, Michael S. Tsirkin wrote:
> > > > > > > > > On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> > > > > > > > > > We sometimes need to map between the virtio device and
> > > > > > > > > > the given pci device. One such use is OS installer that
> > > > > > > > > > gets the boot pci device from BIOS and needs to
> > > > > > > > > > find the relevant block device. Since it can't,
> > > > > > > > > > installation fails.
> > > > > > > > > >
> > > > > > > > > > Instead of creating a top-level devices/virtio-pci
> > > > > > > > > > directory, create each device under the corresponding
> > > > > > > > > > pci device node. Symlinks to all virtio-pci
> > > > > > > > > > devices can be found under the pci driver link in
> > > > > > > > > > bus/pci/drivers/virtio-pci/devices, and all virtio
> > > > > > > > > > devices under drivers/bus/virtio/devices.
> > > > > > > > > >
> > > > > > > > > > Signed-off-by: Milton Miller <miltonm@bga.com>
> > > > > > > > >
> > > > > > > > > OK, this works fine for me. I played with options to add compat
> > > > > > > > > softlinks under devices/virtio-pci but we still don't get exactly the
> > > > > > > > > same layout and since I don't think anyone actually uses them, it's
> > > > > > > > > probably ok to just to the simple thing.
> > > > > > > > >
> > > > > > > > > Tested/Acked-by: Michael S. Tsirkin <mst@redhat.com>
> > > > > > > > >
> > > > > > > > > Rusty, since this help fix at least one user, any chance this can be put
> > > > > > > > > in 2.6.38? OK to backport to -stable?
> > > > > > > > >
> > > > > > > > > Gleb, could you try this out too?
> > > > > > > > >
> > > > > > > > With this patch if I have 3 virtio disks for a VM I get:
> > > > > > > > /sys/devices/pci0000:00/0000:00:04.0/virtio0/block/vda
> > > > > > > > /sys/devices/pci0000:00/0000:00:05.0/virtio1/block/vdb
> > > > > > > > /sys/devices/pci0000:00/0000:00:06.0/virtio2/block/vdc
> > > > > > > >
> > > > > > > > Number after virtio has no much sense. It either should be dropped at all
> > > > > > > > or be always zero in case we will support more then one virtio controller
> > > > > > > > per pci card. In that case each virtio controller will have directories
> > > > > > > > virtio0/virtio1/virtio2... under same pci device directory.
> > > > > > >
> > > > > > > Yes. But this is the bus name. It must be unique - all devices
> > > > > > > also appear under /sys/bus/virtio/devices.
> > > > > > >
> > > > > > It is very strange king of bus that is spread over several PCI devices :)
> > > > > > It doesn't make much sense IMHO, but I can leave with it.
> > > > > >
> > > > > I can't "leave" with it, but I can "live" with it.
> > > >
> > > > The virtio bus is an attempt to make as many applications as
> > > > possible work transparently on any virtio system,
> > > > be it lguest, s390 or pci. Arbitrary IDs is just a hint to the
> > > > applications 'don't rely on the name at all'.
> > > >
> > > Shouldn't sysfs directory reflect real device topology?
> >
> > What exactly is proposed here? Are you acking or nacking this patch?
> > Prefer the older version? Can send your own?
> >
> What exactly is proposed is to get rid of random number in virtio
> directory name. If this is complicated, as I said above, I can live
> with it as is.
Certainly more complicated than this patch:
core currently uses same dev_name everywhere.
> > > There are other buses AFAIK that connected differently on different
> > > HW. How virtio is special?
> > > What applications this allow to work transparently?
> >
> > I don't know which applications use the current sysfs topology
> > but the assumption that there are none and we can break it
> > arbitrarily seems a bit drastic.
> >
> > > --
> > > Gleb.
>
> --
> Gleb.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] virtio: remove virtio-pci root device
[not found] ` <virtio-pci-noroot@mdm.bga.com>
` (2 preceding siblings ...)
[not found] ` <20110109151821.GA9063@redhat.com>
@ 2011-01-10 17:10 ` Gleb Natapov
[not found] ` <20110110171046.GB27292@redhat.com>
2011-01-10 17:44 ` Michael S. Tsirkin
5 siblings, 0 replies; 24+ messages in thread
From: Gleb Natapov @ 2011-01-10 17:10 UTC (permalink / raw)
To: Milton Miller
Cc: Anthony Liguori, Michael S. Tsirkin, Jamie Lokier, Thomas Weber,
linux-kernel, virtualization
On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> We sometimes need to map between the virtio device and
> the given pci device. One such use is OS installer that
> gets the boot pci device from BIOS and needs to
> find the relevant block device. Since it can't,
> installation fails.
>
> Instead of creating a top-level devices/virtio-pci
> directory, create each device under the corresponding
> pci device node. Symlinks to all virtio-pci
> devices can be found under the pci driver link in
> bus/pci/drivers/virtio-pci/devices, and all virtio
> devices under drivers/bus/virtio/devices.
>
> Signed-off-by: Milton Miller <miltonm@bga.com>
Acked-by: Gleb Natapov <gleb@redhat.com>
> ---
>
> This is an alternative to the patch by Michael S. Tsirkin
> titled "virtio-pci: add softlinks between virtio and pci"
> https://patchwork.kernel.org/patch/454581/
>
> It creates simpler code, uses less memory, and should
> be even easier use by the installer as it won't have to
> know a virtio symlink to follow (just follow none).
>
> Compile tested only as I don't have kvm setup.
>
>
> diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
> index ef8d9d5..4fb5b2b 100644
> --- a/drivers/virtio/virtio_pci.c
> +++ b/drivers/virtio/virtio_pci.c
> @@ -96,11 +96,6 @@ static struct pci_device_id virtio_pci_id_table[] = {
>
> MODULE_DEVICE_TABLE(pci, virtio_pci_id_table);
>
> -/* A PCI device has it's own struct device and so does a virtio device so
> - * we create a place for the virtio devices to show up in sysfs. I think it
> - * would make more sense for virtio to not insist on having it's own device. */
> -static struct device *virtio_pci_root;
> -
> /* Convert a generic virtio device to our structure */
> static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev)
> {
> @@ -629,7 +624,7 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,
> if (vp_dev == NULL)
> return -ENOMEM;
>
> - vp_dev->vdev.dev.parent = virtio_pci_root;
> + vp_dev->vdev.dev.parent = &pci_dev->dev;
> vp_dev->vdev.dev.release = virtio_pci_release_dev;
> vp_dev->vdev.config = &virtio_pci_config_ops;
> vp_dev->pci_dev = pci_dev;
> @@ -717,17 +712,7 @@ static struct pci_driver virtio_pci_driver = {
>
> static int __init virtio_pci_init(void)
> {
> - int err;
> -
> - virtio_pci_root = root_device_register("virtio-pci");
> - if (IS_ERR(virtio_pci_root))
> - return PTR_ERR(virtio_pci_root);
> -
> - err = pci_register_driver(&virtio_pci_driver);
> - if (err)
> - root_device_unregister(virtio_pci_root);
> -
> - return err;
> + return pci_register_driver(&virtio_pci_driver);
> }
>
> module_init(virtio_pci_init);
> @@ -735,7 +720,6 @@ module_init(virtio_pci_init);
> static void __exit virtio_pci_exit(void)
> {
> pci_unregister_driver(&virtio_pci_driver);
> - root_device_unregister(virtio_pci_root);
> }
>
> module_exit(virtio_pci_exit);
--
Gleb.
^ permalink raw reply [flat|nested] 24+ messages in thread
[parent not found: <20110110171046.GB27292@redhat.com>]
* Re: [PATCH] virtio: remove virtio-pci root device
[not found] ` <20110110171046.GB27292@redhat.com>
@ 2011-01-10 17:19 ` Michael S. Tsirkin
[not found] ` <20110110171904.GA30058@redhat.com>
1 sibling, 0 replies; 24+ messages in thread
From: Michael S. Tsirkin @ 2011-01-10 17:19 UTC (permalink / raw)
To: Gleb Natapov
Cc: Anthony Liguori, Jamie Lokier, Thomas Weber, linux-kernel,
Milton Miller, virtualization
On Mon, Jan 10, 2011 at 07:10:46PM +0200, Gleb Natapov wrote:
> On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> > We sometimes need to map between the virtio device and
> > the given pci device. One such use is OS installer that
> > gets the boot pci device from BIOS and needs to
> > find the relevant block device. Since it can't,
> > installation fails.
> >
> > Instead of creating a top-level devices/virtio-pci
> > directory, create each device under the corresponding
> > pci device node. Symlinks to all virtio-pci
> > devices can be found under the pci driver link in
> > bus/pci/drivers/virtio-pci/devices, and all virtio
> > devices under drivers/bus/virtio/devices.
> >
> > Signed-off-by: Milton Miller <miltonm@bga.com>
> Acked-by: Gleb Natapov <gleb@redhat.com>
Rusty, any comments?
We are going to tell the installer guys that this
is the interface, would be nice to know that the
patch is queued before we do.
> > ---
> >
> > This is an alternative to the patch by Michael S. Tsirkin
> > titled "virtio-pci: add softlinks between virtio and pci"
> > https://patchwork.kernel.org/patch/454581/
> >
> > It creates simpler code, uses less memory, and should
> > be even easier use by the installer as it won't have to
> > know a virtio symlink to follow (just follow none).
> >
> > Compile tested only as I don't have kvm setup.
> >
> >
> > diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
> > index ef8d9d5..4fb5b2b 100644
> > --- a/drivers/virtio/virtio_pci.c
> > +++ b/drivers/virtio/virtio_pci.c
> > @@ -96,11 +96,6 @@ static struct pci_device_id virtio_pci_id_table[] = {
> >
> > MODULE_DEVICE_TABLE(pci, virtio_pci_id_table);
> >
> > -/* A PCI device has it's own struct device and so does a virtio device so
> > - * we create a place for the virtio devices to show up in sysfs. I think it
> > - * would make more sense for virtio to not insist on having it's own device. */
> > -static struct device *virtio_pci_root;
> > -
> > /* Convert a generic virtio device to our structure */
> > static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev)
> > {
> > @@ -629,7 +624,7 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,
> > if (vp_dev == NULL)
> > return -ENOMEM;
> >
> > - vp_dev->vdev.dev.parent = virtio_pci_root;
> > + vp_dev->vdev.dev.parent = &pci_dev->dev;
> > vp_dev->vdev.dev.release = virtio_pci_release_dev;
> > vp_dev->vdev.config = &virtio_pci_config_ops;
> > vp_dev->pci_dev = pci_dev;
> > @@ -717,17 +712,7 @@ static struct pci_driver virtio_pci_driver = {
> >
> > static int __init virtio_pci_init(void)
> > {
> > - int err;
> > -
> > - virtio_pci_root = root_device_register("virtio-pci");
> > - if (IS_ERR(virtio_pci_root))
> > - return PTR_ERR(virtio_pci_root);
> > -
> > - err = pci_register_driver(&virtio_pci_driver);
> > - if (err)
> > - root_device_unregister(virtio_pci_root);
> > -
> > - return err;
> > + return pci_register_driver(&virtio_pci_driver);
> > }
> >
> > module_init(virtio_pci_init);
> > @@ -735,7 +720,6 @@ module_init(virtio_pci_init);
> > static void __exit virtio_pci_exit(void)
> > {
> > pci_unregister_driver(&virtio_pci_driver);
> > - root_device_unregister(virtio_pci_root);
> > }
> >
> > module_exit(virtio_pci_exit);
>
> --
> Gleb.
^ permalink raw reply [flat|nested] 24+ messages in thread
[parent not found: <20110110171904.GA30058@redhat.com>]
* Re: [PATCH] virtio: remove virtio-pci root device
[not found] ` <20110110171904.GA30058@redhat.com>
@ 2011-01-17 0:33 ` Rusty Russell
0 siblings, 0 replies; 24+ messages in thread
From: Rusty Russell @ 2011-01-17 0:33 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Anthony Liguori, Jamie Lokier, Thomas Weber, linux-kernel,
Milton Miller, virtualization
On Tue, 11 Jan 2011 03:49:04 am Michael S. Tsirkin wrote:
> On Mon, Jan 10, 2011 at 07:10:46PM +0200, Gleb Natapov wrote:
> > On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> > > We sometimes need to map between the virtio device and
> > > the given pci device. One such use is OS installer that
> > > gets the boot pci device from BIOS and needs to
> > > find the relevant block device. Since it can't,
> > > installation fails.
> > >
> > > Instead of creating a top-level devices/virtio-pci
> > > directory, create each device under the corresponding
> > > pci device node. Symlinks to all virtio-pci
> > > devices can be found under the pci driver link in
> > > bus/pci/drivers/virtio-pci/devices, and all virtio
> > > devices under drivers/bus/virtio/devices.
> > >
> > > Signed-off-by: Milton Miller <miltonm@bga.com>
> > Acked-by: Gleb Natapov <gleb@redhat.com>
>
> Rusty, any comments?
> We are going to tell the installer guys that this
> is the interface, would be nice to know that the
> patch is queued before we do.
Yep, I've applied it. Sorry, took a week off to work on my linux.conf.au
talk...
Cheers,
Rusty.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH] virtio: remove virtio-pci root device
[not found] ` <virtio-pci-noroot@mdm.bga.com>
` (4 preceding siblings ...)
[not found] ` <20110110171046.GB27292@redhat.com>
@ 2011-01-10 17:44 ` Michael S. Tsirkin
5 siblings, 0 replies; 24+ messages in thread
From: Michael S. Tsirkin @ 2011-01-10 17:44 UTC (permalink / raw)
To: Milton Miller
Cc: Anthony Liguori, Jamie Lokier, Thomas Weber, linux-kernel,
virtualization
On Fri, Jan 07, 2011 at 02:55:06AM -0600, Milton Miller wrote:
> We sometimes need to map between the virtio device and
> the given pci device. One such use is OS installer that
> gets the boot pci device from BIOS and needs to
> find the relevant block device. Since it can't,
> installation fails.
>
> Instead of creating a top-level devices/virtio-pci
> directory, create each device under the corresponding
> pci device node. Symlinks to all virtio-pci
> devices can be found under the pci driver link in
> bus/pci/drivers/virtio-pci/devices, and all virtio
> devices under drivers/bus/virtio/devices.
>
> Signed-off-by: Milton Miller <miltonm@bga.com>
Tested-by: "Daniel P. Berrange" <berrange@redhat.com>
> ---
>
> This is an alternative to the patch by Michael S. Tsirkin
> titled "virtio-pci: add softlinks between virtio and pci"
> https://patchwork.kernel.org/patch/454581/
>
> It creates simpler code, uses less memory, and should
> be even easier use by the installer as it won't have to
> know a virtio symlink to follow (just follow none).
>
> Compile tested only as I don't have kvm setup.
>
>
> diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
> index ef8d9d5..4fb5b2b 100644
> --- a/drivers/virtio/virtio_pci.c
> +++ b/drivers/virtio/virtio_pci.c
> @@ -96,11 +96,6 @@ static struct pci_device_id virtio_pci_id_table[] = {
>
> MODULE_DEVICE_TABLE(pci, virtio_pci_id_table);
>
> -/* A PCI device has it's own struct device and so does a virtio device so
> - * we create a place for the virtio devices to show up in sysfs. I think it
> - * would make more sense for virtio to not insist on having it's own device. */
> -static struct device *virtio_pci_root;
> -
> /* Convert a generic virtio device to our structure */
> static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev)
> {
> @@ -629,7 +624,7 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,
> if (vp_dev == NULL)
> return -ENOMEM;
>
> - vp_dev->vdev.dev.parent = virtio_pci_root;
> + vp_dev->vdev.dev.parent = &pci_dev->dev;
> vp_dev->vdev.dev.release = virtio_pci_release_dev;
> vp_dev->vdev.config = &virtio_pci_config_ops;
> vp_dev->pci_dev = pci_dev;
> @@ -717,17 +712,7 @@ static struct pci_driver virtio_pci_driver = {
>
> static int __init virtio_pci_init(void)
> {
> - int err;
> -
> - virtio_pci_root = root_device_register("virtio-pci");
> - if (IS_ERR(virtio_pci_root))
> - return PTR_ERR(virtio_pci_root);
> -
> - err = pci_register_driver(&virtio_pci_driver);
> - if (err)
> - root_device_unregister(virtio_pci_root);
> -
> - return err;
> + return pci_register_driver(&virtio_pci_driver);
> }
>
> module_init(virtio_pci_init);
> @@ -735,7 +720,6 @@ module_init(virtio_pci_init);
> static void __exit virtio_pci_exit(void)
> {
> pci_unregister_driver(&virtio_pci_driver);
> - root_device_unregister(virtio_pci_root);
> }
>
> module_exit(virtio_pci_exit);
^ permalink raw reply [flat|nested] 24+ messages in thread