Subject: CVS commit: src/sys/dev/pci
To: None <source-changes@NetBSD.org>
From: David Young <dyoung@netbsd.org>
List: source-changes
Date: 02/02/2008 00:31:25
Module Name:	src
Committed By:	dyoung
Date:		Sat Feb  2 00:31:25 UTC 2008

Modified Files:
	src/sys/dev/pci: pccbb.c

Log Message:
Fix a two races between the initialization code and cbb(4) interrupts:
establish the interrupt handler before enabling interrupts, so that
we will not get an interrupt storm that keeps the system from making
any progress.  (We may have only been susceptible to the storm if
cbb(4) shared an interrupt with, say, uhci(4)).  Also, finish
setting up the pcic_handle before enabling interrupts, so that the
Pcic_read() call in pccbbintr() will not jump to address 0!

Now, pccbb_intrinit() encapsulates all of the interrupt initialization.

Explicitly enable card-status changed (CSTSCHG) events.

Paranoia: ensure that writes to the socket event register (interrupt
acknowledgements) are flushed to the h/w by reading the register
(gross).  We really need something like
bus_space_sync(BUS_SPACE_BARRIER_WRITE_BEFORE_INTERRUPT).

More paranoia: in pccbbintr(), if the device is inactive, get out.


To generate a diff of this commit:
cvs rdiff -r1.164 -r1.165 src/sys/dev/pci/pccbb.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.