Re: [PATCH] drm/radeon: avoid warnings from r600/eg irq handlers on powered off card.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jun 17, 2011 at 11:59 PM, Dave Airlie <airlied@xxxxxxxxx> wrote:
> From: Dave Airlie <airlied@xxxxxxxxxx>
>
> Since we were calling the wptr function before checking if the IH was
> even enabled, or the GPU wasn't shutdown, we'd get spam in the logs when
> the GPU readback 0xffffffff. This reorders things so we return early
> in the no IH and GPU shutdown cases.
>
> Reported-and-tested-by: ManDay on #radeon
> Signed-off-by: Dave Airlie <airlied@xxxxxxxxxx>

Looks good.

Reviewed-by: Alex Deucher <alexdeucher@xxxxxxxxx>

> ---
>  drivers/gpu/drm/radeon/evergreen.c |   17 +++++++----------
>  drivers/gpu/drm/radeon/r600.c      |   15 +++++++--------
>  2 files changed, 14 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
> index 7e3d96e..7162b7b 100644
> --- a/drivers/gpu/drm/radeon/evergreen.c
> +++ b/drivers/gpu/drm/radeon/evergreen.c
> @@ -2695,28 +2695,25 @@ static inline u32 evergreen_get_ih_wptr(struct radeon_device *rdev)
>
>  int evergreen_irq_process(struct radeon_device *rdev)
>  {
> -       u32 wptr = evergreen_get_ih_wptr(rdev);
> -       u32 rptr = rdev->ih.rptr;
> +       u32 wptr;
> +       u32 rptr;
>        u32 src_id, src_data;
>        u32 ring_index;
>        unsigned long flags;
>        bool queue_hotplug = false;
>
> -       DRM_DEBUG("r600_irq_process start: rptr %d, wptr %d\n", rptr, wptr);
> -       if (!rdev->ih.enabled)
> +       if (!rdev->ih.enabled || rdev->shutdown)
>                return IRQ_NONE;
>
> -       spin_lock_irqsave(&rdev->ih.lock, flags);
> +       wptr = evergreen_get_ih_wptr(rdev);
> +       rptr = rdev->ih.rptr;
> +       DRM_DEBUG("r600_irq_process start: rptr %d, wptr %d\n", rptr, wptr);
>
> +       spin_lock_irqsave(&rdev->ih.lock, flags);
>        if (rptr == wptr) {
>                spin_unlock_irqrestore(&rdev->ih.lock, flags);
>                return IRQ_NONE;
>        }
> -       if (rdev->shutdown) {
> -               spin_unlock_irqrestore(&rdev->ih.lock, flags);
> -               return IRQ_NONE;
> -       }
> -
>  restart_ih:
>        /* display interrupts */
>        evergreen_irq_ack(rdev);
> diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
> index 7dd45ca..dc9fde3 100644
> --- a/drivers/gpu/drm/radeon/r600.c
> +++ b/drivers/gpu/drm/radeon/r600.c
> @@ -3294,27 +3294,26 @@ static inline u32 r600_get_ih_wptr(struct radeon_device *rdev)
>
>  int r600_irq_process(struct radeon_device *rdev)
>  {
> -       u32 wptr = r600_get_ih_wptr(rdev);
> -       u32 rptr = rdev->ih.rptr;
> +       u32 wptr;
> +       u32 rptr;
>        u32 src_id, src_data;
>        u32 ring_index;
>        unsigned long flags;
>        bool queue_hotplug = false;
>
> -       DRM_DEBUG("r600_irq_process start: rptr %d, wptr %d\n", rptr, wptr);
> -       if (!rdev->ih.enabled)
> +       if (!rdev->ih.enabled || rdev->shutdown)
>                return IRQ_NONE;
>
> +       wptr = r600_get_ih_wptr(rdev);
> +       rptr = rdev->ih.rptr;
> +       DRM_DEBUG("r600_irq_process start: rptr %d, wptr %d\n", rptr, wptr);
> +
>        spin_lock_irqsave(&rdev->ih.lock, flags);
>
>        if (rptr == wptr) {
>                spin_unlock_irqrestore(&rdev->ih.lock, flags);
>                return IRQ_NONE;
>        }
> -       if (rdev->shutdown) {
> -               spin_unlock_irqrestore(&rdev->ih.lock, flags);
> -               return IRQ_NONE;
> -       }
>
>  restart_ih:
>        /* display interrupts */
> --
> 1.7.5.4
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@xxxxxxxxxxxxxxxxxxxxx
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux