From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: "Alex Deucher" <alexander.deucher@amd.com>,
"Marek Olšák" <marek.olsak@amd.com>,
"Sasha Levin" <sashal@kernel.org>,
christian.koenig@amd.com, Xinhui.Pan@amd.com, airlied@linux.ie,
daniel@ffwll.ch, Felix.Kuehling@amd.com, nirmoy.das@amd.com,
jonathan.kim@amd.com, kevin1.wang@amd.com, zackr@vmware.com,
amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: [PATCH AUTOSEL 4.19 21/22] drm/amdgpu: Adjust logic around GTT size (v3)
Date: Mon, 27 Jun 2022 22:25:16 -0400 [thread overview]
Message-ID: <20220628022518.596687-21-sashal@kernel.org> (raw)
In-Reply-To: <20220628022518.596687-1-sashal@kernel.org>
From: Alex Deucher <alexander.deucher@amd.com>
[ Upstream commit f15345a377c6ea9c7cc74f079616af8856aff37f ]
Certain GL unit tests for large textures can cause problems
with the OOM killer since there is no way to link this memory
to a process. This was originally mitigated (but not necessarily
eliminated) by limiting the GTT size. The problem is this limit
is often too low for many modern games so just make the limit 1/2
of system memory. The OOM accounting needs to be addressed, but
we shouldn't prevent common 3D applications from being usable
just to potentially mitigate that corner case.
Set default GTT size to max(3G, 1/2 of system ram) by default.
v2: drop previous logic and default to 3/4 of ram
v3: default to half of ram to align with ttm
v4: fix spelling in comment (Kent)
Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1942
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 50807d621eca..7018873324d0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1782,18 +1782,26 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
DRM_INFO("amdgpu: %uM of VRAM memory ready\n",
(unsigned) (adev->gmc.real_vram_size / (1024 * 1024)));
- /* Compute GTT size, either bsaed on 3/4th the size of RAM size
+ /* Compute GTT size, either based on 1/2 the size of RAM size
* or whatever the user passed on module init */
if (amdgpu_gtt_size == -1) {
struct sysinfo si;
si_meminfo(&si);
- gtt_size = min(max((AMDGPU_DEFAULT_GTT_SIZE_MB << 20),
- adev->gmc.mc_vram_size),
- ((uint64_t)si.totalram * si.mem_unit * 3/4));
- }
- else
+ /* Certain GL unit tests for large textures can cause problems
+ * with the OOM killer since there is no way to link this memory
+ * to a process. This was originally mitigated (but not necessarily
+ * eliminated) by limiting the GTT size. The problem is this limit
+ * is often too low for many modern games so just make the limit 1/2
+ * of system memory which aligns with TTM. The OOM accounting needs
+ * to be addressed, but we shouldn't prevent common 3D applications
+ * from being usable just to potentially mitigate that corner case.
+ */
+ gtt_size = max((AMDGPU_DEFAULT_GTT_SIZE_MB << 20),
+ (u64)si.totalram * si.mem_unit / 2);
+ } else {
gtt_size = (uint64_t)amdgpu_gtt_size << 20;
+ }
/* Initialize GTT memory pool */
r = ttm_bo_init_mm(&adev->mman.bdev, TTM_PL_TT, gtt_size >> PAGE_SHIFT);
--
2.35.1
prev parent reply other threads:[~2022-06-28 2:33 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-28 2:24 [PATCH AUTOSEL 4.19 01/22] spi: spi-cadence: Fix SPI CS gets toggling sporadically Sasha Levin
2022-06-28 2:24 ` [PATCH AUTOSEL 4.19 02/22] spi: cadence: Detect transmit FIFO depth Sasha Levin
2022-06-28 2:24 ` [PATCH AUTOSEL 4.19 03/22] ALSA: usb-audio: US16x08: Move overflow check before array access Sasha Levin
2022-06-28 2:24 ` [PATCH AUTOSEL 4.19 04/22] drm/vc4: crtc: Use an union to store the page flip callback Sasha Levin
2022-06-29 13:10 ` Pavel Machek
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 05/22] drm/vc4: crtc: Move the BO handling out of common page-flip callback Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 06/22] ALSA: x86: intel_hdmi_audio: enable pm_runtime and set autosuspend delay Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 07/22] hamradio: 6pack: fix array-index-out-of-bounds in decode_std_command() Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 08/22] drivers/net/ethernet/neterion/vxge: Fix a use-after-free bug in vxge-main.c Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 09/22] video: fbdev: skeletonfb: Fix syntax errors in comments Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 10/22] video: fbdev: intelfb: Use aperture size from pci_resource_len Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 11/22] video: fbdev: pxa3xx-gcu: Fix integer overflow in pxa3xx_gcu_write Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 12/22] video: fbdev: simplefb: Check before clk_put() not needed Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 13/22] arch: mips: generic: Add missing of_node_put() in board-ranchu.c Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 14/22] mips: mti-malta: Fix refcount leak in malta-time.c Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 15/22] mips: ralink: Fix refcount leak in of.c Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 16/22] mips: lantiq: falcon: Fix refcount leak bug in sysctrl Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 17/22] mips: lantiq: xway: " Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 18/22] mips/pic32/pic32mzda: Fix refcount leak bugs Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 19/22] mips: lantiq: Add missing of_node_put() in irq.c Sasha Levin
2022-06-28 2:25 ` [PATCH AUTOSEL 4.19 20/22] drm/sun4i: Add DMA mask and segment size Sasha Levin
2022-06-28 2:25 ` Sasha Levin [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220628022518.596687-21-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=Felix.Kuehling@amd.com \
--cc=Xinhui.Pan@amd.com \
--cc=airlied@linux.ie \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.koenig@amd.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=jonathan.kim@amd.com \
--cc=kevin1.wang@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=marek.olsak@amd.com \
--cc=nirmoy.das@amd.com \
--cc=stable@vger.kernel.org \
--cc=zackr@vmware.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox