Bug 79460 - kernel-smp and kernel-enterprise broken on hardware that lacks a local APIC
Summary: kernel-smp and kernel-enterprise broken on hardware that lacks a local APIC
Alias: None
Product: Red Hat Enterprise Linux 2.1
Classification: Red Hat
Component: kernel
Version: 2.1
Hardware: i386
OS: Linux
Target Milestone: ---
Assignee: Larry Woodman
QA Contact: Brian Brock
Depends On:
TreeView+ depends on / blocked
Reported: 2002-12-11 21:35 UTC by Tim Mann
Modified: 2007-11-30 22:06 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2003-10-03 14:13:00 UTC
Target Upstream Version:

Attachments (Terms of Use)

Description Tim Mann 2002-12-11 21:35:20 UTC
Description of Problem:

kernel-smp, kernel-enterprise, and any user-compiled Red Hat 2.4.9-e.* kernel
that includes SMP support are broken on hardware that lacks a local APIC.  

The problem is that __run_timers never gets called, so any process that sleeps
on a timeout never wakes up, though you can interrupt it with a signal.  When
SMP and X86 are defined in this kernel, __run_timers is driven from
run_local_timers, which is called only from smp_apic_timer_interrupt.  But the
latter is (properly) called only if you have a real local APIC; it is not called
by the dummy APIC emulation.

A possible fix would be to call run_local_timers from smp_local_timer_interrupt
instead of smp_apic_timer_interrupt.  I haven't tested this, but it looks good.

Red Hat introduced this bug by applying the patch linux-2.4.2-smptimers.patch. 
This appears to be a backport (or early version) of a feature from the 2.5
kernel series.  Looking at the current 2.5 kernel, the timer code has been
further reorganized and cleaned up, and the bug doesn't appear to exist there.

Version-Release number of selected component (if applicable):

At least 2.4.9-e.3 through 2.4.9-e.10.

How Reproducible:

Try to boot one of these kernels on hardware that lacks a local APIC.  Probably
the easiest way to do this is to boot them in a VMware virtual machine.  VMware
products earlier than the as-yet unreleased Workstation 4.0, ESX 2.0, and GSX
3.0 do not provide a virtual local APIC to the virtual machine; the virtual
hardware is strictly PIC-based.

Actual Results:

Initialization hangs the first time something tries to wait on a timeout.

Expected Results:

Timeouts should time out after the proper timeout.  :-)

Additional Information:

Comment 1 Larry Woodman 2003-06-23 17:59:18 UTC
Several changes have been made to this area, please verify
that its still a problem with the latest AS2.1 kernel errata(e.24).

Larry Woodman

Comment 2 Arjan van de Ven 2003-07-31 12:12:15 UTC
Also such virtual machines are UP, so you should run the UP kernel....

Comment 3 Suzanne Hillman 2003-10-03 14:13:00 UTC
It's been a couple of months since verification was requested. As such, I am
closing this bug. If it is still a problem, please reopen.

Note You need to log in before you can comment on or make changes to this bug.