Use per-CPU flags and callbacks for Program and External interrupts instead of global variables. This allows for more accurate error handling; a CPU waiting for an interrupt will not have it "stolen" by a different CPU that was not supposed to wait for one, and now two CPUs can wait for interrupts at the same time. Also fix skey.c to be compatible with the new interrupt handling. Add some utility functions to manipulate bits in the PSW mask, to improve readability. v3->v4 * re-introduce ext_cleanup_func * re-introduce psw_mask_set_and_clear_bits * cleanup functions now take a pointer to the stack frame v2->v3 * improve commit messages and fix some comments * remove unused psw_mask_set_clear_bits * remove ext_cleanup_func from struct cpu * minor code style changes Claudio Imbrenda (3): lib: s390x: add functions to set and clear PSW bits s390x: skey.c: rework the interrupt handler lib: s390x: better smp interrupt checks lib/s390x/asm/arch_def.h | 75 ++++++++++++++++++++++++++++++++++---- lib/s390x/asm/interrupt.h | 3 +- lib/s390x/asm/pgtable.h | 2 - lib/s390x/smp.h | 8 +--- lib/s390x/interrupt.c | 77 +++++++++++++++++++++++++++++++-------- lib/s390x/mmu.c | 14 +------ lib/s390x/sclp.c | 7 +--- lib/s390x/smp.c | 11 ++++++ s390x/diag288.c | 6 +-- s390x/selftest.c | 4 +- s390x/skey.c | 23 ++++-------- s390x/skrf.c | 14 ++----- s390x/smp.c | 18 ++------- 13 files changed, 163 insertions(+), 99 deletions(-) -- 2.36.1