Hi, On 06/12/16 09:29, Andrew Jones wrote: > On Mon, Dec 05, 2016 at 10:46:36PM +0100, Eric Auger wrote: >> Add a new cpu_count field in gicv3_data indicating the >> number of redistributors. This will be useful for enumeration >> of their resources such as LPI pending tables. > > I'm fine with the additional state, but just curious, will it > ever be possible for gicv3.cpu_count != nr_cpus? If not you are in trouble, so that should in fact be one test. Which brings me to my comment ... >> >> Signed-off-by: Eric Auger <eric.auger@xxxxxxxxxx> >> --- >> lib/arm/asm/gic-v3.h | 1 + >> lib/arm/gic-v3.c | 2 ++ >> 2 files changed, 3 insertions(+) >> >> diff --git a/lib/arm/asm/gic-v3.h b/lib/arm/asm/gic-v3.h >> index ed330af..039b7c2 100644 >> --- a/lib/arm/asm/gic-v3.h >> +++ b/lib/arm/asm/gic-v3.h >> @@ -58,6 +58,7 @@ struct gicv3_data { >> void *dist_base; >> void *redist_base[NR_CPUS]; >> unsigned int irq_nr; >> + unsigned int cpu_count; Should that be called "nr_redists" or the like? Since this is what it counts in the code below. Later we can then compare this with nr_cpus to check for a match. Cheers, Andre. >> }; >> extern struct gicv3_data gicv3_data; >> >> diff --git a/lib/arm/gic-v3.c b/lib/arm/gic-v3.c >> index 6246221..9921f4d 100644 >> --- a/lib/arm/gic-v3.c >> +++ b/lib/arm/gic-v3.c >> @@ -12,12 +12,14 @@ void gicv3_set_redist_base(size_t stride) >> void *ptr = gicv3_data.redist_base[0]; >> u64 typer; >> >> + gicv3_data.cpu_count = 0; >> do { >> typer = gicv3_read_typer(ptr + GICR_TYPER); >> if ((typer >> 32) == aff) { >> gicv3_redist_base() = ptr; >> return; >> } >> + gicv3_data.cpu_count++; >> ptr += stride; /* skip RD_base, SGI_base, etc. */ >> } while (!(typer & GICR_TYPER_LAST)); >> >> -- >> 2.5.5 >> >> -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html