From: David Gibson <david@gibson.dropbear.id.au>
To: Greg Kurz <groug@kaod.org>
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>,
qemu-devel@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>,
Michael Roth <mdroth@linux.vnet.ibm.com>,
qemu-ppc@nongnu.org, Bharata B Rao <bharata@linux.vnet.ibm.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [for-2.11 PATCH 26/26] spapr: add hotplug hooks for PHB hotplug
Date: Wed, 2 Aug 2017 12:39:12 +1000 [thread overview]
Message-ID: <20170802023912.GD2838@umbus.fritz.box> (raw)
In-Reply-To: <20170801173046.3805979d@bahia.lan>
[-- Attachment #1: Type: text/plain, Size: 5070 bytes --]
On Tue, Aug 01, 2017 at 05:30:46PM +0200, Greg Kurz wrote:
> On Fri, 28 Jul 2017 14:24:03 +1000
> David Gibson <david@gibson.dropbear.id.au> wrote:
>
> > On Thu, Jul 27, 2017 at 07:09:55PM +0200, Greg Kurz wrote:
> > > On Thu, 27 Jul 2017 14:41:31 +1000
> > > Alexey Kardashevskiy <aik@ozlabs.ru> wrote:
> > >
> > > > On 26/07/17 18:40, Greg Kurz wrote:
> > > > > Hotplugging PHBs is a machine-level operation, but PHBs reside on the
> > > > > main system bus, so we register spapr machine as the handler for the
> > > > > main system bus.
> > > > >
> > > > > Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> > > > > Signed-off-by: Greg Kurz <groug@kaod.org>
> > > > > ---
> > > > > - rebased against ppc-for-2.10
> > > > > - converted to unplug_request
> > > > > - handle drc_id at pre-plug
> > > > > - reset hotplugged PHB at plug
> > > > > - compatibility with older machine types
> > > > > ---
> > > > > hw/ppc/spapr.c | 114 +++++++++++++++++++++++++++++++++++++++++++
> > > > > hw/ppc/spapr_drc.c | 1
> > > > > hw/ppc/spapr_pci.c | 2 -
> > > > > include/hw/pci-host/spapr.h | 2 +
> > > > > include/hw/ppc/spapr.h | 1
> > > > > 5 files changed, 118 insertions(+), 2 deletions(-)
> > > > >
> > > > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > > > > index 90485054c2e7..589f76ef9fb8 100644
> > > > > --- a/hw/ppc/spapr.c
> > > > > +++ b/hw/ppc/spapr.c
> > > > > @@ -2540,6 +2540,10 @@ static void ppc_spapr_init(MachineState *machine)
> > > > > register_savevm_live(NULL, "spapr/htab", -1, 1,
> > > > > &savevm_htab_handlers, spapr);
> > > > >
> > > > > + if (spapr->dr_phb_enabled) {
> > > > > + qbus_set_hotplug_handler(sysbus_get_default(), OBJECT(machine), NULL);
> > > > > + }
> > > > > +
> > > > > qemu_register_boot_set(spapr_boot_set, spapr);
> > > > >
> > > > > if (kvm_enabled()) {
> > > > > @@ -3238,6 +3242,103 @@ out:
> > > > > error_propagate(errp, local_err);
> > > > > }
> > > > >
> > > > > +static void spapr_phb_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
> > > > > + Error **errp)
> > > > > +{
> > > > > + sPAPRPHBState *sphb = SPAPR_PCI_HOST_BRIDGE(dev);
> > > > > +
> > > > > + if (sphb->drc_id == (uint32_t)-1) {
> > > > > + sphb->drc_id = sphb->index;
> > > > > + }
> > > > > +
> > > > > + if (sphb->drc_id >= SPAPR_DRC_MAX_PHB) {
> > > > > + error_setg(errp, "PHB id %d out of range", sphb->drc_id);
> > > > > + }
> > > >
> > > >
> > > > sphb->index in considered 16bits in the existing code (even though it is
> > > > defined as 32bit) and SPAPR_DRC_MAX_PHB is just 256. I'd suggest using the
> > > > same limit for both, either 256 or 65536 is fine for me.
> > > >
> > > > It is actually a bit weird - it is possible to completely configure few
> > > > PHBs in the command line so they will have index==-1 but PCI hotplug code -
> > > > spapr_phb_get_pci_func_drc() and spapr_phb_realize() - does not check for
> > > > this and just does (sphb->index << 16).
> > >
> > > You're right and this looks like a bug... I'll try to come up with a fix.
> > >
> > > > May be just ditch drc_id, enforce index not to be -1 and use it as drc_id?
> > > >
> > >
> > > This was how Mike did it in the original patchset but David suggested
> > > to introduce drc_id (to preserve existing setups I guess):
> > >
> > > http://patchwork.ozlabs.org/patch/466262/
> >
> > Huh. So I did. But.. sorry, I've changed my mind.
> >
> > The fact that needing a DRC forces us to have a reasonable small id
> > for each PHB seems like a good excuse to make index mandatory - I'm
> > not convinced anyone was actually creating PHBs without index, and
> > this does allow us to simplify a bunch of things.
> >
> > I'd like to see that done as a preliminary cleanup patch, though.
> >
>
> Just to be sure. I could verify that the weirdness reported by Alexey
> causes QEMU to misbehave. Only the first "index-less" PHB has realized
> DRCs:
>
> => subsequent "index-less" PHBs silently ignore hotplugging of PCI devices
>
> => QEMU won't even start with coldplugged devices in these "index-less"
> PHBs
>
> This preliminary cleanup for hotpluggable PHBs is hence also a bug fix
> for current PHBs.
Ok.
> Do we want to fix this long-standing bug in 2.10 ?
No, not worth pushing in this late.
> Do we want to preserve the current buggy behavior for older machine
> types ?
No, I don't think so. I think the reasonable course here is to push
the new behaviour out. Only if someone complains that they were
actually relying on the old behaviour in the wild do we try to
preserve it for the older machine types.
--
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: 833 bytes --]
next prev parent reply other threads:[~2017-08-02 2:39 UTC|newest]
Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-25 17:57 [Qemu-devel] [for-2.11 PATCH 00/26] spapr: add support for PHB hotplug Greg Kurz
2017-07-25 17:58 ` [Qemu-devel] [for-2.11 PATCH 01/26] spapr: move spapr_create_phb() to core machine code Greg Kurz
2017-07-26 3:32 ` Alexey Kardashevskiy
2017-07-26 3:52 ` David Gibson
2017-07-26 8:55 ` Greg Kurz
2017-07-25 17:58 ` [Qemu-devel] [for-2.11 PATCH 02/26] spapr_pci: use memory_region_add_subregion() with DMA windows Greg Kurz
2017-07-26 3:33 ` [Qemu-devel] [Qemu-ppc] " Alexey Kardashevskiy
2017-07-26 3:53 ` David Gibson
2017-07-26 3:56 ` David Gibson
2017-07-25 17:58 ` [Qemu-devel] [for-2.11 PATCH 03/26] spapr_iommu: use g_strdup_printf() instead of snprintf() Greg Kurz
2017-07-26 3:37 ` Alexey Kardashevskiy
2017-07-26 3:57 ` David Gibson
2017-07-26 9:48 ` Greg Kurz
2017-07-25 17:58 ` [Qemu-devel] [for-2.11 PATCH 04/26] spapr_drc: " Greg Kurz
2017-07-26 3:58 ` David Gibson
2017-07-31 10:11 ` Philippe Mathieu-Daudé
2017-07-31 10:34 ` Greg Kurz
2017-07-31 12:53 ` David Gibson
2017-07-31 14:57 ` Philippe Mathieu-Daudé
2017-07-25 17:59 ` [Qemu-devel] [for-2.11 PATCH 05/26] spapr_iommu: convert TCE table object to realize() Greg Kurz
2017-07-26 4:00 ` David Gibson
2017-07-26 4:15 ` [Qemu-devel] [Qemu-ppc] " Alexey Kardashevskiy
2017-07-25 17:59 ` [Qemu-devel] [for-2.11 PATCH 06/26] spapr_pci: parent the MSI memory region to the PHB Greg Kurz
2017-07-26 4:01 ` David Gibson
2017-07-26 4:29 ` [Qemu-devel] [Qemu-ppc] " Alexey Kardashevskiy
2017-07-26 13:56 ` Greg Kurz
2017-07-25 17:59 ` [Qemu-devel] [for-2.11 PATCH 07/26] spapr_drc: fix realize and unrealize Greg Kurz
2017-07-26 4:04 ` David Gibson
2017-07-26 9:36 ` Greg Kurz
2017-07-27 3:44 ` David Gibson
2017-07-25 17:59 ` [Qemu-devel] [for-2.11 PATCH 08/26] spapr_drc: add unrealize method to physical DRC class Greg Kurz
2017-07-26 4:06 ` David Gibson
2017-07-26 14:22 ` Greg Kurz
2017-07-25 17:59 ` [Qemu-devel] [for-2.11 PATCH 09/26] spapr_drc: pass object ownership to parent/owner Greg Kurz
2017-07-26 4:07 ` David Gibson
2017-07-25 18:00 ` [Qemu-devel] [for-2.11 PATCH 10/26] spapr_iommu: " Greg Kurz
2017-07-26 4:08 ` David Gibson
2017-07-25 18:00 ` [Qemu-devel] [for-2.11 PATCH 11/26] spapr_iommu: unregister vmstate at unrealize time Greg Kurz
2017-07-26 4:15 ` David Gibson
2017-07-25 18:00 ` [Qemu-devel] [for-2.11 PATCH 12/26] pci: allow cleanup/unregistration of PCI buses Greg Kurz
2017-07-25 18:00 ` [Qemu-devel] [for-2.11 PATCH 13/26] qdev: store DeviceState's canonical path to use when unparenting Greg Kurz
2017-07-26 5:24 ` David Gibson
2017-07-26 12:03 ` Michael Roth
2017-07-27 16:50 ` Greg Kurz
2017-07-28 2:59 ` David Gibson
2017-07-25 18:01 ` [Qemu-devel] [for-2.11 PATCH 14/26] spapr_pci: add PHB unrealize Greg Kurz
2017-07-25 18:01 ` [Qemu-devel] [for-2.11 PATCH 15/26] spapr: add pseries-2.11 machine type Greg Kurz
2017-07-26 5:28 ` David Gibson
2017-07-25 18:01 ` [Qemu-devel] [for-2.11 PATCH 16/26] spapr: enable PHB hotplug for pseries-2.11 Greg Kurz
2017-07-26 4:42 ` [Qemu-devel] [Qemu-ppc] " Alexey Kardashevskiy
2017-07-26 14:32 ` Greg Kurz
2017-07-27 15:52 ` Michael Roth
2017-07-25 18:01 ` [Qemu-devel] [for-2.11 PATCH 17/26] spapr_pci: introduce drc_id property Greg Kurz
2017-07-28 3:46 ` David Gibson
2017-07-25 18:01 ` [Qemu-devel] [for-2.11 PATCH 18/26] spapr: create DR connectors for PHBs Greg Kurz
2017-07-28 3:49 ` David Gibson
2017-07-28 10:30 ` Greg Kurz
2017-07-31 2:58 ` David Gibson
2017-09-06 11:32 ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
2017-09-13 12:23 ` David Gibson
2017-09-13 12:56 ` Greg Kurz
2017-09-15 9:09 ` David Gibson
2017-07-25 18:02 ` [Qemu-devel] [for-2.11 PATCH 19/26] spapr: populate PHB DRC entries for root DT node Greg Kurz
2017-07-25 20:51 ` Michael Roth
2017-07-26 15:45 ` Greg Kurz
2017-07-26 5:47 ` David Gibson
2017-07-26 15:01 ` Greg Kurz
2017-07-25 18:02 ` [Qemu-devel] [for-2.11 PATCH 20/26] spapr_events: add support for phb hotplug events Greg Kurz
2017-07-25 18:02 ` [Qemu-devel] [for-2.11 PATCH 21/26] qdev: pass an Object * to qbus_set_hotplug_handler() Greg Kurz
2017-07-28 3:50 ` David Gibson
2017-07-25 18:02 ` [Qemu-devel] [for-2.11 PATCH 22/26] spapr_pci: provide node start offset via spapr_populate_pci_dt() Greg Kurz
2017-07-28 3:52 ` David Gibson
2017-07-25 18:02 ` [Qemu-devel] [for-2.11 PATCH 23/26] spapr_pci: add ibm, my-drc-index property for PHB hotplug Greg Kurz
2017-07-25 18:03 ` [Qemu-devel] [for-2.11 PATCH 24/26] spapr: allow guest to update the XICS phandle Greg Kurz
2017-07-26 5:38 ` Alexey Kardashevskiy
2017-07-28 4:02 ` David Gibson
2017-07-28 6:20 ` Thomas Huth
2017-07-31 4:58 ` David Gibson
2017-08-01 2:20 ` Alexey Kardashevskiy
2017-08-01 11:26 ` Greg Kurz
2017-08-02 2:35 ` David Gibson
2017-07-25 18:03 ` [Qemu-devel] [for-2.11 PATCH 25/26] spapr_pci: drop abusive sanity check when migrating the LSI table Greg Kurz
2017-07-28 4:09 ` David Gibson
2017-07-26 3:44 ` [Qemu-devel] [for-2.11 PATCH 00/26] spapr: add support for PHB hotplug Alexey Kardashevskiy
2017-07-26 8:48 ` Greg Kurz
2017-07-26 8:40 ` [Qemu-devel] [for-2.11 PATCH 26/26] spapr: add hotplug hooks " Greg Kurz
2017-07-27 4:41 ` Alexey Kardashevskiy
2017-07-27 17:09 ` Greg Kurz
2017-07-27 18:37 ` Michael Roth
2017-08-01 14:59 ` Greg Kurz
2017-07-28 4:24 ` David Gibson
2017-08-01 15:30 ` Greg Kurz
2017-08-02 2:39 ` David Gibson [this message]
2017-08-02 7:43 ` Greg Kurz
2017-07-26 20:31 ` [Qemu-devel] [Qemu-ppc] [for-2.11 PATCH 00/26] spapr: add support " Daniel Henrique Barboza
2017-07-27 16:39 ` Greg Kurz
2017-07-28 3:27 ` Alexey Kardashevskiy
2017-07-28 3:40 ` David Gibson
2017-07-28 5:35 ` Cédric Le Goater
2017-07-28 8:39 ` Greg Kurz
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=20170802023912.GD2838@umbus.fritz.box \
--to=david@gibson.dropbear.id.au \
--cc=aik@ozlabs.ru \
--cc=bharata@linux.vnet.ibm.com \
--cc=danielhb@linux.vnet.ibm.com \
--cc=groug@kaod.org \
--cc=mdroth@linux.vnet.ibm.com \
--cc=mst@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).