Date: Tue, 02 Oct 2001 21:45:49 +0200 From: Arjan Knepper <arjan@jak.nl> To: hackers FreeBSD <freebsd-hackers@FreeBSD.ORG> Subject: Cyclades Cyclom YeP (PCI) driver problems on a DELL PowerEdge 2550 (DUAL) Message-ID: <3BBA196D.7060505@jak.nl>
next in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
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;
}
[-- Attachment #2 --]
#
# 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3BBA196D.7060505>
