On Wed, 2016-12-14 at 20:26 +0200, Marcel Apfelbaum wrote:
> > > > > Maybe I just don't quite get the
relationship between Root
> > > > > Complexes and Root Buses, but I guess my question is: what
> > > > > is preventing us from simply doing whatever a
> > > > > spapr-pci-host-bridge is doing in order to expose a legacy
> > > > > PCI Root Bus (pci.*) to the guest, and create a new
> > > > > spapr-pcie-host-bridge that exposes a PCIe Root Bus (pcie.*)
> > > > > instead?
> > > >
> > > > Hrm, the suggestion of providing both a vanilla-PCI and PCI-E host
> > > > bridge came up before. I think one of us spotted a problem with
that,
> > > > but I don't recall what it was now. I guess one is how libvirt
would
> > > > map it's stupid-fake-domain-numbers to which root bus to use.
> >
> > This would be a weird configuration, I never heard of something like that
> > on a bare metal machine, but I never worked on pseries, who knows...
>
> Which aspect? Having multiple independent host bridges is perfectly
> reasonable - x86 just doesn't do it well for rather stupid historical
> reasons.
I agree about the multiple host-bridges, is actually what pxb/pxb-pcie
devices (kind of) do.
I was talking about having one PCI PHB and another PHB which is PCI Express.
I was referring to one system having both PCI and PCIe PHBs.
Sorry this confused you: what I was talking about was just
having both a legacy PCI PHB and a PCI Express PHB available
in QEMU, not using both for the same guest. The user would
pick one or the other and stick with it.
> Again, one possible option here is to continue to treat pseries
as
> having a vanilla-PCI bus, but with a special flag saying that it's
> magically able to connect PCI-E devices.
A PCIe bus supporting PCI devices is strange (QEMU allows it ...),
but a PCI bus supporting PCIe devices is hard to "swallow".
I agree.
I would say maybe make it a special case of a PCIe bus with different
rules.
It can derive from the PCIe bus class and override the usual behavior
with PAPR specific rule which happen to be similar with the PCI bus rules.
It's pretty clear by now that libvirt will need to have some
special handling of pseries guests. Having to choose between
"weird legacy PCI" and "weird PCI Express", I think I'd rather
go with the latter :)
--
Andrea Bolognani / Red Hat / Virtualization