From b26e34214c3d3aea9792c950d5e7fdb5bc5412b1 Mon Sep 17 00:00:00 2001
From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Sun, 2 Apr 2017 10:29:55 +0200
Subject: kernel: update kernel 4.9 to 4.9.20

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---
 ...-a-mode-for-using-the-closed-firmware-for.patch |  2 +-
 ...-termination-of-the-initial-scan-for-bran.patch | 68 -------------------
 ...-support-for-rendering-with-ETC1-textures.patch |  4 +-
 ...-runtime-autosuspend-to-avoid-thrashing-V.patch | 78 ----------------------
 4 files changed, 3 insertions(+), 149 deletions(-)
 delete mode 100644 target/linux/brcm2708/patches-4.9/950-0162-drm-vc4-Fix-termination-of-the-initial-scan-for-bran.patch
 delete mode 100644 target/linux/brcm2708/patches-4.9/950-0164-drm-vc4-Use-runtime-autosuspend-to-avoid-thrashing-V.patch

(limited to 'target/linux/brcm2708')

diff --git a/target/linux/brcm2708/patches-4.9/950-0105-drm-vc4-Add-a-mode-for-using-the-closed-firmware-for.patch b/target/linux/brcm2708/patches-4.9/950-0105-drm-vc4-Add-a-mode-for-using-the-closed-firmware-for.patch
index 789f0013a5..f95d5aab16 100644
--- a/target/linux/brcm2708/patches-4.9/950-0105-drm-vc4-Add-a-mode-for-using-the-closed-firmware-for.patch
+++ b/target/linux/brcm2708/patches-4.9/950-0105-drm-vc4-Add-a-mode-for-using-the-closed-firmware-for.patch
@@ -62,7 +62,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
  
 --- a/drivers/gpu/drm/vc4/vc4_drv.c
 +++ b/drivers/gpu/drm/vc4/vc4_drv.c
-@@ -292,6 +292,7 @@ static struct platform_driver *const com
+@@ -295,6 +295,7 @@ static struct platform_driver *const com
  	&vc4_dpi_driver,
  	&vc4_hvs_driver,
  	&vc4_crtc_driver,
diff --git a/target/linux/brcm2708/patches-4.9/950-0162-drm-vc4-Fix-termination-of-the-initial-scan-for-bran.patch b/target/linux/brcm2708/patches-4.9/950-0162-drm-vc4-Fix-termination-of-the-initial-scan-for-bran.patch
deleted file mode 100644
index 3326dca659..0000000000
--- a/target/linux/brcm2708/patches-4.9/950-0162-drm-vc4-Fix-termination-of-the-initial-scan-for-bran.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 57b0774967d7ea8d4173f82387100a84e4ba05d8 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Thu, 20 Oct 2016 16:48:12 -0700
-Subject: [PATCH] drm/vc4: Fix termination of the initial scan for branch
- targets.
-
-The loop is scanning until the original max_ip (size of the BO), but
-we want to not examine any code after the PROG_END's delay slots.
-There was a block trying to do that, except that we had some early
-continue statements if the signal wasn't a PROG_END or a BRANCH.
-
-The failure mode would be that a valid shader is rejected because some
-undefined memory after the PROG_END slots is parsed as a branch and
-the rest of its setup is illegal.  I haven't seen this in the wild,
-but valgrind was complaining when about this up in the userland
-simulator mode.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
-(cherry picked from commit 457e67a728696c4f8e6423c64e93def50530db9a)
----
- drivers/gpu/drm/vc4/vc4_validate_shaders.c | 19 ++++++++-----------
- 1 file changed, 8 insertions(+), 11 deletions(-)
-
---- a/drivers/gpu/drm/vc4/vc4_validate_shaders.c
-+++ b/drivers/gpu/drm/vc4/vc4_validate_shaders.c
-@@ -608,9 +608,7 @@ static bool
- vc4_validate_branches(struct vc4_shader_validation_state *validation_state)
- {
- 	uint32_t max_branch_target = 0;
--	bool found_shader_end = false;
- 	int ip;
--	int shader_end_ip = 0;
- 	int last_branch = -2;
- 
- 	for (ip = 0; ip < validation_state->max_ip; ip++) {
-@@ -621,8 +619,13 @@ vc4_validate_branches(struct vc4_shader_
- 		uint32_t branch_target_ip;
- 
- 		if (sig == QPU_SIG_PROG_END) {
--			shader_end_ip = ip;
--			found_shader_end = true;
-+			/* There are two delay slots after program end is
-+			 * signaled that are still executed, then we're
-+			 * finished.  validation_state->max_ip is the
-+			 * instruction after the last valid instruction in the
-+			 * program.
-+			 */
-+			validation_state->max_ip = ip + 3;
- 			continue;
- 		}
- 
-@@ -676,15 +679,9 @@ vc4_validate_branches(struct vc4_shader_
- 		}
- 		set_bit(after_delay_ip, validation_state->branch_targets);
- 		max_branch_target = max(max_branch_target, after_delay_ip);
--
--		/* There are two delay slots after program end is signaled
--		 * that are still executed, then we're finished.
--		 */
--		if (found_shader_end && ip == shader_end_ip + 2)
--			break;
- 	}
- 
--	if (max_branch_target > shader_end_ip) {
-+	if (max_branch_target > validation_state->max_ip - 3) {
- 		DRM_ERROR("Branch landed after QPU_SIG_PROG_END");
- 		return false;
- 	}
diff --git a/target/linux/brcm2708/patches-4.9/950-0163-drm-vc4-Add-support-for-rendering-with-ETC1-textures.patch b/target/linux/brcm2708/patches-4.9/950-0163-drm-vc4-Add-support-for-rendering-with-ETC1-textures.patch
index 2b81578768..bb472b34b2 100644
--- a/target/linux/brcm2708/patches-4.9/950-0163-drm-vc4-Add-support-for-rendering-with-ETC1-textures.patch
+++ b/target/linux/brcm2708/patches-4.9/950-0163-drm-vc4-Add-support-for-rendering-with-ETC1-textures.patch
@@ -19,8 +19,8 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
 
 --- a/drivers/gpu/drm/vc4/vc4_drv.c
 +++ b/drivers/gpu/drm/vc4/vc4_drv.c
-@@ -78,6 +78,7 @@ static int vc4_get_param_ioctl(struct dr
- 		pm_runtime_put(&vc4->v3d->pdev->dev);
+@@ -81,6 +81,7 @@ static int vc4_get_param_ioctl(struct dr
+ 		pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev);
  		break;
  	case DRM_VC4_PARAM_SUPPORTS_BRANCHES:
 +	case DRM_VC4_PARAM_SUPPORTS_ETC1:
diff --git a/target/linux/brcm2708/patches-4.9/950-0164-drm-vc4-Use-runtime-autosuspend-to-avoid-thrashing-V.patch b/target/linux/brcm2708/patches-4.9/950-0164-drm-vc4-Use-runtime-autosuspend-to-avoid-thrashing-V.patch
deleted file mode 100644
index f6d738d941..0000000000
--- a/target/linux/brcm2708/patches-4.9/950-0164-drm-vc4-Use-runtime-autosuspend-to-avoid-thrashing-V.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 936dc8b00ccd5072c5d610b97199402275bfdf26 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Fri, 4 Nov 2016 15:58:38 -0700
-Subject: [PATCH] drm/vc4: Use runtime autosuspend to avoid thrashing V3D power
- state.
-
-The pm_runtime_put() we were using immediately released power on the
-device, which meant that we were generally turning the device off and
-on once per frame.  In many profiles I've looked at, that added up to
-about 1% of CPU time, but this could get worse in the case of frequent
-rendering and readback (as may happen in X rendering).  By keeping the
-device on until we've been idle for a couple of frames, we drop the
-overhead of runtime PM down to sub-.1%.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
-(cherry picked from commit 3a62234680d86efa0239665ed8a0e908f1aef147)
----
- drivers/gpu/drm/vc4/vc4_drv.c | 9 ++++++---
- drivers/gpu/drm/vc4/vc4_gem.c | 6 ++++--
- drivers/gpu/drm/vc4/vc4_v3d.c | 2 ++
- 3 files changed, 12 insertions(+), 5 deletions(-)
-
---- a/drivers/gpu/drm/vc4/vc4_drv.c
-+++ b/drivers/gpu/drm/vc4/vc4_drv.c
-@@ -61,21 +61,24 @@ static int vc4_get_param_ioctl(struct dr
- 		if (ret < 0)
- 			return ret;
- 		args->value = V3D_READ(V3D_IDENT0);
--		pm_runtime_put(&vc4->v3d->pdev->dev);
-+		pm_runtime_mark_last_busy(&vc4->v3d->pdev->dev);
-+		pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev);
- 		break;
- 	case DRM_VC4_PARAM_V3D_IDENT1:
- 		ret = pm_runtime_get_sync(&vc4->v3d->pdev->dev);
- 		if (ret < 0)
- 			return ret;
- 		args->value = V3D_READ(V3D_IDENT1);
--		pm_runtime_put(&vc4->v3d->pdev->dev);
-+		pm_runtime_mark_last_busy(&vc4->v3d->pdev->dev);
-+		pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev);
- 		break;
- 	case DRM_VC4_PARAM_V3D_IDENT2:
- 		ret = pm_runtime_get_sync(&vc4->v3d->pdev->dev);
- 		if (ret < 0)
- 			return ret;
- 		args->value = V3D_READ(V3D_IDENT2);
--		pm_runtime_put(&vc4->v3d->pdev->dev);
-+		pm_runtime_mark_last_busy(&vc4->v3d->pdev->dev);
-+		pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev);
- 		break;
- 	case DRM_VC4_PARAM_SUPPORTS_BRANCHES:
- 	case DRM_VC4_PARAM_SUPPORTS_ETC1:
---- a/drivers/gpu/drm/vc4/vc4_gem.c
-+++ b/drivers/gpu/drm/vc4/vc4_gem.c
-@@ -711,8 +711,10 @@ vc4_complete_exec(struct drm_device *dev
- 	}
- 
- 	mutex_lock(&vc4->power_lock);
--	if (--vc4->power_refcount == 0)
--		pm_runtime_put(&vc4->v3d->pdev->dev);
-+	if (--vc4->power_refcount == 0) {
-+		pm_runtime_mark_last_busy(&vc4->v3d->pdev->dev);
-+		pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev);
-+	}
- 	mutex_unlock(&vc4->power_lock);
- 
- 	kfree(exec);
---- a/drivers/gpu/drm/vc4/vc4_v3d.c
-+++ b/drivers/gpu/drm/vc4/vc4_v3d.c
-@@ -222,6 +222,8 @@ static int vc4_v3d_bind(struct device *d
- 		return ret;
- 	}
- 
-+	pm_runtime_use_autosuspend(dev);
-+	pm_runtime_set_autosuspend_delay(dev, 40); /* a little over 2 frames. */
- 	pm_runtime_enable(dev);
- 
- 	return 0;
-- 
cgit v1.2.3