ppc patch queue 2017-07-25

Last pull request for the 2.10 hard freeze, and correspondingly small.
 There are a handful of bugfixes here plus an update for the "pseries"
 guest firmware (SLOF).
 
 This is later than ideal for a guest firmware update.  However, this
 does include a number of fixes in that guest firmware, so I think it's
 worth the risk of squeezing this in just before the hard freeze.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEdfRlhq5hpmzETofcbDjKyiDZs5IFAll22nIACgkQbDjKyiDZ
 s5K5zg//S8KovwKO7CunPQn/uUjqqx8zqGOogIcYIH8st2g2GzKPBF4yMtWH30Ik
 ZterHQe5sePOLZQ0YPqd4gRyC+YYtG5S98mOEIKi/29UFjmMMAGpzDPy7X2miBN+
 Z6u93aZloNwAQ3YN9chK63N3y0fQbs6K7kUNVnK4pVq3koM2B4N1QzrECFef0u6y
 AAdLgLZcp3n6li29cRDBRccWbRmAfMDg3HzjGDUg6X/Y41v472T9MMn+rXwJ7Vg7
 a9rfZjIBrCE2Xbww2SustlmgMG7PjYC2LafUqkzpmOT2z4XibV5xLl5gdHByaqX7
 XAVyqs1PbUD3p1okIOX0VV7xxWIO8NJI+c63oXEqHFJEWCt4TYRSH9oZSFxT1nOd
 Ioj19zjP6V51Jb3bLm7E88/hQdLPHLhp7hD2NVonfuhKZ4bOZTdNVf8TZYMDH9s3
 MAEZSKXoDmHWX8JalI5JrYtbz4hlijCQGyk/9Albvuqa94zJsexfEVA+DQ5B65E9
 F8ylI769AQ2OS5d0Nh8jP4+xqfYDCZEUtUhUsFK+/VL1eg4Bz9zqmOowx3iHgNud
 BOYsc551z310JTHblqDAjMZpe9plwd443JLaLm4RyrVFoxlt25QXOxa+xrXqRr8R
 Sj+McOlFH4ZfM+zRAAGebcnj0AbR6GPSByczKY8wWivbtDZ0DWs=
 =nXHc
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.10-20170725' into staging

ppc patch queue 2017-07-25

Last pull request for the 2.10 hard freeze, and correspondingly small.
There are a handful of bugfixes here plus an update for the "pseries"
guest firmware (SLOF).

This is later than ideal for a guest firmware update.  However, this
does include a number of fixes in that guest firmware, so I think it's
worth the risk of squeezing this in just before the hard freeze.

# gpg: Signature made Tue 25 Jul 2017 06:43:14 BST
# gpg:                using RSA key 0x6C38CACA20D9B392
# gpg: Good signature from "David Gibson <david@gibson.dropbear.id.au>"
# gpg:                 aka "David Gibson (Red Hat) <dgibson@redhat.com>"
# gpg:                 aka "David Gibson (ozlabs.org) <dgibson@ozlabs.org>"
# gpg:                 aka "David Gibson (kernel.org) <dwg@kernel.org>"
# Primary key fingerprint: 75F4 6586 AE61 A66C C44E  87DC 6C38 CACA 20D9 B392

* remotes/dgibson/tags/ppc-for-2.10-20170725:
  pseries: Update SLOF firmware image
  spapr: Fix QEMU abort during memory unplug
  spapr/htab: fix savevm
  spapr_pci: Fix obsolete comment about MSIX encoding in addr/data

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2017-07-25 10:04:39 +01:00
commit 08cf4b5ed2
5 changed files with 26 additions and 22 deletions

View File

@ -1827,7 +1827,7 @@ static int htab_save_iterate(QEMUFile *f, void *opaque)
/* Iteration header */
if (!spapr->htab_shift) {
qemu_put_be32(f, -1);
return 0;
return 1;
} else {
qemu_put_be32(f, 0);
}
@ -2850,11 +2850,26 @@ static sPAPRDIMMState *spapr_pending_dimm_unplugs_find(sPAPRMachineState *s,
return dimm_state;
}
static void spapr_pending_dimm_unplugs_add(sPAPRMachineState *spapr,
sPAPRDIMMState *dimm_state)
static sPAPRDIMMState *spapr_pending_dimm_unplugs_add(sPAPRMachineState *spapr,
uint32_t nr_lmbs,
PCDIMMDevice *dimm)
{
g_assert(!spapr_pending_dimm_unplugs_find(spapr, dimm_state->dimm));
QTAILQ_INSERT_HEAD(&spapr->pending_dimm_unplugs, dimm_state, next);
sPAPRDIMMState *ds = NULL;
/*
* If this request is for a DIMM whose removal had failed earlier
* (due to guest's refusal to remove the LMBs), we would have this
* dimm already in the pending_dimm_unplugs list. In that
* case don't add again.
*/
ds = spapr_pending_dimm_unplugs_find(spapr, dimm);
if (!ds) {
ds = g_malloc0(sizeof(sPAPRDIMMState));
ds->nr_lmbs = nr_lmbs;
ds->dimm = dimm;
QTAILQ_INSERT_HEAD(&spapr->pending_dimm_unplugs, ds, next);
}
return ds;
}
static void spapr_pending_dimm_unplugs_remove(sPAPRMachineState *spapr,
@ -2875,7 +2890,6 @@ static sPAPRDIMMState *spapr_recover_pending_dimm_state(sPAPRMachineState *ms,
uint32_t avail_lmbs = 0;
uint64_t addr_start, addr;
int i;
sPAPRDIMMState *ds;
addr_start = object_property_get_int(OBJECT(dimm), PC_DIMM_ADDR_PROP,
&error_abort);
@ -2891,11 +2905,7 @@ static sPAPRDIMMState *spapr_recover_pending_dimm_state(sPAPRMachineState *ms,
addr += SPAPR_MEMORY_BLOCK_SIZE;
}
ds = g_malloc0(sizeof(sPAPRDIMMState));
ds->nr_lmbs = avail_lmbs;
ds->dimm = dimm;
spapr_pending_dimm_unplugs_add(ms, ds);
return ds;
return spapr_pending_dimm_unplugs_add(ms, avail_lmbs, dimm);
}
/* Callback to be called during DRC release. */
@ -2911,6 +2921,7 @@ void spapr_lmb_release(DeviceState *dev)
* during the unplug process. In this case recover it. */
if (ds == NULL) {
ds = spapr_recover_pending_dimm_state(spapr, PC_DIMM(dev));
g_assert(ds);
/* The DRC being examined by the caller at least must be counted */
g_assert(ds->nr_lmbs);
}
@ -2942,18 +2953,13 @@ static void spapr_memory_unplug_request(HotplugHandler *hotplug_dev,
uint64_t addr_start, addr;
int i;
sPAPRDRConnector *drc;
sPAPRDIMMState *ds;
addr_start = object_property_get_uint(OBJECT(dimm), PC_DIMM_ADDR_PROP,
&local_err);
if (local_err) {
goto out;
}
ds = g_malloc0(sizeof(sPAPRDIMMState));
ds->nr_lmbs = nr_lmbs;
ds->dimm = dimm;
spapr_pending_dimm_unplugs_add(spapr, ds);
spapr_pending_dimm_unplugs_add(spapr, nr_lmbs, dimm);
addr = addr_start;
for (i = 0; i < nr_lmbs; i++) {

View File

@ -723,9 +723,7 @@ static PCIINTxRoute spapr_route_intx_pin_to_irq(void *opaque, int pin)
/*
* MSI/MSIX memory region implementation.
* The handler handles both MSI and MSIX.
* For MSI-X, the vector number is encoded as a part of the address,
* data is set to 0.
* For MSI, the vector number is encoded in least bits in data.
* The vector number is encoded in least bits in data.
*/
static void spapr_msi_write(void *opaque, hwaddr addr,
uint64_t data, unsigned size)

View File

@ -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-20170303.
built from git tag qemu-slof-20170724.
- sgabios (the Serial Graphics Adapter option ROM) provides a means for
legacy x86 software to communicate with an attached serial console as

Binary file not shown.

@ -1 +1 @@
Subproject commit 834113a1c67d6fb53dea153c3313d182238f2d36
Subproject commit 89f519f09bf850918b60526e50409afb663418aa