提交 4f31d53c 编写于 作者: R Rafael J. Wysocki

Merge branch 'acpi-mm'

* acpi-mm:
  ACPI: OSL: Prevent acpi_release_memory() from returning too early
  ACPI: ioremap: avoid redundant rounding to OS page size
...@@ -350,7 +350,7 @@ void __iomem __ref ...@@ -350,7 +350,7 @@ void __iomem __ref
pg_off = round_down(phys, PAGE_SIZE); pg_off = round_down(phys, PAGE_SIZE);
pg_sz = round_up(phys + size, PAGE_SIZE) - pg_off; pg_sz = round_up(phys + size, PAGE_SIZE) - pg_off;
virt = acpi_map(pg_off, pg_sz); virt = acpi_map(phys, size);
if (!virt) { if (!virt) {
mutex_unlock(&acpi_ioremap_lock); mutex_unlock(&acpi_ioremap_lock);
kfree(map); kfree(map);
...@@ -358,7 +358,7 @@ void __iomem __ref ...@@ -358,7 +358,7 @@ void __iomem __ref
} }
INIT_LIST_HEAD(&map->list); INIT_LIST_HEAD(&map->list);
map->virt = virt; map->virt = (void __iomem __force *)((unsigned long)virt & PAGE_MASK);
map->phys = pg_off; map->phys = pg_off;
map->size = pg_sz; map->size = pg_sz;
map->track.refcount = 1; map->track.refcount = 1;
...@@ -1575,11 +1575,26 @@ static acpi_status acpi_deactivate_mem_region(acpi_handle handle, u32 level, ...@@ -1575,11 +1575,26 @@ static acpi_status acpi_deactivate_mem_region(acpi_handle handle, u32 level,
acpi_status acpi_release_memory(acpi_handle handle, struct resource *res, acpi_status acpi_release_memory(acpi_handle handle, struct resource *res,
u32 level) u32 level)
{ {
acpi_status status;
if (!(res->flags & IORESOURCE_MEM)) if (!(res->flags & IORESOURCE_MEM))
return AE_TYPE; return AE_TYPE;
return acpi_walk_namespace(ACPI_TYPE_REGION, handle, level, status = acpi_walk_namespace(ACPI_TYPE_REGION, handle, level,
acpi_deactivate_mem_region, NULL, res, NULL); acpi_deactivate_mem_region, NULL,
res, NULL);
if (ACPI_FAILURE(status))
return status;
/*
* Wait for all of the mappings queued up for removal by
* acpi_deactivate_mem_region() to actually go away.
*/
synchronize_rcu();
rcu_barrier();
flush_scheduled_work();
return AE_OK;
} }
EXPORT_SYMBOL_GPL(acpi_release_memory); EXPORT_SYMBOL_GPL(acpi_release_memory);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册