2002-08-01 14:14:13

by Cress, Andrew R

[permalink] [raw]
Subject: hang in 2.4.18 with CONFIG_SERIAL=m (?)

I'm hoping that someone has seen this before and can help me understand why
this happens.

FAILING CONFIGURATION:
kernel 2.4.18
CONFIG_SERIAL=m
CONFIG_SCSI_AIC7XXX=m

WORKING CONFIGURATION:
kernel 2.4.18
CONFIG_SERIAL=y
CONFIG_SERIAL_CONSOLE=y
CONFIG_SCSI_AIC7XXX=m

The boot disk is SCSI, attached to the aic7xxx, and the initrd.img contains
aic7xxx. The hardware (arch=i386) supports two on-board aic7899 channels,
and two on-board serial ports.
com1 = IRQ 4, IOAddr 3F8
com2 = IRQ 3, IOAddr 2F8
aic1 = IRQ 7, IOAddr 2400
aic2 = IRQ 9, IOAddr 2000

Failure symptoms:
System hangs during boot, fails to insmod aic7xxx.
By inserting some printk's in the driver, it is found that:
The hang occurs when the MMIO physical address for the second channel is
mapped into the kernel space by using ioremap. And in the ioremap, the hang
really happens when the inline function flush_tlb_all() is called.
I did try applying the free_pgtables tlb patch, and it still happens.
It is also found that only this only affects the MMIO approach of the
driver.
If the driver is built with MMIO disabled, it works fine.

If the failing configuration is modified to set CONFIG_SERIAL=y, the normal
aic7xxx with MMIO comes up fine.

Could there be some kind of IO space conflict between SERIAL=m and SCSI?

Andy Cress