From: afzal mohammed <afzal.mohd.ma@gmail.com>
To: Finn Thain <fthain@telegraphics.com.au>,
Greg Ungerer <gerg@linux-m68k.org>,
Geert Uytterhoeven <geert@linux-m68k.org>,
linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3] m68k: Replace setup_irq() by request_irq()
Date: Sat, 29 Feb 2020 18:55:51 +0530 [thread overview]
Message-ID: <20200229132551.GA5111@afzalpc> (raw)
In-Reply-To: <20200229125650.3239-1-afzal.mohd.ma@gmail.com>
Huh, i messed it up in a hurry, i forgot to make modifications in 2
places, i will send v4 after handling those 2 cases as well.
Regards
afzal
On Sat, Feb 29, 2020 at 06:26:50PM +0530, afzal mohammed wrote:
> request_irq() is preferred over setup_irq(). Invocations of setup_irq()
> occur after memory allocators are ready.
>
> Per tglx[1], setup_irq() existed in olden days when allocators were not
> ready by the time early interrupts were initialized.
>
> Hence replace setup_irq() by request_irq().
>
> [1] https://lkml.kernel.org/r/alpine.DEB.2.20.1710191609480.1971@nanos
>
> Signed-off-by: afzal mohammed <afzal.mohd.ma@gmail.com>
> ---
>
> Hi Greg,
>
> i have removed your Tested-by due to the modifications, if possible,
> please test & let me know.
>
> Regards
> afzal
>
> v3:
> * Instead of tree wide series, arch specific patch (per tglx)
> * Strip irrelevant portions & more tweaking in commit message
> * Remove name indirection in pr_err string, print irq # and
> symbolic error name in case of error
> * s/pr_err/pr_debug
> v2:
> * Replace pr_err("request_irq() on %s failed" by
> pr_err("%s: request_irq() failed"
> * Commit message massage
> * remove now irrelevant comment lines at 3 places
>
> arch/m68k/68000/timers.c | 16 +++++++---------
> arch/m68k/coldfire/pit.c | 16 +++++++---------
> arch/m68k/coldfire/sltimers.c | 24 ++++++++++--------------
> arch/m68k/coldfire/timers.c | 26 ++++++++++----------------
> 4 files changed, 34 insertions(+), 48 deletions(-)
>
> diff --git a/arch/m68k/68000/timers.c b/arch/m68k/68000/timers.c
> index 71ddb4c98726..07a389a287e4 100644
> --- a/arch/m68k/68000/timers.c
> +++ b/arch/m68k/68000/timers.c
> @@ -68,14 +68,6 @@ static irqreturn_t hw_tick(int irq, void *dummy)
>
> /***************************************************************************/
>
> -static struct irqaction m68328_timer_irq = {
> - .name = "timer",
> - .flags = IRQF_TIMER,
> - .handler = hw_tick,
> -};
> -
> -/***************************************************************************/
> -
> static u64 m68328_read_clk(struct clocksource *cs)
> {
> unsigned long flags;
> @@ -102,11 +94,17 @@ static struct clocksource m68328_clk = {
>
> void hw_timer_init(irq_handler_t handler)
> {
> + int ret;
> +
> /* disable timer 1 */
> TCTL = 0;
>
> /* set ISR */
> - setup_irq(TMR_IRQ_NUM, &m68328_timer_irq);
> + ret = request_irq(TMR_IRQ_NUM, hw_tick, IRQF_TIMER, "timer", NULL);
> + if (ret) {
> + pr_debug("Failed to request irq %d (timer): %pe\n", TMR_IRQ_NUM,
> + ERR_PTR(ret));
> + }
>
> /* Restart mode, Enable int, Set clock source */
> TCTL = TCTL_OM | TCTL_IRQEN | CLOCK_SOURCE;
> diff --git a/arch/m68k/coldfire/pit.c b/arch/m68k/coldfire/pit.c
> index eb6f16b0e2e6..482678cf4819 100644
> --- a/arch/m68k/coldfire/pit.c
> +++ b/arch/m68k/coldfire/pit.c
> @@ -111,14 +111,6 @@ static irqreturn_t pit_tick(int irq, void *dummy)
>
> /***************************************************************************/
>
> -static struct irqaction pit_irq = {
> - .name = "timer",
> - .flags = IRQF_TIMER,
> - .handler = pit_tick,
> -};
> -
> -/***************************************************************************/
> -
> static u64 pit_read_clk(struct clocksource *cs)
> {
> unsigned long flags;
> @@ -146,6 +138,8 @@ static struct clocksource pit_clk = {
>
> void hw_timer_init(irq_handler_t handler)
> {
> + int ret;
> +
> cf_pit_clockevent.cpumask = cpumask_of(smp_processor_id());
> cf_pit_clockevent.mult = div_sc(FREQ, NSEC_PER_SEC, 32);
> cf_pit_clockevent.max_delta_ns =
> @@ -156,7 +150,11 @@ void hw_timer_init(irq_handler_t handler)
> cf_pit_clockevent.min_delta_ticks = 0x3f;
> clockevents_register_device(&cf_pit_clockevent);
>
> - setup_irq(MCF_IRQ_PIT1, &pit_irq);
> + ret = request_irq(MCF_IRQ_PIT1, pit_tick, IRQF_TIMER, "timer", NULL);
> + if (ret) {
> + pr_debug("Failed to request irq %d (timer): %pe\n",
> + MCF_IRQ_PIT1, ERR_PTR(ret));
> + }
>
> clocksource_register_hz(&pit_clk, FREQ);
> }
> diff --git a/arch/m68k/coldfire/sltimers.c b/arch/m68k/coldfire/sltimers.c
> index 1b11e7bacab3..087c68d2d909 100644
> --- a/arch/m68k/coldfire/sltimers.c
> +++ b/arch/m68k/coldfire/sltimers.c
> @@ -50,18 +50,19 @@ irqreturn_t mcfslt_profile_tick(int irq, void *dummy)
> return IRQ_HANDLED;
> }
>
> -static struct irqaction mcfslt_profile_irq = {
> - .name = "profile timer",
> - .flags = IRQF_TIMER,
> - .handler = mcfslt_profile_tick,
> -};
> -
> void mcfslt_profile_init(void)
> {
> + int ret;
> +
> printk(KERN_INFO "PROFILE: lodging TIMER 1 @ %dHz as profile timer\n",
> PROFILEHZ);
>
> - setup_irq(MCF_IRQ_PROFILER, &mcfslt_profile_irq);
> + ret = request_irq(MCF_IRQ_PROFILER, mcfslt_profile_tick, IRQF_TIMER,
> + "profile timer", NULL);
> + if (ret) {
> + pr_debug("Failed to request irq %d (profile timer): %pe\n",
> + MCF_IRQ_PROFILER, ERR_PTR(ret));
> + }
>
> /* Set up TIMER 2 as high speed profile clock */
> __raw_writel(MCF_BUSCLK / PROFILEHZ - 1, PA(MCFSLT_STCNT));
> @@ -92,12 +93,6 @@ static irqreturn_t mcfslt_tick(int irq, void *dummy)
> return timer_interrupt(irq, dummy);
> }
>
> -static struct irqaction mcfslt_timer_irq = {
> - .name = "timer",
> - .flags = IRQF_TIMER,
> - .handler = mcfslt_tick,
> -};
> -
> static u64 mcfslt_read_clk(struct clocksource *cs)
> {
> unsigned long flags;
> @@ -140,7 +135,8 @@ void hw_timer_init(irq_handler_t handler)
> mcfslt_cnt = mcfslt_cycles_per_jiffy;
>
> timer_interrupt = handler;
> - setup_irq(MCF_IRQ_TIMER, &mcfslt_timer_irq);
> + if (request_irq(MCF_IRQ_TIMER, mcfslt_tick, IRQF_TIMER, "timer", NULL))
> + pr_err("%s: request_irq() failed\n", "timer");
>
> clocksource_register_hz(&mcfslt_clk, MCF_BUSCLK);
>
> diff --git a/arch/m68k/coldfire/timers.c b/arch/m68k/coldfire/timers.c
> index 227aa5d13709..eb442a0e3b50 100644
> --- a/arch/m68k/coldfire/timers.c
> +++ b/arch/m68k/coldfire/timers.c
> @@ -82,14 +82,6 @@ static irqreturn_t mcftmr_tick(int irq, void *dummy)
>
> /***************************************************************************/
>
> -static struct irqaction mcftmr_timer_irq = {
> - .name = "timer",
> - .flags = IRQF_TIMER,
> - .handler = mcftmr_tick,
> -};
> -
> -/***************************************************************************/
> -
> static u64 mcftmr_read_clk(struct clocksource *cs)
> {
> unsigned long flags;
> @@ -118,6 +110,8 @@ static struct clocksource mcftmr_clk = {
>
> void hw_timer_init(irq_handler_t handler)
> {
> + int r;
> +
> __raw_writew(MCFTIMER_TMR_DISABLE, TA(MCFTIMER_TMR));
> mcftmr_cycles_per_jiffy = FREQ / HZ;
> /*
> @@ -134,7 +128,11 @@ void hw_timer_init(irq_handler_t handler)
>
> timer_interrupt = handler;
> init_timer_irq();
> - setup_irq(MCF_IRQ_TIMER, &mcftmr_timer_irq);
> + r = request_irq(MCF_IRQ_TIMER, mcftmr_tick, IRQF_TIMER, "timer", NULL);
> + if (r) {
> + pr_debug("Failed to request irq %d (timer): %pe\n",
> + MCF_IRQ_TIMER, ERR_PTR(r));
> + }
>
> #ifdef CONFIG_HIGHPROFILE
> coldfire_profile_init();
> @@ -170,12 +168,6 @@ irqreturn_t coldfire_profile_tick(int irq, void *dummy)
>
> /***************************************************************************/
>
> -static struct irqaction coldfire_profile_irq = {
> - .name = "profile timer",
> - .flags = IRQF_TIMER,
> - .handler = coldfire_profile_tick,
> -};
> -
> void coldfire_profile_init(void)
> {
> printk(KERN_INFO "PROFILE: lodging TIMER2 @ %dHz as profile timer\n",
> @@ -188,7 +180,9 @@ void coldfire_profile_init(void)
> __raw_writew(MCFTIMER_TMR_ENORI | MCFTIMER_TMR_CLK16 |
> MCFTIMER_TMR_RESTART | MCFTIMER_TMR_ENABLE, PA(MCFTIMER_TMR));
>
> - setup_irq(MCF_IRQ_PROFILER, &coldfire_profile_irq);
> + if (request_irq(MCF_IRQ_PROFILER, coldfire_profile_tick, IRQF_TIMER,
> + "profile timer", NULL))
> + pr_err("%s: request_irq() failed\n", "profile timer");
> }
>
> /***************************************************************************/
> --
> 2.25.1
next prev parent reply other threads:[~2020-02-29 13:25 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-29 12:56 [PATCH v3] m68k: Replace setup_irq() by request_irq() afzal mohammed
2020-02-29 13:25 ` afzal mohammed [this message]
2020-02-29 15:34 ` [PATCH v4] " afzal mohammed
2020-03-01 1:26 ` [PATCH v5] " afzal mohammed
2020-03-02 1:32 ` Greg Ungerer
2020-03-04 1:37 ` afzal mohammed
2020-03-04 1:39 ` Greg Ungerer
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=20200229132551.GA5111@afzalpc \
--to=afzal.mohd.ma@gmail.com \
--cc=fthain@telegraphics.com.au \
--cc=geert@linux-m68k.org \
--cc=gerg@linux-m68k.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-m68k@lists.linux-m68k.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.