Michael, On 6/21/19 10:49 PM, Michael Schmitz wrote: > Looks like the probe for hdb does not time out (that would have taken > either of the 'return 1' paths). So it's either return code 0 or 2. 0 > would have called do_identify() which we should have seen, or 2 (drive > aborted probe). > See below with slightly more informative debugging capture:
----------------------- callingĀ amiga_gayle_ide_driver_init+0x0/0x18 @ 1 ide: Gayle IDE controller (A1200 style) ide_probe_port:722 irqd = 2 ide_probe_port:725 disabled 2 Probing IDE interface ide0... probe_for_drive:502 do probe. ide_dev_read_id:266 disable device IRQ. hda: probing with STATUS(0x50) instead of ALTSTATUS(0xff) ide_dev_read_id:298: ask drive for ID. ide_dev_read_id:313: ide busy sleep. ide_dev_read_id:321: read status. ide_dev_read_id:327: do identify. ide_dev_read_id:332: read status. ide_dev_read_id:339 ide_dev_read_id returns 0. probe_for_drive:504 probe returned 0. probe_for_drive:535 ide classify ata dev. hda: SAMSUNG MP0402H, ATA DISK drive probe_for_drive:553 ide disk init chs. probe_for_drive:555 ide disk init mult count. probe_for_drive:558 device was found; returning 1. probe_for_drive:502 do probe. probe_for_drive:504 probe returned 3. probe_for_drive:508 do probe for ATAPI device. ide_dev_read_id:266 disable device IRQ. hdb: probing with STATUS(0x00) instead of ALTSTATUS(0xff) ide_dev_read_id:293 disable DMA & overlap. ide_dev_read_id:298: ask drive for ID. ide_dev_read_id:313: ide busy sleep. ide_dev_read_id:321: read status. ide_dev_read_id:336: drive refused ID. ide_dev_read_id:339 ide_dev_read_id returns 2. ide_dev_read_id:266 disable device IRQ. hdb: probing with STATUS(0x00) instead of ALTSTATUS(0xff) ide_dev_read_id:293 disable DMA & overlap. ide_dev_read_id:298: ask drive for ID. ide_dev_read_id:313: ide busy sleep. ide_dev_read_id:321: read status. ide_dev_read_id:336: drive refused ID. ide_dev_read_id:339 ide_dev_read_id returns 2. probe_for_drive:510 probe (ATAPI) returned 2 probe_for_drive:513 no device found. ide_probe_port:745 ide_probe_port:747 enabling IRQ 2. random: crng init done ------------------------------------------------ > Looks to me as though the master drive present causes a probe for a > slave drive to abort. That could have ramifications for interrupt > handling later on. > > Geert - are the CIA interrupts level or edge triggered? Is there any > way to skip probing for a second drive once the first has been found? For clarity during the stall condition the _IDE_IRQ is kept low, both _IDE_CS are high, _ODD_CIA goes low for 880ns every 22us, _EVEN_CIA has short bursts of low every 10ms, same for _INT2, while _INT6 remains low all the time. If necessary I can provide detailed captures of these signals in other conditions too. Kind regards, Szymon
signature.asc
Description: OpenPGP digital signature