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); |