From: Philippe Gerum <rpm@xenomai.org>
To: Philippe Gerum <rpm@xenomai.org>
Cc: hongzha1 <hongzhan.chen@intel.com>, xenomai@xenomai.org
Subject: Re: [PATCH 06/10] dovetail/pipeline: implement oob irq request and free and post for both TIMER_OOB_IPI and RESCHEDULE_OOB_IPI
Date: Tue, 12 Jan 2021 17:47:42 +0100 [thread overview]
Message-ID: <877doim79t.fsf@xenomai.org> (raw)
In-Reply-To: <87im82m7o2.fsf@xenomai.org>
Also, the short log should be more concise. The changes are all about
out-of-band IRQ management and handling, details about which IRQs this
applies to can appear in the main part of the commit log.
There are too many changes for me to fix up that patch on the fly while
merging eventually. You may want to resubmit it.
Thanks,
Philippe Gerum via Xenomai <xenomai@xenomai.org> writes:
> hongzha1 via Xenomai <xenomai@xenomai.org> writes:
>
>> Signed-off-by: hongzha1 <hongzhan.chen@intel.com>
>> ---
>> .../kernel/dovetail/pipeline/pipeline.h | 44 ++++++++++++++-----
>> 1 file changed, 34 insertions(+), 10 deletions(-)
>>
>> diff --git a/include/cobalt/kernel/dovetail/pipeline/pipeline.h b/include/cobalt/kernel/dovetail/pipeline/pipeline.h
>> index 23c4a2c18..a345e1399 100644
>> --- a/include/cobalt/kernel/dovetail/pipeline/pipeline.h
>> +++ b/include/cobalt/kernel/dovetail/pipeline/pipeline.h
>> @@ -8,9 +8,12 @@
>> #include <linux/irq_pipeline.h>
>> #include <cobalt/kernel/assert.h>
>> #include <asm/xenomai/features.h>
>> +#include <pipeline/machine.h>
>>
>> typedef unsigned long spl_t;
>>
>> +extern void xnintr_core_clock_handler(void);
>> +
>
> No need for mentioning the storage class in the declaration. We know
> this is extern by default, otherwise we would have mentioned
> "static". Will fix while merging.
>
>> /*
>> * We only keep the LSB when testing in SMP mode in order to strip off
>> * the recursion marker (0x2) the nklock may store there.
>> @@ -30,18 +33,29 @@ typedef unsigned long spl_t;
>>
>> #ifdef CONFIG_SMP
>>
>> +static irqreturn_t reschedule_interrupt_handler(int irq, void *dev_id)
>> +{
>> +
>> + /* Will reschedule from irq_exit_pipeline. */
>> +
>> + return IRQ_HANDLED;
>> +}
>> +
>> +
>> static inline int pipeline_request_resched_ipi(void (*handler)(void))
>> {
>> /* Trap the out-of-band rescheduling interrupt. */
>> - TODO();
>> -
>> - return 0;
>> + return __request_percpu_irq(RESCHEDULE_OOB_IPI,
>> + reschedule_interrupt_handler,
>> + IRQF_OOB,
>> + "Xenomai reschedule",
>> + &cobalt_machine_cpudata);
>> }
>>
>> static inline void pipeline_free_resched_ipi(void)
>> {
>> /* Release the out-of-band rescheduling interrupt. */
>> - TODO();
>> + free_percpu_irq(RESCHEDULE_OOB_IPI, &cobalt_machine_cpudata);
>> }
>>
>> static inline void pipeline_send_resched_ipi(const struct cpumask *dest)
>> @@ -50,21 +64,31 @@ static inline void pipeline_send_resched_ipi(const struct cpumask *dest)
>> * Trigger the out-of-band rescheduling interrupt on remote
>> * CPU(s).
>> */
>> - TODO();
>> + irq_pipeline_send_remote(RESCHEDULE_OOB_IPI, dest);
>
> This call was recently renamed irq_send_oob_ipi() in an effort to
> clarify the interface. I'll fix this up while merging.
>
>> }
>>
>> +static irqreturn_t timer_ipi_interrupt_handler(int irq, void *dev_id)
>> +{
>> + xnintr_core_clock_handler();
>> +
>> + return IRQ_HANDLED;
>> +}
>> +
>> +
>> static inline int pipeline_request_timer_ipi(void (*handler)(void))
>> {
>> /* Trap the out-of-band timer interrupt. */
>> - TODO();
>> -
>> - return 0;
>> + return __request_percpu_irq(TIMER_OOB_IPI,
>> + timer_ipi_interrupt_handler,
>> + IRQF_OOB, "Xenomai timer IPI",
>> + &cobalt_machine_cpudata);
>> }
>>
>> static inline void pipeline_free_timer_ipi(void)
>> {
>> /* Release the out-of-band timer interrupt. */
>> - TODO();
>> + free_percpu_irq(TIMER_OOB_IPI,
>> + &cobalt_machine_cpudata);
>
> Single line. Will fix.
>
>> }
>>
>> static inline void pipeline_send_timer_ipi(const struct cpumask *dest)
>> @@ -72,7 +96,7 @@ static inline void pipeline_send_timer_ipi(const struct cpumask *dest)
>> /*
>> * Trigger the out-of-band timer interrupt on remote CPU(s).
>> */
>> - TODO();
>> + irq_pipeline_send_remote(TIMER_OOB_IPI, dest);
>> }
>
> Ditto.
>
> Ack.
--
Philippe.
next prev parent reply other threads:[~2021-01-12 16:47 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-11 6:43 [PATCH 01/10] dovetail/sirq: implement sirq request and free and post hongzha1
2021-01-11 6:43 ` [PATCH 02/10] dovetail/clock: implement pipeline_read_cycle_counter hongzha1
2021-01-11 17:26 ` Philippe Gerum
2021-01-11 6:43 ` [PATCH 03/10] dovetail/clock: implement pipeline_get_host_time hongzha1
2021-01-11 17:26 ` Philippe Gerum
2021-01-11 6:43 ` [PATCH 04/10] dovetail/sched: implement pipeline_init_shadow_tcb and pipeline_init_root_tcb hongzha1
2021-01-11 17:30 ` Philippe Gerum
2021-01-11 6:43 ` [PATCH 05/10] dovetail/init: implement Xenomai stage enabling and disabling hongzha1
2021-01-11 17:31 ` Philippe Gerum
2021-01-11 6:43 ` [PATCH 06/10] dovetail/pipeline: implement oob irq request and free and post for both TIMER_OOB_IPI and RESCHEDULE_OOB_IPI hongzha1
2021-01-12 16:39 ` Philippe Gerum
2021-01-12 16:47 ` Philippe Gerum [this message]
2021-01-11 6:43 ` [PATCH 07/10] dovetail/tick: implement proxy tick device installing and uninstalling hongzha1
2021-01-11 6:43 ` [PATCH 08/10] dovetail/clock: implement pipeline_set_timer_shot to trigger tick shot hongzha1
2021-01-11 6:43 ` [PATCH 09/10] dovetail/clock: implement pipeline_timer_name to get name of real device hongzha1
2021-01-12 1:20 ` chensong
2021-01-12 1:35 ` Chen, Hongzhan
2021-01-12 1:41 ` chensong
2021-01-12 16:52 ` Philippe Gerum
2021-01-11 6:43 ` [PATCH 10/10] dovetail/kevents: dovetail: implement handle_ptrace_cont hongzha1
2021-01-11 12:17 ` [PATCH 01/10] dovetail/sirq: implement sirq request and free and post Jan Kiszka
2021-01-11 13:05 ` Philippe Gerum
2021-01-11 13:16 ` Jan Kiszka
2021-01-11 13:29 ` Philippe Gerum
2021-01-11 17:23 ` Philippe Gerum
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=877doim79t.fsf@xenomai.org \
--to=rpm@xenomai.org \
--cc=hongzhan.chen@intel.com \
--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.