All of lore.kernel.org
 help / color / mirror / Atom feed
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Lina Iyer <lina.iyer@linaro.org>
Cc: daniel.lezcano@linaro.org, khilman@linaro.org,
	sboyd@codeaurora.org, galak@codeaurora.org,
	linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, msivasub@codeaurora.org,
	devicetree@vger.kernel.org, lorenzo.pieralisi@arm.com
Subject: Re: [RFC PATCH v15 01/11] ARM: cpuidle: Register per cpuidle device
Date: Tue, 10 Mar 2015 10:37:34 +0000	[thread overview]
Message-ID: <20150310103734.GK8656@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1425914206-22295-2-git-send-email-lina.iyer@linaro.org>

On Mon, Mar 09, 2015 at 09:16:36AM -0600, Lina Iyer wrote:
> @@ -105,18 +109,46 @@ static int __init arm_idle_init(void)
>  	if (ret <= 0)
>  		return ret ? : -ENODEV;
>  
> +

A bit better formatting would be nice - you don't need the extra blank
line here.

> +	ret = cpuidle_register_driver(drv);
> +	if (ret) {
> +		pr_err("Failed to register cpuidle driver\n");
> +		return ret;
> +	}
> +
>  	/*
>  	 * Call arch CPU operations in order to initialize
>  	 * idle states suspend back-end specific data
>  	 */
>  	for_each_possible_cpu(cpu) {
> +

This blank line is not necessary either.

>  		ret = arm_cpuidle_init(cpu);

However, a blank line here would be a good thing.

> +		/*
> +		 * This cpu does not support any idle states
> +		 */

Also, formatting this as /* This cpu does not support any idle states */ is
acceptable too, and doesn't waste as many lines.

> +		if (ret == -ENOSYS)
> +			continue;
> +
>  		if (ret) {
>  			pr_err("CPU %d failed to init idle CPU ops\n", cpu);
>  			return ret;
>  		}
> +
> +		dev = kzalloc(sizeof(*dev), GFP_KERNEL);
> +		if (!dev)
> +			return -ENOMEM;
> +
> +		dev->cpu = cpu;
> +		ret = cpuidle_register_device(dev);
> +		if (ret) {
> +			pr_err("Failed to register cpuidle device for CPU %d\n",
> +			       cpu);
> +			return ret;

It looks like we leak the 'dev' allocation here.

Also, other error paths, it looks like we leave the previously registered
cpuidle devices in place.  That may be acceptable if the intention is to
initialise as many CPUs as possible - but we then miss the
cpuidle_register() call below, which seems to make the registered devices
useless.  It's a little inconsistent.

Also, it's useful to report why something fails - printing the error code
can help debugging if it isn't already printed elsewhere.

> +		}
> +
> +		per_cpu(cpuidle_arm_dev, cpu) = dev;
>  	}
>  
> -	return cpuidle_register(drv, NULL);
> +	return 0;
>  }
>  device_initcall(arm_idle_init);

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

WARNING: multiple messages have this Message-ID (diff)
From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH v15 01/11] ARM: cpuidle: Register per cpuidle device
Date: Tue, 10 Mar 2015 10:37:34 +0000	[thread overview]
Message-ID: <20150310103734.GK8656@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1425914206-22295-2-git-send-email-lina.iyer@linaro.org>

On Mon, Mar 09, 2015 at 09:16:36AM -0600, Lina Iyer wrote:
> @@ -105,18 +109,46 @@ static int __init arm_idle_init(void)
>  	if (ret <= 0)
>  		return ret ? : -ENODEV;
>  
> +

A bit better formatting would be nice - you don't need the extra blank
line here.

> +	ret = cpuidle_register_driver(drv);
> +	if (ret) {
> +		pr_err("Failed to register cpuidle driver\n");
> +		return ret;
> +	}
> +
>  	/*
>  	 * Call arch CPU operations in order to initialize
>  	 * idle states suspend back-end specific data
>  	 */
>  	for_each_possible_cpu(cpu) {
> +

This blank line is not necessary either.

>  		ret = arm_cpuidle_init(cpu);

However, a blank line here would be a good thing.

> +		/*
> +		 * This cpu does not support any idle states
> +		 */

Also, formatting this as /* This cpu does not support any idle states */ is
acceptable too, and doesn't waste as many lines.

> +		if (ret == -ENOSYS)
> +			continue;
> +
>  		if (ret) {
>  			pr_err("CPU %d failed to init idle CPU ops\n", cpu);
>  			return ret;
>  		}
> +
> +		dev = kzalloc(sizeof(*dev), GFP_KERNEL);
> +		if (!dev)
> +			return -ENOMEM;
> +
> +		dev->cpu = cpu;
> +		ret = cpuidle_register_device(dev);
> +		if (ret) {
> +			pr_err("Failed to register cpuidle device for CPU %d\n",
> +			       cpu);
> +			return ret;

It looks like we leak the 'dev' allocation here.

Also, other error paths, it looks like we leave the previously registered
cpuidle devices in place.  That may be acceptable if the intention is to
initialise as many CPUs as possible - but we then miss the
cpuidle_register() call below, which seems to make the registered devices
useless.  It's a little inconsistent.

Also, it's useful to report why something fails - printing the error code
can help debugging if it isn't already printed elsewhere.

> +		}
> +
> +		per_cpu(cpuidle_arm_dev, cpu) = dev;
>  	}
>  
> -	return cpuidle_register(drv, NULL);
> +	return 0;
>  }
>  device_initcall(arm_idle_init);

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

  parent reply	other threads:[~2015-03-10 10:37 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-09 15:16 [RFC PATCH v15 00/11] ARM: qcom: cpuidle support for 8064, 8074, 8084 Lina Iyer
2015-03-09 15:16 ` Lina Iyer
2015-03-09 15:16 ` [RFC PATCH v15 01/11] ARM: cpuidle: Register per cpuidle device Lina Iyer
2015-03-09 15:16   ` Lina Iyer
2015-03-09 21:29   ` Andy Gross
2015-03-09 21:29     ` Andy Gross
2015-03-09 21:40     ` Lina Iyer
2015-03-09 21:40       ` Lina Iyer
2015-03-09 22:04       ` Andy Gross
2015-03-09 22:04         ` Andy Gross
2015-03-10 10:37   ` Russell King - ARM Linux [this message]
2015-03-10 10:37     ` Russell King - ARM Linux
2015-03-10 14:57     ` Lina Iyer
2015-03-10 14:57       ` Lina Iyer
2015-03-09 15:16 ` [RFC PATCH v15 02/11] ARM: qcom: Add Subsystem Power Manager (SPM) driver Lina Iyer
2015-03-09 15:16   ` Lina Iyer
2015-03-10 17:26   ` Kumar Gala
2015-03-10 17:26     ` Kumar Gala
2015-03-10 18:51     ` Lina Iyer
2015-03-10 18:51       ` Lina Iyer
2015-03-12 22:50   ` Lina Iyer
2015-03-12 22:50     ` Lina Iyer
2015-03-16 21:51   ` Stephen Boyd
2015-03-16 21:51     ` Stephen Boyd
2015-03-16 22:51     ` Lina Iyer
2015-03-16 22:51       ` Lina Iyer
2015-03-09 15:16 ` [RFC PATCH v15 04/11] ARM: cpuidle: Register cpuidle_ops for QCOM cpus Lina Iyer
2015-03-09 15:16   ` Lina Iyer
2015-03-11 18:16   ` Stephen Boyd
2015-03-11 18:16     ` Stephen Boyd
2015-03-12 12:34     ` Daniel Lezcano
2015-03-12 12:34       ` Daniel Lezcano
2015-03-12 15:06       ` Lina Iyer
2015-03-12 15:06         ` Lina Iyer
2015-03-13  9:57         ` Daniel Lezcano
2015-03-13  9:57           ` Daniel Lezcano
2015-03-09 15:16 ` [PATCH v15 05/11] ARM: dts: qcom: Add power-controller device node for 8074 Krait CPUs Lina Iyer
2015-03-09 15:16   ` Lina Iyer
     [not found] ` <1425914206-22295-1-git-send-email-lina.iyer-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-03-09 15:16   ` [PATCH v15 03/11] ARM: cpuidle: qcom: Add documentation for qcom cpuidle states Lina Iyer
2015-03-09 15:16     ` Lina Iyer
2015-03-09 15:16   ` [PATCH v15 06/11] ARM: dts: qcom: Add power-controller device node for 8084 Krait CPUs Lina Iyer
2015-03-09 15:16     ` Lina Iyer
2015-03-09 15:16   ` [PATCH v15 09/11] ARM: dts: qcom: Add idle states device nodes for 8084 Lina Iyer
2015-03-09 15:16     ` Lina Iyer
2015-03-09 15:16 ` [PATCH v15 07/11] ARM: dts: qcom: Update power-controller device node for 8064 Krait CPUs Lina Iyer
2015-03-09 15:16   ` Lina Iyer
2015-03-09 15:16 ` [PATCH v15 08/11] ARM: dts: qcom: Add idle states device nodes for 8074 Lina Iyer
2015-03-09 15:16   ` Lina Iyer
2015-03-09 15:16 ` [PATCH v15 10/11] ARM: dts: qcom: Add idle state device nodes for 8064 Lina Iyer
2015-03-09 15:16   ` Lina Iyer
2015-03-09 15:16 ` [PATCH v15 11/11] ARM: qcom: Update defconfig Lina Iyer
2015-03-09 15:16   ` Lina Iyer

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=20150310103734.GK8656@n2100.arm.linux.org.uk \
    --to=linux@arm.linux.org.uk \
    --cc=daniel.lezcano@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=khilman@linaro.org \
    --cc=lina.iyer@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=msivasub@codeaurora.org \
    --cc=sboyd@codeaurora.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.