HomeFreeBSD

Fix resume on i386 PAE.

Description

Fix resume on i386 PAE.

It was broken before PAE/no-PAE merge, but since now PAE is the
default, resume is apparently becomes for all machines.

The corrected issues:

  • the trampoline page is not mapped executable, so machine faults when paging is on;
  • MSR.EFER and %cr4 both should be loaded before paging is enabled, otherwise paging structures are invalid (cr4.PAE and EFER.NX).
  • MSR.EFER and %cr4 should be only loaded if present. I attempt to handle this by not touching the registers if the value is zero.

There are some more bits still not quite correct, e.g. unconditional
access to %cr4 in resumectx.

Reported and debugging help by: bde
Sponsored by: The FreeBSD Foundation
MFC after: 1 week

Details

Provenance
kibAuthored on
Parents
rS343850: contigmalloc: handle M_EXEC.
Branches
Unknown
Tags
Unknown