Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 01 Oct 2004 00:13:01 -0400
From:      Stephan Uphoff <ups@tree.com>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        "freebsd-arch@freebsd.org" <freebsd-arch@FreeBSD.org>
Subject:   Re: scheduler (sched_4bsd) questions
Message-ID:  <1096603981.21577.195.camel@palm.tree.com>
In-Reply-To: <1096496057.3733.2163.camel@palm.tree.com>
References:  <1095468747.31297.241.camel@palm.tree.com> <1096477932.3733.1471.camel@palm.tree.com> <1096489576.3733.1868.camel@palm.tree.com> <200409291652.29990.jhb@FreeBSD.org> <1096496057.3733.2163.camel@palm.tree.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 2004-09-29 at 18:14, Stephan Uphoff wrote:
> I was looking at the MUTEX_WAKE_ALL undefined case when I used the
> critical section for turnstile_claim().
> However there are bigger problems with MUTEX_WAKE_ALL undefined
> so you are right - the critical section for turnstile_claim is pretty
> useless.

Arghhh !!!

MUTEX_WAKE_ALL is NOT an option in GENERIC.
I recall verifying that it is defined twice. Guess I must have looked at
the wrong source tree :-(
This means yes - we have bigger problems!

Example:

Thread A holds a mutex x contested by Thread B and C and has priority
pri(A).

Thread C holds a mutex y and pri(B) < pri(C)

Thread A releases the lock wakes thread B but lets C on the turnstile
wait queue.

An interrupt thread I tries to lock mutex y owned by C.

However priority inheritance does not work since B needs to run first to
take ownership of the lock.

I is blocked :-(

This was found using Peter Holm's test and a slight modification of this
giant hog detector. (kern_clock.diff)

I definitely won't have time to fix kern_mutex.c for the next few days
so please add the line:

options		MUTEX_WAKE_ALL		# Needed do not remove

to your configuration files.

I also had overlooked 
	 	http://www.holm.cc/stress/log/cons80.html
Showing that my patch for kern_switch.c (switch_patch) has a bug.
I will send an updated patch later today.

	Stephan

PS: I love the firewire debugging speed!



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1096603981.21577.195.camel>