All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-core] [PATCH] avoid installing inappropriate IRQ dispatcher
@ 2006-10-16  9:42 Jan Kiszka
  2006-10-20 14:14 ` Philippe Gerum
  0 siblings, 1 reply; 2+ messages in thread
From: Jan Kiszka @ 2006-10-16  9:42 UTC (permalink / raw)
  To: xenomai-core

[-- Attachment #1: Type: text/plain, Size: 490 bytes --]

In the (corner) case that someone requests to install a shared edge IRQ
while the related support is not enabled (!CONFIG_XENO_OPT_SHIRQ_EDGE),
BUT the opposite type (CONFIG_XENO_OPT_SHIRQ_LEVEL), Xenomai so far
incorrectly installs the level-type handler. For the other way around,
the non-shared dispatch handler is installed, which is also not correct.

This patch fixes the issue by returning an error on registration,
clearly indicating the system misconfiguration to the caller.

Jan

[-- Attachment #2: pick-shared-irq-handler.patch --]
[-- Type: text/plain, Size: 1452 bytes --]

---
 ChangeLog           |    5 +++++
 ksrc/nucleus/intr.c |   15 ++++++++++-----
 2 files changed, 15 insertions(+), 5 deletions(-)

Index: ksrc/nucleus/intr.c
===================================================================
--- ksrc/nucleus/intr.c.orig
+++ ksrc/nucleus/intr.c
@@ -340,14 +340,19 @@ static inline int xnintr_irq_attach(xnin
 		void (*handler) (unsigned, void *) = &xnintr_irq_handler;
 
 		if (intr->flags & XN_ISR_SHARED) {
-#if defined(CONFIG_XENO_OPT_SHIRQ_LEVEL)
-			handler = &xnintr_shirq_handler;
-#endif /* CONFIG_XENO_OPT_SHIRQ_LEVEL */
-
-#if defined(CONFIG_XENO_OPT_SHIRQ_EDGE)
 			if (intr->flags & XN_ISR_EDGE)
+#if defined(CONFIG_XENO_OPT_SHIRQ_EDGE)
 				handler = &xnintr_edge_shirq_handler;
+#else /* !CONFIG_XENO_OPT_SHIRQ_EDGE */
+				return -ENOSYS;
 #endif /* CONFIG_XENO_OPT_SHIRQ_EDGE */
+			else
+#if defined(CONFIG_XENO_OPT_SHIRQ_LEVEL)
+				handler = &xnintr_shirq_handler;
+#else /* !CONFIG_XENO_OPT_SHIRQ_LEVEL */
+				return -ENOSYS;
+#endif /* CONFIG_XENO_OPT_SHIRQ_LEVEL */
+
 		}
 		shirq->unhandled = 0;
 
Index: ChangeLog
===================================================================
--- ChangeLog.orig
+++ ChangeLog
@@ -1,3 +1,8 @@
+2006-10-16  Jan Kiszka  <jan.kiszka@domain.hid>
+
+	* ksrc/nucleus/intr.x (xnintr_irq_attach): Return error on
+	mismatching shared-IRQ support.
+
 2006-10-15  Philippe Gerum  <rpm@xenomai.org>
 
 	* ksrc/arch/powerpc/patches: Upgrade to 2.6.14-ppc-1.5-00.

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Xenomai-core] [PATCH] avoid installing inappropriate IRQ dispatcher
  2006-10-16  9:42 [Xenomai-core] [PATCH] avoid installing inappropriate IRQ dispatcher Jan Kiszka
@ 2006-10-20 14:14 ` Philippe Gerum
  0 siblings, 0 replies; 2+ messages in thread
From: Philippe Gerum @ 2006-10-20 14:14 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: xenomai-core

On Mon, 2006-10-16 at 11:42 +0200, Jan Kiszka wrote:
> In the (corner) case that someone requests to install a shared edge IRQ
> while the related support is not enabled (!CONFIG_XENO_OPT_SHIRQ_EDGE),
> BUT the opposite type (CONFIG_XENO_OPT_SHIRQ_LEVEL), Xenomai so far
> incorrectly installs the level-type handler. For the other way around,
> the non-shared dispatch handler is installed, which is also not correct.
> 
> This patch fixes the issue by returning an error on registration,
> clearly indicating the system misconfiguration to the caller.
> 

Merged, thanks.

> Jan
> plain text document attachment (pick-shared-irq-handler.patch)
> ---
>  ChangeLog           |    5 +++++
>  ksrc/nucleus/intr.c |   15 ++++++++++-----
>  2 files changed, 15 insertions(+), 5 deletions(-)
> 
> Index: ksrc/nucleus/intr.c
> ===================================================================
> --- ksrc/nucleus/intr.c.orig
> +++ ksrc/nucleus/intr.c
> @@ -340,14 +340,19 @@ static inline int xnintr_irq_attach(xnin
>  		void (*handler) (unsigned, void *) = &xnintr_irq_handler;
>  
>  		if (intr->flags & XN_ISR_SHARED) {
> -#if defined(CONFIG_XENO_OPT_SHIRQ_LEVEL)
> -			handler = &xnintr_shirq_handler;
> -#endif /* CONFIG_XENO_OPT_SHIRQ_LEVEL */
> -
> -#if defined(CONFIG_XENO_OPT_SHIRQ_EDGE)
>  			if (intr->flags & XN_ISR_EDGE)
> +#if defined(CONFIG_XENO_OPT_SHIRQ_EDGE)
>  				handler = &xnintr_edge_shirq_handler;
> +#else /* !CONFIG_XENO_OPT_SHIRQ_EDGE */
> +				return -ENOSYS;
>  #endif /* CONFIG_XENO_OPT_SHIRQ_EDGE */
> +			else
> +#if defined(CONFIG_XENO_OPT_SHIRQ_LEVEL)
> +				handler = &xnintr_shirq_handler;
> +#else /* !CONFIG_XENO_OPT_SHIRQ_LEVEL */
> +				return -ENOSYS;
> +#endif /* CONFIG_XENO_OPT_SHIRQ_LEVEL */
> +
>  		}
>  		shirq->unhandled = 0;
>  
> Index: ChangeLog
> ===================================================================
> --- ChangeLog.orig
> +++ ChangeLog
> @@ -1,3 +1,8 @@
> +2006-10-16  Jan Kiszka  <jan.kiszka@domain.hid>
> +
> +	* ksrc/nucleus/intr.x (xnintr_irq_attach): Return error on
> +	mismatching shared-IRQ support.
> +
>  2006-10-15  Philippe Gerum  <rpm@xenomai.org>
>  
>  	* ksrc/arch/powerpc/patches: Upgrade to 2.6.14-ppc-1.5-00.
> _______________________________________________
> Xenomai-core mailing list
> Xenomai-core@domain.hid
> https://mail.gna.org/listinfo/xenomai-core
-- 
Philippe.




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-10-20 14:14 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-10-16  9:42 [Xenomai-core] [PATCH] avoid installing inappropriate IRQ dispatcher Jan Kiszka
2006-10-20 14:14 ` Philippe Gerum

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.