Some cards don't advertise a BAR size which covers all of the VRAM. Mine, a Sapphire RX 5600 XT Pulse, advertises only 256MB, 512MB and 1GB. Despite this, it works fine with the full 6GB visible via an 8GB BAR. --- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 5 +++-- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 8 ++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index c844e2a8500a..a64a9ac92ac1 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -201,7 +201,7 @@ static const bool __maybe_unused no_system_mem_limit; extern int amdgpu_tmz; extern int amdgpu_reset_method; -extern bool amdgpu_resize_bar; +extern int amdgpu_resize_bar; extern int amdgpu_max_bar_size; #ifdef CONFIG_DRM_AMDGPU_SI diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index b6c5ee490cbf..0f04686ed6c0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -1114,6 +1114,7 @@ int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev) u16 cmd; int r; bool nospc = false; + const bool force = amdgpu_resize_bar == 2; if (!amdgpu_resize_bar) return 0; @@ -1175,10 +1176,10 @@ int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev) /* Skip this size if it isn't advertised. * This avoids pci_resize_resources returning -EINVAL for that reason. */ - if (!(available_sizes & BIT(rbar_size))) + if (!force && !(available_sizes & BIT(rbar_size))) continue; - r = pci_resize_resource(adev->pdev, 0, rbar_size); + r = pci_resize_resource(adev->pdev, 0, rbar_size, force); if (r == 0) { dev_dbg(adev->dev, "Succeeded in resizing to %lluMB.", pci_rebar_size_to_bytes(rbar_size) >> 20); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index 0542843c7d63..468ca3725890 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -161,7 +161,7 @@ int amdgpu_force_asic_type = -1; int amdgpu_tmz; int amdgpu_reset_method = -1; /* auto */ int amdgpu_num_kcq = -1; -bool amdgpu_resize_bar = true; +int amdgpu_resize_bar = 1; int amdgpu_max_bar_size = -1; struct amdgpu_mgpu_info mgpu_info = { @@ -810,12 +810,12 @@ MODULE_PARM_DESC(num_kcq, "number of kernel compute queue user want to setup (8 module_param_named(num_kcq, amdgpu_num_kcq, int, 0444); /** - * DOC: resize_bar (bool) + * DOC: resize_bar (int) * Control whether FB BAR should be resized. * Enabled by default. */ -module_param_named(resize_bar, amdgpu_resize_bar, bool, 0444); -MODULE_PARM_DESC(resize_bar, "Controls whether the FB BAR should be resized (default = true)."); +module_param_named(resize_bar, amdgpu_resize_bar, int, 0444); +MODULE_PARM_DESC(resize_bar, "Controls whether the FB BAR should be resized (0 = off, 1 = on (default), 2 = override the GPU's supported sizes)."); /** * DOC: max_bar_size (int) -- 2.20.1 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx