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

Moore, Robert
2008-02-12T23:42:13Z

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@kernel.org]
>Sent: Wednesday, January 23, 2008 11:40 AM
>To: Andrew Patterson; Moore, Robert
>Cc: linux-pci@vger.kernel.org; linux-kernel@vger.kernel.org;
>gregkh@suse.de; matthew@wil.cx; Nguyen, Tom L;
linux-acpi@vger.kernel.org
>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@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);
>> + }
>> }
>> }
>>
>>