Some devices could be initialized in the instance_init handler but not
realized for configuration reasons. Nodes should not be added in the DT
for such devices.
Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
hw/ppc/pnv_xscom.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c
index 006d87e970d9..6d3745a49e50 100644
--- a/hw/ppc/pnv_xscom.c
+++ b/hw/ppc/pnv_xscom.c
@@ -272,7 +272,10 @@ static int xscom_dt_child(Object *child, void *opaque)
PnvXScomInterface *xd = PNV_XSCOM_INTERFACE(child);
PnvXScomInterfaceClass *xc = PNV_XSCOM_INTERFACE_GET_CLASS(xd);
- if (xc->dt_xscom) {
+ /*
+ * Only "realized" devices should be configured in the DT
+ */
+ if (xc->dt_xscom && DEVICE(child)->realized) {
_FDT((xc->dt_xscom(xd, args->fdt, args->xscom_offset)));
}
}
--
2.21.0
On Tue, 10 Dec 2019 14:58:45 +0100
Cédric Le Goater <clg@kaod.org> wrote:
> Some devices could be initialized in the instance_init handler but not
> realized for configuration reasons. Nodes should not be added in the DT
> for such devices.
>
Do you have examples of such devices to share ?
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> ---
> hw/ppc/pnv_xscom.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c
> index 006d87e970d9..6d3745a49e50 100644
> --- a/hw/ppc/pnv_xscom.c
> +++ b/hw/ppc/pnv_xscom.c
> @@ -272,7 +272,10 @@ static int xscom_dt_child(Object *child, void *opaque)
> PnvXScomInterface *xd = PNV_XSCOM_INTERFACE(child);
> PnvXScomInterfaceClass *xc = PNV_XSCOM_INTERFACE_GET_CLASS(xd);
>
> - if (xc->dt_xscom) {
> + /*
> + * Only "realized" devices should be configured in the DT
> + */
> + if (xc->dt_xscom && DEVICE(child)->realized) {
> _FDT((xc->dt_xscom(xd, args->fdt, args->xscom_offset)));
> }
> }
On 10/12/2019 17:53, Greg Kurz wrote:
> On Tue, 10 Dec 2019 14:58:45 +0100
> Cédric Le Goater <clg@kaod.org> wrote:
>
>> Some devices could be initialized in the instance_init handler but not
>> realized for configuration reasons. Nodes should not be added in the DT
>> for such devices.
>>
>
> Do you have examples of such devices to share ?
PHB4 again.
C.
>
>> Signed-off-by: Cédric Le Goater <clg@kaod.org>
>> ---
>> hw/ppc/pnv_xscom.c | 5 ++++-
>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c
>> index 006d87e970d9..6d3745a49e50 100644
>> --- a/hw/ppc/pnv_xscom.c
>> +++ b/hw/ppc/pnv_xscom.c
>> @@ -272,7 +272,10 @@ static int xscom_dt_child(Object *child, void *opaque)
>> PnvXScomInterface *xd = PNV_XSCOM_INTERFACE(child);
>> PnvXScomInterfaceClass *xc = PNV_XSCOM_INTERFACE_GET_CLASS(xd);
>>
>> - if (xc->dt_xscom) {
>> + /*
>> + * Only "realized" devices should be configured in the DT
>> + */
>> + if (xc->dt_xscom && DEVICE(child)->realized) {
>> _FDT((xc->dt_xscom(xd, args->fdt, args->xscom_offset)));
>> }
>> }
>
On Tue, 10 Dec 2019 14:58:45 +0100
Cédric Le Goater <clg@kaod.org> wrote:
> Some devices could be initialized in the instance_init handler but not
> realized for configuration reasons. Nodes should not be added in the DT
> for such devices.
>
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> ---
Reviewed-by: Greg Kurz <groug@kaod.org>
> hw/ppc/pnv_xscom.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c
> index 006d87e970d9..6d3745a49e50 100644
> --- a/hw/ppc/pnv_xscom.c
> +++ b/hw/ppc/pnv_xscom.c
> @@ -272,7 +272,10 @@ static int xscom_dt_child(Object *child, void *opaque)
> PnvXScomInterface *xd = PNV_XSCOM_INTERFACE(child);
> PnvXScomInterfaceClass *xc = PNV_XSCOM_INTERFACE_GET_CLASS(xd);
>
> - if (xc->dt_xscom) {
> + /*
> + * Only "realized" devices should be configured in the DT
> + */
> + if (xc->dt_xscom && DEVICE(child)->realized) {
> _FDT((xc->dt_xscom(xd, args->fdt, args->xscom_offset)));
> }
> }
© 2016 - 2026 Red Hat, Inc.