public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
To: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Cc: Christian Borntraeger
	<cborntra-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>,
	Martin Schwidefsky
	<schwidefsky-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH/RFC 4/9] Basic guest virtual devices infrastructure
Date: Fri, 11 May 2007 22:06:01 +0200	[thread overview]
Message-ID: <200705112206.01858.arnd@arndb.de> (raw)
In-Reply-To: <1178904958.25135.31.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>

On Friday 11 May 2007, Carsten Otte wrote:

> This patch adds support for a new bus type that manages paravirtualized
> devices. The bus uses the s390 diagnose instruction to query devices, and
> match them with the corresponding drivers.

It seems that the diagnose instruction is really the only s390 specific
thing in here, right? I guess this part of your series is the first one
that we should have in an architecture independent way.

There may also be the chance of merging this with existing virtual
buses like the one for the ps3, which also just exists using
hypercalls.

> +int vdev_match(struct device * dev, struct device_driver *drv)
> +{
> +	struct vdev *vdev = to_vdev(dev);
> +	struct vdev_driver *vdrv = to_vdrv(drv);
> +
> +	if (vdev->vdev_type == vdrv->vdev_type)
> +		return 1;
> +
> +	return 0;
> +}

Why invent device type numbers? On open firmware, we just do a string compare,
which more intuitive, and means you don't need any further 

> +int vdev_probe(struct device * dev)
> +{
> +	struct vdev *vdev = to_vdev(dev);
> +	struct vdev_driver *vdrv = to_vdrv(dev->driver);
> +
> +	return vdrv->probe(vdev);
> +}

This abstraction is unnecessary, just do the do_vdev() conversion inside
of the individual drivers.

> +
> +struct device vdev_bus = {
> +	.bus_id  = "vdev0",
> +	.release = vdev_bus_release
> +};
> 
> +static void vdev_bus_release (struct device *device)
> +{
> +	/* noop, static bus object */
> +}

Just make the root of your devices a platform_device, then you don't need
to do dirty tricks like this.

> +static int vdev_scan_coldplug(void)
> +{
> +	int rc;
> +	struct vdev *device;
> +
> +	do {
> +		device = kzalloc(sizeof(struct vdev), GFP_ATOMIC);
> +		if (!device) {
> +			rc = -ENOMEM;
> +			goto out;
> +		}
> +		rc = vdev_diag_hotplug(device->symname, device->hostid);
> +		if (rc == -ENODEV)
> +			break;
> +		if (rc < 0) {
> +			printk (KERN_WARNING "vdev: error %d detecting" \
> +				" initial devices\n", rc);
> +			break;
> +		}
> +		device->vdev_type = rc;
> +
> +		//sanity: are strings terminated?
> +		if ((strnlen(device->symname, 128) == 128) ||
> +		    (strnlen(device->hostid, 128) == 128)) {
> +			// warn and discard device
> +			printk ("vdev: illegal device entry received\n");
> +			break;
> +		}
> +
> +		rc = vdevice_register(device);
> +		if (rc) {
> +			kfree(device);
> +		} else
> +			switch (device->vdev_type) {
> +			case VDEV_TYPE_DISK:
> +				printk (KERN_INFO "vdev: storage device " \
> +					"detected: %s\n", device->symname);
> +				break;
> +			case VDEV_TYPE_NET:
> +				printk (KERN_INFO "vdev: network device " \
> +					"detected: %s\n", device->symname);
> +				break;
> +			default:
> +				printk (KERN_INFO "vdev: unknown device " \
> +					"detected: %s\n", device->symname);
> +			}
> +	} while(1);
> +	kfree (device);
> + out:
> +	return 0;
> +}

Interesting concept of probing the bus -- so you just ask if there are
any new devices, right?

> +#define VDEV_TYPE_DISK     0
> +#define VDEV_TYPE_NET      1
> +
> +struct vdev {
> +	unsigned int        vdev_type;
> +	char                symname[128];
> +	char                hostid[128];
> +	struct vdev_driver *driver;
> +	struct device       dev;
> +	void                *drv_private;
> +};

You shouldn't need the driver and drv_private fields -- they are already
present in struct device.

	Arnd <><

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

  parent reply	other threads:[~2007-05-11 20:06 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1178903957.25135.13.camel@cotte.boeblingen.de.ibm.com>
     [not found] ` <1178903957.25135.13.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 17:35   ` [PATCH/RFC 2/9] s390 virtualization interface Carsten Otte
2007-05-11 17:35   ` [PATCH/RFC 3/9] s390 guest detection Carsten Otte
2007-05-11 17:35   ` [PATCH/RFC 4/9] Basic guest virtual devices infrastructure Carsten Otte
     [not found]     ` <1178904958.25135.31.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 20:06       ` Arnd Bergmann [this message]
2007-05-14 11:26       ` Avi Kivity
     [not found]         ` <46484753.30602-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 11:43           ` Carsten Otte
     [not found]             ` <46484B5D.6080605-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 12:00               ` [PATCH/RFC 4/9] Basic guest virtualdevices infrastructure Dor Laor
     [not found]                 ` <64F9B87B6B770947A9F8391472E032160BC7483D-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-05-14 13:32                   ` Carsten Otte
2007-05-11 17:36   ` [PATCH/RFC 5/9] s390 virtual console for guests Carsten Otte
     [not found]     ` <1178904960.25135.32.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 19:00       ` Anthony Liguori
     [not found]         ` <4644BD3C.8040901-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-11 19:42           ` Christian Bornträger
2007-05-12  8:07           ` Carsten Otte
2007-05-14 16:23           ` Christian Bornträger
     [not found]             ` <200705141823.13424.cborntra-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 16:48               ` Christian Borntraeger
     [not found]                 ` <200705141848.18996.borntrae-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 17:49                   ` Anthony Liguori
     [not found]                     ` <4648A11D.3050607-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-15  0:27                       ` Arnd Bergmann
2007-05-15  7:54                       ` Carsten Otte
2007-05-11 17:36   ` [PATCH/RFC 6/9] virtual block device driver Carsten Otte
     [not found]     ` <1178904963.25135.33.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-14 11:49       ` Avi Kivity
     [not found]         ` <46484CDF.505-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 13:23           ` Carsten Otte
     [not found]             ` <464862E9.7020105-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 14:39               ` Avi Kivity
     [not found]                 ` <46487494.1070802-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-15 11:47                   ` Carsten Otte
     [not found]                     ` <46499DE9.9090202-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-16 10:01                       ` Avi Kivity
2007-05-14 11:52       ` Avi Kivity
     [not found]         ` <46484D84.3060601-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 13:26           ` Carsten Otte
2007-05-11 17:36   ` [PATCH/RFC 7/9] Virtual network guest " Carsten Otte
     [not found]     ` <1178904965.25135.34.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 19:44       ` ron minnich
     [not found]         ` <13426df10705111244w1578ebedy8259bc42ca1f588d-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-11 20:12           ` Anthony Liguori
     [not found]             ` <4644CE15.6080505-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-11 21:15               ` Eric Van Hensbergen
     [not found]                 ` <a4e6962a0705111415n47e77a15o331b59cf2a03b4-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-11 21:47                   ` Anthony Liguori
     [not found]                     ` <4644E456.2060507-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-11 22:21                       ` Eric Van Hensbergen
     [not found]                         ` <a4e6962a0705111521v2d451ddcjecf209e2031c85af-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-16 17:28                           ` Anthony Liguori
     [not found]                             ` <464B3F20.4030904-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-16 17:38                               ` Daniel P. Berrange
     [not found]                                 ` <20070516173822.GD16863-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2007-05-17  9:29                                   ` Carsten Otte
     [not found]                                     ` <464C2069.20909-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-17 14:22                                       ` Anthony Liguori
     [not found]                                         ` <464C651F.5070700-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-21 11:11                                           ` Christian Borntraeger
2007-05-16 17:41                               ` Eric Van Hensbergen
     [not found]                                 ` <a4e6962a0705161041s5393c1a6wc455b20ff3fe8106-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-16 18:47                                   ` Anthony Liguori
     [not found]                                     ` <464B51A8.7050307-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-16 19:33                                       ` Eric Van Hensbergen
2007-05-16 17:45                               ` Gregory Haskins
     [not found]                                 ` <464B0ADB.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-05-16 18:39                                   ` Anthony Liguori
     [not found]                                     ` <464B4FEB.7070300-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-16 18:57                                       ` Gregory Haskins
     [not found]                                         ` <464B1B9C.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-05-16 19:10                                           ` Anthony Liguori
     [not found]                                             ` <464B572C.6090800-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-17  4:24                                               ` Rusty Russell
     [not found]                                                 ` <1179375881.21871.83.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-05-17 16:13                                                   ` Anthony Liguori
     [not found]                                                     ` <464C7F45.50908-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-17 23:34                                                       ` Rusty Russell
2007-05-21  9:07                                               ` Christian Borntraeger
     [not found]                                                 ` <OFC1AADF6F.DB57C7AC-ON422572E2.0030BE22-422572E2.0032174C-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-21  9:27                                                   ` Cornelia Huck
2007-05-21 11:28                                                   ` Arnd Bergmann
     [not found]                                                     ` <200705211328.04565.arnd-r2nGTMty4D4@public.gmane.org>
2007-05-21 11:56                                                       ` Cornelia Huck
     [not found]                                                         ` <20070521135628.17a4f9cc-XQvu0L+U/CiXI4yAdoq52KN5r0PSdgG1zG2AekJRRhI@public.gmane.org>
2007-05-21 13:53                                                           ` Arnd Bergmann
2007-05-21 18:45                                                       ` Anthony Liguori
     [not found]                                                         ` <4651E8D1.4010208-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-21 23:09                                                           ` ron minnich
     [not found]                                                             ` <13426df10705211609j613032c6j373d9a4660f8ec6c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22  0:29                                                               ` Anthony Liguori
     [not found]                                                                 ` <46523952.7070405-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-22  0:45                                                                   ` ron minnich
     [not found]                                                                     ` <13426df10705211745r69acc95ai458b2192fe0d0132-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22  1:13                                                                       ` Anthony Liguori
2007-05-22  1:34                                                                   ` Eric Van Hensbergen
     [not found]                                                                     ` <a4e6962a0705211834s4db19c7t3b95765bf2c092d7-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22  1:42                                                                       ` Anthony Liguori
     [not found]                                                                         ` <46524A79.8070004-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-22  5:17                                                                           ` Avi Kivity
     [not found]                                                                             ` <46527CD9.5000603-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-22 12:49                                                                               ` Eric Van Hensbergen
     [not found]                                                                                 ` <a4e6962a0705220549j1c9565f2ic160c672b74aea35-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 12:56                                                                                   ` Christoph Hellwig
     [not found]                                                                                     ` <20070522125655.GA4506-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2007-05-22 14:50                                                                                       ` Eric Van Hensbergen
     [not found]                                                                                         ` <a4e6962a0705220750s5abe380dg8dd8e7d0b84de7cd-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 15:05                                                                                           ` Anthony Liguori
     [not found]                                                                                             ` <465306AE.5080902-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-22 15:31                                                                                               ` ron minnich
2007-05-22 16:25                                                                                               ` Eric Van Hensbergen
     [not found]                                                                                                 ` <a4e6962a0705220925l580f136we269380fe3c9691c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 17:00                                                                                                   ` ron minnich
     [not found]                                                                                                     ` <13426df10705221000i749badc5h8afe4f2fc95bc2ce-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 17:06                                                                                                       ` Christoph Hellwig
     [not found]                                                                                                         ` <20070522170628.GA16624-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2007-05-22 17:34                                                                                                           ` ron minnich
     [not found]                                                                                                             ` <13426df10705221034k7baf5bccrc77aabca8c9e225c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 20:03                                                                                                               ` Dor Laor
     [not found]                                                                                                                 ` <64F9B87B6B770947A9F8391472E032160BF29F1E-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-05-22 20:10                                                                                                                   ` ron minnich
2007-05-22 22:56                                                                                                                   ` Nakajima, Jun
     [not found]                                                                                                                     ` <8FFF7E42E93CC646B632AB40643802A8032793AC-1a9uaKK1+wJcIJlls4ac1rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-05-23  8:15                                                                                                                       ` Carsten Otte
     [not found]                                                                                                                         ` <4653F807.2010209-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-23 12:25                                                                                                                           ` Avi Kivity
2007-05-23 14:12                                                                                                                           ` Eric Van Hensbergen
     [not found]                                                                                                                             ` <a4e6962a0705230712pd8c2958m9dee6b2ccec0899d-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-23 23:02                                                                                                                               ` Arnd Bergmann
     [not found]                                                                                                                                 ` <200705240102.40795.arnd-r2nGTMty4D4@public.gmane.org>
2007-05-23 23:57                                                                                                                                   ` Eric Van Hensbergen
     [not found]                                                                                                                                     ` <a4e6962a0705231657n65946ba4n74393f7028b6d61c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-24  0:07                                                                                                                                       ` Eric Van Hensbergen
2007-05-23 12:21                                                                                                                       ` Avi Kivity
2007-05-23 12:16                                                                                                           ` Avi Kivity
     [not found]                                                                                                             ` <465430B2.7050101-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-23 12:20                                                                                                               ` Christoph Hellwig
2007-05-23 12:20                                                                                                       ` Avi Kivity
2007-05-23 11:55                                                                                           ` Avi Kivity
2007-05-22 13:08                                                                                   ` Anthony Liguori
2007-05-18  5:31                               ` ron minnich
     [not found]                                 ` <13426df10705172231y5e93d1f5y398d4f187a8978e1-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-18 14:31                                   ` Anthony Liguori
     [not found]                                     ` <464DB8A5.6080503-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-18 15:14                                       ` ron minnich
2007-05-11 21:51               ` ron minnich
2007-05-12  8:46           ` Carsten Otte
     [not found]             ` <46457EF9.2070706-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-13 12:04               ` Dor Laor
     [not found]                 ` <64F9B87B6B770947A9F8391472E032160BC74612-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-05-13 14:49                   ` Anthony Liguori
     [not found]                     ` <4647257F.4020900-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-13 16:23                       ` Dor Laor
     [not found]                         ` <64F9B87B6B770947A9F8391472E032160BC74675-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-05-13 16:49                           ` Anthony Liguori
     [not found]                             ` <4647418A.2040201-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-13 17:06                               ` Muli Ben-Yehuda
     [not found]                                 ` <20070513170608.GA4343-WD1JZD8MxeCTrf4lBMg6DdBPR1lH4CV8@public.gmane.org>
2007-05-13 20:31                                   ` Dor Laor
2007-05-14  2:39                               ` Rusty Russell
2007-05-14 11:53                               ` Avi Kivity
2007-05-14 12:05           ` Avi Kivity
     [not found]             ` <46485070.3000106-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 12:24               ` Christian Bornträger
     [not found]                 ` <200705141424.44423.cborntra-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 12:32                   ` Avi Kivity
2007-05-14 13:36               ` Carsten Otte
2007-05-11 17:36   ` [PATCH/RFC 8/9] Virtual network host switch support Carsten Otte
     [not found]     ` <1178904968.25135.35.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 20:21       ` Anthony Liguori
     [not found]         ` <4644D048.7060106-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-11 20:50           ` Christian Bornträger
2007-05-11 17:36   ` [PATCH/RFC 9/9] Fix system<->user misaccount of interpreted execution Carsten Otte

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200705112206.01858.arnd@arndb.de \
    --to=arnd-r2ngtmty4d4@public.gmane.org \
    --cc=cborntra-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
    --cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=schwidefsky-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox