[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110127211151.GC1597@n2100.arm.linux.org.uk>
Date: Thu, 27 Jan 2011 21:11:51 +0000
From: Russell King - ARM Linux <linux@....linux.org.uk>
To: Alan Cox <alan@...rguk.ukuu.org.uk>
Cc: Saravana Kannan <skannan@...eaurora.org>,
Lorenzo Pieralisi <Lorenzo.Pieralisi@....com>,
Vincent Guittot <vincent.guittot@...aro.org>,
linux-sh <linux-sh@...r.kernel.org>,
Ben Herrenschmidt <benh@...nel.crashing.org>,
Sascha Hauer <s.hauer@...gutronix.de>,
linux-kernel <linux-kernel@...r.kernel.org>,
Colin Cross <ccross@...gle.com>,
Ben Dooks <ben-linux@...ff.org>,
Uwe Kleine-König
<u.kleine-koenig@...gutronix.de>,
Jeremy Kerr <jeremy.kerr@...onical.com>,
linux-arm-kernel <linux-arm-kernel@...ts.infradead.org>,
Richard Zhao <linuxzsc@...il.com>
Subject: Re: Locking in the clk API
On Thu, Jan 27, 2011 at 09:07:29PM +0000, Alan Cox wrote:
> > > For internal tree purposes, does .set_termios need to be atomic? Can it
> > > grab mutexes instead of spinlock?
> >
> > I think I already answered that question above where I said "protect
> > against the interrupt handler accessing the port->* stuff".
>
> I'm not sure you answered it correctly however as the locking nowdays is
> a bit different.
>
> Architecturally the termios handling doesn't need a spin lock nor is it
> called under one. In fact it's vital this is the case because of USB.
It needs to protect against the read_status_mask and ignore_status_mask
being read half-way through an update by the interrupt handler, otherwise
you can end up with god-knows-what coming through from each termios
change.
Eg, you could see an effective CREAD flip when the state of CREAD wasn't
actually changed.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists