qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829
@ 2019-08-29  6:08 David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 01/19] ppc/pnv: Set default ram size to 1.75GB David Gibson
                   ` (18 more replies)
  0 siblings, 19 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell; +Cc: lvivier, aik, groug, qemu-devel, qemu-ppc, David Gibson

The following changes since commit 23919ddfd56135cad3cb468a8f54d5a595f024f4:

  Merge remote-tracking branch 'remotes/aperard/tags/pull-xen-20190827' into staging (2019-08-27 15:52:36 +0100)

are available in the Git repository at:

  git://github.com/dgibson/qemu.git tags/ppc-for-4.2-20190829

for you to fetch changes up to b1e815674343a171e51ce447495957e289091e9f:

  spapr: Set compat mode in spapr_core_plug() (2019-08-29 09:46:07 +1000)

----------------------------------------------------------------
ppc patch queue 2018-08-29

Another pull request for ppc-for-4.2.  Includes

  * Several powernv patches which were pulled last minute from the
    last PULL, now that some problems with them have been sorted out
  * A fix for -no-reboot which has been broken since the
    pseries-rhel4.1.0 machine type
  * Add some host threads information which AIX guests will need to
    properly scale the PURR and SPURR
  * Change behaviour to match x86 when unplugging function 0 of a
    multifunction PCI device
  * A number of TCG fixes in FPU emulation

And a handful of other assorted fixes and cleanups.

----------------------------------------------------------------
Alexey Kardashevskiy (2):
      pseries: Update SLOF firmware image
      spapr_pci: Advertise BAR reallocation capability

Cédric Le Goater (4):
      ppc/pnv: add more dummy XSCOM addresses for the P9 CAPP
      ppc/pnv: Generate phandle for the "interrupt-parent" property
      ppc/pnv: Introduce PowerNV machines with fixed CPU models
      tests/boot-serial-test: add support for all the PowerNV machines

Daniel Henrique Barboza (1):
      spapr_pci: remove all child functions in function zero unplug

David Gibson (1):
      spapr: Use SHUTDOWN_CAUSE_SUBSYSTEM_RESET for CAS reboots

Greg Kurz (2):
      spapr/pci: Convert types to QEMU coding style
      spapr: Set compat mode in spapr_core_plug()

Joel Stanley (2):
      ppc/pnv: Set default ram size to 1.75GB
      ppc/pnv: update skiboot to v6.4

Laurent Vivier (1):
      pseries: Fix compat_pvr on reset

Paul A. Clarke (2):
      ppc: Fix xsmaddmdp and friends
      ppc: Fix xscvdpspn for SNAN

Richard Henderson (2):
      target/ppc: Set float_tininess_before_rounding at cpu reset
      target/ppc: Fix do_float_check_status vs inexact

Stefan Brankovic (1):
      target/ppc: Refactor emulation of vmrgew and vmrgow instructions

Suraj Jitindar Singh (1):
      powerpc/spapr: Add host threads parameter to ibm,get_system_parameter

 hw/ppc/pnv.c                        |  81 ++++++++++++++++++++++++++++++++----
 hw/ppc/pnv_xscom.c                  |  20 +++++++++
 hw/ppc/spapr.c                      |  29 +++++++++++--
 hw/ppc/spapr_cpu_core.c             |   5 ---
 hw/ppc/spapr_hcall.c                |   2 +-
 hw/ppc/spapr_pci.c                  |  40 +++++++++---------
 hw/ppc/spapr_pci_nvlink2.c          |  40 +++++++++---------
 hw/ppc/spapr_rtas.c                 |  15 +++++++
 include/hw/pci-host/spapr.h         |  24 ++++++-----
 include/hw/ppc/spapr.h              |   1 +
 pc-bios/README                      |   2 +-
 pc-bios/skiboot.lid                 | Bin 1591384 -> 1667280 bytes
 pc-bios/slof.bin                    | Bin 926784 -> 930656 bytes
 roms/SLOF                           |   2 +-
 roms/skiboot                        |   2 +-
 target/ppc/cpu-qom.h                |   1 +
 target/ppc/fpu_helper.c             |  42 +++++++++++++++----
 target/ppc/translate/vmx-impl.inc.c |  66 ++++++++++++++++-------------
 target/ppc/translate/vsx-impl.inc.c |   2 +-
 target/ppc/translate_init.inc.c     |   6 +++
 tests/boot-serial-test.c            |   3 +-
 tests/pnv-xscom-test.c              |  16 ++++++-
 22 files changed, 289 insertions(+), 110 deletions(-)


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

* [Qemu-devel] [PULL 01/19] ppc/pnv: Set default ram size to 1.75GB
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 03/19] ppc/pnv: add more dummy XSCOM addresses for the P9 CAPP David Gibson
                   ` (17 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell
  Cc: lvivier, aik, groug, qemu-devel, qemu-ppc, Joel Stanley, David Gibson

From: Joel Stanley <joel@jms.id.au>

This makes the powernv machine easier for end users as the default
initrd address (1.5GB) is now within RAM.

This uses less than 2GB of RAM to ensure 32 bit Qemu still works.

Signed-off-by: Joel Stanley <joel@jms.id.au>
Message-Id: <20190821030945.473-1-joel@jms.id.au>
[dwg: Fix comment style for checkpatch]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/pnv.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index d95086fbbd..6ead82aaa7 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -1361,7 +1361,11 @@ static void pnv_machine_class_init(ObjectClass *oc, void *data)
                                       * storage */
     mc->no_parallel = 1;
     mc->default_boot_order = NULL;
-    mc->default_ram_size = 1 * GiB;
+    /*
+     * RAM defaults to less than 2048 for 32-bit hosts, and large
+     * enough to fit the maximum initrd size at it's load address
+     */
+    mc->default_ram_size = INITRD_LOAD_ADDR + INITRD_MAX_SIZE;
     xic->icp_get = pnv_icp_get;
     xic->ics_get = pnv_ics_get;
     xic->ics_resend = pnv_ics_resend;
-- 
2.21.0



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

* [Qemu-devel] [PULL 03/19] ppc/pnv: add more dummy XSCOM addresses for the P9 CAPP
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 01/19] ppc/pnv: Set default ram size to 1.75GB David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 04/19] ppc/pnv: Generate phandle for the "interrupt-parent" property David Gibson
                   ` (16 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell
  Cc: lvivier, aik, groug, qemu-devel, qemu-ppc, Cédric Le Goater,
	David Gibson

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

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20190718115420.19919-3-clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/pnv_xscom.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c
index 0e31c5786b..67aab98fef 100644
--- a/hw/ppc/pnv_xscom.c
+++ b/hw/ppc/pnv_xscom.c
@@ -106,6 +106,16 @@ static uint64_t xscom_read_default(PnvChip *chip, uint32_t pcba)
     case 0x201302a:     /* CAPP stuff */
     case 0x2013801:     /* CAPP stuff */
     case 0x2013802:     /* CAPP stuff */
+
+        /* P9 CAPP regs */
+    case 0x2010841:
+    case 0x2010842:
+    case 0x201082a:
+    case 0x2010828:
+    case 0x4010841:
+    case 0x4010842:
+    case 0x401082a:
+    case 0x4010828:
         return 0;
     default:
         return -1;
@@ -138,6 +148,16 @@ static bool xscom_write_default(PnvChip *chip, uint32_t pcba, uint64_t val)
     case 0x2013801:     /* CAPP stuff */
     case 0x2013802:     /* CAPP stuff */
 
+        /* P9 CAPP regs */
+    case 0x2010841:
+    case 0x2010842:
+    case 0x201082a:
+    case 0x2010828:
+    case 0x4010841:
+    case 0x4010842:
+    case 0x401082a:
+    case 0x4010828:
+
         /* P8 PRD registers */
     case PRD_P8_IPOLL_REG_MASK:
     case PRD_P8_IPOLL_REG_STATUS:
-- 
2.21.0



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

* [Qemu-devel] [PULL 04/19] ppc/pnv: Generate phandle for the "interrupt-parent" property
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 01/19] ppc/pnv: Set default ram size to 1.75GB David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 03/19] ppc/pnv: add more dummy XSCOM addresses for the P9 CAPP David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 05/19] ppc/pnv: Introduce PowerNV machines with fixed CPU models David Gibson
                   ` (15 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell
  Cc: lvivier, aik, groug, qemu-devel, qemu-ppc, Cédric Le Goater,
	David Gibson

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

Devices such as the BT or serial devices require a valid
"interrupt-parent" phandle in the device tree and it is currently
empty (0x0). It was not a problem until now but since OpenFirmare
started using a recent libdft (>= 1.4.7), petitboot fails to boot the
system image with error :

   dtc_resize: fdt_open_into returned FDT_ERR_BADMAGIC

Provide a phandle for the LPC bus.

Suggested-by: Greg Kurz <groug@kaod.org>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20190723090138.30623-1-clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/pnv.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index 6ead82aaa7..2077452d6f 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -434,9 +434,14 @@ static void pnv_dt_isa(PnvMachineState *pnv, void *fdt)
         .fdt = fdt,
         .offset = isa_offset,
     };
+    uint32_t phandle;
 
     _FDT((fdt_setprop(fdt, isa_offset, "primary", NULL, 0)));
 
+    phandle = qemu_fdt_alloc_phandle(fdt);
+    assert(phandle > 0);
+    _FDT((fdt_setprop_cell(fdt, isa_offset, "phandle", phandle)));
+
     /* ISA devices are not necessarily parented to the ISA bus so we
      * can not use object_child_foreach() */
     qbus_walk_children(BUS(pnv->isa_bus), pnv_dt_isa_device, NULL, NULL, NULL,
-- 
2.21.0



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

* [Qemu-devel] [PULL 05/19] ppc/pnv: Introduce PowerNV machines with fixed CPU models
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (2 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 04/19] ppc/pnv: Generate phandle for the "interrupt-parent" property David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 06/19] tests/boot-serial-test: add support for all the PowerNV machines David Gibson
                   ` (14 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell
  Cc: lvivier, aik, groug, qemu-devel, qemu-ppc, Cédric Le Goater,
	David Gibson

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

Make the current "powernv" machine an abstract type and derive from it
new machines with specific CPU models: power8 and power9.

The "powernv" machine is now an alias on the "powernv9" machine.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20190731141233.1340-2-clg@kaod.org>
[dwg: Adjust pnv-xscom-test to cope with this change]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/pnv.c           | 70 +++++++++++++++++++++++++++++++++++++-----
 tests/pnv-xscom-test.c | 16 ++++++++--
 2 files changed, 77 insertions(+), 9 deletions(-)

diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index 2077452d6f..3f08db7b9e 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -605,9 +605,20 @@ static void pnv_chip_power9_pic_print_info(PnvChip *chip, Monitor *mon)
     pnv_psi_pic_print_info(&chip9->psi, mon);
 }
 
+static bool pnv_match_cpu(const char *default_type, const char *cpu_type)
+{
+    PowerPCCPUClass *ppc_default =
+        POWERPC_CPU_CLASS(object_class_by_name(default_type));
+    PowerPCCPUClass *ppc =
+        POWERPC_CPU_CLASS(object_class_by_name(cpu_type));
+
+    return ppc_default->pvr_match(ppc_default, ppc->pvr);
+}
+
 static void pnv_init(MachineState *machine)
 {
     PnvMachineState *pnv = PNV_MACHINE(machine);
+    MachineClass *mc = MACHINE_GET_CLASS(machine);
     MemoryRegion *ram;
     char *fw_filename;
     long fw_size;
@@ -667,13 +678,23 @@ static void pnv_init(MachineState *machine)
         }
     }
 
+    /*
+     * Check compatibility of the specified CPU with the machine
+     * default.
+     */
+    if (!pnv_match_cpu(mc->default_cpu_type, machine->cpu_type)) {
+        error_report("invalid CPU model '%s' for %s machine",
+                     machine->cpu_type, mc->name);
+        exit(1);
+    }
+
     /* Create the processor chips */
     i = strlen(machine->cpu_type) - strlen(POWERPC_CPU_TYPE_SUFFIX);
     chip_typename = g_strdup_printf(PNV_CHIP_TYPE_NAME("%.*s"),
                                     i, machine->cpu_type);
     if (!object_class_by_name(chip_typename)) {
-        error_report("invalid CPU model '%.*s' for %s machine",
-                     i, machine->cpu_type, MACHINE_GET_CLASS(machine)->name);
+        error_report("invalid chip model '%.*s' for %s machine",
+                     i, machine->cpu_type, mc->name);
         exit(1);
     }
 
@@ -1351,17 +1372,38 @@ static void pnv_machine_class_props_init(ObjectClass *oc)
                               NULL);
 }
 
-static void pnv_machine_class_init(ObjectClass *oc, void *data)
+static void pnv_machine_power8_class_init(ObjectClass *oc, void *data)
 {
     MachineClass *mc = MACHINE_CLASS(oc);
     XICSFabricClass *xic = XICS_FABRIC_CLASS(oc);
+
+    mc->desc = "IBM PowerNV (Non-Virtualized) POWER8";
+    mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power8_v2.0");
+
+    xic->icp_get = pnv_icp_get;
+    xic->ics_get = pnv_ics_get;
+    xic->ics_resend = pnv_ics_resend;
+}
+
+static void pnv_machine_power9_class_init(ObjectClass *oc, void *data)
+{
+    MachineClass *mc = MACHINE_CLASS(oc);
+
+    mc->desc = "IBM PowerNV (Non-Virtualized) POWER9";
+    mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power9_v2.0");
+
+    mc->alias = "powernv";
+}
+
+static void pnv_machine_class_init(ObjectClass *oc, void *data)
+{
+    MachineClass *mc = MACHINE_CLASS(oc);
     InterruptStatsProviderClass *ispc = INTERRUPT_STATS_PROVIDER_CLASS(oc);
 
     mc->desc = "IBM PowerNV (Non-Virtualized)";
     mc->init = pnv_init;
     mc->reset = pnv_reset;
     mc->max_cpus = MAX_CPUS;
-    mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power8_v2.0");
     mc->block_default_type = IF_IDE; /* Pnv provides a AHCI device for
                                       * storage */
     mc->no_parallel = 1;
@@ -1371,9 +1413,6 @@ static void pnv_machine_class_init(ObjectClass *oc, void *data)
      * enough to fit the maximum initrd size at it's load address
      */
     mc->default_ram_size = INITRD_LOAD_ADDR + INITRD_MAX_SIZE;
-    xic->icp_get = pnv_icp_get;
-    xic->ics_get = pnv_ics_get;
-    xic->ics_resend = pnv_ics_resend;
     ispc->print_info = pnv_pic_print_info;
 
     pnv_machine_class_props_init(oc);
@@ -1393,10 +1432,27 @@ static void pnv_machine_class_init(ObjectClass *oc, void *data)
         .parent        = TYPE_PNV9_CHIP,          \
     }
 
+#define DEFINE_PNV_MACHINE_TYPE(cpu, class_initfn)      \
+    {                                                   \
+        .name          = MACHINE_TYPE_NAME(cpu),        \
+        .parent        = TYPE_PNV_MACHINE,              \
+        .instance_size = sizeof(PnvMachineState),       \
+        .instance_init = pnv_machine_instance_init,     \
+        .class_init    = class_initfn,                  \
+        .interfaces = (InterfaceInfo[]) {               \
+            { TYPE_XICS_FABRIC },                       \
+            { TYPE_INTERRUPT_STATS_PROVIDER },          \
+            { },                                        \
+        },                                              \
+    }
+
 static const TypeInfo types[] = {
+    DEFINE_PNV_MACHINE_TYPE("powernv8", pnv_machine_power8_class_init),
+    DEFINE_PNV_MACHINE_TYPE("powernv9", pnv_machine_power9_class_init),
     {
         .name          = TYPE_PNV_MACHINE,
         .parent        = TYPE_MACHINE,
+        .abstract       = true,
         .instance_size = sizeof(PnvMachineState),
         .instance_init = pnv_machine_instance_init,
         .class_init    = pnv_machine_class_init,
diff --git a/tests/pnv-xscom-test.c b/tests/pnv-xscom-test.c
index 63d464048d..9fddc7d5f9 100644
--- a/tests/pnv-xscom-test.c
+++ b/tests/pnv-xscom-test.c
@@ -77,9 +77,15 @@ static void test_xscom_cfam_id(QTestState *qts, const PnvChip *chip)
 static void test_cfam_id(const void *data)
 {
     const PnvChip *chip = data;
+    const char *machine = "powernv8";
     QTestState *qts;
 
-    qts = qtest_initf("-M powernv,accel=tcg -cpu %s", chip->cpu_model);
+    if (chip->chip_type == PNV_CHIP_POWER9) {
+        machine = "powernv9";
+    }
+
+    qts = qtest_initf("-M %s,accel=tcg -cpu %s",
+                      machine, chip->cpu_model);
     test_xscom_cfam_id(qts, chip);
     qtest_quit(qts);
 }
@@ -113,8 +119,14 @@ static void test_core(const void *data)
 {
     const PnvChip *chip = data;
     QTestState *qts;
+    const char *machine = "powernv8";
+
+    if (chip->chip_type == PNV_CHIP_POWER9) {
+        machine = "powernv9";
+    }
 
-    qts = qtest_initf("-M powernv,accel=tcg -cpu %s", chip->cpu_model);
+    qts = qtest_initf("-M %s,accel=tcg -cpu %s",
+                      machine, chip->cpu_model);
     test_xscom_core(qts, chip);
     qtest_quit(qts);
 }
-- 
2.21.0



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

* [Qemu-devel] [PULL 06/19] tests/boot-serial-test: add support for all the PowerNV machines
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (3 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 05/19] ppc/pnv: Introduce PowerNV machines with fixed CPU models David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 07/19] ppc: Fix xsmaddmdp and friends David Gibson
                   ` (13 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell
  Cc: lvivier, aik, groug, qemu-devel, qemu-ppc, Cédric Le Goater,
	David Gibson

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

Use the machine names specifiying the CPU type, POWER8 and POWER9.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20190731141233.1340-3-clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 tests/boot-serial-test.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tests/boot-serial-test.c b/tests/boot-serial-test.c
index 24852d4c7d..a54d007298 100644
--- a/tests/boot-serial-test.c
+++ b/tests/boot-serial-test.c
@@ -103,7 +103,8 @@ static testdef_t tests[] = {
     { "ppc64", "pseries",
       "-machine cap-cfpc=broken,cap-sbbc=broken,cap-ibs=broken",
       "Open Firmware" },
-    { "ppc64", "powernv", "-cpu POWER8", "OPAL" },
+    { "ppc64", "powernv8", "", "OPAL" },
+    { "ppc64", "powernv9", "", "OPAL" },
     { "ppc64", "sam460ex", "-device e1000", "8086  100e" },
     { "i386", "isapc", "-cpu qemu32 -device sga", "SGABIOS" },
     { "i386", "pc", "-device sga", "SGABIOS" },
-- 
2.21.0



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

* [Qemu-devel] [PULL 07/19] ppc: Fix xsmaddmdp and friends
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (4 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 06/19] tests/boot-serial-test: add support for all the PowerNV machines David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 08/19] ppc: Fix xscvdpspn for SNAN David Gibson
                   ` (12 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell
  Cc: lvivier, aik, groug, qemu-devel, qemu-ppc, Paul A. Clarke, David Gibson

From: "Paul A. Clarke" <pc@us.ibm.com>

A class of instructions of the form:
  op Target,A,B
which operate like:
  Target = Target * A + B
have a bit set which distinguishes them from instructions that operate as:
  Target = Target * B + A

This bit is not being checked properly (using PPC_BIT macro), so all
instructions in this class are operating incorrectly as the second form
above.  The bit was being checked as if it were part of a 64-bit
instruction opcode, rather than a proper 32-bit opcode.  Fix by using the
macro (PPC_BIT32) which treats the opcode as a 32-bit quantity.

Fixes: c9f4e4d8b632 ("target/ppc: improve VSX_FMADD with new GEN_VSX_HELPER_VSX_MADD macro")

Signed-off-by: Paul A. Clarke <pc@us.ibm.com>
Message-Id: <1566401321-22419-1-git-send-email-pc@us.ibm.com>
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
Tested-by: Laurent Vivier <lvivier@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 target/ppc/translate/vsx-impl.inc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/ppc/translate/vsx-impl.inc.c b/target/ppc/translate/vsx-impl.inc.c
index 3922686ad6..8287e272f5 100644
--- a/target/ppc/translate/vsx-impl.inc.c
+++ b/target/ppc/translate/vsx-impl.inc.c
@@ -1308,7 +1308,7 @@ static void gen_##name(DisasContext *ctx)                                     \
     }                                                                         \
     xt = gen_vsr_ptr(xT(ctx->opcode));                                        \
     xa = gen_vsr_ptr(xA(ctx->opcode));                                        \
-    if (ctx->opcode & PPC_BIT(25)) {                                          \
+    if (ctx->opcode & PPC_BIT32(25)) {                                        \
         /*                                                                    \
          * AxT + B                                                            \
          */                                                                   \
-- 
2.21.0



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

* [Qemu-devel] [PULL 08/19] ppc: Fix xscvdpspn for SNAN
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (5 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 07/19] ppc: Fix xsmaddmdp and friends David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 09/19] spapr_pci: remove all child functions in function zero unplug David Gibson
                   ` (11 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell
  Cc: lvivier, aik, Richard Henderson, groug, qemu-devel, qemu-ppc,
	Paul A. Clarke, David Gibson

From: "Paul A. Clarke" <pc@us.ibm.com>

The xscvdpspn instruction implements a non-arithmetic conversion.
In particular, NaNs are not silenced and rounding is not performed.

Rewrite to match the pseudocode for ConvertDPtoSP_NS() in the
Power 3.0B manual.

Signed-off-by: Paul A. Clarke <pc@us.ibm.com>
Message-Id: <1566321964-1447-1-git-send-email-pc@us.ibm.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
[dwg: Replaced description with clearer version from rth]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 target/ppc/fpu_helper.c | 32 ++++++++++++++++++++++++++++++--
 1 file changed, 30 insertions(+), 2 deletions(-)

diff --git a/target/ppc/fpu_helper.c b/target/ppc/fpu_helper.c
index 07bc9051b0..c8e719272d 100644
--- a/target/ppc/fpu_helper.c
+++ b/target/ppc/fpu_helper.c
@@ -2887,12 +2887,40 @@ void helper_xscvqpdp(CPUPPCState *env, uint32_t opcode,
 
 uint64_t helper_xscvdpspn(CPUPPCState *env, uint64_t xb)
 {
-    uint64_t result;
+    uint64_t result, sign, exp, frac;
 
     float_status tstat = env->fp_status;
     set_float_exception_flags(0, &tstat);
 
-    result = (uint64_t)float64_to_float32(xb, &tstat);
+    sign = extract64(xb, 63,  1);
+    exp  = extract64(xb, 52, 11);
+    frac = extract64(xb,  0, 52) | 0x10000000000000ULL;
+
+    if (unlikely(exp == 0 && extract64(frac, 0, 52) != 0)) {
+        /* DP denormal operand.  */
+        /* Exponent override to DP min exp.  */
+        exp = 1;
+        /* Implicit bit override to 0.  */
+        frac = deposit64(frac, 53, 1, 0);
+    }
+
+    if (unlikely(exp < 897 && frac != 0)) {
+        /* SP tiny operand.  */
+        if (897 - exp > 63) {
+            frac = 0;
+        } else {
+            /* Denormalize until exp = SP min exp.  */
+            frac >>= (897 - exp);
+        }
+        /* Exponent override to SP min exp - 1.  */
+        exp = 896;
+    }
+
+    result = sign << 31;
+    result |= extract64(exp, 10, 1) << 30;
+    result |= extract64(exp, 0, 7) << 23;
+    result |= extract64(frac, 29, 23);
+
     /* hardware replicates result to both words of the doubleword result.  */
     return (result << 32) | result;
 }
-- 
2.21.0



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

* [Qemu-devel] [PULL 09/19] spapr_pci: remove all child functions in function zero unplug
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (6 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 08/19] ppc: Fix xscvdpspn for SNAN David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 10/19] pseries: Fix compat_pvr on reset David Gibson
                   ` (10 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell
  Cc: lvivier, aik, Daniel Henrique Barboza, groug, qemu-devel,
	qemu-ppc, David Gibson

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

There is nothing wrong with how sPAPR handles multifunction PCI
hot unplugs. The problem is that x86 does it simpler. Instead of
removing each non-zero function and then removing function zero,
x86 can remove any function of the slot to trigger the hot unplug.

Libvirt will be directly impacted by this difference, in the
(hopefully soon) PCI Multifunction hot plug/unplug support. For
hot plugs, both x86 and sPAPR will operate the same way: a XML
with all desired functions to be added, then consecutive hotplugs
of all non-zero functions first, zero last. For hot unplugs, at
least in the current state, a XML with the devices to be removed
must also be provided because of how sPAPR operates - x86 does
not need it - since any function unplug will unplug the whole
PCIe slot. This difference puts extra strain in the management
layer, which needs to either handle both archs differently in
the unplug scenario or choose treat x86 like sPAPR, forcing x86
users to cope with sPAPR internals.

This patch changes spapr_pci_unplug_request to handle the
unplug of function zero differently. When removing function zero,
instead of error-ing out if there are any remaining function
DRCs which needs detaching, detach those. This has no effect in
any existing scripts that are detaching the non-zero functions
before function zero, and can be used by management as a shortcut
to remove the whole PCI multifunction device without specifying
each child function.

Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20190822195918.3307-1-danielhb413@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr_pci.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index deb0b0c80c..9f176f463e 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -1700,11 +1700,13 @@ static void spapr_pci_unplug_request(HotplugHandler *plug_handler,
                 state = func_drck->dr_entity_sense(func_drc);
                 if (state == SPAPR_DR_ENTITY_SENSE_PRESENT
                     && !spapr_drc_unplug_requested(func_drc)) {
-                    error_setg(errp,
-                               "PCI: slot %d, function %d still present. "
-                               "Must unplug all non-0 functions first.",
-                               slotnr, i);
-                    return;
+                    /*
+                     * Attempting to remove function 0 of a multifunction
+                     * device will will cascade into removing all child
+                     * functions, even if their unplug weren't requested
+                     * beforehand.
+                     */
+                    spapr_drc_detach(func_drc);
                 }
             }
         }
-- 
2.21.0



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

* [Qemu-devel] [PULL 10/19] pseries: Fix compat_pvr on reset
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (7 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 09/19] spapr_pci: remove all child functions in function zero unplug David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 11/19] target/ppc: Set float_tininess_before_rounding at cpu reset David Gibson
                   ` (9 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell; +Cc: lvivier, aik, groug, qemu-devel, qemu-ppc, David Gibson

From: Laurent Vivier <lvivier@redhat.com>

If we a migrate P8 machine to a P9 machine, the migration fails on
destination with:

  error while loading state for instance 0x1 of device 'cpu'
  load of migration failed: Operation not permitted

This is caused because the compat_pvr field is only present for the first
CPU.
Originally, spapr_machine_reset() calls ppc_set_compat() to set the value
max_compat_pvr for the first cpu and this was propagated to all CPUs by
spapr_cpu_reset().  Now, as spapr_cpu_reset() is called before that, the
value is not propagated to all CPUs and the migration fails.

To fix that, propagate the new value to all CPUs in spapr_machine_reset().

Fixes: 25c9780d38d4 ("spapr: Reset CAS & IRQ subsystem after devices")
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Message-Id: <20190826090812.19080-1-lvivier@redhat.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr.c          | 8 +++++++-
 hw/ppc/spapr_cpu_core.c | 2 ++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index baedadf20b..d063312a3b 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1752,7 +1752,13 @@ static void spapr_machine_reset(MachineState *machine)
         spapr_ovec_cleanup(spapr->ov5_cas);
         spapr->ov5_cas = spapr_ovec_new();
 
-        ppc_set_compat(first_ppc_cpu, spapr->max_compat_pvr, &error_fatal);
+        /*
+         * reset compat_pvr for all CPUs
+         * as qemu_devices_reset() is called before this,
+         * it can't be propagated by spapr_cpu_reset()
+         * from the first CPU to all the others
+         */
+        ppc_set_compat_all(spapr->max_compat_pvr, &error_fatal);
     }
 
     /*
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index bf47fbdf6f..45e2f2747f 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -43,6 +43,8 @@ static void spapr_cpu_reset(void *opaque)
 
     /* Set compatibility mode to match the boot CPU, which was either set
      * by the machine reset code or by CAS. This should never fail.
+     * At startup the value is already set for all the CPUs
+     * but we need this when we hotplug a new CPU
      */
     ppc_set_compat(cpu, POWERPC_CPU(first_cpu)->compat_pvr, &error_abort);
 
-- 
2.21.0



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

* [Qemu-devel] [PULL 11/19] target/ppc: Set float_tininess_before_rounding at cpu reset
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (8 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 10/19] pseries: Fix compat_pvr on reset David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 12/19] target/ppc: Fix do_float_check_status vs inexact David Gibson
                   ` (8 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell
  Cc: lvivier, aik, Richard Henderson, groug, qemu-devel, qemu-ppc,
	Paul Clarke, David Gibson

From: Richard Henderson <richard.henderson@linaro.org>

As defined in Power 3.0 section 4.4.4 "Underflow Exception",
a tiny result is detected before rounding.

Fixes: https://bugs.launchpad.net/qemu/+bug/1841491
Reported-by: Paul Clarke <pc@us.ibm.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20190827020013.27154-1-richard.henderson@linaro.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 target/ppc/translate_init.inc.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/target/ppc/translate_init.inc.c b/target/ppc/translate_init.inc.c
index 4a21ed7289..023138c2f9 100644
--- a/target/ppc/translate_init.inc.c
+++ b/target/ppc/translate_init.inc.c
@@ -10461,6 +10461,10 @@ static void ppc_cpu_reset(CPUState *s)
     s->exception_index = POWERPC_EXCP_NONE;
     env->error_code = 0;
 
+    /* tininess for underflow is detected before rounding */
+    set_float_detect_tininess(float_tininess_before_rounding,
+                              &env->fp_status);
+
     for (i = 0; i < ARRAY_SIZE(env->spr_cb); i++) {
         ppc_spr_t *spr = &env->spr_cb[i];
 
-- 
2.21.0



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

* [Qemu-devel] [PULL 12/19] target/ppc: Fix do_float_check_status vs inexact
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (9 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 11/19] target/ppc: Set float_tininess_before_rounding at cpu reset David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 13/19] target/ppc: Refactor emulation of vmrgew and vmrgow instructions David Gibson
                   ` (7 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell
  Cc: lvivier, aik, Richard Henderson, groug, qemu-devel, qemu-ppc,
	Paul Clarke, David Gibson

From: Richard Henderson <richard.henderson@linaro.org>

The underflow and inexact exceptions are not mutually exclusive.
Check for both of them.  Tidy the reset of FPSCR[FI].

Fixes: https://bugs.launchpad.net/bugs/1841442
Reported-by: Paul Clarke <pc@us.ibm.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Tested-by: Paul Clarke <pc@us.ibm.com>
Message-Id: <20190826165434.18403-2-richard.henderson@linaro.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 target/ppc/fpu_helper.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/target/ppc/fpu_helper.c b/target/ppc/fpu_helper.c
index c8e719272d..4b1a2e6178 100644
--- a/target/ppc/fpu_helper.c
+++ b/target/ppc/fpu_helper.c
@@ -630,19 +630,15 @@ static void do_float_check_status(CPUPPCState *env, uintptr_t raddr)
 {
     CPUState *cs = env_cpu(env);
     int status = get_float_exception_flags(&env->fp_status);
-    bool inexact_happened = false;
 
     if (status & float_flag_overflow) {
         float_overflow_excp(env);
     } else if (status & float_flag_underflow) {
         float_underflow_excp(env);
-    } else if (status & float_flag_inexact) {
-        float_inexact_excp(env);
-        inexact_happened = true;
     }
-
-    /* if the inexact flag was not set */
-    if (inexact_happened == false) {
+    if (status & float_flag_inexact) {
+        float_inexact_excp(env);
+    } else {
         env->fpscr &= ~(1 << FPSCR_FI); /* clear the FPSCR[FI] bit */
     }
 
-- 
2.21.0



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

* [Qemu-devel] [PULL 13/19] target/ppc: Refactor emulation of vmrgew and vmrgow instructions
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (10 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 12/19] target/ppc: Fix do_float_check_status vs inexact David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 14/19] pseries: Update SLOF firmware image David Gibson
                   ` (6 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell
  Cc: lvivier, aik, Richard Henderson, groug, qemu-devel, qemu-ppc,
	Stefan Brankovic, David Gibson

From: Stefan Brankovic <stefan.brankovic@rt-rk.com>

Since I found this two instructions implemented with tcg, I refactored
them so they are consistent with other similar implementations that
I introduced in this patch.

Also, a new dual macro GEN_VXFORM_TRANS_DUAL is added. This macro is
used if one instruction is realized with direct translation, and second
one with a helper.

Signed-off-by: Stefan Brankovic <stefan.brankovic@rt-rk.com>
Message-Id: <1566898663-25858-4-git-send-email-stefan.brankovic@rt-rk.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 target/ppc/translate/vmx-impl.inc.c | 66 ++++++++++++++++-------------
 1 file changed, 37 insertions(+), 29 deletions(-)

diff --git a/target/ppc/translate/vmx-impl.inc.c b/target/ppc/translate/vmx-impl.inc.c
index 0d71c10428..2472a5217a 100644
--- a/target/ppc/translate/vmx-impl.inc.c
+++ b/target/ppc/translate/vmx-impl.inc.c
@@ -350,6 +350,28 @@ static void glue(gen_, name0##_##name1)(DisasContext *ctx)             \
     }                                                                  \
 }
 
+/*
+ * We use this macro if one instruction is realized with direct
+ * translation, and second one with helper.
+ */
+#define GEN_VXFORM_TRANS_DUAL(name0, flg0, flg2_0, name1, flg1, flg2_1)\
+static void glue(gen_, name0##_##name1)(DisasContext *ctx)             \
+{                                                                      \
+    if ((Rc(ctx->opcode) == 0) &&                                      \
+        ((ctx->insns_flags & flg0) || (ctx->insns_flags2 & flg2_0))) { \
+        if (unlikely(!ctx->altivec_enabled)) {                         \
+            gen_exception(ctx, POWERPC_EXCP_VPU);                      \
+            return;                                                    \
+        }                                                              \
+        trans_##name0(ctx);                                            \
+    } else if ((Rc(ctx->opcode) == 1) &&                               \
+        ((ctx->insns_flags & flg1) || (ctx->insns_flags2 & flg2_1))) { \
+        gen_##name1(ctx);                                              \
+    } else {                                                           \
+        gen_inval_exception(ctx, POWERPC_EXCP_INVAL_INVAL);            \
+    }                                                                  \
+}
+
 /* Adds support to provide invalid mask */
 #define GEN_VXFORM_DUAL_EXT(name0, flg0, flg2_0, inval0,                \
                             name1, flg1, flg2_1, inval1)                \
@@ -431,20 +453,13 @@ GEN_VXFORM(vmrglb, 6, 4);
 GEN_VXFORM(vmrglh, 6, 5);
 GEN_VXFORM(vmrglw, 6, 6);
 
-static void gen_vmrgew(DisasContext *ctx)
+static void trans_vmrgew(DisasContext *ctx)
 {
-    TCGv_i64 tmp;
-    TCGv_i64 avr;
-    int VT, VA, VB;
-    if (unlikely(!ctx->altivec_enabled)) {
-        gen_exception(ctx, POWERPC_EXCP_VPU);
-        return;
-    }
-    VT = rD(ctx->opcode);
-    VA = rA(ctx->opcode);
-    VB = rB(ctx->opcode);
-    tmp = tcg_temp_new_i64();
-    avr = tcg_temp_new_i64();
+    int VT = rD(ctx->opcode);
+    int VA = rA(ctx->opcode);
+    int VB = rB(ctx->opcode);
+    TCGv_i64 tmp = tcg_temp_new_i64();
+    TCGv_i64 avr = tcg_temp_new_i64();
 
     get_avr64(avr, VB, true);
     tcg_gen_shri_i64(tmp, avr, 32);
@@ -462,21 +477,14 @@ static void gen_vmrgew(DisasContext *ctx)
     tcg_temp_free_i64(avr);
 }
 
-static void gen_vmrgow(DisasContext *ctx)
+static void trans_vmrgow(DisasContext *ctx)
 {
-    TCGv_i64 t0, t1;
-    TCGv_i64 avr;
-    int VT, VA, VB;
-    if (unlikely(!ctx->altivec_enabled)) {
-        gen_exception(ctx, POWERPC_EXCP_VPU);
-        return;
-    }
-    VT = rD(ctx->opcode);
-    VA = rA(ctx->opcode);
-    VB = rB(ctx->opcode);
-    t0 = tcg_temp_new_i64();
-    t1 = tcg_temp_new_i64();
-    avr = tcg_temp_new_i64();
+    int VT = rD(ctx->opcode);
+    int VA = rA(ctx->opcode);
+    int VB = rB(ctx->opcode);
+    TCGv_i64 t0 = tcg_temp_new_i64();
+    TCGv_i64 t1 = tcg_temp_new_i64();
+    TCGv_i64 avr = tcg_temp_new_i64();
 
     get_avr64(t0, VB, true);
     get_avr64(t1, VA, true);
@@ -936,14 +944,14 @@ GEN_VXFORM_ENV(vminfp, 5, 17);
 GEN_VXFORM_HETRO(vextublx, 6, 24)
 GEN_VXFORM_HETRO(vextuhlx, 6, 25)
 GEN_VXFORM_HETRO(vextuwlx, 6, 26)
-GEN_VXFORM_DUAL(vmrgow, PPC_NONE, PPC2_ALTIVEC_207,
+GEN_VXFORM_TRANS_DUAL(vmrgow, PPC_NONE, PPC2_ALTIVEC_207,
                 vextuwlx, PPC_NONE, PPC2_ISA300)
 GEN_VXFORM_HETRO(vextubrx, 6, 28)
 GEN_VXFORM_HETRO(vextuhrx, 6, 29)
 GEN_VXFORM_HETRO(vextuwrx, 6, 30)
 GEN_VXFORM_TRANS(lvsl, 6, 31)
 GEN_VXFORM_TRANS(lvsr, 6, 32)
-GEN_VXFORM_DUAL(vmrgew, PPC_NONE, PPC2_ALTIVEC_207, \
+GEN_VXFORM_TRANS_DUAL(vmrgew, PPC_NONE, PPC2_ALTIVEC_207,
                 vextuwrx, PPC_NONE, PPC2_ISA300)
 
 #define GEN_VXRFORM1(opname, name, str, opc2, opc3)                     \
-- 
2.21.0



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

* [Qemu-devel] [PULL 14/19] pseries: Update SLOF firmware image
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (11 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 13/19] target/ppc: Refactor emulation of vmrgew and vmrgow instructions David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 15/19] powerpc/spapr: Add host threads parameter to ibm, get_system_parameter David Gibson
                   ` (5 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell; +Cc: lvivier, aik, groug, qemu-devel, qemu-ppc, David Gibson

From: Alexey Kardashevskiy <aik@ozlabs.ru>

This allocates space for FWNMI log in RTAS and fixes phandles at
the ibm,client-architecture-support stage.

The full list is:
 * libnet: Fix the check of the argument lengths of the "ping" command
 * fdt: Update phandles after H_CAS
 * rtas: Reserve space for FWNMI log

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 926784 -> 930656 bytes
 roms/SLOF        |   2 +-
 3 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/pc-bios/README b/pc-bios/README
index d59cd25461..ad78f6dc49 100644
--- a/pc-bios/README
+++ b/pc-bios/README
@@ -17,7 +17,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-20190719.
+  built from git tag qemu-slof-20190827.
 
 - 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 fb0837508be2e398054fe9837682f5eff18875ad..a3a3e4933278461a08c8b58ad0da6741bb6b3d1b 100644
GIT binary patch
delta 139175
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
J*S)sn{{yr;_*eh{

delta 139130
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
A0{{R3

diff --git a/roms/SLOF b/roms/SLOF
index 7bfe584e32..ea221600a1 160000
--- a/roms/SLOF
+++ b/roms/SLOF
@@ -1 +1 @@
-Subproject commit 7bfe584e321946771692711ff83ad2b5850daca7
+Subproject commit ea221600a116883137ef90b2b7ab7d2472bc4f10
-- 
2.21.0



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

* [Qemu-devel] [PULL 15/19] powerpc/spapr: Add host threads parameter to ibm, get_system_parameter
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (12 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 14/19] pseries: Update SLOF firmware image David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 16/19] spapr: Use SHUTDOWN_CAUSE_SUBSYSTEM_RESET for CAS reboots David Gibson
                   ` (4 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell
  Cc: lvivier, aik, groug, qemu-devel, qemu-ppc, Suraj Jitindar Singh,
	David Gibson

From: Suraj Jitindar Singh <sjitindarsingh@gmail.com>

The ibm,get_system_parameter rtas call is used by the guest to retrieve
data relating to certain parameters of the system. The SPLPAR
characteristics option (token 20) is used to determine characteristics of
the environment in which the lpar will run.

It may be useful for a guest to know the number of physical host threads
present on the underlying system where it is being run. Add the
characteristic "HostThrs" to the SPLPAR Characteristics
ibm,get_system_parameter rtas call to expose this information to a
guest. Add a n_host_threads property to the processor class which is
then used to retrieve this information and define it for POWER8 and
POWER9. Other processors will default to 0 and the charateristic won't
be added.

Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>

Message-Id: <20190827045751.22123-1-sjitindarsingh@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr_rtas.c             | 15 +++++++++++++++
 target/ppc/cpu-qom.h            |  1 +
 target/ppc/translate_init.inc.c |  2 ++
 3 files changed, 18 insertions(+)

diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
index 526b489297..bee3835214 100644
--- a/hw/ppc/spapr_rtas.c
+++ b/hw/ppc/spapr_rtas.c
@@ -266,6 +266,7 @@ static void rtas_ibm_get_system_parameter(PowerPCCPU *cpu,
                                           target_ulong args,
                                           uint32_t nret, target_ulong rets)
 {
+    PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu);
     MachineState *ms = MACHINE(qdev_get_machine());
     unsigned int max_cpus = ms->smp.max_cpus;
     target_ulong parameter = rtas_ld(args, 0);
@@ -283,6 +284,20 @@ static void rtas_ibm_get_system_parameter(PowerPCCPU *cpu,
                                           current_machine->ram_size / MiB,
                                           ms->smp.cpus,
                                           max_cpus);
+        if (pcc->n_host_threads > 0) {
+            char *hostthr_val, *old = param_val;
+
+            /*
+             * Add HostThrs property. This property is not present in PAPR but
+             * is expected by some guests to communicate the number of physical
+             * host threads per core on the system so that they can scale
+             * information which varies based on the thread configuration.
+             */
+            hostthr_val = g_strdup_printf(",HostThrs=%d", pcc->n_host_threads);
+            param_val = g_strconcat(param_val, hostthr_val, NULL);
+            g_free(hostthr_val);
+            g_free(old);
+        }
         ret = sysparm_st(buffer, length, param_val, strlen(param_val) + 1);
         g_free(param_val);
         break;
diff --git a/target/ppc/cpu-qom.h b/target/ppc/cpu-qom.h
index 7ffdb0a706..e499575dc8 100644
--- a/target/ppc/cpu-qom.h
+++ b/target/ppc/cpu-qom.h
@@ -191,6 +191,7 @@ typedef struct PowerPCCPUClass {
     const PPCHash64Options *hash64_opts;
     struct ppc_radix_page_info *radix_page_info;
     uint32_t lrg_decr_bits;
+    int n_host_threads;
     void (*init_proc)(CPUPPCState *env);
     int  (*check_pow)(CPUPPCState *env);
     int (*handle_mmu_fault)(PowerPCCPU *cpu, vaddr eaddr, int rwx, int mmu_idx);
diff --git a/target/ppc/translate_init.inc.c b/target/ppc/translate_init.inc.c
index 023138c2f9..0fb11c7ac6 100644
--- a/target/ppc/translate_init.inc.c
+++ b/target/ppc/translate_init.inc.c
@@ -8770,6 +8770,7 @@ POWERPC_FAMILY(POWER8)(ObjectClass *oc, void *data)
     pcc->handle_mmu_fault = ppc_hash64_handle_mmu_fault;
     pcc->hash64_opts = &ppc_hash64_opts_POWER7;
     pcc->lrg_decr_bits = 32;
+    pcc->n_host_threads = 8;
 #endif
     pcc->excp_model = POWERPC_EXCP_POWER8;
     pcc->bus_model = PPC_FLAGS_INPUT_POWER7;
@@ -8981,6 +8982,7 @@ POWERPC_FAMILY(POWER9)(ObjectClass *oc, void *data)
     pcc->hash64_opts = &ppc_hash64_opts_POWER7;
     pcc->radix_page_info = &POWER9_radix_page_info;
     pcc->lrg_decr_bits = 56;
+    pcc->n_host_threads = 4;
 #endif
     pcc->excp_model = POWERPC_EXCP_POWER9;
     pcc->bus_model = PPC_FLAGS_INPUT_POWER9;
-- 
2.21.0



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

* [Qemu-devel] [PULL 16/19] spapr: Use SHUTDOWN_CAUSE_SUBSYSTEM_RESET for CAS reboots
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (13 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 15/19] powerpc/spapr: Add host threads parameter to ibm, get_system_parameter David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 17/19] spapr_pci: Advertise BAR reallocation capability David Gibson
                   ` (3 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell; +Cc: lvivier, aik, groug, qemu-devel, qemu-ppc, David Gibson

The sPAPR platform includes feature negotiation between the guest and
platform.  That sometimes requires reconfiguring the virtual hardware, and
in some cases that is a complex enough process that we trigger a system
reset to handle it.  That interacts badly with -no-reboot - we trigger the
reboot, -no-reboot means we exit and so the guest never gets to try again.

Eventually we want to get rid of CAS reboots entirely, since they're odd
and irritating for the user.  But in the meantime we can fix the -no-reboot
problem by using SHUTDOWN_CAUSE_SUBSYSTEM_RESET which ignores -no-reboot
and seems to be designed for this sort of faux-reset for internal purposes
only.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr_hcall.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c
index e20a946b99..23e4bdb829 100644
--- a/hw/ppc/spapr_hcall.c
+++ b/hw/ppc/spapr_hcall.c
@@ -1811,7 +1811,7 @@ static target_ulong h_client_architecture_support(PowerPCCPU *cpu,
     spapr_ovec_cleanup(ov5_updates);
 
     if (spapr->cas_reboot) {
-        qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET);
+        qemu_system_reset_request(SHUTDOWN_CAUSE_SUBSYSTEM_RESET);
     }
 
     return H_SUCCESS;
-- 
2.21.0



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

* [Qemu-devel] [PULL 17/19] spapr_pci: Advertise BAR reallocation capability
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (14 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 16/19] spapr: Use SHUTDOWN_CAUSE_SUBSYSTEM_RESET for CAS reboots David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 18/19] spapr/pci: Convert types to QEMU coding style David Gibson
                   ` (2 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell; +Cc: lvivier, aik, groug, qemu-devel, qemu-ppc, David Gibson

From: Alexey Kardashevskiy <aik@ozlabs.ru>

The pseries guests do not normally allocate PCI resources and rely on
the system firmware doing so. Furthermore at least at some point in
the past the pseries guests won't even allowed to change BARs, probably
it is still the case for phyp. So since the initial commit we have [1]
which prevents resource reallocation.

This is not a problem until we want specific BAR alignments, for example,
PAGE_SIZE==64k to make sure we can still map MMIO BARs directly. For
the boot time devices we handle this in SLOF [2] but since QEMU's RTAS
does not allocate BARs, the guest does this instead and does not align
BARs even if Linux is given pci=resource_alignment=16@pci:0:0 as
PCI_PROBE_ONLY makes Linux ignore alignment requests.

ARM folks added a dial to control PCI_PROBE_ONLY via the device tree [3].
This makes use of the dial to advertise to the guest that we can handle
BAR reassignments. This limits the change to the latest pseries machine
to avoid old guests explosion.

We do not remove the flag from [1] as pseries guests are still supported
under phyp so having that removed may cause problems.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/powerpc/platforms/pseries/setup.c?h=v5.1#n773
[2] https://git.qemu.org/?p=SLOF.git;a=blob;f=board-qemu/slof/pci-phb.fs;h=06729bcf77a0d4e900c527adcd9befe2a269f65d;hb=HEAD#l338
[3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f81c11af
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Message-Id: <20190719043734.108462-1-aik@ozlabs.ru>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr.c         | 9 +++++++++
 include/hw/ppc/spapr.h | 1 +
 2 files changed, 10 insertions(+)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index d063312a3b..447fb5c4ea 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1168,6 +1168,7 @@ static void spapr_dt_ov5_platform_support(SpaprMachineState *spapr, void *fdt,
 static void spapr_dt_chosen(SpaprMachineState *spapr, void *fdt)
 {
     MachineState *machine = MACHINE(spapr);
+    SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(machine);
     int chosen;
     const char *boot_device = machine->boot_order;
     char *stdout_path = spapr_vio_stdout_path(spapr->vio_bus);
@@ -1225,6 +1226,11 @@ static void spapr_dt_chosen(SpaprMachineState *spapr, void *fdt)
         _FDT(fdt_setprop_string(fdt, chosen, "stdout-path", stdout_path));
     }
 
+    /* We can deal with BAR reallocation just fine, advertise it to the guest */
+    if (smc->linux_pci_probe) {
+        _FDT(fdt_setprop_cell(fdt, chosen, "linux,pci-probe-only", 0));
+    }
+
     spapr_dt_ov5_platform_support(spapr, fdt, chosen);
 
     g_free(stdout_path);
@@ -4476,6 +4482,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
     spapr_caps_add_properties(smc, &error_abort);
     smc->irq = &spapr_irq_dual;
     smc->dr_phb_enabled = true;
+    smc->linux_pci_probe = true;
 }
 
 static const TypeInfo spapr_machine_info = {
@@ -4535,12 +4542,14 @@ DEFINE_SPAPR_MACHINE(4_2, "4.2", true);
  */
 static void spapr_machine_4_1_class_options(MachineClass *mc)
 {
+    SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
     static GlobalProperty compat[] = {
         /* Only allow 4kiB and 64kiB IOMMU pagesizes */
         { TYPE_SPAPR_PCI_HOST_BRIDGE, "pgsz", "0x11000" },
     };
 
     spapr_machine_4_2_class_options(mc);
+    smc->linux_pci_probe = false;
     compat_props_add(mc->compat_props, hw_compat_4_1, hw_compat_4_1_len);
     compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
 }
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index fa7c380edb..03111fd55b 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -121,6 +121,7 @@ struct SpaprMachineClass {
     bool legacy_irq_allocation;
     bool broken_host_serial_model; /* present real host info to the guest */
     bool pre_4_1_migration; /* don't migrate hpt-max-page-size */
+    bool linux_pci_probe;
 
     void (*phb_placement)(SpaprMachineState *spapr, uint32_t index,
                           uint64_t *buid, hwaddr *pio, 
-- 
2.21.0



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

* [Qemu-devel] [PULL 18/19] spapr/pci: Convert types to QEMU coding style
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (15 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 17/19] spapr_pci: Advertise BAR reallocation capability David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-08-29  6:08 ` [Qemu-devel] [PULL 19/19] spapr: Set compat mode in spapr_core_plug() David Gibson
  2019-09-04  8:17 ` [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 Peter Maydell
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell; +Cc: lvivier, aik, groug, qemu-devel, qemu-ppc, David Gibson

From: Greg Kurz <groug@kaod.org>

The QEMU coding style requires:
- to typedef structured types (HACKING)
- to use CamelCase for types and structure names (CODING_STYLE)

Do that for PCI and Nvlink2 code.

Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <156701644465.505236.2850655823182656869.stgit@bahia.lan>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr_pci.c          | 28 +++++++++++++-------------
 hw/ppc/spapr_pci_nvlink2.c  | 40 +++++++++++++++++++------------------
 include/hw/pci-host/spapr.h | 24 ++++++++++++----------
 3 files changed, 49 insertions(+), 43 deletions(-)

diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 9f176f463e..a777fb3e7f 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -280,7 +280,7 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, SpaprMachineState *spapr,
     unsigned int irq, max_irqs = 0;
     SpaprPhbState *phb = NULL;
     PCIDevice *pdev = NULL;
-    spapr_pci_msi *msi;
+    SpaprPciMsi *msi;
     int *config_addr_key;
     Error *err = NULL;
     int i;
@@ -328,7 +328,7 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, SpaprMachineState *spapr,
         return;
     }
 
-    msi = (spapr_pci_msi *) g_hash_table_lookup(phb->msi, &config_addr);
+    msi = (SpaprPciMsi *) g_hash_table_lookup(phb->msi, &config_addr);
 
     /* Releasing MSIs */
     if (!req_num) {
@@ -415,7 +415,7 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, SpaprMachineState *spapr,
                      irq, req_num);
 
     /* Add MSI device to cache */
-    msi = g_new(spapr_pci_msi, 1);
+    msi = g_new(SpaprPciMsi, 1);
     msi->first_irq = irq;
     msi->num = req_num;
     config_addr_key = g_new(int, 1);
@@ -446,7 +446,7 @@ static void rtas_ibm_query_interrupt_source_number(PowerPCCPU *cpu,
     unsigned int intr_src_num = -1, ioa_intr_num = rtas_ld(args, 3);
     SpaprPhbState *phb = NULL;
     PCIDevice *pdev = NULL;
-    spapr_pci_msi *msi;
+    SpaprPciMsi *msi;
 
     /* Find SpaprPhbState */
     phb = spapr_pci_find_phb(spapr, buid);
@@ -459,7 +459,7 @@ static void rtas_ibm_query_interrupt_source_number(PowerPCCPU *cpu,
     }
 
     /* Find device descriptor and start IRQ */
-    msi = (spapr_pci_msi *) g_hash_table_lookup(phb->msi, &config_addr);
+    msi = (SpaprPciMsi *) g_hash_table_lookup(phb->msi, &config_addr);
     if (!msi || !msi->first_irq || !msi->num || (ioa_intr_num >= msi->num)) {
         trace_spapr_pci_msi("Failed to return vector", config_addr);
         rtas_st(rets, 0, RTAS_OUT_HW_ERROR);
@@ -1806,7 +1806,7 @@ static void spapr_phb_destroy_msi(gpointer opaque)
 {
     SpaprMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
     SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr);
-    spapr_pci_msi *msi = opaque;
+    SpaprPciMsi *msi = opaque;
 
     if (!smc->legacy_irq_allocation) {
         spapr_irq_msi_free(spapr, msi->first_irq, msi->num);
@@ -2120,7 +2120,7 @@ static const VMStateDescription vmstate_spapr_pci_lsi = {
     .version_id = 1,
     .minimum_version_id = 1,
     .fields = (VMStateField[]) {
-        VMSTATE_UINT32_EQUAL(irq, struct spapr_pci_lsi, NULL),
+        VMSTATE_UINT32_EQUAL(irq, SpaprPciLsi, NULL),
 
         VMSTATE_END_OF_LIST()
     },
@@ -2131,9 +2131,9 @@ static const VMStateDescription vmstate_spapr_pci_msi = {
     .version_id = 1,
     .minimum_version_id = 1,
     .fields = (VMStateField []) {
-        VMSTATE_UINT32(key, spapr_pci_msi_mig),
-        VMSTATE_UINT32(value.first_irq, spapr_pci_msi_mig),
-        VMSTATE_UINT32(value.num, spapr_pci_msi_mig),
+        VMSTATE_UINT32(key, SpaprPciMsiMig),
+        VMSTATE_UINT32(value.first_irq, SpaprPciMsiMig),
+        VMSTATE_UINT32(value.num, SpaprPciMsiMig),
         VMSTATE_END_OF_LIST()
     },
 };
@@ -2165,12 +2165,12 @@ static int spapr_pci_pre_save(void *opaque)
     if (!sphb->msi_devs_num) {
         return 0;
     }
-    sphb->msi_devs = g_new(spapr_pci_msi_mig, sphb->msi_devs_num);
+    sphb->msi_devs = g_new(SpaprPciMsiMig, sphb->msi_devs_num);
 
     g_hash_table_iter_init(&iter, sphb->msi);
     for (i = 0; g_hash_table_iter_next(&iter, &key, &value); ++i) {
         sphb->msi_devs[i].key = *(uint32_t *) key;
-        sphb->msi_devs[i].value = *(spapr_pci_msi *) value;
+        sphb->msi_devs[i].value = *(SpaprPciMsi *) value;
     }
 
     return 0;
@@ -2217,10 +2217,10 @@ static const VMStateDescription vmstate_spapr_pci = {
         VMSTATE_UINT64_TEST(mig_io_win_addr, SpaprPhbState, pre_2_8_migration),
         VMSTATE_UINT64_TEST(mig_io_win_size, SpaprPhbState, pre_2_8_migration),
         VMSTATE_STRUCT_ARRAY(lsi_table, SpaprPhbState, PCI_NUM_PINS, 0,
-                             vmstate_spapr_pci_lsi, struct spapr_pci_lsi),
+                             vmstate_spapr_pci_lsi, SpaprPciLsi),
         VMSTATE_INT32(msi_devs_num, SpaprPhbState),
         VMSTATE_STRUCT_VARRAY_ALLOC(msi_devs, SpaprPhbState, msi_devs_num, 0,
-                                    vmstate_spapr_pci_msi, spapr_pci_msi_mig),
+                                    vmstate_spapr_pci_msi, SpaprPciMsiMig),
         VMSTATE_END_OF_LIST()
     },
 };
diff --git a/hw/ppc/spapr_pci_nvlink2.c b/hw/ppc/spapr_pci_nvlink2.c
index eda8c752aa..4aa89ede23 100644
--- a/hw/ppc/spapr_pci_nvlink2.c
+++ b/hw/ppc/spapr_pci_nvlink2.c
@@ -39,11 +39,7 @@
 
 #define SPAPR_GPU_NUMA_ID           (cpu_to_be32(1))
 
-struct spapr_phb_pci_nvgpu_config {
-    uint64_t nv2_ram_current;
-    uint64_t nv2_atsd_current;
-    int num; /* number of non empty (i.e. tgt!=0) entries in slots[] */
-    struct spapr_phb_pci_nvgpu_slot {
+typedef struct SpaprPhbPciNvGpuSlot {
         uint64_t tgt;
         uint64_t gpa;
         unsigned numa_id;
@@ -54,12 +50,18 @@ struct spapr_phb_pci_nvgpu_config {
             PCIDevice *npdev;
             uint32_t link_speed;
         } links[NVGPU_MAX_LINKS];
-    } slots[NVGPU_MAX_NUM];
+} SpaprPhbPciNvGpuSlot;
+
+struct SpaprPhbPciNvGpuConfig {
+    uint64_t nv2_ram_current;
+    uint64_t nv2_atsd_current;
+    int num; /* number of non empty (i.e. tgt!=0) entries in slots[] */
+    SpaprPhbPciNvGpuSlot slots[NVGPU_MAX_NUM];
     Error *errp;
 };
 
-static struct spapr_phb_pci_nvgpu_slot *
-spapr_nvgpu_get_slot(struct spapr_phb_pci_nvgpu_config *nvgpus, uint64_t tgt)
+static SpaprPhbPciNvGpuSlot *
+spapr_nvgpu_get_slot(SpaprPhbPciNvGpuConfig *nvgpus, uint64_t tgt)
 {
     int i;
 
@@ -81,13 +83,13 @@ spapr_nvgpu_get_slot(struct spapr_phb_pci_nvgpu_config *nvgpus, uint64_t tgt)
     return &nvgpus->slots[i];
 }
 
-static void spapr_pci_collect_nvgpu(struct spapr_phb_pci_nvgpu_config *nvgpus,
+static void spapr_pci_collect_nvgpu(SpaprPhbPciNvGpuConfig *nvgpus,
                                     PCIDevice *pdev, uint64_t tgt,
                                     MemoryRegion *mr, Error **errp)
 {
     MachineState *machine = MACHINE(qdev_get_machine());
     SpaprMachineState *spapr = SPAPR_MACHINE(machine);
-    struct spapr_phb_pci_nvgpu_slot *nvslot = spapr_nvgpu_get_slot(nvgpus, tgt);
+    SpaprPhbPciNvGpuSlot *nvslot = spapr_nvgpu_get_slot(nvgpus, tgt);
 
     if (!nvslot) {
         error_setg(errp, "Found too many GPUs per vPHB");
@@ -102,11 +104,11 @@ static void spapr_pci_collect_nvgpu(struct spapr_phb_pci_nvgpu_config *nvgpus,
     ++spapr->gpu_numa_id;
 }
 
-static void spapr_pci_collect_nvnpu(struct spapr_phb_pci_nvgpu_config *nvgpus,
+static void spapr_pci_collect_nvnpu(SpaprPhbPciNvGpuConfig *nvgpus,
                                     PCIDevice *pdev, uint64_t tgt,
                                     MemoryRegion *mr, Error **errp)
 {
-    struct spapr_phb_pci_nvgpu_slot *nvslot = spapr_nvgpu_get_slot(nvgpus, tgt);
+    SpaprPhbPciNvGpuSlot *nvslot = spapr_nvgpu_get_slot(nvgpus, tgt);
     int j;
 
     if (!nvslot) {
@@ -138,7 +140,7 @@ static void spapr_phb_pci_collect_nvgpu(PCIBus *bus, PCIDevice *pdev,
 
     if (tgt) {
         Error *local_err = NULL;
-        struct spapr_phb_pci_nvgpu_config *nvgpus = opaque;
+        SpaprPhbPciNvGpuConfig *nvgpus = opaque;
         Object *mr_gpu = object_property_get_link(po, "nvlink2-mr[0]", NULL);
         Object *mr_npu = object_property_get_link(po, "nvlink2-atsd-mr[0]",
                                                   NULL);
@@ -177,7 +179,7 @@ void spapr_phb_nvgpu_setup(SpaprPhbState *sphb, Error **errp)
         return;
     }
 
-    sphb->nvgpus = g_new0(struct spapr_phb_pci_nvgpu_config, 1);
+    sphb->nvgpus = g_new0(SpaprPhbPciNvGpuConfig, 1);
     sphb->nvgpus->nv2_ram_current = sphb->nv2_gpa_win_addr;
     sphb->nvgpus->nv2_atsd_current = sphb->nv2_atsd_win_addr;
 
@@ -194,7 +196,7 @@ void spapr_phb_nvgpu_setup(SpaprPhbState *sphb, Error **errp)
     /* Add found GPU RAM and ATSD MRs if found */
     for (i = 0, valid_gpu_num = 0; i < sphb->nvgpus->num; ++i) {
         Object *nvmrobj;
-        struct spapr_phb_pci_nvgpu_slot *nvslot = &sphb->nvgpus->slots[i];
+        SpaprPhbPciNvGpuSlot *nvslot = &sphb->nvgpus->slots[i];
 
         if (!nvslot->gpdev) {
             continue;
@@ -242,7 +244,7 @@ void spapr_phb_nvgpu_free(SpaprPhbState *sphb)
     }
 
     for (i = 0; i < sphb->nvgpus->num; ++i) {
-        struct spapr_phb_pci_nvgpu_slot *nvslot = &sphb->nvgpus->slots[i];
+        SpaprPhbPciNvGpuSlot *nvslot = &sphb->nvgpus->slots[i];
         Object *nv_mrobj = object_property_get_link(OBJECT(nvslot->gpdev),
                                                     "nvlink2-mr[0]", NULL);
 
@@ -276,7 +278,7 @@ void spapr_phb_nvgpu_populate_dt(SpaprPhbState *sphb, void *fdt, int bus_off,
     }
 
     for (i = 0; (i < sphb->nvgpus->num) && (atsdnum < ARRAY_SIZE(atsd)); ++i) {
-        struct spapr_phb_pci_nvgpu_slot *nvslot = &sphb->nvgpus->slots[i];
+        SpaprPhbPciNvGpuSlot *nvslot = &sphb->nvgpus->slots[i];
 
         if (!nvslot->gpdev) {
             continue;
@@ -354,7 +356,7 @@ void spapr_phb_nvgpu_ram_populate_dt(SpaprPhbState *sphb, void *fdt)
 
     /* Add memory nodes for GPU RAM and mark them unusable */
     for (i = 0; i < sphb->nvgpus->num; ++i) {
-        struct spapr_phb_pci_nvgpu_slot *nvslot = &sphb->nvgpus->slots[i];
+        SpaprPhbPciNvGpuSlot *nvslot = &sphb->nvgpus->slots[i];
         Object *nv_mrobj = object_property_get_link(OBJECT(nvslot->gpdev),
                                                     "nvlink2-mr[0]", NULL);
         uint32_t associativity[] = {
@@ -398,7 +400,7 @@ void spapr_phb_nvgpu_populate_pcidev_dt(PCIDevice *dev, void *fdt, int offset,
     }
 
     for (i = 0; i < sphb->nvgpus->num; ++i) {
-        struct spapr_phb_pci_nvgpu_slot *nvslot = &sphb->nvgpus->slots[i];
+        SpaprPhbPciNvGpuSlot *nvslot = &sphb->nvgpus->slots[i];
 
         /* Skip "slot" without attached GPU */
         if (!nvslot->gpdev) {
diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h
index 1b61162f91..abd87605b2 100644
--- a/include/hw/pci-host/spapr.h
+++ b/include/hw/pci-host/spapr.h
@@ -34,15 +34,21 @@
 
 typedef struct SpaprPhbState SpaprPhbState;
 
-typedef struct spapr_pci_msi {
+typedef struct SpaprPciMsi {
     uint32_t first_irq;
     uint32_t num;
-} spapr_pci_msi;
+} SpaprPciMsi;
 
-typedef struct spapr_pci_msi_mig {
+typedef struct SpaprPciMsiMig {
     uint32_t key;
-    spapr_pci_msi value;
-} spapr_pci_msi_mig;
+    SpaprPciMsi value;
+} SpaprPciMsiMig;
+
+typedef struct SpaprPciLsi {
+    uint32_t irq;
+} SpaprPciLsi;
+
+typedef struct SpaprPhbPciNvGpuConfig SpaprPhbPciNvGpuConfig;
 
 struct SpaprPhbState {
     PCIHostState parent_obj;
@@ -63,14 +69,12 @@ struct SpaprPhbState {
     AddressSpace iommu_as;
     MemoryRegion iommu_root;
 
-    struct spapr_pci_lsi {
-        uint32_t irq;
-    } lsi_table[PCI_NUM_PINS];
+    SpaprPciLsi lsi_table[PCI_NUM_PINS];
 
     GHashTable *msi;
     /* Temporary cache for migration purposes */
     int32_t msi_devs_num;
-    spapr_pci_msi_mig *msi_devs;
+    SpaprPciMsiMig *msi_devs;
 
     QLIST_ENTRY(SpaprPhbState) list;
 
@@ -89,7 +93,7 @@ struct SpaprPhbState {
     hwaddr mig_io_win_addr, mig_io_win_size;
     hwaddr nv2_gpa_win_addr;
     hwaddr nv2_atsd_win_addr;
-    struct spapr_phb_pci_nvgpu_config *nvgpus;
+    SpaprPhbPciNvGpuConfig *nvgpus;
 };
 
 #define SPAPR_PCI_MEM_WIN_BUS_OFFSET 0x80000000ULL
-- 
2.21.0



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

* [Qemu-devel] [PULL 19/19] spapr: Set compat mode in spapr_core_plug()
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (16 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 18/19] spapr/pci: Convert types to QEMU coding style David Gibson
@ 2019-08-29  6:08 ` David Gibson
  2019-09-04  8:17 ` [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 Peter Maydell
  18 siblings, 0 replies; 20+ messages in thread
From: David Gibson @ 2019-08-29  6:08 UTC (permalink / raw)
  To: peter.maydell; +Cc: lvivier, aik, groug, qemu-devel, qemu-ppc, David Gibson

From: Greg Kurz <groug@kaod.org>

A recent change in spapr_machine_reset() showed that resetting the compat
mode in spapr_machine_reset() for the boot vCPU and in spapr_cpu_reset()
for all other vCPUs was fragile. The fix was thus to reset the compat mode
for all vCPUs in spapr_machine_reset(), but we still have to propagate
it to hot-plugged CPUs. This is still performed from spapr_cpu_reset(),
hence resulting in ppc_set_compat() being called twice for every vCPU at
machine reset. Apart from wasting cycles, which isn't really an issue
during machine reset, this seems to indicate that spapr_cpu_reset() isn't
the best place to set the compat mode.

A natural candidate for CPU-hotplug specific code is spapr_core_plug().
Also, it sits in the same file as spapr_machine_reset() : this makes
it easier for someone who wants to know when the compat PVR is set.

Call ppc_set_compat() from there. This doesn't need to be done for
initial vCPUs since the compat PVR is 0 and spapr_machine_reset() sets
the appropriate value later. No need to do this on manually added vCPUS
on the destination QEMU during migration since the compat PVR is
part of the migrated vCPU state. Both conditions can be checked with
spapr_drc_hotplugged().

Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <156701285312.499757.7807417667750711711.stgit@bahia.lan>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr.c          | 24 ++++++++++++++++--------
 hw/ppc/spapr_cpu_core.c |  7 -------
 2 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 447fb5c4ea..ea56499b4b 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1758,12 +1758,6 @@ static void spapr_machine_reset(MachineState *machine)
         spapr_ovec_cleanup(spapr->ov5_cas);
         spapr->ov5_cas = spapr_ovec_new();
 
-        /*
-         * reset compat_pvr for all CPUs
-         * as qemu_devices_reset() is called before this,
-         * it can't be propagated by spapr_cpu_reset()
-         * from the first CPU to all the others
-         */
         ppc_set_compat_all(spapr->max_compat_pvr, &error_fatal);
     }
 
@@ -3841,6 +3835,7 @@ static void spapr_core_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
     CPUArchId *core_slot;
     int index;
     bool hotplugged = spapr_drc_hotplugged(dev);
+    int i;
 
     core_slot = spapr_find_cpu_slot(MACHINE(hotplug_dev), cc->core_id, &index);
     if (!core_slot) {
@@ -3874,13 +3869,26 @@ static void spapr_core_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
     core_slot->cpu = OBJECT(dev);
 
     if (smc->pre_2_10_has_unused_icps) {
-        int i;
-
         for (i = 0; i < cc->nr_threads; i++) {
             cs = CPU(core->threads[i]);
             pre_2_10_vmstate_unregister_dummy_icp(cs->cpu_index);
         }
     }
+
+    /*
+     * Set compatibility mode to match the boot CPU, which was either set
+     * by the machine reset code or by CAS.
+     */
+    if (hotplugged) {
+        for (i = 0; i < cc->nr_threads; i++) {
+            ppc_set_compat(core->threads[i], POWERPC_CPU(first_cpu)->compat_pvr,
+                           &local_err);
+            if (local_err) {
+                error_propagate(errp, local_err);
+                return;
+            }
+        }
+    }
 }
 
 static void spapr_core_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index 45e2f2747f..1d93de8161 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -41,13 +41,6 @@ static void spapr_cpu_reset(void *opaque)
      * using an RTAS call */
     cs->halted = 1;
 
-    /* Set compatibility mode to match the boot CPU, which was either set
-     * by the machine reset code or by CAS. This should never fail.
-     * At startup the value is already set for all the CPUs
-     * but we need this when we hotplug a new CPU
-     */
-    ppc_set_compat(cpu, POWERPC_CPU(first_cpu)->compat_pvr, &error_abort);
-
     env->spr[SPR_HIOR] = 0;
 
     lpcr = env->spr[SPR_LPCR];
-- 
2.21.0



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

* Re: [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829
  2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
                   ` (17 preceding siblings ...)
  2019-08-29  6:08 ` [Qemu-devel] [PULL 19/19] spapr: Set compat mode in spapr_core_plug() David Gibson
@ 2019-09-04  8:17 ` Peter Maydell
  18 siblings, 0 replies; 20+ messages in thread
From: Peter Maydell @ 2019-09-04  8:17 UTC (permalink / raw)
  To: David Gibson
  Cc: Alexey Kardashevskiy, Laurent Vivier, qemu-ppc, Greg Kurz,
	QEMU Developers

On Thu, 29 Aug 2019 at 07:08, David Gibson <david@gibson.dropbear.id.au> wrote:
>
> The following changes since commit 23919ddfd56135cad3cb468a8f54d5a595f024f4:
>
>   Merge remote-tracking branch 'remotes/aperard/tags/pull-xen-20190827' into staging (2019-08-27 15:52:36 +0100)
>
> are available in the Git repository at:
>
>   git://github.com/dgibson/qemu.git tags/ppc-for-4.2-20190829
>
> for you to fetch changes up to b1e815674343a171e51ce447495957e289091e9f:
>
>   spapr: Set compat mode in spapr_core_plug() (2019-08-29 09:46:07 +1000)
>
> ----------------------------------------------------------------
> ppc patch queue 2018-08-29
>
> Another pull request for ppc-for-4.2.  Includes
>
>   * Several powernv patches which were pulled last minute from the
>     last PULL, now that some problems with them have been sorted out
>   * A fix for -no-reboot which has been broken since the
>     pseries-rhel4.1.0 machine type
>   * Add some host threads information which AIX guests will need to
>     properly scale the PURR and SPURR
>   * Change behaviour to match x86 when unplugging function 0 of a
>     multifunction PCI device
>   * A number of TCG fixes in FPU emulation
>
> And a handful of other assorted fixes and cleanups.
>


Applied, thanks.

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

-- PMM


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

end of thread, other threads:[~2019-09-04  8:18 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-29  6:08 [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 01/19] ppc/pnv: Set default ram size to 1.75GB David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 03/19] ppc/pnv: add more dummy XSCOM addresses for the P9 CAPP David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 04/19] ppc/pnv: Generate phandle for the "interrupt-parent" property David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 05/19] ppc/pnv: Introduce PowerNV machines with fixed CPU models David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 06/19] tests/boot-serial-test: add support for all the PowerNV machines David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 07/19] ppc: Fix xsmaddmdp and friends David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 08/19] ppc: Fix xscvdpspn for SNAN David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 09/19] spapr_pci: remove all child functions in function zero unplug David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 10/19] pseries: Fix compat_pvr on reset David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 11/19] target/ppc: Set float_tininess_before_rounding at cpu reset David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 12/19] target/ppc: Fix do_float_check_status vs inexact David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 13/19] target/ppc: Refactor emulation of vmrgew and vmrgow instructions David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 14/19] pseries: Update SLOF firmware image David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 15/19] powerpc/spapr: Add host threads parameter to ibm, get_system_parameter David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 16/19] spapr: Use SHUTDOWN_CAUSE_SUBSYSTEM_RESET for CAS reboots David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 17/19] spapr_pci: Advertise BAR reallocation capability David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 18/19] spapr/pci: Convert types to QEMU coding style David Gibson
2019-08-29  6:08 ` [Qemu-devel] [PULL 19/19] spapr: Set compat mode in spapr_core_plug() David Gibson
2019-09-04  8:17 ` [Qemu-devel] [PULL 00/19] ppc-for-4.2 queue 20190829 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).