[Xenomai-git] Philippe Gerum : cobalt/arm64: drop obsolete config knob

2015-11-26 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: ab35b3a6075b1b72bfe73c317236a243cd8d3677
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=ab35b3a6075b1b72bfe73c317236a243cd8d3677

Author: Philippe Gerum 
Date:   Sat Nov 14 18:17:49 2015 +0100

cobalt/arm64: drop obsolete config knob

All existing ARM64 pipeline implementations provide the
CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH knob, which is tested directly in
the Xenomai code base.  No need for CONFIG_XENO_ARCH_UNLOCKED_SWITCH
anymore.

---

 kernel/cobalt/arch/arm64/Kconfig |3 ---
 1 file changed, 3 deletions(-)

diff --git a/kernel/cobalt/arch/arm64/Kconfig b/kernel/cobalt/arch/arm64/Kconfig
index 572de3e..bdf5f16 100644
--- a/kernel/cobalt/arch/arm64/Kconfig
+++ b/kernel/cobalt/arch/arm64/Kconfig
@@ -1,9 +1,6 @@
 source "kernel/xenomai/Kconfig"
 source "drivers/xenomai/Kconfig"
 
-config XENO_ARCH_UNLOCKED_SWITCH
-   def_bool IPIPE_WANT_PREEMPTIBLE_SWITCH
-
 config XENO_ARCH_FPU
def_bool y
 


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : cobalt/powerpc: drop obsolete config knob

2015-11-26 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: aea54828bd4d31ea8222cd6d1a98d0afdb1d30e3
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=aea54828bd4d31ea8222cd6d1a98d0afdb1d30e3

Author: Philippe Gerum 
Date:   Sat Nov 14 18:14:53 2015 +0100

cobalt/powerpc: drop obsolete config knob

As of fbe1164, CONFIG_XENO_ARCH_UNLOCKED_SWITCH is not tested anymore
in the code base.

---

 kernel/cobalt/arch/powerpc/Kconfig |3 ---
 1 file changed, 3 deletions(-)

diff --git a/kernel/cobalt/arch/powerpc/Kconfig 
b/kernel/cobalt/arch/powerpc/Kconfig
index 1cabef3..2069288 100644
--- a/kernel/cobalt/arch/powerpc/Kconfig
+++ b/kernel/cobalt/arch/powerpc/Kconfig
@@ -10,6 +10,3 @@ config XENO_ARCH_FPU
 
 config XENO_ARCH_SYS3264
 def_bool n
-
-config XENO_ARCH_UNLOCKED_SWITCH
-   def_bool n


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : cobalt/sched: detect preemptible switch support in pipeline

2015-11-26 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: fbe1164d2ae9c11a24e4c25a64bad2774cba3e9d
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=fbe1164d2ae9c11a24e4c25a64bad2774cba3e9d

Author: Philippe Gerum 
Date:   Sat Nov 14 18:07:15 2015 +0100

cobalt/sched: detect preemptible switch support in pipeline

CONFIG_XENO_ARCH_UNLOCKED_SWITCH is merely an alias for
CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH, which is only meaningful to the
ARM architecture, now that PowerPC dropped such support.

Use the pipeline symbol directly to make the dependency explicit.

---

 include/cobalt/kernel/sched.h |8 
 kernel/cobalt/sched.c |   16 
 kernel/cobalt/thread.c|2 +-
 3 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/include/cobalt/kernel/sched.h b/include/cobalt/kernel/sched.h
index fe1df7d..d5d93c2 100644
--- a/include/cobalt/kernel/sched.h
+++ b/include/cobalt/kernel/sched.h
@@ -93,7 +93,7 @@ struct xnsched {
struct xntimer rrbtimer;
/*!< Root thread control block. */
struct xnthread rootcb;
-#ifdef CONFIG_XENO_ARCH_UNLOCKED_SWITCH
+#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
struct xnthread *last;
 #endif
 #ifdef CONFIG_XENO_ARCH_FPU
@@ -329,7 +329,7 @@ static inline int xnsched_primary_p(void)
return !xnsched_unblockable_p();
 }
 
-#ifdef CONFIG_XENO_ARCH_UNLOCKED_SWITCH
+#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
 
 struct xnsched *xnsched_finish_unlocked_switch(struct xnsched *sched);
 
@@ -341,7 +341,7 @@ int xnsched_maybe_resched_after_unlocked_switch(struct 
xnsched *sched)
return sched->status & XNRESCHED;
 }
 
-#else /* !CONFIG_XENO_ARCH_UNLOCKED_SWITCH */
+#else /* !CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH */
 
 static inline struct xnsched *
 xnsched_finish_unlocked_switch(struct xnsched *sched)
@@ -358,7 +358,7 @@ xnsched_maybe_resched_after_unlocked_switch(struct xnsched 
*sched)
return 0;
 }
 
-#endif /* !CONFIG_XENO_ARCH_UNLOCKED_SWITCH */
+#endif /* !CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH */
 
 #ifdef CONFIG_XENO_OPT_WATCHDOG
 static inline void xnsched_reset_watchdog(struct xnsched *sched)
diff --git a/kernel/cobalt/sched.c b/kernel/cobalt/sched.c
index fa96cd3..fb20265 100644
--- a/kernel/cobalt/sched.c
+++ b/kernel/cobalt/sched.c
@@ -292,7 +292,7 @@ struct xnthread *xnsched_pick_next(struct xnsched *sched)
 #endif /* CONFIG_XENO_OPT_SCHED_CLASSES */
 }
 
-#ifdef CONFIG_XENO_ARCH_UNLOCKED_SWITCH
+#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
 
 struct xnsched *xnsched_finish_unlocked_switch(struct xnsched *sched)
 {
@@ -318,7 +318,7 @@ struct xnsched *xnsched_finish_unlocked_switch(struct 
xnsched *sched)
return sched;
 }
 
-#endif /* CONFIG_XENO_ARCH_UNLOCKED_SWITCH */
+#endif /* CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH */
 
 void xnsched_lock(void)
 {
@@ -493,16 +493,16 @@ void xnsched_migrate(struct xnthread *thread, struct 
xnsched *sched)
xnsched_set_resched(thread->sched);
migrate_thread(thread, sched);
 
-#ifdef CONFIG_XENO_ARCH_UNLOCKED_SWITCH
+#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
/*
 * Mark the thread in flight, xnsched_finish_unlocked_switch()
 * will put the thread on the remote runqueue.
 */
xnthread_set_state(thread, XNMIGRATE);
-#else /* !CONFIG_XENO_ARCH_UNLOCKED_SWITCH */
+#else
/* Move thread to the remote runnable queue. */
xnsched_putback(thread);
-#endif /* !CONFIG_XENO_ARCH_UNLOCKED_SWITCH */
+#endif
 }
 
 /*
@@ -708,11 +708,11 @@ struct xnthread *xnsched_rt_pick(struct xnsched *sched)
 static inline void switch_context(struct xnsched *sched,
  struct xnthread *prev, struct xnthread *next)
 {
-#ifdef CONFIG_XENO_ARCH_UNLOCKED_SWITCH
+#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
sched->last = prev;
sched->status |= XNINSW;
xnlock_clear_irqon();
-#endif /* !CONFIG_XENO_ARCH_UNLOCKED_SWITCH */
+#endif
 
xnarch_switch_to(prev, next);
 }
@@ -787,7 +787,7 @@ static inline void enter_root(struct xnthread *root)
 {
struct xnarchtcb *rootcb __maybe_unused = xnthread_archtcb(root);
 
-#ifdef CONFIG_XENO_ARCH_UNLOCKED_SWITCH
+#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
if (rootcb->core.mm == NULL)
set_ti_thread_flag(rootcb->core.tip, TIF_MMSWITCH_INT);
 #endif
diff --git a/kernel/cobalt/thread.c b/kernel/cobalt/thread.c
index 77cea1a..f3d57a8 100644
--- a/kernel/cobalt/thread.c
+++ b/kernel/cobalt/thread.c
@@ -394,7 +394,7 @@ EXPORT_SYMBOL_GPL(xnthread_prepare_wait);
 static inline int moving_target(struct xnsched *sched, struct xnthread *thread)
 {
int ret = 0;
-#ifdef CONFIG_XENO_ARCH_UNLOCKED_SWITCH
+#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH
/*
 * When deleting a thread in the course of a context switch or
 * in flight to another CPU with nklock unlocked on a distant


___
Xenomai-git mailing list

[Xenomai-git] Philippe Gerum : cobalt/powerpc: track current mm unconditionally

2015-11-26 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 621dd3b848cdf32cd1ceab81e6862b0449605b82
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=621dd3b848cdf32cd1ceab81e6862b0449605b82

Author: Philippe Gerum 
Date:   Sat Nov 14 15:21:02 2015 +0100

cobalt/powerpc: track current mm unconditionally

All pipelines Cobalt can work with (i.e. 3.10+) for the powerpc
architecture do provide the mm tracking feature unconditionally, so
there is no point in keeping any build switch for it.

---

 kernel/cobalt/arch/powerpc/Kconfig |4 
 1 file changed, 4 deletions(-)

diff --git a/kernel/cobalt/arch/powerpc/Kconfig 
b/kernel/cobalt/arch/powerpc/Kconfig
index 2bbac89..40eae0b 100644
--- a/kernel/cobalt/arch/powerpc/Kconfig
+++ b/kernel/cobalt/arch/powerpc/Kconfig
@@ -5,12 +5,8 @@ config XENO_ARCH_MATH_EMU
 bool
default y if MATH_EMU || MATH_EMULATION
 
-config IPIPE_WANT_ACTIVE_MM
-bool
-
 config IPIPE_WANT_PREEMPTIBLE_SWITCH
 bool
-   select IPIPE_WANT_ACTIVE_MM
default y if XENO_ARCH_UNLOCKED_SWITCH
default n if !XENO_ARCH_UNLOCKED_SWITCH
 


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : cobalt/thread: track thread_info unconditionally

2015-11-26 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 13db1e66a36faa5b2852760459ab48b7db0773da
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=13db1e66a36faa5b2852760459ab48b7db0773da

Author: Philippe Gerum 
Date:   Sat Nov 14 14:47:44 2015 +0100

cobalt/thread: track thread_info unconditionally

We almost always want to track the thread_info structure of the host
task in the core tcb, and doing so is cheap, so there is no point in
building this support conditionally.

---

 kernel/cobalt/arch/arm/Kconfig |3 ---
 kernel/cobalt/arch/arm64/Kconfig   |3 ---
 kernel/cobalt/arch/powerpc/Kconfig |4 
 kernel/cobalt/include/asm-generic/xenomai/thread.h |2 --
 kernel/cobalt/sched.c  |2 --
 kernel/cobalt/thread.c |4 
 6 files changed, 18 deletions(-)

diff --git a/kernel/cobalt/arch/arm/Kconfig b/kernel/cobalt/arch/arm/Kconfig
index dc6485d..2043d70 100644
--- a/kernel/cobalt/arch/arm/Kconfig
+++ b/kernel/cobalt/arch/arm/Kconfig
@@ -26,9 +26,6 @@ config IPIPE_WANT_PREEMPTIBLE_SWITCH
 config IPIPE_WANT_ACTIVE_MM
def_bool y
 
-config XENO_ARCH_WANT_TIP
-   def_bool y
-
 config XENO_ARCH_FPU
def_bool VFP
 
diff --git a/kernel/cobalt/arch/arm64/Kconfig b/kernel/cobalt/arch/arm64/Kconfig
index 27b5026..572de3e 100644
--- a/kernel/cobalt/arch/arm64/Kconfig
+++ b/kernel/cobalt/arch/arm64/Kconfig
@@ -4,9 +4,6 @@ source "drivers/xenomai/Kconfig"
 config XENO_ARCH_UNLOCKED_SWITCH
def_bool IPIPE_WANT_PREEMPTIBLE_SWITCH
 
-config XENO_ARCH_WANT_TIP
-   def_bool y
-
 config XENO_ARCH_FPU
def_bool y
 
diff --git a/kernel/cobalt/arch/powerpc/Kconfig 
b/kernel/cobalt/arch/powerpc/Kconfig
index ef49798..2bbac89 100644
--- a/kernel/cobalt/arch/powerpc/Kconfig
+++ b/kernel/cobalt/arch/powerpc/Kconfig
@@ -14,9 +14,6 @@ config IPIPE_WANT_PREEMPTIBLE_SWITCH
default y if XENO_ARCH_UNLOCKED_SWITCH
default n if !XENO_ARCH_UNLOCKED_SWITCH
 
-config XENO_ARCH_WANT_TIP
-   bool
-
 config XENO_ARCH_FPU
def_bool PPC_FPU
 
@@ -28,7 +25,6 @@ menu "Machine/platform-specific options"
 config XENO_ARCH_UNLOCKED_SWITCH
bool "Unlocked context switch"
depends on IPIPE_HAVE_PREEMPTIBLE_SWITCH
-   select XENO_ARCH_WANT_TIP
default y
help
 
diff --git a/kernel/cobalt/include/asm-generic/xenomai/thread.h 
b/kernel/cobalt/include/asm-generic/xenomai/thread.h
index 5c1bcc4..b559004 100644
--- a/kernel/cobalt/include/asm-generic/xenomai/thread.h
+++ b/kernel/cobalt/include/asm-generic/xenomai/thread.h
@@ -33,9 +33,7 @@ struct xntcb {
struct mm_struct *mm;
struct mm_struct *active_mm;
struct thread_struct ts;
-#ifdef CONFIG_XENO_ARCH_WANT_TIP
struct thread_info *tip;
-#endif
 #ifdef CONFIG_XENO_ARCH_FPU
struct task_struct *user_fpu_owner;
 #endif
diff --git a/kernel/cobalt/sched.c b/kernel/cobalt/sched.c
index 0b7b93c..fa96cd3 100644
--- a/kernel/cobalt/sched.c
+++ b/kernel/cobalt/sched.c
@@ -805,9 +805,7 @@ static inline void leave_root(struct xnthread *root)
rootcb->core.host_task = p;
rootcb->core.tsp = >thread;
rootcb->core.mm = rootcb->core.active_mm = ipipe_get_active_mm();
-#ifdef CONFIG_XENO_ARCH_WANT_TIP
rootcb->core.tip = task_thread_info(p);
-#endif
xnarch_leave_root(root);
 }
 
diff --git a/kernel/cobalt/thread.c b/kernel/cobalt/thread.c
index bffa5b8..77cea1a 100644
--- a/kernel/cobalt/thread.c
+++ b/kernel/cobalt/thread.c
@@ -247,9 +247,7 @@ void xnthread_init_shadow_tcb(struct xnthread *thread)
tcb->core.tsp = >thread;
tcb->core.mm = p->mm;
tcb->core.active_mm = p->mm;
-#ifdef CONFIG_XENO_ARCH_WANT_TIP
tcb->core.tip = task_thread_info(p);
-#endif
 #ifdef CONFIG_XENO_ARCH_FPU
tcb->core.user_fpu_owner = p;
 #endif /* CONFIG_XENO_ARCH_FPU */
@@ -265,9 +263,7 @@ void xnthread_init_root_tcb(struct xnthread *thread)
tcb->core.host_task = p;
tcb->core.tsp = >core.ts;
tcb->core.mm = p->mm;
-#ifdef CONFIG_XENO_ARCH_WANT_TIP
tcb->core.tip = NULL;
-#endif
xnarch_init_root_tcb(thread);
 }
 


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : cobalt/arm: track current mm unconditionally

2015-11-26 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 96cb425e0d51f33ad91f94409563272ec38c0522
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=96cb425e0d51f33ad91f94409563272ec38c0522

Author: Philippe Gerum 
Date:   Sat Nov 14 15:21:02 2015 +0100

cobalt/arm: track current mm unconditionally

All pipelines Cobalt can work with (i.e. 3.10+) for the arm
architecture do provide the mm tracking feature unconditionally, so
there is no point in keeping any build switch for it.

---

 kernel/cobalt/arch/arm/Kconfig |3 ---
 1 file changed, 3 deletions(-)

diff --git a/kernel/cobalt/arch/arm/Kconfig b/kernel/cobalt/arch/arm/Kconfig
index 2043d70..0c4e0aa 100644
--- a/kernel/cobalt/arch/arm/Kconfig
+++ b/kernel/cobalt/arch/arm/Kconfig
@@ -23,9 +23,6 @@ config IPIPE_WANT_PREEMPTIBLE_SWITCH
default y if XENO_ARCH_UNLOCKED_SWITCH
default n if !XENO_ARCH_UNLOCKED_SWITCH
 
-config IPIPE_WANT_ACTIVE_MM
-   def_bool y
-
 config XENO_ARCH_FPU
def_bool VFP
 


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Gilles Chanteperdrix : cobalt/x86: remove redundant change of irq mask

2015-11-26 Thread git repository hosting
Module: xenomai-gch
Branch: next
Commit: 7db054e748ea7447d81fa1ca7288b4f142562a9b
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=7db054e748ea7447d81fa1ca7288b4f142562a9b

Author: Gilles Chanteperdrix 
Date:   Fri Nov 20 14:51:25 2015 +0100

cobalt/x86: remove redundant change of irq mask

xnarch_handle_fpu_fault is called with head domain stalled,
xnlock_get/xnlock_put are sufficient.

---

 kernel/cobalt/arch/x86/thread.c |5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/kernel/cobalt/arch/x86/thread.c b/kernel/cobalt/arch/x86/thread.c
index 8d2fc23..fe7ae7b 100644
--- a/kernel/cobalt/arch/x86/thread.c
+++ b/kernel/cobalt/arch/x86/thread.c
@@ -281,7 +281,6 @@ int xnarch_handle_fpu_fault(struct xnthread *from,
 {
struct xnarchtcb *tcb = xnthread_archtcb(to);
struct task_struct *p = tcb->core.host_task;
-   spl_t s;
 
if (__thread_has_fpu(p))
return 0;
@@ -311,9 +310,9 @@ int xnarch_handle_fpu_fault(struct xnthread *from,

__thread_set_has_fpu(p);
 
-   xnlock_get_irqsave(, s);
+   xnlock_get();
xnthread_set_state(to, XNFPU);
-   xnlock_put_irqrestore(, s);
+   xnlock_put();
 
return 1;
 }


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Gilles Chanteperdrix : cobalt/fpu: stall head domain to handle fpu fault

2015-11-26 Thread git repository hosting
Module: xenomai-gch
Branch: next
Commit: 24f4f3d8609cf1b9bfc9f3055211657cd6bf7d28
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=24f4f3d8609cf1b9bfc9f3055211657cd6bf7d28

Author: Gilles Chanteperdrix 
Date:   Fri Nov 20 14:50:28 2015 +0100

cobalt/fpu: stall head domain to handle fpu fault

Handling an FPU fault and setting the fpu holder must be atomic.

---

 kernel/cobalt/posix/process.c |5 +
 1 file changed, 5 insertions(+)

diff --git a/kernel/cobalt/posix/process.c b/kernel/cobalt/posix/process.c
index cc056ef..788a24a 100644
--- a/kernel/cobalt/posix/process.c
+++ b/kernel/cobalt/posix/process.c
@@ -731,11 +731,16 @@ static inline int handle_exception(struct ipipe_trap_data 
*d)
 
if (xnarch_fault_fpu_p(d)) {
 #ifdef CONFIG_XENO_ARCH_FPU
+   spl_t s;
+
/* FPU exception received in primary mode. */
+   splhigh(s);
if (xnarch_handle_fpu_fault(sched->fpuholder, thread, d)) {
sched->fpuholder = thread;
+   splexit(s);
return 1;
}
+   splexit(s);
 #endif /* CONFIG_XENO_ARCH_FPU */
print_symbol("invalid use of FPU in Xenomai context at %s\n",
 xnarch_fault_pc(d));


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Gilles Chanteperdrix : cobalt/arm: remove unused variable

2015-11-26 Thread git repository hosting
Module: xenomai-gch
Branch: stable-3.0.x
Commit: ee0b43329fc93198f7cd620fbd84ade15aa57319
URL:
http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=ee0b43329fc93198f7cd620fbd84ade15aa57319

Author: Gilles Chanteperdrix 
Date:   Thu Nov 26 20:14:14 2015 +0100

cobalt/arm: remove unused variable

Avoids compiler warning

---

 kernel/cobalt/arch/arm/thread.c |2 --
 1 file changed, 2 deletions(-)

diff --git a/kernel/cobalt/arch/arm/thread.c b/kernel/cobalt/arch/arm/thread.c
index 46b830d..7e2b7cf 100644
--- a/kernel/cobalt/arch/arm/thread.c
+++ b/kernel/cobalt/arch/arm/thread.c
@@ -270,8 +270,6 @@ void xnarch_switch_fpu(struct xnthread *from, struct 
xnthread *to)
 int xnarch_handle_fpu_fault(struct xnthread *from, 
struct xnthread *to, struct ipipe_trap_data *d)
 {
-   spl_t s;
-
if (xnthread_test_state(to, XNFPU))
/* FPU is already enabled, probably an exception */
return 0;


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Gilles Chanteperdrix : cobalt/fpu: stall head domain to handle fpu fault

2015-11-26 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 24f4f3d8609cf1b9bfc9f3055211657cd6bf7d28
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=24f4f3d8609cf1b9bfc9f3055211657cd6bf7d28

Author: Gilles Chanteperdrix 
Date:   Fri Nov 20 14:50:28 2015 +0100

cobalt/fpu: stall head domain to handle fpu fault

Handling an FPU fault and setting the fpu holder must be atomic.

---

 kernel/cobalt/posix/process.c |5 +
 1 file changed, 5 insertions(+)

diff --git a/kernel/cobalt/posix/process.c b/kernel/cobalt/posix/process.c
index cc056ef..788a24a 100644
--- a/kernel/cobalt/posix/process.c
+++ b/kernel/cobalt/posix/process.c
@@ -731,11 +731,16 @@ static inline int handle_exception(struct ipipe_trap_data 
*d)
 
if (xnarch_fault_fpu_p(d)) {
 #ifdef CONFIG_XENO_ARCH_FPU
+   spl_t s;
+
/* FPU exception received in primary mode. */
+   splhigh(s);
if (xnarch_handle_fpu_fault(sched->fpuholder, thread, d)) {
sched->fpuholder = thread;
+   splexit(s);
return 1;
}
+   splexit(s);
 #endif /* CONFIG_XENO_ARCH_FPU */
print_symbol("invalid use of FPU in Xenomai context at %s\n",
 xnarch_fault_pc(d));


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Gilles Chanteperdrix : cobalt/arm: remove redundant change of irq mask

2015-11-26 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 7f39867163306ed07995af4886ec84bf7f7c01d1
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=7f39867163306ed07995af4886ec84bf7f7c01d1

Author: Gilles Chanteperdrix 
Date:   Fri Nov 20 14:51:25 2015 +0100

cobalt/arm: remove redundant change of irq mask

xnarch_handle_fpu_fault is called with head domain stalled,
xnlock_get/xnlock_put are sufficient.

---

 kernel/cobalt/arch/arm/thread.c |6 ++
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/kernel/cobalt/arch/arm/thread.c b/kernel/cobalt/arch/arm/thread.c
index e13fb63..7e2b7cf 100644
--- a/kernel/cobalt/arch/arm/thread.c
+++ b/kernel/cobalt/arch/arm/thread.c
@@ -270,8 +270,6 @@ void xnarch_switch_fpu(struct xnthread *from, struct 
xnthread *to)
 int xnarch_handle_fpu_fault(struct xnthread *from, 
struct xnthread *to, struct ipipe_trap_data *d)
 {
-   spl_t s;
-
if (xnthread_test_state(to, XNFPU))
/* FPU is already enabled, probably an exception */
return 0;
@@ -283,9 +281,9 @@ int xnarch_handle_fpu_fault(struct xnthread *from,
return 0;
 #endif
 
-   xnlock_get_irqsave(, s);
+   xnlock_get();
xnthread_set_state(to, XNFPU);
-   xnlock_put_irqrestore(, s);
+   xnlock_put();
 
xnarch_switch_fpu(from, to);
 


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Gilles Chanteperdrix : cobalt/x86: remove redundant change of irq mask

2015-11-26 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 7db054e748ea7447d81fa1ca7288b4f142562a9b
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=7db054e748ea7447d81fa1ca7288b4f142562a9b

Author: Gilles Chanteperdrix 
Date:   Fri Nov 20 14:51:25 2015 +0100

cobalt/x86: remove redundant change of irq mask

xnarch_handle_fpu_fault is called with head domain stalled,
xnlock_get/xnlock_put are sufficient.

---

 kernel/cobalt/arch/x86/thread.c |5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/kernel/cobalt/arch/x86/thread.c b/kernel/cobalt/arch/x86/thread.c
index 8d2fc23..fe7ae7b 100644
--- a/kernel/cobalt/arch/x86/thread.c
+++ b/kernel/cobalt/arch/x86/thread.c
@@ -281,7 +281,6 @@ int xnarch_handle_fpu_fault(struct xnthread *from,
 {
struct xnarchtcb *tcb = xnthread_archtcb(to);
struct task_struct *p = tcb->core.host_task;
-   spl_t s;
 
if (__thread_has_fpu(p))
return 0;
@@ -311,9 +310,9 @@ int xnarch_handle_fpu_fault(struct xnthread *from,

__thread_set_has_fpu(p);
 
-   xnlock_get_irqsave(, s);
+   xnlock_get();
xnthread_set_state(to, XNFPU);
-   xnlock_put_irqrestore(, s);
+   xnlock_put();
 
return 1;
 }


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git