Module Name:    src
Committed By:   cherry
Date:           Sun Oct  7 05:28:51 UTC 2018

Modified Files:
        src/sys/arch/x86/x86: i8259.c ioapic.c

Log Message:
While we're here, fix pic->pic_delroute() to DTRT on XEN and
cleanup after itself.


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/x86/x86/i8259.c
cvs rdiff -u -r1.56 -r1.57 src/sys/arch/x86/x86/ioapic.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/x86/x86/i8259.c
diff -u src/sys/arch/x86/x86/i8259.c:1.18 src/sys/arch/x86/x86/i8259.c:1.19
--- src/sys/arch/x86/x86/i8259.c:1.18	Sun Oct  7 05:23:01 2018
+++ src/sys/arch/x86/x86/i8259.c	Sun Oct  7 05:28:51 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i8259.c,v 1.18 2018/10/07 05:23:01 cherry Exp $	*/
+/*	$NetBSD: i8259.c,v 1.19 2018/10/07 05:28:51 cherry Exp $	*/
 
 /*
  * Copyright 2002 (c) Wasabi Systems, Inc.
@@ -70,7 +70,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i8259.c,v 1.18 2018/10/07 05:23:01 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i8259.c,v 1.19 2018/10/07 05:28:51 cherry Exp $");
 
 #include <sys/param.h> 
 #include <sys/systm.h>
@@ -291,6 +291,11 @@ i8259_unsetup(struct pic *pic, struct cp
 	port = unbind_pirq_from_evtch(irq);
 
 	KASSERT(port < NR_EVENT_CHANNELS);
+
+	KASSERT(irq2port[irq] != 0);
+	irq2port[irq] = 0;
+
+	xen_atomic_clear_bit(&ci->ci_evtmask[0], port);
 #else
 	if (CPU_IS_PRIMARY(ci))
 		i8259_reinit_irqs();

Index: src/sys/arch/x86/x86/ioapic.c
diff -u src/sys/arch/x86/x86/ioapic.c:1.56 src/sys/arch/x86/x86/ioapic.c:1.57
--- src/sys/arch/x86/x86/ioapic.c:1.56	Wed Dec 13 16:30:18 2017
+++ src/sys/arch/x86/x86/ioapic.c	Sun Oct  7 05:28:51 2018
@@ -1,4 +1,4 @@
-/* 	$NetBSD: ioapic.c,v 1.56 2017/12/13 16:30:18 bouyer Exp $	*/
+/* 	$NetBSD: ioapic.c,v 1.57 2018/10/07 05:28:51 cherry Exp $	*/
 
 /*-
  * Copyright (c) 2000, 2009 The NetBSD Foundation, Inc.
@@ -64,7 +64,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ioapic.c,v 1.56 2017/12/13 16:30:18 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ioapic.c,v 1.57 2018/10/07 05:28:51 cherry Exp $");
 
 #include "opt_ddb.h"
 
@@ -601,6 +601,12 @@ ioapic_delroute(struct pic *pic, struct 
 	port = unbind_pirq_from_evtch(irq);
 
 	KASSERT(port < NR_EVENT_CHANNELS);
+
+	KASSERT(irq2port[irq] != 0);
+	irq2port[irq] = 0;
+
+	xen_atomic_clear_bit(&ci->ci_evtmask[0], port);
+
 #endif
 
 }

Reply via email to