qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PULL 00/20] ppc-for-6.0 queue 20210310
@ 2021-03-10  4:09 David Gibson
  2021-03-10  4:09 ` [PULL 01/20] hw/display/sm501: Remove dead code for non-32-bit RGB surfaces David Gibson
                   ` (22 more replies)
  0 siblings, 23 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug; +Cc: qemu-ppc, qemu-devel, David Gibson

The following changes since commit b2ae1009d7cca2701e17eae55ae2d44fd22c942a:

  Merge remote-tracking branch 'remotes/mcayland/tags/qemu-sparc-20210307' into staging (2021-03-09 13:50:35 +0000)

are available in the Git repository at:

  https://gitlab.com/dgibson/qemu.git tags/ppc-for-6.0-20210310

for you to fetch changes up to eb7f80fd26d73e7e1af105431da58971b1dba517:

  spapr.c: send QAPI event when memory hotunplug fails (2021-03-10 09:07:09 +1100)

----------------------------------------------------------------
ppc patch queue for 2021-03-10

Next batch of patches for the ppc target and machine types.  Includes:
 * Several cleanups for sm501 from Peter Maydell
 * An update to the SLOF guest firmware
 * Improved handling of hotplug failures in spapr, associated cleanups
   to the hotplug handling code
 * Several etsec fixes and cleanups from Bin Meng
 * Assorted other fixes and cleanups

----------------------------------------------------------------
Alexey Kardashevskiy (1):
      pseries: Update SLOF firmware image

Bin Meng (2):
      hw/net: fsl_etsec: Fix build error when HEX_DUMP is on
      hw/ppc: e500: Add missing <ranges> in the eTSEC node

Cédric Le Goater (1):
      docs/system: Extend PPC section

Daniel Henrique Barboza (11):
      spapr_drc.c: do not call spapr_drc_detach() in drc_isolate_logical()
      spapr_drc.c: use spapr_drc_release() in isolate_physical/set_unusable
      spapr: rename spapr_drc_detach() to spapr_drc_unplug_request()
      spapr_drc.c: introduce unplug_timeout_timer
      spapr_drc.c: add hotunplug timeout for CPUs
      spapr_drc.c: use DRC reconfiguration to cleanup DIMM unplug state
      spapr.c: add 'unplug already in progress' message for PHB unplug
      spapr_pci.c: add 'unplug already in progress' message for PCI unplug
      qemu_timer.c: add timer_deadline_ms() helper
      spapr.c: remove duplicated assert in spapr_memory_unplug_request()
      spapr.c: send QAPI event when memory hotunplug fails

Fabiano Rosas (1):
      target/ppc: Fix bcdsub. emulation when result overflows

Peter Maydell (3):
      hw/display/sm501: Remove dead code for non-32-bit RGB surfaces
      hw/display/sm501: Expand out macros in template header
      hw/display/sm501: Inline template header into C file

Vitaly Cheptsov (1):
      target/ppc: fix icount support on Book-e vms accessing SPRs

 docs/system/ppc/embedded.rst      |  10 ++
 docs/system/ppc/powermac.rst      |  34 +++++++
 docs/system/ppc/powernv.rst       | 193 ++++++++++++++++++++++++++++++++++++++
 docs/system/ppc/prep.rst          |  18 ++++
 docs/system/ppc/pseries.rst       |  12 +++
 docs/system/target-ppc.rst        |  53 +++--------
 hw/display/sm501.c                | 160 +++++++++++++++----------------
 hw/display/sm501_template.h       | 131 --------------------------
 hw/net/fsl_etsec/etsec.c          |   1 +
 hw/net/fsl_etsec/rings.c          |   1 +
 hw/ppc/e500.c                     |   1 +
 hw/ppc/spapr.c                    |  67 ++++++++++++-
 hw/ppc/spapr_drc.c                | 110 ++++++++++++++++------
 hw/ppc/spapr_pci.c                |   8 +-
 hw/ppc/trace-events               |   2 +-
 include/hw/ppc/spapr.h            |   1 +
 include/hw/ppc/spapr_drc.h        |   7 +-
 include/qemu/timer.h              |   8 ++
 pc-bios/README                    |   2 +-
 pc-bios/slof.bin                  | Bin 968368 -> 968888 bytes
 roms/SLOF                         |   2 +-
 target/ppc/int_helper.c           |  13 ++-
 target/ppc/translate_init.c.inc   |  36 +++++++
 tests/tcg/configure.sh            |   6 ++
 tests/tcg/ppc64/Makefile.target   |  13 +++
 tests/tcg/ppc64le/Makefile.target |  12 +++
 tests/tcg/ppc64le/bcdsub.c        | 130 +++++++++++++++++++++++++
 util/qemu-timer.c                 |  13 +++
 28 files changed, 751 insertions(+), 293 deletions(-)
 create mode 100644 docs/system/ppc/embedded.rst
 create mode 100644 docs/system/ppc/powermac.rst
 create mode 100644 docs/system/ppc/powernv.rst
 create mode 100644 docs/system/ppc/prep.rst
 create mode 100644 docs/system/ppc/pseries.rst
 delete mode 100644 hw/display/sm501_template.h
 create mode 100644 tests/tcg/ppc64/Makefile.target
 create mode 100644 tests/tcg/ppc64le/Makefile.target
 create mode 100644 tests/tcg/ppc64le/bcdsub.c


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [PULL 01/20] hw/display/sm501: Remove dead code for non-32-bit RGB surfaces
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 02/20] hw/display/sm501: Expand out macros in template header David Gibson
                   ` (21 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug; +Cc: David Gibson, qemu-ppc, qemu-devel

From: Peter Maydell <peter.maydell@linaro.org>

For a long time now the UI layer has guaranteed that the console
surface is always 32 bits per pixel RGB. Remove the legacy dead
code from the sm501 display device which was handling the
possibility that the console surface was some other format.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20210212180653.27588-2-peter.maydell@linaro.org>
Acked-by: BALATON Zoltan <balaton@eik.bme.hu>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/display/sm501.c | 91 +++-------------------------------------------
 1 file changed, 6 insertions(+), 85 deletions(-)

diff --git a/hw/display/sm501.c b/hw/display/sm501.c
index 8966b69bc7..aba447c18b 100644
--- a/hw/display/sm501.c
+++ b/hw/display/sm501.c
@@ -1558,89 +1558,9 @@ typedef void draw_hwc_line_func(uint8_t *d, const uint8_t *s,
                                 int width, const uint8_t *palette,
                                 int c_x, int c_y);
 
-#define DEPTH 8
-#include "sm501_template.h"
-
-#define DEPTH 15
-#include "sm501_template.h"
-
-#define BGR_FORMAT
-#define DEPTH 15
-#include "sm501_template.h"
-
-#define DEPTH 16
-#include "sm501_template.h"
-
-#define BGR_FORMAT
-#define DEPTH 16
-#include "sm501_template.h"
-
 #define DEPTH 32
 #include "sm501_template.h"
 
-#define BGR_FORMAT
-#define DEPTH 32
-#include "sm501_template.h"
-
-static draw_line_func *draw_line8_funcs[] = {
-    draw_line8_8,
-    draw_line8_15,
-    draw_line8_16,
-    draw_line8_32,
-    draw_line8_32bgr,
-    draw_line8_15bgr,
-    draw_line8_16bgr,
-};
-
-static draw_line_func *draw_line16_funcs[] = {
-    draw_line16_8,
-    draw_line16_15,
-    draw_line16_16,
-    draw_line16_32,
-    draw_line16_32bgr,
-    draw_line16_15bgr,
-    draw_line16_16bgr,
-};
-
-static draw_line_func *draw_line32_funcs[] = {
-    draw_line32_8,
-    draw_line32_15,
-    draw_line32_16,
-    draw_line32_32,
-    draw_line32_32bgr,
-    draw_line32_15bgr,
-    draw_line32_16bgr,
-};
-
-static draw_hwc_line_func *draw_hwc_line_funcs[] = {
-    draw_hwc_line_8,
-    draw_hwc_line_15,
-    draw_hwc_line_16,
-    draw_hwc_line_32,
-    draw_hwc_line_32bgr,
-    draw_hwc_line_15bgr,
-    draw_hwc_line_16bgr,
-};
-
-static inline int get_depth_index(DisplaySurface *surface)
-{
-    switch (surface_bits_per_pixel(surface)) {
-    default:
-    case 8:
-        return 0;
-    case 15:
-        return 1;
-    case 16:
-        return 2;
-    case 32:
-        if (is_surface_bgr(surface)) {
-            return 4;
-        } else {
-            return 3;
-        }
-    }
-}
-
 static void sm501_update_display(void *opaque)
 {
     SM501State *s = (SM501State *)opaque;
@@ -1652,7 +1572,6 @@ static void sm501_update_display(void *opaque)
     int height = get_height(s, crt);
     int src_bpp = get_bpp(s, crt);
     int dst_bpp = surface_bytes_per_pixel(surface);
-    int dst_depth_index = get_depth_index(surface);
     draw_line_func *draw_line = NULL;
     draw_hwc_line_func *draw_hwc_line = NULL;
     int full_update = 0;
@@ -1662,6 +1581,8 @@ static void sm501_update_display(void *opaque)
     uint8_t hwc_palette[3 * 3];
     uint8_t *hwc_src = NULL;
 
+    assert(dst_bpp == 4); /* Output is always 32-bit RGB */
+
     if (!((crt ? s->dc_crt_control : s->dc_panel_control)
           & SM501_DC_CRT_CONTROL_ENABLE)) {
         return;
@@ -1674,13 +1595,13 @@ static void sm501_update_display(void *opaque)
     /* choose draw_line function */
     switch (src_bpp) {
     case 1:
-        draw_line = draw_line8_funcs[dst_depth_index];
+        draw_line = draw_line8_32;
         break;
     case 2:
-        draw_line = draw_line16_funcs[dst_depth_index];
+        draw_line = draw_line16_32;
         break;
     case 4:
-        draw_line = draw_line32_funcs[dst_depth_index];
+        draw_line = draw_line32_32;
         break;
     default:
         qemu_log_mask(LOG_GUEST_ERROR, "sm501: update display"
@@ -1691,7 +1612,7 @@ static void sm501_update_display(void *opaque)
     /* set up to draw hardware cursor */
     if (is_hwc_enabled(s, crt)) {
         /* choose cursor draw line function */
-        draw_hwc_line = draw_hwc_line_funcs[dst_depth_index];
+        draw_hwc_line = draw_hwc_line_32;
         hwc_src = get_hwc_address(s, crt);
         c_x = get_hwc_x(s, crt);
         c_y = get_hwc_y(s, crt);
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 02/20] hw/display/sm501: Expand out macros in template header
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
  2021-03-10  4:09 ` [PULL 01/20] hw/display/sm501: Remove dead code for non-32-bit RGB surfaces David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 03/20] hw/display/sm501: Inline template header into C file David Gibson
                   ` (20 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug; +Cc: David Gibson, qemu-ppc, qemu-devel

From: Peter Maydell <peter.maydell@linaro.org>

Now that we only include sm501_template.h for the DEPTH==32 case, we
can expand out the uses of the BPP, PIXEL_TYPE and PIXEL_NAME macros
in that header.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20210212180653.27588-3-peter.maydell@linaro.org>
Acked-by: BALATON Zoltan <balaton@eik.bme.hu>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/display/sm501_template.h | 60 +++++++++++--------------------------
 1 file changed, 17 insertions(+), 43 deletions(-)

diff --git a/hw/display/sm501_template.h b/hw/display/sm501_template.h
index a60abad019..28537a05d9 100644
--- a/hw/display/sm501_template.h
+++ b/hw/display/sm501_template.h
@@ -22,28 +22,8 @@
  * THE SOFTWARE.
  */
 
-#if DEPTH == 8
-#define BPP 1
-#define PIXEL_TYPE uint8_t
-#elif DEPTH == 15 || DEPTH == 16
-#define BPP 2
-#define PIXEL_TYPE uint16_t
-#elif DEPTH == 32
-#define BPP 4
-#define PIXEL_TYPE uint32_t
-#else
-#error unsupport depth
-#endif
-
-#ifdef BGR_FORMAT
-#define PIXEL_NAME glue(DEPTH, bgr)
-#else
-#define PIXEL_NAME DEPTH
-#endif /* BGR_FORMAT */
-
-
-static void glue(draw_line8_, PIXEL_NAME)(
-                 uint8_t *d, const uint8_t *s, int width, const uint32_t *pal)
+static void draw_line8_32(uint8_t *d, const uint8_t *s, int width,
+                          const uint32_t *pal)
 {
     uint8_t v, r, g, b;
     do {
@@ -51,14 +31,14 @@ static void glue(draw_line8_, PIXEL_NAME)(
         r = (pal[v] >> 16) & 0xff;
         g = (pal[v] >>  8) & 0xff;
         b = (pal[v] >>  0) & 0xff;
-        *(PIXEL_TYPE *)d = glue(rgb_to_pixel, PIXEL_NAME)(r, g, b);
+        *(uint32_t *)d = rgb_to_pixel32(r, g, b);
         s++;
-        d += BPP;
+        d += 4;
     } while (--width != 0);
 }
 
-static void glue(draw_line16_, PIXEL_NAME)(
-                 uint8_t *d, const uint8_t *s, int width, const uint32_t *pal)
+static void draw_line16_32(uint8_t *d, const uint8_t *s, int width,
+                           const uint32_t *pal)
 {
     uint16_t rgb565;
     uint8_t r, g, b;
@@ -68,14 +48,14 @@ static void glue(draw_line16_, PIXEL_NAME)(
         r = (rgb565 >> 8) & 0xf8;
         g = (rgb565 >> 3) & 0xfc;
         b = (rgb565 << 3) & 0xf8;
-        *(PIXEL_TYPE *)d = glue(rgb_to_pixel, PIXEL_NAME)(r, g, b);
+        *(uint32_t *)d = rgb_to_pixel32(r, g, b);
         s += 2;
-        d += BPP;
+        d += 4;
     } while (--width != 0);
 }
 
-static void glue(draw_line32_, PIXEL_NAME)(
-                 uint8_t *d, const uint8_t *s, int width, const uint32_t *pal)
+static void draw_line32_32(uint8_t *d, const uint8_t *s, int width,
+                           const uint32_t *pal)
 {
     uint8_t r, g, b;
 
@@ -83,17 +63,17 @@ static void glue(draw_line32_, PIXEL_NAME)(
         r = s[2];
         g = s[1];
         b = s[0];
-        *(PIXEL_TYPE *)d = glue(rgb_to_pixel, PIXEL_NAME)(r, g, b);
+        *(uint32_t *)d = rgb_to_pixel32(r, g, b);
         s += 4;
-        d += BPP;
+        d += 4;
     } while (--width != 0);
 }
 
 /**
  * Draw hardware cursor image on the given line.
  */
-static void glue(draw_hwc_line_, PIXEL_NAME)(uint8_t *d, const uint8_t *s,
-                 int width, const uint8_t *palette, int c_x, int c_y)
+static void draw_hwc_line_32(uint8_t *d, const uint8_t *s, int width,
+                             const uint8_t *palette, int c_x, int c_y)
 {
     int i;
     uint8_t r, g, b, v, bitset = 0;
@@ -101,7 +81,7 @@ static void glue(draw_hwc_line_, PIXEL_NAME)(uint8_t *d, const uint8_t *s,
     /* get cursor position */
     assert(0 <= c_y && c_y < SM501_HWC_HEIGHT);
     s += SM501_HWC_WIDTH * c_y / 4;  /* 4 pixels per byte */
-    d += c_x * BPP;
+    d += c_x * 4;
 
     for (i = 0; i < SM501_HWC_WIDTH && c_x + i < width; i++) {
         /* get pixel value */
@@ -118,14 +98,8 @@ static void glue(draw_hwc_line_, PIXEL_NAME)(uint8_t *d, const uint8_t *s,
             r = palette[v * 3 + 0];
             g = palette[v * 3 + 1];
             b = palette[v * 3 + 2];
-            *(PIXEL_TYPE *)d = glue(rgb_to_pixel, PIXEL_NAME)(r, g, b);
+            *(uint32_t *)d = rgb_to_pixel32(r, g, b);
         }
-        d += BPP;
+        d += 4;
     }
 }
-
-#undef DEPTH
-#undef BPP
-#undef PIXEL_TYPE
-#undef PIXEL_NAME
-#undef BGR_FORMAT
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 03/20] hw/display/sm501: Inline template header into C file
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
  2021-03-10  4:09 ` [PULL 01/20] hw/display/sm501: Remove dead code for non-32-bit RGB surfaces David Gibson
  2021-03-10  4:09 ` [PULL 02/20] hw/display/sm501: Expand out macros in template header David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 04/20] spapr_drc.c: do not call spapr_drc_detach() in drc_isolate_logical() David Gibson
                   ` (19 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug; +Cc: David Gibson, qemu-ppc, qemu-devel

From: Peter Maydell <peter.maydell@linaro.org>

We no longer need to include sm501_template.h multiple times, so
we can simply inline its contents into sm501.c.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20210212180653.27588-4-peter.maydell@linaro.org>
Acked-by: BALATON Zoltan <balaton@eik.bme.hu>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/display/sm501.c          |  83 +++++++++++++++++++++++++++-
 hw/display/sm501_template.h | 105 ------------------------------------
 2 files changed, 81 insertions(+), 107 deletions(-)
 delete mode 100644 hw/display/sm501_template.h

diff --git a/hw/display/sm501.c b/hw/display/sm501.c
index aba447c18b..8789722ef2 100644
--- a/hw/display/sm501.c
+++ b/hw/display/sm501.c
@@ -1558,8 +1558,87 @@ typedef void draw_hwc_line_func(uint8_t *d, const uint8_t *s,
                                 int width, const uint8_t *palette,
                                 int c_x, int c_y);
 
-#define DEPTH 32
-#include "sm501_template.h"
+static void draw_line8_32(uint8_t *d, const uint8_t *s, int width,
+                          const uint32_t *pal)
+{
+    uint8_t v, r, g, b;
+    do {
+        v = ldub_p(s);
+        r = (pal[v] >> 16) & 0xff;
+        g = (pal[v] >>  8) & 0xff;
+        b = (pal[v] >>  0) & 0xff;
+        *(uint32_t *)d = rgb_to_pixel32(r, g, b);
+        s++;
+        d += 4;
+    } while (--width != 0);
+}
+
+static void draw_line16_32(uint8_t *d, const uint8_t *s, int width,
+                           const uint32_t *pal)
+{
+    uint16_t rgb565;
+    uint8_t r, g, b;
+
+    do {
+        rgb565 = lduw_le_p(s);
+        r = (rgb565 >> 8) & 0xf8;
+        g = (rgb565 >> 3) & 0xfc;
+        b = (rgb565 << 3) & 0xf8;
+        *(uint32_t *)d = rgb_to_pixel32(r, g, b);
+        s += 2;
+        d += 4;
+    } while (--width != 0);
+}
+
+static void draw_line32_32(uint8_t *d, const uint8_t *s, int width,
+                           const uint32_t *pal)
+{
+    uint8_t r, g, b;
+
+    do {
+        r = s[2];
+        g = s[1];
+        b = s[0];
+        *(uint32_t *)d = rgb_to_pixel32(r, g, b);
+        s += 4;
+        d += 4;
+    } while (--width != 0);
+}
+
+/**
+ * Draw hardware cursor image on the given line.
+ */
+static void draw_hwc_line_32(uint8_t *d, const uint8_t *s, int width,
+                             const uint8_t *palette, int c_x, int c_y)
+{
+    int i;
+    uint8_t r, g, b, v, bitset = 0;
+
+    /* get cursor position */
+    assert(0 <= c_y && c_y < SM501_HWC_HEIGHT);
+    s += SM501_HWC_WIDTH * c_y / 4;  /* 4 pixels per byte */
+    d += c_x * 4;
+
+    for (i = 0; i < SM501_HWC_WIDTH && c_x + i < width; i++) {
+        /* get pixel value */
+        if (i % 4 == 0) {
+            bitset = ldub_p(s);
+            s++;
+        }
+        v = bitset & 3;
+        bitset >>= 2;
+
+        /* write pixel */
+        if (v) {
+            v--;
+            r = palette[v * 3 + 0];
+            g = palette[v * 3 + 1];
+            b = palette[v * 3 + 2];
+            *(uint32_t *)d = rgb_to_pixel32(r, g, b);
+        }
+        d += 4;
+    }
+}
 
 static void sm501_update_display(void *opaque)
 {
diff --git a/hw/display/sm501_template.h b/hw/display/sm501_template.h
deleted file mode 100644
index 28537a05d9..0000000000
--- a/hw/display/sm501_template.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Pixel drawing function templates for QEMU SM501 Device
- *
- * Copyright (c) 2008 Shin-ichiro KAWASAKI
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-static void draw_line8_32(uint8_t *d, const uint8_t *s, int width,
-                          const uint32_t *pal)
-{
-    uint8_t v, r, g, b;
-    do {
-        v = ldub_p(s);
-        r = (pal[v] >> 16) & 0xff;
-        g = (pal[v] >>  8) & 0xff;
-        b = (pal[v] >>  0) & 0xff;
-        *(uint32_t *)d = rgb_to_pixel32(r, g, b);
-        s++;
-        d += 4;
-    } while (--width != 0);
-}
-
-static void draw_line16_32(uint8_t *d, const uint8_t *s, int width,
-                           const uint32_t *pal)
-{
-    uint16_t rgb565;
-    uint8_t r, g, b;
-
-    do {
-        rgb565 = lduw_le_p(s);
-        r = (rgb565 >> 8) & 0xf8;
-        g = (rgb565 >> 3) & 0xfc;
-        b = (rgb565 << 3) & 0xf8;
-        *(uint32_t *)d = rgb_to_pixel32(r, g, b);
-        s += 2;
-        d += 4;
-    } while (--width != 0);
-}
-
-static void draw_line32_32(uint8_t *d, const uint8_t *s, int width,
-                           const uint32_t *pal)
-{
-    uint8_t r, g, b;
-
-    do {
-        r = s[2];
-        g = s[1];
-        b = s[0];
-        *(uint32_t *)d = rgb_to_pixel32(r, g, b);
-        s += 4;
-        d += 4;
-    } while (--width != 0);
-}
-
-/**
- * Draw hardware cursor image on the given line.
- */
-static void draw_hwc_line_32(uint8_t *d, const uint8_t *s, int width,
-                             const uint8_t *palette, int c_x, int c_y)
-{
-    int i;
-    uint8_t r, g, b, v, bitset = 0;
-
-    /* get cursor position */
-    assert(0 <= c_y && c_y < SM501_HWC_HEIGHT);
-    s += SM501_HWC_WIDTH * c_y / 4;  /* 4 pixels per byte */
-    d += c_x * 4;
-
-    for (i = 0; i < SM501_HWC_WIDTH && c_x + i < width; i++) {
-        /* get pixel value */
-        if (i % 4 == 0) {
-            bitset = ldub_p(s);
-            s++;
-        }
-        v = bitset & 3;
-        bitset >>= 2;
-
-        /* write pixel */
-        if (v) {
-            v--;
-            r = palette[v * 3 + 0];
-            g = palette[v * 3 + 1];
-            b = palette[v * 3 + 2];
-            *(uint32_t *)d = rgb_to_pixel32(r, g, b);
-        }
-        d += 4;
-    }
-}
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 04/20] spapr_drc.c: do not call spapr_drc_detach() in drc_isolate_logical()
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (2 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 03/20] hw/display/sm501: Inline template header into C file David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 05/20] pseries: Update SLOF firmware image David Gibson
                   ` (18 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: Daniel Henrique Barboza, qemu-ppc, qemu-devel, David Gibson

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



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 05/20] pseries: Update SLOF firmware image
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (3 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 04/20] spapr_drc.c: do not call spapr_drc_detach() in drc_isolate_logical() David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 06/20] spapr_drc.c: use spapr_drc_release() in isolate_physical/set_unusable David Gibson
                   ` (17 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: Alexey Kardashevskiy, qemu-ppc, qemu-devel, David Gibson

From: Alexey Kardashevskiy <aik@ozlabs.ru>

This is mostly compiler warnings fixed but while doing this,
a bug in MIN() in tcgbios was found.

Alexey Kardashevskiy (14):
      helpers: Define MIN()
      libc: Compile with -Wextra
      elf: Compile with -Wextra
      usb: Compile with -Wextra
      veth: Compile with -Wextra
      virtio: Compile with -Wextra
      e1000: Compile with -Wextra
      libnet: Compile with -Wextra
      libhv: Compile with -Wextra
      libnvram: Compile with -Wextra
      libtpm: Compile with -Wextra
      slof/prim: Compile with -Wextra
      Makefile: Actually compile with -Wextra
      version: update to 20210217

Thomas Huth (1):
      virtio-serial: Remove superfluous serial-* words

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 pc-bios/README   |   2 +-
 pc-bios/slof.bin | Bin 968368 -> 968888 bytes
 roms/SLOF        |   2 +-
 3 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/pc-bios/README b/pc-bios/README
index db7129ef64..c101c9a04f 100644
--- a/pc-bios/README
+++ b/pc-bios/README
@@ -14,7 +14,7 @@
 - SLOF (Slimline Open Firmware) is a free IEEE 1275 Open Firmware
   implementation for certain IBM POWER hardware.  The sources are at
   https://github.com/aik/SLOF, and the image currently in qemu is
-  built from git tag qemu-slof-20200717.
+  built from git tag qemu-slof-20210217.
 
 - sgabios (the Serial Graphics Adapter option ROM) provides a means for
   legacy x86 software to communicate with an attached serial console as
diff --git a/pc-bios/slof.bin b/pc-bios/slof.bin
index 448dcada367f32130ff6ccc6dcb482dcc3fa853e..3f3918a9e144e12f6e39fab6fc1c9ec9cf9d2898 100644
GIT binary patch
delta 227085
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

delta 225144
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

diff --git a/roms/SLOF b/roms/SLOF
index e18ddad851..33a7322de1 160000
--- a/roms/SLOF
+++ b/roms/SLOF
@@ -1 +1 @@
-Subproject commit e18ddad8516ff2cfe36ec130200318f7251aa78c
+Subproject commit 33a7322de13e9dca4b38851a345a58d37e7a441d
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 06/20] spapr_drc.c: use spapr_drc_release() in isolate_physical/set_unusable
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (4 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 05/20] pseries: Update SLOF firmware image David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 07/20] spapr: rename spapr_drc_detach() to spapr_drc_unplug_request() David Gibson
                   ` (16 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: Daniel Henrique Barboza, qemu-ppc, qemu-devel, David Gibson

From: Daniel Henrique Barboza <danielhb413@gmail.com>

When moving a physical DRC to "Available", drc_isolate_physical() will
move the DRC state to STATE_PHYSICAL_POWERON and, if the DRC is marked
for unplug, call spapr_drc_detach(). For physical DRCs,
drck->empty_state is STATE_PHYSICAL_POWERON, meaning that we're sure
that spapr_drc_detach() will end up calling spapr_drc_release() in the
end.

Likewise, for logical DRCs, drc_set_unusable will move the DRC to
"Unusable" state, setting drc->state to STATE_LOGICAL_UNUSABLE, which is
the drck->empty_state for logical DRCs. spapr_drc_detach() will call
spapr_drc_release() in this case as well.

In both scenarios, spapr_drc_detach() is being used as a
spapr_drc_release(), wrapper, where we also set unplug_requested (which
is already true, otherwise spapr_drc_detach() wouldn't be called in the
first place) and check if drc->state == drck->empty_state, which we also
know it's guaranteed to be true because we just set it.

Just use spapr_drc_release() in these functions to be clear of our
intentions in both these functions.

Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20210222194531.62717-2-danielhb413@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr_drc.c | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
index 84bd3c881f..555a25517d 100644
--- a/hw/ppc/spapr_drc.c
+++ b/hw/ppc/spapr_drc.c
@@ -50,6 +50,20 @@ uint32_t spapr_drc_index(SpaprDrc *drc)
         | (drc->id & DRC_INDEX_ID_MASK);
 }
 
+static void spapr_drc_release(SpaprDrc *drc)
+{
+    SpaprDrcClass *drck = SPAPR_DR_CONNECTOR_GET_CLASS(drc);
+
+    drck->release(drc->dev);
+
+    drc->unplug_requested = false;
+    g_free(drc->fdt);
+    drc->fdt = NULL;
+    drc->fdt_start_offset = 0;
+    object_property_del(OBJECT(drc), "device");
+    drc->dev = NULL;
+}
+
 static uint32_t drc_isolate_physical(SpaprDrc *drc)
 {
     switch (drc->state) {
@@ -68,7 +82,7 @@ static uint32_t drc_isolate_physical(SpaprDrc *drc)
     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);
+        spapr_drc_release(drc);
     }
 
     return RTAS_OUT_SUCCESS;
@@ -209,7 +223,7 @@ static uint32_t drc_set_unusable(SpaprDrc *drc)
     if (drc->unplug_requested) {
         uint32_t drc_index = spapr_drc_index(drc);
         trace_spapr_drc_set_allocation_state_finalizing(drc_index);
-        spapr_drc_detach(drc);
+        spapr_drc_release(drc);
     }
 
     return RTAS_OUT_SUCCESS;
@@ -372,20 +386,6 @@ void spapr_drc_attach(SpaprDrc *drc, DeviceState *d)
                              NULL, 0);
 }
 
-static void spapr_drc_release(SpaprDrc *drc)
-{
-    SpaprDrcClass *drck = SPAPR_DR_CONNECTOR_GET_CLASS(drc);
-
-    drck->release(drc->dev);
-
-    drc->unplug_requested = false;
-    g_free(drc->fdt);
-    drc->fdt = NULL;
-    drc->fdt_start_offset = 0;
-    object_property_del(OBJECT(drc), "device");
-    drc->dev = NULL;
-}
-
 void spapr_drc_detach(SpaprDrc *drc)
 {
     SpaprDrcClass *drck = SPAPR_DR_CONNECTOR_GET_CLASS(drc);
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 07/20] spapr: rename spapr_drc_detach() to spapr_drc_unplug_request()
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (5 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 06/20] spapr_drc.c: use spapr_drc_release() in isolate_physical/set_unusable David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 08/20] docs/system: Extend PPC section David Gibson
                   ` (15 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: Daniel Henrique Barboza, qemu-ppc, qemu-devel, David Gibson

From: Daniel Henrique Barboza <danielhb413@gmail.com>

spapr_drc_detach() is not the best name for what the function does. The
function does not detach the DRC, it makes an uncommited attempt to do
it.  It'll mark the DRC as pending unplug, via the 'unplug_request'
flag, and only if the DRC state is drck->empty_state it will detach the
DRC, via spapr_drc_release().

This is a contrast with its pair spapr_drc_attach(), where the function
is indeed creating the DRC QOM object. If you know what
spapr_drc_attach() does, you can be misled into thinking that
spapr_drc_detach() is removing the DRC from QEMU internal state, which
isn't true.

The current role of this function is better described as a request for
detach, since there's no guarantee that we're going to detach the DRC in
the end.  Rename the function to spapr_drc_unplug_request to reflect
what is is doing.

The initial idea was to change the name to spapr_drc_detach_request(),
and later on change the unplug_request flag to detach_request. However,
unplug_request is a migratable boolean for a long time now and renaming
it is not worth the trouble. spapr_drc_unplug_request() setting
drc->unplug_request is more natural than spapr_drc_detach_request
setting drc->unplug_request.

Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20210222194531.62717-3-danielhb413@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr.c             | 6 +++---
 hw/ppc/spapr_drc.c         | 4 ++--
 hw/ppc/spapr_pci.c         | 4 ++--
 hw/ppc/trace-events        | 2 +-
 include/hw/ppc/spapr_drc.h | 2 +-
 5 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 85fe65f894..b066df68cb 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3654,7 +3654,7 @@ static void spapr_memory_unplug_request(HotplugHandler *hotplug_dev,
                               addr / SPAPR_MEMORY_BLOCK_SIZE);
         g_assert(drc);
 
-        spapr_drc_detach(drc);
+        spapr_drc_unplug_request(drc);
         addr += SPAPR_MEMORY_BLOCK_SIZE;
     }
 
@@ -3722,7 +3722,7 @@ void spapr_core_unplug_request(HotplugHandler *hotplug_dev, DeviceState *dev,
     g_assert(drc);
 
     if (!spapr_drc_unplug_requested(drc)) {
-        spapr_drc_detach(drc);
+        spapr_drc_unplug_request(drc);
         spapr_hotplug_req_remove_by_index(drc);
     }
 }
@@ -3985,7 +3985,7 @@ static void spapr_phb_unplug_request(HotplugHandler *hotplug_dev,
     assert(drc);
 
     if (!spapr_drc_unplug_requested(drc)) {
-        spapr_drc_detach(drc);
+        spapr_drc_unplug_request(drc);
         spapr_hotplug_req_remove_by_index(drc);
     }
 }
diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
index 555a25517d..67041fb212 100644
--- a/hw/ppc/spapr_drc.c
+++ b/hw/ppc/spapr_drc.c
@@ -386,11 +386,11 @@ void spapr_drc_attach(SpaprDrc *drc, DeviceState *d)
                              NULL, 0);
 }
 
-void spapr_drc_detach(SpaprDrc *drc)
+void spapr_drc_unplug_request(SpaprDrc *drc)
 {
     SpaprDrcClass *drck = SPAPR_DR_CONNECTOR_GET_CLASS(drc);
 
-    trace_spapr_drc_detach(spapr_drc_index(drc));
+    trace_spapr_drc_unplug_request(spapr_drc_index(drc));
 
     g_assert(drc->dev);
 
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index f1c7479816..b00e9609ae 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -1723,12 +1723,12 @@ static void spapr_pci_unplug_request(HotplugHandler *plug_handler,
                      * functions, even if their unplug weren't requested
                      * beforehand.
                      */
-                    spapr_drc_detach(func_drc);
+                    spapr_drc_unplug_request(func_drc);
                 }
             }
         }
 
-        spapr_drc_detach(drc);
+        spapr_drc_unplug_request(drc);
 
         /* if this isn't func 0, defer unplug event. otherwise signal removal
          * for all present functions
diff --git a/hw/ppc/trace-events b/hw/ppc/trace-events
index 1e91984526..b4bbfbb013 100644
--- a/hw/ppc/trace-events
+++ b/hw/ppc/trace-events
@@ -50,7 +50,7 @@ spapr_drc_set_allocation_state(uint32_t index, int state) "drc: 0x%"PRIx32", sta
 spapr_drc_set_allocation_state_finalizing(uint32_t index) "drc: 0x%"PRIx32
 spapr_drc_set_configured(uint32_t index) "drc: 0x%"PRIx32
 spapr_drc_attach(uint32_t index) "drc: 0x%"PRIx32
-spapr_drc_detach(uint32_t index) "drc: 0x%"PRIx32
+spapr_drc_unplug_request(uint32_t index) "drc: 0x%"PRIx32
 spapr_drc_awaiting_quiesce(uint32_t index) "drc: 0x%"PRIx32
 spapr_drc_reset(uint32_t index) "drc: 0x%"PRIx32
 spapr_drc_realize(uint32_t index) "drc: 0x%"PRIx32
diff --git a/include/hw/ppc/spapr_drc.h b/include/hw/ppc/spapr_drc.h
index 8982927d5c..02a63b3666 100644
--- a/include/hw/ppc/spapr_drc.h
+++ b/include/hw/ppc/spapr_drc.h
@@ -243,7 +243,7 @@ int spapr_dt_drc(void *fdt, int offset, Object *owner, uint32_t drc_type_mask);
  * beforehand (eg. check drc->dev at pre-plug).
  */
 void spapr_drc_attach(SpaprDrc *drc, DeviceState *d);
-void spapr_drc_detach(SpaprDrc *drc);
+void spapr_drc_unplug_request(SpaprDrc *drc);
 
 /*
  * Reset all DRCs, causing pending hot-plug/unplug requests to complete.
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 08/20] docs/system: Extend PPC section
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (6 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 07/20] spapr: rename spapr_drc_detach() to spapr_drc_unplug_request() David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 09/20] target/ppc: Fix bcdsub. emulation when result overflows David Gibson
                   ` (14 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: David Gibson, qemu-ppc, qemu-devel, Cédric Le Goater

From: Cédric Le Goater <clg@kaod.org>

This moves the current documentation in files specific to each
platform family. PowerNV machine is updated, the other machines need
to be done.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20210222133956.156001-1-clg@kaod.org>
Reviewed-by: Greg Kurz <groug@kaod.org>
[dwg: Trivial capitalization fix]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 docs/system/ppc/embedded.rst |  10 ++
 docs/system/ppc/powermac.rst |  34 ++++++
 docs/system/ppc/powernv.rst  | 193 +++++++++++++++++++++++++++++++++++
 docs/system/ppc/prep.rst     |  18 ++++
 docs/system/ppc/pseries.rst  |  12 +++
 docs/system/target-ppc.rst   |  53 +++-------
 6 files changed, 282 insertions(+), 38 deletions(-)
 create mode 100644 docs/system/ppc/embedded.rst
 create mode 100644 docs/system/ppc/powermac.rst
 create mode 100644 docs/system/ppc/powernv.rst
 create mode 100644 docs/system/ppc/prep.rst
 create mode 100644 docs/system/ppc/pseries.rst

diff --git a/docs/system/ppc/embedded.rst b/docs/system/ppc/embedded.rst
new file mode 100644
index 0000000000..cfffbda24d
--- /dev/null
+++ b/docs/system/ppc/embedded.rst
@@ -0,0 +1,10 @@
+Embedded family boards
+======================
+
+- ``bamboo``               bamboo
+- ``mpc8544ds``            mpc8544ds
+- ``ppce500``              generic paravirt e500 platform
+- ``ref405ep``             ref405ep
+- ``sam460ex``             aCube Sam460ex
+- ``taihu``                taihu
+- ``virtex-ml507``         Xilinx Virtex ML507 reference design
diff --git a/docs/system/ppc/powermac.rst b/docs/system/ppc/powermac.rst
new file mode 100644
index 0000000000..04334ba210
--- /dev/null
+++ b/docs/system/ppc/powermac.rst
@@ -0,0 +1,34 @@
+PowerMac family boards (``g3beige``, ``mac99``)
+==================================================================
+
+Use the executable ``qemu-system-ppc`` to simulate a complete PowerMac
+PowerPC system.
+
+- ``g3beige``              Heathrow based PowerMAC
+- ``mac99``                Mac99 based PowerMAC
+
+Supported devices
+-----------------
+
+QEMU emulates the following PowerMac peripherals:
+
+ *  UniNorth or Grackle PCI Bridge
+ *  PCI VGA compatible card with VESA Bochs Extensions
+ *  2 PMAC IDE interfaces with hard disk and CD-ROM support
+ *  NE2000 PCI adapters
+ *  Non Volatile RAM
+ *  VIA-CUDA with ADB keyboard and mouse.
+
+
+Missing devices
+---------------
+
+ * To be identified
+
+Firmware
+--------
+
+Since version 0.9.1, QEMU uses OpenBIOS https://www.openbios.org/ for
+the g3beige and mac99 PowerMac and the 40p machines. OpenBIOS is a free
+(GPL v2) portable firmware implementation. The goal is to implement a
+100% IEEE 1275-1994 (referred to as Open Firmware) compliant firmware.
diff --git a/docs/system/ppc/powernv.rst b/docs/system/ppc/powernv.rst
new file mode 100644
index 0000000000..43c58bc32e
--- /dev/null
+++ b/docs/system/ppc/powernv.rst
@@ -0,0 +1,193 @@
+PowerNV family boards (``powernv8``, ``powernv9``)
+==================================================================
+
+PowerNV (as Non-Virtualized) is the "baremetal" platform using the
+OPAL firmware. It runs Linux on IBM and OpenPOWER systems and it can
+be used as an hypervisor OS, running KVM guests, or simply as a host
+OS.
+
+The PowerNV QEMU machine tries to emulate a PowerNV system at the
+level of the skiboot firmware, which loads the OS and provides some
+runtime services. Power Systems have a lower firmware (HostBoot) that
+does low level system initialization, like DRAM training. This is
+beyond the scope of what QEMU addresses today.
+
+Supported devices
+-----------------
+
+ * Multi processor support for POWER8, POWER8NVL and POWER9.
+ * XSCOM, serial communication sideband bus to configure chiplets
+ * Simple LPC Controller
+ * Processor Service Interface (PSI) Controller
+ * Interrupt Controller, XICS (POWER8) and XIVE (POWER9)
+ * POWER8 PHB3 PCIe Host bridge and POWER9 PHB4 PCIe Host bridge
+ * Simple OCC is an on-chip microcontroller used for power management
+   tasks
+ * iBT device to handle BMC communication, with the internal BMC
+   simulator provided by QEMU or an external BMC such as an Aspeed
+   QEMU machine.
+ * PNOR containing the different firmware partitions.
+
+Missing devices
+---------------
+
+A lot is missing, among which :
+
+ * POWER10 processor
+ * XIVE2 (POWER10) interrupt controller
+ * I2C controllers (yet to be merged)
+ * NPU/NPU2/NPU3 controllers
+ * EEH support for PCIe Host bridge controllers
+ * NX controller
+ * VAS controller
+ * chipTOD (Time Of Day)
+ * Self Boot Engine (SBE).
+ * FSI bus
+
+Firmware
+--------
+
+The OPAL firmware (OpenPower Abstraction Layer) for OpenPower systems
+includes the runtime services `skiboot` and the bootloader kernel and
+initramfs `skiroot`. Source code can be found on GitHub:
+
+  https://github.com/open-power.
+
+Prebuilt images of `skiboot` and `skiboot` are made available on the `OpenPOWER <https://openpower.xyz/job/openpower/job/openpower-op-build/>`__ site. To boot a POWER9 machine, use the `witherspoon <https://openpower.xyz/job/openpower/job/openpower-op-build/label=slave,target=witherspoon/lastSuccessfulBuild/>`__ images. For POWER8, use
+the `palmetto <https://openpower.xyz/job/openpower/job/openpower-op-build/label=slave,target=palmetto/lastSuccessfulBuild/>`__ images.
+
+QEMU includes a prebuilt image of `skiboot` which is updated when a
+more recent version is required by the models.
+
+Boot options
+------------
+
+Here is a simple setup with one e1000e NIC :
+
+.. code-block:: bash
+
+  $ qemu-system-ppc64 -m 2G -machine powernv9 -smp 2,cores=2,threads=1 \
+  -accel tcg,thread=single \
+  -device e1000e,netdev=net0,mac=C0:FF:EE:00:00:02,bus=pcie.0,addr=0x0 \
+  -netdev user,id=net0,hostfwd=::20022-:22,hostname=pnv \
+  -kernel ./zImage.epapr  \
+  -initrd ./rootfs.cpio.xz \
+  -nographic
+
+and a SATA disk :
+
+.. code-block:: bash
+
+  -device ich9-ahci,id=sata0,bus=pcie.1,addr=0x0 \
+  -drive file=./ubuntu-ppc64le.qcow2,if=none,id=drive0,format=qcow2,cache=none \
+  -device ide-hd,bus=sata0.0,unit=0,drive=drive0,id=ide,bootindex=1 \
+
+Complex PCIe configuration
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+Six PHBs are defined per chip (POWER9) but no default PCI layout is
+provided (to be compatible with libvirt). One PCI device can be added
+on any of the available PCIe slots using command line options such as:
+
+.. code-block:: bash
+
+  -device e1000e,netdev=net0,mac=C0:FF:EE:00:00:02,bus=pcie.0,addr=0x0
+  -netdev bridge,id=net0,helper=/usr/libexec/qemu-bridge-helper,br=virbr0,id=hostnet0
+
+  -device megasas,id=scsi0,bus=pcie.0,addr=0x0
+  -drive file=./ubuntu-ppc64le.qcow2,if=none,id=drive-scsi0-0-0-0,format=qcow2,cache=none
+  -device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0,bootindex=2
+
+Here is a full example with two different storage controllers on
+different PHBs, each with a disk, the second PHB is empty :
+
+.. code-block:: bash
+
+  $ qemu-system-ppc64 -m 2G -machine powernv9 -smp 2,cores=2,threads=1 -accel tcg,thread=single \
+  -kernel ./zImage.epapr -initrd ./rootfs.cpio.xz -bios ./skiboot.lid \
+  \
+  -device megasas,id=scsi0,bus=pcie.0,addr=0x0 \
+  -drive file=./rhel7-ppc64le.qcow2,if=none,id=drive-scsi0-0-0-0,format=qcow2,cache=none \
+  -device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0,bootindex=2 \
+  \
+  -device pcie-pci-bridge,id=bridge1,bus=pcie.1,addr=0x0 \
+  \
+  -device ich9-ahci,id=sata0,bus=bridge1,addr=0x1 \
+  -drive file=./ubuntu-ppc64le.qcow2,if=none,id=drive0,format=qcow2,cache=none \
+  -device ide-hd,bus=sata0.0,unit=0,drive=drive0,id=ide,bootindex=1 \
+  -device e1000e,netdev=net0,mac=C0:FF:EE:00:00:02,bus=bridge1,addr=0x2 \
+  -netdev bridge,helper=/usr/libexec/qemu-bridge-helper,br=virbr0,id=net0 \
+  -device nec-usb-xhci,bus=bridge1,addr=0x7 \
+  \
+  -serial mon:stdio -nographic
+
+You can also use VIRTIO devices :
+
+.. code-block:: bash
+
+  -drive file=./fedora-ppc64le.qcow2,if=none,snapshot=on,id=drive0 \
+  -device virtio-blk-pci,drive=drive0,id=blk0,bus=pcie.0 \
+  \
+  -netdev tap,helper=/usr/lib/qemu/qemu-bridge-helper,br=virbr0,id=netdev0 \
+  -device virtio-net-pci,netdev=netdev0,id=net0,bus=pcie.1 \
+  \
+  -fsdev local,id=fsdev0,path=$HOME,security_model=passthrough \
+  -device virtio-9p-pci,fsdev=fsdev0,mount_tag=host,bus=pcie.2
+
+Multi sockets
+~~~~~~~~~~~~~
+
+The number of sockets is deduced from the number of CPUs and the
+number of cores. ``-smp 2,cores=1`` will define a machine with 2
+sockets of 1 core, whereas ``-smp 2,cores=2`` will define a machine
+with 1 socket of 2 cores. ``-smp 8,cores=2``, 4 sockets of 2 cores.
+
+BMC configuration
+~~~~~~~~~~~~~~~~~
+
+OpenPOWER systems negotiate the shutdown and reboot with their
+BMC. The QEMU PowerNV machine embeds an IPMI BMC simulator using the
+iBT interface and should offer the same power features.
+
+If you want to define your own BMC, use ``-nodefaults`` and specify
+one on the command line :
+
+.. code-block:: bash
+
+  -device ipmi-bmc-sim,id=bmc0 -device isa-ipmi-bt,bmc=bmc0,irq=10
+
+The files `palmetto-SDR.bin <http://www.kaod.org/qemu/powernv/palmetto-SDR.bin>`__
+and `palmetto-FRU.bin <http://www.kaod.org/qemu/powernv/palmetto-FRU.bin>`__
+define a Sensor Data Record repository and a Field Replaceable Unit
+inventory for a palmetto BMC. They can be used to extend the QEMU BMC
+simulator.
+
+.. code-block:: bash
+
+  -device ipmi-bmc-sim,sdrfile=./palmetto-SDR.bin,fruareasize=256,frudatafile=./palmetto-FRU.bin,id=bmc0 \
+  -device isa-ipmi-bt,bmc=bmc0,irq=10
+
+The PowerNV machine can also be run with an external IPMI BMC device
+connected to a remote QEMU machine acting as BMC, using these options
+:
+
+.. code-block:: bash
+
+  -chardev socket,id=ipmi0,host=localhost,port=9002,reconnect=10 \
+  -device ipmi-bmc-extern,id=bmc0,chardev=ipmi0 \
+  -device isa-ipmi-bt,bmc=bmc0,irq=10 \
+  -nodefaults
+
+NVRAM
+~~~~~
+
+Use a MTD drive to add a PNOR to the machine, and get a NVRAM :
+
+.. code-block:: bash
+
+  -drive file=./witherspoon.pnor,format=raw,if=mtd
+
+CAVEATS
+-------
+
+ * No support for multiple HW threads (SMT=1). Same as pseries.
+ * CPU can hang when doing intensive I/Os. Use ``-append powersave=off`` in that case.
diff --git a/docs/system/ppc/prep.rst b/docs/system/ppc/prep.rst
new file mode 100644
index 0000000000..bd9eb8eabd
--- /dev/null
+++ b/docs/system/ppc/prep.rst
@@ -0,0 +1,18 @@
+Prep machine (``40p``)
+==================================================================
+
+Use the executable ``qemu-system-ppc`` to simulate a complete 40P (PREP)
+
+Supported devices
+-----------------
+
+QEMU emulates the following 40P (PREP) peripherals:
+
+ *  PCI Bridge
+ *  PCI VGA compatible card with VESA Bochs Extensions
+ *  2 IDE interfaces with hard disk and CD-ROM support
+ *  Floppy disk
+ *  PCnet network adapters
+ *  Serial port
+ *  PREP Non Volatile RAM
+ *  PC compatible keyboard and mouse.
diff --git a/docs/system/ppc/pseries.rst b/docs/system/ppc/pseries.rst
new file mode 100644
index 0000000000..932d4dd17d
--- /dev/null
+++ b/docs/system/ppc/pseries.rst
@@ -0,0 +1,12 @@
+pSeries family boards (``pseries``)
+===================================
+
+Supported devices
+-----------------
+
+Missing devices
+---------------
+
+
+Firmware
+--------
diff --git a/docs/system/target-ppc.rst b/docs/system/target-ppc.rst
index a2f04c533c..67905b8f2a 100644
--- a/docs/system/target-ppc.rst
+++ b/docs/system/target-ppc.rst
@@ -3,45 +3,22 @@
 PowerPC System emulator
 -----------------------
 
-Use the executable ``qemu-system-ppc`` to simulate a complete 40P (PREP)
-or PowerMac PowerPC system.
+Board-specific documentation
+============================
 
-QEMU emulates the following PowerMac peripherals:
+You can get a complete list by running ``qemu-system-ppc64 --machine
+help``.
 
--  UniNorth or Grackle PCI Bridge
+..
+   This table of contents should be kept sorted alphabetically
+   by the title text of each file, which isn't the same ordering
+   as an alphabetical sort by filename.
 
--  PCI VGA compatible card with VESA Bochs Extensions
+.. toctree::
+   :maxdepth: 1
 
--  2 PMAC IDE interfaces with hard disk and CD-ROM support
-
--  NE2000 PCI adapters
-
--  Non Volatile RAM
-
--  VIA-CUDA with ADB keyboard and mouse.
-
-QEMU emulates the following 40P (PREP) peripherals:
-
--  PCI Bridge
-
--  PCI VGA compatible card with VESA Bochs Extensions
-
--  2 IDE interfaces with hard disk and CD-ROM support
-
--  Floppy disk
-
--  PCnet network adapters
-
--  Serial port
-
--  PREP Non Volatile RAM
-
--  PC compatible keyboard and mouse.
-
-Since version 0.9.1, QEMU uses OpenBIOS https://www.openbios.org/ for
-the g3beige and mac99 PowerMac and the 40p machines. OpenBIOS is a free
-(GPL v2) portable firmware implementation. The goal is to implement a
-100% IEEE 1275-1994 (referred to as Open Firmware) compliant firmware.
-
-More information is available at
-http://perso.magic.fr/l_indien/qemu-ppc/.
+   ppc/embedded
+   ppc/powermac
+   ppc/powernv
+   ppc/prep
+   ppc/pseries
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 09/20] target/ppc: Fix bcdsub. emulation when result overflows
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (7 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 08/20] docs/system: Extend PPC section David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 10/20] spapr_drc.c: introduce unplug_timeout_timer David Gibson
                   ` (13 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: Paul Clarke, David Gibson, qemu-ppc, qemu-devel, Fabiano Rosas

From: Fabiano Rosas <farosas@linux.ibm.com>

The commit d03b174a83 (target/ppc: simplify bcdadd/sub functions)
meant to simplify some of the code but it inadvertently altered the
way the CR6 field is set after the operation has overflowed.

The CR6 bits are set based on the *unbounded* result of the operation,
so we need to look at the result before returning from bcd_add_mag,
otherwise we will look at 0 when it overflows.

Consider the following subtraction:

v0 = 0x9999999999999999999999999999999c (maximum positive BCD value)
v1 = 0x0000000000000000000000000000001d (negative one BCD value)
bcdsub. v0,v0,v1,0

The Power ISA 2.07B says:
If the unbounded result is greater than zero, do the following.
  If PS=0, the sign code of the result is set to 0b1100.
  If PS=1, the sign code of the result is set to 0b1111.
  If the operation overflows, CR field 6 is set to 0b0101. Otherwise,
  CR field 6 is set to 0b0100.

POWER9 hardware:
vr0 = 0x0000000000000000000000000000000c (positive zero BCD value)
cr6 = 0b0101 (0x5) (positive, overflow)

QEMU:
vr0 = 0x0000000000000000000000000000000c (positive zero BCD value)
cr6 = 0b0011 (0x3) (zero, overflow) <--- wrong

This patch reverts the part of d03b174a83 that introduced the
problem and adds a test-case to avoid further regressions:

before:
$ make run-tcg-tests-ppc64le-linux-user
(...)
  TEST    bcdsub on ppc64le
bcdsub: qemu/tests/tcg/ppc64le/bcdsub.c:58: test_bcdsub_gt:
Assertion `(cr >> 4) == ((1 << 2) | (1 << 0))' failed.

Fixes: d03b174a83 (target/ppc: simplify bcdadd/sub functions)
Reported-by: Paul Clarke <pc@us.ibm.com>
Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com>
Message-Id: <20210222194035.2723056-1-farosas@linux.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 target/ppc/int_helper.c           |  13 ++-
 tests/tcg/configure.sh            |   6 ++
 tests/tcg/ppc64/Makefile.target   |  13 +++
 tests/tcg/ppc64le/Makefile.target |  12 +++
 tests/tcg/ppc64le/bcdsub.c        | 130 ++++++++++++++++++++++++++++++
 5 files changed, 171 insertions(+), 3 deletions(-)
 create mode 100644 tests/tcg/ppc64/Makefile.target
 create mode 100644 tests/tcg/ppc64le/Makefile.target
 create mode 100644 tests/tcg/ppc64le/bcdsub.c

diff --git a/target/ppc/int_helper.c b/target/ppc/int_helper.c
index 0b682a1f94..429de28494 100644
--- a/target/ppc/int_helper.c
+++ b/target/ppc/int_helper.c
@@ -2175,14 +2175,17 @@ static int bcd_cmp_mag(ppc_avr_t *a, ppc_avr_t *b)
     return 0;
 }
 
-static void bcd_add_mag(ppc_avr_t *t, ppc_avr_t *a, ppc_avr_t *b, int *invalid,
+static int bcd_add_mag(ppc_avr_t *t, ppc_avr_t *a, ppc_avr_t *b, int *invalid,
                        int *overflow)
 {
     int carry = 0;
     int i;
+    int is_zero = 1;
+
     for (i = 1; i <= 31; i++) {
         uint8_t digit = bcd_get_digit(a, i, invalid) +
                         bcd_get_digit(b, i, invalid) + carry;
+        is_zero &= (digit == 0);
         if (digit > 9) {
             carry = 1;
             digit -= 10;
@@ -2194,6 +2197,7 @@ static void bcd_add_mag(ppc_avr_t *t, ppc_avr_t *a, ppc_avr_t *b, int *invalid,
     }
 
     *overflow = carry;
+    return is_zero;
 }
 
 static void bcd_sub_mag(ppc_avr_t *t, ppc_avr_t *a, ppc_avr_t *b, int *invalid,
@@ -2225,14 +2229,15 @@ uint32_t helper_bcdadd(ppc_avr_t *r,  ppc_avr_t *a, ppc_avr_t *b, uint32_t ps)
     int sgnb = bcd_get_sgn(b);
     int invalid = (sgna == 0) || (sgnb == 0);
     int overflow = 0;
+    int zero = 0;
     uint32_t cr = 0;
     ppc_avr_t result = { .u64 = { 0, 0 } };
 
     if (!invalid) {
         if (sgna == sgnb) {
             result.VsrB(BCD_DIG_BYTE(0)) = bcd_preferred_sgn(sgna, ps);
-            bcd_add_mag(&result, a, b, &invalid, &overflow);
-            cr = bcd_cmp_zero(&result);
+            zero = bcd_add_mag(&result, a, b, &invalid, &overflow);
+            cr = (sgna > 0) ? CRF_GT : CRF_LT;
         } else {
             int magnitude = bcd_cmp_mag(a, b);
             if (magnitude > 0) {
@@ -2255,6 +2260,8 @@ uint32_t helper_bcdadd(ppc_avr_t *r,  ppc_avr_t *a, ppc_avr_t *b, uint32_t ps)
         cr = CRF_SO;
     } else if (overflow) {
         cr |= CRF_SO;
+    } else if (zero) {
+        cr |= CRF_EQ;
     }
 
     *r = result;
diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh
index 36b8a73a54..ce304f4933 100755
--- a/tests/tcg/configure.sh
+++ b/tests/tcg/configure.sh
@@ -251,6 +251,12 @@ for target in $target_list; do
                 echo "CROSS_CC_HAS_ARMV8_MTE=y" >> $config_target_mak
             fi
         ;;
+        ppc*)
+            if do_compiler "$target_compiler" $target_compiler_cflags \
+               -mpower8-vector -o $TMPE $TMPC; then
+                echo "CROSS_CC_HAS_POWER8_VECTOR=y" >> $config_target_mak
+            fi
+        ;;
     esac
 
     enabled_cross_compilers="$enabled_cross_compilers $target_compiler"
diff --git a/tests/tcg/ppc64/Makefile.target b/tests/tcg/ppc64/Makefile.target
new file mode 100644
index 0000000000..0c6a4585fc
--- /dev/null
+++ b/tests/tcg/ppc64/Makefile.target
@@ -0,0 +1,13 @@
+# -*- Mode: makefile -*-
+#
+# ppc64 specific tweaks
+
+VPATH += $(SRC_PATH)/tests/tcg/ppc64
+VPATH += $(SRC_PATH)/tests/tcg/ppc64le
+
+ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_POWER8_VECTOR),)
+PPC64_TESTS=bcdsub
+endif
+bcdsub: CFLAGS += -mpower8-vector
+
+TESTS += $(PPC64_TESTS)
diff --git a/tests/tcg/ppc64le/Makefile.target b/tests/tcg/ppc64le/Makefile.target
new file mode 100644
index 0000000000..1acfcff94a
--- /dev/null
+++ b/tests/tcg/ppc64le/Makefile.target
@@ -0,0 +1,12 @@
+# -*- Mode: makefile -*-
+#
+# ppc64le specific tweaks
+
+VPATH += $(SRC_PATH)/tests/tcg/ppc64le
+
+ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_POWER8_VECTOR),)
+PPC64LE_TESTS=bcdsub
+endif
+bcdsub: CFLAGS += -mpower8-vector
+
+TESTS += $(PPC64LE_TESTS)
diff --git a/tests/tcg/ppc64le/bcdsub.c b/tests/tcg/ppc64le/bcdsub.c
new file mode 100644
index 0000000000..8c188cae6d
--- /dev/null
+++ b/tests/tcg/ppc64le/bcdsub.c
@@ -0,0 +1,130 @@
+#include <assert.h>
+#include <unistd.h>
+#include <signal.h>
+
+#define CRF_LT  (1 << 3)
+#define CRF_GT  (1 << 2)
+#define CRF_EQ  (1 << 1)
+#define CRF_SO  (1 << 0)
+#define UNDEF   0
+
+#define BCDSUB(vra, vrb, ps)                    \
+    asm ("bcdsub. %1,%2,%3,%4;"                 \
+         "mfocrf %0,0b10;"                      \
+         : "=r" (cr), "=v" (vrt)                \
+         : "v" (vra), "v" (vrb), "i" (ps)       \
+         : );
+
+#define TEST(vra, vrb, ps, exp_res, exp_cr6)    \
+    do {                                        \
+        __int128 vrt = 0;                       \
+        int cr = 0;                             \
+        BCDSUB(vra, vrb, ps);                   \
+        if (exp_res)                            \
+            assert(vrt == exp_res);             \
+        assert((cr >> 4) == exp_cr6);           \
+    } while (0)
+
+
+/*
+ * Unbounded result is equal to zero:
+ *   sign = (PS) ? 0b1111 : 0b1100
+ *   CR6 = 0b0010
+ */
+void test_bcdsub_eq(void)
+{
+    __int128 a, b;
+
+    /* maximum positive BCD value */
+    a = b = (((__int128) 0x9999999999999999) << 64 | 0x999999999999999c);
+
+    TEST(a, b, 0, 0xc, CRF_EQ);
+    TEST(a, b, 1, 0xf, CRF_EQ);
+}
+
+/*
+ * Unbounded result is greater than zero:
+ *   sign = (PS) ? 0b1111 : 0b1100
+ *   CR6 = (overflow) ? 0b0101 : 0b0100
+ */
+void test_bcdsub_gt(void)
+{
+    __int128 a, b, c;
+
+    /* maximum positive BCD value */
+    a = (((__int128) 0x9999999999999999) << 64 | 0x999999999999999c);
+
+    /* negative one BCD value */
+    b = (__int128) 0x1d;
+
+    TEST(a, b, 0, 0xc, (CRF_GT | CRF_SO));
+    TEST(a, b, 1, 0xf, (CRF_GT | CRF_SO));
+
+    c = (((__int128) 0x9999999999999999) << 64 | 0x999999999999998c);
+
+    TEST(c, b, 0, a, CRF_GT);
+    TEST(c, b, 1, (a | 0x3), CRF_GT);
+}
+
+/*
+ * Unbounded result is less than zero:
+ *   sign = 0b1101
+ *   CR6 = (overflow) ? 0b1001 : 0b1000
+ */
+void test_bcdsub_lt(void)
+{
+    __int128 a, b;
+
+    /* positive zero BCD value */
+    a = (__int128) 0xc;
+
+    /* positive one BCD value */
+    b = (__int128) 0x1c;
+
+    TEST(a, b, 0, 0x1d, CRF_LT);
+    TEST(a, b, 1, 0x1d, CRF_LT);
+
+    /* maximum negative BCD value */
+    a = (((__int128) 0x9999999999999999) << 64 | 0x999999999999999d);
+
+    /* positive one BCD value */
+    b = (__int128) 0x1c;
+
+    TEST(a, b, 0, 0xd, (CRF_LT | CRF_SO));
+    TEST(a, b, 1, 0xd, (CRF_LT | CRF_SO));
+}
+
+void test_bcdsub_invalid(void)
+{
+    __int128 a, b;
+
+    /* positive one BCD value */
+    a = (__int128) 0x1c;
+    b = 0xf00;
+
+    TEST(a, b, 0, UNDEF, CRF_SO);
+    TEST(a, b, 1, UNDEF, CRF_SO);
+
+    TEST(b, a, 0, UNDEF, CRF_SO);
+    TEST(b, a, 1, UNDEF, CRF_SO);
+
+    a = 0xbad;
+
+    TEST(a, b, 0, UNDEF, CRF_SO);
+    TEST(a, b, 1, UNDEF, CRF_SO);
+}
+
+int main(void)
+{
+    struct sigaction action;
+
+    action.sa_handler = _exit;
+    sigaction(SIGABRT, &action, NULL);
+
+    test_bcdsub_eq();
+    test_bcdsub_gt();
+    test_bcdsub_lt();
+    test_bcdsub_invalid();
+
+    return 0;
+}
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 10/20] spapr_drc.c: introduce unplug_timeout_timer
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (8 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 09/20] target/ppc: Fix bcdsub. emulation when result overflows David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 11/20] spapr_drc.c: add hotunplug timeout for CPUs David Gibson
                   ` (12 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: Daniel Henrique Barboza, qemu-ppc, qemu-devel, David Gibson

From: Daniel Henrique Barboza <danielhb413@gmail.com>

The LoPAR spec provides no way for the guest kernel to report failure of
hotplug/hotunplug events. This wouldn't be bad if those operations were
granted to always succeed, but that's far for the reality.

What ends up happening is that, in the case of a failed hotunplug,
regardless of whether it was a QEMU error or a guest misbehavior, the
pSeries machine is retaining the unplug state of the device in the
running guest.  This state is cleanup in machine reset, where it is
assumed that this state represents a device that is pending unplug, and
the device is hotunpluged from the board. Until the reset occurs, any
hotunplug operation of the same device is forbid because there is a
pending unplug state.

This behavior has at least one undesirable side effect. A long standing
pending unplug state is, more often than not, the result of a hotunplug
error. The user had to dealt with it, since retrying to unplug the
device is noy allowed, and then in the machine reset we're removing the
device from the guest. This means that we're failing the user twice -
failed to hotunplug when asked, then hotunplugged without notice.

Solutions to this problem range between trying to predict when the
hotunplug will fail and forbid the operation from the QEMU layer, from
opening up the IRQ queue to allow for multiple hotunplug attempts, from
telling the users to 'reboot the machine if something goes wrong'. The
first solution is flawed because we can't fully predict guest behavior
from QEMU, the second solution is a trial and error remediation that
counts on a hope that the unplug will eventually succeed, and the third
is ... well.

This patch introduces a crude, but effective solution to hotunplug
errors in the pSeries machine. For each unplug done, we'll timeout after
some time. If a certain amount of time passes, we'll cleanup the
hotunplug state from the machine.  During the timeout period, any unplug
operations in the same device will still be blocked. After that, we'll
assume that the guest failed the operation, and allow the user to try
again. If the timeout is too short we'll prevent legitimate hotunplug
situations to occur, so we'll need to overestimate the regular time an
unplug operation takes to succeed to account that.

The true solution for the hotunplug errors in the pSeries machines is a
PAPR change to allow for the guest to warn the platform about it. For
now, the work done in this timeout design can be used for the new PAPR
'abort hcall' in the future, given that for both cases we'll need code
to cleanup the existing unplug states of the DRCs.

At this moment we're adding the basic wiring of the timer into the DRC.
Next patch will use the timer to timeout failed CPU hotunplugs.

Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20210222194531.62717-4-danielhb413@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr_drc.c         | 40 ++++++++++++++++++++++++++++++++++++++
 include/hw/ppc/spapr_drc.h |  4 ++++
 2 files changed, 44 insertions(+)

diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
index 67041fb212..27adbc5c30 100644
--- a/hw/ppc/spapr_drc.c
+++ b/hw/ppc/spapr_drc.c
@@ -57,6 +57,8 @@ static void spapr_drc_release(SpaprDrc *drc)
     drck->release(drc->dev);
 
     drc->unplug_requested = false;
+    timer_del(drc->unplug_timeout_timer);
+
     g_free(drc->fdt);
     drc->fdt = NULL;
     drc->fdt_start_offset = 0;
@@ -370,6 +372,17 @@ static void prop_get_fdt(Object *obj, Visitor *v, const char *name,
     } while (fdt_depth != 0);
 }
 
+static void spapr_drc_start_unplug_timeout_timer(SpaprDrc *drc)
+{
+    SpaprDrcClass *drck = SPAPR_DR_CONNECTOR_GET_CLASS(drc);
+
+    if (drck->unplug_timeout_seconds != 0) {
+        timer_mod(drc->unplug_timeout_timer,
+                  qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) +
+                  drck->unplug_timeout_seconds * 1000);
+    }
+}
+
 void spapr_drc_attach(SpaprDrc *drc, DeviceState *d)
 {
     trace_spapr_drc_attach(spapr_drc_index(drc));
@@ -475,11 +488,23 @@ static bool spapr_drc_needed(void *opaque)
         spapr_drc_unplug_requested(drc);
 }
 
+static int spapr_drc_post_load(void *opaque, int version_id)
+{
+    SpaprDrc *drc = opaque;
+
+    if (drc->unplug_requested) {
+        spapr_drc_start_unplug_timeout_timer(drc);
+    }
+
+    return 0;
+}
+
 static const VMStateDescription vmstate_spapr_drc = {
     .name = "spapr_drc",
     .version_id = 1,
     .minimum_version_id = 1,
     .needed = spapr_drc_needed,
+    .post_load = spapr_drc_post_load,
     .fields  = (VMStateField []) {
         VMSTATE_UINT32(state, SpaprDrc),
         VMSTATE_END_OF_LIST()
@@ -490,6 +515,15 @@ static const VMStateDescription vmstate_spapr_drc = {
     }
 };
 
+static void drc_unplug_timeout_cb(void *opaque)
+{
+    SpaprDrc *drc = opaque;
+
+    if (drc->unplug_requested) {
+        drc->unplug_requested = false;
+    }
+}
+
 static void drc_realize(DeviceState *d, Error **errp)
 {
     SpaprDrc *drc = SPAPR_DR_CONNECTOR(d);
@@ -512,6 +546,11 @@ static void drc_realize(DeviceState *d, Error **errp)
     object_property_add_alias(root_container, link_name,
                               drc->owner, child_name);
     g_free(link_name);
+
+    drc->unplug_timeout_timer = timer_new_ms(QEMU_CLOCK_VIRTUAL,
+                                             drc_unplug_timeout_cb,
+                                             drc);
+
     vmstate_register(VMSTATE_IF(drc), spapr_drc_index(drc), &vmstate_spapr_drc,
                      drc);
     trace_spapr_drc_realize_complete(spapr_drc_index(drc));
@@ -529,6 +568,7 @@ static void drc_unrealize(DeviceState *d)
     name = g_strdup_printf("%x", spapr_drc_index(drc));
     object_property_del(root_container, name);
     g_free(name);
+    timer_free(drc->unplug_timeout_timer);
 }
 
 SpaprDrc *spapr_dr_connector_new(Object *owner, const char *type,
diff --git a/include/hw/ppc/spapr_drc.h b/include/hw/ppc/spapr_drc.h
index 02a63b3666..38ec4c8091 100644
--- a/include/hw/ppc/spapr_drc.h
+++ b/include/hw/ppc/spapr_drc.h
@@ -187,6 +187,8 @@ typedef struct SpaprDrc {
     bool unplug_requested;
     void *fdt;
     int fdt_start_offset;
+
+    QEMUTimer *unplug_timeout_timer;
 } SpaprDrc;
 
 struct SpaprMachineState;
@@ -209,6 +211,8 @@ typedef struct SpaprDrcClass {
 
     int (*dt_populate)(SpaprDrc *drc, struct SpaprMachineState *spapr,
                        void *fdt, int *fdt_start_offset, Error **errp);
+
+    int unplug_timeout_seconds;
 } SpaprDrcClass;
 
 typedef struct SpaprDrcPhysical {
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 11/20] spapr_drc.c: add hotunplug timeout for CPUs
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (9 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 10/20] spapr_drc.c: introduce unplug_timeout_timer David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 12/20] spapr_drc.c: use DRC reconfiguration to cleanup DIMM unplug state David Gibson
                   ` (11 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: Daniel Henrique Barboza, qemu-ppc, qemu-devel, David Gibson, Xujun Ma

From: Daniel Henrique Barboza <danielhb413@gmail.com>

There is a reliable way to make a CPU hotunplug fail in the pseries
machine. Hotplug a CPU A, then offline all other CPUs inside the guest
but A. When trying to hotunplug A the guest kernel will refuse to do it,
because A is now the last online CPU of the guest. PAPR has no 'error
callback' in this situation to report back to the platform, so the guest
kernel will deny the unplug in silent and QEMU will never know what
happened. The unplug pending state of A will remain until the guest is
shutdown or rebooted.

Previous attempts of fixing it (see [1] and [2]) were aimed at trying to
mitigate the effects of the problem. In [1] we were trying to guess
which guest CPUs were online to forbid hotunplug of the last online CPU
in the QEMU layer, avoiding the scenario described above because QEMU is
now failing in behalf of the guest. This is not robust because the last
online CPU of the guest can change while we're in the middle of the
unplug process, and our initial assumptions are now invalid. In [2] we
were accepting that our unplug process is uncertain and the user should
be allowed to spam the IRQ hotunplug queue of the guest in case the CPU
hotunplug fails.

This patch presents another alternative, using the timeout
infrastructure introduced in the previous patch. CPU hotunplugs in the
pSeries machine will now timeout after 15 seconds. This is a long time
for a single CPU unplug to occur, regardless of guest load - although
the user is *strongly* encouraged to *not* hotunplug devices from a
guest under high load - and we can be sure that something went wrong if
it takes longer than that for the guest to release the CPU (the same
can't be said about memory hotunplug - more on that in the next patch).

Timing out the unplug operation will reset the unplug state of the CPU
and allow the user to try it again, regardless of the error situation
that prevented the hotunplug to occur. Of all the not so pretty
fixes/mitigations for CPU hotunplug errors in pSeries, timing out the
operation is an admission that we have no control in the process, and
must assume the worst case if the operation doesn't succeed in a
sensible time frame.

[1] https://lists.gnu.org/archive/html/qemu-devel/2021-01/msg03353.html
[2] https://lists.gnu.org/archive/html/qemu-devel/2021-01/msg04400.html

Reported-by: Xujun Ma <xuma@redhat.com>
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1911414
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20210222194531.62717-5-danielhb413@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr.c             |  4 ++++
 hw/ppc/spapr_drc.c         | 13 +++++++++++++
 include/hw/ppc/spapr_drc.h |  1 +
 3 files changed, 18 insertions(+)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index b066df68cb..ecce8abf14 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3724,6 +3724,10 @@ void spapr_core_unplug_request(HotplugHandler *hotplug_dev, DeviceState *dev,
     if (!spapr_drc_unplug_requested(drc)) {
         spapr_drc_unplug_request(drc);
         spapr_hotplug_req_remove_by_index(drc);
+    } else {
+        error_setg(errp, "core-id %d unplug is still pending, %d seconds "
+                   "timeout remaining",
+                   cc->core_id, spapr_drc_unplug_timeout_remaining_sec(drc));
     }
 }
 
diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
index 27adbc5c30..fd2e45640f 100644
--- a/hw/ppc/spapr_drc.c
+++ b/hw/ppc/spapr_drc.c
@@ -409,6 +409,8 @@ void spapr_drc_unplug_request(SpaprDrc *drc)
 
     drc->unplug_requested = true;
 
+    spapr_drc_start_unplug_timeout_timer(drc);
+
     if (drc->state != drck->empty_state) {
         trace_spapr_drc_awaiting_quiesce(spapr_drc_index(drc));
         return;
@@ -417,6 +419,16 @@ void spapr_drc_unplug_request(SpaprDrc *drc)
     spapr_drc_release(drc);
 }
 
+int spapr_drc_unplug_timeout_remaining_sec(SpaprDrc *drc)
+{
+    if (drc->unplug_requested && timer_pending(drc->unplug_timeout_timer)) {
+        return (qemu_timeout_ns_to_ms(drc->unplug_timeout_timer->expire_time) -
+                qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL)) / 1000;
+    }
+
+    return 0;
+}
+
 bool spapr_drc_reset(SpaprDrc *drc)
 {
     SpaprDrcClass *drck = SPAPR_DR_CONNECTOR_GET_CLASS(drc);
@@ -710,6 +722,7 @@ static void spapr_drc_cpu_class_init(ObjectClass *k, void *data)
     drck->drc_name_prefix = "CPU ";
     drck->release = spapr_core_release;
     drck->dt_populate = spapr_core_dt_populate;
+    drck->unplug_timeout_seconds = 15;
 }
 
 static void spapr_drc_pci_class_init(ObjectClass *k, void *data)
diff --git a/include/hw/ppc/spapr_drc.h b/include/hw/ppc/spapr_drc.h
index 38ec4c8091..26599c385a 100644
--- a/include/hw/ppc/spapr_drc.h
+++ b/include/hw/ppc/spapr_drc.h
@@ -248,6 +248,7 @@ int spapr_dt_drc(void *fdt, int offset, Object *owner, uint32_t drc_type_mask);
  */
 void spapr_drc_attach(SpaprDrc *drc, DeviceState *d);
 void spapr_drc_unplug_request(SpaprDrc *drc);
+int spapr_drc_unplug_timeout_remaining_sec(SpaprDrc *drc);
 
 /*
  * Reset all DRCs, causing pending hot-plug/unplug requests to complete.
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 12/20] spapr_drc.c: use DRC reconfiguration to cleanup DIMM unplug state
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (10 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 11/20] spapr_drc.c: add hotunplug timeout for CPUs David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 13/20] hw/net: fsl_etsec: Fix build error when HEX_DUMP is on David Gibson
                   ` (10 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: Daniel Henrique Barboza, qemu-ppc, qemu-devel, David Gibson

From: Daniel Henrique Barboza <danielhb413@gmail.com>

Handling errors in memory hotunplug in the pSeries machine is more
complex than any other device type, because there are all the
complications that other devices has, and more.

For instance, determining a timeout for a DIMM hotunplug must consider
if it's a Hash-MMU or a Radix-MMU guest, because Hash guests takes
longer to hotunplug DIMMs. The size of the DIMM is also a factor, given
that longer DIMMs naturally takes longer to be hotunplugged from the
kernel. And there's also the guest memory usage to be considered: if
there's a process that is consuming memory that would be lost by the
DIMM unplug, the kernel will postpone the unplug process until the
process finishes, and then initiate the regular hotunplug process. The
first two considerations are manageable, but the last one is a deal
breaker.

There is no sane way for the pSeries machine to determine the memory
load in the guest when attempting a DIMM hotunplug - and even if there
was a way, the guest can start using all the RAM in the middle of the
unplug process and invalidate our previous assumptions - and in result
we can't even begin to calculate a timeout for the operation. This means
that we can't implement a viable timeout mechanism for memory unplug in
pSeries.

Going back to why we would consider an unplug timeout, the reason is
that we can't know if the kernel is giving up the unplug. Turns out
that, sometimes, we can. Consider a failed memory hotunplug attempt
where the kernel will error out with the following message:

'pseries-hotplug-mem: Memory indexed-count-remove failed, adding any
removed LMBs'

This happens when there is a LMB that the kernel gave up in removing,
and the LMBs previously marked for removal are now being added back.
This happens in the pseries kernel in [1], dlpar_memory_remove_by_ic()
into dlpar_add_lmb(), and after that update_lmb_associativity_index().
In this function, the kernel is configuring the LMB DRC connector again.
Note that this is a valid usage in LOPAR, as stated in section
"ibm,configure-connector RTAS Call":

'A subsequent sequence of calls to ibm,configure-connector with the same
entry from the “ibm,drc-indexes” or “ibm,drc-info” property will restart
the configuration of devices which were not completely configured.'

We can use this kernel behavior in our favor. If a DRC connector
reconfiguration for a LMB that we marked as unplug pending happens, this
indicates that the kernel changed its mind about the unplug and is
reasserting that it will keep using all the LMBs of the DIMM. In this
case, it's safe to assume that the whole DIMM device unplug was
cancelled.

This patch hops into rtas_ibm_configure_connector() and, in the scenario
described above, clear the unplug state for the DIMM device. This will
not solve all the problems we still have with memory unplug, but it will
cover this case where the kernel reconfigures LMBs after a failed
unplug. We are a bit more resilient, without using an unreliable
timeout, and we didn't make the remaining error cases any worse.

[1] arch/powerpc/platforms/pseries/hotplug-memory.c

Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20210222194531.62717-6-danielhb413@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr.c         | 43 ++++++++++++++++++++++++++++++++++++++++++
 hw/ppc/spapr_drc.c     | 10 ++++++++++
 include/hw/ppc/spapr.h |  2 ++
 3 files changed, 55 insertions(+)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index ecce8abf14..6eaddb12cb 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3575,6 +3575,49 @@ static SpaprDimmState *spapr_recover_pending_dimm_state(SpaprMachineState *ms,
     return spapr_pending_dimm_unplugs_add(ms, avail_lmbs, dimm);
 }
 
+void spapr_clear_pending_dimm_unplug_state(SpaprMachineState *spapr,
+                                           DeviceState *dev)
+{
+    SpaprDimmState *ds;
+    PCDIMMDevice *dimm;
+    SpaprDrc *drc;
+    uint32_t nr_lmbs;
+    uint64_t size, addr_start, addr;
+    int i;
+
+    if (!dev) {
+        return;
+    }
+
+    dimm = PC_DIMM(dev);
+    ds = spapr_pending_dimm_unplugs_find(spapr, dimm);
+
+    /*
+     * 'ds == NULL' would mean that the DIMM doesn't have a pending
+     * unplug state, but one of its DRC is marked as unplug_requested.
+     * This is bad and weird enough to g_assert() out.
+     */
+    g_assert(ds);
+
+    spapr_pending_dimm_unplugs_remove(spapr, ds);
+
+    size = memory_device_get_region_size(MEMORY_DEVICE(dimm), &error_abort);
+    nr_lmbs = size / SPAPR_MEMORY_BLOCK_SIZE;
+
+    addr_start = object_property_get_uint(OBJECT(dimm), PC_DIMM_ADDR_PROP,
+                                          &error_abort);
+
+    addr = addr_start;
+    for (i = 0; i < nr_lmbs; i++) {
+        drc = spapr_drc_by_id(TYPE_SPAPR_DRC_LMB,
+                              addr / SPAPR_MEMORY_BLOCK_SIZE);
+        g_assert(drc);
+
+        drc->unplug_requested = false;
+        addr += SPAPR_MEMORY_BLOCK_SIZE;
+    }
+}
+
 /* Callback to be called during DRC release. */
 void spapr_lmb_release(DeviceState *dev)
 {
diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
index fd2e45640f..8c4997d795 100644
--- a/hw/ppc/spapr_drc.c
+++ b/hw/ppc/spapr_drc.c
@@ -1230,6 +1230,16 @@ static void rtas_ibm_configure_connector(PowerPCCPU *cpu,
 
     drck = SPAPR_DR_CONNECTOR_GET_CLASS(drc);
 
+    /*
+     * This indicates that the kernel is reconfiguring a LMB due to
+     * a failed hotunplug. Clear the pending unplug state for the whole
+     * DIMM.
+     */
+    if (spapr_drc_type(drc) == SPAPR_DR_CONNECTOR_TYPE_LMB &&
+        drc->unplug_requested) {
+        spapr_clear_pending_dimm_unplug_state(spapr, drc->dev);
+    }
+
     if (!drc->fdt) {
         void *fdt;
         int fdt_size;
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index ccbeeca1de..d6edeaaaff 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -847,6 +847,8 @@ int spapr_hpt_shift_for_ramsize(uint64_t ramsize);
 int spapr_reallocate_hpt(SpaprMachineState *spapr, int shift, Error **errp);
 void spapr_clear_pending_events(SpaprMachineState *spapr);
 void spapr_clear_pending_hotplug_events(SpaprMachineState *spapr);
+void spapr_clear_pending_dimm_unplug_state(SpaprMachineState *spapr,
+                                           DeviceState *dev);
 int spapr_max_server_number(SpaprMachineState *spapr);
 void spapr_store_hpte(PowerPCCPU *cpu, hwaddr ptex,
                       uint64_t pte0, uint64_t pte1);
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 13/20] hw/net: fsl_etsec: Fix build error when HEX_DUMP is on
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (11 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 12/20] spapr_drc.c: use DRC reconfiguration to cleanup DIMM unplug state David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 14/20] hw/ppc: e500: Add missing <ranges> in the eTSEC node David Gibson
                   ` (9 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug; +Cc: Bin Meng, qemu-ppc, qemu-devel, David Gibson

From: Bin Meng <bin.meng@windriver.com>

"qemu-common.h" should be included to provide the forward declaration
of qemu_hexdump() when HEX_DUMP is on.

Signed-off-by: Bin Meng <bin.meng@windriver.com>
Message-Id: <20210228050431.24647-1-bmeng.cn@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/net/fsl_etsec/etsec.c | 1 +
 hw/net/fsl_etsec/rings.c | 1 +
 2 files changed, 2 insertions(+)

diff --git a/hw/net/fsl_etsec/etsec.c b/hw/net/fsl_etsec/etsec.c
index 93886bba60..bd9d62b559 100644
--- a/hw/net/fsl_etsec/etsec.c
+++ b/hw/net/fsl_etsec/etsec.c
@@ -27,6 +27,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu-common.h"
 #include "hw/sysbus.h"
 #include "hw/irq.h"
 #include "hw/ptimer.h"
diff --git a/hw/net/fsl_etsec/rings.c b/hw/net/fsl_etsec/rings.c
index fe055d3381..d6be0d7d18 100644
--- a/hw/net/fsl_etsec/rings.c
+++ b/hw/net/fsl_etsec/rings.c
@@ -22,6 +22,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu-common.h"
 #include "net/checksum.h"
 #include "qemu/log.h"
 #include "etsec.h"
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 14/20] hw/ppc: e500: Add missing <ranges> in the eTSEC node
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (12 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 13/20] hw/net: fsl_etsec: Fix build error when HEX_DUMP is on David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 15/20] spapr.c: add 'unplug already in progress' message for PHB unplug David Gibson
                   ` (8 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug; +Cc: Bin Meng, qemu-ppc, qemu-devel, David Gibson

From: Bin Meng <bin.meng@windriver.com>

The eTSEC node should provide an empty <ranges> property in the
eTSEC node, otherwise of_translate_address() in the Linux kernel
fails to get the eTSEC register base, reporting:

  OF: ** translation for device /platform@f00000000/ethernet@0/queue-group **
  OF: bus is default (na=1, ns=1) on /platform@f00000000/ethernet@0
  OF: translating address: 00000000
  OF: parent bus is default (na=1, ns=1) on /platform@f00000000
  OF: no ranges; cannot translate

Per devicetree spec v0.3 [1] chapter 2.3.8:

  If the property is not present in a bus node, it is assumed that
  no mapping exists between children of the node and the parent
  address space.

This is why of_translate_address() aborts the address translation.
Apparently U-Boot devicetree parser seems to be tolerant with
missing <ranges> as this was not noticed when testing with U-Boot.
The empty <ranges> property is present in all kernel shipped dtsi
files for eTSEC, Let's add it to conform with the spec.

[1] https://github.com/devicetree-org/devicetree-specification/releases/download/v0.3/devicetree-specification-v0.3.pdf

Fixes: fdfb7f2cdb2d ("e500: Add support for eTSEC in device tree")
Signed-off-by: Bin Meng <bin.meng@windriver.com>
Message-Id: <1614158919-9473-1-git-send-email-bmeng.cn@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/e500.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index 01517a6c6c..1d94485ac8 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -231,6 +231,7 @@ static int create_devtree_etsec(SysBusDevice *sbdev, PlatformDevtreeData *data)
     assert(irq2 >= 0);
 
     qemu_fdt_add_subnode(fdt, node);
+    qemu_fdt_setprop(fdt, node, "ranges", NULL, 0);
     qemu_fdt_setprop_string(fdt, node, "device_type", "network");
     qemu_fdt_setprop_string(fdt, node, "compatible", "fsl,etsec2");
     qemu_fdt_setprop_string(fdt, node, "model", "eTSEC");
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 15/20] spapr.c: add 'unplug already in progress' message for PHB unplug
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (13 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 14/20] hw/ppc: e500: Add missing <ranges> in the eTSEC node David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 16/20] spapr_pci.c: add 'unplug already in progress' message for PCI unplug David Gibson
                   ` (7 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: Daniel Henrique Barboza, qemu-ppc, qemu-devel, David Gibson

From: Daniel Henrique Barboza <danielhb413@gmail.com>

Both CPU hotunplug and PC_DIMM unplug reports an user warning,
mentioning that the hotunplug is in progress, if consecutive
'device_del' are issued in quick succession.

Do the same for PHBs in spapr_phb_unplug_request().

Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20210226163301.419727-4-danielhb413@gmail.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 6eaddb12cb..aca3ef9d58 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -4034,6 +4034,10 @@ static void spapr_phb_unplug_request(HotplugHandler *hotplug_dev,
     if (!spapr_drc_unplug_requested(drc)) {
         spapr_drc_unplug_request(drc);
         spapr_hotplug_req_remove_by_index(drc);
+    } else {
+        error_setg(errp,
+                   "PCI Host Bridge unplug already in progress for device %s",
+                   dev->id);
     }
 }
 
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 16/20] spapr_pci.c: add 'unplug already in progress' message for PCI unplug
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (14 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 15/20] spapr.c: add 'unplug already in progress' message for PHB unplug David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:09 ` [PULL 17/20] qemu_timer.c: add timer_deadline_ms() helper David Gibson
                   ` (6 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: Daniel Henrique Barboza, qemu-ppc, qemu-devel, David Gibson

From: Daniel Henrique Barboza <danielhb413@gmail.com>

Hotunplug for all other devices are warning the user when the hotunplug
is already in progress. Do the same for PCI devices in
spapr_pci_unplug_request().

Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20210226163301.419727-5-danielhb413@gmail.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr_pci.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index b00e9609ae..feba18cb12 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -1743,6 +1743,10 @@ static void spapr_pci_unplug_request(HotplugHandler *plug_handler,
                 }
             }
         }
+    } else {
+        error_setg(errp,
+                   "PCI device unplug already in progress for device %s",
+                   drc->dev->id);
     }
 }
 
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 17/20] qemu_timer.c: add timer_deadline_ms() helper
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (15 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 16/20] spapr_pci.c: add 'unplug already in progress' message for PCI unplug David Gibson
@ 2021-03-10  4:09 ` David Gibson
  2021-03-10  4:10 ` [PULL 18/20] target/ppc: fix icount support on Book-e vms accessing SPRs David Gibson
                   ` (5 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:09 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: Paolo Bonzini, Daniel Henrique Barboza, qemu-ppc, qemu-devel,
	David Gibson

From: Daniel Henrique Barboza <danielhb413@gmail.com>

The pSeries machine is using QEMUTimer internals to return the timeout
in seconds for a timer object, in hw/ppc/spapr.c, function
spapr_drc_unplug_timeout_remaining_sec().

Create a helper in qemu-timer.c to retrieve the deadline for a QEMUTimer
object, in ms, to avoid exposing timer internals to the PPC code.

CC: Paolo Bonzini <pbonzini@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20210301124133.23800-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   |  5 ++---
 include/qemu/timer.h |  8 ++++++++
 util/qemu-timer.c    | 13 +++++++++++++
 3 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
index 8c4997d795..98b626acf9 100644
--- a/hw/ppc/spapr_drc.c
+++ b/hw/ppc/spapr_drc.c
@@ -421,9 +421,8 @@ void spapr_drc_unplug_request(SpaprDrc *drc)
 
 int spapr_drc_unplug_timeout_remaining_sec(SpaprDrc *drc)
 {
-    if (drc->unplug_requested && timer_pending(drc->unplug_timeout_timer)) {
-        return (qemu_timeout_ns_to_ms(drc->unplug_timeout_timer->expire_time) -
-                qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL)) / 1000;
+    if (drc->unplug_requested) {
+        return timer_deadline_ms(drc->unplug_timeout_timer) / 1000;
     }
 
     return 0;
diff --git a/include/qemu/timer.h b/include/qemu/timer.h
index 1678238384..5e76e3f8c2 100644
--- a/include/qemu/timer.h
+++ b/include/qemu/timer.h
@@ -795,6 +795,14 @@ static inline int64_t get_max_clock_jump(void)
     return 60 * NANOSECONDS_PER_SECOND;
 }
 
+/**
+ * timer_deadline_ms:
+ *
+ * Returns the remaining miliseconds for @timer to expire, or zero
+ * if the timer is no longer pending.
+ */
+int64_t timer_deadline_ms(QEMUTimer *timer);
+
 /*
  * Low level clock functions
  */
diff --git a/util/qemu-timer.c b/util/qemu-timer.c
index 81c28af517..02424bc1b6 100644
--- a/util/qemu-timer.c
+++ b/util/qemu-timer.c
@@ -243,6 +243,19 @@ int64_t timerlist_deadline_ns(QEMUTimerList *timer_list)
     return delta;
 }
 
+/*
+ * Returns the time remaining for the deadline, in ms.
+ */
+int64_t timer_deadline_ms(QEMUTimer *timer)
+{
+    if (timer_pending(timer)) {
+        return qemu_timeout_ns_to_ms(timer->expire_time) -
+               qemu_clock_get_ms(timer->timer_list->clock->type);
+    }
+
+    return 0;
+}
+
 /* Calculate the soonest deadline across all timerlists attached
  * to the clock. This is used for the icount timeout so we
  * ignore whether or not the clock should be used in deadline
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 18/20] target/ppc: fix icount support on Book-e vms accessing SPRs
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (16 preceding siblings ...)
  2021-03-10  4:09 ` [PULL 17/20] qemu_timer.c: add timer_deadline_ms() helper David Gibson
@ 2021-03-10  4:10 ` David Gibson
  2021-03-10  4:10 ` [PULL 19/20] spapr.c: remove duplicated assert in spapr_memory_unplug_request() David Gibson
                   ` (4 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:10 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: Paolo Bonzini, Vitaly Cheptsov, qemu-ppc, qemu-devel, David Gibson

From: Vitaly Cheptsov <cheptsov@ispras.ru>

Failing to guard SPR access with gen_io_start/gen_stop_exception
causes "Bad icount read" exceptions when running VMs with
e500mc and e500v2 CPUs with an icount parameter.

Cc: David Gibson <david@gibson.dropbear.id.au>
Cc: Greg Kurz <groug@kaod.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Vitaly Cheptsov <cheptsov@ispras.ru>
Message-Id: <20210303140851.78383-1-cheptsov@ispras.ru>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 target/ppc/translate_init.c.inc | 36 +++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/target/ppc/translate_init.c.inc b/target/ppc/translate_init.c.inc
index e7324e85cd..09c9ae2c98 100644
--- a/target/ppc/translate_init.c.inc
+++ b/target/ppc/translate_init.c.inc
@@ -567,35 +567,71 @@ static void spr_write_601_ubatl(DisasContext *ctx, int sprn, int gprn)
 #if !defined(CONFIG_USER_ONLY)
 static void spr_read_40x_pit(DisasContext *ctx, int gprn, int sprn)
 {
+    if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) {
+        gen_io_start();
+    }
     gen_helper_load_40x_pit(cpu_gpr[gprn], cpu_env);
+    if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) {
+        gen_stop_exception(ctx);
+    }
 }
 
 static void spr_write_40x_pit(DisasContext *ctx, int sprn, int gprn)
 {
+    if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) {
+        gen_io_start();
+    }
     gen_helper_store_40x_pit(cpu_env, cpu_gpr[gprn]);
+    if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) {
+        gen_stop_exception(ctx);
+    }
 }
 
 static void spr_write_40x_dbcr0(DisasContext *ctx, int sprn, int gprn)
 {
+    if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) {
+        gen_io_start();
+    }
     gen_store_spr(sprn, cpu_gpr[gprn]);
     gen_helper_store_40x_dbcr0(cpu_env, cpu_gpr[gprn]);
     /* We must stop translation as we may have rebooted */
     gen_stop_exception(ctx);
+    if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) {
+        gen_stop_exception(ctx);
+    }
 }
 
 static void spr_write_40x_sler(DisasContext *ctx, int sprn, int gprn)
 {
+    if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) {
+        gen_io_start();
+    }
     gen_helper_store_40x_sler(cpu_env, cpu_gpr[gprn]);
+    if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) {
+        gen_stop_exception(ctx);
+    }
 }
 
 static void spr_write_booke_tcr(DisasContext *ctx, int sprn, int gprn)
 {
+    if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) {
+        gen_io_start();
+    }
     gen_helper_store_booke_tcr(cpu_env, cpu_gpr[gprn]);
+    if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) {
+        gen_stop_exception(ctx);
+    }
 }
 
 static void spr_write_booke_tsr(DisasContext *ctx, int sprn, int gprn)
 {
+    if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) {
+        gen_io_start();
+    }
     gen_helper_store_booke_tsr(cpu_env, cpu_gpr[gprn]);
+    if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) {
+        gen_stop_exception(ctx);
+    }
 }
 #endif
 
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 19/20] spapr.c: remove duplicated assert in spapr_memory_unplug_request()
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (17 preceding siblings ...)
  2021-03-10  4:10 ` [PULL 18/20] target/ppc: fix icount support on Book-e vms accessing SPRs David Gibson
@ 2021-03-10  4:10 ` David Gibson
  2021-03-10  4:10 ` [PULL 20/20] spapr.c: send QAPI event when memory hotunplug fails David Gibson
                   ` (3 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:10 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: Daniel Henrique Barboza, qemu-ppc, qemu-devel, David Gibson

From: Daniel Henrique Barboza <danielhb413@gmail.com>

We are asserting the existence of the first DRC LMB after sending unplug
requests to all LMBs of the DIMM, where every DRC is being asserted
inside the loop. This means that the first DRC is being asserted twice.

Remove the duplicated assert.

Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20210302141019.153729-2-danielhb413@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index aca3ef9d58..b579830832 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3703,7 +3703,6 @@ static void spapr_memory_unplug_request(HotplugHandler *hotplug_dev,
 
     drc = spapr_drc_by_id(TYPE_SPAPR_DRC_LMB,
                           addr_start / SPAPR_MEMORY_BLOCK_SIZE);
-    g_assert(drc);
     spapr_hotplug_req_remove_by_count_indexed(SPAPR_DR_CONNECTOR_TYPE_LMB,
                                               nr_lmbs, spapr_drc_index(drc));
 }
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PULL 20/20] spapr.c: send QAPI event when memory hotunplug fails
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (18 preceding siblings ...)
  2021-03-10  4:10 ` [PULL 19/20] spapr.c: remove duplicated assert in spapr_memory_unplug_request() David Gibson
@ 2021-03-10  4:10 ` David Gibson
  2021-03-10  4:43 ` [PULL 00/20] ppc-for-6.0 queue 20210310 Bin Meng
                   ` (2 subsequent siblings)
  22 siblings, 0 replies; 32+ messages in thread
From: David Gibson @ 2021-03-10  4:10 UTC (permalink / raw)
  To: peter.maydell, groug
  Cc: Daniel Henrique Barboza, qemu-ppc, qemu-devel, David Gibson

From: Daniel Henrique Barboza <danielhb413@gmail.com>

Recent changes allowed the pSeries machine to rollback the hotunplug
process for the DIMM when the guest kernel signals, via a
reconfiguration of the DR connector, that it's not going to release the
LMBs.

Let's also warn QAPI listerners about it. One place to do it would be
right after the unplug state is cleaned up,
spapr_clear_pending_dimm_unplug_state(). This would mean that the
function is now doing more than cleaning up the pending dimm state
though.

This patch does the following changes in spapr.c:

- send a QAPI event to inform that we experienced a failure in the
  hotunplug of the DIMM;

- rename spapr_clear_pending_dimm_unplug_state() to
  spapr_memory_unplug_rollback(). This is a better fit for what the
  function is now doing, and it makes callers care more about what the
  function goal is and less about spapr.c internals such as clearing
  the pending dimm unplug state.

Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20210302141019.153729-3-danielhb413@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr.c         | 13 +++++++++++--
 hw/ppc/spapr_drc.c     |  5 ++---
 include/hw/ppc/spapr.h |  3 +--
 3 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index b579830832..d56418ca29 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -28,6 +28,7 @@
 #include "qemu-common.h"
 #include "qemu/datadir.h"
 #include "qapi/error.h"
+#include "qapi/qapi-events-machine.h"
 #include "qapi/visitor.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/hostmem.h"
@@ -3575,14 +3576,14 @@ static SpaprDimmState *spapr_recover_pending_dimm_state(SpaprMachineState *ms,
     return spapr_pending_dimm_unplugs_add(ms, avail_lmbs, dimm);
 }
 
-void spapr_clear_pending_dimm_unplug_state(SpaprMachineState *spapr,
-                                           DeviceState *dev)
+void spapr_memory_unplug_rollback(SpaprMachineState *spapr, DeviceState *dev)
 {
     SpaprDimmState *ds;
     PCDIMMDevice *dimm;
     SpaprDrc *drc;
     uint32_t nr_lmbs;
     uint64_t size, addr_start, addr;
+    g_autofree char *qapi_error = NULL;
     int i;
 
     if (!dev) {
@@ -3616,6 +3617,14 @@ void spapr_clear_pending_dimm_unplug_state(SpaprMachineState *spapr,
         drc->unplug_requested = false;
         addr += SPAPR_MEMORY_BLOCK_SIZE;
     }
+
+    /*
+     * Tell QAPI that something happened and the memory
+     * hotunplug wasn't successful.
+     */
+    qapi_error = g_strdup_printf("Memory hotunplug rejected by the guest "
+                                 "for device %s", dev->id);
+    qapi_event_send_mem_unplug_error(dev->id, qapi_error);
 }
 
 /* Callback to be called during DRC release. */
diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
index 98b626acf9..8a71b03800 100644
--- a/hw/ppc/spapr_drc.c
+++ b/hw/ppc/spapr_drc.c
@@ -1231,12 +1231,11 @@ static void rtas_ibm_configure_connector(PowerPCCPU *cpu,
 
     /*
      * This indicates that the kernel is reconfiguring a LMB due to
-     * a failed hotunplug. Clear the pending unplug state for the whole
-     * DIMM.
+     * a failed hotunplug. Rollback the DIMM unplug process.
      */
     if (spapr_drc_type(drc) == SPAPR_DR_CONNECTOR_TYPE_LMB &&
         drc->unplug_requested) {
-        spapr_clear_pending_dimm_unplug_state(spapr, drc->dev);
+        spapr_memory_unplug_rollback(spapr, drc->dev);
     }
 
     if (!drc->fdt) {
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index d6edeaaaff..47cebaf3ac 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -847,8 +847,7 @@ int spapr_hpt_shift_for_ramsize(uint64_t ramsize);
 int spapr_reallocate_hpt(SpaprMachineState *spapr, int shift, Error **errp);
 void spapr_clear_pending_events(SpaprMachineState *spapr);
 void spapr_clear_pending_hotplug_events(SpaprMachineState *spapr);
-void spapr_clear_pending_dimm_unplug_state(SpaprMachineState *spapr,
-                                           DeviceState *dev);
+void spapr_memory_unplug_rollback(SpaprMachineState *spapr, DeviceState *dev);
 int spapr_max_server_number(SpaprMachineState *spapr);
 void spapr_store_hpte(PowerPCCPU *cpu, hwaddr ptex,
                       uint64_t pte0, uint64_t pte1);
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 32+ messages in thread

* Re: [PULL 00/20] ppc-for-6.0 queue 20210310
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (19 preceding siblings ...)
  2021-03-10  4:10 ` [PULL 20/20] spapr.c: send QAPI event when memory hotunplug fails David Gibson
@ 2021-03-10  4:43 ` Bin Meng
  2021-03-10  6:00   ` David Gibson
  2021-03-10 14:09 ` Ivan Warren
  2021-03-12 13:53 ` Peter Maydell
  22 siblings, 1 reply; 32+ messages in thread
From: Bin Meng @ 2021-03-10  4:43 UTC (permalink / raw)
  To: David Gibson
  Cc: Peter Maydell, qemu-ppc, Greg Kurz, qemu-devel@nongnu.org Developers

Hi David,

On Wed, Mar 10, 2021 at 12:10 PM David Gibson
<david@gibson.dropbear.id.au> wrote:
>
> The following changes since commit b2ae1009d7cca2701e17eae55ae2d44fd22c942a:
>
>   Merge remote-tracking branch 'remotes/mcayland/tags/qemu-sparc-20210307' into staging (2021-03-09 13:50:35 +0000)
>
> are available in the Git repository at:
>
>   https://gitlab.com/dgibson/qemu.git tags/ppc-for-6.0-20210310
>
> for you to fetch changes up to eb7f80fd26d73e7e1af105431da58971b1dba517:
>
>   spapr.c: send QAPI event when memory hotunplug fails (2021-03-10 09:07:09 +1100)
>
> ----------------------------------------------------------------
> ppc patch queue for 2021-03-10
>
> Next batch of patches for the ppc target and machine types.  Includes:
>  * Several cleanups for sm501 from Peter Maydell
>  * An update to the SLOF guest firmware
>  * Improved handling of hotplug failures in spapr, associated cleanups
>    to the hotplug handling code
>  * Several etsec fixes and cleanups from Bin Meng
>  * Assorted other fixes and cleanups
>
> ----------------------------------------------------------------
> Alexey Kardashevskiy (1):
>       pseries: Update SLOF firmware image
>
> Bin Meng (2):
>       hw/net: fsl_etsec: Fix build error when HEX_DUMP is on
>       hw/ppc: e500: Add missing <ranges> in the eTSEC node

It seems the following patch was missing?
http://patchwork.ozlabs.org/project/qemu-devel/patch/1613660319-76960-1-git-send-email-bmeng.cn@gmail.com/

>
> Cédric Le Goater (1):
>       docs/system: Extend PPC section
>
> Daniel Henrique Barboza (11):
>       spapr_drc.c: do not call spapr_drc_detach() in drc_isolate_logical()
>       spapr_drc.c: use spapr_drc_release() in isolate_physical/set_unusable
>       spapr: rename spapr_drc_detach() to spapr_drc_unplug_request()
>       spapr_drc.c: introduce unplug_timeout_timer
>       spapr_drc.c: add hotunplug timeout for CPUs
>       spapr_drc.c: use DRC reconfiguration to cleanup DIMM unplug state
>       spapr.c: add 'unplug already in progress' message for PHB unplug
>       spapr_pci.c: add 'unplug already in progress' message for PCI unplug
>       qemu_timer.c: add timer_deadline_ms() helper
>       spapr.c: remove duplicated assert in spapr_memory_unplug_request()
>       spapr.c: send QAPI event when memory hotunplug fails
>
> Fabiano Rosas (1):
>       target/ppc: Fix bcdsub. emulation when result overflows
>
> Peter Maydell (3):
>       hw/display/sm501: Remove dead code for non-32-bit RGB surfaces
>       hw/display/sm501: Expand out macros in template header
>       hw/display/sm501: Inline template header into C file
>
> Vitaly Cheptsov (1):
>       target/ppc: fix icount support on Book-e vms accessing SPRs
>

Regards,
Bin


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PULL 00/20] ppc-for-6.0 queue 20210310
  2021-03-10  4:43 ` [PULL 00/20] ppc-for-6.0 queue 20210310 Bin Meng
@ 2021-03-10  6:00   ` David Gibson
  2021-03-11  1:26     ` Bin Meng
  0 siblings, 1 reply; 32+ messages in thread
From: David Gibson @ 2021-03-10  6:00 UTC (permalink / raw)
  To: Bin Meng
  Cc: Peter Maydell, qemu-ppc, Greg Kurz, qemu-devel@nongnu.org Developers

[-- Attachment #1: Type: text/plain, Size: 2013 bytes --]

On Wed, Mar 10, 2021 at 12:43:53PM +0800, Bin Meng wrote:
> Hi David,
> 
> On Wed, Mar 10, 2021 at 12:10 PM David Gibson
> <david@gibson.dropbear.id.au> wrote:
> >
> > The following changes since commit b2ae1009d7cca2701e17eae55ae2d44fd22c942a:
> >
> >   Merge remote-tracking branch 'remotes/mcayland/tags/qemu-sparc-20210307' into staging (2021-03-09 13:50:35 +0000)
> >
> > are available in the Git repository at:
> >
> >   https://gitlab.com/dgibson/qemu.git tags/ppc-for-6.0-20210310
> >
> > for you to fetch changes up to eb7f80fd26d73e7e1af105431da58971b1dba517:
> >
> >   spapr.c: send QAPI event when memory hotunplug fails (2021-03-10 09:07:09 +1100)
> >
> > ----------------------------------------------------------------
> > ppc patch queue for 2021-03-10
> >
> > Next batch of patches for the ppc target and machine types.  Includes:
> >  * Several cleanups for sm501 from Peter Maydell
> >  * An update to the SLOF guest firmware
> >  * Improved handling of hotplug failures in spapr, associated cleanups
> >    to the hotplug handling code
> >  * Several etsec fixes and cleanups from Bin Meng
> >  * Assorted other fixes and cleanups
> >
> > ----------------------------------------------------------------
> > Alexey Kardashevskiy (1):
> >       pseries: Update SLOF firmware image
> >
> > Bin Meng (2):
> >       hw/net: fsl_etsec: Fix build error when HEX_DUMP is on
> >       hw/ppc: e500: Add missing <ranges> in the eTSEC node
> 
> It seems the following patch was missing?
> http://patchwork.ozlabs.org/project/qemu-devel/patch/1613660319-76960-1-git-send-email-bmeng.cn@gmail.com/

Huh, sorry.  I don't know how that dropped out of my tree.

I don't really want to delay this batch, so can you resend please, and
I'll include it in the next batch.

-- 
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

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PULL 00/20] ppc-for-6.0 queue 20210310
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (20 preceding siblings ...)
  2021-03-10  4:43 ` [PULL 00/20] ppc-for-6.0 queue 20210310 Bin Meng
@ 2021-03-10 14:09 ` Ivan Warren
  2021-03-11  1:47   ` David Gibson
  2021-03-12 13:53 ` Peter Maydell
  22 siblings, 1 reply; 32+ messages in thread
From: Ivan Warren @ 2021-03-10 14:09 UTC (permalink / raw)
  To: David Gibson, peter.maydell, groug; +Cc: qemu-ppc, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 4863 bytes --]

Hey there,

Any chance the MSR[SF] mixed code issue fix gets addressed at some point ?

(Apparently there was a fix but it was breaking some tests for some 
unknown reason)...

--Ivan

On 3/10/2021 5:09 AM, David Gibson wrote:
> The following changes since commit b2ae1009d7cca2701e17eae55ae2d44fd22c942a:
>
>    Merge remote-tracking branch 'remotes/mcayland/tags/qemu-sparc-20210307' into staging (2021-03-09 13:50:35 +0000)
>
> are available in the Git repository at:
>
>    https://gitlab.com/dgibson/qemu.git tags/ppc-for-6.0-20210310
>
> for you to fetch changes up to eb7f80fd26d73e7e1af105431da58971b1dba517:
>
>    spapr.c: send QAPI event when memory hotunplug fails (2021-03-10 09:07:09 +1100)
>
> ----------------------------------------------------------------
> ppc patch queue for 2021-03-10
>
> Next batch of patches for the ppc target and machine types.  Includes:
>   * Several cleanups for sm501 from Peter Maydell
>   * An update to the SLOF guest firmware
>   * Improved handling of hotplug failures in spapr, associated cleanups
>     to the hotplug handling code
>   * Several etsec fixes and cleanups from Bin Meng
>   * Assorted other fixes and cleanups
>
> ----------------------------------------------------------------
> Alexey Kardashevskiy (1):
>        pseries: Update SLOF firmware image
>
> Bin Meng (2):
>        hw/net: fsl_etsec: Fix build error when HEX_DUMP is on
>        hw/ppc: e500: Add missing <ranges> in the eTSEC node
>
> Cédric Le Goater (1):
>        docs/system: Extend PPC section
>
> Daniel Henrique Barboza (11):
>        spapr_drc.c: do not call spapr_drc_detach() in drc_isolate_logical()
>        spapr_drc.c: use spapr_drc_release() in isolate_physical/set_unusable
>        spapr: rename spapr_drc_detach() to spapr_drc_unplug_request()
>        spapr_drc.c: introduce unplug_timeout_timer
>        spapr_drc.c: add hotunplug timeout for CPUs
>        spapr_drc.c: use DRC reconfiguration to cleanup DIMM unplug state
>        spapr.c: add 'unplug already in progress' message for PHB unplug
>        spapr_pci.c: add 'unplug already in progress' message for PCI unplug
>        qemu_timer.c: add timer_deadline_ms() helper
>        spapr.c: remove duplicated assert in spapr_memory_unplug_request()
>        spapr.c: send QAPI event when memory hotunplug fails
>
> Fabiano Rosas (1):
>        target/ppc: Fix bcdsub. emulation when result overflows
>
> Peter Maydell (3):
>        hw/display/sm501: Remove dead code for non-32-bit RGB surfaces
>        hw/display/sm501: Expand out macros in template header
>        hw/display/sm501: Inline template header into C file
>
> Vitaly Cheptsov (1):
>        target/ppc: fix icount support on Book-e vms accessing SPRs
>
>   docs/system/ppc/embedded.rst      |  10 ++
>   docs/system/ppc/powermac.rst      |  34 +++++++
>   docs/system/ppc/powernv.rst       | 193 ++++++++++++++++++++++++++++++++++++++
>   docs/system/ppc/prep.rst          |  18 ++++
>   docs/system/ppc/pseries.rst       |  12 +++
>   docs/system/target-ppc.rst        |  53 +++--------
>   hw/display/sm501.c                | 160 +++++++++++++++----------------
>   hw/display/sm501_template.h       | 131 --------------------------
>   hw/net/fsl_etsec/etsec.c          |   1 +
>   hw/net/fsl_etsec/rings.c          |   1 +
>   hw/ppc/e500.c                     |   1 +
>   hw/ppc/spapr.c                    |  67 ++++++++++++-
>   hw/ppc/spapr_drc.c                | 110 ++++++++++++++++------
>   hw/ppc/spapr_pci.c                |   8 +-
>   hw/ppc/trace-events               |   2 +-
>   include/hw/ppc/spapr.h            |   1 +
>   include/hw/ppc/spapr_drc.h        |   7 +-
>   include/qemu/timer.h              |   8 ++
>   pc-bios/README                    |   2 +-
>   pc-bios/slof.bin                  | Bin 968368 -> 968888 bytes
>   roms/SLOF                         |   2 +-
>   target/ppc/int_helper.c           |  13 ++-
>   target/ppc/translate_init.c.inc   |  36 +++++++
>   tests/tcg/configure.sh            |   6 ++
>   tests/tcg/ppc64/Makefile.target   |  13 +++
>   tests/tcg/ppc64le/Makefile.target |  12 +++
>   tests/tcg/ppc64le/bcdsub.c        | 130 +++++++++++++++++++++++++
>   util/qemu-timer.c                 |  13 +++
>   28 files changed, 751 insertions(+), 293 deletions(-)
>   create mode 100644 docs/system/ppc/embedded.rst
>   create mode 100644 docs/system/ppc/powermac.rst
>   create mode 100644 docs/system/ppc/powernv.rst
>   create mode 100644 docs/system/ppc/prep.rst
>   create mode 100644 docs/system/ppc/pseries.rst
>   delete mode 100644 hw/display/sm501_template.h
>   create mode 100644 tests/tcg/ppc64/Makefile.target
>   create mode 100644 tests/tcg/ppc64le/Makefile.target
>   create mode 100644 tests/tcg/ppc64le/bcdsub.c
>


[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 3997 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PULL 00/20] ppc-for-6.0 queue 20210310
  2021-03-10  6:00   ` David Gibson
@ 2021-03-11  1:26     ` Bin Meng
  0 siblings, 0 replies; 32+ messages in thread
From: Bin Meng @ 2021-03-11  1:26 UTC (permalink / raw)
  To: David Gibson
  Cc: Peter Maydell, qemu-ppc, Greg Kurz, qemu-devel@nongnu.org Developers

On Thu, Mar 11, 2021 at 7:01 AM David Gibson
<david@gibson.dropbear.id.au> wrote:
>
> On Wed, Mar 10, 2021 at 12:43:53PM +0800, Bin Meng wrote:
> > Hi David,
> >
> > On Wed, Mar 10, 2021 at 12:10 PM David Gibson
> > <david@gibson.dropbear.id.au> wrote:
> > >
> > > The following changes since commit b2ae1009d7cca2701e17eae55ae2d44fd22c942a:
> > >
> > >   Merge remote-tracking branch 'remotes/mcayland/tags/qemu-sparc-20210307' into staging (2021-03-09 13:50:35 +0000)
> > >
> > > are available in the Git repository at:
> > >
> > >   https://gitlab.com/dgibson/qemu.git tags/ppc-for-6.0-20210310
> > >
> > > for you to fetch changes up to eb7f80fd26d73e7e1af105431da58971b1dba517:
> > >
> > >   spapr.c: send QAPI event when memory hotunplug fails (2021-03-10 09:07:09 +1100)
> > >
> > > ----------------------------------------------------------------
> > > ppc patch queue for 2021-03-10
> > >
> > > Next batch of patches for the ppc target and machine types.  Includes:
> > >  * Several cleanups for sm501 from Peter Maydell
> > >  * An update to the SLOF guest firmware
> > >  * Improved handling of hotplug failures in spapr, associated cleanups
> > >    to the hotplug handling code
> > >  * Several etsec fixes and cleanups from Bin Meng
> > >  * Assorted other fixes and cleanups
> > >
> > > ----------------------------------------------------------------
> > > Alexey Kardashevskiy (1):
> > >       pseries: Update SLOF firmware image
> > >
> > > Bin Meng (2):
> > >       hw/net: fsl_etsec: Fix build error when HEX_DUMP is on
> > >       hw/ppc: e500: Add missing <ranges> in the eTSEC node
> >
> > It seems the following patch was missing?
> > http://patchwork.ozlabs.org/project/qemu-devel/patch/1613660319-76960-1-git-send-email-bmeng.cn@gmail.com/
>
> Huh, sorry.  I don't know how that dropped out of my tree.
>
> I don't really want to delay this batch, so can you resend please, and
> I'll include it in the next batch.

Sure, will resend.

Regards,
Bin


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PULL 00/20] ppc-for-6.0 queue 20210310
  2021-03-10 14:09 ` Ivan Warren
@ 2021-03-11  1:47   ` David Gibson
  2021-03-11  3:22     ` Ivan Warren
  0 siblings, 1 reply; 32+ messages in thread
From: David Gibson @ 2021-03-11  1:47 UTC (permalink / raw)
  To: Ivan Warren; +Cc: peter.maydell, qemu-ppc, groug, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 5442 bytes --]

On Wed, Mar 10, 2021 at 03:09:46PM +0100, Ivan Warren wrote:
> Hey there,
> 
> Any chance the MSR[SF] mixed code issue fix gets addressed at some point ?
> 
> (Apparently there was a fix but it was breaking some tests for some unknown
> reason)...

Sorry, I've forgotten this issue.  If you had a patch, can you resend
it please.

> 
> --Ivan
> 
> On 3/10/2021 5:09 AM, David Gibson wrote:
> > The following changes since commit b2ae1009d7cca2701e17eae55ae2d44fd22c942a:
> > 
> >    Merge remote-tracking branch 'remotes/mcayland/tags/qemu-sparc-20210307' into staging (2021-03-09 13:50:35 +0000)
> > 
> > are available in the Git repository at:
> > 
> >    https://gitlab.com/dgibson/qemu.git tags/ppc-for-6.0-20210310
> > 
> > for you to fetch changes up to eb7f80fd26d73e7e1af105431da58971b1dba517:
> > 
> >    spapr.c: send QAPI event when memory hotunplug fails (2021-03-10 09:07:09 +1100)
> > 
> > ----------------------------------------------------------------
> > ppc patch queue for 2021-03-10
> > 
> > Next batch of patches for the ppc target and machine types.  Includes:
> >   * Several cleanups for sm501 from Peter Maydell
> >   * An update to the SLOF guest firmware
> >   * Improved handling of hotplug failures in spapr, associated cleanups
> >     to the hotplug handling code
> >   * Several etsec fixes and cleanups from Bin Meng
> >   * Assorted other fixes and cleanups
> > 
> > ----------------------------------------------------------------
> > Alexey Kardashevskiy (1):
> >        pseries: Update SLOF firmware image
> > 
> > Bin Meng (2):
> >        hw/net: fsl_etsec: Fix build error when HEX_DUMP is on
> >        hw/ppc: e500: Add missing <ranges> in the eTSEC node
> > 
> > Cédric Le Goater (1):
> >        docs/system: Extend PPC section
> > 
> > Daniel Henrique Barboza (11):
> >        spapr_drc.c: do not call spapr_drc_detach() in drc_isolate_logical()
> >        spapr_drc.c: use spapr_drc_release() in isolate_physical/set_unusable
> >        spapr: rename spapr_drc_detach() to spapr_drc_unplug_request()
> >        spapr_drc.c: introduce unplug_timeout_timer
> >        spapr_drc.c: add hotunplug timeout for CPUs
> >        spapr_drc.c: use DRC reconfiguration to cleanup DIMM unplug state
> >        spapr.c: add 'unplug already in progress' message for PHB unplug
> >        spapr_pci.c: add 'unplug already in progress' message for PCI unplug
> >        qemu_timer.c: add timer_deadline_ms() helper
> >        spapr.c: remove duplicated assert in spapr_memory_unplug_request()
> >        spapr.c: send QAPI event when memory hotunplug fails
> > 
> > Fabiano Rosas (1):
> >        target/ppc: Fix bcdsub. emulation when result overflows
> > 
> > Peter Maydell (3):
> >        hw/display/sm501: Remove dead code for non-32-bit RGB surfaces
> >        hw/display/sm501: Expand out macros in template header
> >        hw/display/sm501: Inline template header into C file
> > 
> > Vitaly Cheptsov (1):
> >        target/ppc: fix icount support on Book-e vms accessing SPRs
> > 
> >   docs/system/ppc/embedded.rst      |  10 ++
> >   docs/system/ppc/powermac.rst      |  34 +++++++
> >   docs/system/ppc/powernv.rst       | 193 ++++++++++++++++++++++++++++++++++++++
> >   docs/system/ppc/prep.rst          |  18 ++++
> >   docs/system/ppc/pseries.rst       |  12 +++
> >   docs/system/target-ppc.rst        |  53 +++--------
> >   hw/display/sm501.c                | 160 +++++++++++++++----------------
> >   hw/display/sm501_template.h       | 131 --------------------------
> >   hw/net/fsl_etsec/etsec.c          |   1 +
> >   hw/net/fsl_etsec/rings.c          |   1 +
> >   hw/ppc/e500.c                     |   1 +
> >   hw/ppc/spapr.c                    |  67 ++++++++++++-
> >   hw/ppc/spapr_drc.c                | 110 ++++++++++++++++------
> >   hw/ppc/spapr_pci.c                |   8 +-
> >   hw/ppc/trace-events               |   2 +-
> >   include/hw/ppc/spapr.h            |   1 +
> >   include/hw/ppc/spapr_drc.h        |   7 +-
> >   include/qemu/timer.h              |   8 ++
> >   pc-bios/README                    |   2 +-
> >   pc-bios/slof.bin                  | Bin 968368 -> 968888 bytes
> >   roms/SLOF                         |   2 +-
> >   target/ppc/int_helper.c           |  13 ++-
> >   target/ppc/translate_init.c.inc   |  36 +++++++
> >   tests/tcg/configure.sh            |   6 ++
> >   tests/tcg/ppc64/Makefile.target   |  13 +++
> >   tests/tcg/ppc64le/Makefile.target |  12 +++
> >   tests/tcg/ppc64le/bcdsub.c        | 130 +++++++++++++++++++++++++
> >   util/qemu-timer.c                 |  13 +++
> >   28 files changed, 751 insertions(+), 293 deletions(-)
> >   create mode 100644 docs/system/ppc/embedded.rst
> >   create mode 100644 docs/system/ppc/powermac.rst
> >   create mode 100644 docs/system/ppc/powernv.rst
> >   create mode 100644 docs/system/ppc/prep.rst
> >   create mode 100644 docs/system/ppc/pseries.rst
> >   delete mode 100644 hw/display/sm501_template.h
> >   create mode 100644 tests/tcg/ppc64/Makefile.target
> >   create mode 100644 tests/tcg/ppc64le/Makefile.target
> >   create mode 100644 tests/tcg/ppc64le/bcdsub.c
> > 
> 



-- 
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

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PULL 00/20] ppc-for-6.0 queue 20210310
  2021-03-11  1:47   ` David Gibson
@ 2021-03-11  3:22     ` Ivan Warren
  2021-03-11  4:56       ` David Gibson
  0 siblings, 1 reply; 32+ messages in thread
From: Ivan Warren @ 2021-03-11  3:22 UTC (permalink / raw)
  To: David Gibson; +Cc: peter.maydell, groug, qemu-ppc, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 4919 bytes --]


On 3/11/2021 2:47 AM, David Gibson wrote:
>
> Sorry, I've forgotten this issue.  If you had a patch, can you resend
> it please.

Not mine.. (I reported it, but can't remember who sent it)...

diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h

index 2609e4082e..4a05e4e544 100644
--- a/target/ppc/cpu.h
+++ b/target/ppc/cpu.h
@@ -2396,8 +2396,8 @@ static inline void 
cpu_get_tb_cpu_state(CPUPPCState *env, target_ulong *pc,
                                          target_ulong *cs_base, 
uint32_t *flags)
  {
      *pc = env->nip;
-    *cs_base = 0;
-    *flags = env->hflags;
+    *cs_base = env->hflags;
+    *flags = 0;
  }

  void QEMU_NORETURN raise_exception(CPUPPCState *env, uint32_t exception);
diff --git a/target/ppc/translate.c b/target/ppc/translate.c
index 0984ce637b..1eb2e1b0c6 100644
--- a/target/ppc/translate.c
+++ b/target/ppc/translate.c
@@ -7879,47 +7879,37 @@ static void 
ppc_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
  {
      DisasContext *ctx = container_of(dcbase, DisasContext, base);
      CPUPPCState *env = cs->env_ptr;
+    target_ulong hflags = ctx->base.tb->cs_base;
      int bound;

      ctx->exception = POWERPC_EXCP_NONE;
      ctx->spr_cb = env->spr_cb;
-    ctx->pr = msr_pr;
+    ctx->pr = (hflags >> MSR_PR) & 1;
      ctx->mem_idx = env->dmmu_idx;
-    ctx->dr = msr_dr;
-#if !defined(CONFIG_USER_ONLY)
-    ctx->hv = msr_hv || !env->has_hv_mode;
+    ctx->dr = (hflags >> MSR_DR) & 1;
+#if defined(TARGET_PPC64) && !defined(CONFIG_USER_ONLY)
+    ctx->hv = (hflags >> MSR_HV) & 1;
  #endif
      ctx->insns_flags = env->insns_flags;
      ctx->insns_flags2 = env->insns_flags2;
      ctx->access_type = -1;
      ctx->need_access_type = !mmu_is_64bit(env->mmu_model);
-    ctx->le_mode = !!(env->hflags & (1 << MSR_LE));
+    ctx->le_mode = (hflags >> MSR_LE) & 1;
      ctx->default_tcg_memop_mask = ctx->le_mode ? MO_LE : MO_BE;
      ctx->flags = env->flags;
  #if defined(TARGET_PPC64)
-    ctx->sf_mode = msr_is_64bit(env, env->msr);
+    ctx->sf_mode = (hflags >> MSR_SF) & 1;
      ctx->has_cfar = !!(env->flags & POWERPC_FLAG_CFAR);
  #endif
      ctx->lazy_tlb_flush = env->mmu_model == POWERPC_MMU_32B
          || env->mmu_model == POWERPC_MMU_601
          || env->mmu_model & POWERPC_MMU_64;

-    ctx->fpu_enabled = !!msr_fp;
-    if ((env->flags & POWERPC_FLAG_SPE) && msr_spe) {
-        ctx->spe_enabled = !!msr_spe;
-    } else {
-        ctx->spe_enabled = false;
-    }
-    if ((env->flags & POWERPC_FLAG_VRE) && msr_vr) {
-        ctx->altivec_enabled = !!msr_vr;
-    } else {
-        ctx->altivec_enabled = false;
-    }
-    if ((env->flags & POWERPC_FLAG_VSX) && msr_vsx) {
-        ctx->vsx_enabled = !!msr_vsx;
-    } else {
-        ctx->vsx_enabled = false;
-    }
+    ctx->fpu_enabled = (hflags >> MSR_FP) & 1;
+    ctx->spe_enabled = (hflags >> MSR_SPE) & 1;
+    ctx->altivec_enabled = (hflags >> MSR_VR) & 1;
+    ctx->vsx_enabled = (hflags >> MSR_VSX) & 1;
+    /* FIXME: This needs to be stored in env->hflags_nmsr. */
      if ((env->flags & POWERPC_FLAG_SCV)
          && (env->spr[SPR_FSCR] & (1ull << FSCR_SCV))) {
          ctx->scv_enabled = true;
@@ -7927,23 +7917,21 @@ static void 
ppc_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
          ctx->scv_enabled = false;
      }
  #if defined(TARGET_PPC64)
-    if ((env->flags & POWERPC_FLAG_TM) && msr_tm) {
-        ctx->tm_enabled = !!msr_tm;
-    } else {
-        ctx->tm_enabled = false;
-    }
+    ctx->tm_enabled = (hflags >> MSR_TM) & 1;
  #endif
+    /* FIXME: This needs to be stored in env->hflags_nmsr. */
      ctx->gtse = !!(env->spr[SPR_LPCR] & LPCR_GTSE);
-    if ((env->flags & POWERPC_FLAG_SE) && msr_se) {
-        ctx->singlestep_enabled = CPU_SINGLE_STEP;
-    } else {
-        ctx->singlestep_enabled = 0;
-    }
-    if ((env->flags & POWERPC_FLAG_BE) && msr_be) {
-        ctx->singlestep_enabled |= CPU_BRANCH_STEP;
-    }
-    if ((env->flags & POWERPC_FLAG_DE) && msr_de) {
+
+    ctx->singlestep_enabled = ((hflags >> MSR_SE) & 1 ? CPU_SINGLE_STEP 
: 0)
+                            | ((hflags >> MSR_BE) & 1 ? CPU_BRANCH_STEP 
: 0);
+
+    if ((hflags >> MSR_DE) & 1) {
          ctx->singlestep_enabled = 0;
+        /*
+         * FIXME: This needs to be stored in env->hflags_nmsr,
+         * probably overlapping MSR_SE/MSR_BE like we do for
+         * MSR_LE and the ppc 601.
+         */
          target_ulong dbcr0 = env->spr[SPR_BOOKE_DBCR0];
          if (dbcr0 & DBCR0_ICMP) {
              ctx->singlestep_enabled |= CPU_SINGLE_STEP;
@@ -7956,10 +7944,6 @@ static void 
ppc_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
      if (unlikely(ctx->base.singlestep_enabled)) {
          ctx->singlestep_enabled |= GDBSTUB_SINGLE_STEP;
      }



[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 3997 bytes --]

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* Re: [PULL 00/20] ppc-for-6.0 queue 20210310
  2021-03-11  3:22     ` Ivan Warren
@ 2021-03-11  4:56       ` David Gibson
  2021-03-11 13:31         ` Richard Henderson
  0 siblings, 1 reply; 32+ messages in thread
From: David Gibson @ 2021-03-11  4:56 UTC (permalink / raw)
  To: Ivan Warren; +Cc: peter.maydell, richard.henderson, qemu-ppc, groug, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 1166 bytes --]

On Thu, Mar 11, 2021 at 04:22:44AM +0100, Ivan Warren wrote:
> 
> On 3/11/2021 2:47 AM, David Gibson wrote:
> > 
> > Sorry, I've forgotten this issue.  If you had a patch, can you resend
> > it please.
> 
> Not mine.. (I reported it, but can't remember who sent it)...
> 
> diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
> 
> index 2609e4082e..4a05e4e544 100644
> --- a/target/ppc/cpu.h
> +++ b/target/ppc/cpu.h
> @@ -2396,8 +2396,8 @@ static inline void cpu_get_tb_cpu_state(CPUPPCState
> *env, target_ulong *pc,
>                                          target_ulong *cs_base, uint32_t
> *flags)
>  {
>      *pc = env->nip;
> -    *cs_base = 0;
> -    *flags = env->hflags;
> +    *cs_base = env->hflags;
> +    *flags = 0;
>  }

Ah, that one.  It caused a regression, so I dropped it. I pinged
Richard Henderson about it, but I don't think I even had a reply.

I'm afraid I don't have the knowledge or the time to debug this
myself.

-- 
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

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PULL 00/20] ppc-for-6.0 queue 20210310
  2021-03-11  4:56       ` David Gibson
@ 2021-03-11 13:31         ` Richard Henderson
  2021-03-11 15:54           ` Greg Kurz
  0 siblings, 1 reply; 32+ messages in thread
From: Richard Henderson @ 2021-03-11 13:31 UTC (permalink / raw)
  To: David Gibson, Ivan Warren; +Cc: peter.maydell, qemu-ppc, groug, qemu-devel

On 3/10/21 10:56 PM, David Gibson wrote:
>>       *pc = env->nip;
>> -    *cs_base = 0;
>> -    *flags = env->hflags;
>> +    *cs_base = env->hflags;
>> +    *flags = 0;
>>   }
> 
> Ah, that one.  It caused a regression, so I dropped it. I pinged
> Richard Henderson about it, but I don't think I even had a reply.
> 
> I'm afraid I don't have the knowledge or the time to debug this
> myself.

I missed the regression email, sorry.  Do you recall what it was?

r~


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PULL 00/20] ppc-for-6.0 queue 20210310
  2021-03-11 13:31         ` Richard Henderson
@ 2021-03-11 15:54           ` Greg Kurz
  2021-03-11 18:02             ` Greg Kurz
  0 siblings, 1 reply; 32+ messages in thread
From: Greg Kurz @ 2021-03-11 15:54 UTC (permalink / raw)
  To: Richard Henderson
  Cc: Ivan Warren, peter.maydell, qemu-ppc, qemu-devel, David Gibson

On Thu, 11 Mar 2021 07:31:40 -0600
Richard Henderson <richard.henderson@linaro.org> wrote:

> On 3/10/21 10:56 PM, David Gibson wrote:
> >>       *pc = env->nip;
> >> -    *cs_base = 0;
> >> -    *flags = env->hflags;
> >> +    *cs_base = env->hflags;
> >> +    *flags = 0;
> >>   }
> > 
> > Ah, that one.  It caused a regression, so I dropped it. I pinged
> > Richard Henderson about it, but I don't think I even had a reply.
> > 
> > I'm afraid I don't have the knowledge or the time to debug this
> > myself.
> 
> I missed the regression email, sorry.  Do you recall what it was?
> 
> r~

This was:

Message-ID: <20210210043453.GI4450@yekko.fritz.box>

On Wed, 10 Feb 2021 15:34:53 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:

> Well, I don't know why, but somehow this patch is breaking one of the
> acceptance tests:
> 
>  (043/134) tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_ppc64_e500: INTERRUPTED: Test interrupted by SIGTERM\nRunner error occurred: Timeout reached\nOriginal status: ERROR\n{'name': '043-tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_ppc64_e500', 'logdir': '/home/dwg/src/qemu/build/normal/tests/results/job-2021-02-10T15.04... (90.26 s)
> 
> From that timeout, I'm guessing something about this is causing the
> boot to wedge.
> 
> So, I've removed this from my tree for now, I'll need a fixed version
> to proceed with.

Cheers,

--
Greg


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PULL 00/20] ppc-for-6.0 queue 20210310
  2021-03-11 15:54           ` Greg Kurz
@ 2021-03-11 18:02             ` Greg Kurz
  0 siblings, 0 replies; 32+ messages in thread
From: Greg Kurz @ 2021-03-11 18:02 UTC (permalink / raw)
  To: Richard Henderson
  Cc: Ivan Warren, peter.maydell, qemu-ppc, qemu-devel, David Gibson

On Thu, 11 Mar 2021 16:54:23 +0100
Greg Kurz <groug@kaod.org> wrote:

> On Thu, 11 Mar 2021 07:31:40 -0600
> Richard Henderson <richard.henderson@linaro.org> wrote:
> 
> > On 3/10/21 10:56 PM, David Gibson wrote:
> > >>       *pc = env->nip;
> > >> -    *cs_base = 0;
> > >> -    *flags = env->hflags;
> > >> +    *cs_base = env->hflags;
> > >> +    *flags = 0;
> > >>   }
> > > 
> > > Ah, that one.  It caused a regression, so I dropped it. I pinged
> > > Richard Henderson about it, but I don't think I even had a reply.
> > > 
> > > I'm afraid I don't have the knowledge or the time to debug this
> > > myself.
> > 
> > I missed the regression email, sorry.  Do you recall what it was?
> > 
> > r~
> 
> This was:
> 
> Message-ID: <20210210043453.GI4450@yekko.fritz.box>
> 
> On Wed, 10 Feb 2021 15:34:53 +1100
> David Gibson <david@gibson.dropbear.id.au> wrote:
> 
> > Well, I don't know why, but somehow this patch is breaking one of the
> > acceptance tests:
> > 
> >  (043/134) tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_ppc64_e500: INTERRUPTED: Test interrupted by SIGTERM\nRunner error occurred: Timeout reached\nOriginal status: ERROR\n{'name': '043-tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_ppc64_e500', 'logdir': '/home/dwg/src/qemu/build/normal/tests/results/job-2021-02-10T15.04... (90.26 s)
> > 
> > From that timeout, I'm guessing something about this is causing the
> > boot to wedge.
> > 
> > So, I've removed this from my tree for now, I'll need a fixed version
> > to proceed with.
> 

If this can help, I have run two gitlab CI pipelines against current
master (371983c1f).

The one without the patch passes:

https://gitlab.com/gkurz/qemu/-/pipelines/269023228

The one with the patch breaks:

https://gitlab.com/gkurz/qemu/-/pipelines/269077760

> Cheers,
> 
> --
> Greg
> 



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PULL 00/20] ppc-for-6.0 queue 20210310
  2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
                   ` (21 preceding siblings ...)
  2021-03-10 14:09 ` Ivan Warren
@ 2021-03-12 13:53 ` Peter Maydell
  22 siblings, 0 replies; 32+ messages in thread
From: Peter Maydell @ 2021-03-12 13:53 UTC (permalink / raw)
  To: David Gibson; +Cc: qemu-ppc, Greg Kurz, QEMU Developers

On Wed, 10 Mar 2021 at 04:10, David Gibson <david@gibson.dropbear.id.au> wrote:
>
> The following changes since commit b2ae1009d7cca2701e17eae55ae2d44fd22c942a:
>
>   Merge remote-tracking branch 'remotes/mcayland/tags/qemu-sparc-20210307' into staging (2021-03-09 13:50:35 +0000)
>
> are available in the Git repository at:
>
>   https://gitlab.com/dgibson/qemu.git tags/ppc-for-6.0-20210310
>
> for you to fetch changes up to eb7f80fd26d73e7e1af105431da58971b1dba517:
>
>   spapr.c: send QAPI event when memory hotunplug fails (2021-03-10 09:07:09 +1100)
>
> ----------------------------------------------------------------
> ppc patch queue for 2021-03-10
>
> Next batch of patches for the ppc target and machine types.  Includes:
>  * Several cleanups for sm501 from Peter Maydell
>  * An update to the SLOF guest firmware
>  * Improved handling of hotplug failures in spapr, associated cleanups
>    to the hotplug handling code
>  * Several etsec fixes and cleanups from Bin Meng
>  * Assorted other fixes and cleanups
>
> ----------------------------------------------------------------


Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/6.0
for any user-visible changes.

-- PMM


^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2021-03-12 14:16 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-10  4:09 [PULL 00/20] ppc-for-6.0 queue 20210310 David Gibson
2021-03-10  4:09 ` [PULL 01/20] hw/display/sm501: Remove dead code for non-32-bit RGB surfaces David Gibson
2021-03-10  4:09 ` [PULL 02/20] hw/display/sm501: Expand out macros in template header David Gibson
2021-03-10  4:09 ` [PULL 03/20] hw/display/sm501: Inline template header into C file David Gibson
2021-03-10  4:09 ` [PULL 04/20] spapr_drc.c: do not call spapr_drc_detach() in drc_isolate_logical() David Gibson
2021-03-10  4:09 ` [PULL 05/20] pseries: Update SLOF firmware image David Gibson
2021-03-10  4:09 ` [PULL 06/20] spapr_drc.c: use spapr_drc_release() in isolate_physical/set_unusable David Gibson
2021-03-10  4:09 ` [PULL 07/20] spapr: rename spapr_drc_detach() to spapr_drc_unplug_request() David Gibson
2021-03-10  4:09 ` [PULL 08/20] docs/system: Extend PPC section David Gibson
2021-03-10  4:09 ` [PULL 09/20] target/ppc: Fix bcdsub. emulation when result overflows David Gibson
2021-03-10  4:09 ` [PULL 10/20] spapr_drc.c: introduce unplug_timeout_timer David Gibson
2021-03-10  4:09 ` [PULL 11/20] spapr_drc.c: add hotunplug timeout for CPUs David Gibson
2021-03-10  4:09 ` [PULL 12/20] spapr_drc.c: use DRC reconfiguration to cleanup DIMM unplug state David Gibson
2021-03-10  4:09 ` [PULL 13/20] hw/net: fsl_etsec: Fix build error when HEX_DUMP is on David Gibson
2021-03-10  4:09 ` [PULL 14/20] hw/ppc: e500: Add missing <ranges> in the eTSEC node David Gibson
2021-03-10  4:09 ` [PULL 15/20] spapr.c: add 'unplug already in progress' message for PHB unplug David Gibson
2021-03-10  4:09 ` [PULL 16/20] spapr_pci.c: add 'unplug already in progress' message for PCI unplug David Gibson
2021-03-10  4:09 ` [PULL 17/20] qemu_timer.c: add timer_deadline_ms() helper David Gibson
2021-03-10  4:10 ` [PULL 18/20] target/ppc: fix icount support on Book-e vms accessing SPRs David Gibson
2021-03-10  4:10 ` [PULL 19/20] spapr.c: remove duplicated assert in spapr_memory_unplug_request() David Gibson
2021-03-10  4:10 ` [PULL 20/20] spapr.c: send QAPI event when memory hotunplug fails David Gibson
2021-03-10  4:43 ` [PULL 00/20] ppc-for-6.0 queue 20210310 Bin Meng
2021-03-10  6:00   ` David Gibson
2021-03-11  1:26     ` Bin Meng
2021-03-10 14:09 ` Ivan Warren
2021-03-11  1:47   ` David Gibson
2021-03-11  3:22     ` Ivan Warren
2021-03-11  4:56       ` David Gibson
2021-03-11 13:31         ` Richard Henderson
2021-03-11 15:54           ` Greg Kurz
2021-03-11 18:02             ` Greg Kurz
2021-03-12 13:53 ` Peter Maydell

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).