From 69f65af1c6db0275e6de1069ee5ae1157a4092bc Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 29 Jun 2017 10:15:29 +0100 Subject: Tweak vc4 vblank for stability, Fix for early boot on Dragonboard 410c --- bcm283x-vc4-fix-vblank.patch | 62 ++++++-------------------------- kernel.spec | 8 +++++ qcom-rmsg-spmi-fixes.patch | 85 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+), 52 deletions(-) create mode 100644 qcom-rmsg-spmi-fixes.patch 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 -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 ---- - 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 -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 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/kernel.spec b/kernel.spec index 038be7d13..5bbff1f97 100644 --- a/kernel.spec +++ b/kernel.spec @@ -609,6 +609,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 @@ -2193,6 +2197,10 @@ fi # # %changelog +* Wed Jun 28 2017 Peter Robinson +- Tweak vc4 vblank for stability +- Fix for early boot on Dragonboard 410c + * Tue Jun 27 2017 Laura Abbott - 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 +X-Patchwork-Id: 9815555 +Message-Id: <20170628215323.5658-1-bjorn.andersson@linaro.org> +To: Ohad Ben-Cohen , + Bjorn Andersson +Cc: linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, + Rob Clark +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 +Reported-by: Rob Clark +Signed-off-by: Bjorn Andersson +--- + +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, + }; + + /** -- cgit From 5929f0247b00a9a5e8a9c4ffe6fe1968c2d2d06c Mon Sep 17 00:00:00 2001 From: Laura Abbott Date: Thu, 29 Jun 2017 08:39:38 -0700 Subject: Linux v4.12-rc7-25-g6474924 --- gitrev | 2 +- kernel.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) 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 5bbff1f97..a30960158 100644 --- a/kernel.spec +++ b/kernel.spec @@ -69,7 +69,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 @@ -2197,6 +2197,9 @@ fi # # %changelog +* Thu Jun 29 2017 Laura Abbott - 4.12.0-0.rc7.git2.1 +- Linux v4.12-rc7-25-g6474924 + * Wed Jun 28 2017 Peter Robinson - Tweak vc4 vblank for stability - Fix for early boot on Dragonboard 410c 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 -- cgit