Bug 79460 - kernel-smp and kernel-enterprise broken on hardware that lacks a local APIC
kernel-smp and kernel-enterprise broken on hardware that lacks a local APIC
Status: CLOSED CURRENTRELEASE
Product: Red Hat Enterprise Linux 2.1
Classification: Red Hat
Component: kernel (Show other bugs)
2.1
i386 Linux
medium Severity high
: ---
: ---
Assigned To: Larry Woodman
Brian Brock
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2002-12-11 16:35 EST by Tim Mann
Modified: 2007-11-30 17:06 EST (History)
1 user (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2003-10-03 10:13:00 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Tim Mann 2002-12-11 16:35:20 EST
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 13:59:18 EDT
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 08:12:15 EDT
Also such virtual machines are UP, so you should run the UP kernel....
Comment 3 Suzanne Hillman 2003-10-03 10:13:00 EDT
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.