Messages in this thread Patch in this message | | | Date | Wed, 6 Oct 2010 23:08:07 -0400 | From | Don Zickus <> | Subject | [RFC] arch generic way to trigger unknown NMIs |
| |
Hi,
I was trying to put some automation test scripts together and was looking for an arch neutral way to generate an unknown NMI. I know some arches do not support NMI. Any way I wanted to add the code to the lkdtm module, so I could more easily generate unknown NMIs without hacking up the code.
For x86, I have been using:
diff --git a/drivers/misc/lkdtm.c b/drivers/misc/lkdtm.c index ef34de7..c685242 100644 --- a/drivers/misc/lkdtm.c +++ b/drivers/misc/lkdtm.c @@ -43,6 +43,7 @@ #include <linux/slab.h> #include <scsi/scsi_cmnd.h> #include <linux/debugfs.h> +#include <asm/apic.h> #ifdef CONFIG_IDE #include <linux/ide.h> @@ -78,6 +79,7 @@ enum ctype { SOFTLOCKUP, HARDLOCKUP, HUNG_TASK, + NMI, }; static char* cp_name[] = { @@ -105,6 +107,7 @@ static char* cp_type[] = { "SOFTLOCKUP", "HARDLOCKUP", "HUNG_TASK", + "NMI", }; static struct jprobe lkdtm; @@ -340,6 +343,9 @@ static void lkdtm_do_action(enum ctype which) set_current_state(TASK_UNINTERRUPTIBLE); schedule(); break; + case NMI: + apic->send_IPI_allbutself(NMI_VECTOR); + break; case NONE: default: break; Anyone have any thoughts? Maybe there is an easier way?
Thanks, Don
| |