blob: 23e973477f68ac540f2ea9966ce6909f7ae161e2 [file] [log] [blame]
/* 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();
}