diff options
-rw-r--r-- | config-generic | 6 | ||||
-rw-r--r-- | config-nodebug | 114 | ||||
-rw-r--r-- | config-x86-generic | 2 | ||||
-rw-r--r-- | gitrev | 2 | ||||
-rw-r--r-- | kernel.spec | 12 | ||||
-rw-r--r-- | qxl-reapply-cursor-after-SetCrtc-calls.patch | 167 | ||||
-rw-r--r-- | rebase-notes.txt | 4 | ||||
-rw-r--r-- | sources | 1 |
8 files changed, 244 insertions, 64 deletions
diff --git a/config-generic b/config-generic index 5b0be63d4..c26b10330 100644 --- a/config-generic +++ b/config-generic @@ -1859,13 +1859,13 @@ CONFIG_B43=m CONFIG_B43_SDIO=y CONFIG_B43_BCMA=y CONFIG_B43_BCMA_PIO=y -# CONFIG_B43_DEBUG is not set +CONFIG_B43_DEBUG=y CONFIG_B43_PHY_LP=y CONFIG_B43_PHY_N=y CONFIG_B43_PHY_HT=y CONFIG_B43_PHY_G=y CONFIG_B43LEGACY=m -# CONFIG_B43LEGACY_DEBUG is not set +CONFIG_B43LEGACY_DEBUG=y CONFIG_B43LEGACY_DMA=y CONFIG_B43LEGACY_PIO=y CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y @@ -5274,7 +5274,7 @@ CONFIG_PM_DEBUG=y # CONFIG_DPM_WATCHDOG is not set # revisit this in debug CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y -# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_PM_TEST_SUSPEND=y # CONFIG_PM_OPP is not set # CONFIG_PM_AUTOSLEEP is not set # CONFIG_PM_WAKELOCKS is not set diff --git a/config-nodebug b/config-nodebug index 4bd461d8f..0dc864752 100644 --- a/config-nodebug +++ b/config-nodebug @@ -2,102 +2,102 @@ CONFIG_SND_VERBOSE_PRINTK=y CONFIG_SND_DEBUG=y CONFIG_SND_PCM_XRUN_DEBUG=y -# CONFIG_DEBUG_ATOMIC_SLEEP is not set - -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_RT_MUTEXES is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set -# CONFIG_LOCK_TORTURE_TEST is not set -# CONFIG_PROVE_LOCKING is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_PROVE_RCU is not set +CONFIG_DEBUG_ATOMIC_SLEEP=y + +CONFIG_DEBUG_MUTEXES=y +CONFIG_DEBUG_RT_MUTEXES=y +CONFIG_DEBUG_LOCK_ALLOC=y +CONFIG_LOCK_TORTURE_TEST=m +CONFIG_PROVE_LOCKING=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_PROVE_RCU=y # CONFIG_PROVE_RCU_REPEATEDLY is not set -# CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_DEBUG_PER_CPU_MAPS=y CONFIG_CPUMASK_OFFSTACK=y -# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set +CONFIG_CPU_NOTIFIER_ERROR_INJECT=m -# CONFIG_FAULT_INJECTION is not set -# CONFIG_FAILSLAB is not set -# CONFIG_FAIL_PAGE_ALLOC is not set -# CONFIG_FAIL_MAKE_REQUEST is not set -# CONFIG_FAULT_INJECTION_DEBUG_FS is not set -# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set -# CONFIG_FAIL_IO_TIMEOUT is not set -# CONFIG_FAIL_MMC_REQUEST is not set +CONFIG_FAULT_INJECTION=y +CONFIG_FAILSLAB=y +CONFIG_FAIL_PAGE_ALLOC=y +CONFIG_FAIL_MAKE_REQUEST=y +CONFIG_FAULT_INJECTION_DEBUG_FS=y +CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y +CONFIG_FAIL_IO_TIMEOUT=y +CONFIG_FAIL_MMC_REQUEST=y # CONFIG_F2FS_FAULT_INJECTION is not set -# CONFIG_LOCK_STAT is not set +CONFIG_LOCK_STAT=y -# CONFIG_DEBUG_STACK_USAGE is not set +CONFIG_DEBUG_STACK_USAGE=y -# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_DEBUG=y # CONFIG_ACPI_DEBUGGER is not set -# CONFIG_DEBUG_SG is not set -# CONFIG_DEBUG_PI_LIST is not set +CONFIG_DEBUG_SG=y +CONFIG_DEBUG_PI_LIST=y # CONFIG_PAGE_EXTENSION is not set # CONFIG_PAGE_OWNER is not set # CONFIG_DEBUG_PAGEALLOC is not set -# CONFIG_DEBUG_OBJECTS is not set +CONFIG_DEBUG_OBJECTS=y # CONFIG_DEBUG_OBJECTS_SELFTEST is not set -# CONFIG_DEBUG_OBJECTS_FREE is not set -# CONFIG_DEBUG_OBJECTS_TIMERS is not set -# CONFIG_DEBUG_OBJECTS_RCU_HEAD is not set +CONFIG_DEBUG_OBJECTS_FREE=y +CONFIG_DEBUG_OBJECTS_TIMERS=y +CONFIG_DEBUG_OBJECTS_RCU_HEAD=y CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1 CONFIG_X86_PTDUMP=y -# CONFIG_ARM64_PTDUMP is not set -# CONFIG_EFI_PGT_DUMP is not set +CONFIG_ARM64_PTDUMP=y +CONFIG_EFI_PGT_DUMP=y -# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_CAN_DEBUG_DEVICES=y -# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_FORCE_UNLOAD=y -# CONFIG_DEBUG_NOTIFIERS is not set +CONFIG_DEBUG_NOTIFIERS=y -# CONFIG_DMA_API_DEBUG is not set +CONFIG_DMA_API_DEBUG=y -# CONFIG_MMIOTRACE is not set +CONFIG_MMIOTRACE=y -# CONFIG_DEBUG_CREDENTIALS is not set +CONFIG_DEBUG_CREDENTIALS=y # off in both production debug and nodebug builds, # on in rawhide nodebug builds -# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y -# CONFIG_EXT4_DEBUG is not set +CONFIG_EXT4_DEBUG=y # CONFIG_XFS_WARN is not set -# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +CONFIG_DEBUG_PERF_USE_VMALLOC=y -# CONFIG_JBD2_DEBUG is not set +CONFIG_JBD2_DEBUG=y -# CONFIG_NFSD_FAULT_INJECTION is not set +CONFIG_NFSD_FAULT_INJECTION=y -# CONFIG_DEBUG_BLK_CGROUP is not set +CONFIG_DEBUG_BLK_CGROUP=y -# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_DRBD_FAULT_INJECTION=y -# CONFIG_ATH_DEBUG is not set -# CONFIG_CARL9170_DEBUGFS is not set -# CONFIG_IWLWIFI_DEVICE_TRACING is not set +CONFIG_ATH_DEBUG=y +CONFIG_CARL9170_DEBUGFS=y +CONFIG_IWLWIFI_DEVICE_TRACING=y # CONFIG_RTLWIFI_DEBUG is not set -# CONFIG_DEBUG_OBJECTS_WORK is not set +CONFIG_DEBUG_OBJECTS_WORK=y -# CONFIG_DMADEVICES_DEBUG is not set +CONFIG_DMADEVICES_DEBUG=y # CONFIG_DMADEVICES_VDEBUG is not set CONFIG_PM_ADVANCED_DEBUG=y -# CONFIG_CEPH_LIB_PRETTYDEBUG is not set -# CONFIG_QUOTA_DEBUG is not set +CONFIG_CEPH_LIB_PRETTYDEBUG=y +CONFIG_QUOTA_DEBUG=y CONFIG_KGDB_KDB=y @@ -105,19 +105,19 @@ CONFIG_KDB_DEFAULT_ENABLE=0x0 CONFIG_KDB_KEYBOARD=y CONFIG_KDB_CONTINUE_CATASTROPHIC=0 -# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set +CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y # CONFIG_PERCPU_TEST is not set -# CONFIG_TEST_LIST_SORT is not set +CONFIG_TEST_LIST_SORT=y # CONFIG_TEST_STRING_HELPERS is not set -# CONFIG_DETECT_HUNG_TASK is not set +CONFIG_DETECT_HUNG_TASK=y CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set -# CONFIG_WQ_WATCHDOG is not set +CONFIG_WQ_WATCHDOG=y -# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y -# CONFIG_DEBUG_KMEMLEAK is not set +CONFIG_DEBUG_KMEMLEAK=y CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=1024 # CONFIG_DEBUG_KMEMLEAK_TEST is not set CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y @@ -128,4 +128,4 @@ CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y # CONFIG_SPI_DEBUG is not set -# CONFIG_DEBUG_VM_PGFLAGS is not set +CONFIG_DEBUG_VM_PGFLAGS=y diff --git a/config-x86-generic b/config-x86-generic index 05465810d..7df9a0751 100644 --- a/config-x86-generic +++ b/config-x86-generic @@ -384,7 +384,7 @@ CONFIG_SP5100_TCO=m # CONFIG_MEMTEST is not set # CONFIG_DEBUG_TLBFLUSH is not set -# CONFIG_MAXSMP is not set +CONFIG_MAXSMP=y CONFIG_HP_ILO=m @@ -1 +1 @@ -694d0d0bb2030d2e36df73e2d23d5770511dbc8d +ae5d68be42cd0275a91faf56d2b527b448c3caf4 diff --git a/kernel.spec b/kernel.spec index 35bb0c00f..4f97c2193 100644 --- a/kernel.spec +++ b/kernel.spec @@ -77,7 +77,7 @@ Summary: The Linux kernel # The rc snapshot level %define rcrev 2 # The git snapshot level -%define gitrev 0 +%define gitrev 1 # Set rpm version accordingly %define rpmversion 4.%{upstream_sublevel}.0 %endif @@ -133,7 +133,7 @@ Summary: The Linux kernel # Set debugbuildsenabled to 1 for production (build separate debug kernels) # and 0 for rawhide (all kernels are debug kernels). # See also 'make debug' and 'make release'. -%define debugbuildsenabled 1 +%define debugbuildsenabled 0 # Want to build a vanilla kernel build without any non-upstream patches? %define with_vanilla %{?_without_vanilla: 0} %{?!_without_vanilla: 1} @@ -622,6 +622,9 @@ Patch839: drm-i915-Acquire-audio-powerwell-for-HD-Audio-regist.patch #rhbz 1361414 Patch841: openstack_fix.patch +#rhbz 1200901 (There should be something better upstream at some point) +Patch842: qxl-reapply-cursor-after-SetCrtc-calls.patch + # END OF PATCH DEFINITIONS %endif @@ -2159,6 +2162,11 @@ fi # # %changelog +* Tue Aug 16 2016 Justin M. Forbes <jforbes@fedoraproject.org> - 4.8.0-0.rc2.git1.1 +- Linux v4.8-rc2-17-gae5d68b +- Add patch for qxl cursor bug (rhbz 1200901) +- Reenable debugging options. + * Mon Aug 15 2016 Justin M. Forbes <jforbes@fedoraproject.org> - 4.8.0-0.rc2.git0.1 - Linux v4.8-rc2 - Disable debugging options. diff --git a/qxl-reapply-cursor-after-SetCrtc-calls.patch b/qxl-reapply-cursor-after-SetCrtc-calls.patch new file mode 100644 index 000000000..2787cf7d1 --- /dev/null +++ b/qxl-reapply-cursor-after-SetCrtc-calls.patch @@ -0,0 +1,167 @@ +From 99ea1a3c387899424fb5c6b17baa56e8d68a3484 Mon Sep 17 00:00:00 2001 +From: Ray Strode <rstrode@redhat.com> +Date: Tue, 12 May 2015 12:51:18 -0400 +Subject: [PATCH] drm/qxl: reapply cursor after SetCrtc calls + +The qxl driver currently destroys and recreates the +qxl "primary" any time the first crtc is set. + +A side-effect of destroying the primary is mouse state +associated with the crtc is lost, which leads to +disappearing mouse cursors on wayland sessions. + +This commit changes the driver to reapply the cursor +any time SetCrtc is called. It achieves this by keeping +a copy of the cursor data on the qxl_crtc struct. + +Signed-off-by: Ray Strode <rstrode@redhat.com> + +https://bugzilla.redhat.com/show_bug.cgi?id=1200901 +--- + drivers/gpu/drm/qxl/qxl_display.c | 98 +++++++++++++++++++++++++++++++++++++++ + drivers/gpu/drm/qxl/qxl_drv.h | 1 + + 2 files changed, 99 insertions(+) + +diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c +index 3aef127..fcc5f3b 100644 +--- a/drivers/gpu/drm/qxl/qxl_display.c ++++ b/drivers/gpu/drm/qxl/qxl_display.c +@@ -211,6 +211,7 @@ static void qxl_crtc_destroy(struct drm_crtc *crtc) + struct qxl_crtc *qxl_crtc = to_qxl_crtc(crtc); + + drm_crtc_cleanup(crtc); ++ kfree(qxl_crtc->cursor); + kfree(qxl_crtc); + } + +@@ -296,6 +297,92 @@ qxl_hide_cursor(struct qxl_device *qdev) + return 0; + } + ++static int qxl_crtc_stash_cursor(struct drm_crtc *crtc, ++ struct qxl_cursor *cursor) ++{ ++ struct qxl_crtc *qcrtc = to_qxl_crtc(crtc); ++ size_t cursor_size; ++ ++ cursor_size = sizeof(struct qxl_cursor) + cursor->data_size; ++ ++ if (!qcrtc->cursor || qcrtc->cursor->data_size != cursor->data_size) { ++ kfree(qcrtc->cursor); ++ qcrtc->cursor = kmalloc(cursor_size, GFP_KERNEL); ++ ++ if (!qcrtc->cursor) ++ return -ENOMEM; ++ } ++ ++ memcpy(qcrtc->cursor, cursor, cursor_size); ++ ++ return 0; ++} ++ ++static int qxl_crtc_apply_cursor(struct drm_crtc *crtc) ++{ ++ struct qxl_crtc *qcrtc = to_qxl_crtc(crtc); ++ struct drm_device *dev = crtc->dev; ++ struct qxl_device *qdev = dev->dev_private; ++ struct qxl_cursor *cursor; ++ struct qxl_cursor_cmd *cmd; ++ struct qxl_bo *cursor_bo; ++ struct qxl_release *release; ++ size_t cursor_size; ++ int ret = 0; ++ ++ if (!qcrtc->cursor) ++ return 0; ++ ++ cursor_size = sizeof(*qcrtc->cursor) + qcrtc->cursor->data_size; ++ ++ ret = qxl_alloc_release_reserved(qdev, sizeof(*cmd), ++ QXL_RELEASE_CURSOR_CMD, ++ &release, NULL); ++ if (ret) ++ return ret; ++ ++ ret = qxl_alloc_bo_reserved(qdev, release, cursor_size, &cursor_bo); ++ if (ret) ++ goto out_free_release; ++ ++ ret = qxl_release_reserve_list(release, false); ++ if (ret) ++ goto out_free_bo; ++ ++ ret = qxl_bo_kmap(cursor_bo, (void **)&cursor); ++ if (ret) ++ goto out_backoff; ++ ++ memcpy(cursor, qcrtc->cursor, cursor_size); ++ ++ qxl_bo_kunmap(cursor_bo); ++ ++ cmd = (struct qxl_cursor_cmd *)qxl_release_map(qdev, release); ++ cmd->type = QXL_CURSOR_SET; ++ cmd->u.set.position.x = qcrtc->cur_x; ++ cmd->u.set.position.y = qcrtc->cur_y; ++ ++ cmd->u.set.shape = qxl_bo_physical_address(qdev, cursor_bo, 0); ++ ++ ++ cmd->u.set.visible = 1; ++ qxl_release_unmap(qdev, release, &cmd->release_info); ++ ++ qxl_push_cursor_ring_release(qdev, release, QXL_CMD_CURSOR, false); ++ qxl_release_fence_buffer_objects(release); ++ qxl_bo_unref(&cursor_bo); ++ ++ return ret; ++ ++out_backoff: ++ qxl_release_backoff_reserve_list(release); ++out_free_bo: ++ qxl_bo_unref(&cursor_bo); ++out_free_release: ++ qxl_release_free(qdev, release); ++ return ret; ++} ++ + static int qxl_crtc_cursor_set2(struct drm_crtc *crtc, + struct drm_file *file_priv, + uint32_t handle, +@@ -370,6 +457,12 @@ static int qxl_crtc_cursor_set2(struct drm_crtc *crtc, + + memcpy(cursor->chunk.data, user_ptr, size); + ++ ret = qxl_crtc_stash_cursor(crtc, cursor); ++ if (ret) { ++ DRM_ERROR("cannot save cursor, may be lost on next mode set\n"); ++ ret = 0; ++ } ++ + qxl_bo_kunmap(cursor_bo); + + qxl_bo_kunmap(user_bo); +@@ -655,6 +748,12 @@ static int qxl_crtc_mode_set(struct drm_crtc *crtc, + bo->surf.stride, bo->surf.format); + qxl_io_create_primary(qdev, 0, bo); + bo->is_primary = true; ++ ++ ret = qxl_crtc_apply_cursor(crtc); ++ if (ret) { ++ DRM_ERROR("could not set cursor after modeset"); ++ ret = 0; ++ } + } + + if (bo->is_primary) { +diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h +index 8e633ca..6b63c54 100644 +--- a/drivers/gpu/drm/qxl/qxl_drv.h ++++ b/drivers/gpu/drm/qxl/qxl_drv.h +@@ -137,6 +137,7 @@ struct qxl_crtc { + int cur_y; + int hot_spot_x; + int hot_spot_y; ++ struct qxl_cursor *cursor; + }; + + struct qxl_output { diff --git a/rebase-notes.txt b/rebase-notes.txt index eb0a5fbe5..e37ecb303 100644 --- a/rebase-notes.txt +++ b/rebase-notes.txt @@ -1,3 +1,7 @@ +Linux 4.8 rebase notes: +- Make sure you apply drm-i915-turn-off-wc-mmaps.patch for F23 +- Check on status of qxl-reapply-cursor-after-SetCrtc-calls.patch + Linux 4.6 rebase notes: - Check on status of drm-i915-turn-off-wc-mmaps.patch (Should be okay to remove in F24, but not F22 or F23) @@ -1,3 +1,4 @@ 5276563eb1f39a048e4a8a887408c031 linux-4.7.tar.xz fe259c02c75eec61d1aa4b1211f3c853 perf-man-4.7.tar.gz 0d6c6c82846042198bc6ac4260a88b03 patch-4.8-rc2.xz +c2585d3b7786c38e36218ef608ed9b16 patch-4.8-rc2-git1.xz |