Lines Matching refs:dev_priv

112 static int i915_workqueues_init(struct drm_i915_private *dev_priv)
128 dev_priv->wq = alloc_ordered_workqueue("i915", 0);
129 if (dev_priv->wq == NULL)
132 dev_priv->display.hotplug.dp_wq = alloc_ordered_workqueue("i915-dp", 0);
133 if (dev_priv->display.hotplug.dp_wq == NULL)
142 dev_priv->unordered_wq = alloc_workqueue("i915-unordered", 0, 0);
143 if (dev_priv->unordered_wq == NULL)
149 destroy_workqueue(dev_priv->display.hotplug.dp_wq);
151 destroy_workqueue(dev_priv->wq);
153 drm_err(&dev_priv->drm, "Failed to allocate workqueues.\n");
158 static void i915_workqueues_cleanup(struct drm_i915_private *dev_priv)
160 destroy_workqueue(dev_priv->unordered_wq);
161 destroy_workqueue(dev_priv->display.hotplug.dp_wq);
162 destroy_workqueue(dev_priv->wq);
175 static void intel_detect_preproduction_hw(struct drm_i915_private *dev_priv)
179 pre |= IS_HASWELL_EARLY_SDV(dev_priv);
180 pre |= IS_SKYLAKE(dev_priv) && INTEL_REVID(dev_priv) < 0x6;
181 pre |= IS_BROXTON(dev_priv) && INTEL_REVID(dev_priv) < 0xA;
182 pre |= IS_KABYLAKE(dev_priv) && INTEL_REVID(dev_priv) < 0x1;
183 pre |= IS_GEMINILAKE(dev_priv) && INTEL_REVID(dev_priv) < 0x3;
184 pre |= IS_ICELAKE(dev_priv) && INTEL_REVID(dev_priv) < 0x7;
185 pre |= IS_TIGERLAKE(dev_priv) && INTEL_REVID(dev_priv) < 0x1;
186 pre |= IS_DG1(dev_priv) && INTEL_REVID(dev_priv) < 0x1;
187 pre |= IS_DG2_G10(dev_priv) && INTEL_REVID(dev_priv) < 0x8;
188 pre |= IS_DG2_G11(dev_priv) && INTEL_REVID(dev_priv) < 0x5;
189 pre |= IS_DG2_G12(dev_priv) && INTEL_REVID(dev_priv) < 0x1;
192 drm_err(&dev_priv->drm, "This is a pre-production stepping. "
211 * @dev_priv: device private
219 static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
223 if (i915_inject_probe_failure(dev_priv))
226 intel_device_info_runtime_init_early(dev_priv);
228 intel_step_init(dev_priv);
230 intel_uncore_mmio_debug_init_early(dev_priv);
232 spin_lock_init(&dev_priv->irq_lock);
233 spin_lock_init(&dev_priv->gpu_error.lock);
235 mutex_init(&dev_priv->sb_lock);
236 cpu_latency_qos_add_request(&dev_priv->sb_qos, PM_QOS_DEFAULT_VALUE);
238 i915_memcpy_init_early(dev_priv);
239 intel_runtime_pm_init_early(&dev_priv->runtime_pm);
241 ret = i915_workqueues_init(dev_priv);
245 ret = vlv_suspend_init(dev_priv);
249 ret = intel_region_ttm_device_init(dev_priv);
253 ret = intel_root_gt_init_early(dev_priv);
257 i915_gem_init_early(dev_priv);
260 intel_detect_pch(dev_priv);
262 intel_irq_init(dev_priv);
263 intel_display_driver_early_probe(dev_priv);
264 intel_clock_gating_hooks_init(dev_priv);
266 intel_detect_preproduction_hw(dev_priv);
271 intel_region_ttm_device_fini(dev_priv);
273 vlv_suspend_cleanup(dev_priv);
275 i915_workqueues_cleanup(dev_priv);
282 * @dev_priv: device private
284 static void i915_driver_late_release(struct drm_i915_private *dev_priv)
286 intel_irq_fini(dev_priv);
287 intel_power_domains_cleanup(dev_priv);
288 i915_gem_cleanup_early(dev_priv);
289 intel_gt_driver_late_release_all(dev_priv);
290 intel_region_ttm_device_fini(dev_priv);
291 vlv_suspend_cleanup(dev_priv);
292 i915_workqueues_cleanup(dev_priv);
294 cpu_latency_qos_remove_request(&dev_priv->sb_qos);
295 mutex_destroy(&dev_priv->sb_lock);
297 i915_params_free(&dev_priv->params);
302 * @dev_priv: device private
309 static int i915_driver_mmio_probe(struct drm_i915_private *dev_priv)
314 if (i915_inject_probe_failure(dev_priv))
317 ret = intel_gmch_bridge_setup(dev_priv);
321 for_each_gt(gt, dev_priv, i) {
326 ret = drmm_add_action_or_reset(&dev_priv->drm,
334 intel_gmch_bar_setup(dev_priv);
335 intel_device_info_runtime_init(dev_priv);
336 intel_display_device_info_runtime_init(dev_priv);
338 for_each_gt(gt, dev_priv, i) {
345 sanitize_gpu(dev_priv);
350 intel_gmch_bar_teardown(dev_priv);
357 * @dev_priv: device private
359 static void i915_driver_mmio_release(struct drm_i915_private *dev_priv)
361 intel_gmch_bar_teardown(dev_priv);
437 * @dev_priv: device private
442 static int i915_driver_hw_probe(struct drm_i915_private *dev_priv)
444 struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
447 if (i915_inject_probe_failure(dev_priv))
450 if (HAS_PPGTT(dev_priv)) {
451 if (intel_vgpu_active(dev_priv) &&
452 !intel_vgpu_has_full_ppgtt(dev_priv)) {
453 i915_report_error(dev_priv,
459 if (HAS_EXECLISTS(dev_priv)) {
465 if (intel_vgpu_active(dev_priv) &&
466 !intel_vgpu_has_hwsp_emulation(dev_priv)) {
467 i915_report_error(dev_priv,
474 intel_dram_edram_detect(dev_priv);
476 ret = i915_set_dma_info(dev_priv);
480 ret = i915_perf_init(dev_priv);
484 ret = i915_ggtt_probe_hw(dev_priv);
488 ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, dev_priv->drm.driver);
492 ret = i915_ggtt_init_hw(dev_priv);
500 ret = intel_gt_tiles_init(dev_priv);
504 ret = intel_memory_regions_hw_probe(dev_priv);
508 ret = i915_ggtt_enable_hw(dev_priv);
510 drm_err(&dev_priv->drm, "failed to enable GGTT\n");
535 if (GRAPHICS_VER(dev_priv) >= 5) {
537 drm_dbg(&dev_priv->drm, "can't enable MSI");
540 ret = intel_gvt_init(dev_priv);
544 intel_opregion_setup(dev_priv);
546 ret = i915_pcode_init(dev_priv);
554 intel_dram_detect(dev_priv);
556 intel_bw_init_hw(dev_priv);
561 intel_opregion_cleanup(dev_priv);
566 intel_memory_regions_driver_release(dev_priv);
568 i915_ggtt_driver_release(dev_priv);
569 i915_gem_drain_freed_objects(dev_priv);
570 i915_ggtt_driver_late_release(dev_priv);
572 i915_perf_fini(dev_priv);
578 * @dev_priv: device private
580 static void i915_driver_hw_remove(struct drm_i915_private *dev_priv)
582 struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
584 i915_perf_fini(dev_priv);
586 intel_opregion_cleanup(dev_priv);
594 * @dev_priv: device private
599 static void i915_driver_register(struct drm_i915_private *dev_priv)
604 i915_gem_driver_register(dev_priv);
605 i915_pmu_register(dev_priv);
607 intel_vgpu_register(dev_priv);
610 if (drm_dev_register(&dev_priv->drm, 0)) {
611 drm_err(&dev_priv->drm,
616 i915_debugfs_register(dev_priv);
617 i915_setup_sysfs(dev_priv);
620 i915_perf_register(dev_priv);
622 for_each_gt(gt, dev_priv, i)
625 intel_pxp_debugfs_register(dev_priv->pxp);
627 i915_hwmon_register(dev_priv);
629 intel_display_driver_register(dev_priv);
631 intel_power_domains_enable(dev_priv);
632 intel_runtime_pm_enable(&dev_priv->runtime_pm);
636 if (i915_switcheroo_register(dev_priv))
637 drm_err(&dev_priv->drm, "Failed to register vga switcheroo!\n");
642 * @dev_priv: device private
644 static void i915_driver_unregister(struct drm_i915_private *dev_priv)
649 i915_switcheroo_unregister(dev_priv);
653 intel_runtime_pm_disable(&dev_priv->runtime_pm);
654 intel_power_domains_disable(dev_priv);
656 intel_display_driver_unregister(dev_priv);
658 intel_pxp_fini(dev_priv);
660 for_each_gt(gt, dev_priv, i)
663 i915_hwmon_unregister(dev_priv);
665 i915_perf_unregister(dev_priv);
666 i915_pmu_unregister(dev_priv);
668 i915_teardown_sysfs(dev_priv);
669 drm_dev_unplug(&dev_priv->drm);
671 i915_gem_driver_unregister(dev_priv);
681 static void i915_welcome_messages(struct drm_i915_private *dev_priv)
684 struct drm_printer p = drm_dbg_printer(&dev_priv->drm, DRM_UT_DRIVER,
690 INTEL_DEVID(dev_priv),
691 INTEL_REVID(dev_priv),
692 intel_platform_name(INTEL_INFO(dev_priv)->platform),
693 intel_subplatform(RUNTIME_INFO(dev_priv),
694 INTEL_INFO(dev_priv)->platform),
695 GRAPHICS_VER(dev_priv));
697 intel_device_info_print(INTEL_INFO(dev_priv),
698 RUNTIME_INFO(dev_priv), &p);
699 i915_print_iommu_status(dev_priv, &p);
700 for_each_gt(gt, dev_priv, i)
705 drm_info(&dev_priv->drm, "DRM_I915_DEBUG enabled\n");
707 drm_info(&dev_priv->drm, "DRM_I915_DEBUG_GEM enabled\n");
709 drm_info(&dev_priv->drm,
884 struct drm_i915_private *dev_priv = to_i915(dev);
885 struct intel_runtime_pm *rpm = &dev_priv->runtime_pm;
888 if (!dev_priv->do_release)
893 i915_gem_driver_release(dev_priv);
895 intel_memory_regions_driver_release(dev_priv);
896 i915_ggtt_driver_release(dev_priv);
897 i915_gem_drain_freed_objects(dev_priv);
898 i915_ggtt_driver_late_release(dev_priv);
900 i915_driver_mmio_release(dev_priv);
906 i915_driver_late_release(dev_priv);
908 intel_display_device_remove(dev_priv);
936 static void intel_suspend_encoders(struct drm_i915_private *dev_priv)
940 if (!HAS_DISPLAY(dev_priv))
947 drm_modeset_lock_all(&dev_priv->drm);
948 for_each_intel_encoder(&dev_priv->drm, encoder)
951 drm_modeset_unlock_all(&dev_priv->drm);
953 for_each_intel_encoder(&dev_priv->drm, encoder)
958 static void intel_shutdown_encoders(struct drm_i915_private *dev_priv)
962 if (!HAS_DISPLAY(dev_priv))
969 drm_modeset_lock_all(&dev_priv->drm);
970 for_each_intel_encoder(&dev_priv->drm, encoder)
973 drm_modeset_unlock_all(&dev_priv->drm);
975 for_each_intel_encoder(&dev_priv->drm, encoder)
1026 static bool suspend_to_idle(struct drm_i915_private *dev_priv)
1059 struct drm_i915_private *dev_priv = to_i915(dev);
1060 struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
1063 disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
1067 intel_power_domains_disable(dev_priv);
1069 if (HAS_DISPLAY(dev_priv)) {
1071 intel_display_driver_disable_user_access(dev_priv);
1076 intel_display_driver_suspend(dev_priv);
1078 intel_dp_mst_suspend(dev_priv);
1080 intel_runtime_pm_disable_interrupts(dev_priv);
1081 intel_hpd_cancel_work(dev_priv);
1083 if (HAS_DISPLAY(dev_priv))
1084 intel_display_driver_suspend_access(dev_priv);
1086 intel_suspend_encoders(dev_priv);
1089 intel_dpt_suspend(dev_priv);
1090 i915_ggtt_suspend(to_gt(dev_priv)->ggtt);
1092 i915_save_display(dev_priv);
1094 opregion_target_state = suspend_to_idle(dev_priv) ? PCI_D1 : PCI_D3cold;
1095 intel_opregion_suspend(dev_priv, opregion_target_state);
1097 dev_priv->suspend_count++;
1099 intel_dmc_suspend(dev_priv);
1101 enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
1103 i915_gem_drain_freed_objects(dev_priv);
1110 struct drm_i915_private *dev_priv = to_i915(dev);
1111 struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
1112 struct intel_runtime_pm *rpm = &dev_priv->runtime_pm;
1115 bool s2idle = !hibernation && suspend_to_idle(dev_priv);
1119 intel_pxp_suspend(dev_priv->pxp);
1121 i915_gem_suspend_late(dev_priv);
1123 for_each_gt(gt, dev_priv, i)
1126 intel_power_domains_suspend(dev_priv, s2idle);
1128 intel_display_power_suspend_late(dev_priv);
1130 ret = vlv_suspend_complete(dev_priv);
1132 drm_err(&dev_priv->drm, "Suspend complete failed: %d\n", ret);
1133 intel_power_domains_resume(dev_priv);
1151 if (!(hibernation && GRAPHICS_VER(dev_priv) < 6))
1156 if (!dev_priv->uncore.user_forcewake_count)
1183 struct drm_i915_private *dev_priv = to_i915(dev);
1187 disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
1189 ret = i915_pcode_init(dev_priv);
1193 sanitize_gpu(dev_priv);
1195 ret = i915_ggtt_enable_hw(dev_priv);
1197 drm_err(&dev_priv->drm, "failed to re-enable GGTT\n");
1199 i915_ggtt_resume(to_gt(dev_priv)->ggtt);
1201 for_each_gt(gt, dev_priv, i)
1206 intel_dpt_resume(dev_priv);
1208 intel_dmc_resume(dev_priv);
1210 i915_restore_display(dev_priv);
1211 intel_pps_unlock_regs_wa(dev_priv);
1213 intel_init_pch_refclk(dev_priv);
1225 intel_runtime_pm_enable_interrupts(dev_priv);
1227 if (HAS_DISPLAY(dev_priv))
1230 i915_gem_resume(dev_priv);
1232 intel_display_driver_init_hw(dev_priv);
1234 intel_clock_gating_init(dev_priv);
1236 if (HAS_DISPLAY(dev_priv))
1237 intel_display_driver_resume_access(dev_priv);
1239 intel_hpd_init(dev_priv);
1242 intel_dp_mst_resume(dev_priv);
1243 intel_display_driver_resume(dev_priv);
1245 if (HAS_DISPLAY(dev_priv)) {
1246 intel_display_driver_enable_user_access(dev_priv);
1249 intel_hpd_poll_disable(dev_priv);
1251 intel_opregion_resume(dev_priv);
1255 intel_power_domains_enable(dev_priv);
1257 intel_gvt_resume(dev_priv);
1259 enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
1266 struct drm_i915_private *dev_priv = to_i915(dev);
1267 struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
1293 drm_err(&dev_priv->drm,
1316 disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
1318 ret = vlv_resume_prepare(dev_priv, false);
1320 drm_err(&dev_priv->drm,
1323 for_each_gt(gt, dev_priv, i)
1326 intel_display_power_resume_early(dev_priv);
1328 intel_power_domains_resume(dev_priv);
1330 enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
1499 struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
1500 struct intel_runtime_pm *rpm = &dev_priv->runtime_pm;
1501 struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
1506 if (drm_WARN_ON_ONCE(&dev_priv->drm, !HAS_RUNTIME_PM(dev_priv)))
1509 drm_dbg(&dev_priv->drm, "Suspending device\n");
1517 i915_gem_runtime_suspend(dev_priv);
1519 intel_pxp_runtime_suspend(dev_priv->pxp);
1521 for_each_gt(gt, dev_priv, i)
1524 intel_runtime_pm_disable_interrupts(dev_priv);
1526 for_each_gt(gt, dev_priv, i)
1529 intel_display_power_suspend(dev_priv);
1531 ret = vlv_suspend_complete(dev_priv);
1533 drm_err(&dev_priv->drm,
1535 intel_uncore_runtime_resume(&dev_priv->uncore);
1537 intel_runtime_pm_enable_interrupts(dev_priv);
1539 for_each_gt(gt, dev_priv, i)
1550 if (intel_uncore_arm_unclaimed_mmio_detection(&dev_priv->uncore))
1551 drm_err(&dev_priv->drm,
1567 if (IS_BROADWELL(dev_priv)) {
1574 intel_opregion_notify_adapter(dev_priv, PCI_D3hot);
1583 intel_opregion_notify_adapter(dev_priv, PCI_D1);
1586 assert_forcewakes_inactive(&dev_priv->uncore);
1588 if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv))
1589 intel_hpd_poll_enable(dev_priv);
1591 drm_dbg(&dev_priv->drm, "Device suspended\n");
1597 struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
1598 struct intel_runtime_pm *rpm = &dev_priv->runtime_pm;
1599 struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
1604 if (drm_WARN_ON_ONCE(&dev_priv->drm, !HAS_RUNTIME_PM(dev_priv)))
1607 drm_dbg(&dev_priv->drm, "Resuming device\n");
1609 drm_WARN_ON_ONCE(&dev_priv->drm, atomic_read(&rpm->wakeref_count));
1612 intel_opregion_notify_adapter(dev_priv, PCI_D0);
1618 if (intel_uncore_unclaimed_mmio(&dev_priv->uncore))
1619 drm_dbg(&dev_priv->drm,
1622 intel_display_power_resume(dev_priv);
1624 ret = vlv_resume_prepare(dev_priv, true);
1626 for_each_gt(gt, dev_priv, i)
1629 intel_runtime_pm_enable_interrupts(dev_priv);
1635 for_each_gt(gt, dev_priv, i)
1638 intel_pxp_runtime_resume(dev_priv->pxp);
1645 if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv)) {
1646 intel_hpd_init(dev_priv);
1647 intel_hpd_poll_disable(dev_priv);
1650 skl_watermark_ipc_update(dev_priv);
1655 drm_err(&dev_priv->drm,
1658 drm_dbg(&dev_priv->drm, "Device resumed\n");