|
@@ -0,0 +1,41 @@
|
|
|
+PCI devices on s390x
|
|
|
+====================
|
|
|
+
|
|
|
+PCI devices on s390x work differently than on other architectures and need to
|
|
|
+be configured in a slightly different way.
|
|
|
+
|
|
|
+Every PCI device is linked with an additional ``zpci`` device.
|
|
|
+While the ``zpci`` device will be autogenerated if not specified, it is
|
|
|
+recommended to specify it explicitly so that you can pass s390-specific
|
|
|
+PCI configuration.
|
|
|
+
|
|
|
+For example, in order to pass a PCI device ``0000:00:00.0`` through to the
|
|
|
+guest, you would specify::
|
|
|
+
|
|
|
+ qemu-system-s390x ... \
|
|
|
+ -device zpci,uid=1,fid=0,target=hostdev0,id=zpci1 \
|
|
|
+ -device vfio-pci,host=0000:00:00.0,id=hostdev0
|
|
|
+
|
|
|
+Here, the zpci device is joined with the PCI device via the ``target`` property.
|
|
|
+
|
|
|
+Note that we don't set bus, slot or function here for the guest as is common in
|
|
|
+other PCI implementations. Topology information is not available on s390x, and
|
|
|
+the guest will not see any of the bus, slot or function information specified
|
|
|
+on the command line.
|
|
|
+
|
|
|
+Instead, ``uid`` and ``fid`` determine how the device is presented to the guest
|
|
|
+operating system.
|
|
|
+
|
|
|
+In case of Linux, ``uid`` will be used in the ``domain`` part of the PCI
|
|
|
+identifier, and ``fid`` identifies the physical slot, i.e.::
|
|
|
+
|
|
|
+ qemu-system-s390x ... \
|
|
|
+ -device zpci,uid=7,fid=8,target=hostdev0,id=zpci1 \
|
|
|
+ ...
|
|
|
+
|
|
|
+will be presented in the guest as::
|
|
|
+
|
|
|
+ # lspci -v
|
|
|
+ 0007:00:00.0 ...
|
|
|
+ Physical Slot: 00000008
|
|
|
+ ...
|