Pull fluff into release branch
Conflicts: arch/x86_64/pci/mmconfig.c drivers/acpi/bay.c Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
@ -169,40 +169,40 @@ void acpi_table_print_madt_entry(struct acpi_subtable_header * header)
|
||||
|
||||
|
||||
int __init
|
||||
acpi_table_parse_madt_family(char *id,
|
||||
unsigned long madt_size,
|
||||
acpi_table_parse_entries(char *id,
|
||||
unsigned long table_size,
|
||||
int entry_id,
|
||||
acpi_madt_entry_handler handler,
|
||||
acpi_table_entry_handler handler,
|
||||
unsigned int max_entries)
|
||||
{
|
||||
struct acpi_table_header *madt = NULL;
|
||||
struct acpi_table_header *table_header = NULL;
|
||||
struct acpi_subtable_header *entry;
|
||||
unsigned int count = 0;
|
||||
unsigned long madt_end;
|
||||
unsigned long table_end;
|
||||
|
||||
if (!handler)
|
||||
return -EINVAL;
|
||||
|
||||
/* Locate the MADT (if exists). There should only be one. */
|
||||
acpi_get_table(id, 0, &madt);
|
||||
/* Locate the table (if exists). There should only be one. */
|
||||
acpi_get_table(id, 0, &table_header);
|
||||
|
||||
if (!madt) {
|
||||
if (!table_header) {
|
||||
printk(KERN_WARNING PREFIX "%4.4s not present\n", id);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
madt_end = (unsigned long)madt + madt->length;
|
||||
table_end = (unsigned long)table_header + table_header->length;
|
||||
|
||||
/* Parse all entries looking for a match. */
|
||||
|
||||
entry = (struct acpi_subtable_header *)
|
||||
((unsigned long)madt + madt_size);
|
||||
((unsigned long)table_header + table_size);
|
||||
|
||||
while (((unsigned long)entry) + sizeof(struct acpi_subtable_header) <
|
||||
madt_end) {
|
||||
table_end) {
|
||||
if (entry->type == entry_id
|
||||
&& (!max_entries || count++ < max_entries))
|
||||
if (handler(entry, madt_end))
|
||||
if (handler(entry, table_end))
|
||||
return -EINVAL;
|
||||
|
||||
entry = (struct acpi_subtable_header *)
|
||||
@ -218,13 +218,22 @@ acpi_table_parse_madt_family(char *id,
|
||||
|
||||
int __init
|
||||
acpi_table_parse_madt(enum acpi_madt_type id,
|
||||
acpi_madt_entry_handler handler, unsigned int max_entries)
|
||||
acpi_table_entry_handler handler, unsigned int max_entries)
|
||||
{
|
||||
return acpi_table_parse_madt_family(ACPI_SIG_MADT,
|
||||
return acpi_table_parse_entries(ACPI_SIG_MADT,
|
||||
sizeof(struct acpi_table_madt), id,
|
||||
handler, max_entries);
|
||||
}
|
||||
|
||||
/**
|
||||
* acpi_table_parse - find table with @id, run @handler on it
|
||||
*
|
||||
* @id: table id to find
|
||||
* @handler: handler to run
|
||||
*
|
||||
* Scan the ACPI System Descriptor Table (STD) for a table matching @id,
|
||||
* run @handler on it. Return 0 if table found, return on if not.
|
||||
*/
|
||||
int __init acpi_table_parse(char *id, acpi_table_handler handler)
|
||||
{
|
||||
struct acpi_table_header *table = NULL;
|
||||
@ -234,9 +243,9 @@ int __init acpi_table_parse(char *id, acpi_table_handler handler)
|
||||
acpi_get_table(id, 0, &table);
|
||||
if (table) {
|
||||
handler(table);
|
||||
return 1;
|
||||
} else
|
||||
return 0;
|
||||
} else
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user