PCI rerouting
Bjoern A. Zeeb
bzeeb-lists at lists.zabbadoz.net
Fri Jan 16 12:30:14 PST 2004
Hi,
back last year I had trouble with some PCI rerouting:
http://lists.freebsd.org/pipermail/freebsd-current/2003-July/thread.html#7155
Noriyoshi Kawano came up with the attached patch but it hadn't been
committed because it was unknown why a kernel panic happens at boot
time.
Today I rebuilt a kernel from HEAD and still had trouble so the
tunable saved my weekend.
Can we somehow get this debugged and sorted out ?
--- compile-20040113-01/sys/dev/pci/pci.c.orig Tue Jan 13 09:39:03 2004
+++ compile-20040113-01/sys/dev/pci/pci.c Tue Jan 13 22:16:29 2004
@@ -173,6 +173,12 @@
enable these bits correctly. We'd like to do this all the time, but there\n\
are some peripherals that this causes problems with.");
+static int pci_enable_rerouting = 1;
+TUNABLE_INT("hw.pci.enable_rerouting", (int *)&pci_enable_rerouting);
+SYSCTL_INT(_hw_pci, OID_AUTO, enable_rerouting, CTLFLAG_RW,
+ &pci_enable_rerouting, 1,
+ "Enable try to re-route interrupts.");
+
/* Find a device_t by bus/slot/function */
device_t
@@ -817,6 +823,9 @@
if (cfg->intpin > 0 && PCI_INTERRUPT_VALID(cfg->intline)) {
#if defined(__ia64__) || defined(__i386__) || defined(__amd64__)
+ if (!pci_enable_rerouting){
+ goto nottry;
+ }
/*
* Try to re-route interrupts. Sometimes the BIOS or
* firmware may leave bogus values in these registers.
@@ -828,6 +837,7 @@
pci_write_config(dev, PCIR_INTLINE, irq, 1);
cfg->intline = irq;
} else
+nottry:
#endif
irq = cfg->intline;
resource_list_add(rl, SYS_RES_IRQ, 0, irq, irq, 1);
--
Bjoern A. Zeeb bzeeb at Zabbadoz dot NeT
56 69 73 69 74 http://www.zabbadoz.net/
More information about the freebsd-current
mailing list