ppc patch queue for 2016-04-26 (last minute qemu-2.6 fix)
This just has one, last-minute, fix for a serious regression of memory hotplug. Patch author's comment: Really sorry for the way last-minute fix, but without this memory hotplug is totally broken :( Hoping to get this in for Wednesday's RC4, which I think will be the final before release. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJXHtfkAAoJEGw4ysog2bOSt/AP/jfZJvt4zjGAZ4BqVpyISLhM n/hPZNglmcvg+YmjOrH/5G7PeX+r6Bf2gyrBjL06sWDSff1FdiBySiJQec6RlEwo hq+EBaUWMeWS7Fg/C3evNvg2WGvSDs8KjRKWA76pm8pu+110cxnrRUybIRbbHqaI 3vxR5Gdewmbvp5VYQgr5e/BSMac7wTT+Us6/Cjr2n5q56e2jjLryM8zMiyqMtP+S 7XdCqcowXv4dQsaqwLxS0Ata8f2ykrjtp9qADErbULZtEf8cAf8zvTR3ElXtnywq pEgxbKJeYQwGScudWb9lzwGRRGTMpM2zLbIuBKjQE2E77yQK0+hsq3FkH6OdipgT T8K5gU3p3AFuksZ5/+COVACC364Hry4OrYjTvGDXvsXXfWablrlETqoNtaj5A7Uz cvjcNEpja88B+dDxT/bt8Ab8p5pTuo58uUUgT4gLIduzSJlgaJ2qzMvwF4cfIGcB 5wsKr36GY4jyw3UD0MbXAwDhwvKP9t1FUmhST4qLF0WvNjfM62jGgh1E2DaXKuwF +ndVkoaus9yxYgMKyuuI/hXH/M4qk6yuUeNj+E1qM1823XpXQgFW1hnvnPZkbf0f nqT1as59kltGhFrv7DVLd3ovYLSjK5XtLAq8NfhTjjEe8nQlzHhql9RRkXedPpLO GVwp6DA608M2krlS5TxK =zSL+ -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.6-20160426' into staging ppc patch queue for 2016-04-26 (last minute qemu-2.6 fix) This just has one, last-minute, fix for a serious regression of memory hotplug. Patch author's comment: Really sorry for the way last-minute fix, but without this memory hotplug is totally broken :( Hoping to get this in for Wednesday's RC4, which I think will be the final before release. # gpg: Signature made Tue 26 Apr 2016 03:52:20 BST using RSA key ID 20D9B392 # 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: WARNING: This key is not certified with sufficiently trusted signatures! # gpg: It is not certain that the signature belongs to the owner. # Primary key fingerprint: 75F4 6586 AE61 A66C C44E 87DC 6C38 CACA 20D9 B392 * remotes/dgibson/tags/ppc-for-2.6-20160426: spapr_drc: fix aborts during DRC-count based hotplug Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
61861eff69
|
@ -364,7 +364,17 @@ static void attach(sPAPRDRConnector *drc, DeviceState *d, void *fdt,
|
||||||
drc->fdt = fdt;
|
drc->fdt = fdt;
|
||||||
drc->fdt_start_offset = fdt_start_offset;
|
drc->fdt_start_offset = fdt_start_offset;
|
||||||
drc->configured = coldplug;
|
drc->configured = coldplug;
|
||||||
drc->signalled = coldplug;
|
/* 'logical' DR resources such as memory/cpus are in some cases treated
|
||||||
|
* as a pool of resources from which the guest is free to choose from
|
||||||
|
* based on only a count. for resources that can be assigned in this
|
||||||
|
* fashion, we must assume the resource is signalled immediately
|
||||||
|
* since a single hotplug request might make an arbitrary number of
|
||||||
|
* such attached resources available to the guest, as opposed to
|
||||||
|
* 'physical' DR resources such as PCI where each device/resource is
|
||||||
|
* signalled individually.
|
||||||
|
*/
|
||||||
|
drc->signalled = (drc->type != SPAPR_DR_CONNECTOR_TYPE_PCI)
|
||||||
|
? true : coldplug;
|
||||||
|
|
||||||
object_property_add_link(OBJECT(drc), "device",
|
object_property_add_link(OBJECT(drc), "device",
|
||||||
object_get_typename(OBJECT(drc->dev)),
|
object_get_typename(OBJECT(drc->dev)),
|
||||||
|
|
|
@ -442,6 +442,9 @@ static void spapr_hotplug_req_event(uint8_t hp_id, uint8_t hp_action,
|
||||||
switch (drc_type) {
|
switch (drc_type) {
|
||||||
case SPAPR_DR_CONNECTOR_TYPE_PCI:
|
case SPAPR_DR_CONNECTOR_TYPE_PCI:
|
||||||
hp->hotplug_type = RTAS_LOG_V6_HP_TYPE_PCI;
|
hp->hotplug_type = RTAS_LOG_V6_HP_TYPE_PCI;
|
||||||
|
if (hp->hotplug_action == RTAS_LOG_V6_HP_ACTION_ADD) {
|
||||||
|
spapr_hotplug_set_signalled(drc);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SPAPR_DR_CONNECTOR_TYPE_LMB:
|
case SPAPR_DR_CONNECTOR_TYPE_LMB:
|
||||||
hp->hotplug_type = RTAS_LOG_V6_HP_TYPE_MEMORY;
|
hp->hotplug_type = RTAS_LOG_V6_HP_TYPE_MEMORY;
|
||||||
|
@ -462,10 +465,6 @@ static void spapr_hotplug_req_event(uint8_t hp_id, uint8_t hp_action,
|
||||||
|
|
||||||
rtas_event_log_queue(RTAS_LOG_TYPE_HOTPLUG, new_hp, true);
|
rtas_event_log_queue(RTAS_LOG_TYPE_HOTPLUG, new_hp, true);
|
||||||
|
|
||||||
if (hp->hotplug_action == RTAS_LOG_V6_HP_ACTION_ADD) {
|
|
||||||
spapr_hotplug_set_signalled(drc);
|
|
||||||
}
|
|
||||||
|
|
||||||
qemu_irq_pulse(xics_get_qirq(spapr->icp, spapr->check_exception_irq));
|
qemu_irq_pulse(xics_get_qirq(spapr->icp, spapr->check_exception_irq));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue