Re: linux-2.1.126 hangs Probing PCI bus

Alexander V. Lukyanov (lav@yars.free.net)
Thu, 5 Nov 1998 22:06:50 +0300


> From: Stephen Williams <steve@icarus.com>
> Date: Wed, 04 Nov 1998 14:53:55 -0800
> Subject: linux-2.1.126 hangs Probing PCI bus
>
> I compiled 2.1.126 (no patches) configure for GENERIC on my PC164.
> Most of the drivers are configured as modules, but the AIC7xxx and
> CMD646 support are compiled it.
>
> It hangs right after "Probing PCI bus". I have included output from
> lspci -v, in case that is useful. (I'm running 2.1.102 just fine.)
>
> I compiled with egcs-1.1b from the rawhide RPMS.

I bet you compiled 2.1.102 with other compiler. I had the problem too,
and it turned out to be a timer problem. It only appeared when gcc (or
egcs) produced too good code, and could be solved by inserting little
delay on top of SMC93x_Init function.

Here is what Richard Henderson says:
% > handle_irq: irq 8 count 91837 cc 1612 @ fffffc0000328744
% > My system: pc164 433Mhz
%
% That is a timer going wild. A cc that small means it was
% interrupting at 268610 Hz -- about 200 times fast.
%
% This is semi-consistent with other systems in that RTC
% handling seems dreadfully broken at the moment, and I have
% no idea why.

As I said, inserting udelay(200) fixed that problem, but nobody knows
why. Disabling interrupts in SMC93x_Init fixes the problem too. Here
is what I currently use on PC164/433Mhz/egcs-1.1/linux-2.1.126:

--- smc37c93x.c.1 Thu Sep 24 17:12:04 1998
+++ smc37c93x.c Thu Sep 24 17:10:46 1998
@@ -242,6 +242,10 @@
int __init SMC93x_Init(void)
{
unsigned long SMCUltraBase;
+ unsigned long flags;
+ int ret;
+
+ __save_and_cli(flags);

if ((SMCUltraBase = SMCDetectUltraIO()) != 0UL) {
printk("SMC FDC37C93X Ultra I/O Controller found @ 0x%lx\n",
@@ -265,10 +269,12 @@
SMCReportDeviceStatus(SMCUltraBase);
#endif
SMCRunState(SMCUltraBase);
- return 1;
+ ret = 1;
}
else {
DBG_DEVS(("No SMC FDC37C93X Ultra I/O Controller found\n"));
- return 0;
+ ret = 0;
}
+ __restore_flags(flags);
+ return ret;
}

Alexander.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/