On Mon, Apr 9, 2018 at 3:47 AM, Michel Dänzer <michel at daenzer.net> wrote: > On 2018-04-06 09:54 PM, Alex Deucher wrote: >> Steal 9 MB for vga emulation and fb if vga is enabled, otherwise, >> steal enough to cover the current display size as set by the vbios. >> >> If no memory is used (e.g., secondary or headless card), skip >> stolen memory reserve. >> >> v2: skip reservation if vram is limited, address Christian's comments >> >> Reviewed-and-Tested-by: Andrey Grodzovsky <andrey.grodzovsky at amd.com> (v1) >> Signed-off-by: Alex Deucher <alexander.deucher at amd.com> > > [...] > >> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c >> index 5617cf62c566..24e1ea36b454 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c >> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c >> @@ -825,6 +825,25 @@ static int gmc_v6_0_late_init(void *handle) >> return 0; >> } >> >> +static unsigned gmc_v6_0_get_vbios_fb_size(struct amdgpu_device *adev) >> +{ >> + u32 d1vga_control = RREG32(mmD1VGA_CONTROL); >> + unsigned size; >> + >> + if (REG_GET_FIELD(d1vga_control, D1VGA_CONTROL, D1VGA_MODE_ENABLE)) { >> + size = 9 * 1024 * 1024; /* reserve 8MB for vga emulator and 1 MB for FB */ >> + } else { >> + u32 viewport = RREG32(mmVIEWPORT_SIZE); >> + size = (REG_GET_FIELD(viewport, VIEWPORT_SIZE, VIEWPORT_HEIGHT) * >> + REG_GET_FIELD(viewport, VIEWPORT_SIZE, VIEWPORT_WIDTH) * >> + 4); >> + } > > Any particular reason for not calculating the FB size based on the > viewport even if VGA is enabled? VGA text mode can use higher > resolutions as well. > > Other than that, these patches look good to me. According to the vbios team the 9 MB is all that is used in legacy vga text mode. Alex