From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: David Gibson <david@gibson.dropbear.id.au>,
Bharata B Rao <bharata@linux.vnet.ibm.com>
Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [FIX PATCH] spapr_drc: Return correct state for logical DR in entity_sense()
Date: Tue, 08 Sep 2015 17:03:25 -0500 [thread overview]
Message-ID: <20150908220325.10296.24993@loki> (raw)
In-Reply-To: <20150908210356.10296.36458@loki>
Quoting Michael Roth (2015-09-08 16:03:56)
> Quoting David Gibson (2015-09-07 20:22:50)
> > On Mon, Sep 07, 2015 at 11:37:04AM +0530, Bharata B Rao wrote:
> > > When drmgr is run in the guest to add a device for which device_add
> > > hasn't been issued in QEMU, configure-connector call fails.
> > > When configure-connector call fails, the guest would release (*)
> > > the previously acquired DRC by setting back the DRC isolation state
> > > to ISOLATED and allocation state to UNUSABLE. These calls will be issued
> > > only if get-sensor-state call returns PRESENT state. However currently for
> > > a logical DR, entity_sense() would unconditinally return UNUSABLE
> > > state only. This prevents any subsequent hotplug of the device with
> > > that DRC.
>
> This seems a little odd. I think we default to ALLOCATION_STATE_UNUSABLE
> for logical DR, and it's up the guest to transition to USABLE, which
> probably happens prior to the configure-connector calls. So I think the
> net effect of this fix is that guest will see these unallocated/unattached
> resources the same way they would a resource that was actually attached
> via device_add, and all we're really doing is working around the
> eventual configuration failure that that will lead to by pretending a
> resource was actually there.
>
> According to PAPR+ 2.7:
>
> 13.7.3.1 Acquire Logical Resource from Resource Pool:
>
> If the state is “unusable” the OS issues set-indicator (allocation-state, usable) to attempt to allocate the re-
> source. Similarly, if the state is “available for exchange” the OS issues set-indicator (allocation-state, ex-
> change) to attempt to allocate the resource, and if the state is “available for recovery” the OS issues
> set-indicator (allocation-state, recover) to attempt to allocate the resource.
>
> and
>
> 13.7 Logical Resource Dynamic Reconfiguration (LRDR):
>
> The OS may use the get-sensor-state RTAS call with the dr-entity-sense token to deter-
> mine if a given drc-index refers to a connector that is currently usable for DR operations. If the connector is not
> currently usable the return state is “DR entity unusable” (2). A set-indicator (isolation state) RTAS call to an unusable
> connector or (dr-indicator) to any logical resource connector results in a “No such indicator implemented” return sta-
> tus.
>
> So I think maybe the proper fix is to make sure that
> drc->set_indicator_state() fails with an error that indicates to RTAS to
> return NO_SENSOR (-3) for cases where we haven't attached a resource
> to the DRC via device_add.
Patch incoming:
spapr_drc: don't allow 'empty' DRCs to be unisolated
applies to spapr-next but requires revert of this patch.
Bharata, can you give it a spin with CPU hotplug and see if it fixes the
issue you hit?
>
> Which also kind of re-opens the discussion of whether or not
> drc->set_indicator_state() should return RTAS errors directly. I'd
> still stray away from that for now but maybe if we get more cases
> like this it'll start becoming more practical.
I'm starting to second-guess myself on this. I'm trying to maintain
separation between RTAS/DRC but result is a bit pathological. Feel free
to comment in the above patch.
Just FYI: original author names appear to have gotten lost in recent
spapr-next rebase.
>
> > >
> > > Fix this by returning the right state in entity_sense() by checking
> > > the allocation_state of DRC.
> > >
> > > (*) https://lists.ozlabs.org/pipermail/linuxppc-dev/2015-September/133430.html
> > >
> > > Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
> > > Cc: Michael Roth <mdroth@linux.vnet.ibm.com>
> >
> > Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> >
> > and applied to my tree.
> >
> > > ---
> > > hw/ppc/spapr_drc.c | 6 +++++-
> > > 1 file changed, 5 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
> > > index 9ce844a..2586065 100644
> > > --- a/hw/ppc/spapr_drc.c
> > > +++ b/hw/ppc/spapr_drc.c
> > > @@ -186,7 +186,11 @@ static sPAPRDREntitySense entity_sense(sPAPRDRConnector *drc)
> > > */
> > > state = SPAPR_DR_ENTITY_SENSE_EMPTY;
> > > } else {
> > > - state = SPAPR_DR_ENTITY_SENSE_UNUSABLE;
> > > + if (drc->allocation_state == SPAPR_DR_ALLOCATION_STATE_UNUSABLE) {
> > > + state = SPAPR_DR_ENTITY_SENSE_UNUSABLE;
> > > + } else {
> > > + state = SPAPR_DR_ENTITY_SENSE_PRESENT;
> > > + }
> > > }
> > > }
> > >
> >
> > --
> > 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:[~2015-09-08 22:03 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-07 6:07 [Qemu-devel] [FIX PATCH] spapr_drc: Return correct state for logical DR in entity_sense() Bharata B Rao
2015-09-08 1:22 ` David Gibson
2015-09-08 21:03 ` Michael Roth
2015-09-08 21:06 ` Michael Roth
2015-09-08 22:03 ` Michael Roth [this message]
2015-09-09 4:02 ` Bharata B Rao
2015-09-09 6:05 ` David Gibson
2015-09-09 4:13 ` 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=20150908220325.10296.24993@loki \
--to=mdroth@linux.vnet.ibm.com \
--cc=bharata@linux.vnet.ibm.com \
--cc=david@gibson.dropbear.id.au \
--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.