[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 04/20] spapr_drc.c: do not call spapr_drc_detach() in drc_isolate_
From: |
David Gibson |
Subject: |
[PULL 04/20] spapr_drc.c: do not call spapr_drc_detach() in drc_isolate_logical() |
Date: |
Wed, 10 Mar 2021 15:09:46 +1100 |
From: Daniel Henrique Barboza <danielhb413@gmail.com>
drc_isolate_logical() is used to move the DRC from the "Configured" to
the "Available" state, erroring out if the DRC is in the unexpected
"Unisolate" state and doing nothing (with RTAS_OUT_SUCCESS) if the DRC
is already in "Available" or in "Unusable" state.
When moving from "Configured" to "Available", the DRC is moved to the
LOGICAL_AVAILABLE state, a drc->unplug_requested check is done and, if
true, spapr_drc_detach() is called.
What spapr_drc_detach() does then is:
- set drc->unplug_requested to true. In fact, this is the only place
where unplug_request is set to true;
- does nothing else if drc->state != drck->empty_state. If the DRC
state is equal to drck->empty_state, spapr_drc_release() is
called. For logical DRCs, drck->empty_state = LOGICAL_UNUSABLE.
In short, calling spapr_drc_detach() in drc_isolate_logical() does
nothing. It'll set unplug_request to true again ('again' since it was
already true - otherwise the function wouldn't be called), and will
return without calling spapr_drc_release() because the DRC is not in
LOGICAL_UNUSABLE, since drc_isolate_logical() just moved it to
LOGICAL_AVAILABLE. The only place where the logical DRC is released is
when called from drc_set_unusable(), when it is moved to the
"Unusable" state. As it should, according to PAPR.
Even though calling spapr_drc_detach() in drc_isolate_logical() is
benign, removing it will avoid further thought about the matter. So
let's go ahead and do that.
As a note, this logic was introduced in commit bbf5c878ab76. Since
then, the DRC handling code was refactored and enhanced, and PAPR
itself went through some changes in the DRC area as well. It is
expected that some assumptions we had back then are now deprecated.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20210211225246.17315-2-danielhb413@gmail.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
hw/ppc/spapr_drc.c | 13 -------------
1 file changed, 13 deletions(-)
diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
index 8571d5bafe..84bd3c881f 100644
--- a/hw/ppc/spapr_drc.c
+++ b/hw/ppc/spapr_drc.c
@@ -132,19 +132,6 @@ static uint32_t drc_isolate_logical(SpaprDrc *drc)
drc->state = SPAPR_DRC_STATE_LOGICAL_AVAILABLE;
- /* if we're awaiting release, but still in an unconfigured state,
- * it's likely the guest is still in the process of configuring
- * the device and is transitioning the devices to an ISOLATED
- * state as a part of that process. so we only complete the
- * removal when this transition happens for a device in a
- * configured state, as suggested by the state diagram from PAPR+
- * 2.7, 13.4
- */
- if (drc->unplug_requested) {
- uint32_t drc_index = spapr_drc_index(drc);
- trace_spapr_drc_set_isolation_state_finalizing(drc_index);
- spapr_drc_detach(drc);
- }
return RTAS_OUT_SUCCESS;
}
--
2.29.2
- [PULL 00/20] ppc-for-6.0 queue 20210310, David Gibson, 2021/03/09
- [PULL 01/20] hw/display/sm501: Remove dead code for non-32-bit RGB surfaces, David Gibson, 2021/03/09
- [PULL 09/20] target/ppc: Fix bcdsub. emulation when result overflows, David Gibson, 2021/03/09
- [PULL 02/20] hw/display/sm501: Expand out macros in template header, David Gibson, 2021/03/09
- [PULL 11/20] spapr_drc.c: add hotunplug timeout for CPUs, David Gibson, 2021/03/09
- [PULL 07/20] spapr: rename spapr_drc_detach() to spapr_drc_unplug_request(), David Gibson, 2021/03/09
- [PULL 04/20] spapr_drc.c: do not call spapr_drc_detach() in drc_isolate_logical(),
David Gibson <=
- [PULL 13/20] hw/net: fsl_etsec: Fix build error when HEX_DUMP is on, David Gibson, 2021/03/09
- [PULL 08/20] docs/system: Extend PPC section, David Gibson, 2021/03/09
- [PULL 14/20] hw/ppc: e500: Add missing <ranges> in the eTSEC node, David Gibson, 2021/03/09
- [PULL 05/20] pseries: Update SLOF firmware image, David Gibson, 2021/03/09
- [PULL 17/20] qemu_timer.c: add timer_deadline_ms() helper, David Gibson, 2021/03/09
- [PULL 19/20] spapr.c: remove duplicated assert in spapr_memory_unplug_request(), David Gibson, 2021/03/09
- [PULL 03/20] hw/display/sm501: Inline template header into C file, David Gibson, 2021/03/09
- [PULL 06/20] spapr_drc.c: use spapr_drc_release() in isolate_physical/set_unusable, David Gibson, 2021/03/09
- [PULL 10/20] spapr_drc.c: introduce unplug_timeout_timer, David Gibson, 2021/03/09
- [PULL 12/20] spapr_drc.c: use DRC reconfiguration to cleanup DIMM unplug state, David Gibson, 2021/03/09