linux/include/drm
Chris Wilson 2214ddc2fd drm/mm: Allow drm_mm_initialized() to be used outside of the locks
Mark up the potential racy read in drm_mm_initialized(), as we want a
cheap and cheerful check:

[  121.098731] BUG: KCSAN: data-race in _i915_gem_object_create_stolen [i915] / rm_hole
[  121.098766]
[  121.098789] write (marked) to 0xffff8881f01ed330 of 8 bytes by task 3568 on cpu 3:
[  121.098831]  rm_hole+0x64/0x140
[  121.098860]  drm_mm_insert_node_in_range+0x3d3/0x6c0
[  121.099254]  i915_gem_stolen_insert_node_in_range+0x91/0xe0 [i915]
[  121.099646]  _i915_gem_object_create_stolen+0x9d/0x100 [i915]
[  121.100047]  i915_gem_object_create_region+0x7a/0xa0 [i915]
[  121.100451]  i915_gem_object_create_stolen+0x33/0x50 [i915]
[  121.100849]  intel_engine_create_ring+0x1af/0x280 [i915]
[  121.101242]  __execlists_context_alloc+0xce/0x3d0 [i915]
[  121.101635]  execlists_context_alloc+0x25/0x40 [i915]
[  121.102030]  intel_context_alloc_state+0xb6/0xf0 [i915]
[  121.102420]  __intel_context_do_pin+0x1ff/0x220 [i915]
[  121.102815]  i915_gem_do_execbuffer+0x46b4/0x4c20 [i915]
[  121.103211]  i915_gem_execbuffer2_ioctl+0x2c3/0x580 [i915]
[  121.103244]  drm_ioctl_kernel+0xe4/0x120
[  121.103269]  drm_ioctl+0x297/0x4c7
[  121.103296]  ksys_ioctl+0x89/0xb0
[  121.103321]  __x64_sys_ioctl+0x42/0x60
[  121.103349]  do_syscall_64+0x6e/0x2c0
[  121.103377]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[  121.103403]
[  121.103426] read to 0xffff8881f01ed330 of 8 bytes by task 3109 on cpu 1:
[  121.103819]  _i915_gem_object_create_stolen+0x30/0x100 [i915]
[  121.104228]  i915_gem_object_create_region+0x7a/0xa0 [i915]
[  121.104631]  i915_gem_object_create_stolen+0x33/0x50 [i915]
[  121.105025]  intel_engine_create_ring+0x1af/0x280 [i915]
[  121.105420]  __execlists_context_alloc+0xce/0x3d0 [i915]
[  121.105818]  execlists_context_alloc+0x25/0x40 [i915]
[  121.106202]  intel_context_alloc_state+0xb6/0xf0 [i915]
[  121.106595]  __intel_context_do_pin+0x1ff/0x220 [i915]
[  121.106985]  i915_gem_do_execbuffer+0x46b4/0x4c20 [i915]
[  121.107375]  i915_gem_execbuffer2_ioctl+0x2c3/0x580 [i915]
[  121.107409]  drm_ioctl_kernel+0xe4/0x120
[  121.107437]  drm_ioctl+0x297/0x4c7
[  121.107464]  ksys_ioctl+0x89/0xb0
[  121.107489]  __x64_sys_ioctl+0x42/0x60
[  121.107511]  do_syscall_64+0x6e/0x2c0
[  121.107535]  entry_SYSCALL_64_after_hwframe+0x44/0xa9

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20200309121529.16497-1-chris@chris-wilson.co.uk
2020-03-16 10:31:21 +00:00
..
bridge drm/bridge: synopsys: dw-hdmi: allow ycbcr420 modes for >= 0x200a 2020-03-10 10:51:24 +01:00
i2c
ttm drm/ttm: rework BO delayed delete. v2 2020-02-12 13:03:27 +01:00
amd_asic_type.h drm/amdgpu: Add a kernel parameter for specifying the asic type 2019-09-16 09:54:25 -05:00
drm_agpsupport.h drm/agp: Remove unused function drm_agp_bind_pages 2019-07-15 18:11:30 +02:00
drm_atomic_helper.h drm/bridge: Add the necessary bits to support bus format negotiation 2020-01-31 16:39:53 +01:00
drm_atomic_state_helper.h drm/bridge: Add a drm_bridge_state object 2020-01-31 16:00:21 +01:00
drm_atomic_uapi.h
drm_atomic.h drm/bridge: Fix the bridge kernel doc 2020-02-18 16:50:45 +01:00
drm_audio_component.h Prep patches + headers for the mei-hdcp/i915 component interfaces 2019-02-20 11:53:48 +02:00
drm_auth.h drm: make drm/drm_auth.h self contained 2019-05-27 18:05:44 +02:00
drm_blend.h
drm_bridge_connector.h drm: Add helper to create a connector for a chain of bridges 2020-02-26 13:31:41 +02:00
drm_bridge.h drm/bridge: Extend bridge API to disable connector creation 2020-02-26 13:31:23 +02:00
drm_cache.h MIPS: Loongson64: Rename CPU TYPES 2019-10-31 15:03:10 -07:00
drm_client.h drm/client: Rename _force to _locked 2020-02-11 15:03:08 +01:00
drm_color_mgmt.h drm: Inline drm_color_lut_extract() 2019-11-29 21:29:17 +02:00
drm_connector.h drm/edid: Add function to parse EDID descriptors for monitor range 2020-03-11 13:13:00 -07:00
drm_crtc_helper.h drm: Split out drm_probe_helper.h 2019-01-24 13:20:42 +01:00
drm_crtc.h drm: Add get_vblank_timestamp() to struct drm_crtc_funcs 2020-02-13 13:08:13 +01:00
drm_damage_helper.h drm/damage-helper: Add drm_atomic_helper_damage_merged() 2019-01-17 10:56:54 +01:00
drm_debugfs_crc.h
drm_debugfs.h drm: drm_debugfs.h self-contained 2019-06-10 22:30:24 +02:00
drm_device.h drm: Avoid drm_global_mutex for simple inc/dec of dev->open_count 2020-01-24 17:41:34 +00:00
drm_displayid.h drm/edid: parse CEA blocks embedded in DisplayID 2019-06-25 14:32:26 +10:00
drm_dp_dual_mode_helper.h
drm_dp_helper.h Linux 5.6-rc2 2020-02-17 10:34:34 +01:00
drm_dp_mst_helper.h drm/dp_mst: Convert drm_dp_mst_topology_mgr.is_waiting_for_dwn_reply to bitfield 2020-03-13 14:52:35 -04:00
drm_drv.h drm: Clean-up VBLANK-related callbacks in struct drm_driver 2020-02-13 13:10:10 +01:00
drm_dsc.h drm/dsc: Split DSC PPS and SDP header initialisations 2019-03-05 13:24:34 -05:00
drm_edid.h drm/edid: Name the detailed monitor range flags 2020-03-11 13:12:38 -07:00
drm_encoder_slave.h
drm_encoder.h drm/bridge: Document the drm_encoder.bridge_chain field as private 2020-02-26 13:31:20 +02:00
drm_fb_cma_helper.h drm/fb-cma-helpers: Fix include issue 2020-01-09 17:33:41 +01:00
drm_fb_helper.h drm/fb-helper: Remove drm_fb_helper add, add_all and remove connector functions 2020-03-06 14:19:58 +01:00
drm_file.h drm: Release filp before global lock 2020-01-24 17:41:34 +00:00
drm_fixed.h
drm_flip_work.h
drm_format_helper.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
drm_fourcc.h drm/fb: Extend format_info member arrays to handle four planes 2020-01-07 13:16:08 +02:00
drm_framebuffer.h drm/fb: document dirty helper better 2019-06-11 18:02:48 +02:00
drm_gem_cma_helper.h
drm_gem_framebuffer_helper.h drm/fb: remove unused function: drm_gem_fbdev_fb_create() 2019-07-21 19:32:38 +02:00
drm_gem_shmem_helper.h Linux 5.4-rc7 2019-11-14 05:53:10 +10:00
drm_gem_ttm_helper.h drm/ttm: add drm_gem_ttm_mmap() 2019-10-17 13:59:16 +02:00
drm_gem_vram_helper.h drm/vram: Add helpers to validate a display mode's memory requirements 2020-02-06 10:32:54 +01:00
drm_gem.h drm: call drm_gem_object_funcs.mmap with fake offset 2019-12-06 11:18:11 +01:00
drm_hashtab.h
drm_hdcp.h drm/hdcp: fix DRM_HDCP_2_KSV_COUNT_2_LSBITS 2020-03-04 06:35:07 +05:30
drm_ioctl.h drm/ioctl: Ditch DRM_UNLOCKED except for the legacy vblank ioctl 2019-06-21 19:13:10 +02:00
drm_irq.h
drm_lease.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
drm_legacy.h drm: Remove the dma_alloc_coherent wrapper for internal usage 2020-02-04 23:57:26 +00:00
drm_mipi_dbi.h drm/mipi_dbi: Add support for display offsets 2020-01-19 18:07:08 +01:00
drm_mipi_dsi.h drm/dsi: add helpers for DSI compression mode and PPS packets 2019-11-07 15:00:16 +02:00
drm_mm.h drm/mm: Allow drm_mm_initialized() to be used outside of the locks 2020-03-16 10:31:21 +00:00
drm_mode_config.h drm: Add Content protection type property 2019-08-06 13:14:07 +05:30
drm_mode_object.h
drm_modes.h drm: drop unused drm_display_mode.private 2020-02-15 21:15:46 +01:00
drm_modeset_helper_vtables.h drm: drop unused drm_crtc callback 2020-02-15 21:15:17 +01:00
drm_modeset_helper.h drm: remove drmP.h from drm_modeset_helper.h 2019-02-07 21:48:34 +01:00
drm_modeset_lock.h drm: Add drm_modeset_lock_assert_held() 2019-09-19 21:37:59 +03:00
drm_of.h drm: of: Fix linking when CONFIG_OF is not set 2020-01-09 10:40:58 +10:00
drm_panel.h drm/drm_panel: fix export of drm_panel_of_backlight, try #3 2020-01-12 21:16:30 +01:00
drm_pci.h drm/pci: Unexport drm_get_pci_dev 2020-03-06 16:08:24 +01:00
drm_pciids.h
drm_plane_helper.h
drm_plane.h drm/plane: Clarify our expectations for src/dst rectangles 2019-10-10 15:49:34 +02:00
drm_prime.h drm/prime: Remove duplicate forward declaration 2019-09-16 17:32:51 +02:00
drm_print.h drm/print: clean up RATELIMITED macros 2020-02-15 14:39:35 +01:00
drm_probe_helper.h drm: Split out drm_probe_helper.h 2019-01-24 13:20:42 +01:00
drm_property.h
drm_rect.h drm/selftests: Add drm_rect selftests 2019-11-28 13:33:43 +02:00
drm_scdc_helper.h drm/scdc: Fix typo in bit definition of SCDC_STATUS_FLAGS 2019-11-04 17:58:46 +01:00
drm_self_refresh_helper.h drm/atomic: fix self-refresh helpers crtc state dereference 2019-11-06 13:00:21 -05:00
drm_simple_kms_helper.h drm/simple-kms: Add drm_simple_encoder_{init,create}() 2020-03-02 09:22:35 +01:00
drm_syncobj.h drm/syncobj: add new drm_syncobj_add_point interface v4 2019-04-01 12:05:53 +02:00
drm_sysfs.h drm: uevent for connector status change 2019-08-06 13:16:54 +05:30
drm_util.h drm: Move EXPORT_SYMBOL_FOR_TESTS_ONLY under a separate Kconfig 2019-11-07 21:22:15 +00:00
drm_utils.h drm: export drm_timeout_abs_to_jiffies 2019-03-07 12:00:30 -06:00
drm_vblank.h drm: Remove legacy version of get_scanout_position() 2020-02-13 13:10:10 +01:00
drm_vma_manager.h drm: increase drm mmap_range size to 1TB 2019-04-24 16:20:23 -05:00
drm_writeback.h drm: writeback: Add job prepare and cleanup operations 2019-03-18 17:24:38 +02:00
gma_drm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 335 2019-06-05 17:37:06 +02:00
gpu_scheduler.h drm/amdgpu: fix doc by clarifying sched_list definition 2020-01-27 16:46:44 -05:00
i915_component.h drm/i915/tgl: Add additional ports for Tiger Lake 2019-07-11 16:31:14 -07:00
i915_drm.h drm: Move port definition back to i915 header 2019-08-30 14:08:26 +05:30
i915_mei_hdcp_interface.h drm: Extend I915 mei interface for transcoder info 2019-08-30 14:08:28 +05:30
i915_pciids.h drm/i915/cml: Separate U series pci id from origianl list. 2019-12-12 22:15:16 +02:00
intel_lpe_audio.h
intel-gtt.h
spsc_queue.h
task_barrier.h drm: Add Reusable task barrier. 2019-12-18 16:09:12 -05:00