Re: [PATCH 3/4] ACPI: Check for any matching CID when walking namespace.

Len Brown
2008-01-23T19:40:25Z

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@hp.com>
>
> 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@hp.com>
> ---
>
> 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);
> + }
> }
> }
>
>