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

Re: Modified Linux 4.1.20 (mac+scsi) on Quadra 660av

Hi Finn,

the problem with trying to read two tag bytes does sound familiar - I
believe we ran into that one (or a similar one) while trying to revive
the Amiga ESP drivers.

Tuomas used scsi_deactivate_tcq() in a driver specific
esp_slave_configure() hook but that interface later disappeared. In the
last version I tested, I added the following code after domain
validation in the driver specific esp_slave_configure()

+       /*
+        * Hardwire TQC capability of target _off_ after
+        * domain validation (which might have probed and
+        * negotiated TQC available)
+        */
+       dev->tagged_supported = 0;
+       dev->simple_tags = 0;

I tried all sorts of things with the chip config registers, to no avail.
Your report that this only happens with some disks exonerates the driver ...



Am 03.08.2016 um 16:16 schrieb Finn Thain:
> On Tue, 2 Aug 2016, Mac User wrote:
>>> Please send pictures. You can use the kernel parameter 
>>> "fbcon=font:ProFont6x11" to get more text on the screen if it scrolls 
>>> too fast.
>> Please see attached.  Thanks..
>> [...]
>> scsi host0: esp
>> scsi 0:0:0:0: Direct-Access SEAGATE ST318417N 0105 PQ: 0 ANSI: 3
>> scsi target0:0:0: Beginning Domain Validation
>> scsi host0: Reconnect IRQ2 timeout
> A bit of Googling tells me that I've been here before (I had forgotten):
> commit 02507a80b35edd720480540d917e9f92cc371009
> Author: Finn Thain <fthain@telegraphics.com.au>
> Date:   Sat Dec 5 12:30:42 2009 +1100
>     [SCSI] mac_esp: fix PIO mode, take 2
>     The mac_esp PIO algorithm no longer works in 2.6.31 and crashes my Centris
>     660av. So here's a better one.
>     Also, force async with esp_set_offset() rather than esp_slave_configure().
>     One of the SCSI drives I tested still doesn't like the PIO mode and fails
>     with "esp: esp0: Reconnect IRQ2 timeout" (the same drive works fine in
>     PDMA mode).
>     This failure happens when esp_reconnect_with_tag() tries to read in two
>     tag bytes but the chip only provides one (0x20). I don't know what causes
>     this. I decided not to waste any more time trying to fix it because the
>     best solution is to rip out the PIO mode altogether and use the DMA
>     engine.
> So it appears that this bug is not a regression. I guess you have 3 
> options: find a compatible drive, implement DMA with the PSC chip, or 
> debug the esp_reconnect_with_tag() implementation for PIO use.
> Apple never provided public documentation for the PSC chip, which is why 
> there's no DMA support for SCSI on AV Quadras, and also why we have code 
> like this in macmace.c:
>         /* Not sure what this does */
>         while ((baka = psc_read_long(PSC_MYSTERY)) != psc_read_long(PSC_MYSTERY));
>         if (!(baka & 0x60000000)) return IRQ_NONE;
> You could tackle the esp_reconnect_with_tag() bug by increasing the 
> ESP_RESELECT_TAG_LIMIT timeout and setting some kernel parameters:
>   scsi_mod.scan=sync  esp_scsi.esp_debug=0x241
> In my experience, the only practical way to debug mac scsi drivers is to 
> make the driver modular, boot over ethernet and then use insmod and rmmod 
> to test changes to the module.

Reply to: