Bug 64394 - Unreliable reboots with "reboot=bios" option.
Unreliable reboots with "reboot=bios" option.
Status: CLOSED CURRENTRELEASE
Product: Red Hat Enterprise Linux 2.1
Classification: Red Hat
Component: kernel (Show other bugs)
2.1
i386 Linux
medium Severity medium
: ---
: ---
Assigned To: Larry Woodman
Brian Brock
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2002-05-03 11:08 EDT by Robert Hentosh
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: 2002-07-18 09:59:49 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)
INVD cache patch for reboot=bios (558 bytes, patch)
2002-05-03 11:10 EDT, Robert Hentosh
no flags Details | Diff

  None (edit)
Description Robert Hentosh 2002-05-03 11:08:27 EDT
Description of Problem:
When specifying the "reboot=bios" option the code that switches to real-mode 
and jumps to the BIOS vector contains a bug that causes some platforms to hang 
repeatedly.  This bug has been present since at since least 2.2.x kernel.  This 
problem exists in both Hampton, Pensacola and prior versions at least to 7.0.

Version-Release number of selected component (if applicable):


How Reproducible:  On a PE6400 running 7.2 it happens most every time.  On some 
tests it showed more frequently after booting then running vi on any file and 
then typing `reboot`.


Steps to Reproduce:
1. Boot PE6400 on 7.2 with "reboot=bios" as kernel param.
2. login as root, vi any file.
3. type `reboot`

Actual Results:
System will shutdown orderly and then hang not continuing to the BIOS post 
screens.

Expected Results:
System will reboot normally and one will see the BIOS screens.

Additional Information:
A patch has been submitted to the lkml and was accepted by the orignal author  
of the routine at fault(Jamie Lokier).
Comment 1 Robert Hentosh 2002-05-03 11:10:08 EDT
Created attachment 56286 [details]
INVD cache patch for reboot=bios
Comment 2 Robert Hentosh 2002-05-03 11:13:34 EDT
The patch simply changes the hand assembled code instruction INVD to WBINVD.  
INVD invalidates the CPU cache and since the routine was just previously copied 
in can still exists only in the cache.  INVD at this time then cause the 
routine to be lost and it just executes the "garbage" left in RAM.  WBINVD 
insures that the routine is written to RAM before invalidating the cache, 
insuring that the jump to the BIOS reset vector takes place.
Comment 3 Matt Domsch 2002-07-09 15:04:36 EDT
This will be included in the first Pensacola errata kernel, and is included 
already in 2.4.19-ac.  This needs to get pushed to Marcelo for 2.4.x, and to 
Linus for 2.5.x.
Comment 4 John A. Hull 2002-07-23 18:58:35 EDT
Closing since it is fixed.

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