Lines Matching refs:xe
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()
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()
86 struct xe_mmio *mmio = xe_root_tile_mmio(xe); in detect_bar2_dgfx()
87 struct pci_dev *pdev = to_pci_dev(xe->drm.dev); in detect_bar2_dgfx()
92 tile_offset = tile->mem.vram.io_start - xe->mem.vram.io_start; in detect_bar2_dgfx()
97 if (drm_WARN_ON(&xe->drm, tile_size < mgr->stolen_base)) in detect_bar2_dgfx()
101 wopcm_size = get_wopcm_size(xe); in detect_bar2_dgfx()
102 if (drm_WARN_ON(&xe->drm, !wopcm_size)) in detect_bar2_dgfx()
121 static u32 detect_bar2_integrated(struct xe_device *xe, struct xe_ttm_stolen_mgr *mgr) in detect_bar2_integrated() argument
123 struct pci_dev *pdev = to_pci_dev(xe->drm.dev); in detect_bar2_integrated()
124 struct xe_gt *media_gt = xe_device_get_root_tile(xe)->media_gt; in detect_bar2_integrated()
128 ggc = xe_mmio_read32(xe_root_tile_mmio(xe), GGC); in detect_bar2_integrated()
134 if (drm_WARN_ON(&xe->drm, (ggc & GGMS_MASK) != GGMS_MASK)) in detect_bar2_integrated()
161 wopcm_size = get_wopcm_size(xe); in detect_bar2_integrated()
162 if (drm_WARN_ON(&xe->drm, !wopcm_size)) in detect_bar2_integrated()
188 if (drm_WARN_ON(&xe->drm, stolen_size + SZ_8M > pci_resource_len(pdev, 2))) in detect_bar2_integrated()
196 static u64 detect_stolen(struct xe_device *xe, struct xe_ttm_stolen_mgr *mgr) in detect_stolen() argument
200 mgr->io_base = pci_resource_start(to_pci_dev(xe->drm.dev), 2); in detect_stolen()
210 void xe_ttm_stolen_mgr_init(struct xe_device *xe) in xe_ttm_stolen_mgr_init() argument
212 struct xe_ttm_stolen_mgr *mgr = drmm_kzalloc(&xe->drm, sizeof(*mgr), GFP_KERNEL); in xe_ttm_stolen_mgr_init()
213 struct pci_dev *pdev = to_pci_dev(xe->drm.dev); in xe_ttm_stolen_mgr_init()
218 drm_dbg_kms(&xe->drm, "Stolen mgr init failed\n"); in xe_ttm_stolen_mgr_init()
222 if (IS_SRIOV_VF(xe)) in xe_ttm_stolen_mgr_init()
224 else if (IS_DGFX(xe)) in xe_ttm_stolen_mgr_init()
225 stolen_size = detect_bar2_dgfx(xe, mgr); in xe_ttm_stolen_mgr_init()
226 else if (GRAPHICS_VERx100(xe) >= 1270) in xe_ttm_stolen_mgr_init()
227 stolen_size = detect_bar2_integrated(xe, mgr); in xe_ttm_stolen_mgr_init()
229 stolen_size = detect_stolen(xe, mgr); in xe_ttm_stolen_mgr_init()
232 drm_dbg_kms(&xe->drm, "No stolen memory support\n"); in xe_ttm_stolen_mgr_init()
242 if (mgr->io_base && !xe_ttm_stolen_cpu_access_needs_ggtt(xe)) in xe_ttm_stolen_mgr_init()
245 err = __xe_ttm_vram_mgr_init(xe, &mgr->base, XE_PL_STOLEN, stolen_size, in xe_ttm_stolen_mgr_init()
248 drm_dbg_kms(&xe->drm, "Stolen mgr init failed: %i\n", err); in xe_ttm_stolen_mgr_init()
252 drm_dbg_kms(&xe->drm, "Initialized stolen memory support with %llu bytes\n", in xe_ttm_stolen_mgr_init()
261 struct xe_device *xe = xe_bo_device(bo); in xe_ttm_stolen_io_offset() local
262 struct ttm_resource_manager *ttm_mgr = ttm_manager_type(&xe->ttm, XE_PL_STOLEN); in xe_ttm_stolen_io_offset()
268 if (xe_ttm_stolen_cpu_access_needs_ggtt(xe)) in xe_ttm_stolen_io_offset()
275 static int __xe_ttm_stolen_io_mem_reserve_bar2(struct xe_device *xe, in __xe_ttm_stolen_io_mem_reserve_bar2() argument
287 drm_WARN_ON(&xe->drm, !(mem->placement & TTM_PL_FLAG_CONTIGUOUS)); in __xe_ttm_stolen_io_mem_reserve_bar2()
299 static int __xe_ttm_stolen_io_mem_reserve_stolen(struct xe_device *xe, in __xe_ttm_stolen_io_mem_reserve_stolen() argument
306 XE_WARN_ON(IS_DGFX(xe)); in __xe_ttm_stolen_io_mem_reserve_stolen()
309 if (drm_WARN_ON(&xe->drm, !(bo->flags & XE_BO_FLAG_GGTT))) in __xe_ttm_stolen_io_mem_reserve_stolen()
321 drm_WARN_ON(&xe->drm, 1); in __xe_ttm_stolen_io_mem_reserve_stolen()
326 int xe_ttm_stolen_io_mem_reserve(struct xe_device *xe, struct ttm_resource *mem) in xe_ttm_stolen_io_mem_reserve() argument
328 struct ttm_resource_manager *ttm_mgr = ttm_manager_type(&xe->ttm, XE_PL_STOLEN); in xe_ttm_stolen_io_mem_reserve()
334 if (xe_ttm_stolen_cpu_access_needs_ggtt(xe)) in xe_ttm_stolen_io_mem_reserve()
335 return __xe_ttm_stolen_io_mem_reserve_stolen(xe, mgr, mem); in xe_ttm_stolen_io_mem_reserve()
337 return __xe_ttm_stolen_io_mem_reserve_bar2(xe, mgr, mem); in xe_ttm_stolen_io_mem_reserve()
340 u64 xe_ttm_stolen_gpu_offset(struct xe_device *xe) in xe_ttm_stolen_gpu_offset() argument
343 to_stolen_mgr(ttm_manager_type(&xe->ttm, XE_PL_STOLEN)); in xe_ttm_stolen_gpu_offset()