Up to [cvs.NetBSD.org] / src / sys / external / bsd / drm2 / dist / drm / i915
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
i915: Avoid freeing anything under a spin lock.
i915: Use new rb_move to relocate the active tree.
Revert "i915: Defer final wakeup on active until after retirement." This reverts i915_active.c 1.11. ref->retire might free the object, so touching it is not allowed -- that would use-after-free. Linux uses the object only for its address with wake_up_var. The reason I made this change was that I guessed i915_active_wait has to wait until after ref->retire finishes -- after all, Linux seems to defer the wakeup until then. However, even the Linux code doesn't guarantee this, because i915_active_wait could be called _during_ ref->retire, and would witness ref->count == 0, and would not wait until it has completed in that case. So maybe my guess was wrong, and it is OK for i915_active_wait to return while ref->retire is still in flight -- I don't see any logic that obviously requires it to wait for ref->retire, in any case. Or maybe something does rely on i915_active_wait to wait for ref->retire to finish, in which case we need a different mechanism for i915_active_release itself to wait until i915_active_retire has woken up, without dereferencing ref since it might be dead after ref->retire.
i915: Defer final wakeup on active until after retirement. Not sure what I was thinking when I moved this earlier!
i915: Fix memory leak in active node allocation under #ifdef NetBSD. Potential fix for PR kern/56573.
i915: Allow duplicates in active tree, sorted by kva. Upstream looks like it uses insertion order, but that's not really convenient.
i915: Abuse abstractions gruesomely but with less lock screwitude.
i915: Destroy locks in i915_active objects on free.
i915: Missed a spot in flailing the bad thing going wrong.
i915: Flail harder to work around the bad thing that went wrong.
i915: intel_engine_pm.c and i915_active.c ...with a little less heinous abuse of C, and an attempt to disentangle the tentacular abstraction violations rampant in these components
Hack i915_vma.c: rbtree, unmap by pa rather than vm object, PRIx64.
Merge linux-drm-v5-6-rc3
Import drm from Linux v5.6-rc3 (commit f8788d86ab28f61f7b46eb6be375f8a726783636) drivers/gpu/drm -> sys/external/bsd/drm2/dist/drm include/drm -> sys/external/bsd/drm2/dist/include/drm include/uapi/drm -> sys/external/bsd/drm2/dist/include/uapi/drm GPL exclusions in dist/drm: - amd/amdgpu/amdgpu_atpx_handler.c - arc/ - arm/ - armada/ - aspeed/ - atmel-hlcdc/ - bochs/ - bridge/ - cirrus/ - drm_dp_cec.c - drm_dp_mst_topology_internal.h - drm_edid_load.c - drm_format_helper.c - drm_gem_cma_helper.c - drm_gem_framebuffer_helper.c - drm_gem_shmem_helper.c - drm_gem_ttm_helper.c - drm_gem_vram_helper.c - drm_hdcp.c - drm_lease.c - drm_mipi_dbi.c - drm_simple_kms_helper.c - drm_sysfs.c - drm_trace.h - drm_vram_helper_common.c - drm_writeback.c - etnaviv/ - exynos/ - fsl-dcu/ - gma500/ - hisilicon/ - i2c/tda9950.c - i2c/tda998x_drv.c - i915/gt/selftest_context.c - i915/gt/selftest_engine.c - i915/gt/selftest_engine.h - i915/gt/selftest_engine_cs.c - i915/gt/selftest_engine_pm.c - i915/i915_trace.h - i915/selftests/i915_live_selftests.h - i915/selftests/i915_mock_selftests.h - i915/selftests/i915_perf_selftests.h - i915/selftests/lib_sw_fence.h - imx/ - ingenic/ - lima/ - mcde/ - mediatek/ - meson/ - mgag200/ - msm/ - mxsfb/ - omapdrm/ - panel/ - panfrost/ - pl111/ - radeon/radeon_atpx_handler.c - rcar-du/ - rockchip/ - selftests/drm_cmdline_selftests.h - selftests/drm_modeset_selftests.h - selftests/test-drm_cmdline_parser.c - selftests/test-drm_damage_helper.c - selftests/test-drm_dp_mst_helper.c - selftests/test-drm_format.c - selftests/test-drm_framebuffer.c - selftests/test-drm_modeset_common.c - selftests/test-drm_modeset_common.h - selftests/test-drm_plane_helper.c - selftests/test-drm_rect.c - shmobile/ - sti/ - stm/ - sun4i/ - tegra/ - tilcdc/ - tiny/ - tve200/ - udl/ - v3d/ - vc4/ - virtio/virtgpu_trace.h - virtio/virtgpu_trace_points.c - vkms/ - vmwgfx/device_include/vmware_pack_begin.h - vmwgfx/device_include/vmware_pack_end.h - zte/ Exceptions -- these all appear to be files to which someone added an SPDX license header automatically by a script that is not aware of the default MIT licensing under drivers/gpu/drm: - ast/ast_dp501.c - ast/ast_dram_tables.h - lib/drm_random.c - lib/drm_random.h - i915/display/intel_acpi.c - i915/selftests/mock_gem_device.h - i915/selftests/i915_mock_selftests.h - i915/selftests/i915_live_selftests.h - r128/ati_pcigart.h - selftests/drm_mm_selftests.h - selftests/test-drm_mm.c - vmwgfx/device_include/vm_basic_types.h GPL exclusions in dist/include/drm: - bridge - drm_client.h - drm_fb_cma_helper.h - drm_format_helper.h - drm_gem_cma_helper.h - drm_gem_shmem_helper.h - drm_gem_ttm_helper.h - drm_gem_vram_helper.h - drm_lease.h - drm_mipi_dbi.h - drm_mipi_dsi.h - drm_of.h - drm_simple_kms_helper.h - drm_sysfs.h - drm_writeback.h - gma_drm.h - i2c/tda998x.h - i915_mei_hdcp_interface.h - intel-gtt.h Exceptions: - drm_agpsupport.h - was in original drm; wrong spdx header auto-added GPL exclusions in dist/include/uapi/drm: - armada_drm.h - etnaviv_drm.h - exynos_drm.h - lima_drm.h - omap_drm.h Exceptions: - i810_drm.h - was in original drm; spdx header is wrong
Initial revision