AI News HubLIVE
In-site rewrite1 min read

Linus: "A debug session from hell, enormously helped by an 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…

SourceHacker News AIAuthor: dnw

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)