/linux/drivers/gpu/drm/xe/ |
H A D | xe_pm.c | 30 * DOC: Xe Power Management 32 * Xe PM implements the main routines for both system level suspend states and 52 * to perform the transition from D3hot to D3cold. Xe may disallow this 60 * (PC-states), and/or other low level power states. Xe PM component provides 64 * Also, Xe PM provides get and put functions that Xe driver will use to 87 * @xe: The xe device. 92 bool xe_rpm_reclaim_safe(const struct xe_device *xe) in xe_rpm_reclaim_safe() argument 94 return !xe->d3cold.capable; in xe_rpm_reclaim_safe() 97 static void xe_rpm_lockmap_acquire(const struct xe_device *xe) in xe_rpm_lockmap_acquire() argument 99 lock_map_acquire(xe_rpm_reclaim_safe(xe) ? in xe_rpm_lockmap_acquire() [all …]
|
H A D | xe_irq.c | 32 #define IMR(offset) XE_REG(offset + 0x4) 33 #define IIR(offset) XE_REG(offset + 0x8) 34 #define IER(offset) XE_REG(offset + 0xc) 36 static int xe_irq_msix_init(struct xe_device *xe); 37 static void xe_irq_msix_free(struct xe_device *xe); 38 static int xe_irq_msix_request_irqs(struct xe_device *xe); 39 static void xe_irq_msix_synchronize_irq(struct xe_device *xe); 45 if (val == 0) in assert_iir_is_zero() 48 drm_WARN(&mmio->tile->xe->drm, 1, in assert_iir_is_zero() 49 "Interrupt register 0x%x is not zero: 0x%08x\n", in assert_iir_is_zero() [all …]
|
H A D | xe_device.c | 76 struct xe_device *xe = to_xe_device(dev); in xe_file_open() local 94 xef->xe = xe; in xe_file_open() 112 return 0; in xe_file_open() 130 * xe_file_get() - Take a reference to the xe file object 131 * @xef: Pointer to the xe file 133 * Anyone with a pointer to xef must take a reference to the xe file 136 * Return: xe file pointer 145 * xe_file_put() - Drop a reference to the xe file object 146 * @xef: Pointer to the xe file 157 struct xe_device *xe = to_xe_device(dev); in xe_file_close() local [all …]
|
H A D | xe_pat.c | 22 #define _PAT_ATS 0x47fc 24 0x4800, 0x4804, \ 25 0x4848, 0x484c) 26 #define _PAT_PTA 0x4820 33 #define XE2_COH_MODE REG_GENMASK(1, 0) 38 #define XELPG_PAT_0_WB REG_FIELD_PREP(XELPG_L4_POLICY_MASK, 0) 39 #define XELPG_INDEX_COH_MODE_MASK REG_GENMASK(1, 0) 42 #define XELPG_0_COH_NON REG_FIELD_PREP(XELPG_INDEX_COH_MODE_MASK, 0) 47 #define XELP_MEM_TYPE_MASK REG_GENMASK(1, 0) 51 #define XELP_PAT_UC REG_FIELD_PREP(XELP_MEM_TYPE_MASK, 0) [all …]
|
H A D | xe_debugfs.c | 42 struct xe_device *xe = node_to_xe(m->private); in info() local 47 xe_pm_runtime_get(xe); in info() 49 drm_printf(&p, "graphics_verx100 %d\n", xe->info.graphics_verx100); in info() 50 drm_printf(&p, "media_verx100 %d\n", xe->info.media_verx100); in info() 52 xe_step_name(xe->info.step.graphics), in info() 53 xe_step_name(xe->info.step.media), in info() 54 xe_step_name(xe->info.step.basedie)); in info() 55 drm_printf(&p, "is_dgfx %s\n", str_yes_no(xe->info.is_dgfx)); in info() 56 drm_printf(&p, "platform %d\n", xe->info.platform); in info() 58 xe->info.subplatform > XE_SUBPLATFORM_NONE ? xe->info.subplatform : 0); in info() [all …]
|
H A D | xe_pci_sriov.c | 30 static int pf_provision_vfs(struct xe_device *xe, unsigned int num_vfs) in pf_provision_vfs() argument 34 int result = 0, err; in pf_provision_vfs() 36 for_each_gt(gt, xe, id) { in pf_provision_vfs() 46 static void pf_unprovision_vfs(struct xe_device *xe, unsigned int num_vfs) in pf_unprovision_vfs() argument 52 for_each_gt(gt, xe, id) in pf_unprovision_vfs() 57 static void pf_reset_vfs(struct xe_device *xe, unsigned int num_vfs) in pf_reset_vfs() argument 63 for_each_gt(gt, xe, id) in pf_reset_vfs() 68 static struct pci_dev *xe_pci_pf_get_vf_dev(struct xe_device *xe, unsigned int vf_id) in xe_pci_pf_get_vf_dev() argument 70 struct pci_dev *pdev = to_pci_dev(xe->drm.dev); in xe_pci_pf_get_vf_dev() 72 xe_assert(xe, IS_SRIOV_PF(xe)); in xe_pci_pf_get_vf_dev() [all …]
|
H A D | xe_sriov_pf.c | 20 static unsigned int wanted_max_vfs(struct xe_device *xe) in wanted_max_vfs() argument 25 static int pf_reduce_totalvfs(struct xe_device *xe, int limit) in pf_reduce_totalvfs() argument 27 struct device *dev = xe->drm.dev; in pf_reduce_totalvfs() 33 xe_sriov_notice(xe, "Failed to set number of VFs to %d (%pe)\n", in pf_reduce_totalvfs() 38 static bool pf_continue_as_native(struct xe_device *xe, const char *why) in pf_continue_as_native() argument 40 xe_sriov_dbg(xe, "%s, continuing as native\n", why); in pf_continue_as_native() 41 pf_reduce_totalvfs(xe, 0); in pf_continue_as_native() 47 * @xe: the &xe_device to check 54 bool xe_sriov_pf_readiness(struct xe_device *xe) in xe_sriov_pf_readiness() argument 56 struct device *dev = xe->drm.dev; in xe_sriov_pf_readiness() [all …]
|
H A D | xe_ttm_stolen_mgr.c | 49 * @xe: xe device 55 bool xe_ttm_stolen_cpu_access_needs_ggtt(struct xe_device *xe) in xe_ttm_stolen_cpu_access_needs_ggtt() argument 57 return GRAPHICS_VERx100(xe) < 1270 && !IS_DGFX(xe); in xe_ttm_stolen_cpu_access_needs_ggtt() 60 static u32 get_wopcm_size(struct xe_device *xe) in get_wopcm_size() argument 65 val = xe_mmio_read64_2x32(xe_root_tile_mmio(xe), STOLEN_RESERVED); in get_wopcm_size() 69 case 0x5 ... 0x6: in get_wopcm_size() 72 case 0x0 ... 0x3: in get_wopcm_size() 77 wopcm_size = 0; in get_wopcm_size() 83 static s64 detect_bar2_dgfx(struct xe_device *xe, struct xe_ttm_stolen_mgr *mgr) in detect_bar2_dgfx() argument 85 struct xe_tile *tile = xe_device_get_root_tile(xe); in detect_bar2_dgfx() [all …]
|
H A D | xe_bo_evict.c | 15 static int xe_bo_apply_to_pinned(struct xe_device *xe, in xe_bo_apply_to_pinned() argument 22 int ret = 0; in xe_bo_apply_to_pinned() 24 spin_lock(&xe->pinned.lock); in xe_bo_apply_to_pinned() 32 spin_unlock(&xe->pinned.lock); in xe_bo_apply_to_pinned() 36 spin_lock(&xe->pinned.lock); in xe_bo_apply_to_pinned() 44 spin_unlock(&xe->pinned.lock); in xe_bo_apply_to_pinned() 47 spin_lock(&xe->pinned.lock); in xe_bo_apply_to_pinned() 50 spin_unlock(&xe->pinned.lock); in xe_bo_apply_to_pinned() 58 * @xe: xe device 62 * Return: 0 on success, negative error code on error. [all …]
|
H A D | xe_pci.c | 187 static const u16 adls_rpls_ids[] = { INTEL_RPLS_IDS(NOP), 0 }; 204 static const u16 adlp_rplu_ids[] = { INTEL_RPLU_IDS(NOP), 0 }; 248 static const u16 dg2_g10_ids[] = { INTEL_DG2_G10_IDS(NOP), INTEL_ATS_M150_IDS(NOP), 0 }; 249 static const u16 dg2_g11_ids[] = { INTEL_DG2_G11_IDS(NOP), INTEL_ATS_M75_IDS(NOP), 0 }; 250 static const u16 dg2_g12_ids[] = { INTEL_DG2_G12_IDS(NOP), 0 }; 384 if (negative && strcmp(devices, "!*") == 0) in device_id_in_list() 386 if (!negative && strcmp(devices, "*") == 0) in device_id_in_list() 396 if (negative && tok[0] == '!') in device_id_in_list() 398 else if ((negative && tok[0] != '!') || in device_id_in_list() 399 (!negative && tok[0] == '!')) in device_id_in_list() [all …]
|
H A D | xe_sriov_pf_service.c | 18 * @xe: the &xe_device to initialize 24 void xe_sriov_pf_service_init(struct xe_device *xe) in xe_sriov_pf_service_init() argument 29 xe_assert(xe, IS_SRIOV_PF(xe)); in xe_sriov_pf_service_init() 32 xe->sriov.pf.service.version.base.major = GUC_RELAY_VERSION_BASE_MAJOR; in xe_sriov_pf_service_init() 33 xe->sriov.pf.service.version.base.minor = GUC_RELAY_VERSION_BASE_MINOR; in xe_sriov_pf_service_init() 36 xe->sriov.pf.service.version.latest.major = GUC_RELAY_VERSION_LATEST_MAJOR; in xe_sriov_pf_service_init() 37 xe->sriov.pf.service.version.latest.minor = GUC_RELAY_VERSION_LATEST_MINOR; in xe_sriov_pf_service_init() 40 /* Return: 0 on success or a negative error code on failure. */ 41 static int pf_negotiate_version(struct xe_device *xe, in pf_negotiate_version() argument 45 struct xe_sriov_pf_service_version base = xe->sriov.pf.service.version.base; in pf_negotiate_version() [all …]
|
H A D | xe_pxp_submit.c | 37 struct xe_device *xe = pxp->xe; in allocate_vcs_execution_resources() local 44 hwe = xe_gt_hw_engine(gt, XE_ENGINE_CLASS_VIDEO_DECODE, 0, true); in allocate_vcs_execution_resources() 48 q = xe_exec_queue_create(xe, NULL, BIT(hwe->logical_instance), 1, hwe, in allocate_vcs_execution_resources() 49 EXEC_QUEUE_FLAG_KERNEL | EXEC_QUEUE_FLAG_PERMANENT, 0); in allocate_vcs_execution_resources() 57 bo = xe_bo_create_pin_map(xe, tile, NULL, SZ_4K, ttm_bo_type_kernel, in allocate_vcs_execution_resources() 67 return 0; in allocate_vcs_execution_resources() 89 struct xe_device *xe = tile_to_xe(tile); in allocate_gsc_client_resources() local 96 int err = 0; in allocate_gsc_client_resources() 98 hwe = xe_gt_hw_engine(gt, XE_ENGINE_CLASS_OTHER, 0, true); in allocate_gsc_client_resources() 101 xe_assert(xe, hwe); in allocate_gsc_client_resources() [all …]
|
H A D | xe_device_sysfs.c | 19 * DOC: Xe device sysfs 20 * Xe driver requires exposing certain tunable knobs controlled by user space for 40 struct xe_device *xe = pdev_to_xe_device(pdev); in vram_d3cold_threshold_show() local 43 xe_pm_runtime_get(xe); in vram_d3cold_threshold_show() 44 ret = sysfs_emit(buf, "%d\n", xe->d3cold.vram_threshold); in vram_d3cold_threshold_show() 45 xe_pm_runtime_put(xe); in vram_d3cold_threshold_show() 55 struct xe_device *xe = pdev_to_xe_device(pdev); in vram_d3cold_threshold_store() local 59 ret = kstrtou32(buff, 0, &vram_d3cold_threshold); in vram_d3cold_threshold_store() 63 drm_dbg(&xe->drm, "vram_d3cold_threshold: %u\n", vram_d3cold_threshold); in vram_d3cold_threshold_store() 65 xe_pm_runtime_get(xe); in vram_d3cold_threshold_store() [all …]
|
H A D | xe_device.h | 34 static inline struct xe_device *xe_device_const_cast(const struct xe_device *xe) in xe_device_const_cast() argument 36 return (struct xe_device *)xe; in xe_device_const_cast() 46 int xe_device_probe_early(struct xe_device *xe); 47 int xe_device_probe(struct xe_device *xe); 48 void xe_device_remove(struct xe_device *xe); 49 void xe_device_shutdown(struct xe_device *xe); 51 void xe_device_wmb(struct xe_device *xe); 58 static inline struct xe_tile *xe_device_get_root_tile(struct xe_device *xe) in xe_device_get_root_tile() argument 60 return &xe->tiles[0]; in xe_device_get_root_tile() 66 * structures should use the per-platform xe->info.max_gt_per_tile instead. [all …]
|
H A D | xe_vram.c | 27 _resize_bar(struct xe_device *xe, int resno, resource_size_t size) in _resize_bar() argument 29 struct pci_dev *pdev = to_pci_dev(xe->drm.dev); in _resize_bar() 38 …drm_info(&xe->drm, "Failed to resize BAR%d to %dM (%pe). Consider enabling 'Resizable BAR' support… in _resize_bar() 43 drm_info(&xe->drm, "BAR%d resized to %dM\n", resno, 1 << bar_size); in _resize_bar() 50 static void resize_vram_bar(struct xe_device *xe) in resize_vram_bar() argument 53 struct pci_dev *pdev = to_pci_dev(xe->drm.dev); in resize_vram_bar() 69 if (force_vram_bar_size < 0) in resize_vram_bar() 81 drm_info(&xe->drm, in resize_vram_bar() 82 "Requested size: %lluMiB is not supported by rebar sizes: 0x%x. Leaving default: %lluMiB\n", in resize_vram_bar() 99 drm_info(&xe->drm, "Attempting to resize bar from %lluMiB -> %lluMiB\n", in resize_vram_bar() [all …]
|
H A D | xe_sriov.c | 39 static bool test_is_vf(struct xe_device *xe) in test_is_vf() argument 41 u32 value = xe_mmio_read32(xe_root_tile_mmio(xe), VF_CAP_REG); in test_is_vf() 48 * @xe: the &xe_device to probe mode on 57 void xe_sriov_probe_early(struct xe_device *xe) in xe_sriov_probe_early() argument 59 struct pci_dev *pdev = to_pci_dev(xe->drm.dev); in xe_sriov_probe_early() 61 bool has_sriov = xe->info.has_sriov; in xe_sriov_probe_early() 64 if (test_is_vf(xe)) in xe_sriov_probe_early() 66 else if (xe_sriov_pf_readiness(xe)) in xe_sriov_probe_early() 76 drm_info(&xe->drm, "Support for SR-IOV is not available\n"); in xe_sriov_probe_early() 77 pci_sriov_set_totalvfs(pdev, 0); in xe_sriov_probe_early() [all …]
|
H A D | xe_nvm.c | 16 #define GEN12_GUNIT_NVM_BASE 0x00102040 17 #define GEN12_DEBUG_NVM_BASE 0x00101018 19 #define GEN12_CNTL_PROTECTED_NVM_REG 0x0010100C 21 #define GEN12_GUNIT_NVM_SIZE 0x80 22 #define GEN12_DEBUG_NVM_SIZE 0x4 29 [0] = { .name = "DESCRIPTOR", }, 40 static bool xe_nvm_non_posted_erase(struct xe_device *xe) in xe_nvm_non_posted_erase() argument 42 struct xe_gt *gt = xe_root_mmio_gt(xe); in xe_nvm_non_posted_erase() 44 if (xe->info.platform != XE_BATTLEMAGE) in xe_nvm_non_posted_erase() 50 static bool xe_nvm_writable_override(struct xe_device *xe) in xe_nvm_writable_override() argument [all …]
|
H A D | xe_survivability_mode.c | 25 * DOC: Xe Boot Survivability 42 * # echo 1 > /sys/kernel/config/xe/0000:03:00.0/survivability_mode 74 static void populate_survivability_info(struct xe_device *xe) in populate_survivability_info() argument 76 struct xe_survivability *survivability = &xe->survivability; in populate_survivability_info() 79 u32 id = 0, reg_value; in populate_survivability_info() 83 mmio = xe_root_tile_mmio(xe); in populate_survivability_info() 100 for (index = 0; id && reg_value; index++, reg_value = info[id].value, in populate_survivability_info() 110 struct xe_device *xe = pdev_to_xe_device(pdev); in log_survivability_info() local 111 struct xe_survivability *survivability = &xe->survivability; in log_survivability_info() 117 for (id = 0; id < MAX_SCRATCH_MMIO; id++) { in log_survivability_info() [all …]
|
H A D | xe_rtp.c | 27 static bool has_samedia(const struct xe_device *xe) in has_samedia() argument 29 return xe->info.media_verx100 >= 1300; in has_samedia() 32 static bool rule_matches(const struct xe_device *xe, in rule_matches() argument 39 unsigned int i, rcount = 0; in rule_matches() 42 for (r = rules, i = 0; i < n_rules; r = &rules[++i]) { in rule_matches() 52 match = xe->info.platform == r->platform; in rule_matches() 55 match = xe->info.platform == r->platform && in rule_matches() 56 xe->info.subplatform == r->subplatform; in rule_matches() 59 if (drm_WARN_ON(&xe->drm, !gt)) in rule_matches() 62 match = xe->info.graphics_verx100 == r->ver_start && in rule_matches() [all …]
|
H A D | xe_heci_gsc.c | 18 #define GSC_BAR_LENGTH 0x00000FFC 101 if (heci_gsc->irq >= 0) in xe_heci_gsc_fini() 107 static int heci_gsc_irq_setup(struct xe_device *xe) in heci_gsc_irq_setup() argument 109 struct xe_heci_gsc *heci_gsc = &xe->heci_gsc; in heci_gsc_irq_setup() 112 heci_gsc->irq = irq_alloc_desc(0); in heci_gsc_irq_setup() 113 if (heci_gsc->irq < 0) { in heci_gsc_irq_setup() 114 drm_err(&xe->drm, "gsc irq error %d\n", heci_gsc->irq); in heci_gsc_irq_setup() 119 if (ret < 0) in heci_gsc_irq_setup() 120 drm_err(&xe->drm, "gsc irq init failed %d\n", ret); in heci_gsc_irq_setup() 125 static int heci_gsc_add_device(struct xe_device *xe, const struct heci_gsc_def *def) in heci_gsc_add_device() argument [all …]
|
/linux/drivers/gpu/drm/xe/tests/ |
H A D | xe_sriov_pf_service_kunit.c | 19 struct xe_device *xe; in pf_service_test_init() local 24 xe = test->priv; in pf_service_test_init() 25 KUNIT_ASSERT_EQ(test, xe_sriov_init(xe), 0); in pf_service_test_init() 27 xe_sriov_pf_service_init(xe); in pf_service_test_init() 33 KUNIT_ASSERT_NE(test, 0, xe->sriov.pf.service.version.base.major); in pf_service_test_init() 34 KUNIT_ASSERT_NE(test, 0, xe->sriov.pf.service.version.latest.major); in pf_service_test_init() 35 KUNIT_ASSERT_LE(test, xe->sriov.pf.service.version.base.major, in pf_service_test_init() 36 xe->sriov.pf.service.version.latest.major); in pf_service_test_init() 37 if (xe->sriov.pf.service.version.base.major == xe->sriov.pf.service.version.latest.major) in pf_service_test_init() 38 KUNIT_ASSERT_LE(test, xe->sriov.pf.service.version.base.minor, in pf_service_test_init() [all …]
|
H A D | xe_migrate.c | 15 static bool sanity_fence_failed(struct xe_device *xe, struct dma_fence *fence, in sanity_fence_failed() argument 29 if (ret <= 0) { in sanity_fence_failed() 37 static int run_sanity_job(struct xe_migrate *m, struct xe_device *xe, in run_sanity_job() argument 41 u64 batch_base = xe_migrate_batch_base(m, xe->info.has_usm); in run_sanity_job() 57 if (sanity_fence_failed(xe, fence, str, test)) in run_sanity_job() 62 return 0; in run_sanity_job() 70 } } while (0) 75 struct xe_device *xe = tile_to_xe(m->tile); in test_copy() local 76 u64 retval, expected = 0; in test_copy() 82 struct xe_bo *remote = xe_bo_create_locked(xe, m->tile, NULL, in test_copy() [all …]
|
/linux/Documentation/ABI/testing/ |
H A D | sysfs-driver-intel-xe-hwmon | 1 What: /sys/bus/pci/drivers/xe/.../hwmon/hwmon<i>/power1_max 4 Contact: intel-xe@lists.freedesktop.org 9 exceeds this limit. A read value of 0 means that the PL1 10 power limit is disabled, writing 0 disables the 11 limit. Writing values > 0 and <= TDP will enable the power limit. 13 Only supported for particular Intel Xe graphics platforms. 15 What: /sys/bus/pci/drivers/xe/.../hwmon/hwmon<i>/power1_rated_max 18 Contact: intel-xe@lists.freedesktop.org 21 Only supported for particular Intel Xe graphics platforms. 24 What: /sys/bus/pci/drivers/xe/.../hwmon/hwmon<i>/energy1_input [all …]
|
/linux/drivers/gpu/drm/xe/display/ |
H A D | xe_display.h | 18 int xe_display_probe(struct xe_device *xe); 20 int xe_display_init_early(struct xe_device *xe); 21 int xe_display_init(struct xe_device *xe); 23 void xe_display_register(struct xe_device *xe); 24 void xe_display_unregister(struct xe_device *xe); 26 void xe_display_irq_handler(struct xe_device *xe, u32 master_ctl); 27 void xe_display_irq_enable(struct xe_device *xe, u32 gu_misc_iir); 28 void xe_display_irq_reset(struct xe_device *xe); 29 void xe_display_irq_postinstall(struct xe_device *xe, struct xe_gt *gt); 31 void xe_display_pm_suspend(struct xe_device *xe); [all …]
|
H A D | xe_display.c | 38 /* Xe device functions */ 40 static bool has_display(struct xe_device *xe) in has_display() argument 42 struct intel_display *display = xe->display; in has_display() 52 * Note: This is called before xe or display device creation. 59 return 0; in xe_display_driver_probe_defer() 72 * Note: This is called before xe or display device creation. 86 static void unset_display_features(struct xe_device *xe) in unset_display_features() argument 88 xe->drm.driver_features &= ~(DRIVER_MODESET | DRIVER_ATOMIC); in unset_display_features() 93 struct xe_device *xe = arg; in xe_display_fini_early() local 94 struct intel_display *display = xe->display; in xe_display_fini_early() [all …]
|