From: David Gibson <david@gibson.dropbear.id.au>
To: Alexey Kardashevskiy <aik@ozlabs.ru>
Cc: Andrea Bolognani <abologna@redhat.com>,
Greg Kurz <groug@kaod.org>, Paolo Bonzini <pbonzini@redhat.com>,
Alex Williamson <alex.williamson@redhat.com>,
qemu-ppc@nongnu.org, qemu-devel@nongnu.org,
libvir-list@redhat.com, Michael Roth <mdroth@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [Qemu-ppc] [RFC PATCH qemu] spapr_pci: Create PCI-express root bus by default
Date: Wed, 23 Nov 2016 16:02:14 +1100 [thread overview]
Message-ID: <20161123050214.GE17795@umbus.fritz.box> (raw)
In-Reply-To: <98244c30-1397-5a1b-eb9a-446f41e9890e@ozlabs.ru>
[-- Attachment #1: Type: text/plain, Size: 4566 bytes --]
On Tue, Nov 22, 2016 at 01:26:49PM +1100, Alexey Kardashevskiy wrote:
> On 22/11/16 00:08, Andrea Bolognani wrote:
> > On Mon, 2016-11-21 at 13:12 +1100, Alexey Kardashevskiy wrote:
> >>>>> 1) switch to PCI Express on newer machine types, and
> >>>>> expose some sort of capability through QMP so that
> >>>>> libvirt can know about the switch
> >>>>>
> >>>>> [...]
> >>>>> Option 1) would break horribly with existing libvirt
> >>>>> versions, and so would Option 2) if we default to using
> >>>>
> >>>> How exactly 1) will break libvirt? Migrating from pseries-2.7 to
> >>>> pseries-2.8 does not work anyway, and machines are allowed to behave
> >>>> different from version to version, what distinct difference will using
> >>>> "pseries-pcie-X.Y" make?
> >>>
> >>> Existing libvirt versions assume that pseries guests have
> >>
> >> If libvirt is using just "pseries" (without a version), then having a
> >> virtual PCIe-PCI bridge (and "pci.0" always available by default) will do it.
> >
> > Please don't. Any device that is included in the guest
> > by default and can't be turned off makes libvirt's life
> > significantly more difficult (see below).
> >
> >> If libvirt is using a specific version of pseries, then it already knows
> >> that <=2.7 has pci.0 as a root, pcie.0 otherwise. libvirt has a knowledge
> >> what QEMU version has what, right?
> >
> > It doesn't yet, that's the point :)
> >
> > We *could* add such knowledge to libvirt[1], but *existing*
> > libvirt versions would still not know about it, which means
> > that upgrading QEMU withough upgrading libvirt will result
> > in failure to create new guests.
> >
> >
> >> In what scenario will an additional machine type help?
> >
> > Because then libvirt could learn that
> >
> > pseries-x.y <-> pci.0
> > pseries-pcie-x.y <-> pcie.0
> >
> > the same way it already knows that
> >
> > pc-i440fx-x.y <-> pci.0
> > pc-q35-x.y <-> pcie.0
> >
> > and choosing between one or the other would be, I think,
> > much easier for the user as well.
> >
> >>> a legacy PCI root bus, and will base their PCI address
> >>> allocation / PCI topology decisions on that fact: they
> >>> will, for example, use legacy PCI bridges.
> >>>
> >>> So if you used a new QEMU binary with a libvirt version
> >>> that doesn't know about the change, new guests would end up
> >>> using the wrong controllers. Existing guests would not be
> >>> affected as they would stick with the older machine types,
> >>> of course.
> >>>
> >>>> I believe after we introduced the very first
> >>>> pseries-pcie-X.Y, we will just stop adding new pseries-X.Y.
> >>>
> >>> Isn't i440fx still being updated despite the fact that q35
> >>> exists? Granted, there are a lot more differences between
> >>> those two machine types than just the root bus type.
> >>
> >> I do not know about i440<->q35 but in pseries the difference is going to be
> >> very simple.
> >>
> >> For example, we did not change the machine type when we switched from
> >> default OHCI to XHCI, switching from PCI to PCIe does not sound like we
> >> need a whole new machine type for this either.
> >
> > The change from OHCI to XHCI only affected the *default* USB
> > controller, which libvirt tries its best not to use anyway:
> > instead, it will prefer to use '-M ...,usb=off' along with
> > '-device ...' and set both the controller model and its PCI
> > address explicitly, partially to shield its users from such
> > changes in QEMU.
>
>
> Ok. Always likes this approach really. We should start moving to this
> direction with PHB - stop adding the default PHB at all when -nodefaults is
> passed (or -machine pseries,pci=off ?) and let libvirt manage PHBs itself
> (and provide another spapr-phb type like spapr-pcie-host-bridge or add a
> "pcie_root_bus_type" property to the existing PHB type).
>
> What will be wrong with this approach?
Hm, that's a good point. If were removing the default PHB entirely,
that I would consider a possible case for a new machine type. Putting
construction of the PHBs into libvirt's hand could make life simpler
there. Although it would make it a bit of a pain for people starting
qemu by hand.
I think this option is worth some thought.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2016-11-23 5:14 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-28 7:56 [Qemu-devel] [RFC PATCH qemu] spapr_pci: Create PCI-express root bus by default Alexey Kardashevskiy
2016-10-28 10:07 ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
2016-10-31 2:53 ` David Gibson
2016-10-31 4:10 ` Alexey Kardashevskiy
2016-11-01 2:46 ` David Gibson
2016-11-15 14:02 ` Andrea Bolognani
2016-11-17 2:02 ` Alexey Kardashevskiy
2016-11-18 6:11 ` David Gibson
2016-11-18 8:17 ` Andrea Bolognani
2016-11-21 2:12 ` Alexey Kardashevskiy
2016-11-21 13:08 ` Andrea Bolognani
2016-11-22 2:26 ` Alexey Kardashevskiy
2016-11-23 5:02 ` David Gibson [this message]
2016-11-25 14:36 ` Andrea Bolognani
2016-12-02 3:37 ` David Gibson
2016-11-22 14:07 ` [Qemu-devel] [libvirt] " Eric Blake
2016-11-23 5:00 ` [Qemu-devel] " David Gibson
2016-11-25 13:46 ` Andrea Bolognani
2016-12-02 4:18 ` David Gibson
2016-12-02 5:17 ` Benjamin Herrenschmidt
2016-12-02 5:50 ` David Gibson
2016-12-02 21:41 ` Benjamin Herrenschmidt
2016-12-03 1:02 ` Alexey Kardashevskiy
2016-12-05 19:06 ` [Qemu-devel] [libvirt] " Laine Stump
2016-12-05 20:54 ` Laine Stump
2016-12-07 3:34 ` David Gibson
2016-12-06 17:30 ` [Qemu-devel] " Andrea Bolognani
2016-12-07 4:11 ` David Gibson
2016-12-07 16:42 ` Andrea Bolognani
2016-12-13 12:25 ` Marcel Apfelbaum
2016-12-13 13:15 ` Greg Kurz
2016-12-13 15:15 ` Benjamin Herrenschmidt
2016-12-14 2:48 ` David Gibson
2016-12-14 12:02 ` Marcel Apfelbaum
2016-12-14 2:46 ` David Gibson
2016-12-14 18:26 ` Marcel Apfelbaum
2016-12-15 21:59 ` Benjamin Herrenschmidt
2016-12-19 17:39 ` Andrea Bolognani
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=20161123050214.GE17795@umbus.fritz.box \
--to=david@gibson.dropbear.id.au \
--cc=abologna@redhat.com \
--cc=aik@ozlabs.ru \
--cc=alex.williamson@redhat.com \
--cc=groug@kaod.org \
--cc=libvir-list@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/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.