From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: qemu-devel@nongnu.org, qemu-ppc@nongnu.org,
bharata@linux.vnet.ibm.com, nfont@linux.vnet.ibm.com,
jallen@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [PATCH 09/11] spapr: Add DRC count indexed hotplug identifier type
Date: Fri, 14 Oct 2016 13:52:05 -0500 [thread overview]
Message-ID: <20161014185205.29726.69095@loki> (raw)
In-Reply-To: <20161014045937.GK28562@umbus>
Quoting David Gibson (2016-10-13 23:59:37)
> On Wed, Oct 12, 2016 at 06:13:57PM -0500, Michael Roth wrote:
> > From: Bharata B Rao <bharata@linux.vnet.ibm.com>
> >
> > Add support for DRC count indexed hotplug ID type which is primarily
> > needed for memory hot unplug. This type allows for specifying the
> > number of DRs that should be plugged/unplugged starting from a given
> > DRC index.
> >
> > Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
> > * updated rtas_event_log_v6_hp to reflect count/index field ordering
> > used in PAPR hotplug ACR
> > Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> > ---
> > hw/ppc/spapr_events.c | 74 ++++++++++++++++++++++++++++++++++++++++----------
> > include/hw/ppc/spapr.h | 4 +++
> > 2 files changed, 63 insertions(+), 15 deletions(-)
> >
> > diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
> > index f8bbec6..eeca800 100644
> > --- a/hw/ppc/spapr_events.c
> > +++ b/hw/ppc/spapr_events.c
> > @@ -175,6 +175,16 @@ struct epow_log_full {
> > struct rtas_event_log_v6_epow epow;
> > } QEMU_PACKED;
> >
> > +union drc_identifier {
> > + uint32_t index;
> > + uint32_t count;
> > + struct {
> > + uint32_t count;
> > + uint32_t index;
> > + } count_indexed;
> > + char name[1];
> > +} QEMU_PACKED;
> > +
> > struct rtas_event_log_v6_hp {
> > #define RTAS_LOG_V6_SECTION_ID_HOTPLUG 0x4850 /* HP */
> > struct rtas_event_log_v6_section_header hdr;
> > @@ -191,12 +201,9 @@ struct rtas_event_log_v6_hp {
> > #define RTAS_LOG_V6_HP_ID_DRC_NAME 1
> > #define RTAS_LOG_V6_HP_ID_DRC_INDEX 2
> > #define RTAS_LOG_V6_HP_ID_DRC_COUNT 3
> > +#define RTAS_LOG_V6_HP_ID_DRC_COUNT_INDEXED 4
> > uint8_t reserved;
> > - union {
> > - uint32_t index;
> > - uint32_t count;
> > - char name[1];
> > - } drc;
> > + union drc_identifier drc_id;
> > } QEMU_PACKED;
> >
> > struct hp_log_full {
> > @@ -457,7 +464,7 @@ static void spapr_hotplug_set_signalled(uint32_t drc_index)
> >
> > static void spapr_hotplug_req_event(uint8_t hp_id, uint8_t hp_action,
> > sPAPRDRConnectorType drc_type,
> > - uint32_t drc)
> > + union drc_identifier *drc_id)
> > {
> > sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
> > struct hp_log_full *new_hp;
> > @@ -502,7 +509,7 @@ static void spapr_hotplug_req_event(uint8_t hp_id, uint8_t hp_action,
> > case SPAPR_DR_CONNECTOR_TYPE_PCI:
> > hp->hotplug_type = RTAS_LOG_V6_HP_TYPE_PCI;
> > if (hp->hotplug_action == RTAS_LOG_V6_HP_ACTION_ADD) {
> > - spapr_hotplug_set_signalled(drc);
> > + spapr_hotplug_set_signalled(drc_id->index);
> > }
> > break;
> > case SPAPR_DR_CONNECTOR_TYPE_LMB:
> > @@ -520,9 +527,16 @@ static void spapr_hotplug_req_event(uint8_t hp_id, uint8_t hp_action,
> > }
> >
> > if (hp_id == RTAS_LOG_V6_HP_ID_DRC_COUNT) {
> > - hp->drc.count = cpu_to_be32(drc);
> > + hp->drc_id.count = cpu_to_be32(drc_id->count);
> > } else if (hp_id == RTAS_LOG_V6_HP_ID_DRC_INDEX) {
> > - hp->drc.index = cpu_to_be32(drc);
> > + hp->drc_id.index = cpu_to_be32(drc_id->index);
> > + } else if (hp_id == RTAS_LOG_V6_HP_ID_DRC_COUNT_INDEXED) {
> > + /* we should not be using count_indexed value unless the guest
> > + * supports dedicated hotplug event source
> > + */
> > + g_assert(spapr_ovec_test(spapr->ov5_cas, OV5_HP_EVT));
> > + hp->drc_id.count_indexed.count = cpu_to_be32(drc_id->count_indexed.count);
> > + hp->drc_id.count_indexed.index = cpu_to_be32(drc_id->count_indexed.index);
> > }
> >
> > rtas_event_log_queue(RTAS_LOG_TYPE_HOTPLUG, new_hp, true);
> > @@ -535,34 +549,64 @@ void spapr_hotplug_req_add_by_index(sPAPRDRConnector *drc)
> > {
> > sPAPRDRConnectorClass *drck = SPAPR_DR_CONNECTOR_GET_CLASS(drc);
> > sPAPRDRConnectorType drc_type = drck->get_type(drc);
> > - uint32_t index = drck->get_index(drc);
> > + union drc_identifier drc_id;
> >
> > + drc_id.index = drck->get_index(drc);
> > spapr_hotplug_req_event(RTAS_LOG_V6_HP_ID_DRC_INDEX,
> > - RTAS_LOG_V6_HP_ACTION_ADD, drc_type, index);
> > + RTAS_LOG_V6_HP_ACTION_ADD, drc_type, &drc_id);
> > }
> >
> > void spapr_hotplug_req_remove_by_index(sPAPRDRConnector *drc)
> > {
> > sPAPRDRConnectorClass *drck = SPAPR_DR_CONNECTOR_GET_CLASS(drc);
> > sPAPRDRConnectorType drc_type = drck->get_type(drc);
> > - uint32_t index = drck->get_index(drc);
> > + union drc_identifier drc_id;
> >
> > + drc_id.index = drck->get_index(drc);
> > spapr_hotplug_req_event(RTAS_LOG_V6_HP_ID_DRC_INDEX,
> > - RTAS_LOG_V6_HP_ACTION_REMOVE, drc_type, index);
> > + RTAS_LOG_V6_HP_ACTION_REMOVE, drc_type, &drc_id);
> > }
> >
> > void spapr_hotplug_req_add_by_count(sPAPRDRConnectorType drc_type,
> > uint32_t count)
> > {
> > + union drc_identifier drc_id;
> > +
> > + drc_id.count = count;
> > spapr_hotplug_req_event(RTAS_LOG_V6_HP_ID_DRC_COUNT,
> > - RTAS_LOG_V6_HP_ACTION_ADD, drc_type, count);
> > + RTAS_LOG_V6_HP_ACTION_ADD, drc_type, &drc_id);
> > }
> >
> > void spapr_hotplug_req_remove_by_count(sPAPRDRConnectorType drc_type,
> > uint32_t count)
> > {
> > + union drc_identifier drc_id;
> > +
> > + drc_id.count = count;
> > spapr_hotplug_req_event(RTAS_LOG_V6_HP_ID_DRC_COUNT,
> > - RTAS_LOG_V6_HP_ACTION_REMOVE, drc_type, count);
> > + RTAS_LOG_V6_HP_ACTION_REMOVE, drc_type, &drc_id);
> > +}
> > +
> > +void spapr_hotplug_req_add_by_count_indexed(sPAPRDRConnectorType drc_type,
> > + uint32_t count, uint32_t index)
> > +{
> > + union drc_identifier drc_id;
> > +
> > + drc_id.count_indexed.count = count;
> > + drc_id.count_indexed.index = index;
> > + spapr_hotplug_req_event(RTAS_LOG_V6_HP_ID_DRC_COUNT_INDEXED,
> > + RTAS_LOG_V6_HP_ACTION_ADD, drc_type, &drc_id);
> > +}
> > +
> > +void spapr_hotplug_req_remove_by_count_indexed(sPAPRDRConnectorType drc_type,
> > + uint32_t count, uint32_t index)
> > +{
> > + union drc_identifier drc_id;
> > +
> > + drc_id.count_indexed.count = count;
> > + drc_id.count_indexed.index = index;
> > + spapr_hotplug_req_event(RTAS_LOG_V6_HP_ID_DRC_COUNT_INDEXED,
> > + RTAS_LOG_V6_HP_ACTION_REMOVE, drc_type, &drc_id);
> > }
> >
> > static void check_exception(PowerPCCPU *cpu, sPAPRMachineState *spapr,
> > diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> > index 2295ac6..11a2597 100644
> > --- a/include/hw/ppc/spapr.h
> > +++ b/include/hw/ppc/spapr.h
> > @@ -602,6 +602,10 @@ void spapr_hotplug_req_add_by_count(sPAPRDRConnectorType drc_type,
> > uint32_t count);
> > void spapr_hotplug_req_remove_by_count(sPAPRDRConnectorType drc_type,
> > uint32_t count);
> > +void spapr_hotplug_req_add_by_count_indexed(sPAPRDRConnectorType drc_type,
> > + uint32_t count, uint32_t index);
> > +void spapr_hotplug_req_remove_by_count_indexed(sPAPRDRConnectorType drc_type,
> > + uint32_t count, uint32_t index);
> > void spapr_cpu_init(sPAPRMachineState *spapr, PowerPCCPU *cpu, Error **errp);
> > void *spapr_populate_hotplug_cpu_dt(CPUState *cs, int *fdt_offset,
> > sPAPRMachineState *spapr);
Was this a mis-fire?
>
> --
> 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
next prev parent reply other threads:[~2016-10-14 18:53 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-12 23:13 [Qemu-devel] [RFC PATCH 00/11] spapr: option vector re-work and memory unplug support Michael Roth
2016-10-12 23:13 ` [Qemu-devel] [PATCH 01/11] spapr_ovec: initial implementation of option vector helpers Michael Roth
2016-10-14 2:39 ` David Gibson
2016-10-14 17:49 ` Michael Roth
2016-10-12 23:13 ` [Qemu-devel] [PATCH 02/11] spapr_hcall: use spapr_ovec_* interfaces for CAS options Michael Roth
2016-10-14 3:02 ` David Gibson
2016-10-14 4:20 ` David Gibson
2016-10-14 7:10 ` Bharata B Rao
2016-10-12 23:13 ` [Qemu-devel] [PATCH 03/11] spapr: add option vector handling in CAS-generated resets Michael Roth
2016-10-14 4:15 ` David Gibson
2016-10-12 23:13 ` [Qemu-devel] [PATCH 04/11] spapr: improve ibm, architecture-vec-5 property handling Michael Roth
2016-10-12 23:13 ` [Qemu-devel] [PATCH 05/11] spapr: fix inheritance chain for default machine options Michael Roth
2016-10-14 4:34 ` David Gibson
2016-10-12 23:13 ` [Qemu-devel] [PATCH 06/11] spapr: update spapr hotplug documentation Michael Roth
2016-10-14 4:35 ` David Gibson
2016-10-12 23:13 ` [Qemu-devel] [PATCH 07/11] spapr: add hotplug interrupt machine options Michael Roth
2016-10-14 4:38 ` David Gibson
2016-10-14 18:08 ` Michael Roth
2016-10-14 8:37 ` Bharata B Rao
2016-10-14 18:04 ` Michael Roth
2016-10-17 2:51 ` Bharata B Rao
2016-10-12 23:13 ` [Qemu-devel] [PATCH 08/11] spapr_events: add support for dedicated hotplug event source Michael Roth
2016-10-14 4:56 ` David Gibson
2016-10-14 18:44 ` Michael Roth
2016-10-16 23:39 ` David Gibson
2016-10-14 8:46 ` Bharata B Rao
2016-10-14 18:51 ` Michael Roth
2016-10-12 23:13 ` [Qemu-devel] [PATCH 09/11] spapr: Add DRC count indexed hotplug identifier type Michael Roth
2016-10-14 4:59 ` David Gibson
2016-10-14 18:52 ` Michael Roth [this message]
2016-10-12 23:13 ` [Qemu-devel] [PATCH 10/11] spapr: use count+index for memory hotplug Michael Roth
2016-10-12 23:13 ` [Qemu-devel] [PATCH 11/11] spapr: Memory hot-unplug support Michael Roth
2016-10-14 7:05 ` Bharata B Rao
2016-10-14 4:10 ` [Qemu-devel] [RFC PATCH 00/11] spapr: option vector re-work and memory unplug support no-reply
2016-10-14 5:43 ` David Gibson
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=20161014185205.29726.69095@loki \
--to=mdroth@linux.vnet.ibm.com \
--cc=bharata@linux.vnet.ibm.com \
--cc=david@gibson.dropbear.id.au \
--cc=jallen@linux.vnet.ibm.com \
--cc=nfont@linux.vnet.ibm.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.