/* * Copyright (c) 2013 Samsung Electronics Co., Ltd. * Author: Andrzej Hajda * * 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. * * Device Tree binding constants for Exynos5250 clock controller. */ #ifndef _DT_BINDINGS_CLOCK_EXYNOS_5250_H #define _DT_BINDINGS_CLOCK_EXYNOS_5250_H /* core clocks */ #define CLK_FIN_PLL 1 #define CLK_FOUT_APLL 2 #define CLK_FOUT_MPLL 3 #define CLK_FOUT_BPLL 4 #define CLK_FOUT_GPLL 5 #define CLK_FOUT_CPLL 6 #define CLK_FOUT_EPLL 7 #define CLK_FOUT_VPLL 8 #define CLK_ARM_CLK 9 /* gate for special clocks (sclk) */ #define CLK_SCLK_CAM_BAYER 128 #define CLK_SCLK_CAM0 129 #define CLK_SCLK_CAM1 130 #define CLK_SCLK_GSCL_WA 131 #define CLK_SCLK_GSCL_WB 132 #define CLK_SCLK_FIMD1 133 #define CLK_SCLK_MIPI1 134 #define CLK_SCLK_DP 135 #define CLK_SCLK_HDMI 136 #define CLK_SCLK_PIXEL 137 #define CLK_SCLK_AUDIO0 138 #define CLK_SCLK_MMC0 139 #define CLK_SCLK_MMC1 140 #define CLK_SCLK_MMC2 141 #define CLK_SCLK_MMC3 142 #define CLK_SCLK_SATA 143 #define CLK_SCLK_USB3 144 #define CLK_SCLK_JPEG 145 #define CLK_SCLK_UART0 146 #define CLK_SCLK_UART1 147 #define CLK_SCLK_UART2 148 #define CLK_SCLK_UART3 149 #define CLK_SCLK_PWM 150 #define CLK_SCLK_AUDIO1 151 #define CLK_SCLK_AUDIO2 152 #define CLK_SCLK_SPDIF 153 #define CLK_SCLK_SPI0 154 #define CLK_SCLK_SPI1 155 #define CLK_SCLK_SPI2 156 #define CLK_DIV_I2S1 157 #define CLK_DIV_I2S2 158 #define CLK_SCLK_HDMIPHY 159 #define CLK_DIV_PCM0 160 /* gate clocks */ #define CLK_GSCL0 256 #define CLK_GSCL1 257 #define CLK_GSCL2 258 #define CLK_GSCL3 259 #define CLK_GSCL_WA 260 #define CLK_GSCL_WB 261 #define CLK_SMMU_GSCL0 262 #define CLK_SMMU_GSCL1 263 #define CLK_SMMU_GSCL2 264 #define CLK_SMMU_GSCL3 265 #define CLK_MFC 266 #define CLK_SMMU_MFCL 267 #define CLK_SMMU_MFCR 268 #define CLK_ROTATOR 269 #define CLK_JPEG 270 #define CLK_MDMA1 271 #define CLK_SMMU_ROTATOR 272 #define CLK_SMMU_JPEG 273 #define CLK_SMMU_MDMA1 274 #define CLK_PDMA0 275 #define CLK_PDMA1 276 #define CLK_SATA 277 #define CLK_USBOTG 278 #define CLK_MIPI_HSI 279 #define CLK_SDMMC0 280 #define CLK_SDMMC1 281 #define CLK_SDMMC2 282 #define CLK_SDMMC3 283 #define CLK_SROMC 284 #define CLK_USB2 285 #define CLK_USB3 286 #define CLK_SATA_PHYCTRL 287 #define CLK_SATA_PHYI2C 288 #define CLK_UART0 289 #define CLK_UART1 290 #define CLK_UART2 291 #define CLK_UART3 292 #define CLK_UART4 293 #define CLK_I2C0 294 #define CLK_I2C1 295 #define CLK_I2C2 296 #define CLK_I2C3 297 #define CLK_I2C4 298 #define CLK_I2C5 299 #define CLK_I2C6 300 #define CLK_I2C7 301 #define CLK_I2C_HDMI 302 #define CLK_ADC 303 #define CLK_SPI0 304 #define CLK_SPI1 305 #define CLK_SPI2 306 #define CLK_I2S1 307 #define CLK_I2S2 308 #define CLK_PCM1 309 #define CLK_PCM2 310 #define CLK_PWM 311 #define CLK_SPDIF 312 #define CLK_AC97 313 #define CLK_HSI2C0 314 #define CLK_HSI2C1 315 #define CLK_HSI2C2 316 #define CLK_HSI2C3 317 #define CLK_CHIPID 318 #define CLK_SYSREG 319 #define CLK_PMU 320 #define CLK_CMU_TOP 321 #define CLK_CMU_CORE 322 #define CLK_CMU_MEM 323 #define CLK_TZPC0 324 #define CLK_TZPC1 325 #define CLK_TZPC2 326 #define CLK_TZPC3 327 #define CLK_TZPC4 328 #define CLK_TZPC5 329 #define CLK_TZPC6 330 #define CLK_TZPC7 331 #define CLK_TZPC8 332 #define CLK_TZPC9 333 #define CLK_HDMI_CEC 334 #define CLK_MCT 335 #define CLK_WDT 336 #define CLK_RTC 337 #define CLK_TMU 338 #define CLK_FIMD1 339 #define CLK_MIE1 340 #define CLK_DSIM0 341 #define CLK_DP 342 #define CLK_MIXER 343 #define CLK_HDMI 344 #define CLK_G2D 345 #define CLK_MDMA0 346 #define CLK_SMMU_MDMA0 347 #define CLK_SSS 348 #define CLK_G3D 349 #define CLK_SMMU_TV 350 #define CLK_SMMU_FIMD1 351 #define CLK_SMMU_2D 352 #define CLK_SMMU_FIMC_ISP 353 #define CLK_SMMU_FIMC_DRC 354 #define CLK_SMMU_FIMC_SCC 355 #define CLK_SMMU_FIMC_SCP 356 #define CLK_SMMU_FIMC_FD 357 #define CLK_SMMU_FIMC_MCU 358 #define CLK_SMMU_FIMC_ODC 359 #define CLK_SMMU_FIMC_DIS0 360 #define CLK_SMMU_FIMC_DIS1 361 #define CLK_SMMU_FIMC_3DNR 362 #define CLK_SMMU_FIMC_LITE0 363 #define CLK_SMMU_FIMC_LITE1 364 #define CLK_CAMIF_TOP 365 /* mux clocks */ #define CLK_MOUT_HDMI 1024 #define CLK_MOUT_GPLL 1025 #define CLK_MOUT_ACLK200_DISP1_SUB 1026 #define CLK_MOUT_ACLK300_DISP1_SUB 1027 /* must be greater than maximal clock id */ #define CLK_NR_CLKS 1028 #endif /* _DT_BINDINGS_CLOCK_EXYNOS_5250_H */ input type='submit' value='reload'/>
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/dt-bindings/dma/at91.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/dt-bindings/dma/at91.h')