Hi

Am 29.06.19 um 19:59 schrieb Sam Ravnborg:
> Hi all.
> 
>> Opencode all macros used from the deprecated drm_os_linux.h header file.
>> The DRM_WAIT_ON used 3 * HZ as timeout.
>> This was translated to 3000 msec.
>>
>> The return value of mga_driver_fence_wait() was not
>> used, so make it return void to simplify code a bit.
>>
>> v2:
>> - fixed timeout to 3000 msec (original value was 3 * Hz)
>> - drop unused return value from mga_driver_fence_wait()
> 
> Thomas give his ack on v1 of this patch.
> But I am reluctant to apply it until someone has looked at this version.
> The main difference is a s described above, where the change to 3000
> msec was a bug in v1.
> 
> Any feedback?

Acked-by: Thomas Zimmermann <tzimmerm...@suse.de>

as well. Thanks for spotting the bug.

Best regards
Thomas

> 
>       Sam
> 
>>
>> Signed-off-by: Sam Ravnborg <s...@ravnborg.org>
>> Acked-by: Thomas Zimmermann <tzimmerm...@suse.de>
>> Cc: Daniel Vetter <dan...@ffwll.ch>
>> Cc: David Airlie <airl...@linux.ie>
>> ---
>>  drivers/gpu/drm/mga/mga_dma.c   | 11 +++++++----
>>  drivers/gpu/drm/mga/mga_drv.h   | 14 +++++++++-----
>>  drivers/gpu/drm/mga/mga_irq.c   | 10 ++++------
>>  drivers/gpu/drm/mga/mga_state.c |  6 +++---
>>  4 files changed, 23 insertions(+), 18 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/mga/mga_dma.c b/drivers/gpu/drm/mga/mga_dma.c
>> index 1ffdafea27e4..c5e7c210999f 100644
>> --- a/drivers/gpu/drm/mga/mga_dma.c
>> +++ b/drivers/gpu/drm/mga/mga_dma.c
>> @@ -35,6 +35,8 @@
>>   * \author Gareth Hughes <gar...@valinux.com>
>>   */
>>  
>> +#include <linux/delay.h>
>> +
>>  #include <drm/drmP.h>
>>  #include <drm/mga_drm.h>
>>  #include "mga_drv.h"
>> @@ -62,7 +64,7 @@ int mga_do_wait_for_idle(drm_mga_private_t *dev_priv)
>>                      MGA_WRITE8(MGA_CRTC_INDEX, 0);
>>                      return 0;
>>              }
>> -            DRM_UDELAY(1);
>> +            udelay(1);
>>      }
>>  
>>  #if MGA_DMA_DEBUG
>> @@ -114,7 +116,7 @@ void mga_do_dma_flush(drm_mga_private_t *dev_priv)
>>              status = MGA_READ(MGA_STATUS) & MGA_ENGINE_IDLE_MASK;
>>              if (status == MGA_ENDPRDMASTS)
>>                      break;
>> -            DRM_UDELAY(1);
>> +            udelay(1);
>>      }
>>  
>>      if (primary->tail == primary->last_flush) {
>> @@ -1120,7 +1122,7 @@ int mga_dma_buffers(struct drm_device *dev, void *data,
>>       */
>>      if (d->send_count != 0) {
>>              DRM_ERROR("Process %d trying to send %d buffers via drmDMA\n",
>> -                      DRM_CURRENTPID, d->send_count);
>> +                      task_pid_nr(current), d->send_count);
>>              return -EINVAL;
>>      }
>>  
>> @@ -1128,7 +1130,8 @@ int mga_dma_buffers(struct drm_device *dev, void *data,
>>       */
>>      if (d->request_count < 0 || d->request_count > dma->buf_count) {
>>              DRM_ERROR("Process %d trying to get %d buffers (of %d max)\n",
>> -                      DRM_CURRENTPID, d->request_count, dma->buf_count);
>> +                      task_pid_nr(current), d->request_count,
>> +                      dma->buf_count);
>>              return -EINVAL;
>>      }
>>  
>> diff --git a/drivers/gpu/drm/mga/mga_drv.h b/drivers/gpu/drm/mga/mga_drv.h
>> index a45bb22275a7..1766c195b397 100644
>> --- a/drivers/gpu/drm/mga/mga_drv.h
>> +++ b/drivers/gpu/drm/mga/mga_drv.h
>> @@ -188,7 +188,7 @@ extern int mga_warp_init(drm_mga_private_t *dev_priv);
>>  extern int mga_enable_vblank(struct drm_device *dev, unsigned int pipe);
>>  extern void mga_disable_vblank(struct drm_device *dev, unsigned int pipe);
>>  extern u32 mga_get_vblank_counter(struct drm_device *dev, unsigned int 
>> pipe);
>> -extern int mga_driver_fence_wait(struct drm_device *dev, unsigned int 
>> *sequence);
>> +extern void mga_driver_fence_wait(struct drm_device *dev, unsigned int 
>> *sequence);
>>  extern int mga_driver_vblank_wait(struct drm_device *dev, unsigned int 
>> *sequence);
>>  extern irqreturn_t mga_driver_irq_handler(int irq, void *arg);
>>  extern void mga_driver_irq_preinstall(struct drm_device *dev);
>> @@ -199,10 +199,14 @@ extern long mga_compat_ioctl(struct file *filp, 
>> unsigned int cmd,
>>  
>>  #define mga_flush_write_combine()   wmb()
>>  
>> -#define MGA_READ8(reg)              DRM_READ8(dev_priv->mmio, (reg))
>> -#define MGA_READ(reg)               DRM_READ32(dev_priv->mmio, (reg))
>> -#define MGA_WRITE8(reg, val)        DRM_WRITE8(dev_priv->mmio, (reg), (val))
>> -#define MGA_WRITE(reg, val) DRM_WRITE32(dev_priv->mmio, (reg), (val))
>> +#define MGA_READ8(reg) \
>> +    readb(((void __iomem *)dev_priv->mmio->handle) + (reg))
>> +#define MGA_READ(reg) \
>> +    readl(((void __iomem *)dev_priv->mmio->handle) + (reg))
>> +#define MGA_WRITE8(reg, val) \
>> +    writeb(val, ((void __iomem *)dev_priv->mmio->handle) + (reg))
>> +#define MGA_WRITE(reg, val) \
>> +    writel(val, ((void __iomem *)dev_priv->mmio->handle) + (reg))
>>  
>>  #define DWGREG0             0x1c00
>>  #define DWGREG0_END 0x1dff
>> diff --git a/drivers/gpu/drm/mga/mga_irq.c b/drivers/gpu/drm/mga/mga_irq.c
>> index 693ba708cfed..1545a3694b53 100644
>> --- a/drivers/gpu/drm/mga/mga_irq.c
>> +++ b/drivers/gpu/drm/mga/mga_irq.c
>> @@ -118,23 +118,21 @@ void mga_disable_vblank(struct drm_device *dev, 
>> unsigned int pipe)
>>      /* MGA_WRITE(MGA_IEN, MGA_VLINEIEN | MGA_SOFTRAPEN); */
>>  }
>>  
>> -int mga_driver_fence_wait(struct drm_device *dev, unsigned int *sequence)
>> +void mga_driver_fence_wait(struct drm_device *dev, unsigned int *sequence)
>>  {
>>      drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private;
>>      unsigned int cur_fence;
>> -    int ret = 0;
>>  
>>      /* Assume that the user has missed the current sequence number
>>       * by about a day rather than she wants to wait for years
>>       * using fences.
>>       */
>> -    DRM_WAIT_ON(ret, dev_priv->fence_queue, 3 * HZ,
>> +    wait_event_timeout(dev_priv->fence_queue,
>>                  (((cur_fence = atomic_read(&dev_priv->last_fence_retired))
>> -                  - *sequence) <= (1 << 23)));
>> +                  - *sequence) <= (1 << 23)),
>> +                msecs_to_jiffies(3000));
>>  
>>      *sequence = cur_fence;
>> -
>> -    return ret;
>>  }
>>  
>>  void mga_driver_irq_preinstall(struct drm_device *dev)
>> diff --git a/drivers/gpu/drm/mga/mga_state.c 
>> b/drivers/gpu/drm/mga/mga_state.c
>> index e5f6b735f575..296a1db7e5ee 100644
>> --- a/drivers/gpu/drm/mga/mga_state.c
>> +++ b/drivers/gpu/drm/mga/mga_state.c
>> @@ -1016,7 +1016,7 @@ int mga_getparam(struct drm_device *dev, void *data, 
>> struct drm_file *file_priv)
>>              return -EINVAL;
>>      }
>>  
>> -    DRM_DEBUG("pid=%d\n", DRM_CURRENTPID);
>> +    DRM_DEBUG("pid=%d\n", task_pid_nr(current));
>>  
>>      switch (param->param) {
>>      case MGA_PARAM_IRQ_NR:
>> @@ -1048,7 +1048,7 @@ static int mga_set_fence(struct drm_device *dev, void 
>> *data, struct drm_file *fi
>>              return -EINVAL;
>>      }
>>  
>> -    DRM_DEBUG("pid=%d\n", DRM_CURRENTPID);
>> +    DRM_DEBUG("pid=%d\n", task_pid_nr(current));
>>  
>>      /* I would normal do this assignment in the declaration of fence,
>>       * but dev_priv may be NULL.
>> @@ -1077,7 +1077,7 @@ file_priv)
>>              return -EINVAL;
>>      }
>>  
>> -    DRM_DEBUG("pid=%d\n", DRM_CURRENTPID);
>> +    DRM_DEBUG("pid=%d\n", task_pid_nr(current));
>>  
>>      mga_driver_fence_wait(dev, fence);
>>      return 0;
>> -- 
>> 2.20.1
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany
GF: Felix Imendörffer, Mary Higgins, Sri Rasiah
HRB 21284 (AG Nürnberg)

Attachment: signature.asc
Description: OpenPGP digital signature

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

Reply via email to