|
@@ -292,24 +292,31 @@ int __init find_unisys_acpi_oem_table(unsigned long *oem_addr)
|
|
|
{
|
|
|
struct acpi_table_header *header = NULL;
|
|
|
int i = 0;
|
|
|
+ acpi_size tbl_size;
|
|
|
|
|
|
- while (ACPI_SUCCESS(acpi_get_table("OEM1", i++, &header))) {
|
|
|
+ while (ACPI_SUCCESS(acpi_get_table_with_size("OEM1", i++, &header, &tbl_size))) {
|
|
|
if (!memcmp((char *) &header->oem_id, "UNISYS", 6)) {
|
|
|
struct oem_table *t = (struct oem_table *)header;
|
|
|
|
|
|
oem_addrX = t->OEMTableAddr;
|
|
|
oem_size = t->OEMTableSize;
|
|
|
+ early_acpi_os_unmap_memory(header, tbl_size);
|
|
|
|
|
|
*oem_addr = (unsigned long)__acpi_map_table(oem_addrX,
|
|
|
oem_size);
|
|
|
return 0;
|
|
|
}
|
|
|
+ early_acpi_os_unmap_memory(header, tbl_size);
|
|
|
}
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
void __init unmap_unisys_acpi_oem_table(unsigned long oem_addr)
|
|
|
{
|
|
|
+ if (!oem_addr)
|
|
|
+ return;
|
|
|
+
|
|
|
+ __acpi_unmap_table((char *)oem_addr, oem_size);
|
|
|
}
|
|
|
#endif
|
|
|
|