Linux 2.6.32.21-rc1
Drop merged patches: drm-i915-add-reclaimable-to-page-allocations.patch drm-i915-fix-hibernate-memory-corruption.patch Fix up execshield and DRM upgrade patches to apply after 2.6.32.21
This commit is contained in:
parent
35bc236c21
commit
4db245b3ba
|
@ -1,48 +0,0 @@
|
|||
From: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Date: Sun, 18 Jul 2010 16:44:37 +0000 (-0700)
|
||||
Subject: drm/i915: add 'reclaimable' to i915 self-reclaimable page allocations
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=cd9f040df6ce46573760a507cb88192d05d27d86
|
||||
|
||||
drm/i915: add 'reclaimable' to i915 self-reclaimable page allocations
|
||||
|
||||
The hibernate issues that got fixed in commit 985b823b9192 ("drm/i915:
|
||||
fix hibernation since i915 self-reclaim fixes") turn out to have been
|
||||
incomplete. Vefa Bicakci tested lots of hibernate cycles, and without
|
||||
the __GFP_RECLAIMABLE flag the system eventually fails to resume.
|
||||
|
||||
With the flag added, Vefa can apparently hibernate forever (or until he
|
||||
gets bored running his automated scripts, whichever comes first).
|
||||
|
||||
The reclaimable flag was there originally, and was one of the flags that
|
||||
were dropped (unintentionally) by commit 4bdadb978569 ("drm/i915:
|
||||
Selectively enable self-reclaim") that introduced all these problems,
|
||||
but I didn't want to just blindly add back all the flags in commit
|
||||
985b823b9192, and it looked like __GFP_RECLAIM wasn't necessary. It
|
||||
clearly was.
|
||||
|
||||
I still suspect that there is some subtle reason we're missing that
|
||||
causes the problems, but __GFP_RECLAIMABLE is certainly not wrong to use
|
||||
in this context, and is what the code historically used. And we have no
|
||||
idea what the causes the corruption without it.
|
||||
|
||||
Reported-and-tested-by: M. Vefa Bicakci <bicave@superonline.com>
|
||||
Cc: Dave Airlie <airlied@gmail.com>
|
||||
Cc: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
|
||||
Cc: Hugh Dickins <hugh.dickins@tiscali.co.uk>
|
||||
Cc: stable@kernel.org
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
|
||||
index 0743858..8757ecf 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_gem.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_gem.c
|
||||
@@ -2241,6 +2241,7 @@ i915_gem_object_get_pages(struct drm_gem_object *obj,
|
||||
page = read_cache_page_gfp(mapping, i,
|
||||
GFP_HIGHUSER |
|
||||
__GFP_COLD |
|
||||
+ __GFP_RECLAIMABLE |
|
||||
gfpmask);
|
||||
if (IS_ERR(page))
|
||||
goto err_pages;
|
|
@ -1,41 +0,0 @@
|
|||
From: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Date: Fri, 2 Jul 2010 00:04:42 +0000 (+1000)
|
||||
Subject: drm/i915: fix hibernation since i915 self-reclaim fixes
|
||||
X-Git-Tag: v2.6.35-rc4~13
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=985b823b919273fe1327d56d2196b4f92e5d0fae
|
||||
|
||||
drm/i915: fix hibernation since i915 self-reclaim fixes
|
||||
|
||||
Since commit 4bdadb9785696439c6e2b3efe34aa76df1149c83 ("drm/i915:
|
||||
Selectively enable self-reclaim"), we've been passing GFP_MOVABLE to the
|
||||
i915 page allocator where we weren't before due to some over-eager
|
||||
removal of the page mapping gfp_flags games the code used to play.
|
||||
|
||||
This caused hibernate on Intel hardware to result in a lot of memory
|
||||
corruptions on resume. See for example
|
||||
|
||||
http://bugzilla.kernel.org/show_bug.cgi?id=13811
|
||||
|
||||
Reported-by: Evengi Golov (in bugzilla)
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
Tested-by: M. Vefa Bicakci <bicave@superonline.com>
|
||||
Cc: stable@kernel.org
|
||||
Cc: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
|
||||
Cc: Hugh Dickins <hugh.dickins@tiscali.co.uk>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
|
||||
index 9ded3da..0743858 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_gem.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_gem.c
|
||||
@@ -2239,7 +2239,7 @@ i915_gem_object_get_pages(struct drm_gem_object *obj,
|
||||
mapping = inode->i_mapping;
|
||||
for (i = 0; i < page_count; i++) {
|
||||
page = read_cache_page_gfp(mapping, i,
|
||||
- mapping_gfp_mask (mapping) |
|
||||
+ GFP_HIGHUSER |
|
||||
__GFP_COLD |
|
||||
gfpmask);
|
||||
if (IS_ERR(page))
|
|
@ -817,9 +817,9 @@ index a75ca63..766c468 100644
|
|||
atomic_inc(&dev->counts[_DRM_STAT_IOCTLS]);
|
||||
++file_priv->ioctl_count;
|
||||
@@ -471,7 +502,13 @@ int drm_ioctl(struct inode *inode, struct file *filp,
|
||||
goto err_i1;
|
||||
}
|
||||
}
|
||||
} else
|
||||
memset(kdata, 0, _IOC_SIZE(cmd));
|
||||
|
||||
- retcode = func(dev, kdata, file_priv);
|
||||
+ if (ioctl->flags & DRM_UNLOCKED)
|
||||
+ retcode = func(dev, kdata, file_priv);
|
||||
|
|
18
kernel.spec
18
kernel.spec
|
@ -47,7 +47,7 @@ Summary: The Linux kernel
|
|||
# reset this by hand to 1 (or to 0 and then use rpmdev-bumpspec).
|
||||
# scripts/rebase.sh should be made to do that for you, actually.
|
||||
#
|
||||
%global baserelease 164
|
||||
%global baserelease 165
|
||||
%global fedora_build %{baserelease}
|
||||
|
||||
# base_sublevel is the kernel version we're starting with and patching
|
||||
|
@ -59,9 +59,9 @@ Summary: The Linux kernel
|
|||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 20
|
||||
%define stable_update 21
|
||||
# Is it a -stable RC?
|
||||
%define stable_rc 0
|
||||
%define stable_rc 1
|
||||
# Set rpm version accordingly
|
||||
%if 0%{?stable_update}
|
||||
%define stablerev .%{stable_update}
|
||||
|
@ -722,8 +722,6 @@ Patch1813: drm-radeon-pm.patch
|
|||
Patch1818: drm-i915-resume-force-mode.patch
|
||||
Patch1819: drm-intel-big-hammer.patch
|
||||
Patch1820: drm-intel-no-tv-hotplug.patch
|
||||
Patch1821: drm-i915-fix-hibernate-memory-corruption.patch
|
||||
Patch1822: drm-i915-add-reclaimable-to-page-allocations.patch
|
||||
Patch1823: drm-intel-945gm-stability-fixes.patch
|
||||
# intel drm is all merged upstream
|
||||
Patch1824: drm-intel-next.patch
|
||||
|
@ -1461,9 +1459,6 @@ ApplyPatch drm-intel-acpi-populate-didl.patch
|
|||
ApplyPatch drm-intel-make-lvds-work.patch
|
||||
# gm45 stability fixes
|
||||
ApplyPatch drm-intel-945gm-stability-fixes.patch
|
||||
# hibernation memory corruption fixes
|
||||
ApplyPatch drm-i915-fix-hibernate-memory-corruption.patch
|
||||
ApplyPatch drm-i915-add-reclaimable-to-page-allocations.patch
|
||||
|
||||
ApplyPatch drm-nouveau-g80-ctxprog.patch
|
||||
ApplyPatch drm-nouveau-tvout-disable.patch
|
||||
|
@ -2202,6 +2197,13 @@ fi
|
|||
%kernel_variant_files -k vmlinux %{with_kdump} kdump
|
||||
|
||||
%changelog
|
||||
* Wed Aug 25 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.32.21-165.rc1
|
||||
- Linux 2.6.32.21-rc1
|
||||
- Drop merged patches:
|
||||
drm-i915-add-reclaimable-to-page-allocations.patch
|
||||
drm-i915-fix-hibernate-memory-corruption.patch
|
||||
- Fix up execshield and DRM upgrade patches to apply after 2.6.32.21
|
||||
|
||||
* Sat Aug 21 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.32.20-164
|
||||
- Linux 2.6.32.20
|
||||
- Drop merged patches:
|
||||
|
|
|
@ -737,15 +737,16 @@ index 73f5e4b..814b95f 100644
|
|||
static void unmap_region(struct mm_struct *mm,
|
||||
struct vm_area_struct *vma, struct vm_area_struct *prev,
|
||||
unsigned long start, unsigned long end);
|
||||
@@ -389,6 +402,8 @@ static inline void
|
||||
__vma_link_list(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
struct vm_area_struct *prev, struct rb_node *rb_parent)
|
||||
@@ -389,6 +402,9 @@ static inline void
|
||||
{
|
||||
struct vm_area_struct *next;
|
||||
|
||||
+ if (vma->vm_flags & VM_EXEC)
|
||||
+ arch_add_exec_range(mm, vma->vm_end);
|
||||
+
|
||||
vma->vm_prev = prev;
|
||||
if (prev) {
|
||||
vma->vm_next = prev->vm_next;
|
||||
prev->vm_next = vma;
|
||||
next = prev->vm_next;
|
||||
@@ -491,6 +506,8 @@ __vma_unlink(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
rb_erase(&vma->vm_rb, &mm->mm_rb);
|
||||
if (mm->mmap_cache == vma)
|
||||
|
|
Loading…
Reference in New Issue