Subject: [PATCH v3 25/62] acpi/table: Introduce acpi_get_entry to get specified entry

From: [email-masked] (Shannon Zhao)
Date: Tue, 24 Nov 2015 11:08:23 +0800

On 2015/11/24 0:59, Jan Beulich wrote:
>>>> On 17.11.15 at 10:40, <[email-masked]> 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