Messages in this thread | | | Date | Sat, 28 Mar 2009 12:18:15 -0700 | From | "H. Peter Anvin" <> | Subject | Re: [PATCH] mark %esi as clobbered in E820 BIOS call |
| |
Ingo Molnar wrote: > * Michael K. Johnson <johnsonm@rpath.com> wrote: > >> Justin and Peter, please review this for stable .y trees. Peter, >> please review this for trunk unless you decide to do a more >> extensive workaround for BIOS register clobbering. >> >> Thanks! >> >> $ cat e820-esi-clobber-workaround.patch >> Jordan Hargrave diagnosed a BIOS clobbering %esi in the E820 call. >> That particular BIOS has been fixed, but there is a possibility that >> this is responsible for other occasional reports of early boot >> failure, and it does not hurt to add %esi to the clobbers. > > nice fix! Would you mind to update the clobber list to include _all_ > registers? I dont see why any of the other registers couldnt be > clobbered by a BIOS, and this is boot-only code so micro-performance > is not an issue.
%esi and %ebp are the only registers that aren't already clobbered. gcc doesn't like %ebp clobbers, so it has to be done via push..pop. I have been thinking about doing a generic register-save wrapper for *all* BIOS calls; this plus the recent patch to do a bunch of similar hacks for VESA calls kind of tells me it's time to do this. However, I'm going to clean up this for the trunk and Cc: stable for now.
-hpa
-- H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf.
| |