linux/include/drm
Honglei Huang ba40db3697 drm/gpusvm: split MM state flags out of drm_gpusvm_pages_flags
drm_gpusvm_pages_flags currently mixes two status:
  - MM / virtual-address state: whether the range has been (partially)
    unmapped by the Linux MM, these follow the lifetime of the VMA and
    are a single per VA range fact.
  - Device mapping state: has_devmem_pages and has_dma_mapping,
    which describe the current page mapping status held by device
    itself.

Keeping both on the pages object blurs the semantics of the
abstraction of pages and VA range. So move the MM state flags onto the
range, and keep drm_gpusvm_pages_flags strictly for mapping state.

  - Introduce drm_gpusvm_range_flags { migrate_devmem, unmapped,
    partial_unmap } on drm_gpusvm_range.
  - Shrink drm_gpusvm_pages_flags to just has_devmem_pages and
    has_dma_mapping.

Side effect: drivers now need to check the unmap flags in the driver
itself to avoid handling the unmapped pages.

Mirror that bit onto drm_gpusvm_pages so the framework can
still short circuit drm_gpusvm_get_pages() under the notifier lock, and
make drm_gpusvm_range_set_unmapped() propagate it to the backing pages.
This follows Matt's review fixup for the v0 series; see the Link below.

Like drm_gpusvm_pages_flags, drm_gpusvm_range_flags unions its bits with
a u16 __flags member. Build the new value in a local copy and publish it
with a single WRITE_ONCE() on __flags, and have the lockless readers use
READ_ONCE(), so concurrent bitfield access stays data-race free and KCSAN
quiet.

Suggested-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: 623f6a50c0
Signed-off-by: Honglei Huang <honghuan@amd.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20260630102127.392396-2-honghuan@amd.com
2026-07-09 04:12:42 -07:00
..
amd drm/amd/amdgpu: Add helper functions for isp buffers 2025-07-16 16:17:35 -04:00
bridge drm/bridge: analogix_dp: Add support for RK3576 2026-06-02 22:09:03 +02:00
clients
display drm-misc-next for 7.3: 2026-07-07 09:34:04 +10:00
intel UAPI Changes: 2026-07-07 15:19:56 +10:00
ttm Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
amd_asic_type.h
drm_accel.h drm: move drm based debugfs funcs to drm_debugfs.c 2025-07-04 15:58:22 +02:00
drm_atomic_helper.h drm/atomic-helper: Add HDMI bridge output bus formats helper 2026-06-09 21:03:50 +01:00
drm_atomic_state_helper.h drm/atomic-state-helper: Remove drm_atomic_helper_bridge_reset() 2026-06-22 11:24:57 +02:00
drm_atomic_uapi.h drm/atomic: track individual colorop updates 2026-06-10 07:13:36 -03:00
drm_atomic.h drm/atomic: Expand atomic_create_state expectations for drm_private_obj 2026-05-29 11:41:49 +02:00
drm_audio_component.h
drm_auth.h
drm_blend.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_bridge_connector.h
drm_bridge_helper.h drm/bridge: Add helper to reset bridge pipeline 2025-03-20 14:45:48 +01:00
drm_bridge.h drm/bridge: Remove atomic_reset support 2026-06-22 11:25:00 +02:00
drm_buddy.h gpu: Move DRM buddy allocator one level up (part two) 2026-02-06 11:38:35 +10:00
drm_cache.h
drm_client_event.h drm/client: Pass force parameter to client restore 2025-11-25 08:43:46 +01:00
drm_client.h drm/client: Export drm_client_buffer_create() 2026-03-03 09:28:31 +01:00
drm_color_mgmt.h drm: Add helper to extract lut from struct drm_color_lut32 2025-11-26 23:03:35 +01:00
drm_colorop.h drm-misc-next for 7.3: 2026-07-06 17:38:49 +10:00
drm_connector.h drm-misc-next for 7.3: 2026-07-06 17:38:49 +10:00
drm_crtc_helper.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_crtc.h drm/crtc: Add new atomic_create_state callback 2026-05-29 11:41:53 +02:00
drm_damage_helper.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_debugfs_crc.h drm/crc: Fix typo in doc for drm_crtc_crc 2026-05-04 14:26:53 +02:00
drm_debugfs.h drm: Remove DRIVER_GEM_GPUVA feature flag 2026-05-29 19:03:10 +02:00
drm_device.h drm/gem: Make the GEM LRU lock part of drm_device 2026-05-18 15:16:47 +02:00
drm_drv.h drm: Remove DRIVER_GEM_GPUVA feature flag 2026-05-29 19:03:10 +02:00
drm_dumb_buffers.h drm/dumb-buffers: Provide helper to set pitch and size 2025-09-29 13:57:43 +02:00
drm_edid.h Revert "drm/edid: add CTA Video Format Data Block support" 2026-05-06 11:22:15 +02:00
drm_eld.h
drm_encoder.h drm/encoder: add mutex to protect the bridge chain 2026-04-16 09:08:42 +02:00
drm_exec.h drm/exec, drm/xe, drm/amdgpu: Add an accessor for struct drm_exec::ticket 2026-05-25 10:45:38 +02:00
drm_fb_dma_helper.h
drm_fb_helper.h drm/amdgpu: fix build for CONFIG_DRM_FBDEV_EMULATION=n 2026-04-28 15:43:04 -04:00
drm_fbdev_dma.h
drm_fbdev_shmem.h
drm_fbdev_ttm.h
drm_file.h drm/syncobj: Convert syncobj idr to xarray 2025-12-18 09:05:30 +00:00
drm_fixed.h drm/fixed: fix kernel-doc for drm_sm2fixp() 2026-06-30 12:31:20 +03:00
drm_flip_work.h
drm_format_helper.h drm/format-helper: Remove drm_fb_blit() 2025-09-23 15:06:06 +02:00
drm_fourcc.h drm: Pass pixel_format+modifier directly to drm_get_format_info() 2025-07-16 20:01:13 +03:00
drm_framebuffer.h drm/framebuffer: Acquire internal references on GEM handles 2025-07-09 14:03:28 +02:00
drm_gem_atomic_helper.h
drm_gem_dma_helper.h
drm_gem_framebuffer_helper.h drm/gem/afbc: Eliminate redundant drm_get_format_info() 2025-07-16 20:06:22 +03:00
drm_gem_shmem_helper.h Merge drm/drm-next into drm-misc-next 2026-06-30 10:16:00 +02:00
drm_gem_ttm_helper.h
drm_gem_vram_helper.h drm/gem-vram: Un-export pin helpers 2025-05-30 09:47:28 +02:00
drm_gem.h drm: Remove DRIVER_GEM_GPUVA feature flag 2026-05-29 19:03:10 +02:00
drm_gpusvm.h drm/gpusvm: split MM state flags out of drm_gpusvm_pages_flags 2026-07-09 04:12:42 -07:00
drm_gpuvm.h drm/gpuvm: Fix comment to reflect remap operation operand status 2026-07-03 23:32:55 +02:00
drm_ioctl.h
drm_kunit_helpers.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_lease.h
drm_managed.h drm/managed: fix drmm_add_action() kernel-doc 2026-06-03 11:24:52 +02:00
drm_mipi_dbi.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_mipi_dsi.h drm/mipi-dsi: add flag for sending all DSC slices in one packet 2026-06-07 02:31:01 +03:00
drm_mm.h drm/mm: replace drm_print.h include with a forward declaration 2025-10-31 10:34:56 +02:00
drm_mode_config.h drm/mode-config: Create drm_mode_config_create_initial_state() 2026-05-29 11:42:45 +02:00
drm_mode_object.h drm/mode_object: add drm_object_immutable_property_get_value() 2026-01-14 02:18:31 +02:00
drm_modes.h drm/modes: Add DRM_MODE_MATCH_TIMINGS_VRR 2026-06-24 18:54:10 +03:00
drm_modeset_helper_vtables.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_modeset_helper.h drm: Allow the caller to pass in the format info to drm_helper_mode_fill_fb_struct() 2025-07-16 20:04:45 +03:00
drm_modeset_lock.h
drm_module.h
drm_of.h drm/of: Implement drm_of_get_panel_orientation() 2026-07-08 13:44:40 +02:00
drm_pagemap_util.h drm/pagemap_util: Add a utility to assign an owner to a set of interconnected gpus 2025-12-23 10:00:47 +01:00
drm_pagemap.h drm/pagemap: Drop source_peer_migrates flag and assume true 2026-04-12 20:51:11 -07:00
drm_panel.h drm/panel: Use drm_of_get_panel_orientation() 2026-07-08 13:54:58 +02:00
drm_panic.h drm/panic: Add a private field to struct drm_scanout_buffer 2025-06-27 11:48:22 +02:00
drm_pciids.h
drm_plane_helper.h
drm_plane.h drm/plane: Add new atomic_create_state callback 2026-05-29 11:41:52 +02:00
drm_prime.h drm/shmem-helper: Import dmabuf without mapping its sg_table 2025-06-03 09:21:01 +02:00
drm_print.h drm/print: describe 6th & 9th bit of drm.debug 2026-06-03 11:24:52 +02:00
drm_privacy_screen_consumer.h
drm_privacy_screen_driver.h
drm_privacy_screen_machine.h
drm_probe_helper.h drm/probe-helper: Do not fail from drmm_kms_helper_poll_init() 2025-03-24 09:31:03 +01:00
drm_property.h drm/atomic: add max_size check to drm_property_replace_blob_from_id() 2026-01-14 02:18:31 +02:00
drm_ras_genl_family.h drm/ras: Introduce the DRM RAS infrastructure over generic netlink 2026-03-05 19:38:55 -05:00
drm_ras.h drm/ras: include linux/types.h in drm_ras.h 2026-06-30 15:51:24 +03:00
drm_rect.h
drm_self_refresh_helper.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_simple_kms_helper.h drm/simple-kms: Deprecate simple-kms helpers 2026-03-25 15:05:22 +01:00
drm_suballoc.h drm/sa: Split drm_suballoc_new() into SA alloc and init helpers 2026-02-20 10:54:02 -08:00
drm_syncobj.h
drm_sysfs.h
drm_util.h
drm_utils.h drm: panel-backlight-quirks: Add brightness mask quirk 2025-09-03 10:23:01 -05:00
drm_vblank_helper.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_vblank_work.h
drm_vblank.h drm/vblank: add return value to drm_crtc_wait_one_vblank() 2025-12-11 16:55:36 +02:00
drm_vma_manager.h
drm_writeback.h
gpu_scheduler.h drm/sched: Remove relic from entity docu 2026-07-06 10:53:51 +02:00
gud.h
Makefile kbuild: Let kernel-doc.py use PYTHON3 override 2025-11-08 19:42:22 -07:00
spsc_queue.h drm/sched: Increment job count before swapping tail spsc queue 2025-07-01 16:14:47 -07:00
task_barrier.h