All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zhao Yakui <yakui.zhao@intel.com>
To: David Brownell <david-b@pacbell.net>
Cc: linux-pm@lists.linux-foundation.org,
	Thomas Renninger <trenn@suse.de>,
	linux-acpi@vger.kernel.org
Subject: Re: [patch 2.6.25-rc6 1/7] crosslink ACPI and "real" device nodes
Date: Fri, 21 Mar 2008 14:43:28 +0800	[thread overview]
Message-ID: <1206081808.4109.23.camel@localhost.localdomain> (raw)
In-Reply-To: <200803201409.28330.david-b@pacbell.net>

On Thu, 2008-03-20 at 14:09 -0700, David Brownell wrote:
> From: David Brownell <dbrownell@users.sourceforge.net>
> 
> Add cross-links between ACPI device and "real" devices in sysfs,
> exposing otherwise-hidden interrelationships between the various
> device nodes which ACPI creates.  As a representative example one
> hardware device is exposed as two logical devices (PNP and ACPI):
> 
>   .../pnp0/00:06/
>   .../LNXSYSTM:00/device:00/PNP0A03:00/device:15/PNP0B00:00/
> 
> The PNP device gets a "firmware_node" link pointing to the ACPI device.
> The ACPI device has a "physical_node" link pointing to the PNP device.
> Linux drivers currently bind only to the "physical" device nodes.
Very good idea. 
But maybe there is a lot of ACPI devices on the laptops. And we take a
little care about the association between the acpi device and "real"
device.
Maybe it is more useful if the link is set up for the acpi device with
the _PRW object. Maybe the link that points to ACPI device with the _PRW
object is created in the /sys/power/.
> 
> Other device trees provided by firmware tables could be exported
> using the same scheme; these names aren't ACPI-specific.
> 
> (Based on a patch from Zhang Rui.  This version is modified to not
> depend on the patch teaching ACPI about driver model wakeup flags.)
> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
> Cc: Zhang Rui <rui.zhang@intel.com> 
> ---
> Change from previous version:  if creating the link fails, a
> pr_debug level message is emitted.
> 
>  drivers/acpi/glue.c |   27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
> 
> --- g26.orig/drivers/acpi/glue.c	2008-03-08 11:11:18.000000000 -0800
> +++ g26/drivers/acpi/glue.c	2008-03-08 11:29:07.000000000 -0800
> @@ -142,6 +142,7 @@ EXPORT_SYMBOL(acpi_get_physical_device);
>  
>  static int acpi_bind_one(struct device *dev, acpi_handle handle)
>  {
> +	struct acpi_device *acpi_dev;
>  	acpi_status status;
>  
>  	if (dev->archdata.acpi_handle) {
> @@ -157,6 +158,23 @@ static int acpi_bind_one(struct device *
>  	}
>  	dev->archdata.acpi_handle = handle;
>  
> +	status = acpi_bus_get_device(handle, &acpi_dev);
> +	if (!ACPI_FAILURE(status)) {
> +		int ret;
> +
> +		ret = sysfs_create_link(&dev->kobj, &acpi_dev->dev.kobj,
> +				"firmware_node");
> +		if (ret != 0)
> +			pr_debug(PREFIX "Can't create %s link for %s\n",
> +				"firmware_node", dev->bus_id);
> +
> +		ret = sysfs_create_link(&acpi_dev->dev.kobj, &dev->kobj,
> +				"physical_node");
> +		if (ret != 0)
> +			pr_debug(PREFIX "Can't create %s link for %s\n",
> +				"physical_node", acpi_dev->dev.bus_id);
> +	}
> +
>  	return 0;
>  }
>  
> @@ -165,8 +183,17 @@ static int acpi_unbind_one(struct device
>  	if (!dev->archdata.acpi_handle)
>  		return 0;
>  	if (dev == acpi_get_physical_device(dev->archdata.acpi_handle)) {
> +		struct acpi_device *acpi_dev;
> +
>  		/* acpi_get_physical_device increase refcnt by one */
>  		put_device(dev);
> +
> +		if (!acpi_bus_get_device(dev->archdata.acpi_handle,
> +					&acpi_dev)) {
> +			sysfs_remove_link(&dev->kobj, "firmware_node");
> +			sysfs_remove_link(&acpi_dev->dev.kobj, "physical_node");
> +		}
> +
>  		acpi_detach_data(dev->archdata.acpi_handle,
>  				 acpi_glue_data_handler);
>  		dev->archdata.acpi_handle = NULL;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


  parent reply	other threads:[~2008-03-21  6:55 UTC|newest]

Thread overview: 111+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-20 21:08 [patch 2.6.25-rc6 0/7] misc pm wake patches David Brownell
2008-03-20 21:09 ` [patch 2.6.25-rc6 1/7] crosslink ACPI and "real" device nodes David Brownell
2008-03-20 21:09 ` David Brownell
2008-03-21  6:43   ` Zhao Yakui
2008-03-21  6:43   ` Zhao Yakui [this message]
2008-03-21  7:31     ` David Brownell
2008-03-21  7:31     ` David Brownell
2008-03-21  8:34       ` Zhao Yakui
2008-03-21  8:34       ` Zhao Yakui
2008-03-21  9:04         ` David Brownell
2008-03-21  9:04         ` David Brownell
2008-03-20 21:10 ` [patch 2.6.25-rc6 2/7] acpi_pm_device_sleep_state() cleanup David Brownell
2008-03-24 16:30   ` [linux-pm] " Pavel Machek
2008-03-24 16:30   ` Pavel Machek
2008-04-19  4:11   ` [RESEND patch 2.6.25] " David Brownell
2008-04-29 20:33   ` [RE-RESEND patch 2.6.25-git] " David Brownell
2008-04-29 20:33   ` David Brownell
2008-04-29 21:49     ` Rafael J. Wysocki
2008-04-29 22:12       ` David Brownell
2008-04-29 22:12       ` David Brownell
2008-04-30 12:07         ` Rafael J. Wysocki
2008-04-30 12:07         ` Rafael J. Wysocki
2008-04-29 21:49     ` Rafael J. Wysocki
2008-03-20 21:10 ` [patch 2.6.25-rc6 2/7] " David Brownell
2008-03-20 21:12 ` [patch 2.6.25-rc6 3/7] pci_choose_state() cleanup and fixes David Brownell
2008-03-20 21:12 ` David Brownell
2008-03-20 22:37   ` Rafael J. Wysocki
2008-03-20 23:03     ` David Brownell
2008-03-20 23:03     ` David Brownell
2008-03-21  0:22       ` Rafael J. Wysocki
2008-03-21  0:22       ` Rafael J. Wysocki
2008-03-21  0:55         ` Alan Stern
2008-03-21  0:55         ` [linux-pm] " Alan Stern
2008-03-21  1:47           ` Rafael J. Wysocki
2008-03-21  1:47           ` [linux-pm] " Rafael J. Wysocki
2008-03-21  8:15             ` David Brownell
2008-03-21  8:15             ` [linux-pm] " David Brownell
2008-03-21 16:23               ` Rafael J. Wysocki
2008-03-22 17:55                 ` David Brownell
2008-03-22 18:11                   ` Rafael J. Wysocki
2008-03-22 18:29                     ` David Brownell
2008-03-22 18:29                     ` David Brownell
2008-03-22 18:11                   ` Rafael J. Wysocki
2008-03-22 17:55                 ` David Brownell
2008-03-21 16:23               ` Rafael J. Wysocki
2008-03-21  7:53         ` David Brownell
2008-03-21 16:38           ` Rafael J. Wysocki
2008-03-22 17:49             ` David Brownell
2008-03-22 18:34               ` Rafael J. Wysocki
2008-04-14  4:59                 ` David Brownell
2008-04-14  4:59                 ` David Brownell
2008-03-22 18:34               ` Rafael J. Wysocki
2008-03-22 17:49             ` David Brownell
2008-03-21 16:38           ` Rafael J. Wysocki
2008-03-21  7:53         ` David Brownell
2008-03-20 22:37   ` Rafael J. Wysocki
2008-03-20 21:15 ` [patch 2.6.25-rc6 4/7] USB uses pci_choose_state() David Brownell
2008-03-20 21:15 ` David Brownell
2008-03-20 21:20 ` [patch 2.6.25-rc6 5/7] ACPI sets up device.power.can_wakeup flags David Brownell
2008-03-20 21:20 ` David Brownell
2008-03-21  7:43   ` Zhao Yakui
2008-03-21  7:43   ` Zhao Yakui
2008-04-19  4:14   ` [RESEND patch 2.6.25] " David Brownell
2008-04-19  4:14   ` David Brownell
2008-04-22  2:48     ` Zhang Rui
2008-04-22  2:48     ` Zhang Rui
2008-03-20 21:22 ` [patch 2.6.25-rc6 6/7] ACPI uses device_may_wakeup() policy inputs David Brownell
2008-03-20 21:22 ` David Brownell
2008-04-19  4:18   ` [RESEND patch 2.6.25] " David Brownell
2008-04-22  2:42     ` Zhang Rui
2008-04-26 19:29       ` David Brownell
2008-04-26 19:29       ` David Brownell
2008-04-22  2:42     ` Zhang Rui
2008-04-22 13:30     ` Zhao Yakui
2008-04-26 19:37       ` David Brownell
2008-04-28 12:48         ` Zhao Yakui
2008-04-28 12:48         ` Zhao Yakui
2008-04-28  8:50           ` Zhang Rui
2008-04-28  8:50           ` Zhang Rui
2008-04-28 13:43             ` [linux-pm] " Alan Stern
2008-04-29 23:38               ` David Brownell
2008-04-30 13:58                 ` Alan Stern
2008-05-14 14:56                   ` Pavel Machek
2008-05-14 14:56                   ` [linux-pm] " Pavel Machek
2008-04-30 13:58                 ` Alan Stern
2008-04-29 23:38               ` David Brownell
2008-04-28 13:43             ` Alan Stern
2008-04-28 22:28             ` David Brownell
2008-04-28 22:28             ` David Brownell
2008-04-28 21:35           ` Henrique de Moraes Holschuh
2008-04-28 22:20             ` David Brownell
2008-04-28 22:54               ` Henrique de Moraes Holschuh
2008-04-28 22:54               ` Henrique de Moraes Holschuh
2008-04-29  0:20                 ` David Brownell
2008-04-29  0:20                 ` David Brownell
2008-04-29 20:32               ` David Brownell
2008-04-29 20:32               ` David Brownell
2008-04-28 22:20             ` David Brownell
2008-04-28 21:35           ` Henrique de Moraes Holschuh
2008-04-28 22:24           ` David Brownell
2008-04-28 22:24           ` David Brownell
2008-04-28 22:26           ` David Brownell
2008-04-28 22:26           ` David Brownell
2008-04-26 19:37       ` David Brownell
2008-04-22 13:30     ` Zhao Yakui
2008-03-20 21:25 ` [patch 2.6.25-rc6 7/7] PCI set up device.power.can_wakeup flags David Brownell
2008-03-20 21:25 ` David Brownell
2008-03-20 21:53   ` Alan Stern
2008-03-20 21:53   ` [linux-pm] " Alan Stern
2008-03-20 22:22     ` David Brownell
2008-03-20 22:22     ` David Brownell

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=1206081808.4109.23.camel@localhost.localdomain \
    --to=yakui.zhao@intel.com \
    --cc=david-b@pacbell.net \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=trenn@suse.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.