Subversion Repositories Kolibri OS

Rev

Rev 3746 | Rev 4126 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3746 Rev 4104
Line 43... Line 43...
43
#include 
43
#include 
44
//#include 
44
//#include 
Line 45... Line 45...
45
 
45
 
Line 46... Line -...
46
void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen);
-
 
47
 
46
void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen);
Line 48... Line 47...
48
 
47
 
49
#define LP_RING(d) (&((struct drm_i915_private *)(d))->ring[RCS])
48
#define LP_RING(d) (&((struct drm_i915_private *)(d))->ring[RCS])
Line 1002... Line 1001...
1002
        break;
1001
        break;
1003
	case I915_PARAM_HAS_EXEC_HANDLE_LUT:
1002
	case I915_PARAM_HAS_EXEC_HANDLE_LUT:
1004
        value = 1;
1003
        value = 1;
1005
        break;
1004
        break;
1006
	default:
1005
	default:
1007
		DRM_DEBUG_DRIVER("Unknown parameter %d\n",
1006
		DRM_DEBUG("Unknown parameter %d\n", param->param);
1008
				 param->param);
-
 
1009
		return -EINVAL;
1007
		return -EINVAL;
1010
	}
1008
	}
Line 1011... Line 1009...
1011
 
1009
 
1012
//   if (DRM_COPY_TO_USER(param->value, &value, sizeof(int))) {
1010
//   if (DRM_COPY_TO_USER(param->value, &value, sizeof(int))) {
Line 1148... Line 1146...
1148
 
1146
 
1149
    ret = intel_parse_bios(dev);
1147
    ret = intel_parse_bios(dev);
1150
    if (ret)
1148
    if (ret)
Line 1151... Line -...
1151
        DRM_INFO("failed to find VBIOS tables\n");
-
 
-
 
1149
        DRM_INFO("failed to find VBIOS tables\n");
Line 1152... Line 1150...
1152
 
1150
 
1153
//    intel_register_dsm_handler();
1151
 
1154
 
1152
 
1155
	/* Initialise stolen first so that we may reserve preallocated
1153
	/* Initialise stolen first so that we may reserve preallocated
Line 1175... Line 1173...
1175
    intel_modeset_gem_init(dev);
1173
    intel_modeset_gem_init(dev);
Line 1176... Line 1174...
1176
 
1174
 
1177
    /* Always safe in the mode setting case. */
1175
    /* Always safe in the mode setting case. */
1178
    /* FIXME: do pre/post-mode set stuff in core KMS code */
1176
    /* FIXME: do pre/post-mode set stuff in core KMS code */
1179
    dev->vblank_disable_allowed = 1;
1177
    dev->vblank_disable_allowed = 1;
1180
	if (INTEL_INFO(dev)->num_pipes == 0) {
-
 
1181
		dev_priv->mm.suspended = 0;
1178
	if (INTEL_INFO(dev)->num_pipes == 0)
1182
		return 0;
-
 
Line 1183... Line 1179...
1183
	}
1179
		return 0;
1184
 
1180
 
1185
    ret = intel_fbdev_init(dev);
1181
    ret = intel_fbdev_init(dev);
Line 1204... Line 1200...
1204
	/* Only enable hotplug handling once the fbdev is fully set up. */
1200
	/* Only enable hotplug handling once the fbdev is fully set up. */
1205
	dev_priv->enable_hotplug_processing = true;
1201
	dev_priv->enable_hotplug_processing = true;
Line 1206... Line 1202...
1206
 
1202
 
Line 1207... Line -...
1207
	drm_kms_helper_poll_init(dev);
-
 
1208
 
-
 
1209
    /* We're off and running w/KMS */
-
 
1210
    dev_priv->mm.suspended = 0;
1203
	drm_kms_helper_poll_init(dev);
Line 1211... Line 1204...
1211
 
1204
 
1212
    return 0;
1205
    return 0;
1213
 
1206
 
Line 1233... Line 1226...
1233
 
1226
 
1234
static void i915_dump_device_info(struct drm_i915_private *dev_priv)
1227
static void i915_dump_device_info(struct drm_i915_private *dev_priv)
1235
{
1228
{
Line -... Line 1229...
-
 
1229
	const struct intel_device_info *info = dev_priv->info;
-
 
1230
 
1236
	const struct intel_device_info *info = dev_priv->info;
1231
#define PRINT_S(name) "%s"
1237
 
1232
#define SEP_EMPTY
1238
#define DEV_INFO_FLAG(name) info->name ? #name "," : ""
1233
#define PRINT_FLAG(name) info->name ? #name "," : ""
1239
#define DEV_INFO_SEP ,
1234
#define SEP_COMMA ,
1240
	DRM_DEBUG_DRIVER("i915 device info: gen=%i, pciid=0x%04x flags="
1235
	DRM_DEBUG_DRIVER("i915 device info: gen=%i, pciid=0x%04x flags="
1241
			 "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
1236
			 DEV_INFO_FOR_EACH_FLAG(PRINT_S, SEP_EMPTY),
1242
			 info->gen,
1237
			 info->gen,
1243
			 dev_priv->dev->pdev->device,
1238
			 dev_priv->dev->pdev->device,
1244
			 DEV_INFO_FLAGS);
1239
			 DEV_INFO_FOR_EACH_FLAG(PRINT_FLAG, SEP_COMMA));
1245
#undef DEV_INFO_FLAG
-
 
1246
#undef DEV_INFO_SEP
-
 
1247
}
-
 
1248
 
-
 
1249
/**
1240
#undef PRINT_S
1250
 * intel_early_sanitize_regs - clean up BIOS state
-
 
1251
 * @dev: DRM device
-
 
1252
 *
-
 
1253
 * This function must be called before we do any I915_READ or I915_WRITE. Its
-
 
1254
 * purpose is to clean up any state left by the BIOS that may affect us when
-
 
1255
 * reading and/or writing registers.
-
 
1256
 */
-
 
1257
static void intel_early_sanitize_regs(struct drm_device *dev)
-
 
1258
{
-
 
1259
	struct drm_i915_private *dev_priv = dev->dev_private;
1241
#undef SEP_EMPTY
1260
 
-
 
1261
	if (IS_HASWELL(dev))
1242
#undef PRINT_FLAG
Line 1262... Line 1243...
1262
		I915_WRITE_NOTRACE(FPGA_DBG, FPGA_DBG_RM_NOCLAIM);
1243
#undef SEP_COMMA
1263
}
1244
}
1264
 
1245
 
Line 1289... Line 1270...
1289
 
1270
 
1290
    dev->dev_private = (void *)dev_priv;
1271
    dev->dev_private = (void *)dev_priv;
1291
    dev_priv->dev = dev;
1272
    dev_priv->dev = dev;
Line -... Line 1273...
-
 
1273
	dev_priv->info = info;
-
 
1274
 
-
 
1275
	spin_lock_init(&dev_priv->irq_lock);
-
 
1276
	spin_lock_init(&dev_priv->gpu_error.lock);
-
 
1277
	spin_lock_init(&dev_priv->backlight.lock);
-
 
1278
	spin_lock_init(&dev_priv->uncore.lock);
-
 
1279
	spin_lock_init(&dev_priv->mm.object_stat_lock);
-
 
1280
	mutex_init(&dev_priv->dpio_lock);
-
 
1281
	mutex_init(&dev_priv->rps.hw_lock);
-
 
1282
	mutex_init(&dev_priv->modeset_restore_lock);
-
 
1283
 
-
 
1284
	mutex_init(&dev_priv->pc8.lock);
-
 
1285
	dev_priv->pc8.requirements_met = false;
-
 
1286
	dev_priv->pc8.gpu_idle = false;
-
 
1287
	dev_priv->pc8.irqs_disabled = false;
-
 
1288
	dev_priv->pc8.enabled = false;
-
 
1289
	dev_priv->pc8.disable_count = 2; /* requirements_met + gpu_idle */
1292
	dev_priv->info = info;
1290
	INIT_DELAYED_WORK(&dev_priv->pc8.enable_work, hsw_enable_pc8_work);
Line -... Line 1291...
-
 
1291
 
-
 
1292
	i915_dump_device_info(dev_priv);
-
 
1293
 
-
 
1294
	/* Not all pre-production machines fall into this category, only the
-
 
1295
	 * very first ones. Almost everything should work, except for maybe
-
 
1296
	 * suspend/resume. And we don't implement workarounds that affect only
-
 
1297
	 * pre-production machines. */
-
 
1298
	if (IS_HSW_EARLY_SDV(dev))
1293
 
1299
		DRM_INFO("This is an early pre-production Haswell machine. "
1294
	i915_dump_device_info(dev_priv);
1300
			 "It may not be fully functional.\n");
1295
 
1301
 
1296
    if (i915_get_bridge_dev(dev)) {
1302
    if (i915_get_bridge_dev(dev)) {
Line 1316... Line 1322...
1316
        DRM_ERROR("failed to map registers\n");
1322
		DRM_ERROR("failed to map registers\n");
1317
        ret = -EIO;
1323
		ret = -EIO;
1318
		goto put_bridge;
1324
		goto put_bridge;
1319
    }
1325
	}
Line 1320... Line 1326...
1320
 
1326
 
-
 
1327
	intel_uncore_early_sanitize(dev);
-
 
1328
 
-
 
1329
	if (IS_HASWELL(dev) && (I915_READ(HSW_EDRAM_PRESENT) == 1)) {
-
 
1330
		/* The docs do not explain exactly how the calculation can be
-
 
1331
		 * made. It is somewhat guessable, but for now, it's always
-
 
1332
		 * 128MB.
-
 
1333
		 * NB: We can't write IDICR yet because we do not have gt funcs
-
 
1334
		 * set up */
-
 
1335
		dev_priv->ellc_size = 128;
-
 
1336
		DRM_INFO("Found %zuMB of eLLC\n", dev_priv->ellc_size);
Line 1321... Line 1337...
1321
	intel_early_sanitize_regs(dev);
1337
	}
1322
 
1338
 
1323
	ret = i915_gem_gtt_init(dev);
1339
	ret = i915_gem_gtt_init(dev);
Line 1364... Line 1380...
1364
 
1380
 
1365
	/* This must be called before any calls to HAS_PCH_* */
1381
	/* This must be called before any calls to HAS_PCH_* */
Line 1366... Line 1382...
1366
	intel_detect_pch(dev);
1382
	intel_detect_pch(dev);
1367
 
1383
 
-
 
1384
	intel_irq_init(dev);
-
 
1385
	intel_pm_init(dev);
Line 1368... Line 1386...
1368
	intel_irq_init(dev);
1386
	intel_uncore_sanitize(dev);
1369
	intel_gt_init(dev);
1387
	intel_uncore_init(dev);
1370
 
1388
 
1371
    /* Try to make sure MCHBAR is enabled before poking at it */
1389
    /* Try to make sure MCHBAR is enabled before poking at it */
Line 1387... Line 1405...
1387
     * According to chipset errata, on the 965GM, MSI interrupts may
1405
     * According to chipset errata, on the 965GM, MSI interrupts may
1388
     * be lost or delayed, but we use them anyways to avoid
1406
     * be lost or delayed, but we use them anyways to avoid
1389
     * stuck interrupts on some machines.
1407
     * stuck interrupts on some machines.
1390
     */
1408
     */
Line 1391... Line -...
1391
 
-
 
1392
    spin_lock_init(&dev_priv->irq_lock);
-
 
1393
	spin_lock_init(&dev_priv->gpu_error.lock);
-
 
1394
	spin_lock_init(&dev_priv->rps.lock);
-
 
1395
	mutex_init(&dev_priv->dpio_lock);
-
 
1396
 
-
 
1397
	mutex_init(&dev_priv->rps.hw_lock);
-
 
1398
	mutex_init(&dev_priv->modeset_restore_lock);
-
 
1399
 
1409
 
1400
	dev_priv->num_plane = 1;
1410
	dev_priv->num_plane = 1;
1401
	if (IS_VALLEYVIEW(dev))
1411
	if (IS_VALLEYVIEW(dev))
Line 1402... Line -...
1402
		dev_priv->num_plane = 2;
-
 
1403
 
-
 
1404
//    ret = drm_vblank_init(dev, dev_priv->num_pipe);
-
 
1405
//    if (ret)
-
 
1406
//        goto out_gem_unload;
-
 
1407
 
-
 
1408
    /* Start out suspended */
-
 
1409
    dev_priv->mm.suspended = 1;
1412
		dev_priv->num_plane = 2;
1410
 
1413
 
1411
    ret = i915_load_modeset_init(dev);
1414
    ret = i915_load_modeset_init(dev);
1412
    if (ret < 0) {
1415
    if (ret < 0) {
1413
        DRM_ERROR("failed to init modeset\n");
1416
        DRM_ERROR("failed to init modeset\n");
Line 1418... Line 1421...
1418
 
1421
 
1419
 
1422
 
Line -... Line 1423...
-
 
1423
	if (IS_GEN5(dev))
-
 
1424
		intel_gpu_ips_init(dev_priv);
1420
	if (IS_GEN5(dev))
1425
 
Line 1421... Line 1426...
1421
		intel_gpu_ips_init(dev_priv);
1426
    main_device = dev;
1422
 
1427
 
1423
    return 0;
1428
    return 0;
Line 1431... Line 1436...
1431
 
1436
 
1432
//    intel_teardown_gmbus(dev);
1437
//    intel_teardown_gmbus(dev);
1433
//    intel_teardown_mchbar(dev);
1438
//    intel_teardown_mchbar(dev);
1434
//    destroy_workqueue(dev_priv->wq);
1439
//    destroy_workqueue(dev_priv->wq);
1435
out_mtrrfree:
-
 
1436
//	if (dev_priv->mm.gtt_mtrr >= 0) {
1440
out_mtrrfree:
1437
//		mtrr_del(dev_priv->mm.gtt_mtrr,
1441
//	arch_phys_wc_del(dev_priv->mm.gtt_mtrr);
1438
//			 dev_priv->mm.gtt_base_addr,
-
 
1439
//			 aperture_size);
1442
//	io_mapping_free(dev_priv->gtt.mappable);
1440
//		dev_priv->mm.gtt_mtrr = -1;
-
 
1441
//	}
-
 
1442
//	io_mapping_free(dev_priv->mm.gtt_mapping);
1443
//	dev_priv->gtt.gtt_remove(dev);
1443
out_rmmap:
1444
out_rmmap:
1444
    pci_iounmap(dev->pdev, dev_priv->regs);
-
 
1445
put_gmch:
-
 
1446
//	dev_priv->gtt.gtt_remove(dev);
1445
    pci_iounmap(dev->pdev, dev_priv->regs);
1447
put_bridge:
1446
put_bridge:
1448
//    pci_dev_put(dev_priv->bridge_dev);
1447
//    pci_dev_put(dev_priv->bridge_dev);
1449
free_priv:
1448
free_priv:
1450
    kfree(dev_priv);
1449
    kfree(dev_priv);
Line 1458... Line 1457...
1458
	struct drm_i915_private *dev_priv = dev->dev_private;
1457
	struct drm_i915_private *dev_priv = dev->dev_private;
1459
	int ret;
1458
	int ret;
Line 1460... Line 1459...
1460
 
1459
 
Line -... Line 1460...
-
 
1460
	intel_gpu_ips_teardown();
-
 
1461
 
-
 
1462
	if (HAS_POWER_WELL(dev)) {
-
 
1463
		/* The i915.ko module is still not prepared to be loaded when
-
 
1464
		 * the power well is not enabled, so just enable it in case
-
 
1465
		 * we're going to unload/reload. */
-
 
1466
		intel_set_power_well(dev, true);
-
 
1467
		i915_remove_power_well(dev);
1461
	intel_gpu_ips_teardown();
1468
	}
Line 1462... Line 1469...
1462
 
1469
 
1463
	i915_teardown_sysfs(dev);
1470
	i915_teardown_sysfs(dev);
Line 1464... Line 1471...
1464
 
1471
 
1465
	if (dev_priv->mm.inactive_shrinker.shrink)
1472
	if (dev_priv->mm.inactive_shrinker.scan_objects)
1466
		unregister_shrinker(&dev_priv->mm.inactive_shrinker);
1473
		unregister_shrinker(&dev_priv->mm.inactive_shrinker);
Line 1474... Line 1481...
1474
 
1481
 
1475
	/* Cancel the retire work handler, which should be idle now. */
1482
	/* Cancel the retire work handler, which should be idle now. */
Line 1476... Line 1483...
1476
	cancel_delayed_work_sync(&dev_priv->mm.retire_work);
1483
	cancel_delayed_work_sync(&dev_priv->mm.retire_work);
1477
 
-
 
1478
	io_mapping_free(dev_priv->gtt.mappable);
1484
 
1479
	if (dev_priv->mm.gtt_mtrr >= 0) {
-
 
1480
		mtrr_del(dev_priv->mm.gtt_mtrr,
-
 
1481
			 dev_priv->gtt.mappable_base,
-
 
1482
			 dev_priv->gtt.mappable_end);
-
 
Line 1483... Line 1485...
1483
		dev_priv->mm.gtt_mtrr = -1;
1485
	io_mapping_free(dev_priv->gtt.mappable);
Line 1484... Line 1486...
1484
	}
1486
	arch_phys_wc_del(dev_priv->gtt.mtrr);
1485
 
1487
 
Line 1492... Line 1494...
1492
 
1494
 
1493
		/*
1495
		/*
1494
		 * free the memory space allocated for the child device
1496
		 * free the memory space allocated for the child device
1495
		 * config parsed from VBT
1497
		 * config parsed from VBT
1496
		 */
1498
		 */
1497
		if (dev_priv->child_dev && dev_priv->child_dev_num) {
1499
		if (dev_priv->vbt.child_dev && dev_priv->vbt.child_dev_num) {
1498
			kfree(dev_priv->child_dev);
1500
			kfree(dev_priv->vbt.child_dev);
1499
			dev_priv->child_dev = NULL;
1501
			dev_priv->vbt.child_dev = NULL;
1500
			dev_priv->child_dev_num = 0;
1502
			dev_priv->vbt.child_dev_num = 0;
Line 1501... Line 1503...
1501
		}
1503
		}
1502
 
1504
 
1503
		vga_switcheroo_unregister_client(dev->pdev);
1505
		vga_switcheroo_unregister_client(dev->pdev);
Line 1528... Line 1530...
1528
 
1530
 
1529
		if (!I915_NEED_GFX_HWS(dev))
1531
		if (!I915_NEED_GFX_HWS(dev))
1530
			i915_free_hws(dev);
1532
			i915_free_hws(dev);
Line -... Line 1533...
-
 
1533
	}
-
 
1534
 
-
 
1535
	list_del(&dev_priv->gtt.base.global_link);
1531
	}
1536
	WARN_ON(!list_empty(&dev_priv->vm_list));
1532
 
1537
	drm_mm_takedown(&dev_priv->gtt.base.mm);
Line 1533... Line 1538...
1533
	if (dev_priv->regs != NULL)
1538
	if (dev_priv->regs != NULL)
1534
		pci_iounmap(dev->pdev, dev_priv->regs);
1539
		pci_iounmap(dev->pdev, dev_priv->regs);
Line 1535... Line 1540...
1535
 
1540
 
1536
	intel_teardown_gmbus(dev);
1541
	intel_teardown_gmbus(dev);
Line -... Line 1542...
-
 
1542
	intel_teardown_mchbar(dev);
-
 
1543
 
1537
	intel_teardown_mchbar(dev);
1544
	destroy_workqueue(dev_priv->wq);
1538
 
1545
	pm_qos_remove_request(&dev_priv->pm_qos);
Line 1539... Line 1546...
1539
	destroy_workqueue(dev_priv->wq);
1546
 
1540
	pm_qos_remove_request(&dev_priv->pm_qos);
1547
	dev_priv->gtt.base.cleanup(&dev_priv->gtt.base);
Line 1613... Line 1620...
1613
	struct drm_i915_file_private *file_priv = file->driver_priv;
1620
	struct drm_i915_file_private *file_priv = file->driver_priv;
Line 1614... Line 1621...
1614
 
1621
 
1615
	kfree(file_priv);
1622
	kfree(file_priv);
Line 1616... Line 1623...
1616
}
1623
}
1617
 
1624
 
1618
struct drm_ioctl_desc i915_ioctls[] = {
1625
const struct drm_ioctl_desc i915_ioctls[] = {
1619
	DRM_IOCTL_DEF_DRV(I915_INIT, i915_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
1626
	DRM_IOCTL_DEF_DRV(I915_INIT, i915_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
1620
	DRM_IOCTL_DEF_DRV(I915_FLUSH, i915_flush_ioctl, DRM_AUTH),
1627
	DRM_IOCTL_DEF_DRV(I915_FLUSH, i915_flush_ioctl, DRM_AUTH),
1621
	DRM_IOCTL_DEF_DRV(I915_FLIP, i915_flip_bufs, DRM_AUTH),
1628
	DRM_IOCTL_DEF_DRV(I915_FLIP, i915_flip_bufs, DRM_AUTH),
1622
	DRM_IOCTL_DEF_DRV(I915_BATCHBUFFER, i915_batchbuffer, DRM_AUTH),
1629
	DRM_IOCTL_DEF_DRV(I915_BATCHBUFFER, i915_batchbuffer, DRM_AUTH),
1623
	DRM_IOCTL_DEF_DRV(I915_IRQ_EMIT, i915_irq_emit, DRM_AUTH),
1630
	DRM_IOCTL_DEF_DRV(I915_IRQ_EMIT, i915_irq_emit, DRM_AUTH),
1624
	DRM_IOCTL_DEF_DRV(I915_IRQ_WAIT, i915_irq_wait, DRM_AUTH),
1631
	DRM_IOCTL_DEF_DRV(I915_IRQ_WAIT, i915_irq_wait, DRM_AUTH),
1625
	DRM_IOCTL_DEF_DRV(I915_GETPARAM, i915_getparam, DRM_AUTH),
1632
	DRM_IOCTL_DEF_DRV(I915_GETPARAM, i915_getparam, DRM_AUTH|DRM_RENDER_ALLOW),
1626
	DRM_IOCTL_DEF_DRV(I915_SETPARAM, i915_setparam, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
1633
	DRM_IOCTL_DEF_DRV(I915_SETPARAM, i915_setparam, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
1627
	DRM_IOCTL_DEF_DRV(I915_ALLOC, drm_noop, DRM_AUTH),
1634
	DRM_IOCTL_DEF_DRV(I915_ALLOC, drm_noop, DRM_AUTH),
1628
	DRM_IOCTL_DEF_DRV(I915_FREE, drm_noop, DRM_AUTH),
1635
	DRM_IOCTL_DEF_DRV(I915_FREE, drm_noop, DRM_AUTH),
Line 1633... Line 1640...
1633
	DRM_IOCTL_DEF_DRV(I915_GET_VBLANK_PIPE,  i915_vblank_pipe_get, DRM_AUTH),
1640
	DRM_IOCTL_DEF_DRV(I915_GET_VBLANK_PIPE,  i915_vblank_pipe_get, DRM_AUTH),
1634
	DRM_IOCTL_DEF_DRV(I915_VBLANK_SWAP, i915_vblank_swap, DRM_AUTH),
1641
	DRM_IOCTL_DEF_DRV(I915_VBLANK_SWAP, i915_vblank_swap, DRM_AUTH),
1635
	DRM_IOCTL_DEF_DRV(I915_HWS_ADDR, i915_set_status_page, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
1642
	DRM_IOCTL_DEF_DRV(I915_HWS_ADDR, i915_set_status_page, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
1636
	DRM_IOCTL_DEF_DRV(I915_GEM_INIT, i915_gem_init_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED),
1643
	DRM_IOCTL_DEF_DRV(I915_GEM_INIT, i915_gem_init_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED),
1637
	DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER, i915_gem_execbuffer, DRM_AUTH|DRM_UNLOCKED),
1644
	DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER, i915_gem_execbuffer, DRM_AUTH|DRM_UNLOCKED),
1638
	DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER2, i915_gem_execbuffer2, DRM_AUTH|DRM_UNLOCKED),
1645
	DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER2, i915_gem_execbuffer2, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW),
1639
	DRM_IOCTL_DEF_DRV(I915_GEM_PIN, i915_gem_pin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED),
1646
	DRM_IOCTL_DEF_DRV(I915_GEM_PIN, i915_gem_pin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED),
1640
	DRM_IOCTL_DEF_DRV(I915_GEM_UNPIN, i915_gem_unpin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED),
1647
	DRM_IOCTL_DEF_DRV(I915_GEM_UNPIN, i915_gem_unpin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED),
1641
	DRM_IOCTL_DEF_DRV(I915_GEM_BUSY, i915_gem_busy_ioctl, DRM_AUTH|DRM_UNLOCKED),
1648
	DRM_IOCTL_DEF_DRV(I915_GEM_BUSY, i915_gem_busy_ioctl, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW),
1642
	DRM_IOCTL_DEF_DRV(I915_GEM_SET_CACHING, i915_gem_set_caching_ioctl, DRM_UNLOCKED),
1649
	DRM_IOCTL_DEF_DRV(I915_GEM_SET_CACHING, i915_gem_set_caching_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1643
	DRM_IOCTL_DEF_DRV(I915_GEM_GET_CACHING, i915_gem_get_caching_ioctl, DRM_UNLOCKED),
1650
	DRM_IOCTL_DEF_DRV(I915_GEM_GET_CACHING, i915_gem_get_caching_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1644
	DRM_IOCTL_DEF_DRV(I915_GEM_THROTTLE, i915_gem_throttle_ioctl, DRM_AUTH|DRM_UNLOCKED),
1651
	DRM_IOCTL_DEF_DRV(I915_GEM_THROTTLE, i915_gem_throttle_ioctl, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW),
1645
	DRM_IOCTL_DEF_DRV(I915_GEM_ENTERVT, i915_gem_entervt_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED),
1652
	DRM_IOCTL_DEF_DRV(I915_GEM_ENTERVT, i915_gem_entervt_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED),
1646
	DRM_IOCTL_DEF_DRV(I915_GEM_LEAVEVT, i915_gem_leavevt_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED),
1653
	DRM_IOCTL_DEF_DRV(I915_GEM_LEAVEVT, i915_gem_leavevt_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED),
1647
	DRM_IOCTL_DEF_DRV(I915_GEM_CREATE, i915_gem_create_ioctl, DRM_UNLOCKED),
1654
	DRM_IOCTL_DEF_DRV(I915_GEM_CREATE, i915_gem_create_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1648
	DRM_IOCTL_DEF_DRV(I915_GEM_PREAD, i915_gem_pread_ioctl, DRM_UNLOCKED),
1655
	DRM_IOCTL_DEF_DRV(I915_GEM_PREAD, i915_gem_pread_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1649
	DRM_IOCTL_DEF_DRV(I915_GEM_PWRITE, i915_gem_pwrite_ioctl, DRM_UNLOCKED),
1656
	DRM_IOCTL_DEF_DRV(I915_GEM_PWRITE, i915_gem_pwrite_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1650
	DRM_IOCTL_DEF_DRV(I915_GEM_MMAP, i915_gem_mmap_ioctl, DRM_UNLOCKED),
1657
	DRM_IOCTL_DEF_DRV(I915_GEM_MMAP, i915_gem_mmap_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1651
	DRM_IOCTL_DEF_DRV(I915_GEM_MMAP_GTT, i915_gem_mmap_gtt_ioctl, DRM_UNLOCKED),
1658
	DRM_IOCTL_DEF_DRV(I915_GEM_MMAP_GTT, i915_gem_mmap_gtt_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1652
	DRM_IOCTL_DEF_DRV(I915_GEM_SET_DOMAIN, i915_gem_set_domain_ioctl, DRM_UNLOCKED),
1659
	DRM_IOCTL_DEF_DRV(I915_GEM_SET_DOMAIN, i915_gem_set_domain_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1653
	DRM_IOCTL_DEF_DRV(I915_GEM_SW_FINISH, i915_gem_sw_finish_ioctl, DRM_UNLOCKED),
1660
	DRM_IOCTL_DEF_DRV(I915_GEM_SW_FINISH, i915_gem_sw_finish_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1654
	DRM_IOCTL_DEF_DRV(I915_GEM_SET_TILING, i915_gem_set_tiling, DRM_UNLOCKED),
1661
	DRM_IOCTL_DEF_DRV(I915_GEM_SET_TILING, i915_gem_set_tiling, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1655
	DRM_IOCTL_DEF_DRV(I915_GEM_GET_TILING, i915_gem_get_tiling, DRM_UNLOCKED),
1662
	DRM_IOCTL_DEF_DRV(I915_GEM_GET_TILING, i915_gem_get_tiling, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1656
	DRM_IOCTL_DEF_DRV(I915_GEM_GET_APERTURE, i915_gem_get_aperture_ioctl, DRM_UNLOCKED),
1663
	DRM_IOCTL_DEF_DRV(I915_GEM_GET_APERTURE, i915_gem_get_aperture_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1657
	DRM_IOCTL_DEF_DRV(I915_GET_PIPE_FROM_CRTC_ID, intel_get_pipe_from_crtc_id, DRM_UNLOCKED),
1664
	DRM_IOCTL_DEF_DRV(I915_GET_PIPE_FROM_CRTC_ID, intel_get_pipe_from_crtc_id, DRM_UNLOCKED),
1658
	DRM_IOCTL_DEF_DRV(I915_GEM_MADVISE, i915_gem_madvise_ioctl, DRM_UNLOCKED),
1665
	DRM_IOCTL_DEF_DRV(I915_GEM_MADVISE, i915_gem_madvise_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1659
	DRM_IOCTL_DEF_DRV(I915_OVERLAY_PUT_IMAGE, intel_overlay_put_image, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
1666
	DRM_IOCTL_DEF_DRV(I915_OVERLAY_PUT_IMAGE, intel_overlay_put_image, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
1660
	DRM_IOCTL_DEF_DRV(I915_OVERLAY_ATTRS, intel_overlay_attrs, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
1667
	DRM_IOCTL_DEF_DRV(I915_OVERLAY_ATTRS, intel_overlay_attrs, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
1661
	DRM_IOCTL_DEF_DRV(I915_SET_SPRITE_COLORKEY, intel_sprite_set_colorkey, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
1668
	DRM_IOCTL_DEF_DRV(I915_SET_SPRITE_COLORKEY, intel_sprite_set_colorkey, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
1662
	DRM_IOCTL_DEF_DRV(I915_GET_SPRITE_COLORKEY, intel_sprite_get_colorkey, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
1669
	DRM_IOCTL_DEF_DRV(I915_GET_SPRITE_COLORKEY, intel_sprite_get_colorkey, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
1663
	DRM_IOCTL_DEF_DRV(I915_GEM_WAIT, i915_gem_wait_ioctl, DRM_AUTH|DRM_UNLOCKED),
1670
	DRM_IOCTL_DEF_DRV(I915_GEM_WAIT, i915_gem_wait_ioctl, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW),
1664
	DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_CREATE, i915_gem_context_create_ioctl, DRM_UNLOCKED),
1671
	DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_CREATE, i915_gem_context_create_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1665
	DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_DESTROY, i915_gem_context_destroy_ioctl, DRM_UNLOCKED),
1672
	DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_DESTROY, i915_gem_context_destroy_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1666
	DRM_IOCTL_DEF_DRV(I915_REG_READ, i915_reg_read_ioctl, DRM_UNLOCKED),
1673
	DRM_IOCTL_DEF_DRV(I915_REG_READ, i915_reg_read_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW),
1667
};
1674
};
Line 1668... Line 1675...
1668
 
1675
 
Line 1669... Line 1676...
1669
int i915_max_ioctl = DRM_ARRAY_SIZE(i915_ioctls);
1676
int i915_max_ioctl = DRM_ARRAY_SIZE(i915_ioctls);