Cross posting this from the Open QNX forums in the hopes that someone
here might be able to help me:
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 that go into the syslog. 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 scsi drivers (devb-aha*) all
of which take less than a second to return failure since there is no
SCSI device 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.
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.
Lastly, I have turned off DMA access in diskboot in the .boot image
otherwise QNX fails entirely to detect the flash card.
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