From patchwork Tue Jun 1 12:25:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_K=C3=B6nig?= X-Patchwork-Id: 12291231 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CF51DC47080 for ; Tue, 1 Jun 2021 12:25:33 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 835A1613AD for ; Tue, 1 Jun 2021 12:25:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 835A1613AD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C11E56E81A; Tue, 1 Jun 2021 12:25:32 +0000 (UTC) Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3E3306E81A for ; Tue, 1 Jun 2021 12:25:31 +0000 (UTC) Received: by mail-ej1-x630.google.com with SMTP id c10so152283eja.11 for ; Tue, 01 Jun 2021 05:25:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=VoTWS/87xc9Zjaf7PHubhLBqerJydu+ogYjpwhfGsIs=; b=lmMslY4ubfVxIwz2LWrqXBVGTVVGVNWzle3W013SrPxrmS6q6dIFVnicidD/9Q82DM fn8C5cmTGKLXIbQQdP3PJdigvjsFWj55V7oDm1+FFVqQsXykbGBjSFV9FTObqcP4/y8W 5sQKK4r+MXTDRS8fEG6/Ot2Xip5ifl8HH0F9CNJorwF0U1AwdO0MvLaXBVCKFiGclHVd ZYhdPCKceVwVfTmXktSTHGI/29wmR0m2WhB9ClSe1e7765nmENO6Rd/qoEwxdQtO7a1Y uSU3rCINRhHW9o0yrunQ5hl7W2XUcl/KED2gSAwIAG0RwcxTqnChV/vg6D2ugflzkGBR vzFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=VoTWS/87xc9Zjaf7PHubhLBqerJydu+ogYjpwhfGsIs=; b=O/l7SLJBmW3jUfJ2CKjTAO19KC4QesJmVkIXxZjXx1i3XgjVaT32pm8rYlP/Rt9nNy GBb8BEkd4fw3yWz9Feto1fPWeKKEB4iPTzTDwPkSUF4MRwl5S2M1Y0cnRETlTpMi8mEC MCikyE0iTtrlpCHQF+UxbOkSq/vD5AsBWbau3LmONtnL7TlO12q6ROJfxERzSrXEavaZ CknGcoIsobhiOv8MewWW7ToAYJYP4Tv+L4VzceULwm9PMM4C6fJGREVUa61aSdjOpjwB jGgsuQ3oJX0aLsqH+RYvm/TMk+/i3sTfjDEYn3GOCe+43cHsihdpsrDQglJ1QIa8iDuU WUFg== X-Gm-Message-State: AOAM5300a2pIpw6KBsdjeTMjnUCisyTlu9kOf/06ZZ05e/xgiSx0pGVI OcKt1GCp4F9B4wQN7/ZfT88= X-Google-Smtp-Source: ABdhPJwJau5PdCv9/th8dvdpo4MwDuIxlTwWMjtVu3vKElftXskoAtmcl0iAO9CX38j5MtQlv0OvvQ== X-Received: by 2002:a17:906:e10d:: with SMTP id gj13mr11811418ejb.150.1622550329968; Tue, 01 Jun 2021 05:25:29 -0700 (PDT) Received: from abel.fritz.box ([2a02:908:1252:fb60:fba0:a784:4c4a:8bc0]) by smtp.gmail.com with ESMTPSA id f7sm8534845edd.5.2021.06.01.05.25.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Jun 2021 05:25:29 -0700 (PDT) From: " =?utf-8?q?Christian_K=C3=B6nig?= " X-Google-Original-From: =?utf-8?q?Christian_K=C3=B6nig?= To: Lang.Yu@amd.com, thomas_os@shipmail.org Subject: [PATCH 1/4] drm/ttm: add TTM_PL_FLAG_TEMPORARY flag v3 Date: Tue, 1 Jun 2021 14:25:25 +0200 Message-Id: <20210601122528.1643-1-christian.koenig@amd.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" From: Lang Yu Sometimes drivers need to use bounce buffers to evict BOs. While those reside in some domain they are not necessarily suitable for CS. Add a flag so that drivers can note that a bounce buffers needs to be reallocated during validation. v2: add detailed comments v3 (chk): merge commits and rework commit message Suggested-by: Christian König Signed-off-by: Lang Yu Signed-off-by: Christian König Reviewed-by: Thomas Hellström --- drivers/gpu/drm/ttm/ttm_bo.c | 3 +++ include/drm/ttm/ttm_placement.h | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index 51a94fd63bd7..6b393502198e 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -929,6 +929,9 @@ static bool ttm_bo_places_compat(const struct ttm_place *places, { unsigned i; + if (mem->placement & TTM_PL_FLAG_TEMPORARY) + return false; + for (i = 0; i < num_placement; i++) { const struct ttm_place *heap = &places[i]; diff --git a/include/drm/ttm/ttm_placement.h b/include/drm/ttm/ttm_placement.h index aa6ba4d0cf78..8995c9e4ec1b 100644 --- a/include/drm/ttm/ttm_placement.h +++ b/include/drm/ttm/ttm_placement.h @@ -47,8 +47,11 @@ * top of the memory area, instead of the bottom. */ -#define TTM_PL_FLAG_CONTIGUOUS (1 << 19) -#define TTM_PL_FLAG_TOPDOWN (1 << 22) +#define TTM_PL_FLAG_CONTIGUOUS (1 << 0) +#define TTM_PL_FLAG_TOPDOWN (1 << 1) + +/* For multihop handling */ +#define TTM_PL_FLAG_TEMPORARY (1 << 2) /** * struct ttm_place From patchwork Tue Jun 1 12:25:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_K=C3=B6nig?= X-Patchwork-Id: 12291233 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A84ADC4708F for ; Tue, 1 Jun 2021 12:25:38 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 623BB613AD for ; Tue, 1 Jun 2021 12:25:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 623BB613AD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 648766EA27; Tue, 1 Jun 2021 12:25:33 +0000 (UTC) Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [IPv6:2a00:1450:4864:20::634]) by gabe.freedesktop.org (Postfix) with ESMTPS id 781886E81A for ; Tue, 1 Jun 2021 12:25:32 +0000 (UTC) Received: by mail-ej1-x634.google.com with SMTP id k7so11834825ejv.12 for ; Tue, 01 Jun 2021 05:25:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6t7o/v++kUreKh+BqmcXqVMGRXaQhdTiSOndd5rOlTc=; b=TfAdEMF2rD1xgWTtU/Y2KvYcRDFQW32F8sHbMBs1X1BCCWj4Nz3sQ5jlLqXrS3bXAU CGB1iPaxWbmRPaX02xphFvaPx56OUy5NOYFTyg4aQSXQfpb2op2dREV5hTdtLetiCXfz SFj9ywF4Ui1l+ERBC5nxc+03EKOScGRMrL+JqoHGpQcG7w7JEvmauDvP8GzEkLTPEPFM R+s2H/scYt/qgGHfH6O/fFd2XnHlLt0BtVcRs0PimRiTzpznux2snlQxWBMhRX4BmKIn Nk2VrmOa4qNzKUklU/fy7E+VZih8vjNNrzJVrSl2upx9r46pg/mNZS3Opz2+q+UR23s5 05RA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6t7o/v++kUreKh+BqmcXqVMGRXaQhdTiSOndd5rOlTc=; b=LfyF/wWHdJYeNZyubarYXhwKZ7ldlKb4sXgPVZ65UyitDUTvJnOKO3GUoM+DrRuuyX MpUbfHGHSOPKJk+/1fvRo/jNEwUWr+uYa3VQS+CZnbEHA727vtI/vyfeaghli3rIrHYO tkxHAdijxdVhX9CShekwH6RaVlhFpW/fn4g8SVSshR2jHbqfg5Zt8xxrWDREH5+n5HXT 6DzyHbGoW6L5zdmdIwRWG086jiMLtFCn++PvoMgiDmBtoqRz0eOPjc7m+v7iEvNvEX3g OYGRqnH3Hz0+nO8NE0eDEtLYLFEyKXDBqlgZ2AvicoDdmvkkh6AFq5irmHZss0jJWcKV N+/w== X-Gm-Message-State: AOAM530u1RkIVdhC3BtoTK1eXARgPBpdpEhdhPL9tbDB+zqABlDZrBRF +QONiULon5Fh9ErUgu/1hMRA8EmwhgU= X-Google-Smtp-Source: ABdhPJxn/4kbfYtdVDrFUnDbLpkv/UP1HJidJMJmtXqyaI5tCiWxQ6Fv/Gn2HePPB7XvVMWd14E7/A== X-Received: by 2002:a17:906:1591:: with SMTP id k17mr29397524ejd.401.1622550331088; Tue, 01 Jun 2021 05:25:31 -0700 (PDT) Received: from abel.fritz.box ([2a02:908:1252:fb60:fba0:a784:4c4a:8bc0]) by smtp.gmail.com with ESMTPSA id f7sm8534845edd.5.2021.06.01.05.25.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Jun 2021 05:25:30 -0700 (PDT) From: " =?utf-8?q?Christian_K=C3=B6nig?= " X-Google-Original-From: =?utf-8?q?Christian_K=C3=B6nig?= To: Lang.Yu@amd.com, thomas_os@shipmail.org Subject: [PATCH 2/4] drm/amdgpu: user temporary GTT as bounce buffer Date: Tue, 1 Jun 2021 14:25:26 +0200 Message-Id: <20210601122528.1643-2-christian.koenig@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210601122528.1643-1-christian.koenig@amd.com> References: <20210601122528.1643-1-christian.koenig@amd.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" From: Lang Yu Currently, we have a limitted GTT memory size and need a bounce buffer when doing buffer migration between VRAM and SYSTEM domain. The problem is under GTT memory pressure we can't do buffer migration between VRAM and SYSTEM domain. But in some cases we really need that. Eespecially when validating a VRAM backing store BO which resides in SYSTEM domain. v2: still account temporary GTT allocations v3 (chk): revert to the simpler change for now Signed-off-by: Lang Yu Signed-off-by: Christian König --- drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c | 19 +++++++++++-------- drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 +- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c index 6a84c9778cc0..5e6b76441449 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c @@ -121,14 +121,15 @@ static int amdgpu_gtt_mgr_new(struct ttm_resource_manager *man, struct amdgpu_gtt_node *node; int r; - spin_lock(&mgr->lock); - if ((&tbo->mem == mem || tbo->mem.mem_type != TTM_PL_TT) && - atomic64_read(&mgr->available) < mem->num_pages) { + if (!(place->flags & TTM_PL_FLAG_TEMPORARY)) { + spin_lock(&mgr->lock); + if (atomic64_read(&mgr->available) < mem->num_pages) { + spin_unlock(&mgr->lock); + return -ENOSPC; + } + atomic64_sub(mem->num_pages, &mgr->available); spin_unlock(&mgr->lock); - return -ENOSPC; } - atomic64_sub(mem->num_pages, &mgr->available); - spin_unlock(&mgr->lock); if (!place->lpfn) { mem->mm_node = NULL; @@ -162,7 +163,8 @@ static int amdgpu_gtt_mgr_new(struct ttm_resource_manager *man, kfree(node); err_out: - atomic64_add(mem->num_pages, &mgr->available); + if (!(place->flags & TTM_PL_FLAG_TEMPORARY)) + atomic64_add(mem->num_pages, &mgr->available); return r; } @@ -188,7 +190,8 @@ static void amdgpu_gtt_mgr_del(struct ttm_resource_manager *man, kfree(node); } - atomic64_add(mem->num_pages, &mgr->available); + if (!(mem->placement & TTM_PL_FLAG_TEMPORARY)) + atomic64_add(mem->num_pages, &mgr->available); } /** diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index 80437b6ba5f3..6bdff9005a47 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c @@ -514,7 +514,7 @@ static int amdgpu_bo_move(struct ttm_buffer_object *bo, bool evict, hop->fpfn = 0; hop->lpfn = 0; hop->mem_type = TTM_PL_TT; - hop->flags = 0; + hop->flags = TTM_PL_FLAG_TEMPORARY; return -EMULTIHOP; } From patchwork Tue Jun 1 12:25:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_K=C3=B6nig?= X-Patchwork-Id: 12291235 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E91F9C4708F for ; Tue, 1 Jun 2021 12:25:40 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id AEE1560FF0 for ; Tue, 1 Jun 2021 12:25:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AEE1560FF0 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E2C916EA31; Tue, 1 Jun 2021 12:25:33 +0000 (UTC) Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com [IPv6:2a00:1450:4864:20::636]) by gabe.freedesktop.org (Postfix) with ESMTPS id 21A3F6E92F for ; Tue, 1 Jun 2021 12:25:33 +0000 (UTC) Received: by mail-ej1-x636.google.com with SMTP id k7so11834885ejv.12 for ; Tue, 01 Jun 2021 05:25:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EWs6SPWoQkgdAkdLURcKJ0gLgWOX+pgv/leiPSJhQKk=; b=o0pUP/feiIX54q0qh14Bjrikp1QJmXRPz9OnKf6D0Y2mEGR9ejmYGCBfmko96UvdsD 3oscN2Bjwxz8tbfNdQORGynQEUlKeFTcs0+V65Lx6CkQUmgVZM4jGGxhb2GR6hPNjDGT ntx9uN8shMw1zGcsVBDM6gmloonGgXlz6zfYG5n2Qtr/1ZInKthDvL/oYK7q7HUsikn4 RFkRpq0IT1EB4LODE7iw3jWPhEiW1TIy3oJVpGDfU3kiJ8YBdus3j5rZR43x3MuRcGUX 2ScCYesbZVdO3TehBwlNDRLUlyCCdx4eF+KEeFQh+vzUCqJD/iMl9FG8DFtIDXJ2F+5G E29Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=EWs6SPWoQkgdAkdLURcKJ0gLgWOX+pgv/leiPSJhQKk=; b=K/Xgu5AYKcmA7+VFsOPc+418wY9r8F0a+XZlGiE3zKNH1neIV+bZ/4St3QhvtHUS9n kg5atmA0IZOLxBWTTYs4fJzATd8BHFMiQi23ohBbNcWr1kj8GwiLB6x+MYkifX5qFvrq lcSWwW8guc3fW/eQSZCYcDXA+UCXvIq9PU8vRBrv3sX4V5eV/UlIF72D9DuzEyHeTKfw YDHPaRdfqhFpuew/1y7HGc/pqDncfO/tVRjKHnBchO5KrEsYxTnAtnN0wK2kLr/E0de/ 0jRLdRqENsBf4QPDAIEOU4n/9+ouOLnPKJEXtDnDuCSR6WTEA5XggpDHEpY8v9Rc9tUg +rKQ== X-Gm-Message-State: AOAM532YkzWwtZtuzEo5BGhdJb14/GEKairYT9oKUbRgwlSvagJK+p/k DhApY5AxfJoE5d91x1F7eXGeFwpgRhY= X-Google-Smtp-Source: ABdhPJyNdqS+mJjzzRTuC5z33DeLD+JGASmPM8kSdeBlt2JiCK41OEA0ebzLLeTiwuiv4d/gihhU4g== X-Received: by 2002:a17:906:a398:: with SMTP id k24mr20290995ejz.203.1622550331883; Tue, 01 Jun 2021 05:25:31 -0700 (PDT) Received: from abel.fritz.box ([2a02:908:1252:fb60:fba0:a784:4c4a:8bc0]) by smtp.gmail.com with ESMTPSA id f7sm8534845edd.5.2021.06.01.05.25.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Jun 2021 05:25:31 -0700 (PDT) From: " =?utf-8?q?Christian_K=C3=B6nig?= " X-Google-Original-From: =?utf-8?q?Christian_K=C3=B6nig?= To: Lang.Yu@amd.com, thomas_os@shipmail.org Subject: [PATCH 3/4] drm/amdgpu: always allow evicting to SYSTEM domain Date: Tue, 1 Jun 2021 14:25:27 +0200 Message-Id: <20210601122528.1643-3-christian.koenig@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210601122528.1643-1-christian.koenig@amd.com> References: <20210601122528.1643-1-christian.koenig@amd.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" When we run out of GTT we should still be able to evict VRAM->SYSTEM with a bounce bufferdrm/amdgpu: always allow evicting to SYSTEM domain Signed-off-by: Christian König --- drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index 6bdff9005a47..0faf9765ef41 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c @@ -147,14 +147,16 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo, * BOs to be evicted from VRAM */ amdgpu_bo_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_VRAM | - AMDGPU_GEM_DOMAIN_GTT); + AMDGPU_GEM_DOMAIN_GTT | + AMDGPU_GEM_DOMAIN_CPU); abo->placements[0].fpfn = adev->gmc.visible_vram_size >> PAGE_SHIFT; abo->placements[0].lpfn = 0; abo->placement.busy_placement = &abo->placements[1]; abo->placement.num_busy_placement = 1; } else { /* Move to GTT memory */ - amdgpu_bo_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_GTT); + amdgpu_bo_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_GTT | + AMDGPU_GEM_DOMAIN_CPU); } break; case TTM_PL_TT: From patchwork Tue Jun 1 12:25:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_K=C3=B6nig?= X-Patchwork-Id: 12291237 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D61E0C4708F for ; Tue, 1 Jun 2021 12:25:42 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9CCA8613AD for ; Tue, 1 Jun 2021 12:25:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9CCA8613AD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2F4366EA15; Tue, 1 Jun 2021 12:25:35 +0000 (UTC) Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) by gabe.freedesktop.org (Postfix) with ESMTPS id DF1946EA2E for ; Tue, 1 Jun 2021 12:25:33 +0000 (UTC) Received: by mail-ej1-x62d.google.com with SMTP id h24so17456688ejy.2 for ; Tue, 01 Jun 2021 05:25:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8ATXqz+QjI7OCkP7Gnudo3PRDCh8x4oJ8vFszvYpuBk=; b=G4HTYbjSbDxAWD1OA5JfLxwb+zeP7nQ06Po9Q2vLg/UwH8CA+Wpoyt7eCsY4kL1M8J f2IrQk8kZ4isqH+uAwm3dQUFoFhzWLx3WghhZdyMVovdPcZXZfmzbQH5E1zk4lx+XIAG 2UGe05Yk3RY3XNWQV/W8gNSa9+504QUnBSR0tY5y63pjFXBijO/WMBrubG4T7kpXDB2q ZLMD5E+Jbz7FETd25ro+y0hdtdNTbZfEetgV5Alt4ArTW9ND3+szLJeK8O/xORv7NP34 IQnNRO/VrUWfwmBtXxpDo7hO56uUyiQLzRwdhbBOjJOx2ffASg7q+bjplHpi93gepmtt C9RQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8ATXqz+QjI7OCkP7Gnudo3PRDCh8x4oJ8vFszvYpuBk=; b=ZdV3ojrVztsntX9eGTL2DptZDpZZLLlhtErJA2+UgJVRycdOH3Rzo+BtguWWn+BPNk NcBBjMQQyEKGmECJEhnccNSQUREOlg0V0WslPCbkdnfMYWuhoe5PHxqgrxTHycwdU9su pGZTwYNoxs9clF2Yu5mDerVDdF2zQqVmp0LFMwTiRofyMIisZuRMUJXcpBi6EJASH2Ld RCiOSs/GVPABw9kBHZqvoIyCa/RykA0+U/TE8fGBEJEDJr4UDoPU8cEjxevGV3gzpnpm uEW/jidrm1SrTMyrQ7OUufrOS2GFZveAPItQV7T6sIMcP+iLQkAizm4sSBmzBVqwt+eh du0w== X-Gm-Message-State: AOAM533BOoMI0s8qpurqJPbXgkbdK6IWfSeoLHPxRYRyoxV5LwnRl6ZL H2b9aC/rD1BRPHbErII914VqtOPoFB8= X-Google-Smtp-Source: ABdhPJyG36/BDOWGVDkr4Ogn1i5UhsieW8jV1lAACPWmu1TWjD0xl9TBOSXkDQFkFzVxRU/7U8lI9Q== X-Received: by 2002:a17:906:b253:: with SMTP id ce19mr12289531ejb.379.1622550332568; Tue, 01 Jun 2021 05:25:32 -0700 (PDT) Received: from abel.fritz.box ([2a02:908:1252:fb60:fba0:a784:4c4a:8bc0]) by smtp.gmail.com with ESMTPSA id f7sm8534845edd.5.2021.06.01.05.25.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Jun 2021 05:25:32 -0700 (PDT) From: " =?utf-8?q?Christian_K=C3=B6nig?= " X-Google-Original-From: =?utf-8?q?Christian_K=C3=B6nig?= To: Lang.Yu@amd.com, thomas_os@shipmail.org Subject: [PATCH 4/4] drm/amdgpu: switch gtt_mgr to counting used pages Date: Tue, 1 Jun 2021 14:25:28 +0200 Message-Id: <20210601122528.1643-4-christian.koenig@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210601122528.1643-1-christian.koenig@amd.com> References: <20210601122528.1643-1-christian.koenig@amd.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" From: Lang Yu Change mgr->available into mgr->used (invert the value). Makes more sense to do it this way since we don't need the spinlock any more to double check the handling. v3 (chk): separated from the TEMPOARAY FLAG change. Signed-off-by: Lang Yu Signed-off-by: Christian König --- drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c | 26 ++++++++------------- drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 2 +- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c index 5e6b76441449..4d7e34a8d3fd 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c @@ -121,14 +121,10 @@ static int amdgpu_gtt_mgr_new(struct ttm_resource_manager *man, struct amdgpu_gtt_node *node; int r; - if (!(place->flags & TTM_PL_FLAG_TEMPORARY)) { - spin_lock(&mgr->lock); - if (atomic64_read(&mgr->available) < mem->num_pages) { - spin_unlock(&mgr->lock); - return -ENOSPC; - } - atomic64_sub(mem->num_pages, &mgr->available); - spin_unlock(&mgr->lock); + if (!(place->flags & TTM_PL_FLAG_TEMPORARY) && + atomic64_add_return(mem->num_pages, &mgr->used) > man->size) { + atomic64_sub(mem->num_pages, &mgr->used); + return -ENOSPC; } if (!place->lpfn) { @@ -164,7 +160,7 @@ static int amdgpu_gtt_mgr_new(struct ttm_resource_manager *man, err_out: if (!(place->flags & TTM_PL_FLAG_TEMPORARY)) - atomic64_add(mem->num_pages, &mgr->available); + atomic64_sub(mem->num_pages, &mgr->used); return r; } @@ -191,7 +187,7 @@ static void amdgpu_gtt_mgr_del(struct ttm_resource_manager *man, } if (!(mem->placement & TTM_PL_FLAG_TEMPORARY)) - atomic64_add(mem->num_pages, &mgr->available); + atomic64_sub(mem->num_pages, &mgr->used); } /** @@ -204,9 +200,8 @@ static void amdgpu_gtt_mgr_del(struct ttm_resource_manager *man, uint64_t amdgpu_gtt_mgr_usage(struct ttm_resource_manager *man) { struct amdgpu_gtt_mgr *mgr = to_gtt_mgr(man); - s64 result = man->size - atomic64_read(&mgr->available); - return (result > 0 ? result : 0) * PAGE_SIZE; + return atomic64_read(&mgr->used) * PAGE_SIZE; } /** @@ -252,9 +247,8 @@ static void amdgpu_gtt_mgr_debug(struct ttm_resource_manager *man, drm_mm_print(&mgr->mm, printer); spin_unlock(&mgr->lock); - drm_printf(printer, "man size:%llu pages, gtt available:%lld pages, usage:%lluMB\n", - man->size, (u64)atomic64_read(&mgr->available), - amdgpu_gtt_mgr_usage(man) >> 20); + drm_printf(printer, "man size:%llu pages, gtt used:%llu pages\n", + man->size, atomic64_read(&mgr->used)); } static const struct ttm_resource_manager_func amdgpu_gtt_mgr_func = { @@ -286,7 +280,7 @@ int amdgpu_gtt_mgr_init(struct amdgpu_device *adev, uint64_t gtt_size) size = (adev->gmc.gart_size >> PAGE_SHIFT) - start; drm_mm_init(&mgr->mm, start, size); spin_lock_init(&mgr->lock); - atomic64_set(&mgr->available, gtt_size >> PAGE_SHIFT); + atomic64_set(&mgr->used, 0); ttm_set_driver_manager(&adev->mman.bdev, TTM_PL_TT, &mgr->manager); ttm_resource_manager_set_used(man, true); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h index b2c97b19cbe1..64a78da33805 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h @@ -51,7 +51,7 @@ struct amdgpu_gtt_mgr { struct ttm_resource_manager manager; struct drm_mm mm; spinlock_t lock; - atomic64_t available; + atomic64_t used; }; struct amdgpu_mman {