Re: [PATCH 0 of 4] x86: some more patches

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Andi Kleen <ak@...>
Cc: Jeremy Fitzhardinge <jeremy@...>, LKML <linux-kernel@...>, Glauber de Oliveira Costa <glommer@...>, Jan Beulich <jbeulich@...>
Date: Wednesday, January 16, 2008 - 3:25 am

* Andi Kleen <ak@suse.de> wrote:


please send a fuller bugreport - all these problems on your testbox 
might be interrelated. Jan's patch is undone in a later part of the 
series so it's a bisection artifact. I've fixed that up.

	Ingo

------------------->
Subject: x86: fix 64-bit ioremap()
From: From: Jan Beulich <jbeulich@novell.com>


ioremap() should set G agreed.


That should not really matter because ioremap_change_attr()->c_p_a is only called
when flags is != 0 and that means it is already different from PAGE_KERNEL.


There's one Jan pointed out: iounmap does not subtract the guard page size
so it ends up resetting one page too much. That is probably what causes your
problem. But again you should be passing in G in the first place.

Additionally I found it necessary to fix ioremap_64.c's use of
change_page_attr_addr():

[ mingo@elte.hu: fixed coding style errors ]

Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 arch/x86/mm/ioremap_64.c |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

Index: linux-x86.q/arch/x86/mm/ioremap_64.c
===================================================================
--- linux-x86.q.orig/arch/x86/mm/ioremap_64.c
+++ linux-x86.q/arch/x86/mm/ioremap_64.c
@@ -45,10 +45,12 @@ ioremap_change_attr(unsigned long phys_a
 		unsigned long vaddr = (unsigned long) __va(phys_addr);
 
 		/*
- 		 * Must use a address here and not struct page because the phys addr
-		 * can be a in hole between nodes and not have an memmap entry.
+		 * Must use an address here and not struct page because the
+		 * phys addr can be a in hole between nodes and not have an
+		 * memmap entry:
 		 */
-		err = change_page_attr_addr(vaddr,npages,__pgprot(__PAGE_KERNEL|flags));
+		err = change_page_attr_addr(vaddr, npages,
+					    MAKE_GLOBAL(__PAGE_KERNEL|flags));
 		if (!err)
 			global_flush_tlb();
 	}
@@ -181,7 +183,7 @@ void iounmap(volatile void __iomem *addr
 
 	/* Reset the direct mapping. Can block */
 	if (p->flags >> 20)
-		ioremap_change_attr(p->phys_addr, p->size, 0);
+		ioremap_change_attr(p->phys_addr, get_vm_area_size(p), 0);
 
 	/* Finally remove it */
 	o = remove_vm_area((void *)addr);
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 0 of 4] x86: some more patches, Jeremy Fitzhardinge, (Tue Jan 15, 6:17 pm)
Re: [PATCH 0 of 4] x86: some more patches, Ingo Molnar, (Tue Jan 15, 6:35 pm)
Re: [PATCH 0 of 4] x86: some more patches, Jeremy Fitzhardinge, (Tue Jan 15, 7:28 pm)
Re: [PATCH 0 of 4] x86: some more patches, Ingo Molnar, (Wed Jan 16, 10:22 am)
Re: [PATCH 0 of 4] x86: some more patches, Andi Kleen, (Wed Jan 16, 10:44 am)
Re: [PATCH 0 of 4] x86: some more patches, Ingo Molnar, (Wed Jan 16, 10:54 am)
Re: [PATCH 0 of 4] x86: some more patches, Andi Kleen, (Wed Jan 16, 11:26 am)
Re: [PATCH 0 of 4] x86: some more patches, Jan Beulich, (Wed Jan 16, 11:42 am)
Re: [PATCH 0 of 4] x86: some more patches, Ingo Molnar, (Wed Jan 16, 11:47 am)
Re: [PATCH 0 of 4] x86: some more patches, Andi Kleen, (Wed Jan 16, 1:40 pm)
Re: [PATCH 0 of 4] x86: some more patches, Ingo Molnar, (Wed Jan 16, 4:22 pm)
Re: [PATCH 0 of 4] x86: some more patches, Andi Kleen, (Wed Jan 16, 4:59 pm)
Re: [PATCH 0 of 4] x86: some more patches, Ingo Molnar, (Wed Jan 16, 5:06 pm)
Re: [PATCH 0 of 4] x86: some more patches, Andi Kleen, (Wed Jan 16, 5:35 pm)
Re: [PATCH 0 of 4] x86: some more patches, Jeremy Fitzhardinge, (Wed Jan 16, 1:05 pm)
Re: [PATCH 0 of 4] x86: some more patches, Andi Kleen, (Wed Jan 16, 1:12 pm)
Re: [PATCH 0 of 4] x86: some more patches, Ingo Molnar, (Wed Jan 16, 12:06 pm)
Re: [PATCH 0 of 4] x86: some more patches, Ingo Molnar, (Wed Jan 16, 11:18 am)
Re: [PATCH 0 of 4] x86: some more patches, Andi Kleen, (Tue Jan 15, 8:44 pm)
Re: [PATCH 0 of 4] x86: some more patches, Ingo Molnar, (Wed Jan 16, 3:25 am)
[PATCH 1 of 4] x86: refactor mmu ops in paravirt.h, Jeremy Fitzhardinge, (Tue Jan 15, 6:17 pm)
[PATCH 3 of 4] x86: clean up pte_modify, Jeremy Fitzhardinge, (Tue Jan 15, 6:17 pm)
Re: [PATCH 3 of 4] x86: clean up pte_modify, Andi Kleen, (Tue Jan 15, 8:43 pm)
[PATCH 2 of 4] x86: fix warning, Jeremy Fitzhardinge, (Tue Jan 15, 6:17 pm)
[PATCH 4 of 4] x86: mask NX from pte_pfn, Jeremy Fitzhardinge, (Tue Jan 15, 6:17 pm)
Re: [PATCH 4 of 4] x86: mask NX from pte_pfn, Hugh Dickins, (Fri Jan 18, 9:52 am)
Re: [PATCH 4 of 4] x86: mask NX from pte_pfn, Jeremy Fitzhardinge, (Fri Jan 18, 11:55 am)
Re: [PATCH 4 of 4] x86: mask NX from pte_pfn, Ingo Molnar, (Fri Jan 18, 10:01 am)