Hi, On 1/13/20 6:21 PM, Andrew Jones wrote: > On Fri, Jan 10, 2020 at 03:54:02PM +0100, Eric Auger wrote: >> Add helper routines to parse and set up BASER registers. >> Add a new test dedicated to BASER<n> accesses. >> >> Signed-off-by: Eric Auger <eric.auger@xxxxxxxxxx> >> >> --- >> >> v2 -> v3: >> - remove everything related to memory attributes >> - s/dev_baser/coll_baser/ in report_info >> - add extra line >> - removed index filed in its_baser >> --- >> arm/gic.c | 21 ++++++++++- >> arm/unittests.cfg | 6 +++ >> lib/arm/asm/gic-v3-its.h | 14 +++++++ >> lib/arm/gic-v3-its.c | 80 ++++++++++++++++++++++++++++++++++++++++ >> 4 files changed, 120 insertions(+), 1 deletion(-) >> >> diff --git a/arm/gic.c b/arm/gic.c >> index adeb981..3597ac3 100644 >> --- a/arm/gic.c >> +++ b/arm/gic.c >> @@ -531,11 +531,26 @@ static void test_its_introspection(void) >> typer->collid_bits); >> report(typer->eventid_bits && typer->deviceid_bits && >> typer->collid_bits, "ID spaces"); >> - report(!typer->hw_collections, "collections only in ext memory"); >> report_info("Target address format %s", >> typer->pta ? "Redist basse address" : "PE #"); >> } >> >> +static void test_its_baser(void) >> +{ >> + struct its_baser *dev_baser, *coll_baser; >> + >> + if (!gicv3_its_base()) { >> + report_skip("No ITS, skip ..."); >> + return; >> + } >> + >> + dev_baser = its_lookup_baser(GITS_BASER_TYPE_DEVICE); >> + coll_baser = its_lookup_baser(GITS_BASER_TYPE_COLLECTION); >> + report(dev_baser && coll_baser, "detect device and collection BASER"); >> + report_info("device baser entry_size = 0x%x", dev_baser->esz); >> + report_info("collection baser entry_size = 0x%x", coll_baser->esz); >> +} >> + >> int main(int argc, char **argv) >> { >> if (!gic_init()) { >> @@ -571,6 +586,10 @@ int main(int argc, char **argv) >> report_prefix_push(argv[1]); >> test_its_introspection(); >> report_prefix_pop(); >> + } else if (strcmp(argv[1], "its-baser") == 0) { >> + report_prefix_push(argv[1]); >> + test_its_baser(); >> + report_prefix_pop(); >> } else { >> report_abort("Unknown subtest '%s'", argv[1]); >> } >> diff --git a/arm/unittests.cfg b/arm/unittests.cfg >> index bd20460..2234a0f 100644 >> --- a/arm/unittests.cfg >> +++ b/arm/unittests.cfg >> @@ -128,6 +128,12 @@ smp = $MAX_SMP >> extra_params = -machine gic-version=3 -append 'its-introspection' >> groups = its >> >> +[its-baser] >> +file = gic.flat >> +smp = $MAX_SMP >> +extra_params = -machine gic-version=3 -append 'its-baser' >> +groups = its > > Do these tests need to be run separately from the its-introspection tests > for some reason? If not, then I'd combine them. Not really. To me it is easier to debug and analyze when the fail though. I will merge both. Thanks Eric > > Thanks, > drew >