diff mbox

spapr/drc: don't migrate DRC of cold-plugged CPUs and LMBs

Message ID 149639817593.15167.7338592152743589651.stgit@bahia.lan
State New
Headers show

Commit Message

Greg Kurz June 2, 2017, 10:09 a.m. UTC
As explained in commit 5c0139a8c2f0 ("spapr: fix default DRC state for
coldplugged LMBs"), guests expect cold-plugged LMBs to be pre-allocated
and unisolated. The same goes for cold-plugged CPUs.

While here, let's convert g_assert(false) to the better self documenting
g_assert_not_reached().

Signed-off-by: Greg Kurz <groug@kaod.org>
---

FWIW

$ git grep -i -E '(g_)?assert\((0|false)\)' | wc -l
100
$ git grep g_assert_not_reached | wc -l
244
---
 hw/ppc/spapr_drc.c |   10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

Comments

David Gibson June 5, 2017, 11:23 p.m. UTC | #1
On Fri, Jun 02, 2017 at 12:09:35PM +0200, Greg Kurz wrote:
> As explained in commit 5c0139a8c2f0 ("spapr: fix default DRC state for
> coldplugged LMBs"), guests expect cold-plugged LMBs to be pre-allocated
> and unisolated. The same goes for cold-plugged CPUs.
> 
> While here, let's convert g_assert(false) to the better self documenting
> g_assert_not_reached().
> 
> Signed-off-by: Greg Kurz <groug@kaod.org>

I've applied this to ppc-for-2.10.  I'm a bit concerned that this is
just another bandaid thrown at the mess which is the DRC code.  I'm
hoping to clean this up more thoroughly, which will obsolete this, but
in the meantime it shouldn't be any worse than what we have.
> ---
> 
> FWIW
> 
> $ git grep -i -E '(g_)?assert\((0|false)\)' | wc -l
> 100
> $ git grep g_assert_not_reached | wc -l
> 244
> ---
>  hw/ppc/spapr_drc.c |   10 +++-------
>  1 file changed, 3 insertions(+), 7 deletions(-)
> 
> diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
> index cc2400bcd57f..ab5f7cdf569c 100644
> --- a/hw/ppc/spapr_drc.c
> +++ b/hw/ppc/spapr_drc.c
> @@ -538,20 +538,16 @@ static bool spapr_drc_needed(void *opaque)
>       */
>      switch (drc->type) {
>      case SPAPR_DR_CONNECTOR_TYPE_PCI:
> -        rc = !((drc->isolation_state == SPAPR_DR_ISOLATION_STATE_UNISOLATED) &&
> -               (drc->allocation_state == SPAPR_DR_ALLOCATION_STATE_USABLE) &&
> -               drc->configured && drc->signalled && !drc->awaiting_release);
> -        break;
>      case SPAPR_DR_CONNECTOR_TYPE_CPU:
>      case SPAPR_DR_CONNECTOR_TYPE_LMB:
> -        rc = !((drc->isolation_state == SPAPR_DR_ISOLATION_STATE_ISOLATED) &&
> -               (drc->allocation_state == SPAPR_DR_ALLOCATION_STATE_UNUSABLE) &&
> +        rc = !((drc->isolation_state == SPAPR_DR_ISOLATION_STATE_UNISOLATED) &&
> +               (drc->allocation_state == SPAPR_DR_ALLOCATION_STATE_USABLE) &&
>                 drc->configured && drc->signalled && !drc->awaiting_release);
>          break;
>      case SPAPR_DR_CONNECTOR_TYPE_PHB:
>      case SPAPR_DR_CONNECTOR_TYPE_VIO:
>      default:
> -        g_assert(false);
> +        g_assert_not_reached();
>      }
>      return rc;
>  }
>
diff mbox

Patch

diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
index cc2400bcd57f..ab5f7cdf569c 100644
--- a/hw/ppc/spapr_drc.c
+++ b/hw/ppc/spapr_drc.c
@@ -538,20 +538,16 @@  static bool spapr_drc_needed(void *opaque)
      */
     switch (drc->type) {
     case SPAPR_DR_CONNECTOR_TYPE_PCI:
-        rc = !((drc->isolation_state == SPAPR_DR_ISOLATION_STATE_UNISOLATED) &&
-               (drc->allocation_state == SPAPR_DR_ALLOCATION_STATE_USABLE) &&
-               drc->configured && drc->signalled && !drc->awaiting_release);
-        break;
     case SPAPR_DR_CONNECTOR_TYPE_CPU:
     case SPAPR_DR_CONNECTOR_TYPE_LMB:
-        rc = !((drc->isolation_state == SPAPR_DR_ISOLATION_STATE_ISOLATED) &&
-               (drc->allocation_state == SPAPR_DR_ALLOCATION_STATE_UNUSABLE) &&
+        rc = !((drc->isolation_state == SPAPR_DR_ISOLATION_STATE_UNISOLATED) &&
+               (drc->allocation_state == SPAPR_DR_ALLOCATION_STATE_USABLE) &&
                drc->configured && drc->signalled && !drc->awaiting_release);
         break;
     case SPAPR_DR_CONNECTOR_TYPE_PHB:
     case SPAPR_DR_CONNECTOR_TYPE_VIO:
     default:
-        g_assert(false);
+        g_assert_not_reached();
     }
     return rc;
 }