Red Hat Bugzilla – Bug 207668
Running vm86old on an i686 RHEL4 PV guest causes it to stop
Last modified: 2007-11-30 17:07:27 EST
Description of problem:
scrashme -f on an i686 RHEL4 PV stops working after it executes the "vm86old"
system call. Executing this call by hand (scrashme -c 113 -f) also shows the
problem. Hitting Ctrl-C will not kill the test, and the guest becomes
un-pingable. On the other hand, executing "xm shutdown <domid>" from the dom0
seems to cleanly shutdown the domU, so it is not entirely dead, just unresponsive.
In rawhide/fc6, executing this system command in a domU causes the calling
process to segmentation fault; RHEL4 domU's should probably do the same.
Created attachment 139086 [details]
Fix i686 RHEL4 PV vm86old crash
This patch fixes the crash when running vm86old (originally found by running
scrashme). The problem was two-fold; basically a mis-merge of the code in
arch/i386/kernel/entry-xen.S, plus missing stack switches in
arch/i386/kernel/vm86.c. The mis-merge was caused because RHEL-4 doesn't have
the "CONFIG_VM86" option, while 2.6.18 does; it basically means the code
necessary to return from vm86 mode wasn't being properly compiled into
entry-xen.S. The missing HYPERVISOR_stack_switch in vm86.c was making it so
that we didn't use the kernel stack. I don't completely understand this last
part, but it brings us in sync with 2.6.18, and seems to work. Without this
patch, the RHEL-4 kernel goes into an endless loop (just consuming CPU time)
when vm86old was called; with this patch, that no longer happens, and it
SEGFAULTS when running scrashme (the same as the FC-6 xen kernel).
Created attachment 140003 [details]
Respin of the vm86old patch, to use load_esp0 instead of stack_switch
QE ack for RHEL4.5.
committed in stream U5 build 42.22. A test kernel with this patch is available
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.