* [PATCH for-7.2 v2 1/2] ppc/pnv: consolidate pnv_parent_*_fixup() helpers
2022-08-19 9:47 [PATCH for-7.2 v2 0/2] ppc/pnv: fix root port QOM parenting Daniel Henrique Barboza
@ 2022-08-19 9:47 ` Daniel Henrique Barboza
2022-08-23 10:37 ` Frederic Barrat
2022-08-19 9:47 ` [PATCH for-7.2 v2 2/2] ppc/pnv: fix QOM parenting of user creatable root ports Daniel Henrique Barboza
2022-08-24 17:39 ` [PATCH for-7.2 v2 0/2] ppc/pnv: fix root port QOM parenting Daniel Henrique Barboza
2 siblings, 1 reply; 7+ messages in thread
From: Daniel Henrique Barboza @ 2022-08-19 9:47 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-ppc, clg, fbarrat, Daniel Henrique Barboza
We have 2 helpers that amends the QOM and parent bus of a given object,
repectively. These 2 helpers are called together, and not by accident.
Due to QOM internals, doing an object_unparent() will result in the
device being removed from its parent bus. This means that changing the
QOM parent requires reassigning the parent bus again.
Create a single helper called pnv_parent_fixup(), documenting some of
the QOM specifics that we're dealing with the unparenting/parenting
mechanics, and handle both the QOM and the parent bus assignment.
Next patch will make use of this function to handle a case where we need
to change the QOM parent while keeping the same parent bus assigned
beforehand.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
hw/pci-host/pnv_phb.c | 43 ++++++++++++++++++++++++++++---------------
1 file changed, 28 insertions(+), 15 deletions(-)
diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c
index 17d9960aa1..4ea33fb6ba 100644
--- a/hw/pci-host/pnv_phb.c
+++ b/hw/pci-host/pnv_phb.c
@@ -21,34 +21,45 @@
/*
- * Set the QOM parent of an object child. If the device state
- * associated with the child has an id, use it as QOM id. Otherwise
- * use object_typename[index] as QOM id.
+ * Set the QOM parent and parent bus of an object child. If the device
+ * state associated with the child has an id, use it as QOM id.
+ * Otherwise use object_typename[index] as QOM id.
+ *
+ * This helper does both operations at the same time because seting
+ * a new QOM child will erase the bus parent of the device. This happens
+ * because object_unparent() will call object_property_del_child(),
+ * which in turn calls the property release callback prop->release if
+ * it's defined. In our case this callback is set to
+ * object_finalize_child_property(), which was assigned during the
+ * first object_property_add_child() call. This callback will end up
+ * calling device_unparent(), and this function removes the device
+ * from its parent bus.
+ *
+ * The QOM and parent bus to be set aren´t necessarily related, so
+ * let's receive both as arguments.
*/
-static void pnv_parent_qom_fixup(Object *parent, Object *child, int index)
+static bool pnv_parent_fixup(Object *parent, BusState *parent_bus,
+ Object *child, int index,
+ Error **errp)
{
g_autofree char *default_id =
g_strdup_printf("%s[%d]", object_get_typename(child), index);
const char *dev_id = DEVICE(child)->id;
if (child->parent == parent) {
- return;
+ return true;
}
object_ref(child);
object_unparent(child);
object_property_add_child(parent, dev_id ? dev_id : default_id, child);
object_unref(child);
-}
-
-static void pnv_parent_bus_fixup(DeviceState *parent, DeviceState *child,
- Error **errp)
-{
- BusState *parent_bus = qdev_get_parent_bus(parent);
- if (!qdev_set_parent_bus(child, parent_bus, errp)) {
- return;
+ if (!qdev_set_parent_bus(DEVICE(child), parent_bus, errp)) {
+ return false;
}
+
+ return true;
}
/*
@@ -101,8 +112,10 @@ static bool pnv_phb_user_device_init(PnvPHB *phb, Error **errp)
* correctly the device tree. pnv_xscom_dt() needs every
* PHB to be a child of the chip to build the DT correctly.
*/
- pnv_parent_qom_fixup(parent, OBJECT(phb), phb->phb_id);
- pnv_parent_bus_fixup(DEVICE(chip), DEVICE(phb), errp);
+ if (!pnv_parent_fixup(parent, qdev_get_parent_bus(DEVICE(chip)),
+ OBJECT(phb), phb->phb_id, errp)) {
+ return false;
+ }
return true;
}
--
2.37.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH for-7.2 v2 1/2] ppc/pnv: consolidate pnv_parent_*_fixup() helpers
2022-08-19 9:47 ` [PATCH for-7.2 v2 1/2] ppc/pnv: consolidate pnv_parent_*_fixup() helpers Daniel Henrique Barboza
@ 2022-08-23 10:37 ` Frederic Barrat
0 siblings, 0 replies; 7+ messages in thread
From: Frederic Barrat @ 2022-08-23 10:37 UTC (permalink / raw)
To: Daniel Henrique Barboza, qemu-devel; +Cc: qemu-ppc, clg
On 19/08/2022 11:47, Daniel Henrique Barboza wrote:
> We have 2 helpers that amends the QOM and parent bus of a given object,
> repectively. These 2 helpers are called together, and not by accident.
> Due to QOM internals, doing an object_unparent() will result in the
> device being removed from its parent bus. This means that changing the
> QOM parent requires reassigning the parent bus again.
>
> Create a single helper called pnv_parent_fixup(), documenting some of
> the QOM specifics that we're dealing with the unparenting/parenting
> mechanics, and handle both the QOM and the parent bus assignment.
>
> Next patch will make use of this function to handle a case where we need
> to change the QOM parent while keeping the same parent bus assigned
> beforehand.
>
> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
> ---
Thanks for the explanation.
Reviewed-by: Frederic Barrat <fbarrat@linux.ibm.com>
> hw/pci-host/pnv_phb.c | 43 ++++++++++++++++++++++++++++---------------
> 1 file changed, 28 insertions(+), 15 deletions(-)
>
> diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c
> index 17d9960aa1..4ea33fb6ba 100644
> --- a/hw/pci-host/pnv_phb.c
> +++ b/hw/pci-host/pnv_phb.c
> @@ -21,34 +21,45 @@
>
>
> /*
> - * Set the QOM parent of an object child. If the device state
> - * associated with the child has an id, use it as QOM id. Otherwise
> - * use object_typename[index] as QOM id.
> + * Set the QOM parent and parent bus of an object child. If the device
> + * state associated with the child has an id, use it as QOM id.
> + * Otherwise use object_typename[index] as QOM id.
> + *
> + * This helper does both operations at the same time because seting
> + * a new QOM child will erase the bus parent of the device. This happens
> + * because object_unparent() will call object_property_del_child(),
> + * which in turn calls the property release callback prop->release if
> + * it's defined. In our case this callback is set to
> + * object_finalize_child_property(), which was assigned during the
> + * first object_property_add_child() call. This callback will end up
> + * calling device_unparent(), and this function removes the device
> + * from its parent bus.
> + *
> + * The QOM and parent bus to be set aren´t necessarily related, so
> + * let's receive both as arguments.
> */
> -static void pnv_parent_qom_fixup(Object *parent, Object *child, int index)
> +static bool pnv_parent_fixup(Object *parent, BusState *parent_bus,
> + Object *child, int index,
> + Error **errp)
> {
> g_autofree char *default_id =
> g_strdup_printf("%s[%d]", object_get_typename(child), index);
> const char *dev_id = DEVICE(child)->id;
>
> if (child->parent == parent) {
> - return;
> + return true;
> }
>
> object_ref(child);
> object_unparent(child);
> object_property_add_child(parent, dev_id ? dev_id : default_id, child);
> object_unref(child);
> -}
> -
> -static void pnv_parent_bus_fixup(DeviceState *parent, DeviceState *child,
> - Error **errp)
> -{
> - BusState *parent_bus = qdev_get_parent_bus(parent);
>
> - if (!qdev_set_parent_bus(child, parent_bus, errp)) {
> - return;
> + if (!qdev_set_parent_bus(DEVICE(child), parent_bus, errp)) {
> + return false;
> }
> +
> + return true;
> }
>
> /*
> @@ -101,8 +112,10 @@ static bool pnv_phb_user_device_init(PnvPHB *phb, Error **errp)
> * correctly the device tree. pnv_xscom_dt() needs every
> * PHB to be a child of the chip to build the DT correctly.
> */
> - pnv_parent_qom_fixup(parent, OBJECT(phb), phb->phb_id);
> - pnv_parent_bus_fixup(DEVICE(chip), DEVICE(phb), errp);
> + if (!pnv_parent_fixup(parent, qdev_get_parent_bus(DEVICE(chip)),
> + OBJECT(phb), phb->phb_id, errp)) {
> + return false;
> + }
>
> return true;
> }
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH for-7.2 v2 2/2] ppc/pnv: fix QOM parenting of user creatable root ports
2022-08-19 9:47 [PATCH for-7.2 v2 0/2] ppc/pnv: fix root port QOM parenting Daniel Henrique Barboza
2022-08-19 9:47 ` [PATCH for-7.2 v2 1/2] ppc/pnv: consolidate pnv_parent_*_fixup() helpers Daniel Henrique Barboza
@ 2022-08-19 9:47 ` Daniel Henrique Barboza
2022-08-19 11:31 ` Cédric Le Goater
2022-08-23 10:37 ` Frederic Barrat
2022-08-24 17:39 ` [PATCH for-7.2 v2 0/2] ppc/pnv: fix root port QOM parenting Daniel Henrique Barboza
2 siblings, 2 replies; 7+ messages in thread
From: Daniel Henrique Barboza @ 2022-08-19 9:47 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-ppc, clg, fbarrat, Daniel Henrique Barboza
User creatable root ports are being parented by the 'peripheral' or the
'peripheral-anon' container. This happens because this is the regular
QOM schema for sysbus devices that are added via the command line.
Let's make this QOM hierarchy similar to what we have with default root
ports, i.e. the root port must be parented by the pnv-root-bus. To do
that we change the qom and bus parent of the root port during
root_port_realize(). The realize() is shared by the default root port
code path, so we can remove the code inside pnv_phb_attach_root_port()
that was adding the root port as a child of the bus as well.
After all that, remove pnv_phb_attach_root_port() and create the root
port explictly in the 'default_enabled()' case of pnv_phb_realize().
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
hw/pci-host/pnv_phb.c | 47 ++++++++++++++++++-------------------------
1 file changed, 20 insertions(+), 27 deletions(-)
diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c
index 4ea33fb6ba..7b11f1e8dd 100644
--- a/hw/pci-host/pnv_phb.c
+++ b/hw/pci-host/pnv_phb.c
@@ -62,29 +62,6 @@ static bool pnv_parent_fixup(Object *parent, BusState *parent_bus,
return true;
}
-/*
- * Attach a root port device.
- *
- * 'index' will be used both as a PCIE slot value and to calculate
- * QOM id. 'chip_id' is going to be used as PCIE chassis for the
- * root port.
- */
-static void pnv_phb_attach_root_port(PCIHostState *pci)
-{
- PCIDevice *root = pci_new(PCI_DEVFN(0, 0), TYPE_PNV_PHB_ROOT_PORT);
- const char *dev_id = DEVICE(root)->id;
- g_autofree char *default_id = NULL;
- int index;
-
- index = object_property_get_int(OBJECT(pci->bus), "phb-id", &error_fatal);
- default_id = g_strdup_printf("%s[%d]", TYPE_PNV_PHB_ROOT_PORT, index);
-
- object_property_add_child(OBJECT(pci->bus), dev_id ? dev_id : default_id,
- OBJECT(root));
-
- pci_realize_and_unref(root, pci->bus, &error_fatal);
-}
-
/*
* User created devices won't have the initial setup that default
* devices have. This setup consists of assigning a parent device
@@ -180,11 +157,11 @@ static void pnv_phb_realize(DeviceState *dev, Error **errp)
pnv_phb4_bus_init(dev, PNV_PHB4(phb->backend));
}
- if (!defaults_enabled()) {
- return;
- }
+ if (defaults_enabled()) {
+ PCIDevice *root = pci_new(PCI_DEVFN(0, 0), TYPE_PNV_PHB_ROOT_PORT);
- pnv_phb_attach_root_port(pci);
+ pci_realize_and_unref(root, pci->bus, errp);
+ }
}
static const char *pnv_phb_root_bus_path(PCIHostState *host_bridge,
@@ -259,6 +236,11 @@ static void pnv_phb_root_port_realize(DeviceState *dev, Error **errp)
Error *local_err = NULL;
int chip_id, index;
+ /*
+ * 'index' will be used both as a PCIE slot value and to calculate
+ * QOM id. 'chip_id' is going to be used as PCIE chassis for the
+ * root port.
+ */
chip_id = object_property_get_int(OBJECT(bus), "chip-id", &error_fatal);
index = object_property_get_int(OBJECT(bus), "phb-id", &error_fatal);
@@ -266,6 +248,17 @@ static void pnv_phb_root_port_realize(DeviceState *dev, Error **errp)
qdev_prop_set_uint8(dev, "chassis", chip_id);
qdev_prop_set_uint16(dev, "slot", index);
+ /*
+ * User created root ports are QOM parented to one of
+ * the peripheral containers but it's already at the right
+ * parent bus. Change the QOM parent to be the same as the
+ * parent bus it's already assigned to.
+ */
+ if (!pnv_parent_fixup(OBJECT(bus), BUS(bus), OBJECT(dev),
+ index, errp)) {
+ return;
+ }
+
rpc->parent_realize(dev, &local_err);
if (local_err) {
error_propagate(errp, local_err);
--
2.37.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH for-7.2 v2 2/2] ppc/pnv: fix QOM parenting of user creatable root ports
2022-08-19 9:47 ` [PATCH for-7.2 v2 2/2] ppc/pnv: fix QOM parenting of user creatable root ports Daniel Henrique Barboza
@ 2022-08-19 11:31 ` Cédric Le Goater
2022-08-23 10:37 ` Frederic Barrat
1 sibling, 0 replies; 7+ messages in thread
From: Cédric Le Goater @ 2022-08-19 11:31 UTC (permalink / raw)
To: Daniel Henrique Barboza, qemu-devel; +Cc: qemu-ppc, fbarrat
On 8/19/22 11:47, Daniel Henrique Barboza wrote:
> User creatable root ports are being parented by the 'peripheral' or the
> 'peripheral-anon' container. This happens because this is the regular
> QOM schema for sysbus devices that are added via the command line.
>
> Let's make this QOM hierarchy similar to what we have with default root
> ports, i.e. the root port must be parented by the pnv-root-bus. To do
> that we change the qom and bus parent of the root port during
> root_port_realize(). The realize() is shared by the default root port
> code path, so we can remove the code inside pnv_phb_attach_root_port()
> that was adding the root port as a child of the bus as well.
>
> After all that, remove pnv_phb_attach_root_port() and create the root
> port explictly in the 'default_enabled()' case of pnv_phb_realize().
>
> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Thanks,
C.
> ---
> hw/pci-host/pnv_phb.c | 47 ++++++++++++++++++-------------------------
> 1 file changed, 20 insertions(+), 27 deletions(-)
>
> diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c
> index 4ea33fb6ba..7b11f1e8dd 100644
> --- a/hw/pci-host/pnv_phb.c
> +++ b/hw/pci-host/pnv_phb.c
> @@ -62,29 +62,6 @@ static bool pnv_parent_fixup(Object *parent, BusState *parent_bus,
> return true;
> }
>
> -/*
> - * Attach a root port device.
> - *
> - * 'index' will be used both as a PCIE slot value and to calculate
> - * QOM id. 'chip_id' is going to be used as PCIE chassis for the
> - * root port.
> - */
> -static void pnv_phb_attach_root_port(PCIHostState *pci)
> -{
> - PCIDevice *root = pci_new(PCI_DEVFN(0, 0), TYPE_PNV_PHB_ROOT_PORT);
> - const char *dev_id = DEVICE(root)->id;
> - g_autofree char *default_id = NULL;
> - int index;
> -
> - index = object_property_get_int(OBJECT(pci->bus), "phb-id", &error_fatal);
> - default_id = g_strdup_printf("%s[%d]", TYPE_PNV_PHB_ROOT_PORT, index);
> -
> - object_property_add_child(OBJECT(pci->bus), dev_id ? dev_id : default_id,
> - OBJECT(root));
> -
> - pci_realize_and_unref(root, pci->bus, &error_fatal);
> -}
> -
> /*
> * User created devices won't have the initial setup that default
> * devices have. This setup consists of assigning a parent device
> @@ -180,11 +157,11 @@ static void pnv_phb_realize(DeviceState *dev, Error **errp)
> pnv_phb4_bus_init(dev, PNV_PHB4(phb->backend));
> }
>
> - if (!defaults_enabled()) {
> - return;
> - }
> + if (defaults_enabled()) {
> + PCIDevice *root = pci_new(PCI_DEVFN(0, 0), TYPE_PNV_PHB_ROOT_PORT);
>
> - pnv_phb_attach_root_port(pci);
> + pci_realize_and_unref(root, pci->bus, errp);
> + }
> }
>
> static const char *pnv_phb_root_bus_path(PCIHostState *host_bridge,
> @@ -259,6 +236,11 @@ static void pnv_phb_root_port_realize(DeviceState *dev, Error **errp)
> Error *local_err = NULL;
> int chip_id, index;
>
> + /*
> + * 'index' will be used both as a PCIE slot value and to calculate
> + * QOM id. 'chip_id' is going to be used as PCIE chassis for the
> + * root port.
> + */
> chip_id = object_property_get_int(OBJECT(bus), "chip-id", &error_fatal);
> index = object_property_get_int(OBJECT(bus), "phb-id", &error_fatal);
>
> @@ -266,6 +248,17 @@ static void pnv_phb_root_port_realize(DeviceState *dev, Error **errp)
> qdev_prop_set_uint8(dev, "chassis", chip_id);
> qdev_prop_set_uint16(dev, "slot", index);
>
> + /*
> + * User created root ports are QOM parented to one of
> + * the peripheral containers but it's already at the right
> + * parent bus. Change the QOM parent to be the same as the
> + * parent bus it's already assigned to.
> + */
> + if (!pnv_parent_fixup(OBJECT(bus), BUS(bus), OBJECT(dev),
> + index, errp)) {
> + return;
> + }
> +
> rpc->parent_realize(dev, &local_err);
> if (local_err) {
> error_propagate(errp, local_err);
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH for-7.2 v2 2/2] ppc/pnv: fix QOM parenting of user creatable root ports
2022-08-19 9:47 ` [PATCH for-7.2 v2 2/2] ppc/pnv: fix QOM parenting of user creatable root ports Daniel Henrique Barboza
2022-08-19 11:31 ` Cédric Le Goater
@ 2022-08-23 10:37 ` Frederic Barrat
1 sibling, 0 replies; 7+ messages in thread
From: Frederic Barrat @ 2022-08-23 10:37 UTC (permalink / raw)
To: Daniel Henrique Barboza, qemu-devel; +Cc: qemu-ppc, clg
On 19/08/2022 11:47, Daniel Henrique Barboza wrote:
> User creatable root ports are being parented by the 'peripheral' or the
> 'peripheral-anon' container. This happens because this is the regular
> QOM schema for sysbus devices that are added via the command line.
>
> Let's make this QOM hierarchy similar to what we have with default root
> ports, i.e. the root port must be parented by the pnv-root-bus. To do
> that we change the qom and bus parent of the root port during
> root_port_realize(). The realize() is shared by the default root port
> code path, so we can remove the code inside pnv_phb_attach_root_port()
> that was adding the root port as a child of the bus as well.
>
> After all that, remove pnv_phb_attach_root_port() and create the root
> port explictly in the 'default_enabled()' case of pnv_phb_realize().
>
> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
> ---
Reviewed-by: Frederic Barrat <fbarrat@linux.ibm.com>
> hw/pci-host/pnv_phb.c | 47 ++++++++++++++++++-------------------------
> 1 file changed, 20 insertions(+), 27 deletions(-)
>
> diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c
> index 4ea33fb6ba..7b11f1e8dd 100644
> --- a/hw/pci-host/pnv_phb.c
> +++ b/hw/pci-host/pnv_phb.c
> @@ -62,29 +62,6 @@ static bool pnv_parent_fixup(Object *parent, BusState *parent_bus,
> return true;
> }
>
> -/*
> - * Attach a root port device.
> - *
> - * 'index' will be used both as a PCIE slot value and to calculate
> - * QOM id. 'chip_id' is going to be used as PCIE chassis for the
> - * root port.
> - */
> -static void pnv_phb_attach_root_port(PCIHostState *pci)
> -{
> - PCIDevice *root = pci_new(PCI_DEVFN(0, 0), TYPE_PNV_PHB_ROOT_PORT);
> - const char *dev_id = DEVICE(root)->id;
> - g_autofree char *default_id = NULL;
> - int index;
> -
> - index = object_property_get_int(OBJECT(pci->bus), "phb-id", &error_fatal);
> - default_id = g_strdup_printf("%s[%d]", TYPE_PNV_PHB_ROOT_PORT, index);
> -
> - object_property_add_child(OBJECT(pci->bus), dev_id ? dev_id : default_id,
> - OBJECT(root));
> -
> - pci_realize_and_unref(root, pci->bus, &error_fatal);
> -}
> -
> /*
> * User created devices won't have the initial setup that default
> * devices have. This setup consists of assigning a parent device
> @@ -180,11 +157,11 @@ static void pnv_phb_realize(DeviceState *dev, Error **errp)
> pnv_phb4_bus_init(dev, PNV_PHB4(phb->backend));
> }
>
> - if (!defaults_enabled()) {
> - return;
> - }
> + if (defaults_enabled()) {
> + PCIDevice *root = pci_new(PCI_DEVFN(0, 0), TYPE_PNV_PHB_ROOT_PORT);
>
> - pnv_phb_attach_root_port(pci);
> + pci_realize_and_unref(root, pci->bus, errp);
> + }
> }
>
> static const char *pnv_phb_root_bus_path(PCIHostState *host_bridge,
> @@ -259,6 +236,11 @@ static void pnv_phb_root_port_realize(DeviceState *dev, Error **errp)
> Error *local_err = NULL;
> int chip_id, index;
>
> + /*
> + * 'index' will be used both as a PCIE slot value and to calculate
> + * QOM id. 'chip_id' is going to be used as PCIE chassis for the
> + * root port.
> + */
> chip_id = object_property_get_int(OBJECT(bus), "chip-id", &error_fatal);
> index = object_property_get_int(OBJECT(bus), "phb-id", &error_fatal);
>
> @@ -266,6 +248,17 @@ static void pnv_phb_root_port_realize(DeviceState *dev, Error **errp)
> qdev_prop_set_uint8(dev, "chassis", chip_id);
> qdev_prop_set_uint16(dev, "slot", index);
>
> + /*
> + * User created root ports are QOM parented to one of
> + * the peripheral containers but it's already at the right
> + * parent bus. Change the QOM parent to be the same as the
> + * parent bus it's already assigned to.
> + */
> + if (!pnv_parent_fixup(OBJECT(bus), BUS(bus), OBJECT(dev),
> + index, errp)) {
> + return;
> + }
> +
> rpc->parent_realize(dev, &local_err);
> if (local_err) {
> error_propagate(errp, local_err);
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH for-7.2 v2 0/2] ppc/pnv: fix root port QOM parenting
2022-08-19 9:47 [PATCH for-7.2 v2 0/2] ppc/pnv: fix root port QOM parenting Daniel Henrique Barboza
2022-08-19 9:47 ` [PATCH for-7.2 v2 1/2] ppc/pnv: consolidate pnv_parent_*_fixup() helpers Daniel Henrique Barboza
2022-08-19 9:47 ` [PATCH for-7.2 v2 2/2] ppc/pnv: fix QOM parenting of user creatable root ports Daniel Henrique Barboza
@ 2022-08-24 17:39 ` Daniel Henrique Barboza
2 siblings, 0 replies; 7+ messages in thread
From: Daniel Henrique Barboza @ 2022-08-24 17:39 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-ppc, clg, fbarrat
Applied to gitlab.com/danielhb/qemu/tree/ppc-7.2. Thanks,
Daniel
On 8/19/22 06:47, Daniel Henrique Barboza wrote:
> Hi,
>
> Second version removes pnv_phb_attach_root_port() in patch 2 as
> suggested by Cedric.
>
> The patches are based on ppc-7.2:
>
> https://gitlab.com/danielhb/qemu/-/tree/ppc-7.2
>
> Changes from v1:
> - patch 2:
> - removed pnv_phb_attach_root_port() as suggested by Cedric
>
> v1 link: https://lists.gnu.org/archive/html/qemu-devel/2022-08/msg02811.html
>
> Daniel Henrique Barboza (2):
> ppc/pnv: consolidate pnv_parent_*_fixup() helpers
> ppc/pnv: fix QOM parenting of user creatable root ports
>
> hw/pci-host/pnv_phb.c | 88 +++++++++++++++++++++++--------------------
> 1 file changed, 47 insertions(+), 41 deletions(-)
>
^ permalink raw reply [flat|nested] 7+ messages in thread