summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThorsten Leemhuis <fedora@leemhuis.info>2017-06-29 18:19:32 +0200
committerThorsten Leemhuis <fedora@leemhuis.info>2017-06-29 18:19:32 +0200
commitf89d0ae26f006e22d164c340dac00c3cb9efeab5 (patch)
tree2565d5fc61c1e5d566d8c22385093a5ba0a6682c
parent8e09a750c28f3ad6b489d7ec4bb97362a2939bf4 (diff)
parent5929f0247b00a9a5e8a9c4ffe6fe1968c2d2d06c (diff)
downloadkernel-f89d0ae26f006e22d164c340dac00c3cb9efeab5.tar.gz
kernel-f89d0ae26f006e22d164c340dac00c3cb9efeab5.tar.xz
kernel-f89d0ae26f006e22d164c340dac00c3cb9efeab5.zip
Merge remote-tracking branch 'origin/master'
-rw-r--r--bcm283x-vc4-fix-vblank.patch62
-rw-r--r--gitrev2
-rw-r--r--kernel.spec13
-rw-r--r--qcom-rmsg-spmi-fixes.patch85
-rw-r--r--sources2
5 files changed, 109 insertions, 55 deletions
diff --git a/bcm283x-vc4-fix-vblank.patch b/bcm283x-vc4-fix-vblank.patch
index fc0d033b1..ce4f8b16f 100644
--- a/bcm283x-vc4-fix-vblank.patch
+++ b/bcm283x-vc4-fix-vblank.patch
@@ -1,49 +1,7 @@
-From e487709ee89a572a3a8068f33e9275479fde9bf4 Mon Sep 17 00:00:00 2001
-From: Boris Brezillon <boris.brezillon@free-electrons.com>
-Date: Fri, 16 Jun 2017 10:30:33 +0200
-Subject: [PATCH 1/2] drm/vc4: Send a VBLANK event when disabling a CRTC
-
-VBLANK events are missed when the CRTC is being disabled because the
-driver does not wait till the end of the frame before stopping the
-HVS and PV blocks. In this case, we should explicitly issue a VBLANK
-event if there's one waiting.
-
-Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
----
- drivers/gpu/drm/vc4/vc4_crtc.c | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
-index 9fcf05ca492b..66cffc548af2 100644
---- a/drivers/gpu/drm/vc4/vc4_crtc.c
-+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
-@@ -526,6 +526,19 @@ static void vc4_crtc_disable(struct drm_crtc *crtc)
- WARN_ON_ONCE((HVS_READ(SCALER_DISPSTATX(chan)) &
- (SCALER_DISPSTATX_FULL | SCALER_DISPSTATX_EMPTY)) !=
- SCALER_DISPSTATX_EMPTY);
-+
-+ /*
-+ * Make sure we issue a vblank event after disabling the CRTC if
-+ * someone was waiting it.
-+ */
-+ if (crtc->state->event) {
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&dev->event_lock, flags);
-+ drm_crtc_send_vblank_event(crtc, crtc->state->event);
-+ crtc->state->event = NULL;
-+ spin_unlock_irqrestore(&dev->event_lock, flags);
-+ }
- }
-
- static void vc4_crtc_enable(struct drm_crtc *crtc)
---
-2.13.0
-
-From 6c9d1ad4c10657d7d6f8455088686abee1805102 Mon Sep 17 00:00:00 2001
+From d40a5938a10a3ba73bce6395729fefd8b8bb1c07 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
-Date: Mon, 26 Jun 2017 09:03:28 +0100
-Subject: [PATCH 2/2] drm/vc4: Fix VBLANK handling in crtc->enable() path
+Date: Thu, 29 Jun 2017 10:05:05 +0100
+Subject: [PATCH] drm/vc4: Fix VBLANK handling in crtc->enable() path
When we are enabling a CRTC, drm_crtc_vblank_get() is called before
drm_crtc_vblank_on(), which is not supposed to happen (hence the
@@ -56,11 +14,11 @@ Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
1 file changed, 43 insertions(+), 23 deletions(-)
diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
-index 66cffc548af2..47a8ef0a755d 100644
+index d86c8cce3182..316bd6210d69 100644
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
-@@ -541,6 +541,34 @@ static void vc4_crtc_disable(struct drm_crtc *crtc)
- }
+@@ -530,6 +530,34 @@ static void vc4_crtc_disable(struct drm_crtc *crtc)
+ SCALER_DISPSTATX_EMPTY);
}
+static void vc4_crtc_update_dlist(struct drm_crtc *crtc)
@@ -94,7 +52,7 @@ index 66cffc548af2..47a8ef0a755d 100644
static void vc4_crtc_enable(struct drm_crtc *crtc)
{
struct drm_device *dev = crtc->dev;
-@@ -551,6 +579,12 @@ static void vc4_crtc_enable(struct drm_crtc *crtc)
+@@ -540,6 +568,12 @@ static void vc4_crtc_enable(struct drm_crtc *crtc)
require_hvs_enabled(dev);
@@ -107,7 +65,7 @@ index 66cffc548af2..47a8ef0a755d 100644
/* Turn on the scaler, which will wait for vstart to start
* compositing.
*/
-@@ -562,9 +596,6 @@ static void vc4_crtc_enable(struct drm_crtc *crtc)
+@@ -551,9 +585,6 @@ static void vc4_crtc_enable(struct drm_crtc *crtc)
/* Turn on the pixel valve, which will emit the vstart signal. */
CRTC_WRITE(PV_V_CONTROL,
CRTC_READ(PV_V_CONTROL) | PV_VCONTROL_VIDEN);
@@ -117,7 +75,7 @@ index 66cffc548af2..47a8ef0a755d 100644
}
static bool vc4_crtc_mode_fixup(struct drm_crtc *crtc,
-@@ -619,7 +650,6 @@ static void vc4_crtc_atomic_flush(struct drm_crtc *crtc,
+@@ -608,7 +639,6 @@ static void vc4_crtc_atomic_flush(struct drm_crtc *crtc,
{
struct drm_device *dev = crtc->dev;
struct vc4_dev *vc4 = to_vc4_dev(dev);
@@ -125,7 +83,7 @@ index 66cffc548af2..47a8ef0a755d 100644
struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state);
struct drm_plane *plane;
bool debug_dump_regs = false;
-@@ -641,25 +671,15 @@ static void vc4_crtc_atomic_flush(struct drm_crtc *crtc,
+@@ -630,25 +660,15 @@ static void vc4_crtc_atomic_flush(struct drm_crtc *crtc,
WARN_ON_ONCE(dlist_next - dlist_start != vc4_state->mm.size);
diff --git a/gitrev b/gitrev
index b4465c4d5..f5fbc8d6d 100644
--- a/gitrev
+++ b/gitrev
@@ -1 +1 @@
-3c2bfbaadff6e0c257bb6b16c9c97f43618b13dc
+6474924e2b5ddb0030c355558966adcbe3b49022
diff --git a/kernel.spec b/kernel.spec
index 2297e4287..b902e99a9 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -77,7 +77,7 @@ Summary: The Linux kernel
# The rc snapshot level
%global rcrev 7
# The git snapshot level
-%define gitrev 1
+%define gitrev 2
# Set rpm version accordingly
%define rpmversion 4.%{upstream_sublevel}.0
%endif
@@ -626,6 +626,10 @@ Patch314: bcm2835-fix-potential-null-pointer-dereferences.patch
# https://patchwork.freedesktop.org/patch/161978/
Patch315: bcm283x-vc4-fix-vblank.patch
+# https://patchwork.kernel.org/patch/9815555/
+# https://patchwork.kernel.org/patch/9815651/
+Patch316: qcom-rmsg-spmi-fixes.patch
+
# 400 - IBM (ppc/s390x) patches
# 500 - Temp fixes/CVEs etc
@@ -2213,6 +2217,13 @@ fi
#
#
%changelog
+* Thu Jun 29 2017 Laura Abbott <labbott@fedoraproject.org> - 4.12.0-0.rc7.git2.1
+- Linux v4.12-rc7-25-g6474924
+
+* Wed Jun 28 2017 Peter Robinson <pbrobinson@fedoraproject.org>
+- Tweak vc4 vblank for stability
+- Fix for early boot on Dragonboard 410c
+
* Tue Jun 27 2017 Laura Abbott <labbott@fedoraproject.org> - 4.12.0-0.rc7.git1.1
- Linux v4.12-rc7-8-g3c2bfba
diff --git a/qcom-rmsg-spmi-fixes.patch b/qcom-rmsg-spmi-fixes.patch
new file mode 100644
index 000000000..7aa1ca18c
--- /dev/null
+++ b/qcom-rmsg-spmi-fixes.patch
@@ -0,0 +1,85 @@
+From patchwork Wed Jun 28 21:53:23 2017
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [v2] rpmsg: Make modalias work for DeviceTree based devices
+From: Bjorn Andersson <bjorn.andersson@linaro.org>
+X-Patchwork-Id: 9815555
+Message-Id: <20170628215323.5658-1-bjorn.andersson@linaro.org>
+To: Ohad Ben-Cohen <ohad@wizery.com>,
+ Bjorn Andersson <bjorn.andersson@linaro.org>
+Cc: linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org,
+ Rob Clark <robdclark@gmail.com>
+Date: Wed, 28 Jun 2017 14:53:23 -0700
+
+When rpmsg devices are expected to be matched based on their compatible
+the modalias should reflect this, so that module autoloading has a
+chance to match and load the appropriate module.
+
+Tested-by: Rob Clark <robdclark@gmail.com>
+Reported-by: Rob Clark <robdclark@gmail.com>
+Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
+---
+
+Changes since v1:
+- Also update rpmsg_uevent()
+
+ drivers/rpmsg/rpmsg_core.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/drivers/rpmsg/rpmsg_core.c b/drivers/rpmsg/rpmsg_core.c
+index ad3d2a9df287..067650c5bcb6 100644
+--- a/drivers/rpmsg/rpmsg_core.c
++++ b/drivers/rpmsg/rpmsg_core.c
+@@ -343,6 +343,11 @@ static ssize_t modalias_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+ {
+ struct rpmsg_device *rpdev = to_rpmsg_device(dev);
++ ssize_t len;
++
++ len = of_device_modalias(dev, buf, PAGE_SIZE);
++ if (len != -ENODEV)
++ return len;
+
+ return sprintf(buf, RPMSG_DEVICE_MODALIAS_FMT "\n", rpdev->id.name);
+ }
+@@ -387,6 +392,11 @@ static int rpmsg_dev_match(struct device *dev, struct device_driver *drv)
+ static int rpmsg_uevent(struct device *dev, struct kobj_uevent_env *env)
+ {
+ struct rpmsg_device *rpdev = to_rpmsg_device(dev);
++ int ret;
++
++ ret = of_device_uevent_modalias(dev, env);
++ if (ret != -ENODEV)
++ return ret;
+
+ return add_uevent_var(env, "MODALIAS=" RPMSG_DEVICE_MODALIAS_FMT,
+ rpdev->id.name);
+diff --git a/drivers/spmi/spmi.c b/drivers/spmi/spmi.c
+index 2b9b0941d9eb..6d23226e5f69 100644
+--- a/drivers/spmi/spmi.c
++++ b/drivers/spmi/spmi.c
+@@ -365,11 +365,23 @@ static int spmi_drv_remove(struct device *dev)
+ return 0;
+ }
+
++static int spmi_drv_uevent(struct device *dev, struct kobj_uevent_env *env)
++{
++ int ret;
++
++ ret = of_device_uevent_modalias(dev, env);
++ if (ret != -ENODEV)
++ return ret;
++
++ return 0;
++}
++
+ static struct bus_type spmi_bus_type = {
+ .name = "spmi",
+ .match = spmi_device_match,
+ .probe = spmi_drv_probe,
+ .remove = spmi_drv_remove,
++ .uevent = spmi_drv_uevent,
+ };
+
+ /**
diff --git a/sources b/sources
index 119d84d3e..01a7ce7f2 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
SHA512 (perf-man-4.11.tar.gz) = f6dec8c3a296fc5bb1dd58011d7d1340550b9f4f228169bab079b0b36f2d5d96784b808765acda2d547719f6e9fd73b2855ab825dfe4fea8af43c55e5786f8d6
SHA512 (linux-4.11.tar.xz) = 6610eed97ffb7207c71771198c36179b8244ace7222bebb109507720e26c5f17d918079a56d5febdd8605844d67fb2df0ebe910fa2f2f53690daf6e2a8ad09c3
SHA512 (patch-4.12-rc7.xz) = 0e2edc68851374111c458fb0557c724ec1db0376ea42b40177205453961791cc717cede122da95408b3e2eb5d59a7a7b214d70aed1cbb271d572a78e39c5b244
-SHA512 (patch-4.12-rc7-git1.xz) = 9b9b06a6ddb7f3804c2a9b36c78855aed67c95af4e2abf680782761afc78a1cb0e1cf4cd49b3409fe808899c30649632fc2394e3422ddf559ea6bb4a36b9eb58
+SHA512 (patch-4.12-rc7-git2.xz) = 8f8137063978651b56b86b9d3752c4deaf57702b217360f6fff5adce179eac3a9ac14de97d7e4e9a5c57211e61ef7d92f5beaf02d1ab0ec8661ccfd8e1fc51e4