All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
	Jean Delvare <khali@linux-fr.org>,
	ben-linux@fluff.org, w.sang@pengutronix.de,
	linux-kernel@vger.kernel.org, lenb@kernel.org,
	rafael.j.wysocki@intel.com, broonie@opensource.wolfsonmicro.com,
	grant.likely@secretlab.ca, linus.walleij@linaro.org,
	mathias.nyman@linux.intel.com, linux-acpi@vger.kernel.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: [PATCH 1/2] ACPI: Allow ACPI handles of devices to be initialized in advance
Date: Mon, 19 Nov 2012 11:42:34 +0200	[thread overview]
Message-ID: <20121119094234.GH17774@intel.com> (raw)
In-Reply-To: <5604758.tWMNMRG2En@vostro.rjw.lan>

On Sun, Nov 18, 2012 at 10:12:52PM +0100, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> 
> Currently, the ACPI handles of devices are initialized from within
> device_add(), by acpi_bind_one() called from acpi_platform_notify()
> which first uses the .find_device() routine provided by the device's
> bus type to find the matching device node in the ACPI namespace.
> This is a source of some computational overhead and, moreover, the
> correctness of the result depends on the implementation of
> .find_device() which is known to fail occasionally for some bus types
> (e.g. PCI).  In some cases, however, the corresponding ACPI device
> node is known already before calling device_add() for the given
> struct device object and the whole .find_device() dance in
> acpi_platform_notify() is then simply unnecessary.
> 
> For this reason, make it possible to initialize the ACPI handles of
> devices before calling device_add() for them.  Modify
> acpi_platform_notify() to call acpi_bind_one() in advance to check
> the device's existing ACPI handle and skip the .find_device()
> search if that is successful.  Change acpi_bind_one() accordingly.
> 
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
>  drivers/acpi/glue.c |   42 +++++++++++++++++++++++++++++++++---------
>  1 file changed, 33 insertions(+), 9 deletions(-)
> 
> Index: linux/drivers/acpi/glue.c
> ===================================================================
> --- linux.orig/drivers/acpi/glue.c
> +++ linux/drivers/acpi/glue.c
> @@ -135,41 +135,54 @@ static int acpi_bind_one(struct device *
>  	int retval = -EINVAL;
>  
>  	if (dev->acpi_handle) {
> -		dev_warn(dev, "Drivers changed 'acpi_handle'\n");
> -		return -EINVAL;
> +		if (handle) {
> +			dev_warn(dev, "ACPI handle is already set\n");
> +			return -EINVAL;
> +		} else {
> +			handle = dev->acpi_handle;
> +		}
>  	}
> +	if (!handle)
> +		return -EINVAL;
>  
>  	get_device(dev);
>  	status = acpi_bus_get_device(handle, &acpi_dev);
>  	if (ACPI_FAILURE(status))
>  		goto err;
>  
> -	physical_node = kzalloc(sizeof(struct acpi_device_physical_node),
> -		GFP_KERNEL);
> +	physical_node = kzalloc(sizeof(*physical_node), GFP_KERNEL);

Here we allocate memory for the physical node...

>  	if (!physical_node) {
>  		retval = -ENOMEM;
>  		goto err;
>  	}
>  
>  	mutex_lock(&acpi_dev->physical_node_lock);
> +
> +	/* Sanity check. */
> +	list_for_each_entry(physical_node, &acpi_dev->physical_node_list, node)

.. and overwrite it here ;-)

Maybe using a different variable for the sanity check?

I've changed the SPI/I2C patches to use this as well and they got a lot
smaller as we don't have to do the .find_device() magic.

Once you have fixed the above, you can add my

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>

to these two patches, if you like.

  reply	other threads:[~2012-11-19  9:39 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-15 11:03 [PATCH v2 0/3] ACPI 5 support for GPIO, SPI and I2C Mika Westerberg
2012-11-15 11:03 ` [PATCH v2 1/3] gpio / ACPI: add ACPI support Mika Westerberg
2012-11-16  1:34   ` Rafael J. Wysocki
2012-11-16  6:54     ` Mika Westerberg
2012-11-16  8:05       ` Mika Westerberg
2012-11-16  8:12         ` Mika Westerberg
2012-11-16 10:02           ` Rafael J. Wysocki
2012-11-16 12:49             ` Mika Westerberg
2012-11-16 10:03   ` Rafael J. Wysocki
2012-11-15 11:03 ` [PATCH v2 2/3] spi / ACPI: add ACPI enumeration support Mika Westerberg
2012-11-16 10:06   ` Rafael J. Wysocki
2012-11-17 10:11   ` Rafael J. Wysocki
2012-11-17 10:18     ` Mika Westerberg
2012-11-15 11:03 ` [PATCH v2 3/3] i2c " Mika Westerberg
2012-11-16 10:09   ` Rafael J. Wysocki
2012-11-16 13:03     ` Jean Delvare
2012-11-16 13:21       ` Rafael J. Wysocki
2012-11-16 13:42         ` Jean Delvare
2012-11-16 14:17           ` Mika Westerberg
2012-11-16 15:23             ` Mika Westerberg
2012-11-16 16:47               ` Jean Delvare
2012-11-16 17:28                 ` [PATCH v2 3/3 UPDATED] " Mika Westerberg
2012-11-16 18:12                   ` Jean Delvare
2012-11-17  6:46                   ` Bjorn Helgaas
2012-11-17  8:03                     ` Mika Westerberg
2012-11-17  9:55                       ` Mika Westerberg
2012-11-19 22:49                         ` Bjorn Helgaas
2012-11-19 23:15                           ` Rafael J. Wysocki
2012-11-19 23:28                           ` Rafael J. Wysocki
2012-11-20  7:07                           ` Mika Westerberg
2012-11-17 11:24                       ` Rafael J. Wysocki
2012-11-18 15:55                         ` Mika Westerberg
2012-11-18 21:10                           ` [PATCH 0/2] ACPI: Simplify "glueing" to physical nodes (was: Re: [PATCH v2 3/3 UPDATED] i2c / ACPI: add ACPI enumeration support) Rafael J. Wysocki
2012-11-18 21:12                             ` [PATCH 1/2] ACPI: Allow ACPI handles of devices to be initialized in advance Rafael J. Wysocki
2012-11-19  9:42                               ` Mika Westerberg [this message]
2012-11-19 12:33                                 ` [Update][PATCH " Rafael J. Wysocki
2012-11-18 21:13                             ` [PATCH 2/2] ACPI / platform: Initialize ACPI handles of platform devices " Rafael J. Wysocki
2012-11-19 16:23                               ` Greg Kroah-Hartman
2012-11-19 17:32                                 ` Rafael J. Wysocki
2012-11-19 17:45                                   ` Rafael J. Wysocki
2012-11-19 20:44                                     ` Rafael J. Wysocki
2012-11-19 21:05                                       ` Mika Westerberg
2012-11-19 21:56                                         ` Rafael J. Wysocki
2012-11-19 22:32                                       ` Greg Kroah-Hartman
2012-11-19 22:44                                         ` Rafael J. Wysocki
2012-11-19 18:25                                   ` Rafael J. Wysocki
2012-11-19 22:31                                   ` Greg Kroah-Hartman
2012-11-19 22:45                                     ` Rafael J. Wysocki
2012-11-20  0:55                             ` [Update][PATCH 0/3] ACPI: Simplify "glueing" to physical nodes Rafael J. Wysocki
2012-11-20  0:57                               ` [Update][PATCH 1/3] ACPI: Allow ACPI handles of devices to be initialized in advance Rafael J. Wysocki
2012-11-20  0:59                               ` [Update][PATCH 2/3] ACPI / driver core: Introduce struct acpi_dev_node and related macros Rafael J. Wysocki
2012-11-20  9:10                                 ` Mika Westerberg
2012-11-20  9:34                                   ` [Update 2][PATCH " Rafael J. Wysocki
2012-11-20 12:57                                     ` Mika Westerberg
2012-11-20 18:08                                     ` Greg Kroah-Hartman
2012-11-20  1:01                               ` [Update][PATCH 3/3] ACPI / platform: Initialize ACPI handles of platform devices in advance Rafael J. Wysocki
2012-11-20 18:08                                 ` Greg Kroah-Hartman
2012-11-20  9:11                               ` [Update][PATCH 0/3] ACPI: Simplify "glueing" to physical nodes Mika Westerberg
2012-11-20  9:31                                 ` Rafael J. Wysocki
2012-11-20 18:09                               ` Greg Kroah-Hartman
2012-11-20 21:40                                 ` Rafael J. Wysocki
2012-11-16 20:02             ` [PATCH v2 3/3] i2c / ACPI: add ACPI enumeration support Rafael J. Wysocki
2012-11-16 20:09               ` Mika Westerberg
2012-11-16 20:18                 ` Rafael J. Wysocki
2012-11-20 10:29 ` [PATCH v3 0/3] ACPI 5 support for GPIO, SPI and I2C Mika Westerberg
2012-11-20 10:29   ` [PATCH v3 1/3] gpio / ACPI: add ACPI support Mika Westerberg
2012-11-20 12:46     ` Rafael J. Wysocki
2012-11-20 10:29   ` [PATCH v3 2/3] spi / ACPI: add ACPI enumeration support Mika Westerberg
2012-11-20 13:05     ` Rafael J. Wysocki
2012-11-20 13:15       ` Mika Westerberg
2012-11-20 13:24         ` Rafael J. Wysocki
2012-11-20 10:29   ` [PATCH v3 3/3] i2c " Mika Westerberg
2012-11-20 13:06     ` Rafael J. Wysocki
2012-11-20 13:57       ` Mika Westerberg
2012-11-20 18:13   ` [PATCH v4 0/3] ACPI 5 support for GPIO, SPI and I2C Mika Westerberg
2012-11-20 18:13     ` [PATCH v4 1/3] gpio / ACPI: add ACPI support Mika Westerberg
2012-11-30 11:20       ` Grant Likely
2012-11-30 11:20         ` Grant Likely
2012-11-30 11:27         ` Rafael J. Wysocki
2012-11-20 18:13     ` [PATCH v4 2/3] spi / ACPI: add ACPI enumeration support Mika Westerberg
2012-11-30 11:24       ` Grant Likely
2012-11-30 11:24         ` Grant Likely
2012-11-30 11:36         ` Rafael J. Wysocki
2012-11-20 18:13     ` [PATCH v4 3/3] i2c " Mika Westerberg
2012-11-21 21:31     ` [PATCH v4 0/3] ACPI 5 support for GPIO, SPI and I2C Rafael J. Wysocki
2012-11-21 21:54       ` Jean Delvare
2012-11-23 11:39         ` Rafael J. Wysocki
2012-11-22  1:36       ` Mark Brown
2012-11-22  9:43       ` Linus Walleij
2012-11-22 10:03         ` Rafael J. Wysocki
2012-11-28 12:36           ` Mika Westerberg

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=20121119094234.GH17774@intel.com \
    --to=mika.westerberg@linux.intel.com \
    --cc=ben-linux@fluff.org \
    --cc=bhelgaas@google.com \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=grant.likely@secretlab.ca \
    --cc=gregkh@linuxfoundation.org \
    --cc=khali@linux-fr.org \
    --cc=lenb@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathias.nyman@linux.intel.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=rjw@sisk.pl \
    --cc=w.sang@pengutronix.de \
    /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.