Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/x86/acpi yet more fixes for PR 47648 / PR 47016:



details:   https://anonhg.NetBSD.org/src/rev/00b7908e6b09
branches:  trunk
changeset: 785829:00b7908e6b09
user:      chs <chs%NetBSD.org@localhost>
date:      Sun Mar 31 19:34:24 2013 +0000

description:
yet more fixes for PR 47648 / PR 47016:
when using a temporary mp_intr_map, initialize the "flags" field
as well as "redir" since apic_set_redir() uses both.  fix how
the flags field is change when applying an override, the trigger
and polarity sub-fields aren't just one bit like they are in redir.

diffstat:

 sys/arch/x86/acpi/acpi_machdep.c |  7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diffs (41 lines):

diff -r fc9e2c7dfdd0 -r 00b7908e6b09 sys/arch/x86/acpi/acpi_machdep.c
--- a/sys/arch/x86/acpi/acpi_machdep.c  Sun Mar 31 16:47:16 2013 +0000
+++ b/sys/arch/x86/acpi/acpi_machdep.c  Sun Mar 31 19:34:24 2013 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_machdep.c,v 1.5 2013/03/25 01:30:37 chs Exp $ */
+/* $NetBSD: acpi_machdep.c,v 1.6 2013/03/31 19:34:24 chs Exp $ */
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_machdep.c,v 1.5 2013/03/25 01:30:37 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_machdep.c,v 1.6 2013/03/31 19:34:24 chs Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -163,12 +163,14 @@
                if (polarity == ACPI_MADT_POLARITY_ACTIVE_HIGH ||
                    (!sci && polarity == ACPI_MADT_POLARITY_CONFORMS)) {
                        mpflags &= ~MPS_INTPO_ACTLO;
+                       mpflags |= MPS_INTPO_ACTHI;
                        redir &= ~IOAPIC_REDLO_ACTLO;
                }
                if (trigger == ACPI_MADT_TRIGGER_EDGE ||
                    (!sci && trigger == ACPI_MADT_TRIGGER_CONFORMS)) {
                        type = IST_EDGE;
                        mpflags &= ~(MPS_INTTR_LEVEL << 2);
+                       mpflags |= (MPS_INTTR_EDGE << 2);
                        redir &= ~IOAPIC_REDLO_LEVEL;
                }
        }
@@ -200,6 +202,7 @@
                        mipp = &sc->sc_pins[pin].ip_map;
                        *mipp = &tmpmap;
                        tmpmap.redir = redir;
+                       tmpmap.flags = mpflags;
                }
        } else
 #endif



Home | Main Index | Thread Index | Old Index