diff options
author | Sean Paul <seanpaul@chromium.org> | 2018-03-21 09:40:55 -0400 |
---|---|---|
committer | Sean Paul <seanpaul@chromium.org> | 2018-03-21 09:40:55 -0400 |
commit | 1c7095d2836baafd84e596dd34ba1a1293a4faa9 (patch) | |
tree | 498f529809b9c0a3c75c8b8bb1098ed4f71233db /drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | |
parent | 2793c1d77aa8876e5674e901d051c79570e99db2 (diff) | |
parent | 78230c46ec0a91dd4256c9e54934b3c7095a7ee3 (diff) |
Merge airlied/drm-next into drm-misc-next
Refresh -misc-next
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index ba4335fd4f65..2337d4bfd85c 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | |||
@@ -73,9 +73,11 @@ | |||
73 | * - 3.21.0 - Add DRM_AMDGPU_FENCE_TO_HANDLE ioctl | 73 | * - 3.21.0 - Add DRM_AMDGPU_FENCE_TO_HANDLE ioctl |
74 | * - 3.22.0 - Add DRM_AMDGPU_SCHED ioctl | 74 | * - 3.22.0 - Add DRM_AMDGPU_SCHED ioctl |
75 | * - 3.23.0 - Add query for VRAM lost counter | 75 | * - 3.23.0 - Add query for VRAM lost counter |
76 | * - 3.24.0 - Add high priority compute support for gfx9 | ||
77 | * - 3.25.0 - Add support for sensor query info (stable pstate sclk/mclk). | ||
76 | */ | 78 | */ |
77 | #define KMS_DRIVER_MAJOR 3 | 79 | #define KMS_DRIVER_MAJOR 3 |
78 | #define KMS_DRIVER_MINOR 23 | 80 | #define KMS_DRIVER_MINOR 25 |
79 | #define KMS_DRIVER_PATCHLEVEL 0 | 81 | #define KMS_DRIVER_PATCHLEVEL 0 |
80 | 82 | ||
81 | int amdgpu_vram_limit = 0; | 83 | int amdgpu_vram_limit = 0; |
@@ -119,7 +121,7 @@ uint amdgpu_pg_mask = 0xffffffff; | |||
119 | uint amdgpu_sdma_phase_quantum = 32; | 121 | uint amdgpu_sdma_phase_quantum = 32; |
120 | char *amdgpu_disable_cu = NULL; | 122 | char *amdgpu_disable_cu = NULL; |
121 | char *amdgpu_virtual_display = NULL; | 123 | char *amdgpu_virtual_display = NULL; |
122 | uint amdgpu_pp_feature_mask = 0xffffffff; | 124 | uint amdgpu_pp_feature_mask = 0xffffbfff; |
123 | int amdgpu_ngg = 0; | 125 | int amdgpu_ngg = 0; |
124 | int amdgpu_prim_buf_per_se = 0; | 126 | int amdgpu_prim_buf_per_se = 0; |
125 | int amdgpu_pos_buf_per_se = 0; | 127 | int amdgpu_pos_buf_per_se = 0; |
@@ -129,6 +131,7 @@ int amdgpu_job_hang_limit = 0; | |||
129 | int amdgpu_lbpw = -1; | 131 | int amdgpu_lbpw = -1; |
130 | int amdgpu_compute_multipipe = -1; | 132 | int amdgpu_compute_multipipe = -1; |
131 | int amdgpu_gpu_recovery = -1; /* auto */ | 133 | int amdgpu_gpu_recovery = -1; /* auto */ |
134 | int amdgpu_emu_mode = 0; | ||
132 | 135 | ||
133 | MODULE_PARM_DESC(vramlimit, "Restrict VRAM for testing, in megabytes"); | 136 | MODULE_PARM_DESC(vramlimit, "Restrict VRAM for testing, in megabytes"); |
134 | module_param_named(vramlimit, amdgpu_vram_limit, int, 0600); | 137 | module_param_named(vramlimit, amdgpu_vram_limit, int, 0600); |
@@ -281,9 +284,12 @@ module_param_named(lbpw, amdgpu_lbpw, int, 0444); | |||
281 | MODULE_PARM_DESC(compute_multipipe, "Force compute queues to be spread across pipes (1 = enable, 0 = disable, -1 = auto)"); | 284 | MODULE_PARM_DESC(compute_multipipe, "Force compute queues to be spread across pipes (1 = enable, 0 = disable, -1 = auto)"); |
282 | module_param_named(compute_multipipe, amdgpu_compute_multipipe, int, 0444); | 285 | module_param_named(compute_multipipe, amdgpu_compute_multipipe, int, 0444); |
283 | 286 | ||
284 | MODULE_PARM_DESC(gpu_recovery, "Enable GPU recovery mechanism, (1 = enable, 0 = disable, -1 = auto"); | 287 | MODULE_PARM_DESC(gpu_recovery, "Enable GPU recovery mechanism, (1 = enable, 0 = disable, -1 = auto)"); |
285 | module_param_named(gpu_recovery, amdgpu_gpu_recovery, int, 0444); | 288 | module_param_named(gpu_recovery, amdgpu_gpu_recovery, int, 0444); |
286 | 289 | ||
290 | MODULE_PARM_DESC(emu_mode, "Emulation mode, (1 = enable, 0 = disable)"); | ||
291 | module_param_named(emu_mode, amdgpu_emu_mode, int, 0444); | ||
292 | |||
287 | #ifdef CONFIG_DRM_AMDGPU_SI | 293 | #ifdef CONFIG_DRM_AMDGPU_SI |
288 | 294 | ||
289 | #if defined(CONFIG_DRM_RADEON) || defined(CONFIG_DRM_RADEON_MODULE) | 295 | #if defined(CONFIG_DRM_RADEON) || defined(CONFIG_DRM_RADEON_MODULE) |
@@ -576,6 +582,11 @@ static int amdgpu_pci_probe(struct pci_dev *pdev, | |||
576 | struct drm_device *dev; | 582 | struct drm_device *dev; |
577 | unsigned long flags = ent->driver_data; | 583 | unsigned long flags = ent->driver_data; |
578 | int ret, retry = 0; | 584 | int ret, retry = 0; |
585 | bool supports_atomic = false; | ||
586 | |||
587 | if (!amdgpu_virtual_display && | ||
588 | amdgpu_device_asic_has_dc_support(flags & AMD_ASIC_MASK)) | ||
589 | supports_atomic = true; | ||
579 | 590 | ||
580 | if ((flags & AMD_EXP_HW_SUPPORT) && !amdgpu_exp_hw_support) { | 591 | if ((flags & AMD_EXP_HW_SUPPORT) && !amdgpu_exp_hw_support) { |
581 | DRM_INFO("This hardware requires experimental hardware support.\n" | 592 | DRM_INFO("This hardware requires experimental hardware support.\n" |
@@ -596,6 +607,13 @@ static int amdgpu_pci_probe(struct pci_dev *pdev, | |||
596 | if (ret) | 607 | if (ret) |
597 | return ret; | 608 | return ret; |
598 | 609 | ||
610 | /* warn the user if they mix atomic and non-atomic capable GPUs */ | ||
611 | if ((kms_driver.driver_features & DRIVER_ATOMIC) && !supports_atomic) | ||
612 | DRM_ERROR("Mixing atomic and non-atomic capable GPUs!\n"); | ||
613 | /* support atomic early so the atomic debugfs stuff gets created */ | ||
614 | if (supports_atomic) | ||
615 | kms_driver.driver_features |= DRIVER_ATOMIC; | ||
616 | |||
599 | dev = drm_dev_alloc(&kms_driver, &pdev->dev); | 617 | dev = drm_dev_alloc(&kms_driver, &pdev->dev); |
600 | if (IS_ERR(dev)) | 618 | if (IS_ERR(dev)) |
601 | return PTR_ERR(dev); | 619 | return PTR_ERR(dev); |
@@ -833,8 +851,8 @@ amdgpu_get_crtc_scanout_position(struct drm_device *dev, unsigned int pipe, | |||
833 | ktime_t *stime, ktime_t *etime, | 851 | ktime_t *stime, ktime_t *etime, |
834 | const struct drm_display_mode *mode) | 852 | const struct drm_display_mode *mode) |
835 | { | 853 | { |
836 | return amdgpu_get_crtc_scanoutpos(dev, pipe, 0, vpos, hpos, | 854 | return amdgpu_display_get_crtc_scanoutpos(dev, pipe, 0, vpos, hpos, |
837 | stime, etime, mode); | 855 | stime, etime, mode); |
838 | } | 856 | } |
839 | 857 | ||
840 | static struct drm_driver kms_driver = { | 858 | static struct drm_driver kms_driver = { |
@@ -852,9 +870,6 @@ static struct drm_driver kms_driver = { | |||
852 | .disable_vblank = amdgpu_disable_vblank_kms, | 870 | .disable_vblank = amdgpu_disable_vblank_kms, |
853 | .get_vblank_timestamp = drm_calc_vbltimestamp_from_scanoutpos, | 871 | .get_vblank_timestamp = drm_calc_vbltimestamp_from_scanoutpos, |
854 | .get_scanout_position = amdgpu_get_crtc_scanout_position, | 872 | .get_scanout_position = amdgpu_get_crtc_scanout_position, |
855 | .irq_preinstall = amdgpu_irq_preinstall, | ||
856 | .irq_postinstall = amdgpu_irq_postinstall, | ||
857 | .irq_uninstall = amdgpu_irq_uninstall, | ||
858 | .irq_handler = amdgpu_irq_handler, | 873 | .irq_handler = amdgpu_irq_handler, |
859 | .ioctls = amdgpu_ioctls_kms, | 874 | .ioctls = amdgpu_ioctls_kms, |
860 | .gem_free_object_unlocked = amdgpu_gem_object_free, | 875 | .gem_free_object_unlocked = amdgpu_gem_object_free, |
@@ -867,9 +882,7 @@ static struct drm_driver kms_driver = { | |||
867 | .prime_handle_to_fd = drm_gem_prime_handle_to_fd, | 882 | .prime_handle_to_fd = drm_gem_prime_handle_to_fd, |
868 | .prime_fd_to_handle = drm_gem_prime_fd_to_handle, | 883 | .prime_fd_to_handle = drm_gem_prime_fd_to_handle, |
869 | .gem_prime_export = amdgpu_gem_prime_export, | 884 | .gem_prime_export = amdgpu_gem_prime_export, |
870 | .gem_prime_import = drm_gem_prime_import, | 885 | .gem_prime_import = amdgpu_gem_prime_import, |
871 | .gem_prime_pin = amdgpu_gem_prime_pin, | ||
872 | .gem_prime_unpin = amdgpu_gem_prime_unpin, | ||
873 | .gem_prime_res_obj = amdgpu_gem_prime_res_obj, | 886 | .gem_prime_res_obj = amdgpu_gem_prime_res_obj, |
874 | .gem_prime_get_sg_table = amdgpu_gem_prime_get_sg_table, | 887 | .gem_prime_get_sg_table = amdgpu_gem_prime_get_sg_table, |
875 | .gem_prime_import_sg_table = amdgpu_gem_prime_import_sg_table, | 888 | .gem_prime_import_sg_table = amdgpu_gem_prime_import_sg_table, |