Skip site navigation (1)Skip section navigation (2)
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
This is a multi-part message in MIME format.
--------------080101000409050404080901
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

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;
}

--------------080101000409050404080901
Content-Type: text/plain;
 name="SINGLE"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="SINGLE"

#
# 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



--------------080101000409050404080901--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3BBA196D.7060505>