Siis(4) does not play well with others! :-(

Alexander Motin mav at FreeBSD.org
Sun May 15 01:50:58 UTC 2011


On 15.05.2011 00:54, Dieter BSD wrote:
> FreeBSD 8.2 amd64
> With improvements to siis(4) and ahci(4) by Alexander Motin
> from approx 2011-04-13.
>
> SiI3132 SATA controller
> Port Multiplier 37261095 1706
>
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> kernel: siisch3: Error while READ LOG EXT
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> kernel: siisch3: SIIS reset...
> kernel: siisch3: siis_sata_connect() calling DELAY(1000)
> kernel: siisch3: SATA connect time=1ms status=00000123
> kernel: siisch3: SIIS reset done: devices=00000001
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> kernel: siisch3: Error while READ LOG EXT
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> kernel: siisch3: SIIS reset...
> kernel: siisch3: siis_sata_connect() calling DELAY(1000)
> kernel: siisch3: SATA connect time=1ms status=00000123
> kernel: siisch3: SIIS reset done: devices=00000001
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> ...
> kernel: siisch3: Timeout on slot 30
> kernel: siisch3: siis_timeout is 00040000 ss 60000000 rs 60000000 es 00000000 sts 801e2000 serr 00000000
> kernel: siisch3:  ... waiting for slots 20000000
> kernel: siisch3: Timeout on slot 29
> kernel: siisch3: siis_timeout is 00040000 ss 60000000 rs 60000000 es 00000000 sts 801e2000 serr 00000000
> kernel: siisch3: SIIS reset...
> kernel: siisch3: siis_sata_connect() calling DELAY(1000)
> kernel: siisch3: SATA connect time=1ms status=00000123
> kernel: siisch3: SIIS reset done: devices=00000001
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> /usr/sbin/cron[3369]: (root) CMD (/usr/libexec/atrun -l 10)
> kernel: siisch3: Timeout on slot 29
> kernel: siisch3: siis_timeout is 00040000 ss 20000000 rs 20000000 es 00000000 sts 801f2000 serr 00000000
> kernel: siisch3: SIIS reset...
> kernel: siisch3: siis_sata_connect() calling DELAY(1000)
> kernel: siisch3: SATA connect time=1ms status=00000123
> kernel: siisch3: SIIS reset done: devices=00000001
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> /usr/sbin/cron[3373]: (root) CMD (/usr/libexec/atrun -l 10)
> kernel: siisch3: Timeout on slot 29
> kernel: siisch3: siis_timeout is 00040000 ss 20000000 rs 20000000 es 00000000 sts 801f2000 serr 00000000
> kernel: siisch3: SIIS reset...
> kernel: siisch3: siis_sata_connect() calling DELAY(1000)
> kernel: siisch3: SATA connect time=1ms status=00000123
> kernel: siisch3: SIIS reset done: devices=00000001
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> kernel: (ada9:siisch3:0:4:0): lost device
> kernel: siisch3: Timeout on slot 29
> kernel: siisch3: siis_timeout is 00040000 ss 30000000 rs 30000000 es 00000000 sts 801f2000 serr 00000000
> kernel: siisch3:  ... waiting for slots 10000000
> kernel: siisch3: Timeout on slot 28
> kernel: siisch3: siis_timeout is 00040000 ss 30000000 rs 30000000 es 00000000 sts 801f2000 serr 00000000
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> kernel: siisch3: SIIS reset...
> kernel: siisch3: siis_sata_connect() calling DELAY(1000)
> kernel: siisch3: SATA connect time=1ms status=00000123
> kernel: siisch3: SIIS reset done: devices=00000001
> ...
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> last message repeated 2 times
> kernel: siisch3: SIIS reset...
> kernel: siisch3: siis_sata_connect() calling DELAY(1000)
> kernel: siisch3: SATA connect time=1ms status=00000123
> kernel: siisch3: SIIS reset done: devices=00000001
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> last message repeated 2 times
> kernel: siisch3: SIIS reset...
> kernel: siisch3: siis_sata_connect() calling DELAY(1000)
> kernel: siisch3: SATA connect time=1ms status=00000123
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> last message repeated 1001 times
> kernel: siisch3: port is not ready (timeout 1000ms) status = 001f2000
> kernel: siisch3: port ready timeout
> kernel: siisch3: trying full port reset ...
> kernel: siisch3: siis_reset() calling DELAY(10000)
> kernel: siisch3: siis_wait_ready() calling DELAY(1000)
> ...
>
> I have LEDs connected to the PM and they were flashing
> on and off together, but not in a normal disk access pattern.
>
> This might be due to a bad disk.  Next time the machine is free
> I'll move the disk to a different port and see if the problem
> follows the disk or stays with that PM port.
>
> Problem is that this time, siis(4) didn't "just" lock out
> Ethernet, but nearly the entire machine. Tried to log in
> on the RS-232 console, getty was running, but login hung on
> the password.  One Ethernet (PCI card ed(4)) would respond
> to ping but not to telnet.  Another Ethernet (onboard bge(4))
> would not even respond to a ping.
>
> The reset button stopped the PM LEDS flashing, but didn't
> reboot the machine.  Had to power cycle to get the machine
> back up.
>
> Incoming data was lost due to this.  :-(
>
> None of the disks connected to the siis controllers have
> any system partitions,  They are user data only.  The root
> partition is on the nforce controller, all other system
> partitions and swap are on the ahci controller.
>
> So regardless of whatever problem this PM or disk might have,
> unrelated system activity such as logging in on the console,
> responding to ping and telnet, etc. should not have been affected.
> Siis(4) needs to learn how to play well with others!

For now, I can only say that you are still running not the latest driver 
version. Latest have some delays reduced and report connect time in 
"us". May be some more of remaining could be replaced with interrupts 
(specifically on siis hardware), but I need to think and experiment more 
with it.

Generally, the situation when the system doesn't reboot with the reset 
button doesn't smell good to me.

-- 
Alexander Motin


More information about the freebsd-drivers mailing list