Re: [PATCH 0/2] Experimental Amiga Zorro ESP driver

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

 



Geert,
On Sun, Aug 18, 2013 at 4:05 AM, Michael Schmitz <schmitzmic@xxxxxxxxx> wrote:
[  301.880000] esp: esp0: Reconnect IRQ2 timeout

Beware that this message (incl. the number) is hardcoded in
drivers/scsi/esp_scsi.c:

        if (i == ESP_RESELECT_TAG_LIMIT) {
                printk(KERN_ERR PFX "esp%d: Reconnect IRQ2 timeout\n",
                       esp->host->unique_id);
                return NULL;
        }

The driver prints "IRQ1" or "IRQ2".

Fortunately, IRQ_AMIGA_PORTS is 2, but this is purely coincidentally...

The driver attempts to DMA two bytes - can the DMA on the Zorro ESP cards handle such short transfers?

I'll also need to check the command_block and command_block_dma addresses - does the DMA require virtual or physical addresses?

Are there interrupts logged for IRQ2 at all (cat /proc/interrupts)? It
looks to me as though all DMA transfers fail (the first command to fail is
READ_CAPACITY which would usually be issued right after IDENTIFY IIRC).
root@amiga:/# cat /proc/interrupts
           CPU0
  2:    1066320      auto  CIAA, zorro8390, ide0, Amiga Zorro ESP
  6:     456970      auto  CIAB
  8:      38239     amiga  serial TX
  9:          0     amiga  floppy_dma
 12:     315934     amiga  fb vertb handler
 13:     315741     amiga  serial status
 15:          0     amiga  DMA sound
 19:        401     amiga  serial RX
 23:          1       cia  floppy_timer
 25:          0       cia  amikbd
 27:     456971       cia  timer
ERR:          0

Seems like IRQ2 is very popular, so it's hard to say which device has
generated the interrupts...
Yep - you'll be guaranteed to get a few IDE interrupts just by calling up
cat - might be possible to get away without too much interrupts generated if
it's all in the buffer cache - try whether the interrupt count changes after
a few repetitions of that command.

Might require more elaborate IRQ bookkeeping though.

I guess scsi_esp_intr() is called a lot, as it's a shared interrupt?

That's right - it will indeed be called a lot.

Can you add some debug prints there, to see if any of the conditions the
esp core checks are met?
The code in question polls for completion in the ESP chip interrupt register, so checking in scsi_esp_intr won't help there. I suspect the ESP gets stuck because the DMA operation never completes. Wonder whether we can just do PIO in send_dma_cmd() in these cases ...

Cheers,

   Michael

--
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux