翻訳待ち:Linus: "A debug session from hell, enormously helped by an AI"
AI サービスが一時的に利用できないため、復旧後に翻訳を補完します。ソース概要:Notifications You must be signed in to change notification settings Fork 64k Star 244k File tree Expand file treeCollapse file tree Open diff view settings Filter options drivers/gpu/drm/xe xe_vram.c Expand file treeCol…
AI サービスが一時的に利用できないため、復旧後に翻訳を補完します。
Notifications You must be signed in to change notification settings Fork 64k Star 244k File tree Expand file treeCollapse file tree Open diff view settings Filter options drivers/gpu/drm/xe xe_vram.c Expand file treeCollapse file tree Open diff view settings Original file line numberDiff line numberDiff line change @@ -89,12 +89,25 @@ static int get_flat_ccs_offset(struct xe_gt *gt, u64 tile_size, u64 *poffset) 8989 offset = offset_hi mmio, GSMBASE) - 96- ccs_size), 97- "Hole between CCS and GSM.\n"); 93+ /* 94+ * Everything below this offset is handed to the VRAM 95+ * allocator, so it has to be the *first* address the 96+ * compression hardware owns, rounded down. Rounding it up 97+ * publishes CCS storage as free memory. 98+ */ 99+ offset = round_down(offset, SZ_4K); 100+ 101+ /* 102+ * CCS storage must not run into GSM. The old check compared 103+ * the offset against GSMBASE - ccs_size for equality, which 104+ * could not fail: that value is 128K aligned, so it agreed 105+ * with the rounded-up offset even when the base was not 128K 106+ * aligned - exactly the case this fixes. 107+ */ 108+ xe_assert_msg(xe, offset + ccs_size mmio, GSMBASE), 110+ "CCS overlaps GSM.\n"); 98111 } else { 99112 reg = xe_gt_mcr_unicast_read_any(gt, XEHP_FLAT_CCS_BASE_ADDR); 100113 offset = (u64)REG_FIELD_GET(XEHP_FLAT_CCS_PTR, reg) * SZ_64K; 0 (0)