Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 06 Aug 2016 23:54:26 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 209203] Suspend panics VESA driver
Message-ID:  <bug-209203-8-HXGRgNijdw@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-209203-8@https.bugs.freebsd.org/bugzilla/>
References:  <bug-209203-8@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D209203

--- Comment #6 from commit-hook@freebsd.org ---
A commit references this bug:

Author: jhb
Date: Sat Aug  6 23:53:34 UTC 2016
New revision: 303808
URL: https://svnweb.freebsd.org/changeset/base/303808

Log:
  MFC 303076,303225: Use MTX_SYSINIT for the VESA lock.

  303076:
  vesa: fix panic on suspend

  Fix the following panic seen when migrating a FreeBSD guest on Xen:

  panic: mtx_lock() of destroyed mutex @ /usr/src/sys/dev/fb/vesa.c:541
  cpuid =3D 0
  KDB: stack backtrace:
  db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame
0xfffffe001d2fa4f0
  vpanic() at vpanic+0x182/frame 0xfffffe001d2fa570
  kassert_panic() at kassert_panic+0x126/frame 0xfffffe001d2fa5e0
  __mtx_lock_flags() at __mtx_lock_flags+0x15b/frame 0xfffffe001d2fa630
  vesa_bios_save_restore() at vesa_bios_save_restore+0x78/frame
0xfffffe001d2fa680
  vga_suspend() at vga_suspend+0xa3/frame 0xfffffe001d2fa6b0
  isavga_suspend() at isavga_suspend+0x1d/frame 0xfffffe001d2fa6d0
  bus_generic_suspend_child() at bus_generic_suspend_child+0x44/frame
  [...]

  This is caused because vga_sub_configure (which is called if the VGA adap=
ter
  is attached after VESA tried to initialize), points to vesa_configure, wh=
ich
  doesn't initialize the VESA mutex. In order to fix it, make sure
  vga_sub_configure points to vesa_load, so that all the needed vesa
  components are properly initialized.

  303225:
  Use MTX_SYSINIT for the VESA lock.

  vesa_init_done isn't a reliable guard for the mutex init.  If
  vesa_configure() doesn't find valid VESA info it will not set
  vesa_init_done, but the lock will remain initialized.  Revert r303076
  and use MTX_SYSINIT to deterministically init the lock.

  PR:           209203

Changes:
_U  stable/10/
  stable/10/sys/dev/fb/vesa.c
_U  stable/9/sys/
_U  stable/9/sys/dev/
  stable/9/sys/dev/fb/vesa.c

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-209203-8-HXGRgNijdw>