kern/118093: [firewire] firewire bus reset hogs CPU, causing data to be lost

Gavin Atkinson gavin at FreeBSD.org
Fri Mar 6 07:53:46 PST 2009


On Wed, 2009-03-04 at 21:37 +0000, Dieter wrote:
> In message <200902022113.n12LDfEI059994 at freefall.freebsd.org>, gavin at freebsd.org writes:
> 
> > This looks like it may be some bad
> > interaction between the firewire stack and using a serial
> > console.  To submitter: It may be worth while switching to
> > uart(4) rather than sio(4) for your serial ports and seeing
> > if that makes any difference (as I don't think uart(4) uses
> > the Giant lock).
> 
> The box is running 7.1 now.  I commented out sio in the config file
> and built a new kernel.
> 
> normal kernel:
> 
>  freebsd # dmesg | grep ^sio
> sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
> sio0: type 16550A, console
> sio0: [FILTER]
> sio1: <16550A-compatible COM port> port 0x2f8-0x2ff irq 3 on acpi0
> sio1: type 16550A
> sio1: [FILTER]
>  freebsd # dmesg | grep -i ^uart
>  freebsd # dmesg | grep -i 1655 
> sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
> sio0: type 16550A, console
> sio1: <16550A-compatible COM port> port 0x2f8-0x2ff irq 3 on acpi0
> sio1: type 16550A
>  freebsd # dmesg | grep -i console
> sio0: type 16550A, console
> sc0: <System console> at flags 0x100 on isa0
> sc0: VGA <16 virtual consoles, flags=0x100>
>  freebsd # dmesg | grep -i giant
> ohci0: [GIANT-LOCKED]
> ehci0: [GIANT-LOCKED]
> ohci1: [GIANT-LOCKED]
> ohci2: [GIANT-LOCKED]
> ehci1: [GIANT-LOCKED]
> ppc0: [GIANT-LOCKED]
> atkbd0: [GIANT-LOCKED]
> 
> With sio commented out:
> 
> OK boot kernel_uart
> /boot/kernel_uart/kernel text=0x3f8090 data=0x5b678+0x38cc8 syms=[0x8+0x6ee08+0x
> 8+0x609a9]
> /
> 
> And nothing else appears on the console.
> 
> 
>  freebsd # dmesg | grep -i ^sio
>  freebsd # dmesg | grep -i ^uart
> uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 on acpi0
> uart0: [FILTER]
> uart1: <16550 or compatible> port 0x2f8-0x2ff irq 3 on acpi0
> uart1: [FILTER]
>  freebsd # dmesg | grep -i 1655
> uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 on acpi0
> uart1: <16550 or compatible> port 0x2f8-0x2ff irq 3 on acpi0
>  freebsd # dmesg | grep -i console
> sc0: <System console> at flags 0x100 on isa0
> sc0: VGA <16 virtual consoles, flags=0x300>
> 
> echo hello >> /dev/console
> doesn't show up.  Nothing shows up on console.
> 
> And looking at files in /var/log I found:
> 
> getty[789]: open /dev/ttyd0: No such file or directory
> getty[790]: open /dev/ttyd1: No such file or directory
> 
> 
> Looks to me like commenting out sio doesn't work so well on my box.
> Is that the wrong way to switch from sio to uart?
> Is there something else I need to change instead, or in addition?

You'll also need to add the uart hints to your device.hints file, if you
haven't already, and update /etc/ttys.

hint.uart.0.at="isa"
hint.uart.0.port="0x3F8"
hint.uart.0.flags="0x10"
hint.uart.0.irq="4"

/etc/ttys: you may find you need to change "ttyd0" to "ttyu0".

Gavin


More information about the freebsd-bugs mailing list