瀏覽代碼

KVM: x86: reset edge sense circuit of i8259 on init

The spec says that during initialization "The edge sense circuit is
reset which means that following initialization an interrupt request
(IR) input must make a low-to-high transition to generate an interrupt",
but currently if edge triggered interrupt is in IRR it is delivered
after i8259 initialization.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Gleb Natapov 13 年之前
父節點
當前提交
242ec97c35
共有 1 個文件被更改,包括 1 次插入0 次删除
  1. 1 0
      arch/x86/kvm/i8259.c

+ 1 - 0
arch/x86/kvm/i8259.c

@@ -307,6 +307,7 @@ static void pic_ioport_write(void *opaque, u32 addr, u32 val)
 		if (val & 0x10) {
 		if (val & 0x10) {
 			s->init4 = val & 1;
 			s->init4 = val & 1;
 			s->last_irr = 0;
 			s->last_irr = 0;
+			s->irr &= s->elcr;
 			s->imr = 0;
 			s->imr = 0;
 			s->priority_add = 0;
 			s->priority_add = 0;
 			s->special_mask = 0;
 			s->special_mask = 0;