From: Oded Gabbay <oded.gabbay@amd.com>
To: David Airlie <airlied@linux.ie>,
Alex Deucher <alexander.deucher@amd.com>,
Jerome Glisse <j.glisse@gmail.com>
Cc: <linux-kernel@vger.kernel.org>, <dri-devel@lists.freedesktop.org>,
"John Bridgman" <John.Bridgman@amd.com>,
Ben Goz <ben.goz@amd.com>, Oded Gabbay <oded.gabbay@amd.com>,
Evgeny Pinchuk <evgeny.pinchuk@amd.com>,
Jay Cornwall <jay.cornwall@amd.com>,
Alexey Skidanov <Alexey.Skidanov@amd.com>,
"Andrew Lewycky" <Andrew.Lewycky@amd.com>
Subject: [PATCH v5 15/24] amdkfd: Add module parameter of scheduling policy
Date: Sat, 8 Nov 2014 20:37:36 +0200 [thread overview]
Message-ID: <1415471865-1893-16-git-send-email-oded.gabbay@amd.com> (raw)
In-Reply-To: <1415471865-1893-1-git-send-email-oded.gabbay@amd.com>
From: Ben Goz <ben.goz@amd.com>
This patch adds a new parameter to the amdkfd driver. This parameter enables
the user to select the scheduling policy of the CP. The choices are:
* CP Scheduling with support for over-subscription
* CP Scheduling without support for over-subscription
* Without CP Scheduling
Note that the third option (Without CP scheduling) is only for debug purposes
and bringup of new H/W. As such, it is _not_ guaranteed to work at all times on
all H/W versions.
v3: Fixed description of parameter, changed the permissions to read_only, added
a verification of the value and added documentation
v5: Set default sched_policy to HWS as it is now supported by firmware
Signed-off-by: Ben Goz <ben.goz@amd.com>
Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
---
drivers/gpu/drm/amd/amdkfd/kfd_module.c | 18 +++++++++++++++---
drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 30 ++++++++++++++++++++++++++++++
2 files changed, 45 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_module.c b/drivers/gpu/drm/amd/amdkfd/kfd_module.c
index 56a71d8..0858dce 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_module.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_module.c
@@ -29,10 +29,10 @@
#define KFD_DRIVER_AUTHOR "AMD Inc. and others"
#define KFD_DRIVER_DESC "Standalone HSA driver for AMD's GPUs"
-#define KFD_DRIVER_DATE "20140804"
+#define KFD_DRIVER_DATE "20140807"
#define KFD_DRIVER_MAJOR 0
-#define KFD_DRIVER_MINOR 6
-#define KFD_DRIVER_PATCHLEVEL 4
+#define KFD_DRIVER_MINOR 8
+#define KFD_DRIVER_PATCHLEVEL 0
const struct kfd2kgd_calls *kfd2kgd;
static const struct kgd2kfd_calls kgd2kfd = {
@@ -45,6 +45,11 @@ static const struct kgd2kfd_calls kgd2kfd = {
.resume = kgd2kfd_resume,
};
+int sched_policy = KFD_SCHED_POLICY_HWS;
+module_param(sched_policy, int, 0444);
+MODULE_PARM_DESC(sched_policy,
+ "Kernel cmdline parameter that defines the amdkfd scheduling policy");
+
int max_num_of_processes = KFD_MAX_NUM_OF_PROCESSES_DEFAULT;
module_param(max_num_of_processes, int, 0444);
MODULE_PARM_DESC(max_num_of_processes,
@@ -88,6 +93,13 @@ static int __init kfd_module_init(void)
kfd2kgd = NULL;
/* Verify module parameters */
+ if ((sched_policy < KFD_SCHED_POLICY_HWS) ||
+ (sched_policy > KFD_SCHED_POLICY_NO_HWS)) {
+ pr_err("kfd: sched_policy has invalid value\n");
+ return -1;
+ }
+
+ /* Verify module parameters */
if ((max_num_of_processes < 0) ||
(max_num_of_processes > KFD_MAX_NUM_OF_PROCESSES)) {
pr_err("kfd: max_num_of_processes must be between 0 to KFD_MAX_NUM_OF_PROCESSES\n");
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
index bba3c2a..32bca8a 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
@@ -69,6 +69,36 @@ extern int max_num_of_queues_per_process;
#define KFD_KERNEL_QUEUE_SIZE 2048
+/* Kernel module parameter to specify the scheduling policy */
+extern int sched_policy;
+
+/**
+ * enum kfd_sched_policy
+ *
+ * @KFD_SCHED_POLICY_HWS: H/W scheduling policy known as command processor (cp)
+ * scheduling. In this scheduling mode we're using the firmware code to
+ * schedule the user mode queues and kernel queues such as HIQ and DIQ.
+ * the HIQ queue is used as a special queue that dispatches the configuration
+ * to the cp and the user mode queues list that are currently running.
+ * the DIQ queue is a debugging queue that dispatches debugging commands to the
+ * firmware.
+ * in this scheduling mode user mode queues over subscription feature is
+ * enabled.
+ *
+ * @KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION: The same as above but the over
+ * subscription feature disabled.
+ *
+ * @KFD_SCHED_POLICY_NO_HWS: no H/W scheduling policy is a mode which directly
+ * set the command processor registers and sets the queues "manually". This
+ * mode is used *ONLY* for debugging proposes.
+ *
+ */
+enum kfd_sched_policy {
+ KFD_SCHED_POLICY_HWS = 0,
+ KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION,
+ KFD_SCHED_POLICY_NO_HWS
+};
+
enum cache_policy {
cache_policy_coherent,
cache_policy_noncoherent
--
2.1.0
next prev parent reply other threads:[~2014-11-08 18:43 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-08 18:37 [PATCH v5 00/24] AMDKFD Kernel Driver Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 01/24] drm/radeon: reduce number of free VMIDs and pipes in KV Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 02/24] drm/radeon/cik: Don't touch int of pipes 1-7 Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 03/24] drm/radeon: Report doorbell configuration to amdkfd Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 04/24] drm/radeon: adding synchronization for GRBM GFX Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 05/24] drm/radeon: Add radeon <--> amdkfd interface Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 06/24] Update MAINTAINERS and CREDITS files with amdkfd info Oded Gabbay
2014-11-08 18:46 ` Joe Perches
2014-11-08 18:59 ` Oded Gabbay
2014-11-08 20:54 ` Joe Perches
2014-11-08 19:01 ` Josh Triplett
2014-11-08 20:49 ` Joe Perches
2014-11-09 3:50 ` Josh Triplett
2014-11-08 18:37 ` [PATCH v5 07/24] amdkfd: Add IOCTL set definitions of amdkfd Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 08/24] amdkfd: Add amdkfd skeleton driver Oded Gabbay
2014-11-21 10:24 ` Paul Bolle
2014-11-21 19:34 ` Oded Gabbay
2014-11-21 20:18 ` Borislav Petkov
2014-11-08 18:37 ` [PATCH v5 09/24] amdkfd: Add topology module to amdkfd Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 10/24] amdkfd: Add basic modules " Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 11/24] amdkfd: Add binding/unbinding calls to amd_iommu driver Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 12/24] amdkfd: Add queue module Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 13/24] amdkfd: Add mqd_manager module Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 14/24] amdkfd: Add kernel queue module Oded Gabbay
2014-11-08 18:37 ` Oded Gabbay [this message]
2014-11-08 18:37 ` [PATCH v5 16/24] amdkfd: Add packet manager module Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 17/24] amdkfd: Add process queue " Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 18/24] amdkfd: Add device " Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 19/24] amdkfd: Add interrupt handling module Oded Gabbay
2014-11-08 18:37 ` [PATCH v5 20/24] amdkfd: Implement the create/destroy/update queue IOCTLs Oded Gabbay
2014-11-08 18:50 ` [PATCH v5 21/24] amdkfd: Implement the Set Memory Policy IOCTL Oded Gabbay
2014-11-08 18:54 ` [PATCH v5 22/24] amdkfd: Implement the Get Clock Counters IOCTL Oded Gabbay
2014-11-08 18:54 ` [PATCH v5 23/24] amdkfd: Implement the Get Process Aperture IOCTL Oded Gabbay
2014-11-08 18:55 ` [PATCH v5 24/24] amdkfd: Implement the Get Version IOCTL Oded Gabbay
2014-11-10 2:34 ` [PATCH v5 00/24] AMDKFD Kernel Driver Dave Airlie
2014-11-10 7:36 ` Oded Gabbay
2014-11-10 21:16 ` Dave Airlie
2014-11-10 21:20 ` Alex Deucher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1415471865-1893-16-git-send-email-oded.gabbay@amd.com \
--to=oded.gabbay@amd.com \
--cc=Alexey.Skidanov@amd.com \
--cc=Andrew.Lewycky@amd.com \
--cc=John.Bridgman@amd.com \
--cc=airlied@linux.ie \
--cc=alexander.deucher@amd.com \
--cc=ben.goz@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=evgeny.pinchuk@amd.com \
--cc=j.glisse@gmail.com \
--cc=jay.cornwall@amd.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox