Re: [PATCH] docs: add zpci information to pci-addresses.rst

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sorry about the time travel.
I will try to give up that super power... :(

On 4/14/20 11:06 PM, Boris Fiuczynski wrote:
On 4/15/20 12:51 PM, Cornelia Huck wrote:
Add some information on how pci address work on s390x.

Signed-off-by: Cornelia Huck <cohuck@xxxxxxxxxx>
Conny, thanks for catching this "wacky case"... :)
I took the liberty to remove "completely" because there needs to be room for pci multifunction support... :D

---
  docs/pci-addresses.rst | 63 ++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 63 insertions(+)

diff --git a/docs/pci-addresses.rst b/docs/pci-addresses.rst
index 923783a151b0..9e241a24fcfb 100644
--- a/docs/pci-addresses.rst
+++ b/docs/pci-addresses.rst
@@ -184,3 +184,66 @@ guest OS rather than as ``0001:08:00.1``, which is the address of the
  device on the host.
  Of course, all the rules and behaviors described above still apply.
+
+zPCI addresses
+==============
+
+For s390x machines, PCI addresses are handled yet differently. No
+topology information is relayed in the PCI addresses; instead, the
+``fid`` and ``uid`` elements of the ``zpci`` device convey information.
Should it be mentioned that qemu uses the pci address internally to plug the device into its pci bus since the pci address as far as I know must still be properly provided or generated.


+In the simplest case, the following XML snippet
+
+::
+
+      <controller type='pci' index='0' model='pci-root'/>
+      <controller type='pci' index='1' model='pci-bridge'>
+        <model name='pci-bridge'/>
+        <target chassisNr='1'/>
+        <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'>
+          <zpci uid='0x0002' fid='0x00000001'/>
+        </address>
+      </controller>
+      <interface type='bridge'>
+        <mac address='02:ca:fe:fa:ce:04'/>
+        <source bridge='virbr0'/>
+        <model type='virtio'/>
+        <address type='pci' domain='0x0000' bus='0x01' slot='0x01' function='0x0'>
+          <zpci uid='0x0001' fid='0x00000000'/>
+        </address>
+      </interface>
+
+will result in the following in a Linux guest::
+
+  0001:00:00.0 Ethernet controller: Red Hat, Inc. Virtio network device
+
+Note that the PCI bridge is not visible in the guest; s390x always has a flat
+topology.
+
+Neither are any changes in the PCI address visible in the guest; replacing
+the PCI address for the virtio-net device with
+
+::
+
+  <address type='pci' domain='0x0000' bus='0x01' slot='0x07' function='0x3'>
+
+will result in the exactly same view in the guest, as the addresses there
+are generated from the information provided via the ``zpci`` element (in
+fact, from the ``uid``).
+
This explains that the uid is used by the guest to define the pci domain of the guest device.
How about an addition for the fid? Something like:

The function id 'fid' defines the slot address of the pci card in the guest. It can be observed in the guest at /sys/bus/pci/slots. In the example given above the card would be at /sys/bus/pci/slots/00000000.


+Therefore, replacing the virtio-net device definition with the following XML
+snippet
+
+::
+
+      <interface type='bridge'>
+        <mac address='02:ca:fe:fa:ce:04'/>
+        <source bridge='virbr0'/>
+        <model type='virtio'/>
+        <address type='pci' domain='0x0000' bus='0x01' slot='0x07' function='0x3'>
+          <zpci uid='0x0007' fid='0x00000003'/>
+        </address>
+      </interface>
+
+will yield the following result in a Linux guest::
+
+  0007:00:00.0 Ethernet controller: Red Hat, Inc. Virtio network device

and the card would be at /sys/bus/pci/slots/00000003.




--
Mit freundlichen Grüßen/Kind regards
   Boris Fiuczynski

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Gregor Pillen
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294






[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux