Need an alternative to DELAY()

dieterbsd at engineer.com dieterbsd at engineer.com
Mon Apr 11 01:59:27 UTC 2011


FreeBSD 8.2  amd64  uniprocessor

kernel: siisch1: DISCONNECT requested
kernel: siisch1: SIIS reset...
kernel: siisch1: siis_sata_connect() calling DELAY(1000)
last message repeated 59 times
kernel: siisch1: SATA connect time=60ms status=00000123
kernel: siisch1: SIIS reset done: devices=00000001
kernel: siisch1: DISCONNECT requested
kernel: siisch1: SIIS reset...
kernel: siisch1: siis_sata_connect() calling DELAY(1000)
last message repeated 58 times
kernel: siisch1: SATA connect time=59ms status=00000123
...
kernel: siisch0: siis_wait_ready() calling DELAY(1000)
last message repeated 1300 times
kernel: siisch0: port is not ready (timeout 10000ms) status = 001f2000

Meanwhile, *everything* comes to a screeching halt.  Device
drivers are locked out, and thus incoming data is lost.
Losing incoming data is unacceptable.

Need an alternative to DELAY() that does not lock out
other device drivers.  There must be a way to reset one
bit of hardware without locking down the entire machine.




More information about the freebsd-hackers mailing list