Linux v4.16.8
This commit is contained in:
parent
05c1f60f89
commit
76a13e6a64
|
@ -0,0 +1 @@
|
|||
CONFIG_ARM64_ERRATUM_1024718=y
|
|
@ -248,6 +248,7 @@ CONFIG_ARCH_ZYNQMP=y
|
|||
CONFIG_ARM64_4K_PAGES=y
|
||||
CONFIG_ARM64_ACPI_PARKING_PROTOCOL=y
|
||||
CONFIG_ARM64_CRYPTO=y
|
||||
CONFIG_ARM64_ERRATUM_1024718=y
|
||||
CONFIG_ARM64_ERRATUM_819472=y
|
||||
CONFIG_ARM64_ERRATUM_824069=y
|
||||
CONFIG_ARM64_ERRATUM_826319=y
|
||||
|
|
|
@ -248,6 +248,7 @@ CONFIG_ARCH_ZYNQMP=y
|
|||
CONFIG_ARM64_4K_PAGES=y
|
||||
CONFIG_ARM64_ACPI_PARKING_PROTOCOL=y
|
||||
CONFIG_ARM64_CRYPTO=y
|
||||
CONFIG_ARM64_ERRATUM_1024718=y
|
||||
CONFIG_ARM64_ERRATUM_819472=y
|
||||
CONFIG_ARM64_ERRATUM_824069=y
|
||||
CONFIG_ARM64_ERRATUM_826319=y
|
||||
|
|
|
@ -251,6 +251,7 @@ CONFIG_ARCH_VIRT=y
|
|||
# CONFIG_ARCH_ZX is not set
|
||||
CONFIG_ARCH_ZYNQ=y
|
||||
# CONFIG_ARCNET is not set
|
||||
CONFIG_ARM64_ERRATUM_1024718=y
|
||||
CONFIG_ARM64_ERRATUM_858921=y
|
||||
CONFIG_ARM64_PTDUMP=y
|
||||
CONFIG_ARMADA_THERMAL=m
|
||||
|
|
|
@ -242,6 +242,7 @@ CONFIG_ARCH_VIRT=y
|
|||
# CONFIG_ARCH_ZX is not set
|
||||
# CONFIG_ARCH_ZYNQ is not set
|
||||
# CONFIG_ARCNET is not set
|
||||
CONFIG_ARM64_ERRATUM_1024718=y
|
||||
CONFIG_ARM64_ERRATUM_858921=y
|
||||
CONFIG_ARM64_PTDUMP=y
|
||||
CONFIG_ARMADA_THERMAL=m
|
||||
|
|
|
@ -242,6 +242,7 @@ CONFIG_ARCH_VIRT=y
|
|||
# CONFIG_ARCH_ZX is not set
|
||||
# CONFIG_ARCH_ZYNQ is not set
|
||||
# CONFIG_ARCNET is not set
|
||||
CONFIG_ARM64_ERRATUM_1024718=y
|
||||
CONFIG_ARM64_ERRATUM_858921=y
|
||||
CONFIG_ARMADA_THERMAL=m
|
||||
CONFIG_ARM_AMBA=y
|
||||
|
|
|
@ -251,6 +251,7 @@ CONFIG_ARCH_VIRT=y
|
|||
# CONFIG_ARCH_ZX is not set
|
||||
CONFIG_ARCH_ZYNQ=y
|
||||
# CONFIG_ARCNET is not set
|
||||
CONFIG_ARM64_ERRATUM_1024718=y
|
||||
CONFIG_ARM64_ERRATUM_858921=y
|
||||
CONFIG_ARMADA_THERMAL=m
|
||||
CONFIG_ARM_AMBA=y
|
||||
|
|
|
@ -54,7 +54,7 @@ Summary: The Linux kernel
|
|||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 7
|
||||
%define stable_update 8
|
||||
# Set rpm version accordingly
|
||||
%if 0%{?stable_update}
|
||||
%define stablerev %{stable_update}
|
||||
|
@ -642,9 +642,6 @@ Patch331: bcm2837-rpi-initial-3plus-support.patch
|
|||
Patch332: bcm2837-enable-pmu.patch
|
||||
Patch333: bcm2837-lan78xx-fixes.patch
|
||||
|
||||
# https://patchwork.freedesktop.org/patch/219644/
|
||||
Patch334: vc4-Make-sure-vc4_bo_-inc-dec-_usecnt-calls-are-balanced.patch
|
||||
|
||||
# 400 - IBM (ppc/s390x) patches
|
||||
|
||||
# 500 - Temp fixes/CVEs etc
|
||||
|
@ -1930,6 +1927,9 @@ fi
|
|||
#
|
||||
#
|
||||
%changelog
|
||||
* Wed May 09 2018 Jeremy Cline <jeremy@jcline.org> - 4.16.8-200
|
||||
- Linux v4.16.8
|
||||
|
||||
* Mon May 07 2018 Jeremy Cline <jeremy@jcline.org>
|
||||
- Fix issue with KVM on older Core 2 processors (rhbz 1566258)
|
||||
|
||||
|
|
2
sources
2
sources
|
@ -1,2 +1,2 @@
|
|||
SHA512 (linux-4.16.tar.xz) = ab47849314b177d0eec9dbf261f33972b0d89fb92fb0650130ffa7abc2f36c0fab2d06317dc1683c51a472a9a631573a9b1e7258d6281a2ee189897827f14662
|
||||
SHA512 (patch-4.16.7.xz) = 576c2b520d444e11a9ca45ed3ed03822007ab6ff778a1759aa0f65c96946fe3e169e71d48d11e6d3b8627a99cdc20abfb0c84d7b6c9b0d2afa4d5fee9ed3aa41
|
||||
SHA512 (patch-4.16.8.xz) = 8bd521f5a14280c6893f6d85f46d12f97ba71abf3e149f1900aa5e1efa3a03a97df674c4b2b46553b8e9df55164894b6fcb510dbba8cab8ce47ee4b0186e27d0
|
||||
|
|
|
@ -1,125 +0,0 @@
|
|||
From patchwork Mon Apr 30 13:32:32 2018
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Subject: drm/vc4: Make sure vc4_bo_{inc, dec}_usecnt() calls are balanced
|
||||
From: Boris Brezillon <boris.brezillon@bootlin.com>
|
||||
X-Patchwork-Id: 219644
|
||||
Message-Id: <20180430133232.32457-1-boris.brezillon@bootlin.com>
|
||||
To: Eric Anholt <eric@anholt.net>
|
||||
Cc: David Airlie <airlied@linux.ie>, stable@vger.kernel.org,
|
||||
Boris Brezillon <boris.brezillon@bootlin.com>,
|
||||
dri-devel@lists.freedesktop.org, Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Mon, 30 Apr 2018 15:32:32 +0200
|
||||
|
||||
Commit b9f19259b84d ("drm/vc4: Add the DRM_IOCTL_VC4_GEM_MADVISE ioctl")
|
||||
introduced a mechanism to mark some BOs as purgeable to allow the driver
|
||||
to drop them under memory pressure. In order to implement this feature
|
||||
we had to add a mechanism to mark BOs as currently used by a piece of
|
||||
hardware which materialized through the ->usecnt counter.
|
||||
|
||||
Plane code is supposed to increment usecnt when it attaches a BO to a
|
||||
plane and decrement it when it's done with this BO, which was done in
|
||||
the ->prepare_fb() and ->cleanup_fb() hooks. The problem is, async page
|
||||
flip logic does not go through the regular atomic update path, and
|
||||
->prepare_fb() and ->cleanup_fb() are not called in this case.
|
||||
|
||||
Fix that by manually calling vc4_bo_{inc,dec}_usecnt() in the
|
||||
async-page-flip path.
|
||||
|
||||
Note that all this should go away as soon as we get generic async page
|
||||
flip support in the core, in the meantime, this fix should do the
|
||||
trick.
|
||||
|
||||
Fixes: b9f19259b84d ("drm/vc4: Add the DRM_IOCTL_VC4_GEM_MADVISE ioctl")
|
||||
Reported-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
|
||||
---
|
||||
drivers/gpu/drm/vc4/vc4_crtc.c | 46 +++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 45 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
|
||||
index 83d3b7912fc2..c8650bbcbcb3 100644
|
||||
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
|
||||
@@ -741,6 +741,7 @@ static irqreturn_t vc4_crtc_irq_handler(int irq, void *data)
|
||||
struct vc4_async_flip_state {
|
||||
struct drm_crtc *crtc;
|
||||
struct drm_framebuffer *fb;
|
||||
+ struct drm_framebuffer *old_fb;
|
||||
struct drm_pending_vblank_event *event;
|
||||
|
||||
struct vc4_seqno_cb cb;
|
||||
@@ -770,6 +771,23 @@ vc4_async_page_flip_complete(struct vc4_seqno_cb *cb)
|
||||
|
||||
drm_crtc_vblank_put(crtc);
|
||||
drm_framebuffer_put(flip_state->fb);
|
||||
+
|
||||
+ /* Decrement the BO usecnt in order to keep the inc/dec calls balanced
|
||||
+ * when the planes are updated through the async update path.
|
||||
+ * FIXME: we should move to generic async-page-flip when it's
|
||||
+ * available, so that we can get rid of this hand-made cleanup_fb()
|
||||
+ * logic.
|
||||
+ */
|
||||
+ if (flip_state->old_fb) {
|
||||
+ struct drm_gem_cma_object *cma_bo;
|
||||
+ struct vc4_bo *bo;
|
||||
+
|
||||
+ cma_bo = drm_fb_cma_get_gem_obj(flip_state->old_fb, 0);
|
||||
+ bo = to_vc4_bo(&cma_bo->base);
|
||||
+ vc4_bo_dec_usecnt(bo);
|
||||
+ drm_framebuffer_put(flip_state->old_fb);
|
||||
+ }
|
||||
+
|
||||
kfree(flip_state);
|
||||
|
||||
up(&vc4->async_modeset);
|
||||
@@ -794,9 +812,22 @@ static int vc4_async_page_flip(struct drm_crtc *crtc,
|
||||
struct drm_gem_cma_object *cma_bo = drm_fb_cma_get_gem_obj(fb, 0);
|
||||
struct vc4_bo *bo = to_vc4_bo(&cma_bo->base);
|
||||
|
||||
+ /* Increment the BO usecnt here, so that we never end up with an
|
||||
+ * unbalanced number of vc4_bo_{dec,inc}_usecnt() calls when the
|
||||
+ * plane is later updated through the non-async path.
|
||||
+ * FIXME: we should move to generic async-page-flip when it's
|
||||
+ * available, so that we can get rid of this hand-made prepare_fb()
|
||||
+ * logic.
|
||||
+ */
|
||||
+ ret = vc4_bo_inc_usecnt(bo);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
flip_state = kzalloc(sizeof(*flip_state), GFP_KERNEL);
|
||||
- if (!flip_state)
|
||||
+ if (!flip_state) {
|
||||
+ vc4_bo_dec_usecnt(bo);
|
||||
return -ENOMEM;
|
||||
+ }
|
||||
|
||||
drm_framebuffer_get(fb);
|
||||
flip_state->fb = fb;
|
||||
@@ -807,10 +838,23 @@ static int vc4_async_page_flip(struct drm_crtc *crtc,
|
||||
ret = down_interruptible(&vc4->async_modeset);
|
||||
if (ret) {
|
||||
drm_framebuffer_put(fb);
|
||||
+ vc4_bo_dec_usecnt(bo);
|
||||
kfree(flip_state);
|
||||
return ret;
|
||||
}
|
||||
|
||||
+ /* Save the current FB before it's replaced by the new one in
|
||||
+ * drm_atomic_set_fb_for_plane(). We'll need the old FB in
|
||||
+ * vc4_async_page_flip_complete() to decrement the BO usecnt and keep
|
||||
+ * it consistent.
|
||||
+ * FIXME: we should move to generic async-page-flip when it's
|
||||
+ * available, so that we can get rid of this hand-made cleanup_fb()
|
||||
+ * logic.
|
||||
+ */
|
||||
+ flip_state->old_fb = plane->state->fb;
|
||||
+ if (flip_state->old_fb)
|
||||
+ drm_framebuffer_get(flip_state->old_fb);
|
||||
+
|
||||
WARN_ON(drm_crtc_vblank_get(crtc) != 0);
|
||||
|
||||
/* Immediately update the plane's legacy fb pointer, so that later
|
Loading…
Reference in New Issue