Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/x86/x86 as a workaround for PR 47016, call ioapic_r...



details:   https://anonhg.NetBSD.org/src/rev/0030b56dcc4c
branches:  trunk
changeset: 781836:0030b56dcc4c
user:      chs <chs%NetBSD.org@localhost>
date:      Wed Oct 03 17:04:25 2012 +0000

description:
as a workaround for PR 47016, call ioapic_reenable() at the end of
ACPI interrupt routing to fix the settings for the SCI interrupt.
the problem is that after my recent changes, the SCI handler is
installed before the MADT info is parsed, so we don't know what
polarity it should have.  the real fix for this will be to rearrange
the ACPI initialization so that everything is done in a more sensible
order, but that will take some more time.

diffstat:

 sys/arch/x86/x86/mpacpi.c |  11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diffs (32 lines):

diff -r 5ea1036efec0 -r 0030b56dcc4c sys/arch/x86/x86/mpacpi.c
--- a/sys/arch/x86/x86/mpacpi.c Wed Oct 03 16:51:44 2012 +0000
+++ b/sys/arch/x86/x86/mpacpi.c Wed Oct 03 17:04:25 2012 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: mpacpi.c,v 1.95 2012/09/23 00:31:05 chs Exp $  */
+/*     $NetBSD: mpacpi.c,v 1.96 2012/10/03 17:04:25 chs Exp $  */
 
 /*
  * Copyright (c) 2003 Wasabi Systems, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mpacpi.c,v 1.95 2012/09/23 00:31:05 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mpacpi.c,v 1.96 2012/10/03 17:04:25 chs Exp $");
 
 #include "acpica.h"
 #include "opt_acpi.h"
@@ -942,6 +942,13 @@
                printf("mpacpi: %d PCI busses\n", mpacpi_npci);
 #endif
        mpacpi_config_irouting(acpi);
+#if NIOAPIC > 0
+       /*
+        * XXX fix up the SCI interrupt polarity.
+        * it's installed before we have parsed the MADT.
+        */
+       ioapic_reenable();
+#endif
        if (mp_verbose)
                for (i = 0; i < mp_nintr; i++)
                        mpacpi_print_intr(&mp_intrs[i]);



Home | Main Index | Thread Index | Old Index