# patchcheck.conf # # This contains a test that takes two git commits and will test each # commit between the two. The build test will look at what files the # commit has touched, and if any of those files produce a warning, then # the build will fail. # PATCH_START is the commit to begin with and PATCH_END is the commit # to end with (inclusive). This is similar to doing a git rebase -i PATCH_START~1 # and then testing each commit and doing a git rebase --continue. # You can use a SHA1, a git tag, or anything that git will accept for a checkout PATCH_START := HEAD~3 PATCH_END := HEAD # Use the oldconfig if build_type wasn't defined DEFAULTS IF NOT DEFINED BUILD_TYPE DO_BUILD_TYPE := oldconfig DEFAULTS ELSE DO_BUILD_TYPE := ${BUILD_TYPE} DEFAULTS # Change PATCH_CHECKOUT to be the branch you want to test. The test will # do a git checkout of this branch before starting. Obviously both # PATCH_START and PATCH_END must be in this branch (and PATCH_START must # be contained by PATCH_END). PATCH_CHECKOUT := test/branch # Usually it's a good idea to have a set config to use for testing individual # patches. PATCH_CONFIG := ${CONFIG_DIR}/config-patchcheck # Change PATCH_TEST to run some test for each patch. Each commit that is # tested, after it is built and installed on the test machine, this command # will be executed. Usually what is done is to ssh to the target box and # run some test scripts. If you just want to boot test your patches # comment PATCH_TEST out. PATCH_TEST := ${SSH} "/usr/local/bin/ktest-test-script" DEFAULTS IF DEFINED PATCH_TEST PATCH_TEST_TYPE := test DEFAULTS ELSE PATCH_TEST_TYPE := boot # If for some reason a file has a warning that one of your patches touch # but you do not care about it, set IGNORE_WARNINGS to that commit(s) # (space delimited) #IGNORE_WARNINGS = 39eaf7ef884dcc44f7ff1bac803ca2a1dcf43544 6edb2a8a385f0cdef51dae37ff23e74d76d8a6ce # Instead of just checking for warnings to files that are changed # it can be advantageous to check for any new warnings. If a # header file is changed, it could cause a warning in a file not # touched by the commit. To detect these kinds of warnings, you # can use the WARNINGS_FILE option. # # If the variable CREATE_WARNINGS_FILE is set, this config will # enable the WARNINGS_FILE during the patchcheck test. Also, # before running the patchcheck test, it will create the # warnings file. # DEFAULTS IF DEFINED CREATE_WARNINGS_FILE WARNINGS_FILE = ${OUTPUT_DIR}/warnings_file TEST_START IF DEFINED CREATE_WARNINGS_FILE # WARNINGS_FILE is already set by the DEFAULTS above TEST_TYPE = make_warnings_file # Checkout the commit before the patches to test, # and record all the warnings that exist before the patches # to test are added CHECKOUT = ${PATCHCHECK_START}~1 # Force a full build BUILD_NOCLEAN = 0 BUILD_TYPE = ${DO_BUILD_TYPE} # If you are running a multi test, and the test failed on the first # test but on, say the 5th patch. If you want to restart on the # fifth patch, set PATCH_START1. This will make the first test start # from this commit instead of the PATCH_START commit. # Note, do not change this option. Just define PATCH_START1 in the # top config (the one you pass to ktest.pl), and this will use it, # otherwise it will just use PATCH_START if PATCH_START1 is not defined. DEFAULTS IF NOT DEFINED PATCH_START1 PATCH_START1 := ${PATCH_START} TEST_START IF ${TEST} == patchcheck TEST_TYPE = patchcheck MIN_CONFIG = ${PATCH_CONFIG} TEST = ${PATCH_TEST} PATCHCHECK_TYPE = ${PATCH_TEST_TYPE} PATCHCHECK_START = ${PATCH_START1} PATCHCHECK_END = ${PATCH_END} CHECKOUT = ${PATCH_CHECKOUT} BUILD_TYPE = ${DO_BUILD_TYPE} TEST_START IF ${TEST} == patchcheck && ${MULTI} TEST_TYPE = patchcheck MIN_CONFIG = ${PATCH_CONFIG} TEST = ${PATCH_TEST} PATCHCHECK_TYPE = ${PATCH_TEST_TYPE} PATCHCHECK_START = ${PATCH_START} PATCHCHECK_END = ${PATCH_END} CHECKOUT = ${PATCH_CHECKOUT} # Use multi to test different compilers? MAKE_CMD = CC=gcc-4.5.1 make BUILD_TYPE = ${DO_BUILD_TYPE} ue='1'>1space:mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-01-29 13:50:06 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2017-01-29 13:50:06 -0800
commit39cb2c9a316e77f6dfba96c543e55b6672d5a37e (patch)
tree98fe974ee4e20121253de7f61fc8d01bdb3821c1 /tools/testing/selftests/powerpc/dscr/Makefile
parent2c5d9555d6d937966d79d4c6529a5f7b9206e405 (diff)
drm/i915: Check for NULL i915_vma in intel_unpin_fb_obj()
I've seen this trigger twice now, where the i915_gem_object_to_ggtt() call in intel_unpin_fb_obj() returns NULL, resulting in an oops immediately afterwards as the (inlined) call to i915_vma_unpin_fence() tries to dereference it. It seems to be some race condition where the object is going away at shutdown time, since both times happened when shutting down the X server. The call chains were different: - VT ioctl(KDSETMODE, KD_TEXT): intel_cleanup_plane_fb+0x5b/0xa0 [i915] drm_atomic_helper_cleanup_planes+0x6f/0x90 [drm_kms_helper] intel_atomic_commit_tail+0x749/0xfe0 [i915] intel_atomic_commit+0x3cb/0x4f0 [i915] drm_atomic_commit+0x4b/0x50 [drm] restore_fbdev_mode+0x14c/0x2a0 [drm_kms_helper] drm_fb_helper_restore_fbdev_mode_unlocked+0x34/0x80 [drm_kms_helper] drm_fb_helper_set_par+0x2d/0x60 [drm_kms_helper] intel_fbdev_set_par+0x18/0x70 [i915] fb_set_var+0x236/0x460 fbcon_blank+0x30f/0x350 do_unblank_screen+0xd2/0x1a0 vt_ioctl+0x507/0x12a0 tty_ioctl+0x355/0xc30 do_vfs_ioctl+0xa3/0x5e0 SyS_ioctl+0x79/0x90 entry_SYSCALL_64_fastpath+0x13/0x94 - i915 unpin_work workqueue: intel_unpin_work_fn+0x58/0x140 [i915] process_one_work+0x1f1/0x480 worker_thread+0x48/0x4d0 kthread+0x101/0x140 and this patch purely papers over the issue by adding a NULL pointer check and a WARN_ON_ONCE() to avoid the oops that would then generally make the machine unresponsive. Other callers of i915_gem_object_to_ggtt() seem to also check for the returned pointer being NULL and warn about it, so this clearly has happened before in other places. [ Reported it originally to the i915 developers on Jan 8, applying the ugly workaround on my own now after triggering the problem for the second time with no feedback. This is likely to be the same bug reported as https://bugs.freedesktop.org/show_bug.cgi?id=98829 https://bugs.freedesktop.org/show_bug.cgi?id=99134 which has a patch for the underlying problem, but it hasn't gotten to me, so I'm applying the workaround. ] Cc: Daniel Vetter <daniel.vetter@intel.com> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Imre Deak <imre.deak@intel.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'tools/testing/selftests/powerpc/dscr/Makefile')