mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 04:06:46 +00:00 
			
		
		
		
	 f31270d4eb
			
		
	
	
		f31270d4eb
		
	
	
	
	
		
			
			Add some hints about "devno" rules. Message-Id: <20200515151518.83950-2-cohuck@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
		
			
				
	
	
		
			87 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| The virtual channel subsystem
 | |
| =============================
 | |
| 
 | |
| QEMU implements a virtual channel subsystem with subchannels, (mostly
 | |
| functionless) channel paths, and channel devices (virtio-ccw, 3270, and
 | |
| devices passed via vfio-ccw). It supports multiple subchannel sets (MSS) and
 | |
| multiple channel subsystems extended (MCSS-E).
 | |
| 
 | |
| All channel devices support the ``devno`` property, which takes a parameter
 | |
| in the form ``<cssid>.<ssid>.<device number>``.
 | |
| 
 | |
| The default channel subsystem image id (``<cssid>``) is ``0xfe``. Devices in
 | |
| there will show up in channel subsystem image ``0`` to guests that do not
 | |
| enable MCSS-E. Note that devices with a different cssid will not be visible
 | |
| if the guest OS does not enable MCSS-E (which is true for all supported guest
 | |
| operating systems today).
 | |
| 
 | |
| Supported values for the subchannel set id (``<ssid>``) range from ``0-3``.
 | |
| Devices with a ssid that is not ``0`` will not be visible if the guest OS
 | |
| does not enable MSS (any Linux version that supports virtio also enables MSS).
 | |
| Any device may be put into any subchannel set, there is no restriction by
 | |
| device type.
 | |
| 
 | |
| The device number can range from ``0-0xffff``.
 | |
| 
 | |
| If the ``devno`` property is not specified for a device, QEMU will choose the
 | |
| next free device number in subchannel set 0, skipping to the next subchannel
 | |
| set if no more device numbers are free.
 | |
| 
 | |
| QEMU places a device at the first free subchannel in the specified subchannel
 | |
| set. If a device is hotunplugged and later replugged, it may appear at a
 | |
| different subchannel. (This is similar to how z/VM works.)
 | |
| 
 | |
| 
 | |
| Examples
 | |
| --------
 | |
| 
 | |
| * a virtio-net device, cssid/ssid/devno automatically assigned::
 | |
| 
 | |
|     -device virtio-net-ccw
 | |
| 
 | |
|   In a Linux guest (without default devices and no other devices specified
 | |
|   prior to this one), this will show up as ``0.0.0000`` under subchannel
 | |
|   ``0.0.0000``.
 | |
| 
 | |
|   The auto-assigned-properties in QEMU (as seen via e.g. ``info qtree``)
 | |
|   would be ``dev_id = "fe.0.0000"`` and ``subch_id = "fe.0.0000"``.
 | |
| 
 | |
| * a virtio-rng device in subchannel set ``0``::
 | |
| 
 | |
|     -device virtio-rng-ccw,devno=fe.0.0042
 | |
| 
 | |
|   If added to the same Linux guest as above, it would show up as ``0.0.0042``
 | |
|   under subchannel ``0.0.0001``.
 | |
| 
 | |
|   The properties for the device would be ``dev_id = "fe.0.0042"`` and
 | |
|   ``subch_id = "fe.0.0001"``.
 | |
| 
 | |
| * a virtio-gpu device in subchannel set ``2``::
 | |
| 
 | |
|     -device virtio-gpu-ccw,devno=fe.2.1111
 | |
| 
 | |
|   If added to the same Linux guest as above, it would show up as ``0.2.1111``
 | |
|   under subchannel ``0.2.0000``.
 | |
| 
 | |
|   The properties for the device would be ``dev_id = "fe.2.1111"`` and
 | |
|   ``subch_id = "fe.2.0000"``.
 | |
| 
 | |
| * a virtio-mouse device in a non-standard channel subsystem image::
 | |
| 
 | |
|     -device virtio-mouse-ccw,devno=2.0.2222
 | |
| 
 | |
|   This would not show up in a standard Linux guest.
 | |
| 
 | |
|   The properties for the device would be ``dev_id = "2.0.2222"`` and
 | |
|   ``subch_id = "2.0.0000"``.
 | |
| 
 | |
| * a virtio-keyboard device in another non-standard channel subsystem image::
 | |
| 
 | |
|     -device virtio-keyboard-ccw,devno=0.0.1234
 | |
| 
 | |
|   This would not show up in a standard Linux guest, either, as ``0`` is not
 | |
|   the standard channel subsystem image id.
 | |
| 
 | |
|   The properties for the device would be ``dev_id = "0.0.1234"`` and
 | |
|   ``subch_id = "0.0.0000"``.
 |