From: Marcel Apfelbaum <marcel@redhat.com>
To: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: qemu-devel@nongnu.org, mst@redhat.com, borntraeger@de.ibm.com,
agraf@suse.de, jfrei@linux.vnet.ibm.com,
zyimin@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [PATCH 00/17] s390x: the big pci update
Date: Tue, 28 Jun 2016 19:35:59 +0300 [thread overview]
Message-ID: <5772A76F.6070506@redhat.com> (raw)
In-Reply-To: <20160628170248.459ce1f6.cornelia.huck@de.ibm.com>
On 06/28/2016 06:02 PM, Cornelia Huck wrote:
> On Tue, 28 Jun 2016 17:33:58 +0300
> Marcel Apfelbaum <marcel@redhat.com> wrote:
>
>> On 06/24/2016 04:28 PM, Cornelia Huck wrote:
>>> We had been looking at remodelling the pci representation for s390x
>>> to handle our slightly odd architecture correctly some time ago
>>> already, but now we have a patchset that we're happy with.
>>>
>>> There's a bunch of bugfixes, cleanups and architecture conformance
>>> changes in there, but the most interesting part is the modelling
>>> (which, in some respects, takes a cue from what sPAPR does).
>>>
>>> We introduce a 'zpci' device to hold s390x-specific properties like
>>> the uid and fid. This 'zpci' device is connected to a run-of-the-mill
>>> pci device via the 'target' property.
>>>
>>> Example command line portion:
>>>
>>> -device zpci,uid=1,fid=1,target=vpci0 \
>>> -device vfio-pci,host=0000:00:00.0,id=vpci0 \
>>> -device zpci,target=vpci1 \
>>> -device vfio-pci,host=0001:00:00.0,id=vpci1 \
>>> -device vfio-pci,host=0002:00:00.0,id=vpci2
>>>
>>> For device vpci0, uid and fid are specified in the associated zpci
>>> device.
>>> For device vpci1, uid and fid are automatically generated.
>>> For device vpci2, first an associated zpci device is generated and
>>> then autogenerated values for uid and fid are placed in it.
>>>
>>> This should accomodate both specifying our special parameters and
>>> re-using standard statements for pci devices.
>>
>> [...]
>>
>> You can still specify
>>> bus/slot/function for the pci device, but it will not be propagated
>>> into the guest (as the s390 pci architecture does not allow for it;
>>> the guest only sees uid/fid).
>>>
>>
>> Hi,
>>
>> Please excuse my lack of s390 knowledge, but I find hard to understand
>> how it works. If using bus/slot/function is not an option,
>> how can one access the configuration space? This configuration is not PCI compliant?
>
> Yes, pci on s390 is... odd. Basically, we have some special
> instructions for it.
>
> For device discovery, the guest OS uses an instruction CLP (with a
> subfunction) to list the pci functions available: see list_pci() in
> hw/s390x/s390-pci-inst.c. This list contains the function handle (fh)
> and the fid for each function.
>
> For nearly all subsequent operations that target a pci function (like
> config space accesses), the guest OS will use other instructions that
> take the fh as an argument (see also hw/s390x/s390-pci-inst.c, for
> example pci{lg,stg}_service_call() for reading/writing). The fid is
> used for enabling/disabling via yet another instruction.
>
> As an example of how this is used (and how one may construct a pci
> "topology" from this), see arch/s390/pci/ in the Linux kernel. That's
> why we have bus/slot/function in the host, even though they are
> entirely synthetic.
>
Thank you for the detailed explanations.
I had a quick look at the kernel bits and it makes more sense now.
The upper layers call the usual PCI API and the s390 pci code "translates"
it to s390 architecture, so the kernel can work as "usual".
Thanks,
Marcel
next prev parent reply other threads:[~2016-06-28 16:36 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-24 13:28 [Qemu-devel] [PATCH 00/17] s390x: the big pci update Cornelia Huck
2016-06-24 13:28 ` [Qemu-devel] [PATCH 01/17] s390x/pci: fix failures of dma map/unmap Cornelia Huck
2016-06-24 13:28 ` [Qemu-devel] [PATCH 02/17] s390x/pci: acceleration for getting S390pciState Cornelia Huck
2016-06-24 13:28 ` [Qemu-devel] [PATCH 03/17] s390x/pci: write fid in CLP_QUERY_PCI_FN Cornelia Huck
2016-06-24 13:28 ` [Qemu-devel] [PATCH 04/17] s390x/pci: unify FH_ macros Cornelia Huck
2016-06-24 13:28 ` [Qemu-devel] [PATCH 05/17] s390x/pci: refactor s390_pci_find_dev_by_fh Cornelia Huck
2016-06-24 13:28 ` [Qemu-devel] [PATCH 06/17] s390x/pci: enforce zPCI state checking Cornelia Huck
2016-06-24 13:28 ` [Qemu-devel] [PATCH 07/17] s390x/pci: introduce S390PCIBus Cornelia Huck
2016-06-28 14:39 ` Marcel Apfelbaum
2016-06-28 15:20 ` Cornelia Huck
2016-06-28 15:40 ` Marcel Apfelbaum
2016-06-28 17:15 ` Cornelia Huck
2016-06-24 13:28 ` [Qemu-devel] [PATCH 08/17] s390x/pci: introduce S390PCIIOMMU Cornelia Huck
2016-06-24 13:28 ` [Qemu-devel] [PATCH 09/17] s390x/pci: introduce S390PCIBusDevice qdev Cornelia Huck
2016-06-28 14:49 ` Marcel Apfelbaum
2016-06-28 15:21 ` Cornelia Huck
2016-06-28 15:43 ` Marcel Apfelbaum
2016-06-24 13:28 ` [Qemu-devel] [PATCH 10/17] s390x/pci: enable uid-checking Cornelia Huck
2016-06-24 13:29 ` [Qemu-devel] [PATCH 11/17] s390x/pci: enable zpci hot-plug/hot-unplug Cornelia Huck
2016-06-24 13:29 ` [Qemu-devel] [PATCH 12/17] s390x/pci: add checkings in CLP_SET_PCI_FN Cornelia Huck
2016-06-24 13:29 ` [Qemu-devel] [PATCH 13/17] s390x/pci: refactor s390_pci_find_dev_by_idx Cornelia Huck
2016-06-24 13:29 ` [Qemu-devel] [PATCH 14/17] s390x/pci: refactor list_pci Cornelia Huck
2016-06-24 13:29 ` [Qemu-devel] [PATCH 15/17] s390x/pci: fix stpcifc_service_call Cornelia Huck
2016-06-24 13:29 ` [Qemu-devel] [PATCH 16/17] s390x/pci: replace fid with idx in msg data of msix Cornelia Huck
2016-06-24 13:29 ` [Qemu-devel] [PATCH 17/17] s390x/pci: make hot-unplug handler smoother Cornelia Huck
2016-06-28 14:33 ` [Qemu-devel] [PATCH 00/17] s390x: the big pci update Marcel Apfelbaum
2016-06-28 15:02 ` Cornelia Huck
2016-06-28 16:35 ` Marcel Apfelbaum [this message]
2016-07-01 12:59 ` Cornelia Huck
2016-07-05 13:51 ` Cornelia Huck
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=5772A76F.6070506@redhat.com \
--to=marcel@redhat.com \
--cc=agraf@suse.de \
--cc=borntraeger@de.ibm.com \
--cc=cornelia.huck@de.ibm.com \
--cc=jfrei@linux.vnet.ibm.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=zyimin@linux.vnet.ibm.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.