OpenCloudOS-Kernel/drivers/gpu/drm/radeon
Oded Gabbay ceae881bfa drm/radeon: Impl. new gtt allocate/free functions
This patch adds the implementation of the gtt interface functions.

The allocate function will allocate a single bo, pin and map it to kernel
memory. It will return the gpu address and cpu ptr as arguments.

v2:

The bulk of the allocations in the GART is for MQDs. MQDs represent active
user-mode queues, which are on the current runlist. It is important to
remember that active queues doesn't necessarily mean scheduled/running
queues, especially if there is over-subscription of queues or more than a
single HSA process.

Because the scheduling of the user-mode queues is done by the CP firmware,
amdkfd doesn't have any indication if the queue is scheduled or not. If the
CP will try to schedule a queue, and its MQD is not present, this will
probably stuck the CP permanently, as it will load garbage from the GART
(the address of the MQD is given to the CP inside the runlist packet).

In addition, there are a couple of small allocations which also should
always be pinned - runlist packets (2 packets) and HPDs. runlist packets can
be quite large, depending on number of processes and queues.

This new allocate function represents the short/mid-term solution of limiting
the total memory consumption to around 4MB by default.

The long-term solution is to create a mechanism through which radeon/ttm can
ask amdkfd to clear GART/VRAM memory due to memory pressure.
Then, amdkfd will preempt the running queues and wait until the memory pressure
is over. After that, amdkfd will reschedule the queues.

Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
Reviewed-by: Alexey Skidanov <Alexey.skidanov@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2015-01-09 22:26:07 +02:00
..
reg_srcs drm/radeon: allow geom rings to be setup on r600/r700 (v2) 2014-02-06 12:13:52 +10:00
.gitignore
Kconfig drm/radeon: Deprecate UMS support v2 2013-01-31 16:24:47 -05:00
Makefile drm/radeon: split semaphore and sync object handling v2 2014-11-20 13:00:16 -05:00
ObjectID.h drm/radeon: upstream ObjectID.h updates (v2) 2013-06-26 16:11:34 -04:00
atom-bits.h
atom-names.h
atom-types.h
atom.c drm/radeon: add locking around atombios scratch space usage 2014-11-11 17:22:26 -05:00
atom.h drm/radeon: add locking around atombios scratch space usage 2014-11-11 17:22:26 -05:00
atombios.h drm/radeon: atombios.h updates for hawaii 2013-11-08 12:33:45 -05:00
atombios_crtc.c drm/radeon: Re-show the cursor after a modeset 2014-12-03 14:26:44 -05:00
atombios_dp.c drm/radeon: add locking around atombios scratch space usage 2014-11-11 17:22:26 -05:00
atombios_encoders.c drm/radeon: consolidate duplicate encode is digital function 2014-10-01 09:00:02 -04:00
atombios_i2c.c drm/radeon: add locking around atombios scratch space usage 2014-11-11 17:22:26 -05:00
avivod.h
btc_dpm.c drm/radeon: reduce sparse false positive warnings 2014-10-16 18:34:10 -04:00
btc_dpm.h Revert "drm/radeon: drop btc_get_max_clock_from_voltage_dependency_table" 2014-10-13 11:34:13 -04:00
btcd.h drm/radeon/dpm: use the driver state for dpm debugfs 2014-02-06 12:22:46 -05:00
cayman_blit_shaders.c drm/radeon/kms: remove r6xx+ blit copy routines 2013-08-30 16:29:57 -04:00
cayman_blit_shaders.h drm/radeon/kms: add blit support for cayman (v2) 2011-05-26 09:19:31 +10:00
ci_dpm.c drm/radeon: enable smc fan control on CI 2014-12-03 19:05:19 -05:00
ci_dpm.h drm/radeon/dpm: add thermal dpm support for CI 2014-11-20 13:00:10 -05:00
ci_smc.c drm/radeon/cik: Add support for new ucode format (v5) 2014-08-05 08:53:24 -04:00
cik.c Linux 3.18-rc7 2014-12-02 10:58:33 +10:00
cik_blit_shaders.c drm/radeon: Add CP init for CIK (v7) 2013-06-25 17:50:28 -04:00
cik_blit_shaders.h drm/radeon: Add CP init for CIK (v7) 2013-06-25 17:50:28 -04:00
cik_reg.h drm/radeon: Implement SDMA interface functions 2015-01-09 22:26:04 +02:00
cik_sdma.c drm/radeon: Enable sdma preemption 2015-01-09 22:26:06 +02:00
cikd.h drm/radeon: fix typo in new fan control registers for SI/CI 2014-12-03 14:26:45 -05:00
clearstate_cayman.h drm/radeon: use NULL instead of zero in clearstate headers 2014-06-02 10:25:07 -04:00
clearstate_ci.h drm/radeon: use NULL instead of zero in clearstate headers 2014-06-02 10:25:07 -04:00
clearstate_defs.h drm/radeon: properly set up the RLC on ON/LN/TN (v3) 2013-06-27 10:49:18 -04:00
clearstate_evergreen.h drm/radeon: convert SI,CIK to use sumo_rlc functions 2013-08-30 16:30:08 -04:00
clearstate_si.h drm/radeon: use NULL instead of zero in clearstate headers 2014-06-02 10:25:07 -04:00
cypress_dpm.c drm/radeon: reduce sparse false positive warnings 2014-10-16 18:34:10 -04:00
cypress_dpm.h drm/radeon/dpm: add pre/post_set_power_state callback (BTC) 2013-06-27 19:16:19 -04:00
dce3_1_afmt.c drm/radeon: fix speaker allocation setup 2014-10-16 18:34:07 -04:00
dce6_afmt.c drm/radeon: fix speaker allocation setup 2014-10-16 18:34:07 -04:00
drm_buffer.c drm/radeon: move drm_buffer to drm/radeon/ 2014-09-10 17:11:21 +10:00
drm_buffer.h drm/radeon: move drm_buffer to drm/radeon/ 2014-09-10 17:11:21 +10:00
evergreen.c drm/radeon: add missing crtc unlock when setting up the MC 2014-11-06 17:41:19 -05:00
evergreen_blit_shaders.c drm/radeon/kms: remove r6xx+ blit copy routines 2013-08-30 16:29:57 -04:00
evergreen_blit_shaders.h
evergreen_cs.c drm/radeon: use pointers instead of indexes for CS chunks 2014-12-03 18:26:53 -05:00
evergreen_dma.c drm/radeon: split semaphore and sync object handling v2 2014-11-20 13:00:16 -05:00
evergreen_hdmi.c drm/radeon: fix speaker allocation setup 2014-10-16 18:34:07 -04:00
evergreen_reg.h drm/radeon: Prevent too early kms-pageflips triggered by vblank. 2014-07-17 09:01:31 -04:00
evergreen_smc.h drm/radeon/dpm: fix typo in EVERGREEN_SMC_FIRMWARE_HEADER_softRegisters 2014-03-06 16:46:58 -05:00
evergreend.h drm/radeon: Setup HDMI_CONTROL for hdmi deep color gcp's (v2) 2014-06-02 18:37:33 -04:00
kv_dpm.c drm/radeon: dpm fixes for asrock systems 2014-10-28 10:44:35 -04:00
kv_dpm.h drm/radeon/dpm: handle bapm on kb/kv 2013-09-11 11:44:38 -04:00
kv_smc.c drm/radeon/dpm: handle bapm on kb/kv 2013-09-11 11:44:38 -04:00
mkregtable.c Replace mentions of "list_struct" to "list_head" 2014-11-20 14:45:15 +01:00
ni.c drm/radeon: use one VMID for each ring 2014-11-20 13:00:18 -05:00
ni_dma.c drm/radeon: use one VMID for each ring 2014-11-20 13:00:18 -05:00
ni_dpm.c drm/radeon: reduce sparse false positive warnings 2014-10-16 18:34:10 -04:00
ni_dpm.h drm/radeon/dpm: implement vblank_too_short callback for si 2013-07-08 17:41:11 -04:00
ni_reg.h
nid.h drm/radeon: add proper support for RADEON_VM_BLOCK_SIZE v2 2014-06-02 10:25:03 -04:00
nislands_smc.h drm/radeon/kms: add dpm support for cayman (v5) 2013-06-27 19:16:10 -04:00
ppsmc.h drm/radeon/dpm: add thermal dpm support for CI 2014-11-20 13:00:10 -05:00
pptable.h drm/radeon/dpm: add smc fan control for CI (v2) 2014-11-20 13:00:10 -05:00
r100.c drm/radeon: use pointers instead of indexes for CS chunks 2014-12-03 18:26:53 -05:00
r100_track.h drm/radeon: use common next_reloc function 2013-01-31 16:24:45 -05:00
r100d.h drm/radeon: consolidate redundant macros and constants 2013-01-31 16:24:46 -05:00
r200.c drm/radeon: rename radeon_cs_reloc to radeon_bo_list 2014-12-03 14:26:47 -05:00
r300.c drm/radeon: use pointers instead of indexes for CS chunks 2014-12-03 18:26:53 -05:00
r300_cmdbuf.c drm/radeon: move drm_buffer to drm/radeon/ 2014-09-10 17:11:21 +10:00
r300_reg.h Fix common misspellings 2011-03-31 11:26:23 -03:00
r300d.h drm/radeon: consolidate redundant macros and constants 2013-01-31 16:24:46 -05:00
r420.c drm/radeon: Only flush HDP cache for indirect buffers from userspace 2014-08-18 17:09:44 -04:00
r420d.h
r500_reg.h drm/radeon: Bypass hw lut's for > 8 bpc framebuffer scanout. 2014-06-13 12:22:30 -04:00
r520.c drm/radeon: resume old pm late 2014-03-06 16:46:56 -05:00
r520d.h
r600.c drm/radeon: split semaphore and sync object handling v2 2014-11-20 13:00:16 -05:00
r600_blit.c drm/radeon/kms: remove r6xx+ blit copy routines 2013-08-30 16:29:57 -04: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/kms: remove r6xx+ blit copy routines 2013-08-30 16:29:57 -04:00
r600_cp.c drm: Move drm_memory.c map support declarations to <drm/drm_legacy.h> 2014-09-12 15:28:12 +02:00
r600_cs.c drm/radeon: use pointers instead of indexes for CS chunks 2014-12-03 18:26:53 -05:00
r600_dma.c Linux 3.18-rc7 2014-12-02 10:58:33 +10:00
r600_dpm.c Linux 3.18-rc7 2014-12-02 10:58:33 +10:00
r600_dpm.h drm/radeon/dpm: add smc fan control for SI (v2) 2014-11-20 13:00:09 -05:00
r600_hdmi.c drm/radeon: disable audio when we disable hdmi (v2) 2014-10-01 09:00:04 -04:00
r600_reg.h drm/radeon: add indirect accessors for UVD CTX registers 2013-06-27 19:16:30 -04:00
r600d.h Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-10-14 09:39:08 +02:00
radeon.h drm/radeon: use pointers instead of indexes for CS chunks 2014-12-03 18:26:53 -05:00
radeon_acpi.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
radeon_acpi.h drm/radeon: implement handler for ACPI event 2012-09-20 13:10:36 -04:00
radeon_agp.c radeon: Remove useless quirk for zx1/FireGL X1 combo introduced with fdo #7770 2014-06-02 10:25:08 -04:00
radeon_asic.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-10-14 09:39:08 +02:00
radeon_asic.h drm/radeon: rework vm_flush parameters 2014-11-20 13:00:14 -05:00
radeon_atombios.c drm/radeon/atombios: declare connector convert tables as static 2014-10-01 09:00:07 -04:00
radeon_atpx_handler.c ACPIPHP / radeon / nouveau: Remove acpi_bus_no_hotplug() 2014-09-15 13:15:34 -06:00
radeon_benchmark.c drm/radeon: export reservation_object from dmabuf to ttm 2014-10-03 09:19:17 -04:00
radeon_bios.c radeon: clean up coding style differences in radeon_get_bios() 2014-10-28 10:44:34 -04:00
radeon_clocks.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
radeon_combios.c drm/radeon/combios: declare legacy_connector_convert as static 2014-10-01 09:00:08 -04:00
radeon_connectors.c drm/radeon: report disconnected for LVDS/eDP with PX if ddc fails 2014-11-26 20:56:37 -05:00
radeon_cp.c drm: Move drm_memory.c map support declarations to <drm/drm_legacy.h> 2014-09-12 15:28:12 +02:00
radeon_cs.c Linux 3.18 2014-12-08 10:33:52 +10:00
radeon_cursor.c drm/radeon: Move hotspot handling out of radeon_set_cursor 2014-12-03 14:26:44 -05:00
radeon_device.c Linux 3.18-rc7 2014-12-02 10:58:33 +10:00
radeon_display.c drm/radeon: Use cursor_set2 hook for enabling / disabling the HW cursor 2014-11-20 11:11:41 -05:00
radeon_drv.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-10-14 09:39:08 +02:00
radeon_drv.h drm: Create drm legacy driver header 2014-09-12 11:08:55 +02:00
radeon_encoders.c drm/radeon: disable native backlight control on pre-r6xx asics (v2) 2014-11-20 11:12:55 -05:00
radeon_family.h drm/radeon: add Mullins chip family 2014-05-06 12:19:57 +02:00
radeon_fb.c drm/radeon: Hide cursor on CRTCs used by fbdev (v2) 2014-12-03 14:26:49 -05:00
radeon_fence.c drm/radeon: track VM update fences separately 2014-11-20 13:00:17 -05:00
radeon_gart.c drm/radeon: export reservation_object from dmabuf to ttm 2014-10-03 09:19:17 -04:00
radeon_gem.c Revert "drm/gem: Warn on illegal use of the dumb buffer interface v2" 2014-12-24 13:13:22 +10:00
radeon_i2c.c drm/dp: add a hw mutex around the transfer functions. (v2) 2014-06-05 09:54:29 +10:00
radeon_ib.c drm/radeon: track VM update fences separately 2014-11-20 13:00:17 -05:00
radeon_ioc32.c drm: Remove DRM_ARRAY_SIZE() for ARRAY_SIZE() 2014-06-10 09:36:17 +10:00
radeon_irq.c drm: Kill DRM_COPY_(TO|FROM)_USER 2013-12-18 11:35:01 +10:00
radeon_irq_kms.c gpu/radeon: Set flag to indicate broken 64-bit MSI 2014-11-24 14:12:56 +11:00
radeon_kfd.c drm/radeon: Impl. new gtt allocate/free functions 2015-01-09 22:26:07 +02:00
radeon_kfd.h drm/radeon: Add radeon <--> amdkfd interface 2014-07-15 13:53:32 +03:00
radeon_kms.c Linux 3.18 2014-12-08 10:33:52 +10:00
radeon_legacy_crtc.c drm/radeon: Re-show the cursor after a modeset 2014-12-03 14:26:44 -05:00
radeon_legacy_encoders.c drm/sysfs: sort out minor and connector device object lifetimes. 2013-10-22 09:37:40 +01:00
radeon_legacy_tv.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
radeon_mem.c drm: Kill DRM_COPY_(TO|FROM)_USER 2013-12-18 11:35:01 +10:00
radeon_mn.c drm/ttm: flip the switch, and convert to dma_fence 2014-09-02 16:41:50 +02:00
radeon_mode.h drm/radeon: Re-show the cursor after a modeset 2014-12-03 14:26:44 -05:00
radeon_object.c Revert "drm/gem: Warn on illegal use of the dumb buffer interface v2" 2014-12-24 13:13:22 +10:00
radeon_object.h drm/radeon: fence PT updates manually v2 2014-11-20 13:00:16 -05:00
radeon_pm.c Merge remote-tracking branch 'airlied/drm-next' into topic/vblank-rework 2014-09-11 14:46:53 +02:00
radeon_prime.c drm/radeon: export reservation_object from dmabuf to ttm 2014-10-03 09:19:17 -04:00
radeon_reg.h drm/radeon/cik: add hw cursor support (v2) 2013-06-26 16:11:38 -04:00
radeon_ring.c drm/radeon: Use drm_malloc_ab instead of kmalloc_array 2014-10-28 10:44:34 -04:00
radeon_sa.c drm/radeon: export reservation_object from dmabuf to ttm 2014-10-03 09:19:17 -04:00
radeon_semaphore.c drm/radeon: split semaphore and sync object handling v2 2014-11-20 13:00:16 -05:00
radeon_state.c drm/radeon: move drm_buffer to drm/radeon/ 2014-09-10 17:11:21 +10:00
radeon_sync.c drm/radeon: track VM update fences separately 2014-11-20 13:00:17 -05:00
radeon_test.c drm/radeon: export reservation_object from dmabuf to ttm 2014-10-03 09:19:17 -04:00
radeon_trace.h drm/radeon: use pointers instead of indexes for CS chunks 2014-12-03 18:26:53 -05:00
radeon_trace_points.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
radeon_ttm.c drm/radeon: check the right ring in radeon_evict_flags() 2014-12-03 18:26:51 -05:00
radeon_ucode.c drm/radeon: add new firmware header definitions (v3) 2014-08-05 08:53:22 -04:00
radeon_ucode.h drm/radeon: add new firmware header definitions (v3) 2014-08-05 08:53:22 -04:00
radeon_uvd.c drm/radeon: use pointers instead of indexes for CS chunks 2014-12-03 18:26:53 -05:00
radeon_vce.c drm/radeon: use pointers instead of indexes for CS chunks 2014-12-03 18:26:53 -05:00
radeon_vm.c drm/radeon: add spinlock for BO_VA status protection (v2) 2014-12-03 14:26:48 -05:00
rs100d.h
rs400.c drm/radeon: Fix typo 'addr' -> 'entry' in rs400_gart_set_page 2014-09-18 21:52:29 -04:00
rs400d.h
rs600.c drm/radeon: make sure mode init is complete in bandwidth_update 2014-11-06 15:42:44 -05:00
rs600d.h drm/radeon/kms: add register definitions for audio 2012-04-24 09:50:13 +01:00
rs690.c drm/radeon: make sure mode init is complete in bandwidth_update 2014-11-06 15:42:44 -05:00
rs690d.h drm/radeon: Use direct mapping for fast fb access on RS690 2013-04-09 10:31:31 -04:00
rs780_dpm.c drm/radeon: reduce sparse false positive warnings 2014-10-16 18:34:10 -04:00
rs780_dpm.h drm/radeon/kms: add dpm support for rs780/rs880 2013-06-27 10:49:25 -04:00
rs780d.h drm/radeon/dpm: add debugfs support for RS780/RS880 (v3) 2013-07-17 16:47:52 -04:00
rv6xx_dpm.c drm/radeon: reduce sparse false positive warnings 2014-10-16 18:34:10 -04:00
rv6xx_dpm.h drm/radeon/kms: add dpm support for rv6xx (v3) 2013-06-27 10:50:08 -04:00
rv6xxd.h drm/radeon/kms: add dpm support for rv6xx (v3) 2013-06-27 10:50:08 -04:00
rv200d.h
rv250d.h
rv350d.h
rv515.c drm/radeon: make sure mode init is complete in bandwidth_update 2014-11-06 15:42:44 -05:00
rv515d.h drm/radeon: consolidate redundant macros and constants 2013-01-31 16:24:46 -05:00
rv730_dpm.c drm/radeon/kms: add dpm support for rv7xx (v4) 2013-06-27 19:14:59 -04:00
rv730d.h drm/radeon/kms: add dpm support for rv7xx (v4) 2013-06-27 19:14:59 -04:00
rv740_dpm.c drm/radeon/dpm/rv7xx: restructure code 2013-06-27 19:16:12 -04:00
rv740d.h drm/radeon/kms: add dpm support for rv7xx (v4) 2013-06-27 19:14:59 -04:00
rv770.c drm/radeon: remove unecessary includes 2014-10-01 09:00:09 -04:00
rv770_dma.c drm/radeon: split semaphore and sync object handling v2 2014-11-20 13:00:16 -05:00
rv770_dpm.c drm/radeon: reduce sparse false positive warnings 2014-10-16 18:34:10 -04:00
rv770_dpm.h drm/radeon/dpm: switch on new late_enable callback 2013-12-24 17:56:50 -05:00
rv770_smc.c drm/radeon: protect concurrent smc register access with a spinlock 2013-09-11 11:44:28 -04:00
rv770_smc.h drm/radeon: protect concurrent smc register access with a spinlock 2013-09-11 11:44:28 -04:00
rv770d.h drm/radeon: implement pci config reset for r6xx/7xx (v3) 2014-01-08 18:42:22 -05:00
si.c Linux 3.18-rc7 2014-12-02 10:58:33 +10: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_dma.c drm/radeon: split semaphore and sync object handling v2 2014-11-20 13:00:16 -05:00
si_dpm.c drm/radeon: fix copy paste typos in fan control for si/ci 2014-12-03 18:26:51 -05:00
si_dpm.h drm/radeon/dpm: add smc fan control for SI (v2) 2014-11-20 13:00:09 -05:00
si_reg.h drm/radeon: SI tiling fixes for display 2012-06-20 19:55:56 +01:00
si_smc.c drm/radeon/si: Add support for new ucode format (v3) 2014-08-05 08:53:23 -04:00
sid.h drm/radeon: fix typo in new fan control registers for SI/CI 2014-12-03 14:26:45 -05:00
sislands_smc.h drm/radeon/dpm: add smc fan control for SI (v2) 2014-11-20 13:00:09 -05:00
smu7.h drm/radeon/kms: add dpm support for KB/KV 2013-08-30 16:30:28 -04:00
smu7_discrete.h drm/radeon/dpm: add smc fan control for CI (v2) 2014-11-20 13:00:10 -05:00
smu7_fusion.h drm/radeon/kms: add dpm support for KB/KV 2013-08-30 16:30:28 -04:00
sumo_dpm.c drm/radeon: reduce sparse false positive warnings 2014-10-16 18:34:10 -04:00
sumo_dpm.h drm/radeon/sumo add helper to go from vid7 to vid2 2013-08-30 16:30:10 -04:00
sumo_smc.c drm/radeon/dpm: make some functions static for sumo 2014-01-07 12:55:50 -05:00
sumod.h drm/radeon: add dpm UVD handling for sumo asics 2013-06-27 19:15:48 -04:00
trinity_dpm.c drm/radeon: reduce sparse false positive warnings 2014-10-16 18:34:10 -04:00
trinity_dpm.h drm/radeon/dpm: add bapm callback for trinity 2013-09-11 11:44:39 -04:00
trinity_smc.c drm/radeon/dpm: make some functions static for TN 2014-01-07 12:55:57 -05:00
trinityd.h drm/radeon: add dpm UVD handling for TN asics (v2) 2013-06-27 19:15:48 -04:00
uvd_v1_0.c drm/radeon: enable RB_ARB before resetting the VCPU 2014-08-27 12:48:00 -04:00
uvd_v2_2.c drm/radeon: add UVD support for older asics v4 2014-08-27 12:47:55 -04:00
uvd_v3_1.c drm/radeon: allow semaphore emission to fail 2013-11-15 15:56:09 -05:00
uvd_v4_2.c drm/radeon: split out radeon_uvd_resume from uvd_v4_2_resume 2013-08-30 16:31:12 -04:00
vce_v1_0.c drm/radeon: drop drivers copy of the rptr 2014-02-18 17:49:19 +01:00
vce_v2_0.c drm/radeon: add support for vce 2.0 clock gating 2014-02-18 16:11:44 +01:00