Goal of the series is to have a framwork to test Channel-Subsystem I/O with QEMU/KVM. To be able to support interrupt for CSS I/O and for SCLP we need to modify the interrupt framework to allow re-entrant interruptions. We add a registration for IRQ callbacks to the test programm to define its own interrupt handler. We need to do special work under interrupt like acknoledging the interrupt. Being working on PSW bits to allow I/O interrupt, we define new PSW bits in arch_def.h and use __ASSEMBLER__ define to be able to include this header in an assembler source file. This series presents four major tests: - Enumeration: The CSS is enumerated using the STSCH instruction recursively on all potentially existing channels. Keeping the first channel found as a reference for future use. Checks STSCH - Enable: If the enumeration succeeded the tests enables the reference channel with MSCH and verifies with STSCH that the channel is effectively enabled Checks MSCH - Sense: If the channel is enabled this test sends a SENSE_ID command to the reference channel, analysing the answer and expecting the Control unit type being 0xc0ca Checks SSCH(READ) and IO-IRQ - ping-pong: If the reference channel leads to the PONG device (0xc0ca), the test exchanges a string containing a 9 digit number with the PONG device and expecting this number to be incremented by the PONG device. Checks SSCH(WRITE) Pierre Morel (9): s390x: saving regs for interrupts s390x: Use PSW bits definitions in cstart s390x: interrupt registration s390x: export the clock get_clock_ms() utility s390x: Library resources for CSS tests s390x: css: stsch, enumeration test s390x: css: msch, enable test s390x: css: ssch/tsch with sense and interrupt s390x: css: ping pong lib/s390x/asm/arch_def.h | 16 +- lib/s390x/asm/time.h | 26 +++ lib/s390x/css.h | 273 ++++++++++++++++++++++++++++ lib/s390x/css_dump.c | 157 ++++++++++++++++ lib/s390x/interrupt.c | 23 ++- lib/s390x/interrupt.h | 7 + s390x/Makefile | 2 + s390x/css.c | 374 +++++++++++++++++++++++++++++++++++++++ s390x/cstart64.S | 40 ++++- s390x/intercept.c | 11 +- s390x/unittests.cfg | 4 + 11 files changed, 909 insertions(+), 24 deletions(-) create mode 100644 lib/s390x/asm/time.h create mode 100644 lib/s390x/css.h create mode 100644 lib/s390x/css_dump.c create mode 100644 lib/s390x/interrupt.h create mode 100644 s390x/css.c -- 2.17.0 Changelog: from v3 to v4 - add RB from David and Thomas for patchs (3) irq registrqtion and (4) clock export - rework the PSW bit definitions (Thomas) - Suppress undef DEBUG from css_dump (Thomas) - rework report() functions using new scheme (Thomas) - suppress un-necessary report_info() - more spelling corrections - add a loop around enable bit testing (Connie) - rework IRQ testing (Connie) - Test data addresses to be under 2G (Connie) from v2 to v3: - Rework spelling (Connie) - More descriptions (Connie) - use __ASSEMBLER__ preprocessing to keep bits definitions and C structures in the same file (David) - rename the new file clock.h as time.h (Janosch, David?) - use registration for the IO interruption (David, Thomas) - test the SCHIB to verify it has really be modified (Connie) - Lot of simplifications in the tests (Connie) from v1 to v2: - saving floating point registers (David, Janosh) - suppress unused PSW bits defintions (Janosh) - added Thomas reviewed-by - style and comments modifications (Connie, Janosh) - moved get_clock_ms() into headers and use it (Thomas) - separate header and library utility from tests - Suppress traces, separate tests, make better usage of reports