From D.M.Pick@qmw.ac.uk  Wed Dec  9 03:26:22 1998
Received: from gamma.qmw.ac.uk (gamma.qmw.ac.uk [138.37.6.8])
          by hub.freebsd.org (8.8.8/8.8.8) with SMTP id DAA02997
          for <FreeBSD-gnats-submit@freebsd.org>; Wed, 9 Dec 1998 03:26:13 -0800 (PST)
          (envelope-from D.M.Pick@qmw.ac.uk)
Received: from xi.css.qmw.ac.uk by gamma.qmw.ac.uk with SMTP-QMW with ESMTP;
          Wed, 9 Dec 1998 11:26:00 +0000
Received: from cgaa180 by xi.css.qmw.ac.uk 
          with local (Exim 1.92 #1)	for FreeBSD-gnats-submit@freebsd.org	id 0znhkk-00019E-00;
          Wed, 9 Dec 1998 11:25:58 +0000
Message-Id: <E0znhkk-00019E-00@xi.css.qmw.ac.uk>
Date: Wed, 9 Dec 1998 11:25:58 +0000
From: D.M.Pick@qmw.ac.uk
Sender: David Pick <D.M.Pick@qmw.ac.uk>
Reply-To: D.M.Pick@qmw.ac.uk
To: FreeBSD-gnats-submit@freebsd.org
Subject: DMPno2 - PCCards are not being recognised on insertion after system 
         startup
X-Send-Pr-Version: 3.2

>Number:         9030
>Category:       kern
>Synopsis:       DMPno2 - PCCards are not being recognised on insertion after system startup
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Dec  9 03:30:01 PST 1998
>Closed-Date:    Thu Apr 20 19:00:06 MDT 2000
>Last-Modified:  Thu Apr 20 19:00:53 MDT 2000
>Originator:     David Pick
>Release:        FreeBSD 3.0-RELEASE i386
>Organization:
>Environment:

	FreeBSD 3.0 installed from Walnut Creek CDROM onto a
	Toshiba Libretto 50CT.

>Description:

	PCCards are not being recognised on insertion. I had previously
	had FreeBSD 2.2.7 installed on that machine, and have replaced
	it with FreeBSD 3.0 from a Walnut Creek CDROM (installed via
	FTP from another FreeBSD 2.2.7 desktop machine via isolated
	private thin-wire Ethernet). I had been using a kernel with
	PCCard support and the PCCard daemon to enable me to start
	the machine, edit "/etc/rc.conf" to change the network
	parameters, and then insert the PCCard Ethernet adaptor and
	let the interface start with the correct parameters. (The
	Ethernet adaptor is a 3Com 3C589D.) I built a new kernel
	for FreeBSD 3.0 and attempted to do the same thing. (There
	had been a problem with the sound subsystem - see my
	separate problem report "DMPno1 - ..." - and I had initially
	omitted the sound drivers from this new kernel.)

	The system refused to recognise *any* PCCard when I inserted
	them.

	After looking up your Web site, and following the links to
	the PAO project, I noted they had a note that this could
	happen if devices were omitted from the configuration, and
	they especially point at sound devices. I therefore solved
	the sound device configuration problem "DMPno1 - ..." and
	rebuilt the kernel. The problem persisted. I checked the
	PCCard was working properly under Windows95 (spit ;-). I
	rebooted *with the PCCard in its slot* (which I don't
	normally do) *and it was recognised*. I checked it out and
	it worked properly. I inserted another PCCard and that was
	not recognised at all - no logging or console messages.
	Powering down and restarting the machine produced consistant
	results - if the PCCard was in on bootup it was recognised
	but if it was inserted later it was not recognised.

	I also tried to use "pccardc dumpcis" to look at the PCCards.
	Results were consistant - if the card had been recognised
	the CIS data was printed, if it hadn't it wasn't. That was
	even true when two PCCards were in the machine; one inserted
	before bootup and one after, only the one inserted before
	bootup was recognised by pccardd and dumped by pccardc.

	Given this evidence I suspect the problem is likely to be
	in the kernel rather than the userland programs, and have
	therefore assigned a category of "kern".

	I have assigned a severity of "serious" because there are
	times when I want to be able to remove one PCCard and insert
	a different one without rebooting. I use this machine for
	various network monitoring and diagnostic jobs: connecting
	it to different and unpredictable parts of my sites network
	at unpredictable times.

	I have assigned a priority of "high" because I would very
	much like it fixed (and please regard this a a bit of
	classic British understatement) as soon a practical
	because of the use I make of this machine, and because I
	guess the next release is some time away.

	Kernel configuration file used to build the kernel was:

#
# LIBRETTO based on GENERIC -- Generic machine with WD/AHx/NCR/BTx family disks
#
# For more information read the handbook part System Administration -> 
# Configuring the FreeBSD Kernel -> The Configuration File. 
# The handbook is available in /usr/share/doc/handbook or online as
# latest version from the FreeBSD World Wide Web server 
# <URL:http://www.FreeBSD.ORG/>
#
# An exhaustive list of options and more detailed explanations of the 
# device lines is present in the ./LINT configuration file. If you are 
# in doubt as to the purpose or necessity of a line, check first in LINT.
#
#	$Id: GENERIC,v 1.125 1998/10/16 01:30:11 obrien Exp $

machine		"i386"
#cpu		"I386_CPU"
#cpu		"I486_CPU"
cpu		"I586_CPU"
#cpu		"I686_CPU"
ident		LIBRETTO
maxusers	32

options		MATH_EMULATE		#Support for x87 emulation
options		INET			#InterNETworking
options		FFS			#Berkeley Fast Filesystem
options		FFS_ROOT		#FFS usable as root device [keep this!]
options		MFS			#Memory Filesystem
options		MFS_ROOT		#MFS usable as root device, "MFS" req'ed
options		NFS			#Network Filesystem
options		NFS_ROOT		#NFS usable as root device, "NFS" req'ed
options		MSDOSFS			#MSDOS Filesystem
options		"CD9660"		#ISO 9660 Filesystem
options		"CD9660_ROOT"		#CD-ROM usable as root. "CD9660" req'ed
options		"EXT2FS"		#Linux "ext2fs" Filesystem
options		PROCFS			#Process filesystem
options		"COMPAT_43"		#Compatible with BSD 4.3 [KEEP THIS!]
options		SCSI_DELAY=15000	#Be pessimistic about Joe SCSI device
options		UCONSOLE		#Allow users to grab the console
options		FAILSAFE		#Be conservative
options		USERCONFIG		#boot -c editor
options		VISUAL_USERCONFIG	#visual boot -c editor

config		kernel	root on wd0

controller	isa0
#controller	eisa0
#controller	pci0

#controller	fdc0	at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
#disk		fd0	at fdc0 drive 0
#disk		fd1	at fdc0 drive 1
# Unless you know very well what you're doing, leave ft0 at drive 2, or
# remove the line entirely if you don't need it.  Trying to configure
# it on another unit might cause surprises, see PR kern/7176.
#tape		ft0	at fdc0 drive 2

#options		"CMD640"	# work around CMD640 chip deficiency
controller	wdc0	at isa? port "IO_WD1" bio irq 14 vector wdintr
disk		wd0	at wdc0 drive 0
#disk		wd1	at wdc0 drive 1

#controller	wdc1	at isa? port "IO_WD2" bio irq 15 vector wdintr
#disk		wd2	at wdc1 drive 0
#disk		wd3	at wdc1 drive 1

#options		ATAPI		#Enable ATAPI support for IDE bus
#options		ATAPI_STATIC	#Don't do it as an LKM
#device		wcd0		#IDE CD-ROM
#device		wfd0		#IDE Floppy (e.g. LS-120)

# A single entry for any of these controllers (ncr, ahb, ahc, amd) is
# sufficient for any number of installed devices.
#controller	ncr0
#controller	amd0
#controller	ahb0
#controller	ahc0
#controller	isp0

# This controller offers a number of configuration options, too many to
# document here  - see the LINT file in this directory and look up the
# dpt0 entry there for much fuller documentation on this.
#controller      dpt0

#controller	adv0	at isa? port ? cam irq ?
#controller	adw0
#controller	bt0	at isa? port ? cam irq ?
#controller	aha0	at isa? port ? cam irq ?
#controller	uha0	at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr
#!CAM#controller	aic0	at isa? port 0x340 bio irq 11 vector aicintr
#controller	nca0	at isa? port 0x1f88 bio irq 10 vector ncaintr
#controller	nca1	at isa? port 0x350 bio irq 5 vector ncaintr
#controller	sea0	at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr

controller	scbus0

device		da0

device		sa0

device		pass0

device		cd0	#Only need one of these, the code dynamically grows

#device		wt0	at isa? port 0x300 bio irq 5 drq 1 vector wtintr
#device		mcd0	at isa? port 0x300 bio irq 10 vector mcdintr

#controller	matcd0	at isa? port 0x230 bio

#device		scd0	at isa? port 0x230 bio

# syscons is the default console driver, resembling an SCO console
device		sc0	at isa? port "IO_KBD" conflicts tty irq 1 vector scintr
# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
#device		vt0	at isa? port "IO_KBD" conflicts tty irq 1 vector pcrint
#options		XSERVER			# support for X server
#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

device		npx0	at isa? port "IO_NPX" irq 13 vector npxintr

#
# Laptop support (see LINT for more options)
#
device		apm0    at isa?	flags 0x31 # Advanced Power Management

# PCCARD (PCMCIA) support
controller	card0
device		pcic0	at card?
device		pcic1	at card?

# You may need to reset all pccards after resuming
options		PCIC_RESUME_RESET	# reset after resume

device		sio0	at isa? port "IO_COM1" flags 0x20010 tty irq 4 vector siointr
device		sio1	at isa? port "IO_COM2" flags 0x20000 tty irq 3 vector siointr
device		sio2	at isa? disable port "IO_COM3" tty irq 15 vector siointr
device		sio3	at isa? disable port "IO_COM4" tty irq 9 vector siointr

#device		lpt0	at isa? port? tty irq 7 vector lptintr

controller	ppc0	at isa? port? tty irq 7 vector ppcintr
controller	ppbus0
controller	vpo0	at ppbus?
device		nlpt0	at ppbus?
device		plip0	at ppbus?

device		psm0	at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr

# Order is important here due to intrusive probes, do *not* alphabetize
# this list of network interfaces until the probes have been fixed.
# Right now it appears that the ie0 must be probed before ep0. See
# revision 1.20 of this file.
#device de0
#device fxp0
#device tl0
#device tx0
#device vx0
#device xl0

#device ed0 at isa? port 0x280 net irq 10 iomem 0xd8000 vector edintr
#device ie0 at isa? port 0x300 net irq 10 iomem 0xd0000 vector ieintr
device ep0 at isa? disable port 0x300 net irq 10 vector epintr
#device ex0 at isa? port? net irq? vector exintr
#device fe0 at isa? port 0x300 net irq ? vector feintr
#device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr
#device lnc0 at isa? port 0x280 net irq 10 drq 0 vector lncintr
#device ze0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zeintr
#device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr
#device cs0 at isa? port 0x300 net irq ? vector csintr

pseudo-device	loop
pseudo-device	ether
pseudo-device	sl	2
pseudo-device	ppp	2
pseudo-device	tun	2
pseudo-device	pty	16
pseudo-device	gzip		# Exec gzipped a.out's

pseudo-device	vn	2	# Vnode deiver (turns a file into a device)
pseudo-device	snp	4	# Snoop device - to look at pty/vty/etc..

# 
# The PPP_BSDCOMP option enables support for compress(1) style entire 
# packet compression, the PPP_DEFLATE is for zlib/gzip style compression.
# PPP_FILTER enables code for filtering the ppp data stream and selecting
# events for resetting the demand dial activity timer - requires bpfilter.
# See pppd(8) for more details.
#

options	PPP_BSDCOMP			#PPP BSD-compress support
options	PPP_DEFLATE			#PPP zlib/deflate/gzip support
options	PPP_FILTER			#enable bpf filtering (needs bpfilter)

# KTRACE enables the system-call tracing facility ktrace(2).
# This adds 4 KB bloat to your kernel, and slightly increases
# the costs of each syscall.
options		KTRACE		#kernel tracing

# This provides support for System V shared memory.
#
options		SYSVSHM

# These two options provide support for System V Interface  
# Definition-style interprocess communication, in the form
# of shared semaphores and message-queues respectively.
options		SYSVSEM
options		SYSVMSG

#  The `bpfilter' pseudo-device enables the Berkeley Packet Filter.  Be
#  aware of the legal and administrative consequences of enabling this
#  option.  The number of devices determines the maximum number of
#  simultaneous BPF clients programs runnable.
pseudo-device	bpfilter	8	#Berkeley packet filter

# Allow user-mode programs to manipulate their local descriptor tables.
# This option is required for the WINE Windows(tm) emulator, and is
# not used for anything else (that we know of).
options		USER_LDT

# This option includes a MD5 routine in the kernel, this is used for
# various authentication and privacy used.
options		"MD5"

options		IPX			# Novell IPX/SPX protocols

options		NETATALK		# Appletalk protocols

options		MROUTING		# Multicast routing

options		IPFIREWALL		# Firewall
options		IPFIREWALL_VERBOSE	# Say something about dropped packets
options		"IPFIREWALL_VERBOSE_LIMIT=100"	# Say it only so many times
#options	IPFIREWALL_DEFAULT_TO_ACCEPT	# Allow everything by default
options		IPDIVERT		# Include divert sockets

controller	snd0
device		opl0	at isa? port 0x388	# Yamaha OPL-3

>How-To-Repeat:

	It's very repeatable - start from cold or reboot the machine
	with a PCCard already inserted and it's recognised; insert
	a card after bootup and it isn't recognised.

>Fix:
	
	<none known to me>

>Release-Note:
>Audit-Trail:

From: Nate Williams <nate@mt.sri.com>
To: D.M.Pick@qmw.ac.uk
Cc: FreeBSD-gnats-submit@FreeBSD.ORG
Subject: Re: kern/9030: DMPno2 - PCCards are not being recognised on insertion after system 
         startup
Date: Wed, 9 Dec 1998 08:26:45 -0700

 > >Number:         9030
 > >Category:       kern
 > >Synopsis:       DMPno2 - PCCards are not being recognised on insertion after system startup
 > >Confidential:   no
 > >Severity:       serious
 > >Priority:       high
 > >Responsible:    freebsd-bugs
 > >State:          open
 > >Quarter:
 > >Keywords:
 > >Date-Required:
 > >Class:          sw-bug
 > >Submitter-Id:   current-users
 > >Arrival-Date:   Wed Dec  9 03:30:01 PST 1998
 > >Last-Modified:
 > >Originator:     David Pick
 > >Organization:
 > >Release:        FreeBSD 3.0-RELEASE i386
 > >Environment:
 > 
 > 	FreeBSD 3.0 installed from Walnut Creek CDROM onto a
 > 	Toshiba Libretto 50CT.
 > 
 > >Description:
 > 
 > 	PCCards are not being recognised on insertion.
 
 Here's a quick fix for the problem.  The correct fix is to configure
 your PCIC controller quickly.  The reason this hasn't been done is
 no-one with the ability to do it has the time to do it.
 
 On line 816 of /sys/pcic.c:
         if (validslots && pcic_irq <= 0)
 Change this to:
         if (validslots)
 
 And it will work.  However, you're wasting an IRQ for the PCIC
 controller that is doing nothing for you.
 
 
 Nate
 

From: David Pick <D.M.Pick@qmw.ac.uk>
To: Nate Williams <nate@mt.sri.com>
Cc: FreeBSD-gnats-submit@freebsd.org
Subject: Re: kern/9030: DMPno2 - PCCards are not being recognised on insertion 
         after system startup 
Date: Wed, 09 Dec 1998 16:58:29 +0000

 In message <199812091526.IAA16917@mt.sri.com>you write:
 >> >Number:         9030
 >> >Category:       kern
 >> >Synopsis:       DMPno2 - PCCards are not being recognised on insertion afte
 >r system startup
 >> >Confidential:   no
 >> >Severity:       serious
 >> >Priority:       high
 >> >Responsible:    freebsd-bugs
 >> >State:          open
 >> >Quarter:
 >> >Keywords:
 >> >Date-Required:
 >> >Class:          sw-bug
 >> >Submitter-Id:   current-users
 >> >Arrival-Date:   Wed Dec  9 03:30:01 PST 1998
 >> >Last-Modified:
 >> >Originator:     David Pick
 >> >Organization:
 >> >Release:        FreeBSD 3.0-RELEASE i386
 >> >Environment:
 >> 
 >> 	FreeBSD 3.0 installed from Walnut Creek CDROM onto a
 >> 	Toshiba Libretto 50CT.
 >> 
 >> >Description:
 >> 
 >> 	PCCards are not being recognised on insertion.
 >
 >Here's a quick fix for the problem.  The correct fix is to configure
 >your PCIC controller quickly.  The reason this hasn't been done is
 >no-one with the ability to do it has the time to do it.
 >
 >On line 816 of /sys/pcic.c:
 >        if (validslots && pcic_irq <= 0)
 >Change this to:
 >        if (validslots)
 >
 >And it will work.  However, you're wasting an IRQ for the PCIC
 >controller that is doing nothing for you.
 
 And indeed it *did* work. Many thanks. I must admit to some
 curiosity about how/why this causes an IRQ to be wasted, and
 if the code you advised removing was there only to prevent an
 IRQ from being wasted; but I guess I'll have to read the code
 to find out why/what is happening ( ;-) - and if I understand
 it fix it myself ( ;-) (!)
 
 I don't know if it makes any difference, but in the Toshiba
 Libretto I'm using the PCIC says it's using IRQ 5, and the
 sound hardware (Yamaha OPL-3) *also* says it uses IRQ 5...
 
 I think we can declare this one closed. My thanks again for the
 excelently quick response.
 
 -- 
 	David Pick
 	D.M.Pick@qmw.ac.uk
 a.k.a.	Hostmaster@qmw.ac.uk
 

From: Nate Williams <nate@mt.sri.com>
To: David Pick <D.M.Pick@qmw.ac.uk>
Cc: Nate Williams <nate@mt.sri.com>, FreeBSD-gnats-submit@FreeBSD.ORG
Subject: Re: kern/9030: DMPno2 - PCCards are not being recognised on insertion 
         after system startup 
Date: Wed, 9 Dec 1998 10:05:19 -0700

 > >> >Number:         9030
 > >> >Category:       kern
 > >> >Synopsis:       DMPno2 - PCCards are not being recognised on insertion afte
 > >r system startup
 > >> >Confidential:   no
 > >> >Severity:       serious
 > >> >Priority:       high
 > >> >Responsible:    freebsd-bugs
 > >> >State:          open
 > >> >Quarter:
 > >> >Keywords:
 > >> >Date-Required:
 > >> >Class:          sw-bug
 > >> >Submitter-Id:   current-users
 > >> >Arrival-Date:   Wed Dec  9 03:30:01 PST 1998
 > >> >Last-Modified:
 > >> >Originator:     David Pick
 > >> >Organization:
 > >> >Release:        FreeBSD 3.0-RELEASE i386
 > >> >Environment:
 > >> 
 > >> 	FreeBSD 3.0 installed from Walnut Creek CDROM onto a
 > >> 	Toshiba Libretto 50CT.
 > >> 
 > >> >Description:
 > >> 
 > >> 	PCCards are not being recognised on insertion.
 > >
 > >Here's a quick fix for the problem.  The correct fix is to configure
 > >your PCIC controller quickly.  The reason this hasn't been done is
 > >no-one with the ability to do it has the time to do it.
 > >
 > >On line 816 of /sys/pcic.c:
 > >        if (validslots && pcic_irq <= 0)
 > >Change this to:
 > >        if (validslots)
 > >
 > >And it will work.  However, you're wasting an IRQ for the PCIC
 > >controller that is doing nothing for you.
 > 
 > And indeed it *did* work. Many thanks. I must admit to some
 > curiosity about how/why this causes an IRQ to be wasted, and
 > if the code you advised removing was there only to prevent an
 > IRQ from being wasted; but I guess I'll have to read the code
 > to find out why/what is happening ( ;-) - and if I understand
 > it fix it myself ( ;-) (!)
 
 The issue is that the PCIC is assigned an interrupt to inform the kernel
 of insertion/removal events.  However, this interrupt is not being
 generated by these events, so in effect the asignment of the interrupt
 to the controller is 'wasting' an interrupt since it doesn't work.
 
 The code in question above causes the kernel to 'poll' for
 insertion/removal events, thus eliminating the need for the kernel to
 get interrupts for the events.  The reason this isn't the default is
 because the 'interrupt' code (hopefully) reduces the race condition that
 occurs when hardware is removed out from under a software driver.
 
 Whether or not this is the case is unknown, but it's something to be
 
 
 Nate
State-Changed-From-To: open->closed 
State-Changed-By: imp 
State-Changed-When: Thu Apr 20 19:00:06 MDT 2000 
State-Changed-Why:  
This was fixed in 4.0. 
>Unformatted:
