Problems with V2.2.1 on a 166Mhz SMP Pentium

Richard B. Johnson (root@chaos.analogic.com)
Wed, 3 Feb 1999 18:31:16 -0500 (EST)


Problems with with 2.2.1 SMP on a 166 MHz dual pentium machine.
These strange problems may be related.

(1) An attempt to `make install` from the kernel source tree
when running 2.2.1, attempting to install 2.2.1 of my hard disk,
fails with a "file not found" error. The file that can't be found
is:
/usr/src/linux/arch/i386/boot/tools/build

The file exists if I `chdir /usr/src/linux/arch/i386/boot/tools`
and `ls build` or just execute it.

However, if I `chdir /usr/src/linux/arch/i386/boot` and execute
`ls tools/build`, it is not found. This is the manner in which
`make` attempts to access it.

If I delete it, so it is made again from build.c, it is found and
the compile continues and ends without errors. However, the resulting
kernel won't boot. It gets to 'Uncompressing linux..' and that's it.

(2) If I build the 2.2.1 kernel after booting on 2.1.127, the
previous kernel on this machine, the resulting kernel will boot and
seem to run okay. However, there are serious serial I/O errors shown
next. I have pointed out these errors to Ted (tytso@mit.edu) before
and, I think these errors are not really the fault of the serial code,
but something getting corrupted.

(3) I have a 'callback' program that calls my home phone
after I log in and execute it. It hangs up the modem by setting
the baud-rate to zero as is standard. It will not work on this
machine if 2.2.1 is installed. It does not lower DTR.

Hangup works on all other Linux versions. I have been using this
for many years. When executed, no errors are reported at all.

int hangup(int fd, char *buffer)
{
struct termios *modem;
speed_t speed;
modem = (struct termios *) buffer;

if((ioctl(fd, TCGETS, modem)) == -1) /* Get terminal params */
{
sprintf(buffer, "ioctl(TCGETS) failed, (%s)", strerror(errno));
logit(buffer);
return errno;
}
speed = modem->c_cflag; /* Save baud rate, etc. */
modem->c_cflag &= ~CBAUD; /* Clear baud-rate bits */
modem->c_cflag |= B0; /* Set baud-rate to zero */
if((ioctl(fd, TCSETS, modem)) == -1) /* Drop DTR to the modem */
{
sprintf(buffer, "ioctl(TCSETS) failed, (%s)", strerror(errno));
logit(buffer);
return errno;
}
(void)sleep(5); /* Wait for it to happen */
modem->c_cflag = speed; /* Restore modified pars */
(void)ioctl(fd, TCSETS, modem); /* Set modem back on line */
(void)sleep(1); /* Note: Modem takes time! */
return 0;
}

When this is executed, the terminal is left in a very strange state
requiring a reboot. DTR is dropped once the fd is closed and the program
exits. This means that I can't log in since the modem will not answer with
DTR low. Even when I configure the modem to ignore DTR, `agetty` fails to
open the terminal.

If I do `cat /dev/ttyS0`, the modem DTR raises on the initial open.
If I ^C, the modem DTR then lowers on the close. This should not
be, and is not the default condition until I initially attempt to
hang up the modem.

# file /dev/modem
/dev/modem: symbolic link to /dev/ttyS0

# setserial -a /dev/modem
/dev/modem, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4
Baud_base: 115200, close_delay: 50, divisor: 0
Flags: spd_normal skip_test

CONFIG_M586=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_SMP=y
CONFIG_MODULES=y
CONFIG_NET=y
CONFIG_PCI=y
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_SYSVIPC=y
CONFIG_SYSCTL=y
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_ELF=y
CONFIG_BLK_DEV_FD=y
CONFIG_PARIDE_PARPORT=y
CONFIG_PACKET=y
CONFIG_NETLINK=y
CONFIG_RTNETLINK=y
CONFIG_FIREWALL=y
CONFIG_NET_ALIAS=y
CONFIG_FILTER=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_RTNETLINK=y
CONFIG_NETLINK=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_NAT=y
CONFIG_IP_FIREWALL=y
CONFIG_IP_ROUTER=y
CONFIG_IP_ALIAS=y
CONFIG_IP_NOSR=y
CONFIG_SKB_LARGE=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_BLK_DEV_SR=y
CONFIG_SCSI_AIC7XXX=y
CONFIG_AIC7XXX_PROC_STATS=y
CONFIG_SCSI_BUSLOGIC=y
CONFIG_SCSI_OMIT_FLASHPOINT=y
CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y
CONFIG_NET_VENDOR_3COM=y
CONFIG_VORTEX=y
CONFIG_NET_EISA=y
CONFIG_NE2K_PCI=y
CONFIG_PPP=y
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_SERIAL=y
CONFIG_SERIAL_CONSOLE=y
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
CONFIG_PROC_FS=y
CONFIG_EXT2_FS=y
CONFIG_NFS_FS=y
CONFIG_NFSD_SUN=y
CONFIG_SUNRPC=y
CONFIG_LOCKD=y
CONFIG_NLS=y
CONFIG_VGA_CONSOLE=y
CONFIG_VIDEO_SELECT=y
CONFIG_MAGIC_SYSRQ=y

0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
02f8-02ff : serial(auto)
03c0-03df : vga+
03f8-03ff : serial(auto)
6000-601f : eth0
6100-6103 : BusLogic BT-958

CPU0 CPU1
0: 1431511 1433577 IO-APIC-edge timer
1: 286 341 IO-APIC-edge keyboard
2: 0 0 XT-PIC cascade
4: 752 737 IO-APIC-edge serial
13: 1 0 XT-PIC fpu
16: 4491 4474 IO-APIC-level BusLogic BT-958
19: 305449 305080 IO-APIC-level eth0
NMI: 0
IPI: 0

total: used: free: shared: buffers: cached:
Mem: 47865856 28213248 19652608 8015872 12652544 8114176
Swap: 102752256 0 102752256
MemTotal: 46744 kB
MemFree: 19192 kB
MemShared: 7828 kB
Buffers: 12356 kB
Cached: 7924 kB
SwapTotal: 100344 kB
SwapFree: 100344 kB

Cheers,
Dick Johnson
***** FILE SYSTEM WAS MODIFIED *****
Penguin : Linux version 2.2.1 on an i686 machine (400.59 BogoMips).
Warning : It's hard to remain at the trailing edge of technology.
Wisdom : It's not a Y2K problem. It's a Y2Day problem.

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