diff --git a/baseconfig/arm/CONFIG_ARM64_ERRATUM_1024718 b/baseconfig/arm/CONFIG_ARM64_ERRATUM_1024718 new file mode 100644 index 0000000..1c8f6ff --- /dev/null +++ b/baseconfig/arm/CONFIG_ARM64_ERRATUM_1024718 @@ -0,0 +1 @@ +CONFIG_ARM64_ERRATUM_1024718=y diff --git a/kernel-aarch64-debug.config b/kernel-aarch64-debug.config index af7839b..278735e 100644 --- a/kernel-aarch64-debug.config +++ b/kernel-aarch64-debug.config @@ -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 diff --git a/kernel-aarch64.config b/kernel-aarch64.config index c1e5037..19ff06b 100644 --- a/kernel-aarch64.config +++ b/kernel-aarch64.config @@ -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 diff --git a/kernel-armv7hl-debug.config b/kernel-armv7hl-debug.config index 144837c..3d23108 100644 --- a/kernel-armv7hl-debug.config +++ b/kernel-armv7hl-debug.config @@ -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 diff --git a/kernel-armv7hl-lpae-debug.config b/kernel-armv7hl-lpae-debug.config index 22ad884..300cc85 100644 --- a/kernel-armv7hl-lpae-debug.config +++ b/kernel-armv7hl-lpae-debug.config @@ -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 diff --git a/kernel-armv7hl-lpae.config b/kernel-armv7hl-lpae.config index 6244242..a9e4fb8 100644 --- a/kernel-armv7hl-lpae.config +++ b/kernel-armv7hl-lpae.config @@ -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 diff --git a/kernel-armv7hl.config b/kernel-armv7hl.config index 1aa4472..2cdc554 100644 --- a/kernel-armv7hl.config +++ b/kernel-armv7hl.config @@ -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 diff --git a/kernel.spec b/kernel.spec index ec20b13..1efbdaa 100644 --- a/kernel.spec +++ b/kernel.spec @@ -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} @@ -631,9 +631,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 @@ -1939,6 +1936,9 @@ fi # # %changelog +* Wed May 09 2018 Jeremy Cline - 4.16.8-200 +- Linux v4.16.8 + * Mon May 07 2018 Jeremy Cline - Fix issue with KVM on older Core 2 processors (rhbz 1566258) diff --git a/sources b/sources index d5fa949..5988cda 100644 --- a/sources +++ b/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 diff --git a/vc4-Make-sure-vc4_bo_-inc-dec-_usecnt-calls-are-balanced.patch b/vc4-Make-sure-vc4_bo_-inc-dec-_usecnt-calls-are-balanced.patch deleted file mode 100644 index 4c10771..0000000 --- a/vc4-Make-sure-vc4_bo_-inc-dec-_usecnt-calls-are-balanced.patch +++ /dev/null @@ -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 -X-Patchwork-Id: 219644 -Message-Id: <20180430133232.32457-1-boris.brezillon@bootlin.com> -To: Eric Anholt -Cc: David Airlie , stable@vger.kernel.org, - Boris Brezillon , - dri-devel@lists.freedesktop.org, Peter Robinson -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 -Cc: -Signed-off-by: Boris Brezillon ---- - 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