[PATCH v3 07/10] xen/arm: gate make_gicv3_domU_node with CONFIG_GICV3

Penny Zheng posted 10 patches 4 years, 2 months ago
There is a newer version of this series
[PATCH v3 07/10] xen/arm: gate make_gicv3_domU_node with CONFIG_GICV3
Posted by Penny Zheng 4 years, 2 months ago
This commit gates function make_gicv3_domU_node with CONFIG_GICV3, and
also adds ASSERT_UNREACHABLE to catch any misuse.

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
---
v3 changes:
- new commit
---
 xen/arch/arm/domain_build.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index c419a4b2cc..24f3edf069 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -2279,6 +2279,7 @@ static int __init make_gicv2_domU_node(struct kernel_info *kinfo)
     return res;
 }
 
+#ifdef CONFIG_GICV3
 static int __init make_gicv3_domU_node(struct kernel_info *kinfo)
 {
     void *fdt = kinfo->fdt;
@@ -2328,6 +2329,12 @@ static int __init make_gicv3_domU_node(struct kernel_info *kinfo)
 
     return res;
 }
+#else
+static int __init make_gicv3_domU_node(struct kernel_info *kinfo)
+{
+    ASSERT_UNREACHABLE();
+}
+#endif
 
 static int __init make_gic_domU_node(struct kernel_info *kinfo)
 {
-- 
2.25.1


Re: [PATCH v3 07/10] xen/arm: gate make_gicv3_domU_node with CONFIG_GICV3
Posted by Julien Grall 4 years, 2 months ago
Hi Penny,

On 16/11/2021 06:31, Penny Zheng wrote:
> This commit gates function make_gicv3_domU_node with CONFIG_GICV3, and
> also adds ASSERT_UNREACHABLE to catch any misuse.
> 
> Signed-off-by: Penny Zheng <penny.zheng@arm.com>
> ---
> v3 changes:
> - new commit
> ---
>   xen/arch/arm/domain_build.c | 7 +++++++
>   1 file changed, 7 insertions(+)
> 
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index c419a4b2cc..24f3edf069 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -2279,6 +2279,7 @@ static int __init make_gicv2_domU_node(struct kernel_info *kinfo)
>       return res;
>   }
>   
> +#ifdef CONFIG_GICV3
>   static int __init make_gicv3_domU_node(struct kernel_info *kinfo)
>   {
>       void *fdt = kinfo->fdt;
> @@ -2328,6 +2329,12 @@ static int __init make_gicv3_domU_node(struct kernel_info *kinfo)
>   
>       return res;
>   }
> +#else
> +static int __init make_gicv3_domU_node(struct kernel_info *kinfo)
> +{
> +    ASSERT_UNREACHABLE();

This will break compilation on at least prod build with CONFIG_GICV3=n. 
However...

> +}
> +#endif

... I would prefer to #ifdef the case (as you did in the previous 
version). That said, if you strongly prefer this approach then I am OK 
with it.

>   
>   static int __init make_gic_domU_node(struct kernel_info *kinfo)
>   {
> 

Cheers,

-- 
Julien Grall