Ok, I've rolled this in: /* Walk the CID list */ found = FALSE; for (i = 0; i < cid->count; i++) { if (ACPI_STRNCMP (cid->id[i].value, info->hid, sizeof (struct acpi_compatible_id)) == 0) { /* Found a matching CID */ found = TRUE; break; } } ACPI_FREE (cid); if (!found) { return (AE_OK); } } } /* We have a valid device, invoke the user function */ status = info->user_function (obj_handle, nesting_level, info->context, return_value); return (status); } Thanks, Bob >-----Original Message----- >From: Len Brown [mailto:lenb@xxxxxxxxxx] >Sent: Wednesday, January 23, 2008 11:40 AM >To: Andrew Patterson; Moore, Robert >Cc: linux-pci@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; >gregkh@xxxxxxx; matthew@xxxxxx; Nguyen, Tom L; linux-acpi@xxxxxxxxxxxxxxx >Subject: Re: [PATCH 3/4] ACPI: Check for any matching CID when walking >namespace. > >Right Greg, this is not only an ACPI patch, >but a patch that touches the ACPICA core. >Lets get Bob to see if it applies to the latest upstream ACPICA code. > >Andrew, >Do you give Intel permission to accept this patch under >both licenses on the top of the file, such that we can >re-distribute it in ACPICA to all the OSs that use ACPICA? > >(hey, and check out the spiffy new acpica home page: http://acpica.org/ ) > >thanks, >-Len > >On Tuesday 22 January 2008 19:18, Andrew Patterson wrote: >> From: Andrew Patterson <andrew.patterson@xxxxxx> >> >> The callback function acpi_ns_get_device_callback called from >> acpi_get_devices() will check CID's if the HID does not match. This code >> has a bug where it requires that all CIDs match the HID. Changed the code >> so that any CID match will do. >> >> Signed-off-by: Andrew Patterson <andrew.patterson@xxxxxx> >> --- >> >> drivers/acpi/namespace/nsxfeval.c | 11 ++++++++--- >> 1 files changed, 8 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/acpi/namespace/nsxfeval.c >b/drivers/acpi/namespace/nsxfeval.c >> index f39fbc6..e562b24 100644 >> --- a/drivers/acpi/namespace/nsxfeval.c >> +++ b/drivers/acpi/namespace/nsxfeval.c >> @@ -443,6 +443,7 @@ acpi_ns_get_device_callback(acpi_handle obj_handle, >> struct acpica_device_id hid; >> struct acpi_compatible_id_list *cid; >> acpi_native_uint i; >> + int found; >> >> status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE); >> if (ACPI_FAILURE(status)) { >> @@ -496,16 +497,20 @@ acpi_ns_get_device_callback(acpi_handle obj_handle, >> >> /* Walk the CID list */ >> >> + found = 0; >> for (i = 0; i < cid->count; i++) { >> if (ACPI_STRNCMP(cid->id[i].value, info->hid, >> sizeof(struct >> - acpi_compatible_id)) != >> + acpi_compatible_id)) == >> 0) { >> - ACPI_FREE(cid); >> - return (AE_OK); >> + found = 1; >> + break; >> } >> } >> ACPI_FREE(cid); >> + if (!found) { >> + return (AE_OK); >> + } >> } >> } >> >> - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html