rpms/kernel/F-10 linux-2.6-vm-x86-pat-fix-warnings.patch, NONE, 1.1 kernel.spec, 1.1293, 1.1294

Chuck Ebbert cebbert at fedoraproject.org
Thu Mar 19 05:28:58 UTC 2009


Author: cebbert

Update of /cvs/pkgs/rpms/kernel/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv12181

Modified Files:
	kernel.spec 
Added Files:
	linux-2.6-vm-x86-pat-fix-warnings.patch 
Log Message:
Add patches from the -tip tree to fix bogus PAT errors.

linux-2.6-vm-x86-pat-fix-warnings.patch:

--- NEW FILE linux-2.6-vm-x86-pat-fix-warnings.patch ---
Rollup of two vm patches:

==========================================

From: Pallipadi, Venkatesh <venkatesh.pallipadi at intel.com>
Date: Fri, 13 Mar 2009 00:45:27 +0000 (-0700)
Subject: VM, x86, PAT: Change is_linear_pfn_mapping to not use vm_pgoff
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftip%2Flinux-2.6-tip.git;a=commitdiff_plain;h=4bb9c5c02153dfc89a6c73a6f32091413805ad7d

VM, x86, PAT: Change is_linear_pfn_mapping to not use vm_pgoff

Impact: fix false positive PAT warnings - also fix VirtalBox hang

Use of vma->vm_pgoff to identify the pfnmaps that are fully
mapped at mmap time is broken. vm_pgoff is set by generic mmap
code even for cases where drivers are setting up the mappings
at the fault time.

The problem was originally reported here:

 http://marc.info/?l=linux-kernel&m=123383810628583&w=2

Change is_linear_pfn_mapping logic to overload VM_INSERTPAGE
flag along with VM_PFNMAP to mean full PFNMAP setup at mmap
time.

Problem also tracked at:

 http://bugzilla.kernel.org/show_bug.cgi?id=12800

Reported-by: Thomas Hellstrom <thellstrom at vmware.com>
Tested-by: Frans Pop <elendil at planet.nl>
Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi at intel.com>
Signed-off-by: Suresh Siddha <suresh.b.siddha>@intel.com>
Cc: Nick Piggin <npiggin at suse.de>
Cc: "ebiederm at xmission.com" <ebiederm at xmission.com>
Cc: <stable at kernel.org> # only for 2.6.29.1, not .28
LKML-Reference: <20090313004527.GA7176 at linux-os.sc.intel.com>
Signed-off-by: Ingo Molnar <mingo at elte.hu>

==========================================

From: Pallipadi, Venkatesh <venkatesh.pallipadi at intel.com>
Date: Fri, 13 Mar 2009 23:35:44 +0000 (-0700)
Subject: VM, x86, PAT: add a new vm flag to track full pfnmap at mmap
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftip%2Flinux-2.6-tip.git;a=commitdiff_plain;h=895791dac6946d535991edd11341046f8e85ea77

VM, x86, PAT: add a new vm flag to track full pfnmap at mmap

Impact: cleanup

Add a new vm flag VM_PFN_AT_MMAP to identify a PFNMAP that is
fully mapped with remap_pfn_range. Patch removes the overloading
of VM_INSERTPAGE from the earlier patch.

Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi at intel.com>
Signed-off-by: Suresh Siddha <suresh.b.siddha at intel.com>
Acked-by: Nick Piggin <npiggin at suse.de>
LKML-Reference: <20090313233543.GA19909 at linux-os.sc.intel.com>
Signed-off-by: Ingo Molnar <mingo at elte.hu>

==========================================

--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -641,10 +641,11 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot,
 	is_ram = pat_pagerange_is_ram(paddr, paddr + size);
 
 	/*
-	 * reserve_pfn_range() doesn't support RAM pages.
+	 * reserve_pfn_range() doesn't support RAM pages. Maintain the current
+	 * behavior with RAM pages by returning success.
 	 */
 	if (is_ram != 0)
-		return -EINVAL;
+		return 0;
 
 	ret = reserve_memtype(paddr, paddr + size, want_flags, &flags);
 	if (ret)
diff -u b/include/linux/mm.h b/include/linux/mm.h
--- b/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -104,6 +104,7 @@
 #define VM_CAN_NONLINEAR 0x08000000	/* Has ->fault & does nonlinear pages */
 #define VM_MIXEDMAP	0x10000000	/* Can contain "struct page" and pure PFN pages */
 #define VM_SAO		0x20000000	/* Strong Access Ordering (powerpc) */
+#define VM_PFN_AT_MMAP	0x40000000	/* PFNMAP vma that is fully mapped at mmap time */
 
 #ifndef VM_STACK_DEFAULT_FLAGS		/* arch can override this */
 #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS
@@ -145,7 +146,7 @@
  */
 static inline int is_linear_pfn_mapping(struct vm_area_struct *vma)
 {
-	return ((vma->vm_flags & VM_PFNMAP) && vma->vm_pgoff);
+	return (vma->vm_flags & VM_PFN_AT_MMAP);
 }
 
 static inline int is_pfn_mapping(struct vm_area_struct *vma)
diff -u b/mm/memory.c b/mm/memory.c
--- b/mm/memory.c
+++ b/mm/memory.c
@@ -1665,9 +1665,10 @@
 	 * behaviour that some programs depend on. We mark the "original"
 	 * un-COW'ed pages by matching them up with "vma->vm_pgoff".
 	 */
-	if (addr == vma->vm_start && end == vma->vm_end)
+	if (addr == vma->vm_start && end == vma->vm_end) {
 		vma->vm_pgoff = pfn;
-	else if (is_cow_mapping(vma->vm_flags))
+		vma->vm_flags |= VM_PFN_AT_MMAP;
+	} else if (is_cow_mapping(vma->vm_flags))
 		return -EINVAL;
 
 	vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP;
@@ -1679,6 +1680,7 @@
 		 * needed from higher level routine calling unmap_vmas
 		 */
 		vma->vm_flags &= ~(VM_IO | VM_RESERVED | VM_PFNMAP);
+		vma->vm_flags &= ~VM_PFN_AT_MMAP;
 		return -EINVAL;
 	}
 


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-10/kernel.spec,v
retrieving revision 1.1293
retrieving revision 1.1294
diff -u -r1.1293 -r1.1294
--- kernel.spec	19 Mar 2009 04:46:41 -0000	1.1293
+++ kernel.spec	19 Mar 2009 05:28:25 -0000	1.1294
@@ -590,6 +590,8 @@
 
 Patch41: linux-2.6-sysrq-c.patch
 
+Patch80: linux-2.6-vm-x86-pat-fix-warnings.patch
+
 Patch140: linux-2.6-ps3-ehci-iso.patch
 Patch141: linux-2.6-ps3-storage-alias.patch
 Patch142: linux-2.6-ps3-legacy-bootloader-hack.patch
@@ -1042,6 +1044,7 @@
 
 # Architecture patches
 # x86(-64)
+ApplyPatch linux-2.6-vm-x86-pat-fix-warnings.patch
 
 #
 # PowerPC
@@ -1764,6 +1767,9 @@
 %kernel_variant_files -k vmlinux %{with_kdump} kdump
 
 %changelog
+* Thu Mar 19 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.29-0.64.rc8.git4
+- Add patches from the -tip tree to fix bogus PAT errors.
+
 * Thu Mar 19 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.29-0.63.rc8.git4
 - 2.6.29-rc8-git4
 - Dropped patches, merged upstream:




More information about the fedora-extras-commits mailing list