From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Toshi Kani <toshi.kani@hp.com>
Cc: ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Bjorn Helgaas <bhelgaas@google.com>,
Mika Westerberg <mika.westerberg@linux.intel.com>,
Matthew Garrett <matthew.garrett@nebula.com>,
Yinghai Lu <yinghai@kernel.org>, Jiang Liu <liuj97@gmail.com>,
LKML <linux-kernel@vger.kernel.org>
Subject: [PATCH] ACPI / scan: Follow priorities of IDs when matching scan handlers
Date: Sun, 03 Feb 2013 01:52:56 +0100 [thread overview]
Message-ID: <2566718.DLPxb38Yi2@vostro.rjw.lan> (raw)
In-Reply-To: <25678789.biaFkG0HMW@vostro.rjw.lan>
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
The IDs of ACPI device nodes stored in their pnp.ids member arrays
are sorted by decreasing priority (i.e. the highest-priority ID is
the first entry). This means that when matching scan handlers to
device nodes, the namespace scanning code should walk the list of
scan handlers for each device node ID instead of walking the list
of device node IDs for each handler (the latter causes the first
handler matching any of the device node IDs to be chosen, although
there may be another handler matching an ID of a higher priority
which should be preferred). Make the code follow this observation.
This change has been suggested and justified by Toshi Kani.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
drivers/acpi/scan.c | 42 +++++++++++++++++++++++++++++-------------
1 file changed, 29 insertions(+), 13 deletions(-)
Index: test/drivers/acpi/scan.c
===================================================================
--- test.orig/drivers/acpi/scan.c
+++ test/drivers/acpi/scan.c
@@ -1556,26 +1556,42 @@ static acpi_status acpi_bus_check_add(ac
return AE_OK;
}
-static int acpi_scan_attach_handler(struct acpi_device *device)
+static int acpi_scan_do_attach_handler(struct acpi_device *device, char *id)
{
struct acpi_scan_handler *handler;
- int ret = 0;
list_for_each_entry(handler, &acpi_scan_handlers_list, list_node) {
- const struct acpi_device_id *id;
+ const struct acpi_device_id *devid;
- id = __acpi_match_device(device, handler->ids);
- if (!id)
- continue;
-
- ret = handler->attach(device, id);
- if (ret > 0) {
- device->handler = handler;
- break;
- } else if (ret < 0) {
- break;
+ for (devid = handler->ids; devid->id[0]; devid++) {
+ int ret;
+
+ if (strcmp((char *)devid->id, id))
+ continue;
+
+ ret = handler->attach(device, devid);
+ if (ret > 0) {
+ device->handler = handler;
+ return ret;
+ } else if (ret < 0) {
+ return ret;
+ }
}
}
+ return 0;
+}
+
+static int acpi_scan_attach_handler(struct acpi_device *device)
+{
+ struct acpi_hardware_id *hwid;
+ int ret = 0;
+
+ list_for_each_entry(hwid, &device->pnp.ids, list) {
+ ret = acpi_scan_do_attach_handler(device, hwid->id);
+ if (ret)
+ break;
+
+ }
return ret;
}
next prev parent reply other threads:[~2013-02-03 0:46 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-24 0:26 [RFC] ACPI " Rafael J. Wysocki
2013-01-25 16:52 ` Toshi Kani
2013-01-25 22:11 ` Rafael J. Wysocki
2013-01-25 23:07 ` Toshi Kani
2013-01-26 1:49 ` Rafael J. Wysocki
2013-01-26 14:03 ` Rafael J. Wysocki
2013-01-26 18:42 ` Jiang Liu
2013-01-26 21:46 ` Rafael J. Wysocki
2013-01-28 12:58 ` [PATCH 0/4] " Rafael J. Wysocki
2013-01-28 12:59 ` [PATCH 1/4] ACPI / scan: Introduce struct acpi_scan_handler Rafael J. Wysocki
2013-01-29 2:04 ` Yasuaki Ishimatsu
2013-01-29 2:29 ` Yasuaki Ishimatsu
2013-01-29 2:35 ` Toshi Kani
2013-01-29 11:28 ` Rafael J. Wysocki
2013-01-29 14:50 ` Toshi Kani
2013-01-29 21:32 ` Rafael J. Wysocki
2013-01-29 22:57 ` Toshi Kani
2013-01-29 23:19 ` Rafael J. Wysocki
2013-01-29 23:27 ` Toshi Kani
2013-01-30 13:18 ` Rafael J. Wysocki
2013-02-03 0:52 ` Rafael J. Wysocki [this message]
2013-02-03 4:54 ` [PATCH] ACPI / scan: Follow priorities of IDs when matching scan handlers Yinghai Lu
2013-02-03 13:05 ` Rafael J. Wysocki
2013-02-05 23:44 ` Toshi Kani
2013-01-28 13:00 ` [PATCH 2/4] ACPI / PCI: Make PCI root driver use struct acpi_scan_handler Rafael J. Wysocki
2013-01-28 13:00 ` [PATCH 3/4] ACPI / PCI: Make PCI IRQ link " Rafael J. Wysocki
2013-01-28 13:01 ` [PATCH 4/4] ACPI / platform: Use struct acpi_scan_handler for creating devices Rafael J. Wysocki
2013-01-29 2:20 ` Yasuaki Ishimatsu
2013-01-29 11:36 ` Rafael J. Wysocki
2013-01-29 12:30 ` [Update][PATCH " Rafael J. Wysocki
2013-01-29 23:51 ` Yasuaki Ishimatsu
2013-01-29 7:35 ` [PATCH " Mika Westerberg
2013-01-29 12:01 ` Rafael J. Wysocki
2013-01-29 8:05 ` Mika Westerberg
2013-01-29 12:02 ` Rafael J. Wysocki
2013-01-28 21:54 ` [PATCH 0/4] ACPI scan handlers Yinghai Lu
2013-01-29 0:38 ` Rafael J. Wysocki
2013-01-29 2:33 ` Toshi Kani
2013-01-30 1:58 ` Toshi Kani
2013-01-30 13:36 ` Rafael J. Wysocki
2013-02-03 23:45 ` [PATCH 0/2] ACPI scan handler for memory hotplug and container simplification Rafael J. Wysocki
2013-02-03 23:46 ` [PATCH 1/2] ACPI / scan: Make memory hotplug driver use struct acpi_scan_handler Rafael J. Wysocki
2013-02-03 23:47 ` [PATCH 2/2] ACPI / scan: Simplify container driver Rafael J. Wysocki
2013-02-06 22:32 ` Toshi Kani
2013-02-07 0:55 ` Rafael J. Wysocki
2013-02-07 0:51 ` Toshi Kani
2013-02-07 1:32 ` Rafael J. Wysocki
2013-02-07 14:32 ` Toshi Kani
2013-02-07 22:42 ` Rafael J. Wysocki
2013-02-08 1:05 ` Toshi Kani
2013-02-08 12:52 ` Rafael J. Wysocki
2013-02-08 16:24 ` Toshi Kani
2013-02-07 8:32 ` Yasuaki Ishimatsu
2013-02-07 11:43 ` Rafael J. Wysocki
2013-02-07 14:38 ` Toshi Kani
2013-02-08 0:24 ` [PATCH 0/2] ACPI / scan: Remove useless #ifndef and simplify " Rafael J. Wysocki
2013-02-08 0:25 ` [PATCH 1/2] ACPI / scan: Remove useless #ifndef from acpi_eject_store() Rafael J. Wysocki
2013-02-08 0:27 ` [PATCH 2/2] ACPI / scan: Make container driver use struct acpi_scan_handler Rafael J. Wysocki
2013-02-08 3:32 ` Yinghai Lu
2013-02-08 12:45 ` Rafael J. Wysocki
2013-02-08 3:19 ` [PATCH 0/2] ACPI / scan: Remove useless #ifndef and simplify container driver Yasuaki Ishimatsu
2013-02-08 12:46 ` Rafael J. Wysocki
2013-02-08 16:57 ` Toshi Kani
2013-02-08 19:59 ` Rafael J. Wysocki
2013-02-08 22:41 ` Rafael J. Wysocki
2013-02-08 23:18 ` [PATCH] ACPI: Drop the container.h header file Rafael J. Wysocki
2013-02-08 23:27 ` Toshi Kani
2013-02-09 14:26 ` [PATCH 0/2] ACPI / scan: Two fixes for device hot-removal Rafael J. Wysocki
2013-02-09 14:29 ` [PATCH 1/2] ACPI / scan: Make acpi_bus_hot_remove_device() acquire the scan lock Rafael J. Wysocki
2013-02-11 23:42 ` Toshi Kani
2013-02-09 14:31 ` [PATCH 2/2] ACPI / scan: Full transition to D3cold in acpi_device_unregister() Rafael J. Wysocki
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=2566718.DLPxb38Yi2@vostro.rjw.lan \
--to=rjw@sisk.pl \
--cc=bhelgaas@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=liuj97@gmail.com \
--cc=matthew.garrett@nebula.com \
--cc=mika.westerberg@linux.intel.com \
--cc=toshi.kani@hp.com \
--cc=yinghai@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®