Force a commit on kern_mutex.c to explain reason for last commit but while
I'm at it also add a comment in mtx_validate() explaining the purpose of the last change. Basically, this fixes booting kernels compiled with MUTEX_DEBUG. What used to happen is before we setidt from init386() [still using BTX idt], we called mtx_init() on several mutex locks, notably Giant and some others. This is a problem for MUTEX_DEBUG because it enables mtx_validate() which calls kernacc(), some of which in turn requires Giant. Fix by calling kernacc() from mtx_validate() only if (!cold).
This commit is contained in:
parent
ab07087e16
commit
76dcbd6f9f
@ -611,6 +611,11 @@ mtx_validate(struct mtx *m)
|
||||
* we can re-enable the kernacc() checks.
|
||||
*/
|
||||
#ifndef __alpha__
|
||||
/*
|
||||
* Can't call kernacc() from early init386(), especially when
|
||||
* initializing Giant mutex, because some stuff in kernacc()
|
||||
* requires Giant itself.
|
||||
*/
|
||||
if (!cold)
|
||||
if (!kernacc((caddr_t)m, sizeof(m),
|
||||
VM_PROT_READ | VM_PROT_WRITE))
|
||||
|
@ -611,6 +611,11 @@ mtx_validate(struct mtx *m)
|
||||
* we can re-enable the kernacc() checks.
|
||||
*/
|
||||
#ifndef __alpha__
|
||||
/*
|
||||
* Can't call kernacc() from early init386(), especially when
|
||||
* initializing Giant mutex, because some stuff in kernacc()
|
||||
* requires Giant itself.
|
||||
*/
|
||||
if (!cold)
|
||||
if (!kernacc((caddr_t)m, sizeof(m),
|
||||
VM_PROT_READ | VM_PROT_WRITE))
|
||||
|
Loading…
Reference in New Issue
Block a user