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? The project I am working on perhaps allows me to look into this problem in detail and of course eventual grub fixes will be commited back to the community. 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.
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel