Use fixed mode, not lopri, for delivering IO interrupts. Suggested by
Peter O'Kane. Fixes interrupt problems on some Xeon systems.
This commit is contained in:
parent
5b3d234201
commit
a5e7e03043
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: mpacpi.c,v 1.31 2004/11/29 00:07:22 ws Exp $ */
|
/* $NetBSD: mpacpi.c,v 1.32 2004/12/21 11:33:04 fvdl Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2003 Wasabi Systems, Inc.
|
* Copyright (c) 2003 Wasabi Systems, Inc.
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: mpacpi.c,v 1.31 2004/11/29 00:07:22 ws Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: mpacpi.c,v 1.32 2004/12/21 11:33:04 fvdl Exp $");
|
||||||
|
|
||||||
#include "opt_acpi.h"
|
#include "opt_acpi.h"
|
||||||
#include "opt_mpbios.h"
|
#include "opt_mpbios.h"
|
||||||
|
@ -234,7 +234,7 @@ mpacpi_nonpci_intr(APIC_HEADER *hdrp, void *aux)
|
||||||
mpi->redir |= IOAPIC_REDLO_ACTLO;
|
mpi->redir |= IOAPIC_REDLO_ACTLO;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
mpi->redir |= (IOAPIC_REDLO_DEL_LOPRI<<IOAPIC_REDLO_DEL_SHIFT);
|
mpi->redir |= (IOAPIC_REDLO_DEL_FIXED<<IOAPIC_REDLO_DEL_SHIFT);
|
||||||
switch (isa_ovr->TriggerMode) {
|
switch (isa_ovr->TriggerMode) {
|
||||||
case MPS_INTTR_DEF:
|
case MPS_INTTR_DEF:
|
||||||
case MPS_INTTR_LEVEL:
|
case MPS_INTTR_LEVEL:
|
||||||
|
@ -638,7 +638,7 @@ mpacpi_pciroute(struct mpacpi_pcibus *mpr)
|
||||||
mpi->type = MPS_INTTYPE_INT;
|
mpi->type = MPS_INTTYPE_INT;
|
||||||
|
|
||||||
/* Defaults for PCI (active low, level triggered) */
|
/* Defaults for PCI (active low, level triggered) */
|
||||||
mpi->redir = (IOAPIC_REDLO_DEL_LOPRI<<IOAPIC_REDLO_DEL_SHIFT) |
|
mpi->redir = (IOAPIC_REDLO_DEL_FIXED<<IOAPIC_REDLO_DEL_SHIFT) |
|
||||||
IOAPIC_REDLO_LEVEL | IOAPIC_REDLO_ACTLO;
|
IOAPIC_REDLO_LEVEL | IOAPIC_REDLO_ACTLO;
|
||||||
mpi->flags = MPS_INTPO_ACTLO | (MPS_INTTR_LEVEL << 2);
|
mpi->flags = MPS_INTPO_ACTLO | (MPS_INTTR_LEVEL << 2);
|
||||||
mpi->cpu_id = 0;
|
mpi->cpu_id = 0;
|
||||||
|
@ -752,7 +752,7 @@ mpacpi_config_irouting(struct acpi_softc *acpi)
|
||||||
mpi->ioapic_ih = APIC_INT_VIA_APIC |
|
mpi->ioapic_ih = APIC_INT_VIA_APIC |
|
||||||
(ioapic->sc_apicid << APIC_INT_APIC_SHIFT) |
|
(ioapic->sc_apicid << APIC_INT_APIC_SHIFT) |
|
||||||
(i << APIC_INT_PIN_SHIFT);
|
(i << APIC_INT_PIN_SHIFT);
|
||||||
mpi->redir = (IOAPIC_REDLO_DEL_LOPRI<<IOAPIC_REDLO_DEL_SHIFT);
|
mpi->redir = (IOAPIC_REDLO_DEL_FIXED<<IOAPIC_REDLO_DEL_SHIFT);
|
||||||
mpi->flags = MPS_INTPO_DEF | (MPS_INTTR_DEF << 2);
|
mpi->flags = MPS_INTPO_DEF | (MPS_INTTR_DEF << 2);
|
||||||
mpi->global_int = i;
|
mpi->global_int = i;
|
||||||
ioapic->sc_pins[i].ip_map = mpi;
|
ioapic->sc_pins[i].ip_map = mpi;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: mpbios.c,v 1.22 2004/08/30 15:05:19 drochner Exp $ */
|
/* $NetBSD: mpbios.c,v 1.23 2004/12/21 11:33:04 fvdl Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2000 The NetBSD Foundation, Inc.
|
* Copyright (c) 2000 The NetBSD Foundation, Inc.
|
||||||
|
@ -103,7 +103,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: mpbios.c,v 1.22 2004/08/30 15:05:19 drochner Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: mpbios.c,v 1.23 2004/12/21 11:33:04 fvdl Exp $");
|
||||||
|
|
||||||
#include "opt_mpacpi.h"
|
#include "opt_mpacpi.h"
|
||||||
#include "opt_mpbios.h"
|
#include "opt_mpbios.h"
|
||||||
|
@ -803,7 +803,7 @@ static void mp_cfg_pci_intr (entry, redir)
|
||||||
mp_cfg_special_intr(entry, redir);
|
mp_cfg_special_intr(entry, redir);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
*redir |= (IOAPIC_REDLO_DEL_LOPRI<<IOAPIC_REDLO_DEL_SHIFT);
|
*redir |= (IOAPIC_REDLO_DEL_FIXED<<IOAPIC_REDLO_DEL_SHIFT);
|
||||||
|
|
||||||
switch (mpstrig) {
|
switch (mpstrig) {
|
||||||
case MPS_INTTR_DEF:
|
case MPS_INTTR_DEF:
|
||||||
|
@ -843,7 +843,7 @@ static void mp_cfg_eisa_intr (entry, redir)
|
||||||
mp_cfg_special_intr(entry, redir);
|
mp_cfg_special_intr(entry, redir);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
*redir |= (IOAPIC_REDLO_DEL_LOPRI<<IOAPIC_REDLO_DEL_SHIFT);
|
*redir |= (IOAPIC_REDLO_DEL_FIXED<<IOAPIC_REDLO_DEL_SHIFT);
|
||||||
|
|
||||||
switch (mpstrig) {
|
switch (mpstrig) {
|
||||||
case MPS_INTTR_LEVEL:
|
case MPS_INTTR_LEVEL:
|
||||||
|
@ -895,7 +895,7 @@ static void mp_cfg_isa_intr (entry, redir)
|
||||||
mp_cfg_special_intr(entry, redir);
|
mp_cfg_special_intr(entry, redir);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
*redir |= (IOAPIC_REDLO_DEL_LOPRI<<IOAPIC_REDLO_DEL_SHIFT);
|
*redir |= (IOAPIC_REDLO_DEL_FIXED<<IOAPIC_REDLO_DEL_SHIFT);
|
||||||
|
|
||||||
switch (mpstrig) {
|
switch (mpstrig) {
|
||||||
case MPS_INTTR_LEVEL:
|
case MPS_INTTR_LEVEL:
|
||||||
|
|
Loading…
Reference in New Issue