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:
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
Also such virtual machines are UP, so you should run the UP kernel....
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.