Quoting Hans de Goede (2018-03-30 13:27:15) > Before this commit the WaSkipStolenMemoryFirstPage workaround code was > skipping the first 4k by passing 4096 as start of the address range passed > to drm_mm_init(). This means that calling drm_mm_reserve_node() to try and > reserve the firmware framebuffer so that we can inherit it would always > fail, as the firmware framebuffer starts at address 0. > > Commit d43537610470 ("drm/i915: skip the first 4k of stolen memory on > everything >= gen8") says in its commit message: "This is confirmed to fix > Skylake screen flickering issues (probably caused by the fact that we > initialized a ring in the first page of stolen, but I didn't 100% confirm > this theory)." > > Which suggests that it is safe to use the first page for a linear > framebuffer as the firmware is doing. > > This commit always passes 0 as start to drm_mm_init() and works around > WaSkipStolenMemoryFirstPage in i915_gem_stolen_insert_node_in_range() > by insuring the start address passed by to drm_mm_insert_node_in_range() > is always 4k or more. All entry points to i915_gem_stolen.c go through > i915_gem_stolen_insert_node_in_range(), so that any newly allocated > objects such as ring-buffers will not be allocated in the first 4k. > > The one exception is i915_gem_object_create_stolen_for_preallocated() > which directly calls drm_mm_reserve_node() which now will be able to > use the first 4k. > > This fixes the i915 driver no longer being able to inherit the firmware > framebuffer on gen8+, which fixes the video output changing from the > vendor logo to a black screen as soon as the i915 driver is loaded > (on systems without fbcon).
We've been told by the HW guys not to use the first page. (That's my understanding from every time this gets questioned.) -Chris _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel