[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20080523113650.2467f2ee.randy.dunlap@oracle.com>
Date: Fri, 23 May 2008 11:36:50 -0700
From: Randy Dunlap <randy.dunlap@...cle.com>
To: "Hans J. Koch" <hjk@...utronix.de>
Cc: Uwe Kleine-König <Uwe.Kleine-Koenig@...i.com>,
<linux-kernel@...r.kernel.org>,
Greg Kroah-Hartman <gregkh@...e.de>,
Jan Altenberg <jan.altenberg@...utronix.de>,
Thomas Gleixner <tglx@...utronix.de>,
Magnus Damm <magnus.damm@...il.com>
Subject: Re: [PATCH 1/1] UIO: Add a write() function to enable/disable
interrupts
On Fri, 23 May 2008 13:55:57 +0200 Hans J. Koch wrote:
> Documentation/DocBook/uio-howto.tmpl | 40 ++++++++++++++++++++++++++++++++++-
> drivers/uio/uio.c | 26 ++++++++++++++++++++++
> include/linux/uio_driver.h | 2 +
> 3 files changed, 67 insertions(+), 1 deletion(-)
>
> Index: linux-2.6.26-rc/Documentation/DocBook/uio-howto.tmpl
> ===================================================================
> --- linux-2.6.26-rc.orig/Documentation/DocBook/uio-howto.tmpl 2008-05-22 20:22:57.000000000 +0200
> +++ linux-2.6.26-rc/Documentation/DocBook/uio-howto.tmpl 2008-05-23 11:57:23.000000000 +0200
> @@ -30,6 +30,12 @@
>
> <revhistory>
> <revision>
> + <revnumber>0.5</revnumber>
> + <date>2008-05-22</date>
> + <authorinitials>hjk</authorinitials>
> + <revremark>Added description of write() function.</revremark>
> + </revision>
> + <revision>
> <revnumber>0.4</revnumber>
> <date>2007-11-26</date>
> <authorinitials>hjk</authorinitials>
> @@ -64,7 +70,7 @@
> <?dbhtml filename="copyright.html"?>
> <title>Copyright and License</title>
> <para>
> - Copyright (c) 2006 by Hans-Jürgen Koch.</para>
> + Copyright (c) 2006-2008 by Hans-Jürgen Koch.</para>
> <para>
> This documentation is Free Software licensed under the terms of the
> GPL version 2.
> @@ -189,6 +195,30 @@
> represents the total interrupt count. You can use this number
> to figure out if you missed some interrupts.
> </para>
> + <para>
> + For some hardware that has more than one interrupt source internally,
> + but not seperate IRQ mask and status registers, there might be
separate
> + situations where userspace cannot determine what the interrupt source
> + was if the kernel handler disables them by writing to the chip's IRQ
> + register. In such a case, the kernel has to disable the IRQ completely
> + to leave the chip's register untouched. Now the userspace part can
> + determine the cause of the interrupt, but it cannot re-enable
> + interrupts. Another cornercase are chips where re-enabling interrupts
is
> + is a read-modify-write operation to a combined IRQ status/acknowledge
> + register. This would be racy if a new interrupt occured
occurred
> + simultaneously.
> + </para>
> + <para>
> + To address these problems, UIO also implements a write() function. It
> + is normally not used and can be ignored for hardware that has only a
> + single interrupt source or has seperate IRQ mask and status registers.
separate
["There's <a rat> in separate."]
> + If you need it, however, a write to <filename>/dev/uioX</filename>
> + will call the <function>irqcontrol()</function> function implemented
> + by the driver. You have to write a 32-bit value that is usually either
> + 0 or 1 do disable or enable interrupts. If a driver does not implement
to
> + <function>irqcontrol()</function>, <function>write()</function> will
> + return with <varname>-ENOSYS</varname>.
> + </para>
---
~Randy
--
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