freebsd-dev/sys/dev/drm2
Warner Losh 1c7d15b030 Make device_busy/unbusy work w/o Giant held
The vast majority of the busy/unbusy users in the tree don't acquire
Giant before calling device_busy/unbusy. However, if multiple threads
are opening a file, say, that causes the device to busy/unbusy, then we
can race to the root marking things busy. Move to using a reference
count to keep track of how many times a device_t has been made busy. Use
that count to make the same decisions that we'd make with the old device
state.

Note: gpiopps.c uses D_TRACKCLOSE. Others do as well. However, there's a
known race with closes that will be corrected for all the drivers that
do this in a future commit.

Sponsored by:		Netflix
Reviewed by:		hselasky, jhb
Differential Revision:	https://reviews.freebsd.org/D26284
2021-11-30 15:18:01 -07:00
..
ttm Convert consumers to vm_page_alloc_noobj_contig() 2021-10-19 21:22:56 -04:00
drm_agpsupport.c
drm_atomic.h
drm_auth.c
drm_buffer.c
drm_buffer.h
drm_bufs.c
drm_context.c
drm_core.h
drm_crtc_helper.c
drm_crtc_helper.h
drm_crtc.c
drm_crtc.h
drm_dma.c
drm_dp_helper.c
drm_dp_helper.h
drm_dp_iic_helper.c
drm_drv.c
drm_edid_modes.h
drm_edid.c
drm_edid.h
drm_fb_helper.c
drm_fb_helper.h
drm_fixed.h
drm_fops.c Make device_busy/unbusy work w/o Giant held 2021-11-30 15:18:01 -07:00
drm_fourcc.h
drm_gem_names.c
drm_gem_names.h
drm_gem.c
drm_global.c
drm_global.h
drm_hashtab.c
drm_hashtab.h
drm_ioc32.c
drm_ioctl.c
drm_irq.c
drm_linux_list_sort.c
drm_linux_list.h
drm_lock.c
drm_mem_util.h
drm_memory.c
drm_mm.c
drm_mm.h
drm_mode.h
drm_modes.c
drm_os_freebsd.c
drm_os_freebsd.h
drm_pci.c
drm_pciids.h
drm_platform.c
drm_sarea.h
drm_scatter.c
drm_stub.c
drm_sysctl.c
drm_vm.c
drm.h
drmP.h