/* SPDX-License-Identifier: GPL-2.0-only */ | |
/* | |
* Program interrupt loop test | |
* | |
* Copyright IBM Corp. 2022 | |
* | |
* Authors: | |
* Nico Boehr <nrb@linux.ibm.com> | |
*/ | |
#include <libcflat.h> | |
#include <bitops.h> | |
#include <asm/interrupt.h> | |
#include <asm/barrier.h> | |
#include <hardware.h> | |
int main(void) | |
{ | |
report_prefix_push("panic-loop-pgm"); | |
if (!host_is_qemu() || host_is_tcg()) { | |
report_skip("QEMU-KVM-only test"); | |
goto out; | |
} | |
expect_pgm_int(); | |
/* bit 12 set is invalid */ | |
lowcore.pgm_new_psw.mask = extract_psw_mask() | BIT(63 - 12); | |
mb(); | |
/* cause a pgm int */ | |
psw_mask_set_bits(BIT(63 - 12)); | |
report_fail("survived pgm int loop"); | |
out: | |
report_prefix_pop(); | |
return report_summary(); | |
} |