Re: Sparc ESP problem with blk-mq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: mroos@xxxxxxxx
Date: Thu, 16 Oct 2014 09:43:34 +0300 (EEST)

> [  158.730919] ESP: tgt[6] lun[0] scsi_cmd [ 12 00 00 00 24 00 ]
> [  158.799397] ESP: intr sreg[87] seqreg[00] sreg2[00] ireg[18]

Target 6 responds, Bus Service + Function Done interrupt.

Status register 1 indicates interrupt pending, phase is MESSAGE IN.

> [  158.866964] ESP: intr sreg[87] seqreg[02] sreg2[00] ireg[08]

Another interrupt, just plain Function Done, we're getting the
message-in byte.  Phase is unchanged.

> [  158.934651] ESP: Got msgin byte 7

Receive MESSAGE_REJECT (0x7).

> [  158.974329] ESP: intr sreg[86] seqreg[02] sreg2[00] ireg[10]

Bus Service interrupt, we've moved to Message Out phase.

> [  159.041950] ESP: Sending message [ 06 ]

Sending ABORT_TASK_SET message.

> [  159.087894] ESP: intr sreg[80] seqreg[02] sreg2[00] ireg[20]

Disconnect interrupt.

> [  159.155522] ESP: start data addr[c01f1100] len[36] write(0)
> [  159.222248] ESP: intr sreg[80] seqreg[02] sreg2[00] ireg[40]
> [  159.289891] ESP: unexpected IREG 40

We attempt some kind of data transfer (maybe for the status block)
and the device gives us an illegal-command interrupt.

More details in the event log that gets dumped:

[  161.208873] esp: esp0: ent[31] EVENT val[0d] sreg[87] seqreg[02] sreg2[00] ireg[18] ss[00] event[0c]

Check Phase

[  161.318255] esp: esp0: ent[0] EVENT val[06] sreg[87] seqreg[02] sreg2[00] ireg[18] ss[00] event[0d]

Message In

[  161.426599] esp: esp0: ent[1] CMD val[01] sreg[87] seqreg[02] sreg2[00] ireg[18] ss[00] event[06]

Give FIFO flush ESP command

[  161.532860] esp: esp0: ent[2] CMD val[10] sreg[87] seqreg[02] sreg2[00] ireg[18] ss[00] event[06]

Give "transfer information" ESP command.

[  161.639125] esp: esp0: ent[3] CMD val[1a] sreg[87] seqreg[02] sreg2[00] ireg[08] ss[00] event[06]

Give "Set ATN" command to move to message-out to give the chip the
ABORT message.

[  161.745386] esp: esp0: ent[4] CMD val[12] sreg[87] seqreg[02] sreg2[00] ireg[08] ss[00] event[06]

Give "Message OK" command to ACK the message-in from the device.

[  161.851643] esp: esp0: ent[5] EVENT val[0d] sreg[87] seqreg[02] sreg2[00] ireg[08] ss[00] event[06]

Check Phase.

[  161.959990] esp: esp0: ent[6] EVENT val[09] sreg[86] seqreg[02] sreg2[00] ireg[10] ss[00] event[0d]

Message Out.

[  162.068332] esp: esp0: ent[7] CMD val[01] sreg[86] seqreg[02] sreg2[00] ireg[10] ss[00] event[09]

Flush FIFO

[  162.174593] esp: esp0: ent[8] CMD val[10] sreg[86] seqreg[02] sreg2[00] ireg[10] ss[00] event[09]

Transfer Information

[  162.280854] esp: esp0: ent[9] EVENT val[0a] sreg[86] seqreg[02] sreg2[00] ireg[10] ss[00] event[09]

Message Out done.

[  162.389204] esp: esp0: ent[10] EVENT val[0d] sreg[80] seqreg[02] sreg2[00] ireg[20] ss[00] event[0a]

Check Phase.

[  162.498588] esp: esp0: ent[11] EVENT val[04] sreg[80] seqreg[02] sreg2[00] ireg[20] ss[00] event[0d]

Data Out.

[  162.607977] esp: esp0: ent[12] CMD val[90] sreg[80] seqreg[02] sreg2[00] ireg[20] ss[00] event[04]

Perform DMA based Transfer Information

[  162.715275] esp: esp0: ent[13] EVENT val[05] sreg[80] seqreg[02] sreg2[00] ireg[20] ss[00] event[04]

Data done.

What's really weird is that we disconnected as per the next-to-last interrupt in the top-level
trace, but then we try to send the device data.  I wonder why we don't pick up on this :-/
It seems the interrupt processing only picks up cleanly if we have not selected successfully
yet, and this code path things we have (via esp->select_state).

I'll try to see if there is anything about the blk-mq code paths that
might shed some more light on this.
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux