On Wed, 10 Feb 2021 14:20:13 +0100 Pierre Morel <pmorel@xxxxxxxxxxxxx> wrote: > We tests the update of the mesurement block format 0, the s/tests/test/ s/mesurement/measurement/ > mesurement block origin is calculated from the mbo argument > used by the SCHM instruction and the offset calculated using > the measurement block index of the SCHIB. > > Signed-off-by: Pierre Morel <pmorel@xxxxxxxxxxxxx> > --- > lib/s390x/css.h | 14 +++++++++++++ > s390x/css.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 69 insertions(+) > (...) > +static void test_schm_fmt0(void) > +{ > + struct measurement_block_format0 *mb0; > + > + report_prefix_push("Format 0"); > + > + mb0 = alloc_io_mem(sizeof(struct measurement_block_format0), 0); > + if (!mb0) { > + report_abort("measurement_block_format0 allocation failed"); > + goto end; > + } > + > + schm(NULL, 0); /* Clear previous MB address */ I think it would be better to clean out the mb after a particular test has run, so that the following tests can start with a clean slate. > + schm(mb0, SCHM_MBU); > > + /* Expect error for non aligned MB */ > + report_prefix_push("Unaligned MB index"); > + report_xfail(start_measure(0, 0x01, false), mb0->ssch_rsch_count != 0, > + "SSCH measured %d", mb0->ssch_rsch_count); > + report_prefix_pop(); > + > + memset(mb0, 0, sizeof(*mb0)); > + > + /* Expect success */ > + report_prefix_push("Valid MB address and index"); > + report(start_measure(0, 0, false) && > + mb0->ssch_rsch_count == SCHM_UPDATE_CNT, > + "SSCH measured %d", mb0->ssch_rsch_count); > + report_prefix_pop(); > + > + free_io_mem(mb0, sizeof(struct measurement_block_format0)); Before you free the memory, you really need to stop measurements again... even though nothing happens right now, because you're not doing I/O after this point. > +end: > + report_prefix_pop(); > } > > static struct { > @@ -202,6 +256,7 @@ static struct { > { "enable (msch)", test_enable }, > { "sense (ssch/tsch)", test_sense }, > { "measurement block (schm)", test_schm }, > + { "measurement block format0", test_schm_fmt0 }, > { NULL, NULL } > }; >