All of lore.kernel.org
 help / color / mirror / Atom feed
From: Francisco Jerez <currojerez-sGOZH3hwPm2sTnJN9+BGXg@public.gmane.org>
To: Luca Barbieri <luca-Ukmtq+NC3rhBHFWNQifrYwC/G2K4zDHf@public.gmane.org>
Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Subject: Re: [PATCH] drm/nouveau: Acknowledge DMA_VTX_PROTECTION PGRAPH interrupts
Date: Sun, 17 Jan 2010 19:16:14 +0100	[thread overview]
Message-ID: <874omk1tsh.fsf@riseup.net> (raw)
In-Reply-To: <1263652071-17874-1-git-send-email-luca-Ukmtq+NC3rhBHFWNQifrYwC/G2K4zDHf@public.gmane.org> (Luca Barbieri's message of "Sat, 16 Jan 2010 15:27:51 +0100")


[-- Attachment #1.1.1: Type: text/plain, Size: 2449 bytes --]

Luca Barbieri <luca-Ukmtq+NC3rhBHFWNQifrYwC/G2K4zDHf@public.gmane.org> writes:

> Currently Nouveau is unable to dismiss DMA_VTX_PROTECTION errors,
> which results in an infinite loop in the interrupt handler.
>
> These errors are caused both by bugs in the Gallium driver and by
> user-specified index buffers with out of bounds indices.
>
> By mmio-tracing the nVidia drivers, I found out how this is done.
> On DMA_VTX_PROTECTION, The nVidia driver reads the register 0x402000,
> always getting the value 4, and then writes 4 back to 0x402000.
>
> This patch adds that logic by reading 0x402000 and writing the same
> value back.
> It's unclear what should happen if the value read is not 4, and
> the current approach might not be the correct one.
>
> To test this, modify mesa/progs/trivial/vbo-drawrange.c, defining
> ELTOBJ to 1 and replacing indices with huge out of bounds integers.
>
> Without this patch, the GPU and/or kernel should lock up.
> With this patch, it should misrender as expected but not lock up.
>
> The errors are still logged since they are useful for development.
>
> This has been tested on NV49 and may not work on other cards.
>
> To find out how things work on other cards, run the aforementioned
> test using the blob with mmiotrace and grep for a read of the PGRAPH
> source register.
>
> Signed-off-by: Luca Barbieri <luca-Ukmtq+NC3rhBHFWNQifrYwC/G2K4zDHf@public.gmane.org>
> ---
>  drivers/gpu/drm/nouveau/nouveau_irq.c |    9 ++++++++-
>  1 files changed, 8 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_irq.c b/drivers/gpu/drm/nouveau/nouveau_irq.c
> index 919a619..14de5a1 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_irq.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_irq.c
> @@ -483,9 +483,16 @@ nouveau_pgraph_intr_error(struct drm_device *dev, uint32_t nsource)
>  	if (nsource & NV03_PGRAPH_NSOURCE_ILLEGAL_MTHD) {
>  		if (nouveau_pgraph_intr_swmthd(dev, &trap))
>  			unhandled = 1;
> -	} else {
> +	} else if(nsource & NV03_PGRAPH_NSOURCE_DMA_VTX_PROTECTION) {
> +		uint32_t v = nv_rd32(dev, 0x402000);
> +		nv_wr32(dev, 0x402000, v);
> +
> +		/* dump the error anyway for now: it's useful for
> +		   Gallium development */
>  		unhandled = 1;
>  	}
> +	else
> +		unhandled = 1;
>  
>  	if (unhandled && nouveau_ratelimit())
>  		nouveau_graph_dump_trap_info(dev, "PGRAPH_ERROR", &trap);

Both pushed. Thanks!

[-- Attachment #1.2: Type: application/pgp-signature, Size: 197 bytes --]

[-- Attachment #2: Type: text/plain, Size: 181 bytes --]

_______________________________________________
Nouveau mailing list
Nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

      parent reply	other threads:[~2010-01-17 18:16 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-16 14:27 [PATCH] drm/nouveau: Acknowledge DMA_VTX_PROTECTION PGRAPH interrupts Luca Barbieri
     [not found] ` <1263652071-17874-1-git-send-email-luca-Ukmtq+NC3rhBHFWNQifrYwC/G2K4zDHf@public.gmane.org>
2010-01-17 18:16   ` Francisco Jerez [this message]

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=874omk1tsh.fsf@riseup.net \
    --to=currojerez-sgozh3hwpm2stnjn9+bgxg@public.gmane.org \
    --cc=luca-Ukmtq+NC3rhBHFWNQifrYwC/G2K4zDHf@public.gmane.org \
    --cc=nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.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.