Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 May 2001 00:53:14 +1000 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org, Brian Somers <brian@FreeBSD.org>
Subject:   RE: cvs commit: src/sys/dev/digi digi.c digi.h digi_isa.c digi_p
Message-ID:  <Pine.BSF.4.21.0105090038490.10996-100000@besplex.bde.org>
In-Reply-To: <XFMail.010507084340.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 7 May 2001, John Baldwin wrote:

> On 07-May-01 John Baldwin wrote:
> > 
> > On 07-May-01 Brian Somers wrote:
> >> brian       2001/05/07 04:13:13 PDT
> >> 
> >>   Modified files:
> >>     sys/dev/digi         digi.c digi.h digi_isa.c digi_pci.c 
> >>   Log:
> >>   Change COM_LOCK/COM_UNLOCK to a regular mutex - still conditional on
> >>   SMP being defined.
> > 
> > Woah.  COM_LOCK is a special case due to sio/cy using fast interrupt
> > handlers,

Except sio doesn't actually use it.  It is a legacy from SMPog where some
complications for locking were hidden in system-wide macros.

> > and if digi is using a fast interrupt handler, then it needs to be a spin
> > mutex, not a regular mutex.  Also, mutexes should be on all the time, not
> > just
> >#ifdef SMP.  Note that COM_LOCK is always defined now.
> 
> Well, having checked the code, it seems you don't use fast interrupt handlers,
> so you didn't need COM_LOCK to begin with and you don't need the mutex you are
> using right now.

I complained about this in private mail a couple of days ago.

> tty drivers won't be locked until the tty subsystem is locked
> and we figure out how we are going to lock tty data structures.

And that will involve a lot more than locks in tty interrupt handlers.
In SMPog, locking for tty interrupt handlers was so simple and efficient
that it was done automatically in Xintr*().  Everything except the
handlers needed explicit locking (spltty()).  SMPng locking might
involve locking each struct tty and hopefully no global locks.  Perhaps
a global lock (spltty() == mtx_lock(&Giant_tty_lock)) would be sufficient
except for systems with hundreds of active ttys on >= 3 CPUs.

Bruce


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0105090038490.10996-100000>