}
void __iomem *__init_refok
--acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
++acpi_os_map_iomem(acpi_physical_address phys, acpi_size size)
{
struct acpi_ioremap *map;
void __iomem *virt;
list_add_tail_rcu(&map->list, &acpi_ioremaps);
-- out:
++out:
mutex_unlock(&acpi_ioremap_lock);
return map->virt + (phys - map->phys);
}
++EXPORT_SYMBOL_GPL(acpi_os_map_iomem);
++
++void *__init_refok
++acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
++{
++ return (void *)acpi_os_map_iomem(phys, size);
++}
EXPORT_SYMBOL_GPL(acpi_os_map_memory);
static void acpi_os_drop_map_ref(struct acpi_ioremap *map)
}
}
--void __ref acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
++void __ref acpi_os_unmap_iomem(void __iomem *virt, acpi_size size)
{
struct acpi_ioremap *map;
acpi_os_map_cleanup(map);
}
++EXPORT_SYMBOL_GPL(acpi_os_unmap_iomem);
++
++void __ref acpi_os_unmap_memory(void *virt, acpi_size size)
++{
++ return acpi_os_unmap_iomem((void __iomem *)virt, size);
++}
EXPORT_SYMBOL_GPL(acpi_os_unmap_memory);
void __init early_acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
if (!addr || !gas->bit_width)
return -EINVAL;
-- virt = acpi_os_map_memory(addr, gas->bit_width / 8);
++ virt = acpi_os_map_iomem(addr, gas->bit_width / 8);
if (!virt)
return -EIO;
}
#endif
--static int __init acpi_no_auto_ssdt_setup(char *s)
++static int __init acpi_no_static_ssdt_setup(char *s)
{
-- printk(KERN_NOTICE PREFIX "SSDT auto-load disabled\n");
-
- acpi_gbl_disable_ssdt_table_load = TRUE;
++ acpi_gbl_disable_ssdt_table_install = TRUE;
++ pr_info("ACPI: static SSDT installation disabled\n");
- acpi_gbl_disable_ssdt_table_load = TRUE;
-
-- return 1;
++ return 0;
}
--__setup("acpi_no_auto_ssdt", acpi_no_auto_ssdt_setup);
++early_param("acpi_no_static_ssdt", acpi_no_static_ssdt_setup);
static int __init acpi_disable_return_repair(char *s)
{
acpi_os_map_generic_address(&acpi_gbl_FADT.xpm1b_event_block);
acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe0_block);
acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe1_block);
+ + if (acpi_gbl_FADT.flags & ACPI_FADT_RESET_REGISTER) {
+ + /*
+ + * Use acpi_os_map_generic_address to pre-map the reset
+ + * register if it's in system memory.
+ + */
+ + int rv;
+ +
+ + rv = acpi_os_map_generic_address(&acpi_gbl_FADT.reset_register);
+ + pr_debug(PREFIX "%s: map reset_reg status %d\n", __func__, rv);
+ + }
return AE_OK;
}
acpi_os_unmap_generic_address(&acpi_gbl_FADT.xgpe0_block);
acpi_os_unmap_generic_address(&acpi_gbl_FADT.xpm1b_event_block);
acpi_os_unmap_generic_address(&acpi_gbl_FADT.xpm1a_event_block);
+ + if (acpi_gbl_FADT.flags & ACPI_FADT_RESET_REGISTER)
+ + acpi_os_unmap_generic_address(&acpi_gbl_FADT.reset_register);
destroy_workqueue(kacpid_wq);
destroy_workqueue(kacpi_notify_wq);