From: Oded Gabbay <oded.gabbay@gmail.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>,
Andrew Lewycky <Andrew.Lewycky@amd.com>,
Joerg Roedel <joro@8bytes.org>, Oded Gabbay <oded.gabbay@amd.com>
Subject: [PATCH 76/83] hsa/radeon: Check oversubscription before destroying runlist
Date: Fri, 11 Jul 2014 00:54:32 +0300 [thread overview]
Message-ID: <1405029279-6894-48-git-send-email-oded.gabbay@amd.com> (raw)
In-Reply-To: <1405029279-6894-1-git-send-email-oded.gabbay@amd.com>
This patch fixes a bug when using the mode of CP hardware
scheduling without oversubscription.
The bug was that the oversubscription check was performed
_after_ the current runlist was destroyed, which caused
the current HSA application to stop working.
This patch moves the oversubscription check before the call
to destroy the current runlist. If there is oversubscription,
the function prints an error to dmesg and simply exits.
Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
---
drivers/gpu/hsa/radeon/kfd_packet_manager.c | 3 ---
drivers/gpu/hsa/radeon/kfd_process_queue_manager.c | 9 +++++++++
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/hsa/radeon/kfd_packet_manager.c b/drivers/gpu/hsa/radeon/kfd_packet_manager.c
index 5cd23b0..0aef907 100644
--- a/drivers/gpu/hsa/radeon/kfd_packet_manager.c
+++ b/drivers/gpu/hsa/radeon/kfd_packet_manager.c
@@ -88,9 +88,6 @@ static int pm_allocate_runlist_ib(struct packet_manager *pm, unsigned int **rl_b
BUG_ON(is_over_subscription == NULL);
pm_calc_rlib_size(pm, rl_buffer_size, is_over_subscription);
- if (*is_over_subscription &&
- sched_policy == KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION)
- return -EFAULT;
retval = radeon_kfd_vidmem_alloc_map(pm->dqm->dev, &pm->ib_buffer_obj, (void **)rl_buffer,
rl_gpu_buffer, ALIGN(*rl_buffer_size, PAGE_SIZE));
diff --git a/drivers/gpu/hsa/radeon/kfd_process_queue_manager.c b/drivers/gpu/hsa/radeon/kfd_process_queue_manager.c
index 5d7c46d..97b3cc6 100644
--- a/drivers/gpu/hsa/radeon/kfd_process_queue_manager.c
+++ b/drivers/gpu/hsa/radeon/kfd_process_queue_manager.c
@@ -174,6 +174,15 @@ int pqm_create_queue(struct process_queue_manager *pqm,
switch (type) {
case KFD_QUEUE_TYPE_COMPUTE:
+ /* check if there is over subscription */
+ if ((sched_policy == KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION) &&
+ ((dev->dqm->processes_count >= VMID_PER_DEVICE) ||
+ (dev->dqm->queue_count >= PIPE_PER_ME_CP_SCHEDULING * QUEUES_PER_PIPE))) {
+ pr_err("kfd: over-subscription is not allowed in radeon_kfd.sched_policy == 1\n");
+ retval = -EPERM;
+ goto err_create_queue;
+ }
+
retval = create_cp_queue(pqm, dev, &q, &q_properties, f, *qid);
if (retval != 0)
goto err_create_queue;
--
1.9.1
next prev parent reply other threads:[~2014-07-10 21:57 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-10 21:53 [PATCH 29/83] hsa/radeon: Fix memory size allocated for HPD Oded Gabbay
2014-07-10 21:53 ` [PATCH 30/83] hsa/radeon: Fix list of supported devices Oded Gabbay
2014-07-10 21:53 ` [PATCH 31/83] drm/radeon: extending kfd-kgd interface Oded Gabbay
2014-07-10 21:53 ` [PATCH 32/83] hsa/radeon: implementing IOCTL for clock counters Oded Gabbay
2014-07-11 20:34 ` Jerome Glisse
2014-07-10 21:53 ` [PATCH 33/83] hsa/radeon: Fix coding style in cik_int.h Oded Gabbay
2014-07-10 21:53 ` [PATCH 34/83] drm/radeon: adding synchronization for GRBM GFX Oded Gabbay
2014-07-10 21:53 ` [PATCH 35/83] hsa/radeon: Print ioctl commnad only in debug mode Oded Gabbay
2014-07-10 21:53 ` [PATCH 36/83] hsa/radeon: fixing clock counters bug Oded Gabbay
2014-07-10 21:53 ` [PATCH 37/83] hsa/radeon: Print ISR info only in debug mode Oded Gabbay
2014-07-10 21:53 ` [PATCH 38/83] hsa/radeon: Workaround for a bug in amd_iommu Oded Gabbay
2014-07-11 8:42 ` Joerg Roedel
2014-07-10 21:53 ` [PATCH 39/83] drm/radeon: Extending kfd interface Oded Gabbay
2014-07-10 21:53 ` [PATCH 40/83] hsa/radeon: Adding max clock speeds to topology Oded Gabbay
2014-07-10 21:53 ` [PATCH 41/83] hsa/radeon: Alternating the source of max clock Oded Gabbay
2014-07-10 21:53 ` [PATCH 42/83] hsa/radeon: 32-bit processes support Oded Gabbay
2014-07-10 21:53 ` [PATCH 43/83] hsa/radeon: NULL pointer dereference bug workaround Oded Gabbay
2014-07-10 21:54 ` [PATCH 44/83] hsa/radeon: HSA64/HSA32 modes support Oded Gabbay
2014-07-11 20:41 ` Jerome Glisse
2014-07-10 21:54 ` [PATCH 45/83] hsa/radeon: debugging print statements Oded Gabbay
2014-07-10 21:54 ` [PATCH 46/83] hsa/radeon: Add queue and hw_pointer_store modules Oded Gabbay
2014-07-10 21:54 ` [PATCH 47/83] hsa/radeon: Add support allocating kernel doorbells Oded Gabbay
2014-07-10 21:54 ` [PATCH 48/83] hsa/radeon: Add mqd_manager module Oded Gabbay
2014-07-10 21:54 ` [PATCH 49/83] hsa/radeon: Add kernel queue support for KFD Oded Gabbay
2014-07-10 21:54 ` [PATCH 50/83] hsa/radeon: Add module parameter of scheduling policy Oded Gabbay
2014-07-10 21:54 ` [PATCH 51/83] hsa/radeon: Add packet manager module Oded Gabbay
2014-07-10 21:54 ` [PATCH 52/83] hsa/radeon: Add process queue " Oded Gabbay
2014-07-10 21:54 ` [PATCH 53/83] hsa/radeon: Add device " Oded Gabbay
2014-07-10 21:54 ` [PATCH 54/83] hsa/radeon: Switch to new queue scheduler Oded Gabbay
2014-07-10 21:54 ` [PATCH 55/83] hsa/radeon: Add IOCTL for update queue Oded Gabbay
2014-07-10 21:54 ` [PATCH 56/83] hsa/radeon: Queue Management integration with Memory Management Oded Gabbay
2014-07-10 21:54 ` [PATCH 57/83] hsa/radeon: Eliminate warnings in compilation Oded Gabbay
2014-07-10 21:54 ` [PATCH 58/83] hsa/radeon: Various kernel styling fixes Oded Gabbay
2014-07-10 21:54 ` [PATCH 59/83] hsa/radeon: Exclusive access for perf. counters Oded Gabbay
2014-07-10 21:54 ` [PATCH 60/83] hsa/radeon: Rearrange structures in kfd_ioctl.h Oded Gabbay
2014-07-10 21:54 ` [PATCH 61/83] hsa/radeon: change another pr_info to pr_debug Oded Gabbay
2014-07-10 21:54 ` [PATCH 62/83] hsa/radeon: Fix timeout calculation in sync_with_hw Oded Gabbay
2014-07-10 21:54 ` [PATCH 63/83] hsa/radeon: Update module information and version Oded Gabbay
2014-07-10 21:54 ` [PATCH 64/83] hsa/radeon: update queue fault handling Oded Gabbay
2014-07-10 21:54 ` [PATCH 65/83] hsa/radeon: fixing a bug to support 32b processes Oded Gabbay
2014-07-10 21:54 ` [PATCH 66/83] hsa/radeon: Fix number of pipes per ME Oded Gabbay
2014-07-10 21:54 ` [PATCH 67/83] hsa/radeon: Removing hw pointer store module Oded Gabbay
2014-07-10 21:54 ` [PATCH 68/83] hsa/radeon: Update module version to 0.6.0 Oded Gabbay
2014-07-10 21:54 ` [PATCH 69/83] hsa/radeon: Fix initialization of sh_mem registers Oded Gabbay
2014-07-10 21:54 ` [PATCH 70/83] hsa/radeon: Fix compilation warnings Oded Gabbay
2014-07-10 21:54 ` [PATCH 71/83] hsa/radeon: Remove old scheduler code Oded Gabbay
2014-07-10 21:54 ` [PATCH 72/83] hsa/radeon: Static analysis (smatch) fixes Oded Gabbay
2014-07-10 21:54 ` [PATCH 73/83] hsa/radeon: Adding qcm fence return status Oded Gabbay
2014-07-10 21:54 ` [PATCH 74/83] hsa/radeon: Adding some error messages Oded Gabbay
2014-07-10 21:54 ` [PATCH 75/83] hsa/radeon: Fixing minor issues with kernel queues (DIQ) Oded Gabbay
2014-07-10 21:54 ` Oded Gabbay [this message]
2014-07-10 21:54 ` [PATCH 77/83] hsa/radeon: Add local memory to topology Oded Gabbay
2014-07-10 21:54 ` [PATCH 78/83] hsa/radeon: Don't verify cksum when parsing CRAT table Oded Gabbay
2014-07-10 21:54 ` [PATCH 79/83] hsa/radeon: Update module version to 0.6.1 Oded Gabbay
2014-07-10 21:54 ` [PATCH 80/83] drm/radeon: Add register access functions to kfd2kgd interface Oded Gabbay
2014-07-10 21:54 ` [PATCH 81/83] hsa/radeon: Eliminating all direct register accesses Oded Gabbay
2014-07-10 21:54 ` [PATCH 82/83] drm/radeon: Remove lock functions from kfd2kgd interface Oded Gabbay
2014-07-10 21:54 ` [PATCH 83/83] hsa/radeon: Update module version to 0.6.2 Oded Gabbay
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=1405029279-6894-48-git-send-email-oded.gabbay@amd.com \
--to=oded.gabbay@gmail.com \
--cc=Andrew.Lewycky@amd.com \
--cc=John.Bridgman@amd.com \
--cc=airlied@linux.ie \
--cc=alexander.deucher@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=j.glisse@gmail.com \
--cc=joro@8bytes.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oded.gabbay@amd.com \
/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
Powered by JetHome