ppc patch queue for 2.5 2015-12-04
This contains some last minute QOM behaviour fixes from Markus
Armbruster.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJWYTYqAAoJEGw4ysog2bOSJUAQAKFxBs0QMmW/1NWlFAhHqbFN
yMaG996TiHScVORI0GF7HdxCywNuVz+sNgPiWIxQRd6Lpp0ENZfMyZOvfLjCrjUW
GAIWwaBrY+ysGpiUdSuyIwuf+OVOILpnWlCX8m9D0qV9nfiVMCfgt/aG88g5q9Ow
MGaJgBrSSiHITtaBoVJfHvwryLQMv605PZrU9s7xX4qFvMgvGoIKvTi1Ar+eaKw2
xURBu7SKW5Iu6GhZCuwt3tu4AilJsasPVKFbCNzcol+Rv8yBInrE6TbRvj92kgDt
8leqLQQAdNgXx/ZUx/eZ5SNo0Y1AjjjECsRwmf3pZbeErQ8Rd24tTplPDwEaRDbW
maDAUEcymGa4FVYHSvBD51BwWzaPxiOZE6dd+id1QRjrINNJLt8NkvUobS6y5G0s
o66F/0k83h8QnjS4UJOLPQ2moDm38cCpOHhDE86AyrIS6C6n39FYDaPDxOneR7fT
CyXJ5VfsH+DvRZWHcaSxceu4Nnk6QBaQnrAS0xbGLmqD2NOlP7OwGEyhWpUzHTav
ihom6ktASbt1BtSNvdcSnUnyN1a3vwrOalMapCqMnqVf2+/aVoeL4+RiVnDXsqqw
AvvS+MM/qeaVvb8r0bd3YO5yPlMCgP5pGhOog9A63yPOOWdHY6e+zgmefdI10SHw
rSsqkjAK6OuVOQFZqGrL
=SaYM
-----END PGP SIGNATURE-----
Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.5-20151204' into staging
ppc patch queue for 2.5 2015-12-04
This contains some last minute QOM behaviour fixes from Markus
Armbruster.
# gpg: Signature made Fri 04 Dec 2015 06:43:54 GMT 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.5-20151204:
spapr_drc: Change value of property "fdt" from null back to {}
spapr_drc: Make device "spapr-dr-connector" unavailable with -device
spapr_drc: Handle visitor errors properly
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
f33d046d23
1 changed files with 36 additions and 7 deletions
|
|
@ -254,10 +254,16 @@ static void prop_get_fdt(Object *obj, Visitor *v, void *opaque,
|
|||
const char *name, Error **errp)
|
||||
{
|
||||
sPAPRDRConnector *drc = SPAPR_DR_CONNECTOR(obj);
|
||||
Error *err = NULL;
|
||||
int fdt_offset_next, fdt_offset, fdt_depth;
|
||||
void *fdt;
|
||||
|
||||
if (!drc->fdt) {
|
||||
visit_start_struct(v, NULL, NULL, name, 0, &err);
|
||||
if (!err) {
|
||||
visit_end_struct(v, &err);
|
||||
}
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -276,24 +282,43 @@ static void prop_get_fdt(Object *obj, Visitor *v, void *opaque,
|
|||
case FDT_BEGIN_NODE:
|
||||
fdt_depth++;
|
||||
name = fdt_get_name(fdt, fdt_offset, &name_len);
|
||||
visit_start_struct(v, NULL, NULL, name, 0, NULL);
|
||||
visit_start_struct(v, NULL, NULL, name, 0, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case FDT_END_NODE:
|
||||
/* shouldn't ever see an FDT_END_NODE before FDT_BEGIN_NODE */
|
||||
g_assert(fdt_depth > 0);
|
||||
visit_end_struct(v, NULL);
|
||||
visit_end_struct(v, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
fdt_depth--;
|
||||
break;
|
||||
case FDT_PROP: {
|
||||
int i;
|
||||
prop = fdt_get_property_by_offset(fdt, fdt_offset, &prop_len);
|
||||
name = fdt_string(fdt, fdt32_to_cpu(prop->nameoff));
|
||||
visit_start_list(v, name, NULL);
|
||||
for (i = 0; i < prop_len; i++) {
|
||||
visit_type_uint8(v, (uint8_t *)&prop->data[i], NULL, NULL);
|
||||
|
||||
visit_start_list(v, name, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < prop_len; i++) {
|
||||
visit_type_uint8(v, (uint8_t *)&prop->data[i], NULL, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
}
|
||||
visit_end_list(v, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
visit_end_list(v, NULL);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
@ -574,6 +599,10 @@ static void spapr_dr_connector_class_init(ObjectClass *k, void *data)
|
|||
drck->attach = attach;
|
||||
drck->detach = detach;
|
||||
drck->release_pending = release_pending;
|
||||
/*
|
||||
* Reason: it crashes FIXME find and document the real reason
|
||||
*/
|
||||
dk->cannot_instantiate_with_device_add_yet = true;
|
||||
}
|
||||
|
||||
static const TypeInfo spapr_dr_connector_info = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue