PUC Serial I/O problem - copy of gnats-filed bug report (as discussed previously)

Karl Denninger karl at denninger.net
Fri Nov 27 16:48:18 UTC 2009


This is pretty serious folks - as noted below I have tried several
options including limiting FIFO depth with the flags with no result. 
The PUC-based ports are basically useless under 8.x as a consequence.  I
can reproduce this lockup within 15-30 minutes every time.

>Submitter-Id:  current-users
>Originator:    Karl Denninger
>Organization:  Karls Sushi and Packet Smashers
>Confidential:  no <FreeBSD PRs are public data>
>Synopsis:      Serial I/O is terminally screwed under 8.x.
>Severity:      serious
>Priority:      high
>Category:      i386
>Class:         sw-bug
>Release:       FreeBSD 8.0-STABLE i386
>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:

        <how to correct or work around the problem, if known (multiple
lines)>




More information about the freebsd-stable mailing list