[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Grub long delays loading
From: |
Guenter.Ebermann |
Subject: |
Grub long delays loading |
Date: |
Thu, 24 Apr 2008 11:03:54 +0200 |
Hello,
I'am running Grub on a standard i386 compatible PC. Grub comes pre-compiled
from debian stable distribution. The hard drive where Grub is installed is
Serial ATA.
1. Output of /etc/fstab:
proc /proc proc defaults 0 0
rootfs / reiserfs defaults 0 0
/dev/sda1 /mnt/shared reiserfs notail 0 0
/dev/sda5 /mnt/second reiserfs noauto 0 0
/dev/cdrom /cdrom auto noauto,user,ro 0 0
/dev/fd0 /floppy auto noauto,user,sync 0 0
2. Output from fdisk -l /dev/sda:
Disk /dev/sda: 82.3 GB, 82348277760 bytes
255 heads, 63 sectors/track, 10011 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 510 4096543+ 83 Linux
/dev/sda2 511 10011 76316782+ 5 Extended
/dev/sda5 511 1403 7172991 83 Linux
/dev/sda6 1404 2296 7172991 83 Linux
/dev/sda7 2297 10011 61970706 83 Linux
3. We do not use RAID
4. Output of /proc/partitions:
major minor #blocks name
8 0 80418240 sda
8 1 4096543 sda1
8 2 1 sda2
8 5 7172991 sda5
8 6 7172991 sda6
8 7 61970706 sda7
Now to the problem, which is not strictly grub-specific:
We are producing a PCI Card (and software) for Bus measurements in automotive
environments. Sometimes (not always), whenever our PCI Card is plugged into a
special PC it takes long time in the BIOS or at the beginning of the
boot-loader to carry on.
This error only occurs with one type of Mainboard, so we are not even sure if
its our fault! However our most important customer uses this kind of mainboard
with the bootloader grub.
The long timeout takes place after the last BIOS message (what I see every time
when I boot another OS ...) and before the first Bootloader Message (GRUB menu)
so it is hard to judge for me where the timeout happens (in the BIOS or in the
boot loader).
Following timeouts where measured:
Bootloader Grub: 30 Minutes
Bootloader LILO: 1,5 Minutes
Because the timeout varies between the two bootloaders I suspect the timeout is
produced in the bootloader code, perhaps because of an error or inconsitency in
the information the BIOS provided. Also in case of an error (long timeout) our
PCI-card is fully functional after linux is booted from either grub or lilo
bootloader!
Furthermore I have other hints. The timeout never occurs whenever I do _one_ of
the following:
* Boot from a USB stick (I boot a linux with syslinux bootloader from a
FAT file system)
* Turn off SerialATA Support in the BIOS. What the BIOS then makes is
the following: It does not show the SerialATA Chip on the PCI bus, it only
shows a conventional IDE controller for backward compatibility with old OSes.
* Do not use an PCI interrupt line in a PCI controller on our PCI
expansion board. This is done the following way: We set the interrupt pin
register to 0 in the config space of our PCI controller. This is an easy task
because our PCI controller is in FPGA.
Please note that our PCI expansion board has three PCI devices:
1. Asynchronous PCI to PCI bridge and on the secondary bus side:
2. One PCI controller in the FPGA (this device can generate an interrupt)
3. One MPC5200 microcontroller
I think it is harder for the BIOS code to set up the Interrupt controllers
because of the fact that the device which generates the interrupt sits behind
a PCI to PCI bridge, because interrupt lines are interchanges in this case,
depending on the device number.
If we do not set the interrupt pin register to 1 the BIOS does think we do
not have a PCI interrupt (via the PCI lines INTA# ...) and does not have to
set up the interrupt controllers on the mainboard for our device.
The error is not special to one PCI slot in the mainboard. It happens in all
slots from time to time. Whenever we delete the ESCD info in BIOS the error
occurs more often.
We have gone a long way to find the bug:
1. We bought an PCI bus analyzer and logged every access (to our devices) up to
the timeout whenever the error happens and once when the error did not
happen, but we did not find one suspicious transaction.
2. We changed the PCI controller in the FPGA from an OpenCore-One to a
commercial PCI controller IP. This does not change the error behaviour.
Now I am looking for possibilities how i could debug the problem. Perhaps by
instrumenting grub. Perhaps I can set a debug pin (e.g. on paralell port) in
the code which shows us if grub was already started when the timeout happens?
Do you have any further suggestions?
Thanks in advance!
Guenter Ebermann
----------------------------------------------------------------
Please note: This e-mail may contain confidential information
intended solely for the addressee. If you have received this
e-mail in error, please do not disclose it to anyone, notify
the sender promptly, and delete the message from your system.
Thank you.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Grub long delays loading,
Guenter.Ebermann <=