linux_dsm_epyc7002/drivers/gpu/drm/radeon
Christian König c3b7fe8b8a drm/radeon: multiple ring allocator v3
A startover with a new idea for a multiple ring allocator.
Should perform as well as a normal ring allocator as long
as only one ring does somthing, but falls back to a more
complex algorithm if more complex things start to happen.

We store the last allocated bo in last, we always try to allocate
after the last allocated bo. Principle is that in a linear GPU ring
progression was is after last is the oldest bo we allocated and thus
the first one that should no longer be in use by the GPU.

If it's not the case we skip over the bo after last to the closest
done bo if such one exist. If none exist and we are not asked to
block we report failure to allocate.

If we are asked to block we wait on all the oldest fence of all
rings. We just wait for any of those fence to complete.

v2: We need to be able to let hole point to the list_head, otherwise
    try free will never free the first allocation of the list. Also
    stop calling radeon_fence_signalled more than necessary.

v3: Don't free allocations without considering them as a hole,
    otherwise we might lose holes. Also return ENOMEM instead of ENOENT
    when running out of fences to wait for. Limit the number of holes
    we try for each ring to 3.

Signed-off-by: Christian König <deathsimple@vodafone.de>
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-05-09 17:22:39 +01:00
..
reg_srcs drm/radeon/kms: add htile support to the cs checker v3 2012-03-26 09:53:22 +01:00
.gitignore
atom-bits.h
atom-names.h
atom-types.h
atom.c drm/radeon/kms: fix fans after resume 2012-04-02 11:07:42 +01:00
atom.h drm/radeon/kms: fix fans after resume 2012-04-02 11:07:42 +01:00
atombios_crtc.c Linux 3.4-rc6 2012-05-07 14:02:14 +02:00
atombios_dp.c drm/radeon/kms: improve bpc handling (v2) 2012-04-24 09:50:12 +01:00
atombios_encoders.c Merge tag 'drm-intel-next-2012-04-23' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-05-02 09:22:29 +01:00
atombios_i2c.c drm/radeon/kms/dce3+: add support for hw i2c using atom 2012-02-03 09:38:05 +00:00
atombios.h drm/radeon/kms: upstream power table updates 2012-03-21 06:55:50 +00:00
avivod.h [rfc] drm/radeon/kms: pm debugging check for vbl. 2010-02-23 09:46:21 +10:00
cayman_blit_shaders.c bug.h: add include of it to various implicit C users 2012-02-29 17:15:08 -05:00
cayman_blit_shaders.h drm/radeon/kms: add blit support for cayman (v2) 2011-05-26 09:19:31 +10:00
evergreen_blit_kms.c drm/radeon/kms: cayman gpu init updates for trinity 2012-03-21 06:55:57 +00:00
evergreen_blit_shaders.c bug.h: add include of it to various implicit C users 2012-02-29 17:15:08 -05:00
evergreen_blit_shaders.h drm/radeon/kms: add drm blit support for evergreen 2010-10-06 11:46:30 +10:00
evergreen_cs.c drm/radeon/kms: add htile support to the cs checker v3 2012-03-26 09:53:22 +01:00
evergreen_reg.h drm/radeon/kms: get rid of hdmi_config_offset 2012-05-01 10:57:52 +01:00
evergreen.c drm/radeon: make forcing ring activity a common function 2012-05-03 09:16:38 +01:00
evergreend.h drm/radeon/kms: add register definitions for audio 2012-04-24 09:50:13 +01:00
Kconfig drm/radeon/kms: clean up the radeon kms Kconfig 2011-05-26 09:22:05 +10:00
Makefile drm/radeon/kms: add support for CP setup on SI 2012-03-21 06:55:54 +00:00
mkregtable.c radeon mkregtable: Add missing fclose() calls 2011-02-14 09:22:54 +10:00
ni_reg.h drm/radeon/kms: add ni_reg.h 2011-01-07 14:11:38 +10:00
ni.c drm/radeon: remove cayman_gpu_is_lockup 2012-05-03 09:16:42 +01:00
nid.h drm/radeon/kms: Update evergreen functions for trinity 2012-03-21 06:55:57 +00:00
ObjectID.h drm/radeon/kms: Upstream ObjectID.h updates 2012-03-21 06:55:49 +00:00
r100_track.h drm/radeon: Remove more bogus inlines in the radeon driver. 2011-10-18 09:44:52 +01:00
r100.c drm/radeon: Original Radeons had PCI GART, not PCIe GART. 2012-05-03 09:18:10 +01:00
r100d.h drm/radeon: Definition of R_0003C2_GENMO_WT seems wrong 2010-12-21 12:55:33 +10:00
r200.c drm/radeon/kms: add r1xx/r2xx CS support for tiled textures 2012-02-03 09:41:35 +00:00
r300_cmdbuf.c drm/radeon: Move more code out of line 2011-10-18 09:53:05 +01:00
r300_reg.h Fix common misspellings 2011-03-31 11:26:23 -03:00
r300.c drm/radeon: remove r300_gpu_is_lockup 2012-05-03 09:16:40 +01:00
r300d.h drm/radeon/kms: manage r300 CMASK RAM access and allow CMASK clear 2011-01-06 13:00:45 +10:00
r420.c drm/radeon: use central function for IB testing 2012-05-03 09:16:10 +01:00
r420d.h
r500_reg.h drm/radeon/kms: add wait_for_vblank asic callback 2012-02-27 14:46:13 +00:00
r520.c drm/radeon: use central function for IB testing 2012-05-03 09:16:10 +01:00
r520d.h
r600_audio.c drm/radeon/kms: move audio params to separated struct 2012-05-01 10:57:36 +01:00
r600_blit_kms.c drm/radeon/kms: common definitions for blit copy code 2012-02-03 09:31:14 +00:00
r600_blit_shaders.c The following text was taken from the original review request: 2012-03-24 10:08:39 -07:00
r600_blit_shaders.h drm/radeon: add some missing copyright headers 2010-09-13 20:26:04 +10:00
r600_blit.c drm/radeon: drop inlines in r600_blit.c 2011-10-18 09:44:38 +01:00
r600_cp.c drm/radeon: replace udelay with mdelay for long timeouts 2012-04-10 10:21:00 +01:00
r600_cs.c drm/radeon/kms: add htile support to the cs checker v3 2012-03-26 09:53:22 +01:00
r600_hdmi.c drm/radeon/kms/hdmi: use relative offsets, official regs 2012-05-01 10:58:14 +01:00
r600_reg.h drm/radeon/kms/hdmi: use relative offsets, official regs 2012-05-01 10:58:14 +01:00
r600.c Merge branch 'for-airlied' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-05-07 16:09:35 +01:00
r600d.h drm/radeon/kms/hdmi: use relative offsets, official regs 2012-05-01 10:58:14 +01:00
radeon_acpi.c drm/radeon/kms: Skip ACPI call to ATIF when possible 2011-12-01 09:57:34 +00:00
radeon_agp.c drm/radeon/kms: fix agp mode setup on cards that use pcie bridges 2010-08-20 08:48:55 +10:00
radeon_asic.c drm/radeon: remove cayman_gpu_is_lockup 2012-05-03 09:16:42 +01:00
radeon_asic.h drm/radeon: remove cayman_gpu_is_lockup 2012-05-03 09:16:42 +01:00
radeon_atombios.c drm/radeon/kms: update power table parsing for SI 2012-03-21 06:55:52 +00:00
radeon_atpx_handler.c drm/radeon: fix use after free in ATRM bios reading code. 2012-02-02 15:25:16 +00:00
radeon_benchmark.c drm/radeon/kms: reorganize copy callbacks 2012-02-29 10:14:14 +00:00
radeon_bios.c drm/radeon: finish getting bios earlier 2012-01-24 17:34:32 +00:00
radeon_blit_common.h drm/radeon/kms: common definitions for blit copy code 2012-02-03 09:31:14 +00:00
radeon_clocks.c drm/radeon: replace udelay with mdelay for long timeouts 2012-04-10 10:21:00 +01:00
radeon_combios.c drm/radeon: add connector table for SAM440ep embedded board 2012-05-03 09:19:08 +01:00
radeon_connectors.c Linux 3.4-rc6 2012-05-07 14:02:14 +02:00
radeon_cp.c drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
radeon_cs.c drm/radeon: make sa bo a stand alone object 2012-05-09 17:22:35 +01:00
radeon_cursor.c drm/radeon: Drop radeon_gem_object_(un)pin. 2012-03-20 08:47:50 +00:00
radeon_device.c drm/radeon: rework locking ring emission mutex in fence deadlock detection v2 2012-05-09 17:22:20 +01:00
radeon_display.c drm/radeon: add a missing entry to encoder_names 2012-04-27 08:29:50 +01:00
radeon_drv.c drm/radeon: make lockup timeout a module param 2012-05-03 09:16:35 +01:00
radeon_drv.h Fix common misspellings 2011-03-31 11:26:23 -03:00
radeon_encoders.c drm/radeon/kms: update duallink checks for DCE6 2012-03-21 06:55:58 +00:00
radeon_family.h drm/radeon/kms: add trinity (TN) chip family 2012-03-21 06:55:55 +00:00
radeon_fb.c drm/radeon: Restrict offset for legacy display engine. 2012-03-20 08:47:46 +00:00
radeon_fence.c drm/radeon: use one wait queue for all rings add fence_wait_any v2 2012-05-09 17:22:38 +01:00
radeon_gart.c drm/radeon: define new SA interface v3 2012-05-09 17:22:37 +01:00
radeon_gem.c drm/radeon: rework recursive gpu reset handling 2012-05-03 09:16:31 +01:00
radeon_i2c.c drm/radeon: only add the mm i2c bus if the hw_i2c module param is set 2012-04-11 09:36:53 +01:00
radeon_ioc32.c
radeon_irq_kms.c Linux 3.4-rc6 2012-05-07 14:02:14 +02:00
radeon_irq.c drm/radeon: Move more code out of line 2011-10-18 09:53:05 +01:00
radeon_kms.c drm/radeon: enable pci bus mastering after card is initialised (v2) 2012-04-12 09:27:47 +01:00
radeon_legacy_crtc.c drm/radeon: Restrict offset for legacy display engine. 2012-03-20 08:47:46 +00:00
radeon_legacy_encoders.c drm/radeon: replace udelay with mdelay for long timeouts 2012-04-10 10:21:00 +01:00
radeon_legacy_tv.c drm/radeon: Move more code out of line 2011-10-18 09:53:05 +01:00
radeon_mem.c drivers: use kzalloc/kcalloc instead of 'kmalloc+memset', where possible 2011-07-25 20:57:13 -07:00
radeon_mode.h drm/radeon: add connector table for SAM440ep embedded board 2012-05-03 09:19:08 +01:00
radeon_object.c drm/radeon: Don't dereference possibly-NULL pointer. 2012-04-02 11:09:50 +01:00
radeon_object.h drm/radeon: define new SA interface v3 2012-05-09 17:22:37 +01:00
radeon_pm.c drm/radeon: rework locking ring emission mutex in fence deadlock detection v2 2012-05-09 17:22:20 +01:00
radeon_reg.h drm/radeon/kms: fix up atom HPD gpio parsing for DCE6 2012-03-21 06:55:50 +00:00
radeon_ring.c drm/radeon: multiple ring allocator v3 2012-05-09 17:22:39 +01:00
radeon_sa.c drm/radeon: multiple ring allocator v3 2012-05-09 17:22:39 +01:00
radeon_semaphore.c drm/radeon: define new SA interface v3 2012-05-09 17:22:37 +01:00
radeon_state.c drm/radeon: Move more code out of line 2011-10-18 09:53:05 +01:00
radeon_test.c drm/radeon/kms: add missing ring ready check in sync tests 2012-01-05 10:02:42 +00:00
radeon_trace_points.c drm/radeon: add initial tracepoint support. 2010-12-16 14:37:47 +10:00
radeon_trace.h drm/radeon: add initial tracepoint support. 2010-12-16 14:37:47 +10:00
radeon_ttm.c drm/radeon: fix a bug with the ring syncing code 2012-05-03 09:16:27 +01:00
radeon.h drm/radeon: multiple ring allocator v3 2012-05-09 17:22:39 +01:00
rs100d.h
rs400.c drm/radeon: use central function for IB testing 2012-05-03 09:16:10 +01:00
rs400d.h
rs600.c drm/radeon: use central function for IB testing 2012-05-03 09:16:10 +01:00
rs600d.h drm/radeon/kms: add register definitions for audio 2012-04-24 09:50:13 +01:00
rs690.c drm/radeon: use central function for IB testing 2012-05-03 09:16:10 +01:00
rs690d.h drm/radeon/kms: display watermark updates (v2) 2010-03-31 14:54:47 +10:00
rv200d.h
rv250d.h
rv350d.h
rv515.c drm/radeon: use central function for IB testing 2012-05-03 09:16:10 +01:00
rv515d.h drm/radeon/kms: simplify & improve GPU reset V2 2010-04-06 11:21:11 +10:00
rv770.c Merge branch 'for-airlied' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-05-07 16:09:35 +01:00
rv770d.h drm/radeon/kms: add register definitions for audio 2012-04-24 09:50:13 +01:00
si_blit_shaders.c The following text was taken from the original review request: 2012-03-24 10:08:39 -07:00
si_blit_shaders.h drm/radeon/kms: add support for CP setup on SI 2012-03-21 06:55:54 +00:00
si_reg.h drm/radeon/kms: fix up atom HPD gpio parsing for DCE6 2012-03-21 06:55:50 +00:00
si.c Merge branch 'for-airlied' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-05-07 16:09:35 +01:00
sid.h drm/radeon/kms: add support for interrupts on SI 2012-03-21 06:55:54 +00:00