From: Russell King <rmk+lkml@arm.linux.org.uk>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: "Maciej W. Rozycki" <macro@linux-mips.org>,
linux-mips@linux-mips.org, linux-serial@vger.kernel.org,
linux-kernel@vger.kernel.org, Andy Whitcroft <apw@shadowen.org>
Subject: Re: [PATCH] zs: Move to the serial subsystem
Date: Wed, 30 May 2007 11:09:35 +0100 [thread overview]
Message-ID: <20070530100935.GC19552@flint.arm.linux.org.uk> (raw)
In-Reply-To: <20070530011224.bf36d2df.akpm@linux-foundation.org>
On Wed, May 30, 2007 at 01:12:24AM -0700, Andrew Morton wrote:
> > + if (status & (Rx_SYS | Rx_BRK))
> > + icount->brk++;
> > + else if (status & FRM_ERR)
> > + icount->frame++;
> > + else if (status & PAR_ERR)
> > + icount->parity++;
>
> FRM_ERR and PAR_ERR are mutually exclusive, and cannot be set if either
> Rx_SYS or Rx_BRK are set?
That's actually fairly normal. A break condition is by definition
a framing error, and possibly a parity error as well. Also, a break
condition is not an error per-se.
Also, if you do add in the associated framing or parity errors, you're
likely to get different results from different hardware - some hardware
mask off the framing and parity errors when detecting a break condition.
Others don't.
> > +/*
> > + * Finally, routines used to initialize the serial port.
> > + */
> > +static int zs_startup(struct uart_port *uport)
> > +{
> > + struct zs_port *zport = to_zport(uport);
> > + struct zs_scc *scc = zport->scc;
> > + unsigned long flags;
> > + int ret;
> > +
> > + if (!scc->irq_guard) {
> > + ret = request_irq(zport->port.irq, zs_interrupt,
> > + IRQF_SHARED, "scc", scc);
> > + if (ret) {
> > + printk(KERN_ERR "zs: can't get irq %d\n",
> > + zport->port.irq);
> > + return ret;
> > + }
> > + }
> > + scc->irq_guard++;
>
> The ->irq_guard handling looks a little racy?
>
> Perhaps higher-level locks prevent this. If so, a comment explaining this
> would be reassuring.
Does look racy if "scc" is shared between several ports. The locking
here is only per-port, so this is racy.
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of:
next prev parent reply other threads:[~2007-05-30 10:09 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-29 13:03 [PATCH] zs: Move to the serial subsystem Maciej W. Rozycki
2007-05-30 8:12 ` Andrew Morton
2007-05-30 9:54 ` Andy Whitcroft
2007-05-30 10:09 ` Russell King [this message]
2007-05-30 12:06 ` Maciej W. Rozycki
2007-05-30 16:58 ` Jan Rekorajski
2007-05-30 17:25 ` Maciej W. Rozycki
2007-06-01 12:50 ` Jan Rekorajski
2007-06-01 13:47 ` Maciej W. Rozycki
2007-06-01 14:03 ` Jan-Benedict Glaw
2007-06-01 15:11 ` Maciej W. Rozycki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070530100935.GC19552@flint.arm.linux.org.uk \
--to=rmk+lkml@arm.linux.org.uk \
--cc=akpm@linux-foundation.org \
--cc=apw@shadowen.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=linux-serial@vger.kernel.org \
--cc=macro@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.