i386/140947: Serial I/O is terminally screwed under 8.x.

Karl Denninger karl at FS.denninger.net
Fri Nov 27 19:00:09 UTC 2009


>Number:         140947
>Category:       i386
>Synopsis:       Serial I/O is terminally screwed under 8.x.
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-i386
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Nov 27 19:00:06 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Karl Denninger
>Release:        FreeBSD 8.0-STABLE i386
>Organization:
Karls Sushi and Packet Smashers
>Environment:
System: FreeBSD FS.denninger.net 8.0-STABLE FreeBSD 8.0-STABLE #3: Fri Nov 27 08:32:51 CST 2009 karl at FS.denninger.net:/usr/obj/usr/src/sys/KSD-SMP i386

puc0: <Oxford Semiconductor OX16PCI954 UARTs> port 0x4060-0x407f,0x4040-0x405f m
em 0x94503000-0x94503fff,0x94502000-0x94502fff irq 16 at device 0.0 on pci3
puc0: [FILTER]
uart2: <16550 or compatible> on puc0
uart2: [FILTER]
uart3: <16550 or compatible> on puc0
uart3: [FILTER]
uart4: <16550 or compatible> on puc0
uart4: [FILTER]
uart5: <16550 or compatible> on puc0
uart5: [FILTER]

puc0 at pci0:3:0:0:        class=0x070006 card=0x00001415 chip=0x950a1415 rev=0x00 hdr=0x00
    bar   [10] = type I/O Port, range 32, base 0x4060, size 32, enabled
    bar   [14] = type Memory, range 32, base 0x94503000, size 4096, enabled
    bar   [18] = type I/O Port, range 32, base 0x4040, size 32, enabled
    bar   [1c] = type Memory, range 32, base 0x94502000, size 4096, enabled
    cap 01[40] = powerspec 1  supports D0 D2 D3  current D0

#
# SMP -- Generic kernel configuration file for FreeBSD/i386 SMP
#        Use this for multi-processor machines
#
# $FreeBSD: src/sys/i386/conf/SMP,v 1.5.6.1 2005/09/18 03:37:58 scottl Exp $

include GENERIC

ident           KSD-SMP

# To make an SMP kernel, the next line is needed
#options        SMP                     # Symmetric MultiProcessor Kernel
#
# We also need the firewall, divert, and PPS_SYNC (for the GPS) options
#
options         IPFIREWALL
options         IPDIVERT
options         PPS_SYNC
#
# Rate-shaping requirements
#
options         DUMMYNET
options         HZ=1000
#options                SYSVSHM
#
# Local stuff
#
device          rp              # Comtrol Rocketport Board
device          sound           # Generic sound card drivers

#device         ubsa            # USB Serial Adapters
#device         ucom
#device         uftdi
#device         uplcom

device          umct
device          puc

>Description:
	Serial I/O fails with a lockup after a variable amount of time.  
	Modem-controlled ports are succeptible, especially those that
	require tight adherence to that capability.

	There is no reset possible without rebooting the machine.  Attempts
	to "probe" the port by stopping the running process(es) and
	re-initializing them fail.

	This IDENTICAL board in the IDENTICAL machine was functioning
	properly under 7.x over the space of about a year under extremely
	heavy use.  As soon as 8.x-RC2 was loaded, and subsequently with the
	released version (as seen above) it failed and has remained dead.

	The custom kernel with "PPS_SYNC" is present as one
	of the ports (on the motherboard) is used for a GPS clock under ntpd.
	This port is operating fine - it is relatively low-traffic, of
	course, containing only timecode.  Another port used to talk to an
	APC UPS (again, low traffic) is also ok.

	All ports in use for Hylafax, however, lock up as described above.

	Attempting to limit FIFO depth with 0x100 or 0x200 flags on the
	ports has no effect.


>How-To-Repeat:
	Put a "puc" style board in the machine, set up hylafax, send a few
	dozen faxes.  The driver will wedge.

>Fix:

	




>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-i386 mailing list