All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Marek Olšák" <maraeo@gmail.com>
To: "Christian König" <deathsimple@vodafone.de>
Cc: dri-devel <dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH 1/3] drm/radeon: stop poisoning the GART TLB
Date: Fri, 13 Jun 2014 15:19:34 +0200	[thread overview]
Message-ID: <CAAxE2A4HDf3pzfdz4pA7m=etD=RDYf77AobWSZOKiEnVQV8nOw@mail.gmail.com> (raw)
In-Reply-To: <53998D99.6050008@vodafone.de>

[-- Attachment #1: Type: text/plain, Size: 3625 bytes --]

Hi,

With my "force_gtt" patch, Cape Verde is unstable too, so all GCN
chips are affected.

I recommend applying that patch, because it will reproduce the problem
faster. Without it, the hangs are very rare and it may take a while
before they occur.

Marek

On Thu, Jun 12, 2014 at 1:23 PM, Christian König
<deathsimple@vodafone.de> wrote:
> Please do so, and you might want to try 3.15.0 as well.
>
> I've tested multiple piglit runs over night with my Bonaire and 3.15.0 and
> that seemed to work perfectly fine.
>
> Going to test Alex drm-next-3.16 a bit more as well.
>
> Christian.
>
> Am 11.06.2014 12:56, schrieb Marek Olšák:
>
>> I only tested Bonaire. I can test Cape Verde if needed.
>>
>> Marek
>>
>> On Wed, Jun 11, 2014 at 11:29 AM, Christian König
>> <deathsimple@vodafone.de> wrote:
>>>
>>> Crap, I already wanted to check back with you if that really fixes your
>>> problems.
>>>
>>> Thanks for the info, this crash also only happens on CIK doesn't it?
>>>
>>> Christian.
>>>
>>> Am 11.06.2014 01:30, schrieb Marek Olšák:
>>>
>>>> Sorry to tell you the bad news. This patch doesn't fix the hangs on my
>>>> machine.
>>>>
>>>> I tested drm-next-3.16 from Alex's tree. I also switched copying from
>>>> SDMA to CP DMA, which hung too.
>>>>
>>>> I also tried this:
>>>>
>>>> git checkout (the problematic commit):
>>>> 6d2f294 - drm/radeon: use normal BOs for the page tables v4
>>>>
>>>> git cherry-pick (fixes):
>>>> 0e97703c - drm/radeon: add define for flags used in R600+ GTT
>>>> 0986c1a5 - drm/radeon: stop poisoning the GART TLB
>>>> 4906f689 - drm/radeon: fix page directory update size estimation
>>>> 4b095566 - drm/radeon: fix buffer placement under memory pressure v2
>>>>
>>>> Then I tested both SDMA and CP DMA copying. Both were unstable.
>>>>
>>>> Testing was done with piglit / quick.tests.
>>>>
>>>> Marek
>>>>
>>>>
>>>> On Wed, Jun 4, 2014 at 3:29 PM, Christian König
>>>> <deathsimple@vodafone.de>
>>>> wrote:
>>>>>
>>>>> From: Christian König <christian.koenig@amd.com>
>>>>>
>>>>> When we set the valid bit on invalid GART entries they are
>>>>> loaded into the TLB when an adjacent entry is loaded. This
>>>>> poisons the TLB with invalid entries which are sometimes
>>>>> not correctly removed on TLB flush.
>>>>>
>>>>> For stable inclusion the patch probably needs to be modified a bit.
>>>>>
>>>>> Signed-off-by: Christian König <christian.koenig@amd.com>
>>>>> Cc: stable@vger.kernel.org
>>>>> ---
>>>>>    drivers/gpu/drm/radeon/rs600.c | 5 ++++-
>>>>>    1 file changed, 4 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/gpu/drm/radeon/rs600.c
>>>>> b/drivers/gpu/drm/radeon/rs600.c
>>>>> index 0a8be63..e0465b2 100644
>>>>> --- a/drivers/gpu/drm/radeon/rs600.c
>>>>> +++ b/drivers/gpu/drm/radeon/rs600.c
>>>>> @@ -634,7 +634,10 @@ int rs600_gart_set_page(struct radeon_device
>>>>> *rdev,
>>>>> int i, uint64_t addr)
>>>>>                   return -EINVAL;
>>>>>           }
>>>>>           addr = addr & 0xFFFFFFFFFFFFF000ULL;
>>>>> -       addr |= R600_PTE_GART;
>>>>> +       if (addr == rdev->dummy_page.addr)
>>>>> +               addr |= R600_PTE_SYSTEM | R600_PTE_SNOOPED;
>>>>> +       else
>>>>> +               addr |= R600_PTE_GART;
>>>>>           writeq(addr, ptr + (i * 8));
>>>>>           return 0;
>>>>>    }
>>>>> --
>>>>> 1.9.1
>>>>>
>>>>> _______________________________________________
>>>>> dri-devel mailing list
>>>>> dri-devel@lists.freedesktop.org
>>>>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>>>
>>>
>

[-- Attachment #2: 0001-force_gtt.patch --]
[-- Type: text/x-patch, Size: 1537 bytes --]

From 504c27c21131f0a2b472e8531ed4630454fe1471 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= <marek.olsak@amd.com>
Date: Fri, 13 Jun 2014 15:17:26 +0200
Subject: [PATCH] force_gtt

---
 drivers/gpu/drm/radeon/radeon_vm.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/gpu/drm/radeon/radeon_vm.c b/drivers/gpu/drm/radeon/radeon_vm.c
index c11b71d..67f7658 100644
--- a/drivers/gpu/drm/radeon/radeon_vm.c
+++ b/drivers/gpu/drm/radeon/radeon_vm.c
@@ -116,6 +116,19 @@ void radeon_vm_manager_fini(struct radeon_device *rdev)
 	rdev->vm_manager.enabled = false;
 }
 
+static void force_gtt(struct radeon_bo *bo)
+{
+	if (radeon_bo_reserve(bo, false))
+		return;
+
+	radeon_ttm_placement_from_domain(bo, RADEON_GEM_DOMAIN_GTT);
+
+	if (ttm_bo_validate(&bo->tbo, &bo->placement, true, false)) {
+		DRM_ERROR("failed to force a GTT placement\n");
+	}
+	radeon_bo_unreserve(bo);
+}
+
 /**
  * radeon_vm_get_bos - add the vm BOs to a validation list
  *
@@ -147,6 +160,8 @@ struct radeon_cs_reloc *radeon_vm_get_bos(struct radeon_device *rdev,
 	list[0].handle = 0;
 	list_add(&list[0].tv.head, head);
 
+	force_gtt(vm->page_directory);
+
 	for (i = 0, idx = 1; i <= vm->max_pde_used; i++) {
 		if (!vm->page_tables[i].bo)
 			continue;
@@ -159,6 +174,8 @@ struct radeon_cs_reloc *radeon_vm_get_bos(struct radeon_device *rdev,
 		list[idx].tiling_flags = 0;
 		list[idx].handle = 0;
 		list_add(&list[idx++].tv.head, head);
+
+		force_gtt(vm->page_tables[i].bo);
 	}
 
 	return list;
-- 
1.9.1


[-- Attachment #3: Type: text/plain, Size: 159 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2014-06-13 13:20 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-04 13:29 [PATCH 1/3] drm/radeon: stop poisoning the GART TLB Christian König
2014-06-04 13:29 ` [PATCH 2/3] drm/radeon: remove range check from *_gart_set_page Christian König
2014-06-04 13:29 ` [PATCH 3/3] drm/radeon: use the SDMA on for buffer moves on CIK again Christian König
2014-06-04 13:46 ` [PATCH 1/3] drm/radeon: stop poisoning the GART TLB Alex Deucher
2014-06-04 13:50   ` Christian König
2014-06-10 23:30 ` Marek Olšák
2014-06-11  9:29   ` Christian König
2014-06-11 10:56     ` Marek Olšák
2014-06-12 11:23       ` Christian König
2014-06-13 13:19         ` Marek Olšák [this message]
2014-06-13 15:45           ` Christian König
2014-06-13 21:31             ` Alex Deucher
2014-06-15 12:48               ` Christian König
2014-06-19  1:48                 ` Michel Dänzer
2014-06-19  9:45                   ` Christian König
2014-06-23  8:15                     ` Michel Dänzer
2014-06-23  9:56                       ` Christian König
2014-06-24  6:49                         ` Michel Dänzer
2014-06-24 10:14                           ` Christian König
2014-06-25  3:59                             ` Michel Dänzer
2014-06-26 12:25                               ` Dieter Nützel
2014-06-27  2:31                               ` Michel Dänzer
2014-06-27  8:26                                 ` Christian König
2014-06-27  8:59                                   ` Michel Dänzer
2014-06-29 10:34                                     ` Christian König
2014-06-30  6:10                                       ` Michel Dänzer
2014-06-30  7:43                                         ` Christian König
2014-07-01  6:48                                           ` Michel Dänzer
2014-07-01 12:16                                             ` Christian König
2014-07-02  6:57                                               ` Michel Dänzer
2014-07-02 19:31                                                 ` Christian König
2014-07-03  3:48                                                   ` Michel Dänzer
2014-07-03  6:36                                                     ` Christian König
2014-06-19 10:20                   ` Marek Olšák
2014-06-19 10:25                     ` Christian König
2014-06-20  1:10                     ` Michel Dänzer

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='CAAxE2A4HDf3pzfdz4pA7m=etD=RDYf77AobWSZOKiEnVQV8nOw@mail.gmail.com' \
    --to=maraeo@gmail.com \
    --cc=deathsimple@vodafone.de \
    --cc=dri-devel@lists.freedesktop.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.