From: Greg Kurz <groug@kaod.org>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
Michael Roth <mdroth@linux.vnet.ibm.com>,
qemu-devel@nongnu.org, 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] [Qemu-ppc] [for-2.11 PATCH 18/26] spapr: create DR connectors for PHBs
Date: Wed, 6 Sep 2017 13:32:09 +0200 [thread overview]
Message-ID: <20170906133209.0a497a2c@bahia> (raw)
In-Reply-To: <20170731025825.GC2652@umbus.fritz.box>
[-- Attachment #1: Type: text/plain, Size: 7540 bytes --]
On Mon, 31 Jul 2017 12:58:25 +1000
David Gibson <david@gibson.dropbear.id.au> wrote:
> On Fri, Jul 28, 2017 at 12:30:35PM +0200, Greg Kurz wrote:
> > On Fri, 28 Jul 2017 13:49:25 +1000
> > David Gibson <david@gibson.dropbear.id.au> wrote:
> >
> > > On Tue, Jul 25, 2017 at 08:01:50PM +0200, Greg Kurz wrote:
> > > > From: Michael Roth <mdroth@linux.vnet.ibm.com>
> > > >
> > > > Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> > > > Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> > > > Signed-off-by: Greg Kurz <groug@kaod.org>
> > >
> > >
> > >
> > > > ---
> > > > Changes since RFC:
> > > > - rebased against ppc-for-2.10 (reset hooks registering already merged)
> > > > - added new DRC type for PHB
> > > > ---
> > > > hw/ppc/spapr.c | 15 +++++++++++++++
> > > > hw/ppc/spapr_drc.c | 17 +++++++++++++++++
> > > > include/hw/ppc/spapr_drc.h | 8 ++++++++
> > > > 3 files changed, 40 insertions(+)
> > > >
> > > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > > > index 8dc505343c0f..5950c009ab7e 100644
> > > > --- a/hw/ppc/spapr.c
> > > > +++ b/hw/ppc/spapr.c
> > > > @@ -98,6 +98,9 @@
> > > >
> > > > #define PHANDLE_XICP 0x00001111
> > > >
> > > > +/* maximum number of hotpluggable PHBs */
> > > > +#define SPAPR_DRC_MAX_PHB 256
> > >
> > > I wonder if we should actually make this a machine property.
> > >
> >
> > It makes sense.
> >
> > Also, if all PHBs are instanciated with index != -1, we're limited to 31.
> > Maybe this could be the default value for the machine property instead of
> > 256 then ?
>
> Actually, if we're binding it back to index, which has a hard limit,
> then it no longer makes sense to have it as a property and we should
> go back to a constant (well, it could vary by machine type version).
>
But I guess that the hard limit of 31 as described in the changelog of
commit 357d1e3bc7d2d80e5271bc4f3ac8537e30dc8046 still holds, doesn't it ?
Because some guest versions (including most current distro kernels) can't
access PCI MMIO above 64 TiB, we put all the PCI windows between 32 TiB and
64 TiB. This is broken into 1 TiB chunks. The first 1 TiB contains the
PIO (64 kiB) and 32-bit MMIO (2 GiB) windows for all of the PHBs. Each
subsequent TiB chunk contains a naturally aligned 64-bit MMIO window for
one PHB each.
This reduces the number of allowed PHBs (without full manual configuration
of all the windows) from 256 to 31, but this should still be plenty in
practice.
Not sure why a machine type version would have a different limit. Can
you think of a use case ?
> > > > static ICSState *spapr_ics_create(sPAPRMachineState *spapr,
> > > > const char *type_ics,
> > > > int nr_irqs, Error **errp)
> > > > @@ -2384,6 +2387,18 @@ static void ppc_spapr_init(MachineState *machine)
> > > >
> > > > spapr->dr_phb_enabled = smc->dr_phb_enabled;
> > > >
> > > > + /* Setup hotplug / dynamic-reconfiguration connectors. top-level
> > > > + * connectors (described in root DT node's "ibm,drc-types" property)
> > > > + * are pre-initialized here. additional child connectors (such as
> > > > + * connectors for a PHBs PCI slots) are added as needed during their
> > > > + * parent's realization.
> > > > + */
> > > > + if (spapr->dr_phb_enabled) {
> > > > + for (i = 0; i < SPAPR_DRC_MAX_PHB; i++) {
> > > > + spapr_dr_connector_new(OBJECT(machine), TYPE_SPAPR_DRC_PHB, i);
> > > > + }
> > > > + }
> > > > +
> > > > /* Set up PCI */
> > > > spapr_pci_rtas_init();
> > > >
> > > > diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
> > > > index eb8024d37c54..2e1049ce61c7 100644
> > > > --- a/hw/ppc/spapr_drc.c
> > > > +++ b/hw/ppc/spapr_drc.c
> > > > @@ -697,6 +697,15 @@ static void spapr_drc_lmb_class_init(ObjectClass *k, void *data)
> > > > drck->release = spapr_lmb_release;
> > > > }
> > > >
> > > > +static void spapr_drc_phb_class_init(ObjectClass *k, void *data)
> > > > +{
> > > > + sPAPRDRConnectorClass *drck = SPAPR_DR_CONNECTOR_CLASS(k);
> > > > +
> > > > + drck->typeshift = SPAPR_DR_CONNECTOR_TYPE_SHIFT_PHB;
> > > > + drck->typename = "PHB";
> > > > + drck->drc_name_prefix = "PHB ";
> > > > +}
> > > > +
> > > > static const TypeInfo spapr_dr_connector_info = {
> > > > .name = TYPE_SPAPR_DR_CONNECTOR,
> > > > .parent = TYPE_DEVICE,
> > > > @@ -740,6 +749,13 @@ static const TypeInfo spapr_drc_lmb_info = {
> > > > .class_init = spapr_drc_lmb_class_init,
> > > > };
> > > >
> > > > +static const TypeInfo spapr_drc_phb_info = {
> > > > + .name = TYPE_SPAPR_DRC_PHB,
> > > > + .parent = TYPE_SPAPR_DRC_LOGICAL,
> > >
> > > I thought PHB DRCs were physical..
> > >
> >
> > My understanding is that only PCI IOAs need a physical DRC.
> >
> > From LoPAPR v1.1 (March 24, 2016):
> >
> > 13.7 Logical Resource Dynamic Reconfiguration (LRDR)
> >
> > The Logical Resource Dynamic Reconfiguration option allows a platform to make available and recover platform re-
> > sources such as CPUs, Memory Regions, Processor Host Bridges, and I/O slots to/from its operating OS image(s).
> >
> > ...
> >
> > The device tree contains logical resource DR connectors for the maximum number of resources that the platform can
> > allocate to the specific OS. In some cases such as for processors and PHBs...
> >
> > and
> >
> > Table 240. Currently Defined DR Connector Types
> >
> > | PHB | Logical PCI Host Bridge |
>
> Ah, my mistake.
>
> >
> > > > + .instance_size = sizeof(sPAPRDRConnector),
> > > > + .class_init = spapr_drc_phb_class_init,
> > > > +};
> > > > +
> > > > /* helper functions for external users */
> > > >
> > > > sPAPRDRConnector *spapr_drc_by_index(uint32_t index)
> > > > @@ -1179,6 +1195,7 @@ static void spapr_drc_register_types(void)
> > > > type_register_static(&spapr_drc_cpu_info);
> > > > type_register_static(&spapr_drc_pci_info);
> > > > type_register_static(&spapr_drc_lmb_info);
> > > > + type_register_static(&spapr_drc_phb_info);
> > > >
> > > > spapr_rtas_register(RTAS_SET_INDICATOR, "set-indicator",
> > > > rtas_set_indicator);
> > > > diff --git a/include/hw/ppc/spapr_drc.h b/include/hw/ppc/spapr_drc.h
> > > > index a7958d0a8d14..535fc61b98a8 100644
> > > > --- a/include/hw/ppc/spapr_drc.h
> > > > +++ b/include/hw/ppc/spapr_drc.h
> > > > @@ -69,6 +69,14 @@
> > > > #define SPAPR_DRC_LMB(obj) OBJECT_CHECK(sPAPRDRConnector, (obj), \
> > > > TYPE_SPAPR_DRC_LMB)
> > > >
> > > > +#define TYPE_SPAPR_DRC_PHB "spapr-drc-phb"
> > > > +#define SPAPR_DRC_PHB_GET_CLASS(obj) \
> > > > + OBJECT_GET_CLASS(sPAPRDRConnectorClass, obj, TYPE_SPAPR_DRC_PHB)
> > > > +#define SPAPR_DRC_PHB_CLASS(klass) \
> > > > + OBJECT_CLASS_CHECK(sPAPRDRConnectorClass, klass, TYPE_SPAPR_DRC_PHB)
> > > > +#define SPAPR_DRC_PHB(obj) OBJECT_CHECK(sPAPRDRConnector, (obj), \
> > > > + TYPE_SPAPR_DRC_PHB)
> > > > +
> > > > /*
> > > > * Various hotplug types managed by sPAPRDRConnector
> > > > *
> > > >
> > >
> >
>
>
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
next prev parent reply other threads:[~2017-09-06 11:32 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 ` Greg Kurz [this message]
2017-09-13 12:23 ` [Qemu-devel] [Qemu-ppc] " 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
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=20170906133209.0a497a2c@bahia \
--to=groug@kaod.org \
--cc=bharata@linux.vnet.ibm.com \
--cc=danielhb@linux.vnet.ibm.com \
--cc=david@gibson.dropbear.id.au \
--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).