Bug 79460

Summary: kernel-smp and kernel-enterprise broken on hardware that lacks a local APIC
Product: Red Hat Enterprise Linux 2.1 Reporter: Tim Mann <redhat-bugzilla>
Component: kernelAssignee: Larry Woodman <lwoodman>
Status: CLOSED CURRENTRELEASE QA Contact: Brian Brock <bbrock>
Severity: high Docs Contact:
Priority: medium    
Version: 2.1CC: shillman
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2003-10-03 14:13:00 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

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.