On Tue, Jun 11, 2019 at 09:48:16AM +0200, Thomas Zimmermann wrote:
> Hi
> 
> Am 08.06.19 um 10:19 schrieb Sam Ravnborg:
> > 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 30 msec.
> > 
> > Signed-off-by: Sam Ravnborg <s...@ravnborg.org>
> > Cc: Thomas Zimmermann <tzimmerm...@suse.de>
> > Cc: Daniel Vetter <dan...@ffwll.ch>
> > Cc: David Airlie <airl...@linux.ie>
> > ---
> >  drivers/gpu/drm/mga/mga_dma.c   | 12 ++++++++----
> >  drivers/gpu/drm/mga/mga_drv.h   | 12 ++++++++----
> >  drivers/gpu/drm/mga/mga_irq.c   |  8 ++++----
> >  drivers/gpu/drm/mga/mga_state.c |  6 +++---
> >  4 files changed, 23 insertions(+), 15 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/mga/mga_dma.c b/drivers/gpu/drm/mga/mga_dma.c
> > index 1ffdafea27e4..123be2f3a151 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,9 @@ 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..7844a9e463f6 100644
> > --- a/drivers/gpu/drm/mga/mga_drv.h
> > +++ b/drivers/gpu/drm/mga/mga_drv.h
> > @@ -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))
> 
> Addition is not defined or implementation specific for type void* IIRC.
> Compilers tend to treat it like u8*. Maybe cast mmio->handle to (u8
> __iomem *) instead?

drm_os_linux.h has depended upon this gcc-ism since decades by now, I
think it's ok to leave this as-is :-)
-Daniel

> 
> Best regards
> Thomas
> 
> >  
> >  #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..c6a3fab5b0c4 100644
> > --- a/drivers/gpu/drm/mga/mga_irq.c
> > +++ b/drivers/gpu/drm/mga/mga_irq.c
> > @@ -122,19 +122,19 @@ int 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(30));
> >  
> >     *sequence = cur_fence;
> >  
> > -   return ret;
> > +   return 0;
> >  }
> >  
> >  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;
> > 
> 
> -- 
> 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)
> 




-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to