[PATCH v1 1/4] drm/mga: drop dependency on drm_os_linux.h

Thomas Zimmermann tzimmermann at suse.de
Tue Jun 11 07:48:16 UTC 2019


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 <sam at ravnborg.org>
> Cc: Thomas Zimmermann <tzimmermann at suse.de>
> Cc: Daniel Vetter <daniel at ffwll.ch>
> Cc: David Airlie <airlied at 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 <gareth at 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?

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)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20190611/dfc59954/attachment-0001.sig>


More information about the dri-devel mailing list