Bug 207668 - Running vm86old on an i686 RHEL4 PV guest causes it to stop
Summary: Running vm86old on an i686 RHEL4 PV guest causes it to stop
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: kernel
Version: 4.0
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
: ---
Assignee: Chris Lalancette
QA Contact: Brian Brock
URL:
Whiteboard:
Depends On:
Blocks: 201622
TreeView+ depends on / blocked
 
Reported: 2006-09-22 13:33 UTC by Chris Lalancette
Modified: 2007-11-30 22:07 UTC (History)
3 users (show)

Fixed In Version: RHBA-2007-0304
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2007-05-08 03:38:16 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
Fix i686 RHEL4 PV vm86old crash (2.02 KB, patch)
2006-10-22 19:56 UTC, Chris Lalancette
no flags Details | Diff
Respin of the vm86old patch, to use load_esp0 instead of stack_switch (1.96 KB, patch)
2006-11-01 16:31 UTC, Chris Lalancette
no flags Details | Diff


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2007:0304 0 normal SHIPPED_LIVE Updated kernel packages available for Red Hat Enterprise Linux 4 Update 5 2007-04-28 18:58:50 UTC

Description Chris Lalancette 2006-09-22 13:33:24 UTC
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.

Comment 1 Chris Lalancette 2006-10-22 19:56:10 UTC
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).

Comment 2 Chris Lalancette 2006-11-01 16:31:25 UTC
Created attachment 140003 [details]
Respin of the vm86old patch, to use load_esp0 instead of stack_switch

Comment 4 Jay Turner 2007-01-02 13:44:11 UTC
QE ack for RHEL4.5.

Comment 6 Jason Baron 2007-01-05 15:37:43 UTC
committed in stream U5 build 42.22. A test kernel with this patch is available
from http://people.redhat.com/~jbaron/rhel4/


Comment 9 Red Hat Bugzilla 2007-05-08 03:38:16 UTC
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.

http://rhn.redhat.com/errata/RHBA-2007-0304.html


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