If a partial DT has a /gic node, but no references to it, dtc may omit
the phandle property. With the phandle property missing,
fdt_get_phandle() returns 0, leading Xen to generate a malformed domU
dtb due to invalid interrupt-parent phandle references. 0 is an invalid
phandle value. Add a zero check, and fall back to GUEST_PHANDLE_GIC.
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
xen/arch/arm/dom0less-build.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 09b65e44aed3..f328a044e9d3 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -554,7 +554,10 @@ static int __init domain_handle_dtb_bootmodule(struct domain *d,
*/
if ( dt_node_cmp(name, "gic") == 0 )
{
- kinfo->phandle_gic = fdt_get_phandle(pfdt, node_next);
+ uint32_t phandle_gic = fdt_get_phandle(pfdt, node_next);
+
+ if ( phandle_gic != 0 )
+ kinfo->phandle_gic = phandle_gic;
continue;
}
base-commit: 76a54badf890f56ff72644593c0fbc72138e13aa
--
2.47.0
On Fri, 11 Oct 2024, Stewart Hildebrand wrote: > If a partial DT has a /gic node, but no references to it, dtc may omit > the phandle property. With the phandle property missing, > fdt_get_phandle() returns 0, leading Xen to generate a malformed domU > dtb due to invalid interrupt-parent phandle references. 0 is an invalid > phandle value. Add a zero check, and fall back to GUEST_PHANDLE_GIC. > > Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> > --- > xen/arch/arm/dom0less-build.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c > index 09b65e44aed3..f328a044e9d3 100644 > --- a/xen/arch/arm/dom0less-build.c > +++ b/xen/arch/arm/dom0less-build.c > @@ -554,7 +554,10 @@ static int __init domain_handle_dtb_bootmodule(struct domain *d, > */ > if ( dt_node_cmp(name, "gic") == 0 ) > { > - kinfo->phandle_gic = fdt_get_phandle(pfdt, node_next); > + uint32_t phandle_gic = fdt_get_phandle(pfdt, node_next); > + > + if ( phandle_gic != 0 ) > + kinfo->phandle_gic = phandle_gic; > continue; > } > > > base-commit: 76a54badf890f56ff72644593c0fbc72138e13aa > -- > 2.47.0 >
Hi, On 11/10/2024 22:28, Stefano Stabellini wrote: > On Fri, 11 Oct 2024, Stewart Hildebrand wrote: >> If a partial DT has a /gic node, but no references to it, dtc may omit >> the phandle property. With the phandle property missing, >> fdt_get_phandle() returns 0, leading Xen to generate a malformed domU >> dtb due to invalid interrupt-parent phandle references. 0 is an invalid >> phandle value. Add a zero check, and fall back to GUEST_PHANDLE_GIC. >> >> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com> > > Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> This is now committed. Cheers, -- Julien Grall
© 2016 - 2024 Red Hat, Inc.