[PATCH v3 25/62] acpi/table: Introduce acpi_get_entry to get specified entry
Shannon Zhao
zhaoshenglong at huawei.com
Mon Nov 23 19:08:23 PST 2015
On 2015/11/24 0:59, Jan Beulich wrote:
>>>> On 17.11.15 at 10:40, <shannon.zhao at linaro.org> wrote:
>> --- a/xen/drivers/acpi/tables.c
>> +++ b/xen/drivers/acpi/tables.c
>> @@ -221,6 +221,51 @@ void __init acpi_table_print_madt_entry(struct acpi_subtable_header *header)
>> }
>> }
>>
>> +struct acpi_subtable_header * __init
>> +acpi_get_entry(char *id, unsigned long table_size,
>> + struct acpi_table_header *table_header, int entry_id,
>> + unsigned int entry_index)
>> +{
>> + struct acpi_subtable_header *entry;
>> + unsigned int count = 0;
>> + unsigned long table_end;
>> +
>> + if ( !table_size )
>
> Linux coding style please in this file.
>
Sure.
>> + return NULL;
>> +
>> + if ( !table_header )
>> + {
>> + printk("Table header not present\n");
>> + return NULL;
>> + }
>> +
>> + table_end = (unsigned long)table_header + table_header->length;
>
> So here you use ->length, ...
>
>> + /* Parse all entries looking for a match. */
>> + entry = (struct acpi_subtable_header *)
>> + ((unsigned long)table_header + table_size);
>
> ... but here table_size. Why?
>
Here it just skips the main table size at the beginning. Then it could
point to the start of sub-table.
For example, to MADT table, the table_size is sizeof(struct
acpi_table_madt).
Thanks,
--
Shannon
More information about the linux-arm-kernel
mailing list