QMP: add inject-nmi qmp command
inject-nmi command injects an NMI on all CPUs of guest. It is only supported for x86 guest currently, it will returns "Unsupported" error for non-x86 guest. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
		
							parent
							
								
									4c5a1e4db7
								
							
						
					
					
						commit
						a404666457
					
				
							
								
								
									
										17
									
								
								monitor.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								monitor.c
									
									
									
									
									
								
							@ -2555,6 +2555,23 @@ static void do_inject_nmi(Monitor *mon, const QDict *qdict)
 | 
				
			|||||||
            break;
 | 
					            break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int do_inject_nmi_all(Monitor *mon, const QDict *qdict, QObject **ret_data)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    CPUState *env;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (env = first_cpu; env != NULL; env = env->next_cpu) {
 | 
				
			||||||
 | 
					        cpu_interrupt(env, CPU_INTERRUPT_NMI);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					static int do_inject_nmi_all(Monitor *mon, const QDict *qdict, QObject **ret_data)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    qerror_report(QERR_UNSUPPORTED);
 | 
				
			||||||
 | 
					    return -1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void do_info_status_print(Monitor *mon, const QObject *data)
 | 
					static void do_info_status_print(Monitor *mon, const QObject *data)
 | 
				
			||||||
 | 
				
			|||||||
@ -427,6 +427,33 @@ Example:
 | 
				
			|||||||
                            "filename": "/tmp/physical-mem-dump" } }
 | 
					                            "filename": "/tmp/physical-mem-dump" } }
 | 
				
			||||||
<- { "return": {} }
 | 
					<- { "return": {} }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EQMP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        .name       = "inject-nmi",
 | 
				
			||||||
 | 
					        .args_type  = "",
 | 
				
			||||||
 | 
					        .params     = "",
 | 
				
			||||||
 | 
					        .help       = "",
 | 
				
			||||||
 | 
					        .user_print = monitor_user_noop,
 | 
				
			||||||
 | 
					        .mhandler.cmd_new = do_inject_nmi_all,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SQMP
 | 
				
			||||||
 | 
					inject-nmi
 | 
				
			||||||
 | 
					----------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Inject an NMI on guest's CPUs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Arguments: None.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-> { "execute": "inject-nmi" }
 | 
				
			||||||
 | 
					<- { "return": {} }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Note: inject-nmi is only supported for x86 guest currently, it will
 | 
				
			||||||
 | 
					      returns "Unsupported" error for non-x86 guest.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EQMP
 | 
					EQMP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user