On Wed, 15 Apr 2020 16:23:46 +0200 Boris Fiuczynski <fiu...@linux.ibm.com> wrote:
> On 4/15/20 3:42 PM, Cornelia Huck wrote: > > On Tue, 14 Apr 2020 23:06:47 +0200 > > Boris Fiuczynski <fiu...@linux.ibm.com> wrote: > > > >> On 4/15/20 12:51 PM, Cornelia Huck wrote: > >>> +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. > > > > Hm, is it intentional that this does not show up in the actual pci > > address? But maybe I'm confused. > Are you referring to the slot of the pci address? Yes. > > If yes, the pci slot does not provided the required address space for > the function id. Also we once said that the pci bus in qemu would be > like the pci bus of the CEC and the firmware does provide a a function > id for every pci function. The zpci fid does one allow to do the same. Ok, now I dimly remember something like that. Still confusing, but makes sense. > > > > >> > >> > >>> +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. > > > > Do you want to explain the fid/slot stuff in a patch on top? Despite > > your attempts at time travel, this patch has already been pushed :) > It seems to be a very pushy time... :( no matter how many breaks are > produced... ;) 11 minutes from patch production time to commit time. > Why even send it for review? :D Well, I don't have commit rights O:-) > Once I understand you confusion above I will provide a patch... I'd say just go ahead.