x86, CPA: Change idmap attribute before ioremap attribute setup

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Friday, April 17, 2009 - 10:59 am

Gitweb:     http://git.kernel.org/linus/43a432b1559798d33970261f710030f787770231
Commit:     43a432b1559798d33970261f710030f787770231
Parent:     a0d22f485af1553060b4094ee0154537a8f6a8a6
Author:     Suresh Siddha <suresh.b.siddha@intel.com>
AuthorDate: Thu Apr 9 14:26:47 2009 -0700
Committer:  Ingo Molnar <mingo@elte.hu>
CommitDate: Fri Apr 10 13:55:46 2009 +0200

    x86, CPA: Change idmap attribute before ioremap attribute setup
    
    Change the identity mapping with the requested attribute first, before
    we setup the virtual memory mapping with the new requested attribute.
    
    This makes sure that there is no window when identity map'ed attribute
    may disagree with ioremap range on the attribute type.
    
    This also avoids doing cpa on the ioremap'ed address twice (first in
    ioremap_page_range and then in ioremap_change_attr using vaddr), and
    should improve ioremap performance a bit.
    
    Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
    Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
    LKML-Reference: <20090409212708.373330000@intel.com>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 arch/x86/mm/ioremap.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index 0dfa09d..329387e 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -280,15 +280,16 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr,
 		return NULL;
 	area->phys_addr = phys_addr;
 	vaddr = (unsigned long) area->addr;
-	if (ioremap_page_range(vaddr, vaddr + size, phys_addr, prot)) {
+
+	if (kernel_map_sync_memtype(phys_addr, size, prot_val)) {
 		free_memtype(phys_addr, phys_addr + size);
 		free_vm_area(area);
 		return NULL;
 	}
 
-	if (ioremap_change_attr(vaddr, size, prot_val) < 0) {
+	if (ioremap_page_range(vaddr, vaddr + size, phys_addr, prot)) {
 		free_memtype(phys_addr, phys_addr + size);
-		vunmap(area->addr);
+		free_vm_area(area);
 		return NULL;
 	}
 
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
x86, CPA: Change idmap attribute before ioremap attribute ..., Linux Kernel Mailing ..., (Fri Apr 17, 10:59 am)