* [PATCH] drm/radeon: Don't flush the GART TLB if rdev->gart.ptr == NULL
@ 2015-07-03 1:02 Michel Dänzer
2015-07-03 9:46 ` Christian König
2015-07-03 19:27 ` Alex Deucher
0 siblings, 2 replies; 3+ messages in thread
From: Michel Dänzer @ 2015-07-03 1:02 UTC (permalink / raw)
To: dri-devel
From: Michel Dänzer <michel.daenzer@amd.com>
This can be the case when the GPU is powered off, e.g. via vgaswitcheroo
or runpm. When the GPU is powered up again, radeon_gart_table_vram_pin
flushes the TLB after setting rdev->gart.ptr to non-NULL.
Fixes panic on powering off R7xx GPUs.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61529
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---
drivers/gpu/drm/radeon/radeon_gart.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/radeon/radeon_gart.c b/drivers/gpu/drm/radeon/radeon_gart.c
index 5450fa9..c4777c8 100644
--- a/drivers/gpu/drm/radeon/radeon_gart.c
+++ b/drivers/gpu/drm/radeon/radeon_gart.c
@@ -260,8 +260,10 @@ void radeon_gart_unbind(struct radeon_device *rdev, unsigned offset,
}
}
}
- mb();
- radeon_gart_tlb_flush(rdev);
+ if (rdev->gart.ptr) {
+ mb();
+ radeon_gart_tlb_flush(rdev);
+ }
}
/**
@@ -306,8 +308,10 @@ int radeon_gart_bind(struct radeon_device *rdev, unsigned offset,
page_base += RADEON_GPU_PAGE_SIZE;
}
}
- mb();
- radeon_gart_tlb_flush(rdev);
+ if (rdev->gart.ptr) {
+ mb();
+ radeon_gart_tlb_flush(rdev);
+ }
return 0;
}
--
2.1.4
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] drm/radeon: Don't flush the GART TLB if rdev->gart.ptr == NULL
2015-07-03 1:02 [PATCH] drm/radeon: Don't flush the GART TLB if rdev->gart.ptr == NULL Michel Dänzer
@ 2015-07-03 9:46 ` Christian König
2015-07-03 19:27 ` Alex Deucher
1 sibling, 0 replies; 3+ messages in thread
From: Christian König @ 2015-07-03 9:46 UTC (permalink / raw)
To: Michel Dänzer, dri-devel
On 03.07.2015 03:02, Michel Dänzer wrote:
> From: Michel Dänzer <michel.daenzer@amd.com>
>
> This can be the case when the GPU is powered off, e.g. via vgaswitcheroo
> or runpm. When the GPU is powered up again, radeon_gart_table_vram_pin
> flushes the TLB after setting rdev->gart.ptr to non-NULL.
>
> Fixes panic on powering off R7xx GPUs.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61529
> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
> ---
> drivers/gpu/drm/radeon/radeon_gart.c | 12 ++++++++----
> 1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_gart.c b/drivers/gpu/drm/radeon/radeon_gart.c
> index 5450fa9..c4777c8 100644
> --- a/drivers/gpu/drm/radeon/radeon_gart.c
> +++ b/drivers/gpu/drm/radeon/radeon_gart.c
> @@ -260,8 +260,10 @@ void radeon_gart_unbind(struct radeon_device *rdev, unsigned offset,
> }
> }
> }
> - mb();
> - radeon_gart_tlb_flush(rdev);
> + if (rdev->gart.ptr) {
> + mb();
> + radeon_gart_tlb_flush(rdev);
> + }
> }
>
> /**
> @@ -306,8 +308,10 @@ int radeon_gart_bind(struct radeon_device *rdev, unsigned offset,
> page_base += RADEON_GPU_PAGE_SIZE;
> }
> }
> - mb();
> - radeon_gart_tlb_flush(rdev);
> + if (rdev->gart.ptr) {
> + mb();
> + radeon_gart_tlb_flush(rdev);
> + }
> return 0;
> }
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] drm/radeon: Don't flush the GART TLB if rdev->gart.ptr == NULL
2015-07-03 1:02 [PATCH] drm/radeon: Don't flush the GART TLB if rdev->gart.ptr == NULL Michel Dänzer
2015-07-03 9:46 ` Christian König
@ 2015-07-03 19:27 ` Alex Deucher
1 sibling, 0 replies; 3+ messages in thread
From: Alex Deucher @ 2015-07-03 19:27 UTC (permalink / raw)
To: Michel Dänzer; +Cc: Maling list - DRI developers
On Thu, Jul 2, 2015 at 9:02 PM, Michel Dänzer <michel@daenzer.net> wrote:
> From: Michel Dänzer <michel.daenzer@amd.com>
>
> This can be the case when the GPU is powered off, e.g. via vgaswitcheroo
> or runpm. When the GPU is powered up again, radeon_gart_table_vram_pin
> flushes the TLB after setting rdev->gart.ptr to non-NULL.
>
> Fixes panic on powering off R7xx GPUs.
This is a nice safely measure, but the underlying issue is that the
acpiphp code is broken again on some boards and attempts to remove the
device after the driver has already suspended the driver for runtime
pm. So the the driver's pci_remove callback ends up being called
after the driver has already been suspended and the the hw has been
disabled.
Alex
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61529
> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
> ---
> drivers/gpu/drm/radeon/radeon_gart.c | 12 ++++++++----
> 1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_gart.c b/drivers/gpu/drm/radeon/radeon_gart.c
> index 5450fa9..c4777c8 100644
> --- a/drivers/gpu/drm/radeon/radeon_gart.c
> +++ b/drivers/gpu/drm/radeon/radeon_gart.c
> @@ -260,8 +260,10 @@ void radeon_gart_unbind(struct radeon_device *rdev, unsigned offset,
> }
> }
> }
> - mb();
> - radeon_gart_tlb_flush(rdev);
> + if (rdev->gart.ptr) {
> + mb();
> + radeon_gart_tlb_flush(rdev);
> + }
> }
>
> /**
> @@ -306,8 +308,10 @@ int radeon_gart_bind(struct radeon_device *rdev, unsigned offset,
> page_base += RADEON_GPU_PAGE_SIZE;
> }
> }
> - mb();
> - radeon_gart_tlb_flush(rdev);
> + if (rdev->gart.ptr) {
> + mb();
> + radeon_gart_tlb_flush(rdev);
> + }
> return 0;
> }
>
> --
> 2.1.4
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-07-03 19:27 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-03 1:02 [PATCH] drm/radeon: Don't flush the GART TLB if rdev->gart.ptr == NULL Michel Dänzer
2015-07-03 9:46 ` Christian König
2015-07-03 19:27 ` Alex Deucher
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.