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 - 2026 Red Hat, Inc.