aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd
diff options
context:
space:
mode:
authorAmber Lin <Amber.Lin@amd.com>2018-08-29 13:39:16 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-08-29 13:41:50 -0400
commit2690262ec9fea3aa364ca9cd31981d7fe3888a5b (patch)
tree85b2b28e9b3cde27a0e30e274c91e12917a78127 /drivers/gpu/drm/amd
parentdcaaff4eed13c4dcc15525ff87269b3f4544345a (diff)
drm/amdgpu: Relocate some definitions v2
Move some KFD-related (but used in amdgpu_drv.c) definitions from kfd_priv.h to kgd_kfd_interface.h so we don't need to include kfd_priv.h in amdgpu_drv.c. This fixes a build failure when AMDGPU is enabled but MMU_NOTIFIER is not. This patch also disables KFD-related module options when HSA_AMD is not enabled. v2: rebase (Alex) Signed-off-by: Amber Lin <Amber.Lin@amd.com> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c22
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_priv.h28
-rw-r--r--drivers/gpu/drm/amd/include/kgd_kfd_interface.h28
3 files changed, 39 insertions, 39 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 82e6b6746511..d7d9a9d32381 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -39,7 +39,6 @@
39#include "amdgpu_gem.h" 39#include "amdgpu_gem.h"
40 40
41#include "amdgpu_amdkfd.h" 41#include "amdgpu_amdkfd.h"
42#include "kfd_priv.h"
43 42
44/* 43/*
45 * KMS wrapper. 44 * KMS wrapper.
@@ -128,16 +127,6 @@ int amdgpu_compute_multipipe = -1;
128int amdgpu_gpu_recovery = -1; /* auto */ 127int amdgpu_gpu_recovery = -1; /* auto */
129int amdgpu_emu_mode = 0; 128int amdgpu_emu_mode = 0;
130uint amdgpu_smu_memory_pool_size = 0; 129uint amdgpu_smu_memory_pool_size = 0;
131/* KFD parameters */
132int sched_policy = KFD_SCHED_POLICY_HWS;
133int hws_max_conc_proc = 8;
134int cwsr_enable = 1;
135int max_num_of_queues_per_device = KFD_MAX_NUM_OF_QUEUES_PER_DEVICE_DEFAULT;
136int send_sigterm;
137int debug_largebar;
138int ignore_crat;
139int noretry;
140int halt_if_hws_hang;
141 130
142/** 131/**
143 * DOC: vramlimit (int) 132 * DOC: vramlimit (int)
@@ -543,12 +532,14 @@ MODULE_PARM_DESC(smu_memory_pool_size,
543 "0x1 = 256Mbyte, 0x2 = 512Mbyte, 0x4 = 1 Gbyte, 0x8 = 2GByte"); 532 "0x1 = 256Mbyte, 0x2 = 512Mbyte, 0x4 = 1 Gbyte, 0x8 = 2GByte");
544module_param_named(smu_memory_pool_size, amdgpu_smu_memory_pool_size, uint, 0444); 533module_param_named(smu_memory_pool_size, amdgpu_smu_memory_pool_size, uint, 0444);
545 534
535#ifdef CONFIG_HSA_AMD
546/** 536/**
547 * DOC: sched_policy (int) 537 * DOC: sched_policy (int)
548 * Set scheduling policy. Default is HWS(hardware scheduling) with over-subscription. 538 * Set scheduling policy. Default is HWS(hardware scheduling) with over-subscription.
549 * Setting 1 disables over-subscription. Setting 2 disables HWS and statically 539 * Setting 1 disables over-subscription. Setting 2 disables HWS and statically
550 * assigns queues to HQDs. 540 * assigns queues to HQDs.
551 */ 541 */
542int sched_policy = KFD_SCHED_POLICY_HWS;
552module_param(sched_policy, int, 0444); 543module_param(sched_policy, int, 0444);
553MODULE_PARM_DESC(sched_policy, 544MODULE_PARM_DESC(sched_policy,
554 "Scheduling policy (0 = HWS (Default), 1 = HWS without over-subscription, 2 = Non-HWS (Used for debugging only)"); 545 "Scheduling policy (0 = HWS (Default), 1 = HWS without over-subscription, 2 = Non-HWS (Used for debugging only)");
@@ -558,6 +549,7 @@ MODULE_PARM_DESC(sched_policy,
558 * Maximum number of processes that HWS can schedule concurrently. The maximum is the 549 * Maximum number of processes that HWS can schedule concurrently. The maximum is the
559 * number of VMIDs assigned to the HWS, which is also the default. 550 * number of VMIDs assigned to the HWS, which is also the default.
560 */ 551 */
552int hws_max_conc_proc = 8;
561module_param(hws_max_conc_proc, int, 0444); 553module_param(hws_max_conc_proc, int, 0444);
562MODULE_PARM_DESC(hws_max_conc_proc, 554MODULE_PARM_DESC(hws_max_conc_proc,
563 "Max # processes HWS can execute concurrently when sched_policy=0 (0 = no concurrency, #VMIDs for KFD = Maximum(default))"); 555 "Max # processes HWS can execute concurrently when sched_policy=0 (0 = no concurrency, #VMIDs for KFD = Maximum(default))");
@@ -568,6 +560,7 @@ MODULE_PARM_DESC(hws_max_conc_proc,
568 * the middle of a compute wave. Default is 1 to enable this feature. Setting 0 560 * the middle of a compute wave. Default is 1 to enable this feature. Setting 0
569 * disables it. 561 * disables it.
570 */ 562 */
563int cwsr_enable = 1;
571module_param(cwsr_enable, int, 0444); 564module_param(cwsr_enable, int, 0444);
572MODULE_PARM_DESC(cwsr_enable, "CWSR enable (0 = Off, 1 = On (Default))"); 565MODULE_PARM_DESC(cwsr_enable, "CWSR enable (0 = Off, 1 = On (Default))");
573 566
@@ -576,6 +569,7 @@ MODULE_PARM_DESC(cwsr_enable, "CWSR enable (0 = Off, 1 = On (Default))");
576 * Maximum number of queues per device. Valid setting is between 1 and 4096. Default 569 * Maximum number of queues per device. Valid setting is between 1 and 4096. Default
577 * is 4096. 570 * is 4096.
578 */ 571 */
572int max_num_of_queues_per_device = KFD_MAX_NUM_OF_QUEUES_PER_DEVICE_DEFAULT;
579module_param(max_num_of_queues_per_device, int, 0444); 573module_param(max_num_of_queues_per_device, int, 0444);
580MODULE_PARM_DESC(max_num_of_queues_per_device, 574MODULE_PARM_DESC(max_num_of_queues_per_device,
581 "Maximum number of supported queues per device (1 = Minimum, 4096 = default)"); 575 "Maximum number of supported queues per device (1 = Minimum, 4096 = default)");
@@ -585,6 +579,7 @@ MODULE_PARM_DESC(max_num_of_queues_per_device,
585 * Send sigterm to HSA process on unhandled exceptions. Default is not to send sigterm 579 * Send sigterm to HSA process on unhandled exceptions. Default is not to send sigterm
586 * but just print errors on dmesg. Setting 1 enables sending sigterm. 580 * but just print errors on dmesg. Setting 1 enables sending sigterm.
587 */ 581 */
582int send_sigterm;
588module_param(send_sigterm, int, 0444); 583module_param(send_sigterm, int, 0444);
589MODULE_PARM_DESC(send_sigterm, 584MODULE_PARM_DESC(send_sigterm,
590 "Send sigterm to HSA process on unhandled exception (0 = disable, 1 = enable)"); 585 "Send sigterm to HSA process on unhandled exception (0 = disable, 1 = enable)");
@@ -596,6 +591,7 @@ MODULE_PARM_DESC(send_sigterm,
596 * size, usually 256MB. 591 * size, usually 256MB.
597 * Default value is 0, diabled. 592 * Default value is 0, diabled.
598 */ 593 */
594int debug_largebar;
599module_param(debug_largebar, int, 0444); 595module_param(debug_largebar, int, 0444);
600MODULE_PARM_DESC(debug_largebar, 596MODULE_PARM_DESC(debug_largebar,
601 "Debug large-bar flag used to simulate large-bar capability on non-large bar machine (0 = disable, 1 = enable)"); 597 "Debug large-bar flag used to simulate large-bar capability on non-large bar machine (0 = disable, 1 = enable)");
@@ -606,6 +602,7 @@ MODULE_PARM_DESC(debug_largebar,
606 * table to get information about AMD APUs. This option can serve as a workaround on 602 * table to get information about AMD APUs. This option can serve as a workaround on
607 * systems with a broken CRAT table. 603 * systems with a broken CRAT table.
608 */ 604 */
605int ignore_crat;
609module_param(ignore_crat, int, 0444); 606module_param(ignore_crat, int, 0444);
610MODULE_PARM_DESC(ignore_crat, 607MODULE_PARM_DESC(ignore_crat,
611 "Ignore CRAT table during KFD initialization (0 = use CRAT (default), 1 = ignore CRAT)"); 608 "Ignore CRAT table during KFD initialization (0 = use CRAT (default), 1 = ignore CRAT)");
@@ -616,6 +613,7 @@ MODULE_PARM_DESC(ignore_crat,
616 * Setting 1 disables retry. 613 * Setting 1 disables retry.
617 * Retry is needed for recoverable page faults. 614 * Retry is needed for recoverable page faults.
618 */ 615 */
616int noretry;
619module_param(noretry, int, 0644); 617module_param(noretry, int, 0644);
620MODULE_PARM_DESC(noretry, 618MODULE_PARM_DESC(noretry,
621 "Set sh_mem_config.retry_disable on Vega10 (0 = retry enabled (default), 1 = retry disabled)"); 619 "Set sh_mem_config.retry_disable on Vega10 (0 = retry enabled (default), 1 = retry disabled)");
@@ -625,8 +623,10 @@ MODULE_PARM_DESC(noretry,
625 * Halt if HWS hang is detected. Default value, 0, disables the halt on hang. 623 * Halt if HWS hang is detected. Default value, 0, disables the halt on hang.
626 * Setting 1 enables halt on hang. 624 * Setting 1 enables halt on hang.
627 */ 625 */
626int halt_if_hws_hang;
628module_param(halt_if_hws_hang, int, 0644); 627module_param(halt_if_hws_hang, int, 0644);
629MODULE_PARM_DESC(halt_if_hws_hang, "Halt if HWS hang is detected (0 = off (default), 1 = on)"); 628MODULE_PARM_DESC(halt_if_hws_hang, "Halt if HWS hang is detected (0 = off (default), 1 = on)");
629#endif
630 630
631static const struct pci_device_id pciidlist[] = { 631static const struct pci_device_id pciidlist[] = {
632#ifdef CONFIG_DRM_AMDGPU_SI 632#ifdef CONFIG_DRM_AMDGPU_SI
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
index f971710f1c91..355f79da8a63 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
@@ -103,7 +103,6 @@
103 */ 103 */
104extern int max_num_of_queues_per_device; 104extern int max_num_of_queues_per_device;
105 105
106#define KFD_MAX_NUM_OF_QUEUES_PER_DEVICE_DEFAULT 4096
107#define KFD_MAX_NUM_OF_QUEUES_PER_DEVICE \ 106#define KFD_MAX_NUM_OF_QUEUES_PER_DEVICE \
108 (KFD_MAX_NUM_OF_PROCESSES * \ 107 (KFD_MAX_NUM_OF_PROCESSES * \
109 KFD_MAX_NUM_OF_QUEUES_PER_PROCESS) 108 KFD_MAX_NUM_OF_QUEUES_PER_PROCESS)
@@ -149,33 +148,6 @@ extern int noretry;
149 */ 148 */
150extern int halt_if_hws_hang; 149extern int halt_if_hws_hang;
151 150
152/**
153 * enum kfd_sched_policy
154 *
155 * @KFD_SCHED_POLICY_HWS: H/W scheduling policy known as command processor (cp)
156 * scheduling. In this scheduling mode we're using the firmware code to
157 * schedule the user mode queues and kernel queues such as HIQ and DIQ.
158 * the HIQ queue is used as a special queue that dispatches the configuration
159 * to the cp and the user mode queues list that are currently running.
160 * the DIQ queue is a debugging queue that dispatches debugging commands to the
161 * firmware.
162 * in this scheduling mode user mode queues over subscription feature is
163 * enabled.
164 *
165 * @KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION: The same as above but the over
166 * subscription feature disabled.
167 *
168 * @KFD_SCHED_POLICY_NO_HWS: no H/W scheduling policy is a mode which directly
169 * set the command processor registers and sets the queues "manually". This
170 * mode is used *ONLY* for debugging proposes.
171 *
172 */
173enum kfd_sched_policy {
174 KFD_SCHED_POLICY_HWS = 0,
175 KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION,
176 KFD_SCHED_POLICY_NO_HWS
177};
178
179enum cache_policy { 151enum cache_policy {
180 cache_policy_coherent, 152 cache_policy_coherent,
181 cache_policy_noncoherent 153 cache_policy_noncoherent
diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
index 814576f6ca1c..31c52c116e20 100644
--- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
+++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
@@ -98,6 +98,33 @@ enum kgd_engine_type {
98 KGD_ENGINE_MAX 98 KGD_ENGINE_MAX
99}; 99};
100 100
101/**
102 * enum kfd_sched_policy
103 *
104 * @KFD_SCHED_POLICY_HWS: H/W scheduling policy known as command processor (cp)
105 * scheduling. In this scheduling mode we're using the firmware code to
106 * schedule the user mode queues and kernel queues such as HIQ and DIQ.
107 * the HIQ queue is used as a special queue that dispatches the configuration
108 * to the cp and the user mode queues list that are currently running.
109 * the DIQ queue is a debugging queue that dispatches debugging commands to the
110 * firmware.
111 * in this scheduling mode user mode queues over subscription feature is
112 * enabled.
113 *
114 * @KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION: The same as above but the over
115 * subscription feature disabled.
116 *
117 * @KFD_SCHED_POLICY_NO_HWS: no H/W scheduling policy is a mode which directly
118 * set the command processor registers and sets the queues "manually". This
119 * mode is used *ONLY* for debugging proposes.
120 *
121 */
122enum kfd_sched_policy {
123 KFD_SCHED_POLICY_HWS = 0,
124 KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION,
125 KFD_SCHED_POLICY_NO_HWS
126};
127
101struct kgd2kfd_shared_resources { 128struct kgd2kfd_shared_resources {
102 /* Bit n == 1 means VMID n is available for KFD. */ 129 /* Bit n == 1 means VMID n is available for KFD. */
103 unsigned int compute_vmid_bitmap; 130 unsigned int compute_vmid_bitmap;
@@ -153,6 +180,7 @@ struct tile_config {
153 uint32_t num_ranks; 180 uint32_t num_ranks;
154}; 181};
155 182
183#define KFD_MAX_NUM_OF_QUEUES_PER_DEVICE_DEFAULT 4096
156 184
157/* 185/*
158 * Allocation flag domains 186 * Allocation flag domains