upgpkg: 3.7.2-1
bump to latest version, #33332 CONFIG_DYNAMIC_DEBUG, #33200 CONFIG_ARPD, #33160 fix GPU hang
This commit is contained in:
		
							parent
							
								
									e2ba16c128
								
							
						
					
					
						commit
						ffd036db25
					
				
							
								
								
									
										20
									
								
								PKGBUILD
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								PKGBUILD
									
									
									
									
									
								
							@ -5,8 +5,8 @@
 | 
			
		||||
pkgbase=linux               # Build stock -ARCH kernel
 | 
			
		||||
#pkgbase=linux-custom       # Build kernel with a different name
 | 
			
		||||
_srcname=linux-3.7
 | 
			
		||||
pkgver=3.7.1
 | 
			
		||||
pkgrel=2
 | 
			
		||||
pkgver=3.7.2
 | 
			
		||||
pkgrel=1
 | 
			
		||||
arch=('i686' 'x86_64')
 | 
			
		||||
url="http://www.kernel.org/"
 | 
			
		||||
license=('GPL2')
 | 
			
		||||
@ -20,15 +20,17 @@ source=("http://www.kernel.org/pub/linux/kernel/v3.x/${_srcname}.tar.xz"
 | 
			
		||||
        'linux.preset'
 | 
			
		||||
        'change-default-console-loglevel.patch'
 | 
			
		||||
        'fat-3.6.x.patch'
 | 
			
		||||
        'fix-watchdog-3.7.patch')
 | 
			
		||||
        'fix-watchdog-3.7.patch'
 | 
			
		||||
        'drm-fix-track-free-areas-3.7.patch')
 | 
			
		||||
md5sums=('21223369d682bcf44bcdfe1521095983'
 | 
			
		||||
         '48f5f530b048e387e978e3e49de7742a'
 | 
			
		||||
         '2cf43e0448a8074eb2ff93035168250b'
 | 
			
		||||
         '58a9ba178fedb244a0a86b760fb4bd81'
 | 
			
		||||
         '132211742278e18b8f4808754d85e66c'
 | 
			
		||||
         'ce16969e83a649c3e7d71031b7f752c2'
 | 
			
		||||
         '610443591e7d3f619b8250833958eb7e'
 | 
			
		||||
         'eb14dcfd80c00852ef81ded6e826826a'
 | 
			
		||||
         '9d3c56a4b999c8bfbd4018089a62f662'
 | 
			
		||||
         '88d501404f172dac6fcb248978251560'
 | 
			
		||||
         '3485d6c7ae3af35d16e09d6d9a7ed32a')
 | 
			
		||||
         '3485d6c7ae3af35d16e09d6d9a7ed32a'
 | 
			
		||||
         'e365972f002482a7b25cd5360467d75f')
 | 
			
		||||
 | 
			
		||||
_kernelname=${pkgbase#linux}
 | 
			
		||||
 | 
			
		||||
@ -53,6 +55,9 @@ build() {
 | 
			
		||||
  # fix watchdog enable/disable regression
 | 
			
		||||
  # https://bugs.archlinux.org/task/33095
 | 
			
		||||
  patch -Np1 -i "${srcdir}/fix-watchdog-3.7.patch"
 | 
			
		||||
  # fix GPU hang
 | 
			
		||||
  # https://bugs.archlinux.org/task/33160
 | 
			
		||||
  patch -Np1 -i "${srcdir}/drm-fix-track-free-areas-3.7.patch"
 | 
			
		||||
 | 
			
		||||
  if [ "${CARCH}" = "x86_64" ]; then
 | 
			
		||||
    cat "${srcdir}/config.x86_64" > ./.config
 | 
			
		||||
@ -328,3 +333,4 @@ for _p in ${pkgname[@]}; do
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# vim:set ts=8 sts=2 sw=2 et:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										153
									
								
								drm-fix-track-free-areas-3.7.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										153
									
								
								drm-fix-track-free-areas-3.7.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,153 @@
 | 
			
		||||
From 9ff0ab9881bd47f7d8a95c07a2fa61f594a91d0a Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Chris Wilson <chris@chris-wilson.co.uk>
 | 
			
		||||
Date: Sun, 16 Dec 2012 16:15:00 +0000
 | 
			
		||||
Subject: [PATCH] drm: Only evict the blocks required to create the requested
 | 
			
		||||
 hole
 | 
			
		||||
 | 
			
		||||
Avoid clobbering adjacent blocks if they happen to expire earlier and
 | 
			
		||||
amalgamate together to form the requested hole.
 | 
			
		||||
 | 
			
		||||
In passing this fixes a regression from
 | 
			
		||||
commit ea7b1dd44867e9cd6bac67e7c9fc3f128b5b255c
 | 
			
		||||
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
 | 
			
		||||
Date:   Fri Feb 18 17:59:12 2011 +0100
 | 
			
		||||
 | 
			
		||||
    drm: mm: track free areas implicitly
 | 
			
		||||
 | 
			
		||||
which swaps the end address for size (with a potential overflow) and
 | 
			
		||||
effectively causes the eviction code to clobber almost all earlier
 | 
			
		||||
buffers above the evictee.
 | 
			
		||||
 | 
			
		||||
v2: Check the original hole not the adjusted as the coloring may confuse
 | 
			
		||||
us when later searching for the overlapping nodes. Also make sure that
 | 
			
		||||
we do apply the range restriction and color adjustment in the same
 | 
			
		||||
order for both scanning, searching and insertion.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
 | 
			
		||||
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
 | 
			
		||||
---
 | 
			
		||||
 drivers/gpu/drm/drm_mm.c |   45 +++++++++++++++++----------------------------
 | 
			
		||||
 include/drm/drm_mm.h     |    2 +-
 | 
			
		||||
 2 files changed, 18 insertions(+), 29 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c
 | 
			
		||||
index 0761a03..665553c 100644
 | 
			
		||||
--- a/drivers/gpu/drm/drm_mm.c
 | 
			
		||||
+++ b/drivers/gpu/drm/drm_mm.c
 | 
			
		||||
@@ -213,11 +213,13 @@ static void drm_mm_insert_helper_range(struct drm_mm_node *hole_node,
 | 
			
		||||
 
 | 
			
		||||
 	BUG_ON(!hole_node->hole_follows || node->allocated);
 | 
			
		||||
 
 | 
			
		||||
-	if (mm->color_adjust)
 | 
			
		||||
-		mm->color_adjust(hole_node, color, &adj_start, &adj_end);
 | 
			
		||||
-
 | 
			
		||||
 	if (adj_start < start)
 | 
			
		||||
 		adj_start = start;
 | 
			
		||||
+	if (adj_end > end)
 | 
			
		||||
+		adj_end = end;
 | 
			
		||||
+
 | 
			
		||||
+	if (mm->color_adjust)
 | 
			
		||||
+		mm->color_adjust(hole_node, color, &adj_start, &adj_end);
 | 
			
		||||
 
 | 
			
		||||
 	if (alignment) {
 | 
			
		||||
 		unsigned tmp = adj_start % alignment;
 | 
			
		||||
@@ -489,7 +491,7 @@ void drm_mm_init_scan(struct drm_mm *mm,
 | 
			
		||||
 	mm->scan_size = size;
 | 
			
		||||
 	mm->scanned_blocks = 0;
 | 
			
		||||
 	mm->scan_hit_start = 0;
 | 
			
		||||
-	mm->scan_hit_size = 0;
 | 
			
		||||
+	mm->scan_hit_end = 0;
 | 
			
		||||
 	mm->scan_check_range = 0;
 | 
			
		||||
 	mm->prev_scanned_node = NULL;
 | 
			
		||||
 }
 | 
			
		||||
@@ -516,7 +518,7 @@ void drm_mm_init_scan_with_range(struct drm_mm *mm,
 | 
			
		||||
 	mm->scan_size = size;
 | 
			
		||||
 	mm->scanned_blocks = 0;
 | 
			
		||||
 	mm->scan_hit_start = 0;
 | 
			
		||||
-	mm->scan_hit_size = 0;
 | 
			
		||||
+	mm->scan_hit_end = 0;
 | 
			
		||||
 	mm->scan_start = start;
 | 
			
		||||
 	mm->scan_end = end;
 | 
			
		||||
 	mm->scan_check_range = 1;
 | 
			
		||||
@@ -535,8 +537,7 @@ int drm_mm_scan_add_block(struct drm_mm_node *node)
 | 
			
		||||
 	struct drm_mm *mm = node->mm;
 | 
			
		||||
 	struct drm_mm_node *prev_node;
 | 
			
		||||
 	unsigned long hole_start, hole_end;
 | 
			
		||||
-	unsigned long adj_start;
 | 
			
		||||
-	unsigned long adj_end;
 | 
			
		||||
+	unsigned long adj_start, adj_end;
 | 
			
		||||
 
 | 
			
		||||
 	mm->scanned_blocks++;
 | 
			
		||||
 
 | 
			
		||||
@@ -553,14 +554,8 @@ int drm_mm_scan_add_block(struct drm_mm_node *node)
 | 
			
		||||
 	node->node_list.next = &mm->prev_scanned_node->node_list;
 | 
			
		||||
 	mm->prev_scanned_node = node;
 | 
			
		||||
 
 | 
			
		||||
-	hole_start = drm_mm_hole_node_start(prev_node);
 | 
			
		||||
-	hole_end = drm_mm_hole_node_end(prev_node);
 | 
			
		||||
-
 | 
			
		||||
-	adj_start = hole_start;
 | 
			
		||||
-	adj_end = hole_end;
 | 
			
		||||
-
 | 
			
		||||
-	if (mm->color_adjust)
 | 
			
		||||
-		mm->color_adjust(prev_node, mm->scan_color, &adj_start, &adj_end);
 | 
			
		||||
+	adj_start = hole_start = drm_mm_hole_node_start(prev_node);
 | 
			
		||||
+	adj_end = hole_end = drm_mm_hole_node_end(prev_node);
 | 
			
		||||
 
 | 
			
		||||
 	if (mm->scan_check_range) {
 | 
			
		||||
 		if (adj_start < mm->scan_start)
 | 
			
		||||
@@ -569,11 +564,14 @@ int drm_mm_scan_add_block(struct drm_mm_node *node)
 | 
			
		||||
 			adj_end = mm->scan_end;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
+	if (mm->color_adjust)
 | 
			
		||||
+		mm->color_adjust(prev_node, mm->scan_color,
 | 
			
		||||
+				 &adj_start, &adj_end);
 | 
			
		||||
+
 | 
			
		||||
 	if (check_free_hole(adj_start, adj_end,
 | 
			
		||||
 			    mm->scan_size, mm->scan_alignment)) {
 | 
			
		||||
 		mm->scan_hit_start = hole_start;
 | 
			
		||||
-		mm->scan_hit_size = hole_end;
 | 
			
		||||
-
 | 
			
		||||
+		mm->scan_hit_end = hole_end;
 | 
			
		||||
 		return 1;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@@ -609,19 +607,10 @@ int drm_mm_scan_remove_block(struct drm_mm_node *node)
 | 
			
		||||
 			       node_list);
 | 
			
		||||
 
 | 
			
		||||
 	prev_node->hole_follows = node->scanned_preceeds_hole;
 | 
			
		||||
-	INIT_LIST_HEAD(&node->node_list);
 | 
			
		||||
 	list_add(&node->node_list, &prev_node->node_list);
 | 
			
		||||
 
 | 
			
		||||
-	/* Only need to check for containement because start&size for the
 | 
			
		||||
-	 * complete resulting free block (not just the desired part) is
 | 
			
		||||
-	 * stored. */
 | 
			
		||||
-	if (node->start >= mm->scan_hit_start &&
 | 
			
		||||
-	    node->start + node->size
 | 
			
		||||
-	    		<= mm->scan_hit_start + mm->scan_hit_size) {
 | 
			
		||||
-		return 1;
 | 
			
		||||
-	}
 | 
			
		||||
-
 | 
			
		||||
-	return 0;
 | 
			
		||||
+	 return (drm_mm_hole_node_end(node) > mm->scan_hit_start &&
 | 
			
		||||
+		 node->start < mm->scan_hit_end);
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL(drm_mm_scan_remove_block);
 | 
			
		||||
 
 | 
			
		||||
diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h
 | 
			
		||||
index 06d7f79..a1b66b7 100644
 | 
			
		||||
--- a/include/drm/drm_mm.h
 | 
			
		||||
+++ b/include/drm/drm_mm.h
 | 
			
		||||
@@ -70,7 +70,7 @@ struct drm_mm {
 | 
			
		||||
 	unsigned long scan_color;
 | 
			
		||||
 	unsigned long scan_size;
 | 
			
		||||
 	unsigned long scan_hit_start;
 | 
			
		||||
-	unsigned scan_hit_size;
 | 
			
		||||
+	unsigned long scan_hit_end;
 | 
			
		||||
 	unsigned scanned_blocks;
 | 
			
		||||
 	unsigned long scan_start;
 | 
			
		||||
 	unsigned long scan_end;
 | 
			
		||||
-- 
 | 
			
		||||
1.7.10.4
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@
 | 
			
		||||
# arg 2:  the old package version
 | 
			
		||||
 | 
			
		||||
KERNEL_NAME=
 | 
			
		||||
KERNEL_VERSION=3.7.1-2-ARCH
 | 
			
		||||
KERNEL_VERSION=3.7.2-1-ARCH
 | 
			
		||||
 | 
			
		||||
# set a sane PATH to ensure that critical utils like depmod will be found
 | 
			
		||||
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user