From: Romain Naour <romain.naour@openwide.fr>
To: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai] s3c24xx with clocksource/clockevent (kernel 3.2.21)
Date: Sun, 21 Oct 2012 03:35:30 +0200 [thread overview]
Message-ID: <50835162.5020401@openwide.fr> (raw)
In-Reply-To: <5082DED2.1050405@xenomai.org>
>> Until now, I used the latest supported kernel 3.2.21 with Xenomai 2.6.1.
>> Without rework timer system with clocksource and clockevent,
>> I need to set "s3c2410_itimer.min_delay_ticks" value
>> (s3c24xx_fix_itimer.patch)
>> Otherwise the timer hangs.
>> And also, the last patch of my previous mail.
>
> You mean the patch for the UART ? I can not take that patch. You have to
> understand what goes wrong in the I-pipe core, or irq chip callbacks
> implementation for this processor, and fix it there, not in the irq
> handler for the serial interrupt.
I think there is a problem when Linux unmask an IRQ line with
irq_enable() and when there is an IRQ pending behind.
I made some comments on the ipipe-tracer log
(UART-samsung-bug-ipipe-tracer.txt)
What do you think of this ?
Are we need to disable IRQs before call irq_enable() ?
> That is clearly the wrong place.
I realize now, thanks
Regards
Romain
-------------- next part --------------
I-pipe worst-case tracing service on 3.2.21/ipipe release #1
-------------------------------------------------------------
CPU: 0, Begin: 478009927 cycles, Trace Points: 26 (-3500/+105), Length: 1564 us
Calibrated minimum trace-point overhead: 0.777 us
+----- Hard IRQs ('|': locked)
|+-- Xenomai
||+- Linux ('*': domain stalled, '+': current, '#': current+stalled)
||| +---------- Delay flag ('+': > 1 us, '!': > 10 us)
||| | +- NMI noise ('N')
||| | |
Type User Val. Time Delay Function (Parent)
+func -250 3.444 __ipipe_syscall_root+0x10 (vector_swi+0x44)
+func -247 1.333 sys_write+0x14 (ret_fast_syscall+0x0)
+func -246 3.555 fget_light+0x10 (sys_write+0x28)
+func -242 2.777 vfs_write+0x14 (sys_write+0x54)
+func -239 4.222 rw_verify_area+0x14 (vfs_write+0x98)
+func -235 2.333 tty_write+0x14 (vfs_write+0xc8)
+func -233 3.888 tty_paranoia_check+0x10 (tty_write+0x40)
+func -229 1.222 tty_ldisc_ref_wait+0x14 (tty_write+0x8c)
+func -228 3.222 tty_ldisc_try+0x10 (tty_ldisc_ref_wait+0x20)
#func -224 3.000 ipipe_unstall_root+0x10 (tty_ldisc_try+0x98)
+func -221 1.666 tty_write_lock+0x10 (tty_write+0xb8)
+func -220 7.222 mutex_trylock+0x10 (tty_write_lock+0x24)
+func -212 3.666 n_tty_write+0x14 (tty_write+0x198)
+func -209 2.111 process_echoes+0x14 (n_tty_write+0x90)
+func -207 2.111 add_wait_queue+0x10 (n_tty_write+0xa4)
#func -205 2.777 ipipe_unstall_root+0x10 (add_wait_queue+0x7c)
+func -202 2.666 tty_hung_up_p+0x10 (n_tty_write+0xdc)
+func -199 1.666 mutex_lock+0x10 (n_tty_write+0x128)
+func -197 1.333 tty_write_room+0x10 (n_tty_write+0x130)
+func -196 2.444 uart_write_room+0x10 (tty_write_room+0x2c)
#func -194 13.111 ipipe_unstall_root+0x10 (uart_write_room+0x74)
+func -181 6.000 uart_write+0x10 (n_tty_write+0x248)
#func -175 2.111 ipipe_unstall_root+0x10 (uart_write+0x108)
+func -172 2.222 uart_start+0x10 (uart_write+0x134)
#func -170 2.333 __uart_start+0x10 (uart_start+0x50)
#func -168 2.666 s3c24xx_serial_start_tx+0x10 (__uart_start+0x54) << driver enable Tx irq of UART0
#func -165 1.555 enable_irq+0x14 (s3c24xx_serial_start_tx+0xc4)
#func -164 4.444 __irq_get_desc_lock+0x10 (enable_irq+0x2c)
#func -159 2.222 __enable_irq+0x10 (enable_irq+0x64)
#func -157 2.111 irq_enable+0x10 (__enable_irq+0xac)) << irq_state_clr_disabled(desc)
#func -155 4.777 s3c_irq_uart0_unmask+0x10 (irq_enable+0x48) << IRQ is unmasked
<< I am not sure if we have the time to call irq_state_clr_masked(desc);
| #func -150 2.666 __ipipe_grab_irq+0x10 (__irq_svc+0x24) << We get an IRQ (71: TX_UART0)
| #func -147 3.666 __ipipe_dispatch_irq+0x10 (__ipipe_grab_irq+0x54)
| #func -144 1.777 __ipipe_ack_irq+0x10 (__ipipe_dispatch_irq+0xe0)
| #func -142 1.333 s3c_irq_demux_uart0+0x10 (__ipipe_ack_irq+0x1c)
| #func -141 1.444 s3c_irq_demux_uart+0x10 (s3c_irq_demux_uart0+0x1c)
| #func -139 1.888 __ipipe_dispatch_irq+0x10 (s3c_irq_demux_uart+0x54)
| #func -137 1.777 __ipipe_ack_irq+0x10 (__ipipe_dispatch_irq+0xe0)
| #func -136 1.333 __ipipe_ack_level_irq+0x10 (__ipipe_ack_irq+0x1c)
| #func -134 4.222 s3c_irq_uart0_ack+0x10 (__ipipe_ack_level_irq+0x34) << mask, ack IRQ, irq_state_set_masked(desc);
| #func -130 5.111 __ipipe_set_irq_pending+0x10 (__ipipe_dispatch_irq+0x16c)
| #func -125 2.888 __ipipe_do_sync_pipeline+0x10 (__ipipe_dispatch_irq+0x1b8)
| #func -122 1.222 __ipipe_exit_irq+0x10 (__ipipe_grab_irq+0x5c)
| #func -121 3.000 __ipipe_check_root_interruptible+0x10 (__irq_svc+0x94)
<< irq_state_clr_masked(desc); ??
#func -118 1.666 check_irq_resend+0x10 (__enable_irq+0xb8)
#func -116 2.111 __irq_put_desc_unlock+0x10 (enable_irq+0x74)
#func -114 1.777 ipipe_unstall_root+0x10 (uart_start+0x5c)
| +func -112 4.111 __ipipe_do_sync_stage+0x10 (ipipe_unstall_root+0x3c)
#func -108 2.111 __ipipe_do_IRQ+0x10 (__ipipe_do_sync_stage+0x1bc)
#func -106 2.333 handle_IRQ+0x10 (__ipipe_do_IRQ+0x1c)
#func -104 1.333 irq_enter+0x10 (handle_IRQ+0x28)
#func -102 4.000 idle_cpu+0x10 (irq_enter+0x1c)
#func -98 2.000 generic_handle_irq+0x10 (handle_IRQ+0x6c)
#func -96 3.777 handle_level_irq+0x10 (generic_handle_irq+0x34)
#func -93 2.000 handle_irq_event+0x10 (handle_level_irq+0x98)
#func -91 3.111 handle_irq_event_percpu+0x14 (handle_irq_event+0x64)
#func -87 23.555 s3c24xx_serial_tx_chars+0x10 (handle_irq_event_percpu+0xc0)
#func -64 1.555 uart_write_wakeup+0x10 (s3c24xx_serial_tx_chars+0xe0)
#func -62 2.000 tty_wakeup+0x10 (uart_write_wakeup+0x2c)
#func -60 2.333 __wake_up+0x14 (tty_wakeup+0x64)
#func -58 2.333 __wake_up_common+0x10 (__wake_up+0x5c)
#func -56 1.666 default_wake_function+0x10 (__wake_up_common+0x58)
#func -54 3.111 try_to_wake_up+0x10 (default_wake_function+0x1c)
#func -51 3.444 ttwu_do_wakeup.constprop.138+0x10 (try_to_wake_up+0xa8)
#func -47 3.444 check_preempt_curr+0x10 (ttwu_do_wakeup.constprop.138+0xb8)
#func -44 2.777 check_preempt_wakeup+0x10 (check_preempt_curr+0x38)
#func -41 6.333 __task_rq_unlock.isra.122+0x10 (try_to_wake_up+0xb0)
<< driver it doesn't call s3c24xx_serial_stop_tx here because the transmission is not complete.
#func -35 4.000 note_interrupt+0x10 (handle_irq_event_percpu+0x290)
<< IRQ is not unmasked by cond_unmask_irq() in handle_level_irq
<< there is something wrong here... condition for cond_unmask_irq() are not meet.
if (!irqd_irq_disabled(&desc->irq_data) && irqd_irq_masked(&desc->irq_data) && !desc->threads_oneshot) << we must have an unmask operation here
unmask_irq(desc);
#func -31 3.444 irq_exit+0x10 (handle_IRQ+0x70)
+func -27 1.666 mutex_unlock+0x10 (n_tty_write+0x258)
+func -26 0.888 process_output+0x10 (n_tty_write+0x288)
+func -25 1.111 mutex_lock+0x10 (process_output+0x28)
+func -24 0.888 tty_write_room+0x10 (process_output+0x30)
+func -23 0.888 uart_write_room+0x10 (tty_write_room+0x2c)
#func -22 1.666 ipipe_unstall_root+0x10 (uart_write_room+0x74)
+func -20 2.555 do_output_char+0x10 (process_output+0x40)
+func -18 1.444 uart_write+0x10 (do_output_char+0x9c)
#func -16 1.111 ipipe_unstall_root+0x10 (uart_write+0x108)
+func -15 0.777 uart_start+0x10 (uart_write+0x134)
#func -14 1.111 __uart_start+0x10 (uart_start+0x50)
#func -13 3.111 s3c24xx_serial_start_tx+0x10 (__uart_start+0x54) << driver wait for another IRQ
#begin 0x52120007 -10 1.888 s3c24xx_serial_start_tx+0xd8 (__uart_start+0x54) << (!tx_enabled(port)) == 1
#end 0x52120007 -8 2.222 s3c24xx_serial_start_tx+0xe0 (__uart_start+0x54)
#func -6 2.222 ipipe_unstall_root+0x10 (uart_start+0x5c)
+func -4 1.555 mutex_unlock+0x10 (process_output+0x4c)
+func -2 0.777 uart_flush_chars+0x10 (n_tty_write+0x2bc)
+func -2 0.888 uart_start+0x10 (uart_flush_chars+0x18)
#func -1 1.111 __uart_start+0x10 (uart_start+0x50)
> #func 0! 1494.888 s3c24xx_serial_start_tx+0x10 (__uart_start+0x54) << O_O
:| #func 1494+ 4.666 __ipipe_grab_irq+0x10 (__irq_svc+0x24)
:| #func 1499+ 2.666 __ipipe_dispatch_irq+0x10 (__ipipe_grab_irq+0x54)
:| #func 1502+ 1.888 __ipipe_ack_hrtimer_irq+0x10 (__ipipe_dispatch_irq+0xe0)
:| #func 1504+ 2.222 __ipipe_ack_level_irq+0x10 (__ipipe_ack_hrtimer_irq+0x2c)
:| #func 1506+ 2.111 s3c_irq_mask+0x10 (__ipipe_ack_level_irq+0x40)
:| #func 1508+ 2.222 s3c_irq_ack+0x10 (__ipipe_ack_level_irq+0x58)
:| #func 1510+ 1.555 s3c2410_timer_ack+0x10 (__ipipe_ack_hrtimer_irq+0x3c)
:| #func 1512+ 1.777 __ipipe_end_level_irq+0x10 (__ipipe_ack_hrtimer_irq+0x54)
:| #func 1514+ 2.333 s3c_irq_unmask+0x10 (__ipipe_end_level_irq+0x24)
:| #func 1516+ 3.333 __ipipe_dispatch_irq_fast+0x14 (__ipipe_dispatch_irq+0x160)
:| #*func 1519+ 2.444 xnintr_clock_handler+0x10 (__ipipe_dispatch_irq_fast+0xdc)
:| #*func 1522+ 8.888 xntimer_tick_aperiodic+0x14 (xnintr_clock_handler+0x34)
:| #*func 1531+ 5.555 xntimer_next_local_shot+0x10 (xntimer_tick_aperiodic+0x258)
:| #*event tick@5655 1536+ 3.000 xntimer_next_local_shot+0xe4 (xntimer_tick_aperiodic+0x258)
:| #*func 1539+ 3.222 ipipe_timer_set+0x10 (xntimer_next_local_shot+0x104)
:| #*func 1542+ 1.888 s3c2410_timer_set+0x10 (ipipe_timer_set+0x34)
:| #*func 1544+ 3.222 __ipipe_spin_lock_irqsave+0x10 (s3c2410_timer_set+0x24)
:| #*func 1547+ 3.666 __ipipe_tsc_update+0x10 (s3c2410_timer_set+0x48)
:| #*func 1551+ 2.666 __ipipe_spin_unlock_irqrestore+0x10 (s3c2410_timer_set+0x78)
:| #*func 1554+ 1.555 xnintr_host_tick+0x10 (xnintr_clock_handler+0x98)
:| #*func 1555+ 2.444 __ipipe_set_irq_pending+0x10 (xnintr_host_tick+0x30)
:| #func 1558+ 1.888 __ipipe_do_sync_pipeline+0x10 (__ipipe_dispatch_irq_fast+0x12c)
:| #func 1560+ 1.222 __ipipe_exit_irq+0x10 (__ipipe_grab_irq+0x5c)
:| #func 1561+ 2.777 __ipipe_check_root_interruptible+0x10 (__irq_svc+0x94)
< #end 0x52120007 1564 1.888 s3c24xx_serial_start_tx+0xe0 (__uart_start+0x54)
#func 1566 1.555 ipipe_unstall_root+0x10 (uart_start+0x5c)
| +func 1567 1.444 __ipipe_do_sync_stage+0x10 (ipipe_unstall_root+0x3c)
#func 1569 1.333 __ipipe_do_IRQ+0x10 (__ipipe_do_sync_stage+0x1bc)
#func 1570 1.666 handle_IRQ+0x10 (__ipipe_do_IRQ+0x1c)
#func 1572 1.000 irq_enter+0x10 (handle_IRQ+0x28)
#func 1573 2.000 idle_cpu+0x10 (irq_enter+0x1c)
#func 1575 1.333 generic_handle_irq+0x10 (handle_IRQ+0x6c)
#func 1576 2.000 handle_level_irq+0x10 (generic_handle_irq+0x34)
#func 1578 1.111 handle_irq_event+0x10 (handle_level_irq+0x98)
#func 1579 1.888 handle_irq_event_percpu+0x14 (handle_irq_event+0x64)
#func 1581 2.555 s3c2410_timer_interrupt+0x10 (handle_irq_event_percpu+0xc0)
#func 1583 1.555 timer_tick+0x10 (s3c2410_timer_interrupt+0x50)
#func 1585 2.222 xtime_update+0x10 (timer_tick+0x1c)
#func 1587 17.333 do_timer+0x14 (xtime_update+0x40)
#func 1605 2.111 update_vsyscall+0x10 (do_timer+0x910)
#func 1607 3.333 calc_global_load+0x10 (do_timer+0x918)
#func 1610 1.666 update_process_times+0x10 (timer_tick+0x38)
#func 1612 2.222 account_process_tick+0x10 (update_process_times+0x34)
#func 1614 4.777 account_system_time+0x10 (account_process_tick+0x74)
#func 1619 1.555 run_local_timers+0x10 (update_process_times+0x38)
#func 1620 2.222 hrtimer_run_queues+0x14 (run_local_timers+0x18)
#func 1622 6.000 get_xtime_and_monotonic_and_sleep_offset+0x10 (hrtimer_run_queues+0x50)
#func 1628 3.777 raise_softirq+0x10 (run_local_timers+0x20)
#func 1632 1.333 rcu_check_callbacks+0x10 (update_process_times+0x44)
#func 1634 1.777 idle_cpu+0x10 (rcu_check_callbacks+0x24)
#func 1635 2.888 rcu_bh_qs+0x10 (rcu_check_callbacks+0x6c)
#func 1638 2.000 raise_softirq+0x10 (rcu_check_callbacks+0xc0)
#func 1640 2.111 printk_tick+0x10 (update_process_times+0x48)
#func 1642 2.111 scheduler_tick+0x14 (update_process_times+0x4c)
#func 1644 6.333 update_rq_clock+0x10 (scheduler_tick+0x40)
#func 1651 2.000 task_tick_fair+0x10 (scheduler_tick+0x19c)
#func 1653 3.111 update_curr.constprop.133+0x14 (task_tick_fair+0x28)
#func 1656 5.111 update_min_vruntime.constprop.131+0x10 (update_curr.constprop.133+0x8c)
#func 1661 3.777 run_posix_cpu_timers+0x14 (update_process_times+0x54)
#func 1665 2.222 note_interrupt+0x10 (handle_irq_event_percpu+0x290)
#func 1667 1.444 unmask_irq+0x10 (handle_level_irq+0xbc)
| #func 1668 1.555 s3c_irq_unmask+0x10 (unmask_irq+0x40)
#func 1670 1.666 irq_exit+0x10 (handle_IRQ+0x70)
#func 1672 2.111 __do_softirq+0x14 (irq_exit+0x50)
#func 1674 3.444 ipipe_unstall_root+0x10 (__do_softirq+0x50)
+func 1677 1.555 run_timer_softirq+0x14 (__do_softirq+0x110)
+func 1679 3.666 hrtimer_run_pending+0x10 (run_timer_softirq+0x24)
#func 1682 2.444 ipipe_unstall_root+0x10 (run_timer_softirq+0x3c8)
+func 1685 0.888 rcu_bh_qs+0x10 (__do_softirq+0x1d0)
#func 1686 2.111 ipipe_unstall_root+0x10 (rcu_bh_qs+0x6c)
+func 1688 1.777 rcu_process_callbacks+0x10 (__do_softirq+0x110)
+func 1690 1.222 __rcu_process_callbacks+0x10 (rcu_process_callbacks+0x20)
+func 1691 0.888 __rcu_process_callbacks+0x10 (rcu_process_callbacks+0x28)
+func 1692 2.111 __rcu_process_callbacks+0x10 (rcu_process_callbacks+0x30)
#func 1694 1.888 ipipe_unstall_root+0x10 (__rcu_process_callbacks+0x90)
+func 1696 1.888 local_bh_disable+0x10 (__rcu_process_callbacks+0x9c)
+func 1698 3.222 file_free_rcu+0x10 (__rcu_process_callbacks+0xc0)
+func 1701 3.777 kmem_cache_free+0x10 (file_free_rcu+0x50)
#func 1705 2.444 ipipe_unstall_root+0x10 (kmem_cache_free+0xdc)
+func 1707 2.777 local_bh_enable+0x10 (__rcu_process_callbacks+0xc4)
+func 1710 0.888 rcu_bh_qs+0x10 (__do_softirq+0x1d0)
#func 1711 2.333 ipipe_unstall_root+0x10 (rcu_bh_qs+0x6c)
#func 1713 4.777 __local_bh_enable+0x10 (__do_softirq+0x228)
+func 1718 2.222 remove_wait_queue+0x10 (n_tty_write+0x35c)
#func 1720 4.777 ipipe_unstall_root+0x10 (remove_wait_queue+0x78)
+func 1725 1.555 current_fs_time+0x14 (tty_write+0x200)
+func 1726 2.333 current_kernel_time+0x10 (current_fs_time+0x2c)
+func 1729 2.666 timespec_trunc+0x14 (current_fs_time+0x3c)
+func 1731 1.111 tty_write_unlock+0x10 (tty_write+0x214)
+func 1733 1.444 mutex_unlock+0x10 (tty_write_unlock+0x20)
+func 1734 1.666 __wake_up+0x14 (tty_write_unlock+0x34)
#func 1736 1.444 __wake_up_common+0x10 (__wake_up+0x5c)
#func 1737 2.111 ipipe_unstall_root+0x10 (__wake_up+0x68)
+func 1739 1.333 tty_ldisc_deref+0x10 (tty_write+0x21c)
+func 1741 3.777 put_ldisc+0x10 (tty_ldisc_deref+0x18)
#func 1744 1.444 ipipe_unstall_root+0x10 (put_ldisc+0xe0)
+func 1746 1.333 __wake_up+0x14 (put_ldisc+0xf4)
#func 1747 1.888 __wake_up_common+0x10 (__wake_up+0x5c)
#func 1749 3.111 ipipe_unstall_root+0x10 (__wake_up+0x68)
+func 1752 2.555 __fsnotify_parent+0x14 (vfs_write+0x114)
+func 1755 2.222 fsnotify+0x14 (vfs_write+0x130)
+func 1757 4.555 __srcu_read_lock+0x10 (fsnotify+0x78)
+func 1761 129.444 __srcu_read_unlock+0x10 (fsnotify+0x1e0)
+func 1891 7.000 __ipipe_syscall_root+0x10 (vector_swi+0x44)
+func 1898 1.333 sys_write+0x14 (ret_fast_syscall+0x0)
+func 1899 3.111 fget_light+0x10 (sys_write+0x28)
+func 1902 2.444 vfs_write+0x14 (sys_write+0x54)
+func 1905 3.444 rw_verify_area+0x14 (vfs_write+0x98)
+func 1908 2.555 tty_write+0x14 (vfs_write+0xc8)
+func 1911 3.888 tty_paranoia_check+0x10 (tty_write+0x40)
+func 1915 1.111 tty_ldisc_ref_wait+0x14 (tty_write+0x8c)
+func 1916 2.777 tty_ldisc_try+0x10 (tty_ldisc_ref_wait+0x20)
#func 1919 2.777 ipipe_unstall_root+0x10 (tty_ldisc_try+0x98)
+func 1921 1.666 tty_write_lock+0x10 (tty_write+0xb8)
+func 1923 6.000 mutex_trylock+0x10 (tty_write_lock+0x24)
+func 1929 3.666 n_tty_write+0x14 (tty_write+0x198)
+func 1933 2.111 process_echoes+0x14 (n_tty_write+0x90)
+func 1935 1.777 add_wait_queue+0x10 (n_tty_write+0xa4)
#func 1937 2.666 ipipe_unstall_root+0x10 (add_wait_queue+0x7c)
+func 1939 2.333 tty_hung_up_p+0x10 (n_tty_write+0xdc)
+func 1942 1.666 mutex_lock+0x10 (n_tty_write+0x128)
+func 1943 1.333 tty_write_room+0x10 (n_tty_write+0x130)
+func 1945 2.666 uart_write_room+0x10 (tty_write_room+0x2c)
#func 1947 10.222 ipipe_unstall_root+0x10 (uart_write_room+0x74)
+func 1957 4.666 uart_write+0x10 (n_tty_write+0x248)
#func 1962 2.111 ipipe_unstall_root+0x10 (uart_write+0x108)
+func 1964 1.888 uart_start+0x10 (uart_write+0x134)
#func 1966 2.666 __uart_start+0x10 (uart_start+0x50)
#func 1969 3.555 s3c24xx_serial_start_tx+0x10 (__uart_start+0x54) << Driver try to send something again and again...
#begin 0x52120007 1972 0.000 s3c24xx_serial_start_tx+0xd8 (__uart_start+0x54) << but Tx IRQ is still masked
next prev parent reply other threads:[~2012-10-21 1:35 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-19 10:19 [Xenomai] s3c24xx with clocksource/clockevent (kernel 3.2.21) Romain Naour
2012-10-19 12:18 ` Gilles Chanteperdrix
2012-10-20 16:12 ` Romain Naour
2012-10-20 17:26 ` Gilles Chanteperdrix
2012-10-21 1:35 ` Romain Naour [this message]
2012-10-21 18:29 ` Gilles Chanteperdrix
2012-10-21 18:43 ` Gilles Chanteperdrix
2012-10-21 23:33 ` Romain Naour
2012-10-22 13:18 ` Gilles Chanteperdrix
2012-10-22 14:05 ` Gilles Chanteperdrix
2012-10-22 16:26 ` Romain Naour
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=50835162.5020401@openwide.fr \
--to=romain.naour@openwide.fr \
--cc=gilles.chanteperdrix@xenomai.org \
--cc=xenomai@xenomai.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.