svn commit: r303225 - head/sys/dev/fb
John Baldwin
jhb at FreeBSD.org
Sat Jul 23 14:38:10 UTC 2016
Author: jhb
Date: Sat Jul 23 14:38:09 2016
New Revision: 303225
URL: https://svnweb.freebsd.org/changeset/base/303225
Log:
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.
Reviewed by: royger
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D7290
Modified:
head/sys/dev/fb/vesa.c
Modified: head/sys/dev/fb/vesa.c
==============================================================================
--- head/sys/dev/fb/vesa.c Sat Jul 23 12:34:32 2016 (r303224)
+++ head/sys/dev/fb/vesa.c Sat Jul 23 14:38:09 2016 (r303225)
@@ -79,6 +79,7 @@ struct adp_state {
typedef struct adp_state adp_state_t;
static struct mtx vesa_lock;
+MTX_SYSINIT(vesa_lock, &vesa_lock, "VESA lock", MTX_DEF);
static int vesa_state;
static void *vesa_state_buf;
@@ -134,7 +135,6 @@ static vi_fill_rect_t vesa_fill_rect;
static vi_bitblt_t vesa_bitblt;
static vi_diag_t vesa_diag;
static int vesa_bios_info(int level);
-static int vesa_late_load(int flags);
static video_switch_t vesavidsw = {
vesa_probe,
@@ -1142,7 +1142,7 @@ vesa_configure(int flags)
* initialization for now and try again later.
*/
if (adp == NULL) {
- vga_sub_configure = vesa_late_load;
+ vga_sub_configure = vesa_configure;
return (ENODEV);
}
@@ -1910,27 +1910,14 @@ vesa_bios_info(int level)
static int
vesa_load(void)
{
-
- return (vesa_late_load(0));
-}
-
-/*
- * To be called from the vga_sub_configure hook in case the VGA adapter is
- * not found when VESA is loaded.
- */
-static int
-vesa_late_load(int flags)
-{
int error;
if (vesa_init_done)
return (0);
- mtx_init(&vesa_lock, "VESA lock", NULL, MTX_DEF);
-
/* locate a VGA adapter */
vesa_adp = NULL;
- error = vesa_configure(flags);
+ error = vesa_configure(0);
if (error == 0)
vesa_bios_info(bootverbose);
@@ -1966,7 +1953,6 @@ vesa_unload(void)
}
vesa_bios_uninit();
- mtx_destroy(&vesa_lock);
return (error);
}
More information about the svn-src-all
mailing list