On 10/16/2011 05:39 PM, Avi Kivity wrote: > On 10/14/2011 11:03 AM, Lai Jiangshan wrote: >> Currently, NMI interrupt is blindly sent to all the vCPUs when NMI >> button event happens. This doesn't properly emulate real hardware on >> which NMI button event triggers LINT1. Because of this, NMI is sent to >> the processor even when LINT1 is masked in LVT. For example, this >> causes the problem that kdump initiated by NMI sometimes doesn't work >> on KVM, because kdump assumes NMI is masked on CPUs other than CPU0. >> >> With this patch, we introduce introduce KVM_SET_LINT1, >> and we can use KVM_SET_LINT1 to correctly emulate NMI button >> without change the old KVM_NMI behavior. >> >> @@ -759,6 +762,8 @@ struct kvm_clock_data { >> #define KVM_CREATE_SPAPR_TCE _IOW(KVMIO, 0xa8, struct kvm_create_spapr_tce) >> /* Available with KVM_CAP_RMA */ >> #define KVM_ALLOCATE_RMA _IOR(KVMIO, 0xa9, struct kvm_allocate_rma) >> +/* Available with KVM_CAP_SET_LINT1 for x86 */ >> +#define KVM_SET_LINT1 _IO(KVMIO, 0xaa) >> >> > > LINT1 may have been programmed as a level -triggered interrupt instead > of edge triggered (NMI or interrupt). We can use the ioctl argument for > the level (and pressing the NMI button needs to pulse the level to 1 and > back to 0). > Hi, Avi, How to handle level=0 in the kernel? Or just ignore it? Thanks, Lai -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html