On Thu, Aug 12 2021, Pierre Morel <pmorel@xxxxxxxxxxxxx> wrote: > In the previous version we did only check that one ISC dedicated by > Linux for I/O is working fine. > > However, there is no reason to prefer one ISC to another ISC, we are > free to take anyone. > > Let's check all possible ISC to verify that QEMU/KVM is really ISC > independent. It's probably a good idea to test for a non-standard isc. Not sure whether we need all of them, but it doesn't hurt. Do you also have plans for a test to verify the priority handling for the different iscs? > > Signed-off-by: Pierre Morel <pmorel@xxxxxxxxxxxxx> > --- > s390x/css.c | 25 +++++++++++++++++-------- > 1 file changed, 17 insertions(+), 8 deletions(-) > (...) > @@ -142,7 +143,6 @@ static void sense_id(void) > > static void css_init(void) > { > - assert(register_io_int_func(css_irq_io) == 0); > lowcore_ptr->io_int_param = 0; > > report(get_chsc_scsc(), "Store Channel Characteristics"); > @@ -351,11 +351,20 @@ int main(int argc, char *argv[]) > int i; > > report_prefix_push("Channel Subsystem"); > - enable_io_isc(0x80 >> IO_SCH_ISC); > - for (i = 0; tests[i].name; i++) { > - report_prefix_push(tests[i].name); > - tests[i].func(); > - report_prefix_pop(); > + > + for (io_isc = 0; io_isc < 8; io_isc++) { > + report_info("ISC: %d\n", io_isc); > + > + enable_io_isc(0x80 >> io_isc); > + assert(register_io_int_func(css_irq_io) == 0); Why are you registering/deregistering the irq handler multiple times? It should be the same, regardless of the isc? > + > + for (i = 0; tests[i].name; i++) { > + report_prefix_push(tests[i].name); > + tests[i].func(); > + report_prefix_pop(); > + } > + > + unregister_io_int_func(css_irq_io); > } > report_prefix_pop(); > >