Hello,

There are problems with the Cyclades Cyclom YeP driver. (see PR 
i386/30965). I've put printf's in the driver code on several places to 
check where the point is of hard locking and its seems to be on line 136 
in the /usr/src/sys/pci/cy_pci.c in my situation.

--------<snipped>---------------------------------------------------------------------
        case PLX_9050:
                outw(ioport + CY_PLX_9050_ICS,
                    inw(ioport + CY_PLX_9050_ICS) | 
CY_PLX_9050_ICS_IENABLE |
                    CY_PLX_9050_ICS_LOCAL_IENABLE);
--------<snipped>---------------------------------------------------------------------
This particular piece of code is hard-locking a DUAL PENTIUM III 933 
DELL PowerEdge 2550 with 2 YeP (PCI) boards with a SINGLE CPU kernel. 
(Doesn't even react on numlock key anymore)

I really need some enligtment on this.

Attached my kernel conf file and below the piece of code containg the lines.

static void
cy_attach(config_id, unit)
        pcici_t config_id;
        int unit;
{
        vm_offset_t paddr;
        void *vaddr;
        u_int32_t ioport;
        int adapter;
        u_char plx_ver;

        ioport = (u_int32_t) pci_conf_read(config_id, CY_PCI_BASE_ADDR1) 
& ~0x3;
        paddr = pci_conf_read(config_id, CY_PCI_BASE_ADDR2) & ~0xf;
#if 0
        if (!pci_map_mem(config_id, CY_PCI_BASE_ADDR2, &vaddr, &paddr)) {
                printf("cy%d: couldn't map shared memory\n", unit);
                return;
        };
#endif
        vaddr = pmap_mapdev(paddr, 0x4000);

        adapter = cyattach_common(vaddr, 1);
        if (adapter < 0) {
                /*
                 * No ports found. Release resources and punt.
                 */
                printf("cy%d: no ports found!\n", unit);
                goto fail;
        }

        /*
         * Allocate our interrupt.
         * XXX  Using the ISA interrupt handler directly is a bit of a 
violation
         *      since it doesn't actually take the same argument. For 
PCI, the
         *      argument is a void * token, but for ISA it is a unit. Since
         *      there is no overlap in PCI/ISA unit numbers for this 
driver, and
         *      since the ISA driver must handle the interrupt anyway, 
we use
         *      the unit number as the token even for PCI.
         */
        if (
#ifdef CY_PCI_FASTINTR
            !pci_map_int_right(config_id, (pci_inthand_t *)cyintr,
                               (void *)adapter, &tty_imask,
                               INTR_EXCL | INTR_FAST) &&
#endif
            !pci_map_int_right(config_id, (pci_inthand_t *)cyintr,
                               (void *)adapter, &tty_imask, 0)) {
                printf("cy%d: couldn't map interrupt\n", unit);
                goto fail;
        }

        /*
         * Enable the "local" interrupt input to generate a
         * PCI interrupt.
         */
        plx_ver = *((u_char *)vaddr + PLX_VER) & 0x0f;
        switch (plx_ver) {
        case PLX_9050:
                outw(ioport + CY_PLX_9050_ICS,
                    inw(ioport + CY_PLX_9050_ICS) | 
CY_PLX_9050_ICS_IENABLE |
                    CY_PLX_9050_ICS_LOCAL_IENABLE);
                break;
        case PLX_9060:
        case PLX_9080:
        default:                /* Old board, use PLX_9060 values. */
                outw(ioport + CY_PLX_9060_ICS,
                    inw(ioport + CY_PLX_9060_ICS) | 
CY_PLX_9060_ICS_IENABLE |
                    CY_PLX_9060_ICS_LOCAL_IENABLE);
                break;
        }

        return;

fail:
        /* XXX should release any allocated virtual memory */
        return;
}
#
# Dell POWER-EDGE 2550 Server kernel config
#
# Take Care :   sio1                            removed
#               ppc                             removed
#               INET6                           removed
#               cyclades cy0 cy1 and cy2        added
#               options CY_FAST_INTERUPT        added
#               options SC_DISABLE_REBOOT       added (REQUIRED!!)
#
#               DO NOT FORGET TO MODIFY THE BIOS SETTINGS ACCORDINGLY !!
#
#               TRY TO GIVE EACH Cyclades YeP board IT'S OWN IRQ !!
#
 
machine         i386
cpu             I686_CPU
ident           POWEREDGE-2550
maxusers        256

#makeoptions    DEBUG=-g                #Build kernel with gdb(1) debug symbols

#options        MATH_EMULATE            #Support for x87 emulation
options         INET                    #InterNETworking
#options        INET6                   #IPv6 communications protocols
options         FFS                     #Berkeley Fast Filesystem
options         FFS_ROOT                #FFS usable as root device [keep this!]
options         SOFTUPDATES             #Enable FFS soft updates support
options         MFS                     #Memory Filesystem
options         MD_ROOT                 #MD is a potential root device
options         NFS                     #Network Filesystem
#options        NFS_ROOT                #NFS usable as root device, NFS required
options         MSDOSFS                 #MSDOS Filesystem
options         CD9660                  #ISO 9660 Filesystem
options         CD9660_ROOT             #CD-ROM usable as root, CD9660 required
options         PROCFS                  #Process filesystem
options         COMPAT_43               #Compatible with BSD 4.3 [KEEP THIS!]
options         SCSI_DELAY=3000         #Delay (in ms) before probing SCSI
options         UCONSOLE                #Allow users to grab the console
options         USERCONFIG              #boot -c editor
options         VISUAL_USERCONFIG       #visual boot -c editor
#options        KTRACE                  #ktrace(1) support
options         SYSVSHM                 #SYSV-style shared memory
options         SYSVMSG                 #SYSV-style message queues
options         SYSVSEM                 #SYSV-style semaphores
options         P1003_1B                #Posix P1003_1B real-time extensions
options         _KPOSIX_PRIORITY_SCHEDULING
options         ICMP_BANDLIM            #Rate limit bad replies
options         KBD_INSTALL_CDEV        # install a CDEV entry in /dev

# To make an SMP kernel, the next two are needed
#options        SMP                     # Symmetric MultiProcessor Kernel
#options        APIC_IO                 # Symmetric (APIC) I/O

options         INCLUDE_CONFIG_FILE
options         MD_NSECT=40000

device          isa
#device         eisa
device          pci

# Floppy drives
device          fdc0    at isa? port IO_FD1 irq 6 drq 2
device          fd0     at fdc0 drive 0
#device         fd1     at fdc0 drive 1
#
# If you have a Toshiba Libretto with its Y-E Data PCMCIA floppy,
# don't use the above line for fdc0 but the following one:
#device         fdc0

# ATA and ATAPI devices
#device         ata0    at isa? port IO_WD1 irq 14
#device         ata1    at isa? port IO_WD2 irq 15
device          ata
#device         atadisk                 # ATA disk drives
device          atapicd                 # ATAPI CDROM drives
#device         atapifd                 # ATAPI floppy drives
#device         atapist                 # ATAPI tape drives
options         ATA_STATIC_ID           #Static device numbering

# SCSI Controllers
#device         ahb             # EISA AHA1742 family
device          ahc             # AHA2940 and onboard AIC7xxx devices
#device         amd             # AMD 53C974 (Tekram DC-390(T))
#device         isp             # Qlogic family
#device         ncr             # NCR/Symbios Logic
#device         sym             # NCR/Symbios Logic (newer chipsets)
#options                SYM_SETUP_LP_PROBE_MAP=0x40
                                # Allow ncr to attach legacy NCR devices when 
                                # both sym and ncr are configured

#device         adv0    at isa?
#device         adw
#device         bt0     at isa?
#device         aha0    at isa?
#device         aic0    at isa?

#device         ncv             # NCR 53C500
#device         nsp             # Workbit Ninja SCSI-3
#device         stg             # TMC 18C30/18C50

# SCSI peripherals
device          scbus           # SCSI bus (required)
device          da              # Direct Access (disks)
#device         sa              # Sequential Access (tape etc)
#device         cd              # CD
device          pass            # Passthrough device (direct SCSI access)

# RAID controllers interfaced to the SCSI subsystem
#device         asr             # DPT SmartRAID V, VI and Adaptec SCSI RAID
#device         dpt             # DPT Smartcache - See LINT for options!
#device         mly             # Mylex AcceleRAID/eXtremeRAID

# RAID controllers
#device         aac             # Adaptec FSA RAID, Dell PERC2/PERC3
#device         ida             # Compaq Smart RAID
#device         amr             # AMI MegaRAID
#device         mlx             # Mylex DAC960 family
#device         twe             # 3ware Escalade

# atkbdc0 controls both the keyboard and the PS/2 mouse
device          atkbdc0 at isa? port IO_KBD
device          atkbd0  at atkbdc? irq 1 flags 0x1
device          psm0    at atkbdc? irq 12

device          vga0    at isa?

# splash screen/screen saver
pseudo-device   splash

# syscons is the default console driver, resembling an SCO console
device          sc0     at isa? flags 0x100
options         SC_DISABLE_REBOOT

# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
#device         vt0     at isa?
#options        XSERVER                 # support for X server on a vt console
#options        FAT_CURSOR              # start with block cursor
# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines
#options        PCVT_SCANSET=2          # IBM keyboards are non-std

# Floating point support - do not disable.
device          npx0    at nexus? port IO_NPX irq 13

# Power management support (see LINT for more options)
#device         apm0    at nexus? disable flags 0x20 # Advanced Power Management

# PCCARD (PCMCIA) support
#device         card
#device         pcic0   at isa? irq 0 port 0x3e0 iomem 0xd0000
#device         pcic1   at isa? irq 0 port 0x3e2 iomem 0xd4000 disable

# Serial (COM) ports
device          sio0    at isa? port IO_COM1 flags 0x10 irq 4
#device         sio1    at isa? port IO_COM2 irq 3
#device         sio2    at isa? disable port IO_COM3 irq 5
#device         sio3    at isa? disable port IO_COM4 irq 9

# Parallel port
#device         ppc0    at isa? irq 7
#device         ppbus           # Parallel port bus (required)
#device         lpt             # Printer
#device         plip            # TCP/IP over parallel
#device         ppi             # Parallel port interface device
#device         vpo             # Requires scbus and da


# PCI Ethernet NICs.
#device         de              # DEC/Intel DC21x4x (``Tulip'')
#device         txp             # 3Com 3cR990 (``Typhoon'')
#device         vx              # 3Com 3c590, 3c595 (``Vortex'')

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device          miibus          # MII bus support
#device         dc              # DEC/Intel 21143 and various workalikes
device          fxp             # Intel EtherExpress PRO/100B (82557, 82558)
#device         pcn             # AMD Am79C97x PCI 10/100 NICs
#device         rl              # RealTek 8129/8139
#device         sf              # Adaptec AIC-6915 (``Starfire'')
#device         sis             # Silicon Integrated Systems SiS 900/SiS 7016
#device         ste             # Sundance ST201 (D-Link DFE-550TX)
#device         tl              # Texas Instruments ThunderLAN
#device         tx              # SMC EtherPower II (83c170 ``EPIC'')
#device         vr              # VIA Rhine, Rhine II
#device         wb              # Winbond W89C840F
#device         wx              # Intel Gigabit Ethernet Card (``Wiseman'')
#device         xl              # 3Com 3c90x (``Boomerang'', ``Cyclone'')

# ISA Ethernet NICs.
# 'device ed' requires 'device miibus'
#device         ed0     at isa? port 0x280 irq 10 iomem 0xd8000
#device         ex
#device         ep
#device         fe0     at isa? port 0x300
# Xircom Ethernet
#device         xe
# PRISM I IEEE 802.11b wireless NIC.
#device         awi
# WaveLAN/IEEE 802.11 wireless NICs. Note: the WaveLAN/IEEE really
# exists only as a PCMCIA device, so there is no ISA attachment needed
# and resources will always be dynamically assigned by the pccard code.
#device         wi
# Aironet 4500/4800 802.11 wireless NICs. Note: the declaration below will
# work for PCMCIA and PCI cards, as well as ISA cards set to ISA PnP
# mode (the factory default). If you set the switches on your ISA
# card for a manually chosen I/O address and IRQ, you must specify
# those parameters here.
#device         an
# The probe order of these is presently determined by i386/isa/isa_compat.c.
#device         ie0     at isa? port 0x300 irq 10 iomem 0xd0000
#device         le0     at isa? port 0x300 irq 5 iomem 0xd0000
#device         lnc0    at isa? port 0x280 irq 10 drq 0
#device         cs0     at isa? port 0x300
#device         sn0     at isa? port 0x300 irq 10

# Pseudo devices - the number indicates how many units to allocate.
pseudo-device   loop            # Network loopback
pseudo-device   ether           # Ethernet support
pseudo-device   sl      1       # Kernel SLIP
pseudo-device   ppp     1       # Kernel PPP
pseudo-device   tun             # Packet tunnel.
pseudo-device   pty             # Pseudo-ttys (telnet etc)
pseudo-device   md              # Memory "disks"
#pseudo-device  gif             # IPv6 and IPv4 tunneling
#pseudo-device  faith   1       # IPv6-to-IPv4 relaying (translation)

# The `bpf' pseudo-device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
pseudo-device   bpf             #Berkeley packet filter

# USB support
#device         uhci            # UHCI PCI->USB interface
#device         ohci            # OHCI PCI->USB interface
#device         usb             # USB Bus (required)
#device         ugen            # Generic
#device         uhid            # "Human Interface Devices"
#device         ukbd            # Keyboard
#device         ulpt            # Printer
#device         umass           # Disks/Mass storage - Requires scbus and da
#device         ums             # Mouse
#device         uscanner        # Scanners
# USB Ethernet, requires mii
#device         aue             # ADMtek USB ethernet
#device         cue             # CATC USB ethernet
#device         kue             # Kawasaki LSI USB ethernet

#
# Cyclades YeP boards
#
device          cy0
device          cy1
device          cy2
options         CY_PCI_FASTINTR # use with cy_pci unless IRQ is shared


Reply via email to