NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/49323



The following reply was made to PR kern/49323; it has been noted by GNATS.

From: Moroo Akira <retrage01%gmail.com@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: kern/49323
Date: Wed, 29 Jun 2016 23:33:34 +0900

 OpenBSD's de(4) had same problem.
 This has been fixed with following commit.
 
 http://marc.info/?l=openbsd-cvs&m=146718035432599&w=2
 
 I created a patch for fixing this bug in the same way.
 
 https://gist.github.com/retrage/5dd99764268e39537d127e7a5abb26be
 (I also created a patch for i386, but it is not tested.)
 
 Index: x86/x86/ioapic.c
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/x86/x86/ioapic.c,v
 retrieving revision 1.52
 diff -c -r1.52 ioapic.c
 *** x86/x86/ioapic.c	27 Jul 2015 15:45:20 -0000	1.52
 --- x86/x86/ioapic.c	29 Jun 2016 12:11:25 -0000
 ***************
 *** 508,513 ****
 --- 508,514 ----
   	flags = ioapic_lock(sc);
   	redlo = ioapic_read_ul(sc, IOAPIC_REDLO(pin));
   	redlo |= IOAPIC_REDLO_MASK;
 + 	redlo &= ~IOAPIC_REDLO_RIRR;
   	ioapic_write_ul(sc, IOAPIC_REDLO(pin), redlo);
   	ioapic_unlock(sc, flags);
   }
 ***************
 *** 549,554 ****
 --- 550,556 ----
   	flags = ioapic_lock(sc);
   	redlo = ioapic_read_ul(sc, IOAPIC_REDLO(pin));
   	redlo &= ~IOAPIC_REDLO_MASK;
 + 	redlo &= ~IOAPIC_REDLO_RIRR;
   	ioapic_write_ul(sc, IOAPIC_REDLO(pin), redlo);
   	ioapic_unlock(sc, flags);
   }
 Index: amd64/include/i82093reg.h
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/amd64/include/i82093reg.h,v
 retrieving revision 1.5
 diff -c -r1.5 i82093reg.h
 *** amd64/include/i82093reg.h	3 Jul 2008 14:02:25 -0000	1.5
 --- amd64/include/i82093reg.h	29 Jun 2016 12:13:55 -0000
 ***************
 *** 50,55 ****
 --- 50,56 ----
   	movq	IOAPIC_SC_DATA(%rdi),%r15			;\
   	movl	(%r15),%esi					;\
   	orl	$IOAPIC_REDLO_MASK,%esi				;\
 + 	andl	$~IOAPIC_REDLO_RIRR,%esi			;\
   	movl	%esi,(%r15)					;\
   	movq	IS_PIC(%r14),%rdi				;\
   	ioapic_asm_unlock(num)
 ***************
 *** 67,72 ****
 --- 68,74 ----
   	movl	%esi, (%r15)					;\
   	movl	(%r13),%r12d					;\
   	andl	$~IOAPIC_REDLO_MASK,%r12d			;\
 + 	andl	$~IOAPIC_REDLO_RIRR,%r12d			;\
   	movl	%esi,(%r15)					;\
   	movl	%r12d,(%r13)					;\
   	movq	IS_PIC(%r14),%rdi				;\
 
 



Home | Main Index | Thread Index | Old Index