From 4457f77bbcf12baf95abd39ba997595f578ace8e Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 9 Nov 2017 12:08:00 -0600 Subject: gicv3: Fix support for systems without secure interrupts Accessing the interrupt_props array only happens inside a loop over interrupt_props_num, so the GICv3 driver can cope with no secure interrupts. This allows us to relax the asserts that insists on a non-NULL interrupt_props pointer and at least one secure interrupt. This enables GICv3 platforms which have no need for a secure interrupt. This only covers the non-deprecated code paths. Change-Id: I49db291906512f56af065772f69acb281dfbdcfb Signed-off-by: Andre Przywara --- drivers/arm/gic/v3/gicv3_helpers.c | 6 ++---- drivers/arm/gic/v3/gicv3_main.c | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) (limited to 'drivers') diff --git a/drivers/arm/gic/v3/gicv3_helpers.c b/drivers/arm/gic/v3/gicv3_helpers.c index dee63f18..9fe6f17e 100644 --- a/drivers/arm/gic/v3/gicv3_helpers.c +++ b/drivers/arm/gic/v3/gicv3_helpers.c @@ -427,8 +427,7 @@ unsigned int gicv3_secure_spis_configure_props(uintptr_t gicd_base, unsigned int ctlr_enable = 0; /* Make sure there's a valid property array */ - assert(interrupt_props != NULL); - assert(interrupt_props_num > 0); + assert(interrupt_props_num > 0 ? interrupt_props != NULL : 1); for (i = 0; i < interrupt_props_num; i++) { current_prop = &interrupt_props[i]; @@ -550,8 +549,7 @@ unsigned int gicv3_secure_ppi_sgi_configure_props(uintptr_t gicr_base, unsigned int ctlr_enable = 0; /* Make sure there's a valid property array */ - assert(interrupt_props != NULL); - assert(interrupt_props_num > 0); + assert(interrupt_props_num > 0 ? interrupt_props != NULL : 1); for (i = 0; i < interrupt_props_num; i++) { current_prop = &interrupt_props[i]; diff --git a/drivers/arm/gic/v3/gicv3_main.c b/drivers/arm/gic/v3/gicv3_main.c index f4a3ef81..91a5a932 100644 --- a/drivers/arm/gic/v3/gicv3_main.c +++ b/drivers/arm/gic/v3/gicv3_main.c @@ -103,8 +103,8 @@ void gicv3_driver_init(const gicv3_driver_data_t *plat_driver_data) WARN("Please migrate to using interrupt_prop_t arrays\n"); } #else - assert(plat_driver_data->interrupt_props != NULL); - assert(plat_driver_data->interrupt_props_num > 0); + assert(plat_driver_data->interrupt_props_num > 0 ? + plat_driver_data->interrupt_props != NULL : 1); #endif /* Check for system register support */ -- cgit v1.2.3