[1/4] drm/v3d: Add a note about OOM vs FRDONE, which may be racing on v3.3.
diff mbox series

Message ID 20190313235211.28995-1-eric@anholt.net
State New
Headers show
Series
  • [1/4] drm/v3d: Add a note about OOM vs FRDONE, which may be racing on v3.3.
Related show

Commit Message

Eric Anholt March 13, 2019, 11:52 p.m. UTC
We deref v3d->bin_job in the work handler, but v3d->bin_job doesn't
actually hold a ref on the job.

Signed-off-by: Eric Anholt <eric@anholt.net>
---
 drivers/gpu/drm/v3d/v3d_irq.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Dave Emett March 14, 2019, 11:21 a.m. UTC | #1
On Wed, 13 Mar 2019 at 23:52, Eric Anholt <eric@anholt.net> wrote:
>
> We deref v3d->bin_job in the work handler, but v3d->bin_job doesn't
> actually hold a ref on the job.
>
> Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Dave Emett <david.emett@broadcom.com>

> ---
>  drivers/gpu/drm/v3d/v3d_irq.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/v3d/v3d_irq.c b/drivers/gpu/drm/v3d/v3d_irq.c
> index b4d6ae81186d..a09442ec7297 100644
> --- a/drivers/gpu/drm/v3d/v3d_irq.c
> +++ b/drivers/gpu/drm/v3d/v3d_irq.c
> @@ -87,7 +87,8 @@ v3d_irq(int irq, void *arg)
>         if (intsts & V3D_INT_OUTOMEM) {
>                 /* Note that the OOM status is edge signaled, so the
>                  * interrupt won't happen again until the we actually
> -                * add more memory.
> +                * add more memory.  Also, as of V3D 4.1, FRDONE won't
> +                * be reported until any OOM state has been cleared.
Strictly speaking it's FLDONE for bins.


>                  */
>                 schedule_work(&v3d->overflow_mem_work);
>                 status = IRQ_HANDLED;
> --
> 2.20.1
>
Eric Anholt March 22, 2019, 9:32 p.m. UTC | #2
Dave Emett <david.emett@broadcom.com> writes:

> On Wed, 13 Mar 2019 at 23:52, Eric Anholt <eric@anholt.net> wrote:
>>
>> We deref v3d->bin_job in the work handler, but v3d->bin_job doesn't
>> actually hold a ref on the job.
>>
>> Signed-off-by: Eric Anholt <eric@anholt.net>
> Reviewed-by: Dave Emett <david.emett@broadcom.com>
>
>> ---
>>  drivers/gpu/drm/v3d/v3d_irq.c | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/v3d/v3d_irq.c b/drivers/gpu/drm/v3d/v3d_irq.c
>> index b4d6ae81186d..a09442ec7297 100644
>> --- a/drivers/gpu/drm/v3d/v3d_irq.c
>> +++ b/drivers/gpu/drm/v3d/v3d_irq.c
>> @@ -87,7 +87,8 @@ v3d_irq(int irq, void *arg)
>>         if (intsts & V3D_INT_OUTOMEM) {
>>                 /* Note that the OOM status is edge signaled, so the
>>                  * interrupt won't happen again until the we actually
>> -                * add more memory.
>> +                * add more memory.  Also, as of V3D 4.1, FRDONE won't
>> +                * be reported until any OOM state has been cleared.
> Strictly speaking it's FLDONE for bins.

Fixed, thanks.

I'm applying the first 2 of the series for now.

Patch
diff mbox series

diff --git a/drivers/gpu/drm/v3d/v3d_irq.c b/drivers/gpu/drm/v3d/v3d_irq.c
index b4d6ae81186d..a09442ec7297 100644
--- a/drivers/gpu/drm/v3d/v3d_irq.c
+++ b/drivers/gpu/drm/v3d/v3d_irq.c
@@ -87,7 +87,8 @@  v3d_irq(int irq, void *arg)
 	if (intsts & V3D_INT_OUTOMEM) {
 		/* Note that the OOM status is edge signaled, so the
 		 * interrupt won't happen again until the we actually
-		 * add more memory.
+		 * add more memory.  Also, as of V3D 4.1, FRDONE won't
+		 * be reported until any OOM state has been cleared.
 		 */
 		schedule_work(&v3d->overflow_mem_work);
 		status = IRQ_HANDLED;