On Thu, 16 Nov 2017 18:51:48 +0100 Pierre Morel <pmo...@linux.vnet.ibm.com> wrote:
> This patch fixes the following BUG: > Even a guest is able to detect virtio_pci device, the init function > the Linux virtio_pci driver will hang because zPCI does not support > the subregions used by virtio_pci. > > It follows that right now the PCI support is very limited > (e.g. pass through of a host vfio device) > To enable features like virtio-pci several modifications needs to be > done. > > As already stated above, Virtio-PCI uses subregions, which may eventually > be discontinuous inside bars instead of a single flat region often used > by real devices. > The address offset being formerly calculated from the BAR base address > must be adapted to the subregions instead of to the single region. > > This patch provides the new calculation for the three kind of BAR > access, zPCI STORE, zPCI LOAD and zPCI STORE BLOCK done by zPCI. > > We use the opportunity to > - enhance the fault detection for zPCI STORE and LOAD, > - enhance the fault detection and to provide the maximum STORE BLOCK > block size, maxstbl, for zPCI STORE BLOCK > - factor out part of the code used to calculate the offset and > access the BARs, > - factor out the code for endianess conversion. I'll play with this a bit, but I think this is good for s390-next. [I'd still like to play with this under tcg as well to make sure we are endian-clean, but I'm making slower progress there than I hoped.]