提交 dc339743 编写于 作者: L Len Brown

Merge branch 'iomem' into release

...@@ -636,17 +636,21 @@ EXPORT_SYMBOL(acpi_os_write_port); ...@@ -636,17 +636,21 @@ EXPORT_SYMBOL(acpi_os_write_port);
acpi_status acpi_status
acpi_os_read_memory(acpi_physical_address phys_addr, u32 * value, u32 width) acpi_os_read_memory(acpi_physical_address phys_addr, u32 * value, u32 width)
{ {
u32 dummy;
void __iomem *virt_addr; void __iomem *virt_addr;
int size = width / 8, unmap = 0; unsigned int size = width / 8;
bool unmap = false;
u32 dummy;
rcu_read_lock(); rcu_read_lock();
virt_addr = acpi_map_vaddr_lookup(phys_addr, size); virt_addr = acpi_map_vaddr_lookup(phys_addr, size);
rcu_read_unlock();
if (!virt_addr) { if (!virt_addr) {
rcu_read_unlock();
virt_addr = acpi_os_ioremap(phys_addr, size); virt_addr = acpi_os_ioremap(phys_addr, size);
unmap = 1; if (!virt_addr)
return AE_BAD_ADDRESS;
unmap = true;
} }
if (!value) if (!value)
value = &dummy; value = &dummy;
...@@ -666,6 +670,8 @@ acpi_os_read_memory(acpi_physical_address phys_addr, u32 * value, u32 width) ...@@ -666,6 +670,8 @@ acpi_os_read_memory(acpi_physical_address phys_addr, u32 * value, u32 width)
if (unmap) if (unmap)
iounmap(virt_addr); iounmap(virt_addr);
else
rcu_read_unlock();
return AE_OK; return AE_OK;
} }
...@@ -674,14 +680,17 @@ acpi_status ...@@ -674,14 +680,17 @@ acpi_status
acpi_os_write_memory(acpi_physical_address phys_addr, u32 value, u32 width) acpi_os_write_memory(acpi_physical_address phys_addr, u32 value, u32 width)
{ {
void __iomem *virt_addr; void __iomem *virt_addr;
int size = width / 8, unmap = 0; unsigned int size = width / 8;
bool unmap = false;
rcu_read_lock(); rcu_read_lock();
virt_addr = acpi_map_vaddr_lookup(phys_addr, size); virt_addr = acpi_map_vaddr_lookup(phys_addr, size);
rcu_read_unlock();
if (!virt_addr) { if (!virt_addr) {
rcu_read_unlock();
virt_addr = acpi_os_ioremap(phys_addr, size); virt_addr = acpi_os_ioremap(phys_addr, size);
unmap = 1; if (!virt_addr)
return AE_BAD_ADDRESS;
unmap = true;
} }
switch (width) { switch (width) {
...@@ -700,6 +709,8 @@ acpi_os_write_memory(acpi_physical_address phys_addr, u32 value, u32 width) ...@@ -700,6 +709,8 @@ acpi_os_write_memory(acpi_physical_address phys_addr, u32 value, u32 width)
if (unmap) if (unmap)
iounmap(virt_addr); iounmap(virt_addr);
else
rcu_read_unlock();
return AE_OK; return AE_OK;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册