https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=285415

            Bug ID: 285415
           Summary: [Hyper-V] i386 panic during vm_phys_early_startup()
           Product: Base System
           Version: 15.0-CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: b...@freebsd.org
          Reporter: d...@freebsd.org

Summary: [Hyper-V] i386 panic during vm_phys_early_startup()

In base 8a14ddcc1d8e4 ("vm_phys: Check for overlap when adding a segment"),
olce@ added sanity checks for overlapping segments added via
_vm_phys_create_seg().

When I boot a recent i386 snapshot on Hyper-V, using a "Generation 1" VM for
BIOS support, the installer kernel immediately panics with:

  GDB: no debug ports present
  KDB: debugger backends: ddb
  KDB: current backend: ddb
  ---<<BOOT>>---
  Copyright (c) 1992-2025 The FreeBSD Project.
  Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
          The Regents of the University of California. All rights reserved.
  FreeBSD is a registered trademark of The FreeBSD Foundation.
  FreeBSD 15.0-CURRENT #0 main-n275921-cabf76fde836: Thu Mar 13 03:47:27 UTC
2025
      r...@releng3.nyi.freebsd.org:/usr/obj/usr/src/i386.i386/sys/GENERIC i386
  FreeBSD clang version 19.1.7 (https://github.com/llvm/llvm-project.git
llvmorg-19.1.7-0-gcd708029e0b2)
  WARNING: WITNESS option enabled, expect reduced performance.
  WARNING: 32-bit kernels are deprecated and may be removed in FreeBSD 15.0.
  panic: Overlapping physical segments: Current [0x2000000,0x20f0000) at index
2, previous [0x1000000,0x2100000)
  cpuid = 0
  time = 1
  KDB: stack backtrace:
  db_trace_self_wrapper(0,1a543e0,0,186a804,0,...) at
db_trace_self_wrapper+0x28/frame 0x20f9490
  vpanic(14836b9,20f94cc,20f94cc,20f950c,128637b,...) at vpanic+0xf4/frame
0x20f94ac
  panic(14836b9,2000000,0,20f0000,0,...) at panic+0x14/frame 0x20f94c0
  vm_phys_create_seg(20f0000,0) at vm_phys_create_seg+0x11b/frame 0x20f950c
  vm_phys_add_seg(2000000,0,20f0000,0) at vm_phys_add_seg+0xa9/frame 0x20f9528
  vm_phys_early_startup(46,181fad4,20f957c,2930000,1a54cac,...) at
vm_phys_early_startup+0x70/frame 0x20f9548
  vm_page_startup(2930000) at vm_page_startup+0x1e/frame 0x20f958c
  vm_mem_init(0) at vm_mem_init+0x18/frame 0x20f9598
  mi_startup() at mi_startup+0x1a4/frame 0x20f95b8
  btext() at btext+0x5f
  KDB: enter: panic
  [ thread pid 0 tid 0 ]
  Stopped at      kdb_enter+0x34: movl    $0,kdb_why

The only older i386 ISO snapshot I had lying around was 20241003, and that does
boot to the user-space installer. On IRC, several people asked me to provide
SMAP and boot -v output from such a successful boot:

  machdep.smap:
  SMAP type=01, xattr=00, base=0000000000000000, len=000000000009fc00
  SMAP type=02, xattr=00, base=000000000009fc00, len=0000000000000400
  SMAP type=02, xattr=00, base=00000000000e0000, len=0000000000020000
  SMAP type=01, xattr=00, base=0000000000100000, len=00000000bfef0000
  SMAP type=03, xattr=00, base=00000000bfff0000, len=000000000000f000
  SMAP type=04, xattr=00, base=00000000bffff000, len=0000000000001000

  vm.phys_segs:
  SEGMENT 0:

  start:     0x1000
  end:       0x9f000
  domain:    0
  free list: 0x1adddc8

  SEGMENT 1:

  start:     0x100000
  end:       0x1000000
  domain:    0
  free list: 0x1adddc8

  SEGMENT 2:

  start:     0x1000000
  end:       0x2100000
  domain:    0
  free list: 0x1addd44

  SEGMENT 3:

  start:     0x2000000
  end:       0x20f0000
  domain:    0
  free list: 0x1addd44

  SEGMENT 4:

  start:     0x2100000
  end:       0xbcaef000
  domain:    0
  free list: 0x1addd44

>From the panic backtrace it looks like segment 3 is being inserted at that
time. You can see that the older snapshot appears to boot fine, even though
segments 2 and 3 overlap from 0x2000000 to 0x2100000.

@jhb said I should create this PR and bug @markj about it, since he appears to
be the author of the early phys_seg stuff :)

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to