All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philippe Gerum <rpm@xenomai.org>
To: hongzha1 <hongzhan.chen@intel.com>
Cc: xenomai@xenomai.org
Subject: Re: [PATCH V2 1/8] dovetail/pipeline: implement out-of-band irq management and handling
Date: Sat, 16 Jan 2021 12:38:22 +0100	[thread overview]
Message-ID: <877dodt8lt.fsf@xenomai.org> (raw)
In-Reply-To: <20210115011639.15390-1-hongzhan.chen@intel.com>


hongzha1 via Xenomai <xenomai@xenomai.org> writes:

> implement oob irq request and free and post for both
> TIMER_OOB_IPI and RESCHEDULE_OOB_IPI
>
> Signed-off-by: hongzha1 <hongzhan.chen@intel.com>
>
> diff --git a/include/cobalt/kernel/dovetail/pipeline/pipeline.h b/include/cobalt/kernel/dovetail/pipeline/pipeline.h
> index 23c4a2c18..13fbd7942 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;
>  
> +void xnintr_core_clock_handler(void);
> +
>  /*
>   * 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,28 @@ 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 +63,29 @@ static inline void pipeline_send_resched_ipi(const struct cpumask *dest)
>  	 * Trigger the out-of-band rescheduling interrupt on remote
>  	 * CPU(s).
>  	 */
> -	TODO();
> +	irq_send_oob_ipi(RESCHEDULE_OOB_IPI, dest);
> +}
> +
> +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);
>  }
>  
>  static inline void pipeline_send_timer_ipi(const struct cpumask *dest)
> @@ -72,7 +93,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_send_oob_ipi(TIMER_OOB_IPI, dest);
>  }
>  
>  #endif

Merged, fixing up the short log on the fly, in order to align on the
matching I-pipe patch as follows:

"dovetail/irq: dovetail: implement out-of-band irq management and
handling"

Thanks,

-- 
Philippe.


      parent reply	other threads:[~2021-01-16 11:38 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-15  1:16 [PATCH V2 1/8] dovetail/pipeline: implement out-of-band irq management and handling hongzha1
2021-01-15  1:16 ` [PATCH 2/8] dovetail/tick: implement proxy tick device installing and uninstalling hongzha1
2021-01-16 11:42   ` Philippe Gerum
2021-01-15  1:16 ` [PATCH 3/8] dovetail/clock: implement pipeline_set_timer_shot to trigger tick shot hongzha1
2021-01-16 11:56   ` Philippe Gerum
2021-01-19  0:57     ` Chen, Hongzhan
2021-01-21 15:36       ` Philippe Gerum
2021-01-15  1:16 ` [PATCH V2 4/8] dovetail/clock: implement pipeline_timer_name hongzha1
2021-01-16 12:22   ` Philippe Gerum
2021-01-15  1:16 ` [PATCH 5/8] dovetail/kevents: dovetail: implement handle_ptrace_cont hongzha1
2021-01-16 12:31   ` Philippe Gerum
2021-01-15  1:16 ` [PATCH 6/8] cobalt/timer: pipeline: abstract signal test of XNTSTOP hongzha1
2021-01-16 15:11   ` Philippe Gerum
2021-01-15  1:16 ` hongzha1
2021-01-15  1:16 ` [PATCH 7/8] dovetail/tick: pipeline: impmement pipeline_must_force_program_tick hongzha1
2021-01-16 15:14   ` Philippe Gerum
2021-01-15  1:16 ` [PATCH 8/8] dovetail/kevents: enable back tracing hongzha1
2021-01-16 15:17   ` Philippe Gerum
2021-01-16 11:38 ` Philippe Gerum [this message]

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=877dodt8lt.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.