Reduce diff on i915_dma.c against linux 3.8.13

No functional changes

Discussed with:	dumbbell
Reviewed by:	dumbbell
This commit is contained in:
Baptiste Daroussin 2015-08-26 13:23:56 +00:00
parent bb2295eb2c
commit 5b5117af3b

View File

@ -1,6 +1,6 @@
/* i915_dma.c -- DMA support for the I915 -*- linux-c -*-
*/
/*-
/*
* Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
* All Rights Reserved.
*
@ -47,6 +47,12 @@ __FBSDID("$FreeBSD$");
#define ADVANCE_LP_RING() \
intel_ring_advance(LP_RING(dev_priv))
/**
* Lock test for when it's just for synchronization of ring access.
*
* In that case, we don't need to do it when GEM is initialized as nobody else
* has access to the ring.
*/
#define RING_LOCK_TEST_WITH_RETURN(dev, file) do { \
if (LP_RING(dev->dev_private)->obj == NULL) \
LOCK_TEST_WITH_RETURN(dev, file); \
@ -179,7 +185,6 @@ static int i915_dma_cleanup(struct drm_device * dev)
drm_i915_private_t *dev_priv = dev->dev_private;
int i;
/* Make sure interrupts are disabled here because the uninstall ioctl
* may not have been called from userspace and after dev_private
* is freed, it's too late.
@ -208,7 +213,7 @@ static int i915_initialize(struct drm_device * dev, drm_i915_init_t * init)
master_priv->sarea = drm_getsarea(dev);
if (master_priv->sarea) {
master_priv->sarea_priv = (drm_i915_sarea_t *)
((u8 *)master_priv->sarea->handle + init->sarea_priv_offset);
((u8 *)master_priv->sarea->handle + init->sarea_priv_offset);
} else {
DRM_DEBUG_DRIVER("sarea not found assuming DRI2 userspace\n");
}
@ -309,7 +314,7 @@ static int i915_dma_init(struct drm_device *dev, void *data,
* instruction detected will be given a size of zero, which is a
* signal to abort the rest of the buffer.
*/
static int do_validate_cmd(int cmd)
static int validate_cmd(int cmd)
{
switch (((cmd >> 29) & 0x7)) {
case 0x0:
@ -367,17 +372,7 @@ static int do_validate_cmd(int cmd)
return 0;
}
static int validate_cmd(int cmd)
{
int ret = do_validate_cmd(cmd);
/* printk("validate_cmd( %x ): %d\n", cmd, ret); */
return ret;
}
static int i915_emit_cmds(struct drm_device *dev, int __user *buffer,
int dwords)
static int i915_emit_cmds(struct drm_device * dev, int *buffer, int dwords)
{
drm_i915_private_t *dev_priv = dev->dev_private;
int i;
@ -429,14 +424,15 @@ int i915_emit_box(struct drm_device * dev,
}
int
i915_emit_box_p(struct drm_device *dev, struct drm_clip_rect *box,
int DR1, int DR4)
i915_emit_box_p(struct drm_device *dev,
struct drm_clip_rect *box,
int DR1, int DR4)
{
drm_i915_private_t *dev_priv = dev->dev_private;
struct drm_i915_private *dev_priv = dev->dev_private;
int ret;
if (box->y2 <= box->y1 || box->x2 <= box->x1 || box->y2 <= 0 ||
box->x2 <= 0) {
if (box->y2 <= box->y1 || box->x2 <= box->x1 ||
box->y2 <= 0 || box->x2 <= 0) {
DRM_ERROR("Bad box %d,%d..%d,%d\n",
box->x1, box->y1, box->x2, box->y2);
return -EINVAL;
@ -444,8 +440,8 @@ i915_emit_box_p(struct drm_device *dev, struct drm_clip_rect *box,
if (INTEL_INFO(dev)->gen >= 4) {
ret = BEGIN_LP_RING(4);
if (ret != 0)
return (ret);
if (ret)
return ret;
OUT_RING(GFX_OP_DRAWRECT_INFO_I965);
OUT_RING((box->x1 & 0xffff) | (box->y1 << 16));
@ -453,8 +449,8 @@ i915_emit_box_p(struct drm_device *dev, struct drm_clip_rect *box,
OUT_RING(DR4);
} else {
ret = BEGIN_LP_RING(6);
if (ret != 0)
return (ret);
if (ret)
return ret;
OUT_RING(GFX_OP_DRAWRECT_INFO);
OUT_RING(DR1);
@ -492,7 +488,9 @@ static void i915_emit_breadcrumb(struct drm_device *dev)
}
static int i915_dispatch_cmdbuffer(struct drm_device * dev,
drm_i915_cmdbuffer_t * cmd, struct drm_clip_rect *cliprects, void *cmdbuf)
drm_i915_cmdbuffer_t *cmd,
struct drm_clip_rect *cliprects,
void *cmdbuf)
{
int nbox = cmd->num_cliprects;
int i = 0, count, ret;
@ -523,11 +521,11 @@ static int i915_dispatch_cmdbuffer(struct drm_device * dev,
return 0;
}
static int
i915_dispatch_batchbuffer(struct drm_device * dev,
drm_i915_batchbuffer_t * batch, struct drm_clip_rect *cliprects)
static int i915_dispatch_batchbuffer(struct drm_device * dev,
drm_i915_batchbuffer_t * batch,
struct drm_clip_rect *cliprects)
{
drm_i915_private_t *dev_priv = dev->dev_private;
struct drm_i915_private *dev_priv = dev->dev_private;
int nbox = batch->num_cliprects;
int i, count, ret;
@ -542,7 +540,6 @@ i915_dispatch_batchbuffer(struct drm_device * dev,
i915_kernel_lost_context(dev);
count = nbox ? nbox : 1;
for (i = 0; i < count; i++) {
if (i < nbox) {
int ret = i915_emit_box_p(dev, &cliprects[i],
@ -553,8 +550,8 @@ i915_dispatch_batchbuffer(struct drm_device * dev,
if (!IS_I830(dev) && !IS_845G(dev)) {
ret = BEGIN_LP_RING(2);
if (ret != 0)
return (ret);
if (ret)
return ret;
if (INTEL_INFO(dev)->gen >= 4) {
OUT_RING(MI_BATCH_BUFFER_START | (2 << 6) |
@ -566,8 +563,8 @@ i915_dispatch_batchbuffer(struct drm_device * dev,
}
} else {
ret = BEGIN_LP_RING(4);
if (ret != 0)
return (ret);
if (ret)
return ret;
OUT_RING(MI_BATCH_BUFFER);
OUT_RING(batch->start | MI_BATCH_NON_SECURE);
@ -602,6 +599,7 @@ static int i915_dispatch_flip(struct drm_device * dev)
ret = BEGIN_LP_RING(10);
if (ret)
return ret;
OUT_RING(MI_FLUSH | MI_READ_FLUSH);
OUT_RING(0);
@ -635,8 +633,7 @@ static int i915_dispatch_flip(struct drm_device * dev)
return 0;
}
static int
i915_quiescent(struct drm_device *dev)
static int i915_quiescent(struct drm_device *dev)
{
struct intel_ring_buffer *ring = LP_RING(dev->dev_private);
@ -644,8 +641,8 @@ i915_quiescent(struct drm_device *dev)
return (intel_wait_ring_idle(ring));
}
static int
i915_flush_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv)
static int i915_flush_ioctl(struct drm_device *dev, void *data,
struct drm_file *file_priv)
{
int ret;
@ -1132,7 +1129,7 @@ i915_load_modeset_init(struct drm_device *dev)
intel_modeset_init(dev);
ret = i915_gem_init(dev);
if (ret != 0)
if (ret)
goto cleanup_gem_stolen;
intel_modeset_gem_init(dev);
@ -1152,7 +1149,7 @@ i915_load_modeset_init(struct drm_device *dev)
/* We're off and running w/KMS */
dev_priv->mm.suspended = 0;
return (0);
return 0;
cleanup_gem:
DRM_LOCK(dev);
@ -1339,8 +1336,18 @@ intel_teardown_mchbar(struct drm_device *dev)
}
}
int
i915_driver_load(struct drm_device *dev, unsigned long flags)
/**
* i915_driver_load - setup chip and create an initial config
* @dev: DRM device
* @flags: startup flags
*
* The driver load routine has to do several things:
* - drive output discovery via intel_modeset_init()
* - initialize the memory manager
* - allocate initial config memory
* - setup the DRM framebuffer with the allocated memory
*/
int i915_driver_load(struct drm_device *dev, unsigned long flags)
{
struct drm_i915_private *dev_priv = dev->dev_private;
const struct intel_device_info *info;
@ -1475,8 +1482,7 @@ out_gem_unload:
return (ret);
}
int
i915_driver_unload(struct drm_device *dev)
int i915_driver_unload(struct drm_device *dev)
{
struct drm_i915_private *dev_priv = dev->dev_private;
int ret;
@ -1546,11 +1552,10 @@ i915_driver_unload(struct drm_device *dev)
mtx_destroy(&dev_priv->rps_lock);
free(dev->dev_private, DRM_MEM_DRIVER);
return (0);
return 0;
}
int
i915_driver_open(struct drm_device *dev, struct drm_file *file_priv)
int i915_driver_open(struct drm_device *dev, struct drm_file *file)
{
struct drm_i915_file_private *i915_file_priv;
@ -1559,19 +1564,35 @@ i915_driver_open(struct drm_device *dev, struct drm_file *file_priv)
mtx_init(&i915_file_priv->mm.lck, "915fp", NULL, MTX_DEF);
INIT_LIST_HEAD(&i915_file_priv->mm.request_list);
file_priv->driver_priv = i915_file_priv;
file->driver_priv = i915_file_priv;
drm_gem_names_init(&i915_file_priv->context_idr);
return (0);
return 0;
}
void
i915_driver_lastclose(struct drm_device * dev)
/**
* i915_driver_lastclose - clean up after all DRM clients have exited
* @dev: DRM device
*
* Take care of cleaning up after all DRM clients have exited. In the
* mode setting case, we want to restore the kernel's initial mode (just
* in case the last client left us in a bad state).
*
* Additionally, in the non-mode setting case, we'll tear down the GTT
* and DMA structures, since the kernel won't be using them, and clea
* up any GEM state.
*/
void i915_driver_lastclose(struct drm_device * dev)
{
drm_i915_private_t *dev_priv = dev->dev_private;
if (!dev_priv || drm_core_check_feature(dev, DRIVER_MODESET)) {
/* On gen6+ we refuse to init without kms enabled, but then the drm core
* goes right around and calls lastclose. Check for this and don't clean
* up anything. */
if (!dev_priv)
return;
if (drm_core_check_feature(dev, DRIVER_MODESET)) {
#if 1
KIB_NOTYET();
#else
@ -1580,13 +1601,14 @@ i915_driver_lastclose(struct drm_device * dev)
#endif
return;
}
i915_gem_lastclose(dev);
i915_dma_cleanup(dev);
}
void i915_driver_preclose(struct drm_device * dev, struct drm_file *file_priv)
{
i915_gem_context_close(dev, file_priv);
i915_gem_release(dev, file_priv);
}