kern/118093: firewire bus reset hogs CPU,
causing data to be lost
Dieter
freebsd at sopwith.solgatos.com
Fri Dec 19 21:20:03 PST 2008
The following reply was made to PR kern/118093; it has been noted by GNATS.
From: Dieter <freebsd at sopwith.solgatos.com>
To: freebsd-firewire at freebsd.org, bug-followup at freebsd.org
Cc:
Subject: Re: kern/118093: firewire bus reset hogs CPU, causing data to be lost
Date: Fri, 19 Dec 2008 11:02:21 +0000
Here are the results of two more experiments:
I tried to verify what spl the firewire code is at when calling
printf(9) by adding the following block into fwohci.c just
before one of the printfs.
{
#include <sys/types.h>
#include <sys/systm.h>
intrmask_t debug_spl; /* __uint32_t */
intrmask_t debug_spl_high;
intrmask_t debug_spl_tty;
intrmask_t debug_spl_fw;
intrmask_t debug_spl_0;
intrmask_t debug_spl_net;
debug_spl = splhigh();
debug_spl_high = spltty();
debug_spl_tty = splfw();
debug_spl_fw = splnet();
debug_spl_net = splhigh();
spl0(); /* void */
debug_spl_0 = splhigh();
splx(debug_spl);
printf("fwohci_intr_core(): spl = 0x%x\n splhigh=0x%x spltty=0x%x splfw=0x%x splnet=0x%x spl0=0x%x\n",
debug_spl, debug_spl_high, debug_spl_tty, debug_spl_fw, debug_spl_net, debug_spl_0);
}
But my results appear bogus:
fwohci_intr_core(): spl = 0x0
splhigh=0x0 spltty=0x0 splfw=0x0 splnet=0x0 spl0=0x0
I have examined my code and the spl(9) man page several times
but I can't find what is wrong. Any clues?
--------------------------------------------------------
To isolate the effects of printf(9) from the firewire bus reset,
I picked a trivial system call (chown(2)) and added some printf(9)
calls.
Calling chown several times and monitoring with systat -vmstat gives:
1098 interrupts on the console IRQ
93.1%Sys 6.7%Intr 0.2%User 0.0%Nice 0.0%Idle
This did NOT interfere with Ethernet.
So printf(9) interferes with Ethernet when called from the
firewire driver, but not when called from a vanilla system call.
--------------------------------------------------------
sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
sio0: type 16550A, console
sio0: [FILTER]
What does [FILTER] mean? I don't see an explanation on the sio man page.
More information about the freebsd-bugs
mailing list