Re: BP6/HPT366 lockup - final comments

From: Andrew Morton (andrewm@uow.edu.au)
Date: Fri Mar 31 2000 - 01:53:09 EST


Similar BP6/HPT366/IDE oddities here. I only see a problem when an SMP
kernel is booted with 'nosmp'. Quoting myself from linux-smp:

I have a new BP6 with 2x500MHz Celerons. Latest BIOS (the BP_qq beta).
It's not overclocked.

What is happening is in this code in ide-probe.c:

#if CONFIG_BLK_DEV_PDC4030
        if (HWIF(drive)->chipset == ide_pdc4030) {
                /* DC4030 hosted drives need their own identify... */
                extern int pdc4030_identify(ide_drive_t *);
                if (pdc4030_identify(drive)) {
                        if (irqs)
                                (void) probe_irq_off(irqs);
                        return 1;
                }
        } else
#endif /* CONFIG_BLK_DEV_PDC4030 */
                OUT_BYTE(cmd,IDE_COMMAND_REG); /* ask drive for
ID */
        timeout = ((cmd == WIN_IDENTIFY) ? WAIT_WORSTCASE :
WAIT_PIDENTIFY) / 2;
        timeout += jiffies;
        do {

That OUT_BYTE immediately after the #endif is stopping the realtime
clock interrupts! It is writing a value of 0xec to port 0xd807 and then
my jiffies stop increasing. Interrupts are still enabled (bit 9 in the
flags reg) and the number returned from get_cmos_time() is incrementing
nicely, but no interrupts.

It only happens with an SMP kernel with the 'nosmp' option. Normal SMP
and kernels built for UP are OK.

Any ideas, things to try?

I would _like_ to try it underclocked, but whatever I do in that BIOS
"SOFTMENU II", it still comes up at 500 MHz.

-- 
-akpm-

- 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/



This archive was generated by hypermail 2b29 : Fri Mar 31 2000 - 21:00:28 EST