devb-eide question

I have a card cage board PC wth everything self contained on the board including CPU, RAM, Compact Flash card etc.

Under 6.1 when I booted, the time to boot the system was only a few seconds from the time of the detection of the compact flash card till I got a login prompt.

Now under 6.3 the boot time has increased to almost 2 full minutes which isn’t really acceptable.

What happens when I boot is that I get to the prompt where it says ‘hit ESC for .altboot’ just fine (a couple seconds into the boot). But right after that as devb-eide starts I notice a huge difference from 6.1. Several screens of spew are printed to my screen. By spew I mean all kinds of info/warning messages. At the end of that it finds my compact flash card. This takes about 1-3 seconds for the spew to finish/detect my compact flash card. Then instead of booting from the compact flash card, the cursor sits there twiddling slowly for about 2 full minutes. At the end of that time the OS goes on to attempt to start a pile of other drivers (devb-aha*, debv-ncr etc etc) all of which take less than a second to return failure since those devices are not present. Then finally the OS decides to boot from the compact flash card, mounts the drive and continues on to boot successfully.

My question is, why is devb-eide sitting there for a full 2 minutes and what’s it trying to locate during that time when it already has a bootable device (the compact flash)?

For what it’s worth, the compact flash is located on the Secondary Master IDE channel instead of the Primary one. There are no other devices on any IDE channel besides the flash card. Of course this worked in 6.1 so I assume it can’t be because it’s on the secondary master or can it???

Also if I attach a QNX harddrive to the primary master IDE channel the whole thing boots up in a few seconds and gives me the option to mount either the HD or Compact Flash as the root file system.

If I do a devb-eide & from the command prompt I get the same spew I get at boot time but of course I can’t capture that output to post here because devb-eide forks itself into the back ground (is there any way to redirect that output?).

In any case it seems to me that devb-eide finishes it’s scan in a couple of seconds but then hesitates to decide what to boot from for some reason.

Should I go into my build file for .boot and specifically start devb-eide myself there with some parameters (currently I let the OS start it itself) and if so, which ones?

Lastly, I have turned off DMA access in diskboot in the .boot image otherwise QNX fails entirely to detect the flash card.

Thanks,

Tim

OK, still fooling around with this issue. I found that spew I mentioned in the above post was outputted to sloginfo so I was able to capture it.

Here’s what sloginfo contains after a boot using the Sandisk:

Time Sev Major Minor Args
Jan 06 16:03:54 2 19 0 eide_identify_devices: Intel 82371AB vid 8086, did 7111, class 10180 rev 1, busno 0, dfunc 39
Jan 06 16:03:54 2 19 0 eide_identify_devices: cmd_addr 1f0, cntl_addr 3f4, irq e, chnl 0, udma 2, mdma 2, sdma 0, pio 4
Jan 06 16:03:54 2 19 0 eide_command: BSY/DRQ set: 8
Jan 06 16:03:54 2 19 0 eide_identify: IDENTIFY failed: cmd a1, tid 0, status 8, error 8
Jan 06 16:03:54 2 19 0 eide_identify_devices: Intel 82371AB vid 8086, did 7111, class 10180 rev 1, busno 0, dfunc 39
Jan 06 16:03:54 2 19 0 eide_identify_devices: cmd_addr 170, cntl_addr 374, irq f, chnl 1, udma 2, mdma 2, sdma 0, pio 4
Jan 06 16:03:54 2 19 0 eide_display_devices: SanDisk SDCFH-10 tid 0, cable 40, max udma -1, cur udma -1, max mdma 2, cur mdma 2, max sdma -1, cur sdma -1, pio 4, mblk 1
Jan 06 16:03:54 2 19 0 eide_init_devices: SanDisk SDCFH-10 path 0, tid 0, udma -1, mdma -1, sdma -1, pio 4, mblk 1
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: path=0, target=0, lun=0, cam_status=c4, scsi_status=2
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: error=70, sense=5, asc=24, ascq=0
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: SK_ILLEGAL command 5a in databyte
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: path=0, target=0, lun=0, cam_status=c4, scsi_status=2
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: error=70, sense=5, asc=24, ascq=0
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: SK_ILLEGAL command 5a in databyte
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: path=0, target=0, lun=0, cam_status=c4, scsi_status=2
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: error=70, sense=5, asc=24, ascq=0
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: SK_ILLEGAL command 5a in databyte
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: path=0, target=0, lun=0, cam_status=c4, scsi_status=2
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: error=70, sense=5, asc=24, ascq=0
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: SK_ILLEGAL command 5a in databyte
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: path=0, target=0, lun=0, cam_status=c4, scsi_status=2
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: error=70, sense=5, asc=24, ascq=0
Jan 06 16:03:54 2 5 0 scsi_interpret_sense: SK_ILLEGAL command 5a in databyte
Jan 06 16:03:55 2 5 0 Path=0 - Intel 82371AB
Jan 06 16:03:55 2 5 0 target=0 lun=0 Direct-Access(0) - SanDisk SDCFH-10 Rev: HDX
Jan 06 16:05:01 5 14 0 tcpip starting
Jan 06 16:05:01 3 14 0 Using pseudo random generator. See “random” option

Here’s what it contains if I change out the Sandisk with a Harddisk and CD-Rom.

Time Sev Major Minor Args
Jan 06 09:43:31 2 19 0 eide_identify_devices: Intel 82371AB vid 8086, did 7111, class 10180 rev 1, busno 0, dfunc 39
Jan 06 09:43:31 2 19 0 eide_identify_devices: cmd_addr 1f0, cntl_addr 3f4, irq e, chnl 0, udma 2, mdma 2, sdma 0, pio 4
Jan 06 09:43:31 2 19 0 eide_display_devices: MAXTOR 4K020H1 tid 0, cable 40, max udma 2, cur udma 5, max mdma 0, cur mdma 2, max sdma -1, cur sdma -1, pio 4, mblk 16
Jan 06 09:43:31 2 19 0 eide_init_devices: MAXTOR 4K020H1 path 0, tid 0, udma -1, mdma -1, sdma -1, pio 4, mblk 16
Jan 06 09:43:31 2 19 0 eide_identify_devices: Intel 82371AB vid 8086, did 7111, class 10180 rev 1, busno 0, dfunc 39
Jan 06 09:43:31 2 19 0 eide_identify_devices: cmd_addr 170, cntl_addr 374, irq f, chnl 1, udma 2, mdma 2, sdma 0, pio 4
Jan 06 09:43:31 2 19 0 eide_display_devices: QSI CD-ROM SCR-2 tid 0, cable 40, max udma 2, cur udma 2, max mdma 0, cur mdma 2, max sdma -1, cur sdma -1, pio 4, mblk 0
Jan 06 09:43:31 2 19 0 eide_init_devices: QSI CD-ROM SCR-2 path 0, tid 0, udma -1, mdma -1, sdma -1, pio 4, mblk 0
Jan 06 09:43:36 5 14 0 tcpip starting
Jan 06 09:43:36 3 14 0 Using pseudo random generator. See “random” option

The point where ‘tcpip starting’ is printed is when the sysinit is being executed. In the HD case it happens 5 seconds after devb-eide runs and in the Sandisk case it happens 1:06 later which is a LONG time.

What is also puzzling is that in the Sandisk case I get all those scsi_interpret_sense errors/commands attempting to start/detect devices. This is the exact same board so I can’t see why QNX thinks there are scsi parts there when there aren’t.

I’ve tried specifying a BUNCH of different options to devb-eide including all of ‘noslave, noreset, nolegacy, nobmstr, master=udma=off’ and none of them or all of them together have zero effect on boot time. So it’s something else entirely. Tomorrow I am going to work on specifying the exact device and controller to see if that works unless anyone has any other ideas to try.

Tim