/* * Copyright (c) 2015 MediaTek, Shunli Wang * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef _DT_BINDINGS_RESET_CONTROLLER_MT2701 #define _DT_BINDINGS_RESET_CONTROLLER_MT2701 /* INFRACFG resets */ #define MT2701_INFRA_EMI_REG_RST 0 #define MT2701_INFRA_DRAMC0_A0_RST 1 #define MT2701_INFRA_FHCTL_RST 2 #define MT2701_INFRA_APCIRQ_EINT_RST 3 #define MT2701_INFRA_APXGPT_RST 4 #define MT2701_INFRA_SCPSYS_RST 5 #define MT2701_INFRA_KP_RST 6 #define MT2701_INFRA_PMIC_WRAP_RST 7 #define MT2701_INFRA_MIPI_RST 8 #define MT2701_INFRA_IRRX_RST 9 #define MT2701_INFRA_CEC_RST 10 #define MT2701_INFRA_EMI_RST 32 #define MT2701_INFRA_DRAMC0_RST 34 #define MT2701_INFRA_TRNG_RST 37 #define MT2701_INFRA_SYSIRQ_RST 38 /* PERICFG resets */ #define MT2701_PERI_UART0_SW_RST 0 #define MT2701_PERI_UART1_SW_RST 1 #define MT2701_PERI_UART2_SW_RST 2 #define MT2701_PERI_UART3_SW_RST 3 #define MT2701_PERI_GCPU_SW_RST 5 #define MT2701_PERI_BTIF_SW_RST 6 #define MT2701_PERI_PWM_SW_RST 8 #define MT2701_PERI_AUXADC_SW_RST 10 #define MT2701_PERI_DMA_SW_RST 11 #define MT2701_PERI_NFI_SW_RST 14 #define MT2701_PERI_NLI_SW_RST 15 #define MT2701_PERI_THERM_SW_RST 16 #define MT2701_PERI_MSDC2_SW_RST 17 #define MT2701_PERI_MSDC0_SW_RST 19 #define MT2701_PERI_MSDC1_SW_RST 20 #define MT2701_PERI_I2C0_SW_RST 22 #define MT2701_PERI_I2C1_SW_RST 23 #define MT2701_PERI_I2C2_SW_RST 24 #define MT2701_PERI_I2C3_SW_RST 25 #define MT2701_PERI_USB_SW_RST 28 #define MT2701_PERI_ETH_SW_RST 29 #define MT2701_PERI_SPI0_SW_RST 33 /* TOPRGU resets */ #define MT2701_TOPRGU_INFRA_RST 0 #define MT2701_TOPRGU_MM_RST 1 #define MT2701_TOPRGU_MFG_RST 2 #define MT2701_TOPRGU_ETHDMA_RST 3 #define MT2701_TOPRGU_VDEC_RST 4 #define MT2701_TOPRGU_VENC_IMG_RST 5 #define MT2701_TOPRGU_DDRPHY_RST 6 #define MT2701_TOPRGU_MD_RST 7 #define MT2701_TOPRGU_INFRA_AO_RST 8 #define MT2701_TOPRGU_CONN_RST 9 #define MT2701_TOPRGU_APMIXED_RST 10 #define MT2701_TOPRGU_HIFSYS_RST 11 #define MT2701_TOPRGU_CONN_MCU_RST 12 #define MT2701_TOPRGU_BDP_DISP_RST 13 /* HIFSYS resets */ #define MT2701_HIFSYS_UHOST0_RST 3 #define MT2701_HIFSYS_UHOST1_RST 4 #define MT2701_HIFSYS_UPHY0_RST 21 #define MT2701_HIFSYS_UPHY1_RST 22 #define MT2701_HIFSYS_PCIE0_RST 24 #define MT2701_HIFSYS_PCIE1_RST 25 #define MT2701_HIFSYS_PCIE2_RST 26 #endif /* _DT_BINDINGS_RESET_CONTROLLER_MT2701 */ e/scsi/scsi.h
diff options
context:
space:
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 /include/scsi/scsi.h
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 'include/scsi/scsi.h')