Bug 233819 - 12-BETA PAE kernel does not boot
Summary: 12-BETA PAE kernel does not boot
Status: Closed FIXED
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 12.0-RELEASE
Hardware: i386 Any
: --- Affects Only Me
Assignee: freebsd-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-12-06 03:08 UTC by ota
Modified: 2019-08-12 09:16 UTC (History)
1 user (show)

See Also:


Attachments
Ignore nx for kernel_pmap (560 bytes, patch)
2018-12-08 03:11 UTC, Konstantin Belousov
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description ota 2018-12-06 03:08:39 UTC
12-BETA, releng/12.0 PAE, kernel fails to boot and restarts the hardware.  I built with make buildkernel KERNCONF=PAE.

After loader starts booting kernel, it is nearly instantly restarts the hardware so that I couldn't get any more useful information.

I tested on VMWare and 1 hardware that both boots 11.2-RELEASE and 11.3-STABLE PAE.

I plan to get a revision # when PAE started failing but I need some time to figure out.
Comment 1 Konstantin Belousov freebsd_committer freebsd_triage 2018-12-08 03:11:30 UTC
Created attachment 199945 [details]
Ignore nx for kernel_pmap

I might make the patch more fine-grained later.
Comment 2 ota 2018-12-08 04:01:18 UTC
(In reply to Konstantin Belousov from comment #1)

This change allowed PAE kernel to boot.
Thank you for quick response.
Comment 3 commit-hook freebsd_committer freebsd_triage 2018-12-08 22:13:04 UTC
A commit references this bug:

Author: kib
Date: Sat Dec  8 22:12:58 UTC 2018
New revision: 341746
URL: https://svnweb.freebsd.org/changeset/base/341746

Log:
  Fix PAE boot.

  With the introduction of M_EXEC support for kmem_malloc(), some kernel
  mappings start having NX bit set in the paging structures early, for
  PAE kernels on machines with NX support, i.e. practically on all
  machines.  In particular, AP trampoline and initialization needs to
  access pages which translations has NX bit set, before initializecpu()
  is called.

  Check for CPUID NX feature and enable EFER.NXE before we enable paging
  in mp boot trampoline.  This allows the CPU to use the kernel page
  table instead of generating page fault due to reserved bit set.

  PR:	233819
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

Changes:
  head/sys/i386/i386/mpboot.s
Comment 4 ota 2018-12-09 06:43:20 UTC
(In reply to commit-hook from comment #3)

I applied the change to releng/12.0 without the patch in #1.
This PAE kernel also booted okay.