linux/drivers/gpu/drm/amd/amdgpu
Andres Rodriguez 795f2813e6 drm/amdgpu: implement lru amdgpu_queue_mgr policy for compute v4
Use an LRU policy to map usermode rings to HW compute queues.

Most compute clients use one queue, and usually the first queue
available. This results in poor pipe/queue work distribution when
multiple compute apps are running. In most cases pipe 0 queue 0 is
the only queue that gets used.

In order to better distribute work across multiple HW queues, we adopt
a policy to map the usermode ring ids to the LRU HW queue.

This fixes a large majority of multi-app compute workloads sharing the
same HW queue, even though 7 other queues are available.

v2: use ring->funcs->type instead of ring->hw_ip
v3: remove amdgpu_queue_mapper_funcs
v4: change ring_lru_list_lock to spinlock, grab only once in lru_get()

Signed-off-by: Andres Rodriguez <andresx7@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2017-05-31 16:49:02 -04:00
..
amdgpu.h drm/amdgpu: implement lru amdgpu_queue_mgr policy for compute v4 2017-05-31 16:49:02 -04:00
amdgpu_acp.c
amdgpu_acp.h
amdgpu_acpi.c drm/amdgpu: Remove checking for atombios 2017-01-27 11:12:39 -05:00
amdgpu_afmt.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
amdgpu_amdkfd.c drm/amdgpu: avoid KIQ clashing with compute or KFD queues v2 2017-05-31 16:48:58 -04:00
amdgpu_amdkfd.h drm/amdgpu: rename rdev to adev 2017-05-31 16:48:50 -04:00
amdgpu_amdkfd_gfx_v7.c drm/amdgpu: remove duplicate magic constants from amdgpu_amdkfd_gfx*.c 2017-05-31 16:48:55 -04:00
amdgpu_amdkfd_gfx_v8.c drm/amdgpu: remove duplicate magic constants from amdgpu_amdkfd_gfx*.c 2017-05-31 16:48:55 -04:00
amdgpu_atombios.c drm/amdgpu: fix to clear ASIC INIT COMPLETE bit on resuming phase 2017-04-28 17:32:13 -04:00
amdgpu_atombios.h drm/amdgpu: Read vram width from integrated system info table 2017-04-04 14:42:40 -04:00
amdgpu_atomfirmware.c drm/amdgpu/atomfirmware: add function to update engine hang status 2017-05-10 11:23:17 -04:00
amdgpu_atomfirmware.h drm/amdgpu/atomfirmware: add function to update engine hang status 2017-05-10 11:23:17 -04:00
amdgpu_atpx_handler.c gpu: drm: amd/radeon: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-29 23:53:24 -04:00
amdgpu_benchmark.c drm/amdgpu: Fix use of interruptible waiting 2017-04-28 17:33:07 -04:00
amdgpu_bios.c amdgpu: detect if we are using atomfirmware or atombios for vbios (v2) 2017-03-29 23:54:16 -04:00
amdgpu_bo_list.c drm/amdgpu: Avoid using signed integer to store pointer value 2017-04-06 13:28:07 -04:00
amdgpu_cgs.c drm/amdgpu: remove unused and mostly unimplemented CGS functions v2 2017-04-28 17:33:12 -04:00
amdgpu_connectors.c
amdgpu_connectors.h
amdgpu_cs.c drm/amdgpu: untie user ring ids from kernel ring ids v6 2017-05-31 16:49:01 -04:00
amdgpu_ctx.c drm/amdgpu: untie user ring ids from kernel ring ids v6 2017-05-31 16:49:01 -04:00
amdgpu_device.c drm/amdgpu: implement lru amdgpu_queue_mgr policy for compute v4 2017-05-31 16:49:02 -04:00
amdgpu_display.c Revert "drm/amdgpu: Refactor flip into prepare submit and submit. (v3)" 2017-05-01 11:21:42 -04:00
amdgpu_dpm.c drm: Use pr_cont where appropriate 2017-03-29 23:53:24 -04:00
amdgpu_dpm.h drm/amdgpu: implement read_sensor() for pre-powerplay chips 2017-03-29 23:53:03 -04:00
amdgpu_drv.c drm/amdgpu: enable lbpw on raven 2017-05-31 14:16:35 -04:00
amdgpu_drv.h
amdgpu_encoders.c
amdgpu_fb.c drm/amdgpu: fix null point error when rmmod amdgpu. 2017-05-25 16:13:12 -04:00
amdgpu_fence.c drm/amdgpu/SRIOV:implement guilty job TDR for(V2) 2017-05-24 17:40:40 -04:00
amdgpu_gart.c drm/amdgpu: extend lock range for race condition when gpu reset 2017-05-24 17:40:31 -04:00
amdgpu_gds.h
amdgpu_gem.c drm/amdgpu: cleanup VM manager init/fini 2017-05-24 18:17:58 -04:00
amdgpu_gfx.c drm/amdgpu: simplify allocation of scratch regs 2017-01-27 11:13:32 -05:00
amdgpu_gfx.h
amdgpu_gtt_mgr.c drm/amdgpu: add gtt print like vram when dump mm table V2 2017-04-28 17:32:53 -04:00
amdgpu_i2c.c drm/amdgpu: Remove checking for atombios 2017-01-27 11:12:39 -05:00
amdgpu_i2c.h
amdgpu_ib.c drm/amdgpu: add a ring func for vcn start command 2017-05-24 17:41:31 -04:00
amdgpu_ih.c
amdgpu_ih.h drm/amdgpu: add vcn ip block functions (v2) 2017-05-24 17:41:23 -04:00
amdgpu_ioc32.c
amdgpu_irq.c drm/amdgpu:don't invoke srio-gpu-reset in gpu-reset (v2) 2017-05-24 17:40:37 -04:00
amdgpu_irq.h drm/amdgpu: switch ih handling to two levels (v3) 2017-03-29 23:53:37 -04:00
amdgpu_job.c drm/amdgpu: add dep_sync for amdgpu job 2017-05-24 18:14:49 -04:00
amdgpu_kms.c drm/amdgpu: add an INFO query for monitoring VRAM CPU page faults 2017-05-24 18:24:38 -04:00
amdgpu_mn.c drm/amdgpu: use a 64bit interval tree for VM management v2 2017-04-04 13:40:32 -04:00
amdgpu_mode.h Merge tag 'drm-misc-next-2017-05-16' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-05-18 12:57:06 +10:00
amdgpu_object.c drm/amdgpu: add an INFO query for monitoring VRAM CPU page faults 2017-05-24 18:24:38 -04:00
amdgpu_object.h drm/amdgpu: validate shadow before restoring from it 2017-04-28 17:33:08 -04:00
amdgpu_pll.c
amdgpu_pll.h
amdgpu_pm.c drm/amdgpu: refine amdgpu pwm1_enable sysfs interface. 2017-05-10 13:36:21 -04:00
amdgpu_pm.h drm/amdgpu: add parse clock gating state 2017-01-27 11:13:07 -05:00
amdgpu_powerplay.c drm/amdgpu/powerplay/raven: add smu block and enable powerplay 2017-05-24 17:41:55 -04:00
amdgpu_powerplay.h
amdgpu_prime.c drm/amdgpu: Make amdgpu_bo_reserve use uninterruptible waits for cleanup 2017-04-28 17:33:16 -04:00
amdgpu_psp.c drm/amdgpu: register the psp v10 function pointers at psp sw_init 2017-05-24 17:41:20 -04:00
amdgpu_psp.h drm/amdgpu: add psp v10 ip block 2017-05-24 17:41:19 -04:00
amdgpu_queue_mgr.c drm/amdgpu: implement lru amdgpu_queue_mgr policy for compute v4 2017-05-31 16:49:02 -04:00
amdgpu_ring.c drm/amdgpu: implement lru amdgpu_queue_mgr policy for compute v4 2017-05-31 16:49:02 -04:00
amdgpu_ring.h drm/amdgpu: implement lru amdgpu_queue_mgr policy for compute v4 2017-05-31 16:49:02 -04:00
amdgpu_sa.c drm/amdgpu: Make amdgpu_bo_reserve use uninterruptible waits for cleanup 2017-04-28 17:33:16 -04:00
amdgpu_sync.c
amdgpu_sync.h
amdgpu_test.c drm/amdgpu: remove unused sync testing 2017-03-29 23:53:29 -04:00
amdgpu_trace.h drm/amdgpu: trace vm hub during flush as well v2 2017-04-28 17:32:21 -04:00
amdgpu_trace_points.c
amdgpu_ttm.c drm/amd/amdgpu: Return error if initiating read out of range on vram 2017-05-24 18:23:55 -04:00
amdgpu_ttm.h drm/amdgpu: user BO priority instead of self coding it (v2) 2017-01-27 12:20:33 -05:00
amdgpu_ucode.c drm/amdgpu: add Raven chip id case for ucode 2017-05-24 17:40:54 -04:00
amdgpu_ucode.h drm/amdgpu: add gpu_info firmware (v3) 2017-05-24 17:39:35 -04:00
amdgpu_uvd.c drm/amdgpu: use a 64bit interval tree for VM management v2 2017-04-04 13:40:32 -04:00
amdgpu_uvd.h drm/amdgpu: add uvd enc run queue 2017-03-29 23:53:46 -04:00
amdgpu_vce.c drm/amdgpu/vce4: enable ring & ib test for sriov 2017-04-28 17:32:16 -04:00
amdgpu_vce.h drm/amdgpu: move amdgpu_vce structure to vce header 2017-03-29 23:53:44 -04:00
amdgpu_vcn.c drm/amdgpu: update vcn decode create msg 2017-05-24 17:41:47 -04:00
amdgpu_vcn.h drm/amdgpu: add vcn enc ring type and functions 2017-05-24 17:41:41 -04:00
amdgpu_virt.c drm/amdgpu:kiq reg access need timeout(v2) 2017-05-24 17:40:17 -04:00
amdgpu_virt.h drm/amdgpu:use job* to replace voluntary 2017-05-24 17:40:38 -04:00
amdgpu_vm.c drm/amdgpu: stop joining VM PTE updates 2017-05-31 14:16:39 -04:00
amdgpu_vm.h drm/amdgpu: cleanup VM manager init/fini 2017-05-24 18:17:58 -04:00
amdgpu_vram_mgr.c drm/amdgpu: use TTM_PL_FLAG_CONTIGUOUS v2 2017-04-04 23:34:27 -04:00
atom.c drm/amdgpu: move atom scratch setup into amdgpu_atombios.c 2017-03-29 23:54:17 -04:00
atom.h drm/amdgpu: move atom scratch setup into amdgpu_atombios.c 2017-03-29 23:54:17 -04:00
atombios_crtc.c
atombios_crtc.h
atombios_dp.c
atombios_dp.h
atombios_encoders.c drm/amdgpu: Remove checking for atombios 2017-01-27 11:12:39 -05:00
atombios_encoders.h
atombios_i2c.c
atombios_i2c.h
ci_dpm.c drm/amdgpu/ci: disable mclk switching for high refresh rates (v2) 2017-05-24 17:39:30 -04:00
ci_dpm.h drm/amd/amdgpu: add power profile support for CI 2017-03-29 23:52:52 -04:00
ci_smc.c
cik.c drm/amdgpu: drop support for untouched registers 2017-05-24 17:40:01 -04:00
cik.h
cik_dpm.h
cik_ih.c drm/amdgpu/ih: store the full context id 2017-03-29 23:53:37 -04:00
cik_ih.h
cik_sdma.c drm/amdgpu: fix vm pte pde flags to 64-bit for sdma (v3) 2017-03-29 23:55:50 -04:00
cik_sdma.h
cikd.h drm/amd: Spelling s/SDMA_WRTIE_SUB_OPCODE_TILED/SDMA_WRITE_SUB_OPCODE_TILED/ 2017-03-29 23:53:21 -04:00
clearstate_ci.h
clearstate_defs.h
clearstate_gfx9.h drm/amdgpu: add gfx9 clearstate header 2017-03-29 23:54:30 -04:00
clearstate_si.h drm/amdgpu: move misc si headers into amdgpu 2017-01-27 12:20:41 -05:00
clearstate_vi.h
cz_ih.c drm/amdgpu/ih: store the full context id 2017-03-29 23:53:37 -04:00
cz_ih.h
dce_v6_0.c drm/amd/amdgpu: Tidy up static int dce_v6_0_get_num_crtc() 2017-05-24 18:22:30 -04:00
dce_v6_0.h
dce_v8_0.c drm/amdgpu: Make amdgpu_bo_reserve use uninterruptible waits for cleanup 2017-04-28 17:33:16 -04:00
dce_v8_0.h
dce_v10_0.c drm/amdgpu: Make amdgpu_bo_reserve use uninterruptible waits for cleanup 2017-04-28 17:33:16 -04:00
dce_v10_0.h
dce_v11_0.c drm/amdgpu: Make amdgpu_bo_reserve use uninterruptible waits for cleanup 2017-04-28 17:33:16 -04:00
dce_v11_0.h
dce_virtual.c drm/amdgpu: Make amdgpu_bo_reserve use uninterruptible waits for cleanup 2017-04-28 17:33:16 -04:00
dce_virtual.h
gfx_v6_0.c drm/amd/amdgpu: Drop commented out stub function 2017-05-24 18:22:17 -04:00
gfx_v6_0.h
gfx_v7_0.c drm/amdgpu: condense mqd programming sequence 2017-05-31 16:48:59 -04:00
gfx_v7_0.h drm/amdgpu: unify MQD programming sequence for kfd and amdgpu v2 2017-05-31 16:48:48 -04:00
gfx_v8_0.c drm/amdgpu: workaround tonga HW bug in HQD programming sequence 2017-05-31 16:49:00 -04:00
gfx_v8_0.h drm/amdgpu: unify MQD programming sequence for kfd and amdgpu v2 2017-05-31 16:48:48 -04:00
gfx_v9_0.c drm/amdgpu: avoid KIQ clashing with compute or KFD queues v2 2017-05-31 16:48:58 -04:00
gfx_v9_0.h drm/amdgpu: implement GFX 9.0 support (v2) 2017-03-29 23:54:45 -04:00
gfxhub_v1_0.c drm/amdgpu/gmc9: set mc vm fb offset for raven 2017-05-24 17:41:08 -04:00
gfxhub_v1_0.h drm/amdgpu/gmc9: set mc vm fb offset for raven 2017-05-24 17:41:08 -04:00
gmc_v6_0.c drm/amdgpu: cleanup adjust_mc_addr handling v4 2017-05-31 14:16:35 -04:00
gmc_v6_0.h
gmc_v7_0.c drm/amdgpu: cleanup adjust_mc_addr handling v4 2017-05-31 14:16:35 -04:00
gmc_v7_0.h
gmc_v8_0.c drm/amdgpu: cleanup adjust_mc_addr handling v4 2017-05-31 14:16:35 -04:00
gmc_v8_0.h
gmc_v9_0.c drm/amdgpu: cleanup adjust_mc_addr handling v4 2017-05-31 14:16:35 -04:00
gmc_v9_0.h drm/amdgpu: Add GMC 9.0 support (v2) 2017-03-29 23:54:44 -04:00
iceland_ih.c drm/amdgpu/ih: store the full context id 2017-03-29 23:53:37 -04:00
iceland_ih.h
iceland_sdma_pkt_open.h
Kconfig
kv_dpm.c drm/amdgpu: switch ih handling to two levels (v3) 2017-03-29 23:53:37 -04:00
kv_dpm.h
kv_smc.c
Makefile drm/amdgpu: untie user ring ids from kernel ring ids v6 2017-05-31 16:49:01 -04:00
mmhub_v1_0.c drm/amdgpu: remove unnecessary debug message 2017-05-31 14:16:32 -04:00
mmhub_v1_0.h drm/amdgpu: Add GMC 9.0 support (v2) 2017-03-29 23:54:44 -04:00
mmsch_v1_0.h drm/amdgpu/vce4: move mm table constructions functions into mmsch header file 2017-04-28 17:32:57 -04:00
mxgpu_ai.c drm/amdgpu:only call flr_work under infinite timeout 2017-05-24 17:40:39 -04:00
mxgpu_ai.h drm/amdgpu/vega10:timeout set to equal with VI 2017-04-06 13:28:06 -04:00
mxgpu_vi.c drm/amdgpu:only call flr_work under infinite timeout 2017-05-24 17:40:39 -04:00
mxgpu_vi.h drm/amdgpu/virt: increase mailbox timeout to 5000ms 2017-03-29 23:52:38 -04:00
nbio_v6_1.c drm/amdgpu: add get_clockgating callback for nbio v6.1 2017-03-29 23:55:19 -04:00
nbio_v6_1.h drm/amdgpu: add get_clockgating callback for nbio v6.1 2017-03-29 23:55:19 -04:00
nbio_v7_0.c drm/amdgpu: add nbio7 support 2017-05-24 17:41:16 -04:00
nbio_v7_0.h drm/amdgpu: add nbio7 support 2017-05-24 17:41:16 -04:00
ObjectID.h
ppsmc.h
psp_gfx_if.h drm/amdgpu: add PSP driver for vega10 (v2) 2017-03-29 23:54:48 -04:00
psp_v3_1.c drm/amdgpu: Destroy psp ring in hw_fini 2017-04-28 17:32:46 -04:00
psp_v3_1.h drm/amdgpu: Destroy psp ring in hw_fini 2017-04-28 17:32:46 -04:00
psp_v10_0.c drm/amdgpu: add psp v10 function callback for raven 2017-05-24 17:41:19 -04:00
psp_v10_0.h drm/amdgpu: add psp v10 function callback for raven 2017-05-24 17:41:19 -04:00
r600_dpm.h
sdma_v2_4.c drm/amdgpu: fix vm pte pde flags to 64-bit for sdma (v3) 2017-03-29 23:55:50 -04:00
sdma_v2_4.h
sdma_v3_0.c drm/amdgpu/sdma3: correct wptr initialization for sdma 2017-05-24 18:18:15 -04:00
sdma_v3_0.h
sdma_v4_0.c drm/amdgpu: cleanup adjust_mc_addr handling v4 2017-05-31 14:16:35 -04:00
sdma_v4_0.h drm/amdgpu: add SDMA v4.0 implementation (v2) 2017-03-29 23:54:45 -04:00
si.c drm/amdgpu: drop support for untouched registers 2017-05-24 17:40:01 -04:00
si.h
si_dma.c drm/amdgpu: fix vm pte pde flags to 64-bit for sdma (v3) 2017-03-29 23:55:50 -04:00
si_dma.h
si_dpm.c drm/amdgpu: switch ih handling to two levels (v3) 2017-03-29 23:53:37 -04:00
si_dpm.h
si_enums.h drm/amdgpu: update HAINAN_GB_ADDR_CONFIG_GOLDEN 2017-02-08 17:25:02 -05:00
si_ih.c drm/amdgpu/ih: store the full context id 2017-03-29 23:53:37 -04:00
si_ih.h
si_smc.c drm/amdgpu: move misc si headers into amdgpu 2017-01-27 12:20:41 -05:00
sid.h drm/amdgpu: move misc si headers into amdgpu 2017-01-27 12:20:41 -05:00
sislands_smc.h
soc15.c drm/amdgpu/powerplay/raven: add smu block and enable powerplay 2017-05-24 17:41:55 -04:00
soc15.h drm/amdgpu: apply nbio7 for Raven (v3) 2017-05-24 17:41:17 -04:00
soc15_common.h drm/amd/amdgpu: Introduce new read/write macros for SOC15 2017-04-28 16:37:59 -04:00
soc15d.h drm/amdgpu/gfx9: move define to header file 2017-05-24 17:40:29 -04:00
tonga_ih.c drm/amdgpu: increase IH ring buffer size to avoid overflow 2017-03-29 23:53:53 -04:00
tonga_ih.h
tonga_sdma_pkt_open.h
uvd_v4_2.c drm/amdgpu: various cleanups for uvd/vce. 2017-04-04 13:40:33 -04:00
uvd_v4_2.h
uvd_v5_0.c drm/amdgpu: various cleanups for uvd/vce. 2017-04-04 13:40:33 -04:00
uvd_v5_0.h
uvd_v6_0.c drm/amdgpu: various cleanups for uvd/vce. 2017-04-04 13:40:33 -04:00
uvd_v6_0.h
uvd_v7_0.c drm/amdgpu: cleanup adjust_mc_addr handling v4 2017-05-31 14:16:35 -04:00
uvd_v7_0.h drm/amdgpu: add initial uvd 7.0 support for vega10 2017-03-29 23:54:47 -04:00
vce_v2_0.c drm/amdgpu: various cleanups for uvd/vce. 2017-04-04 13:40:33 -04:00
vce_v2_0.h
vce_v3_0.c drm/amdgpu: Program ring for vce instance 1 at its register space 2017-05-31 14:16:37 -04:00
vce_v3_0.h
vce_v4_0.c drm/amdgpu: cleanup adjust_mc_addr handling v4 2017-05-31 14:16:35 -04:00
vce_v4_0.h drm/amdgpu: add initial vce 4.0 support for vega10 2017-03-29 23:54:47 -04:00
vcn_v1_0.c drm/amdgpu: cleanup adjust_mc_addr handling v4 2017-05-31 14:16:35 -04:00
vcn_v1_0.h drm/amdgpu: add vcn ip block and type 2017-05-24 17:41:27 -04:00
vega10_ih.c drm/amdgpu: apply nbio7 for Raven (v3) 2017-05-24 17:41:17 -04:00
vega10_ih.h drm/amdgpu: add vega10 interrupt handler 2017-03-29 23:54:46 -04:00
vega10_sdma_pkt_open.h drm/amdgpu: add SDMA 4.0 packet header 2017-03-29 23:54:30 -04:00
vi.c drm/amdgpu/virt: change the place of virt_init_setting 2017-05-24 17:40:04 -04:00
vi.h drm/amdgpu/gfx8: move CE&DE meta data structure to vi_structs.h 2017-03-29 23:53:31 -04:00
vi_dpm.h drm/amdgpu: cleanup useless extern functions 2017-01-27 11:12:43 -05:00
vid.h drm/amdgpu:new PM4 entry for VI/AI 2017-05-24 17:40:26 -04:00