Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Dec 2014 06:33:58 +0000 (UTC)
From:      Neel Natu <neel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r275817 - head/sys/amd64/vmm/io
Message-ID:  <201412160633.sBG6XwA5083737@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: neel
Date: Tue Dec 16 06:33:57 2014
New Revision: 275817
URL: https://svnweb.freebsd.org/changeset/base/275817

Log:
  For level triggered interrupts clear the PIC IRR bit when the interrupt pin
  is deasserted. Prior to this change each assertion on a level triggered irq
  pin resulted in two interrupts being delivered to the CPU.
  
  Differential Revision:	https://reviews.freebsd.org/D1310
  Reviewed by:	tychon
  MFC after:	1 week

Modified:
  head/sys/amd64/vmm/io/vatpic.c

Modified: head/sys/amd64/vmm/io/vatpic.c
==============================================================================
--- head/sys/amd64/vmm/io/vatpic.c	Tue Dec 16 06:13:30 2014	(r275816)
+++ head/sys/amd64/vmm/io/vatpic.c	Tue Dec 16 06:33:57 2014	(r275817)
@@ -388,6 +388,8 @@ vatpic_set_pinstate(struct vatpic *vatpi
 	} else if (oldcnt == 1 && newcnt == 0) {
 		/* falling edge */
 		VATPIC_CTR1(vatpic, "atpic pin%d: deasserted", pin);
+		if (level)
+			atpic->request &= ~(1 << (pin & 0x7));
 	} else {
 		VATPIC_CTR3(vatpic, "atpic pin%d: %s, ignored, acnt %d",
 		    pin, newstate ? "asserted" : "deasserted", newcnt);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201412160633.sBG6XwA5083737>