public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Leo Yan <leo.yan@linaro.org>
To: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: rui.zhang@intel.com, edubezval@gmail.com,
	linux-pm@vger.kernel.org, kevin.wangtao@linaro.org,
	open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 03/13] thermal/drivers/hisi: Fix kernel panic on alarm interrupt
Date: Fri, 1 Sep 2017 22:14:17 +0800	[thread overview]
Message-ID: <20170901141417.GA11198@leoy-linaro> (raw)
In-Reply-To: <1504082857-21702-3-git-send-email-daniel.lezcano@linaro.org>

On Wed, Aug 30, 2017 at 10:47:27AM +0200, Daniel Lezcano wrote:
> The threaded interrupt for the alarm interrupt is requested before the
> temperature controller is setup. This one can fire an interrupt immediately
> leading to a kernel panic as the sensor data is not initialized.
> 
> In order to prevent that, move the threaded irq after the Tsensor is setup.
> 
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>

Reviewed-by: Leo Yan <leo.yan@linaro.org>
Tested-by: Leo Yan <leo.yan@linaro.org>

> ---
>  drivers/thermal/hisi_thermal.c | 18 +++++++++---------
>  1 file changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c
> index 92b6889..67db523 100644
> --- a/drivers/thermal/hisi_thermal.c
> +++ b/drivers/thermal/hisi_thermal.c
> @@ -287,15 +287,6 @@ static int hisi_thermal_probe(struct platform_device *pdev)
>  	if (data->irq < 0)
>  		return data->irq;
>  
> -	ret = devm_request_threaded_irq(&pdev->dev, data->irq,
> -					hisi_thermal_alarm_irq,
> -					hisi_thermal_alarm_irq_thread,
> -					0, "hisi_thermal", data);
> -	if (ret < 0) {
> -		dev_err(&pdev->dev, "failed to request alarm irq: %d\n", ret);
> -		return ret;
> -	}
> -
>  	platform_set_drvdata(pdev, data);
>  
>  	data->clk = devm_clk_get(&pdev->dev, "thermal_clk");
> @@ -328,6 +319,15 @@ static int hisi_thermal_probe(struct platform_device *pdev)
>  
>  	hisi_thermal_toggle_sensor(&data->sensors, true);
>  
> +	ret = devm_request_threaded_irq(&pdev->dev, data->irq,
> +					hisi_thermal_alarm_irq,
> +					hisi_thermal_alarm_irq_thread,
> +					0, "hisi_thermal", data);
> +	if (ret < 0) {
> +		dev_err(&pdev->dev, "failed to request alarm irq: %d\n", ret);
> +		return ret;
> +	}
> +

Just reminding for the initialization sequence, could we also move
hisi_thermal_enable_bind_irq_sensor(data) after function
hisi_thermal_register_sensor()? The reason is after we registser
sensor with specified sensor ID, then we can bind irq for the
specified ID, otherwise it will wrongly to bind irq to sensor 0. So
finally we can get result as below:

        ret = hisi_thermal_register_sensor(pdev, data,
                                           &data->sensors,
                                           HISI_DEFAULT_SENSOR);
        if (ret) {
                dev_err(&pdev->dev, "failed to register thermal sensor: %d\n",
                        ret);
                return ret;
        }

        hisi_thermal_enable_bind_irq_sensor(data);
        hisi_thermal_toggle_sensor(&data->sensors, true);
        data->irq_enabled = true;

        ret = devm_request_threaded_irq(&pdev->dev, data->irq,
                                        hisi_thermal_alarm_irq,
                                        hisi_thermal_alarm_irq_thread,
                                        0, "hisi_thermal", data);
        if (ret < 0) {
                dev_err(&pdev->dev, "failed to request alarm irq: %d\n", ret);
                return ret;
        }

>  	enable_irq(data->irq);
>  
>  	return 0;
> -- 
> 2.7.4
> 

  reply	other threads:[~2017-09-01 14:14 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-30  8:47 [PATCH 01/13] thermal/drivers/hisi: Fix missing interrupt enablement Daniel Lezcano
2017-08-30  8:47 ` [PATCH 02/13] thermal/drivers/hisi: Remove the multiple sensors support Daniel Lezcano
2017-09-01 14:05   ` Leo Yan
2017-09-01 20:48     ` Daniel Lezcano
2017-08-30  8:47 ` [PATCH 03/13] thermal/drivers/hisi: Fix kernel panic on alarm interrupt Daniel Lezcano
2017-09-01 14:14   ` Leo Yan [this message]
2017-08-30  8:47 ` [PATCH 04/13] thermal/drivers/hisi: Simplify the temperature/step computation Daniel Lezcano
2017-09-01 14:24   ` Leo Yan
2017-08-30  8:47 ` [PATCH 05/13] thermal/drivers/hisi: Fix multiple alarm interrupts firing Daniel Lezcano
2017-09-01 14:40   ` Leo Yan
2017-08-30  8:47 ` [PATCH 06/13] thermal/drivers/hisi: Remove pointless lock Daniel Lezcano
2017-09-01 14:44   ` Leo Yan
2017-08-30  8:47 ` [PATCH 07/13] thermal/drivers/hisi: Encapsulate register writes into helpers Daniel Lezcano
2017-09-02  2:09   ` Leo Yan
2017-09-02  2:17     ` Leo Yan
2017-08-30  8:47 ` [PATCH 08/13] thermal/drivers/hisi: Fix configuration register setting Daniel Lezcano
2017-09-02  2:54   ` Leo Yan
2017-09-02  8:34     ` Daniel Lezcano
2017-09-04  0:58       ` Leo Yan
2017-09-04  9:16         ` Daniel Lezcano
2017-08-30  8:47 ` [PATCH 09/13] thermal/drivers/hisi: Remove costly sensor inspection Daniel Lezcano
2017-09-02  3:29   ` Leo Yan
2017-09-02 13:10     ` Daniel Lezcano
2017-09-04  0:50       ` Leo Yan
2017-09-04 11:29         ` Daniel Lezcano
2017-09-04 14:30           ` Leo Yan
2017-08-30  8:47 ` [PATCH 10/13] thermal/drivers/hisi: Rename and remove unused field Daniel Lezcano
2017-09-02  3:36   ` Leo Yan
2017-08-30  8:47 ` [PATCH 11/13] thermal/drivers/hisi: Convert long to int Daniel Lezcano
2017-09-02  3:41   ` Leo Yan
2017-08-30  8:47 ` [PATCH 12/13] thermal/drivers/hisi: Remove thermal data back pointer Daniel Lezcano
2017-08-30  8:47 ` [PATCH 13/13] thermal/drivers/hisi: Remove mutex_lock in the code Daniel Lezcano
2017-09-02  4:04   ` Leo Yan
2017-09-02 13:11     ` Daniel Lezcano
2017-09-01  8:31 ` [PATCH 01/13] thermal/drivers/hisi: Fix missing interrupt enablement Leo Yan

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=20170901141417.GA11198@leoy-linaro \
    --to=leo.yan@linaro.org \
    --cc=daniel.lezcano@linaro.org \
    --cc=edubezval@gmail.com \
    --cc=kevin.wangtao@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rui.zhang@intel.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox