public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: "Christian König" <christian.koenig@amd.com>,
	"Simona Vetter" <simona.vetter@ffwll.ch>,
	"Felix Kuehling" <felix.kuehling@amd.com>,
	"Pak Nin Lui" <pak.lui@amd.com>,
	"Alex Deucher" <alexander.deucher@amd.com>,
	"Sasha Levin" <sashal@kernel.org>,
	airlied@gmail.com, simona@ffwll.ch, sumit.semwal@linaro.org,
	Yunxiang.Li@amd.com, tvrtko.ursulin@igalia.com,
	matthew.auld@intel.com, amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org,
	linaro-mm-sig@lists.linaro.org
Subject: [PATCH AUTOSEL 6.13 15/34] drm/amdgpu: allow pinning DMA-bufs into VRAM if all importers can do P2P
Date: Mon, 14 Apr 2025 09:27:09 -0400	[thread overview]
Message-ID: <20250414132729.679254-15-sashal@kernel.org> (raw)
In-Reply-To: <20250414132729.679254-1-sashal@kernel.org>

From: Christian König <christian.koenig@amd.com>

[ Upstream commit f5e7fabd1f5c65b2e077efcdb118cfa67eae7311 ]

Try pinning into VRAM to allow P2P with RDMA NICs without ODP
support if all attachments can do P2P. If any attachment can't do
P2P just pin into GTT instead.

Acked-by: Simona Vetter <simona.vetter@ffwll.ch>
Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Felix Kuehling <felix.kuehling@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Tested-by: Pak Nin Lui <pak.lui@amd.com>
Cc: Simona Vetter <simona.vetter@ffwll.ch>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 25 +++++++++++++++------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
index 8e81a83d37d84..83390143c2e9f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
@@ -72,11 +72,25 @@ static int amdgpu_dma_buf_attach(struct dma_buf *dmabuf,
  */
 static int amdgpu_dma_buf_pin(struct dma_buf_attachment *attach)
 {
-	struct drm_gem_object *obj = attach->dmabuf->priv;
-	struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj);
+	struct dma_buf *dmabuf = attach->dmabuf;
+	struct amdgpu_bo *bo = gem_to_amdgpu_bo(dmabuf->priv);
+	u32 domains = bo->preferred_domains;
 
-	/* pin buffer into GTT */
-	return amdgpu_bo_pin(bo, AMDGPU_GEM_DOMAIN_GTT);
+	dma_resv_assert_held(dmabuf->resv);
+
+	/*
+	 * Try pinning into VRAM to allow P2P with RDMA NICs without ODP
+	 * support if all attachments can do P2P. If any attachment can't do
+	 * P2P just pin into GTT instead.
+	 */
+	list_for_each_entry(attach, &dmabuf->attachments, node)
+		if (!attach->peer2peer)
+			domains &= ~AMDGPU_GEM_DOMAIN_VRAM;
+
+	if (domains & AMDGPU_GEM_DOMAIN_VRAM)
+		bo->flags |= AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
+
+	return amdgpu_bo_pin(bo, domains);
 }
 
 /**
@@ -131,9 +145,6 @@ static struct sg_table *amdgpu_dma_buf_map(struct dma_buf_attachment *attach,
 		r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
 		if (r)
 			return ERR_PTR(r);
-
-	} else if (bo->tbo.resource->mem_type != TTM_PL_TT) {
-		return ERR_PTR(-EBUSY);
 	}
 
 	switch (bo->tbo.resource->mem_type) {
-- 
2.39.5


  parent reply	other threads:[~2025-04-14 13:28 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-14 13:26 [PATCH AUTOSEL 6.13 01/34] KVM: s390: Don't use %pK through tracepoints Sasha Levin
2025-04-14 13:26 ` [PATCH AUTOSEL 6.13 02/34] KVM: s390: Don't use %pK through debug printing Sasha Levin
2025-04-14 13:26 ` [PATCH AUTOSEL 6.13 03/34] udmabuf: fix a buf size overflow issue during udmabuf creation Sasha Levin
2025-04-14 13:26 ` [PATCH AUTOSEL 6.13 04/34] cgroup/cpuset: Don't allow creation of local partition over a remote one Sasha Levin
2025-04-14 13:26 ` [PATCH AUTOSEL 6.13 05/34] selftests: ublk: fix test_stripe_04 Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 06/34] perf/core: Fix WARN_ON(!ctx) in __free_event() for partial init Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 07/34] xen: Change xen-acpi-processor dom0 dependency Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 08/34] pwm: Let pwm_set_waveform() succeed even if lowlevel driver rounded up Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 09/34] pwm: axi-pwmgen: Let .round_waveform_tohw() signal when request was " Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 10/34] nvme: requeue namespace scan on missed AENs Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 11/34] ACPI: EC: Set ec_no_wakeup for Lenovo Go S Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 12/34] ACPI PPTT: Fix coding mistakes in a couple of sizeof() calls Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 13/34] drm/amdkfd: sriov doesn't support per queue reset Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 14/34] drm/amdgpu: Increase KIQ invalidate_tlbs timeout Sasha Levin
2025-04-14 13:27 ` Sasha Levin [this message]
2025-04-14 13:48   ` [Linaro-mm-sig] [PATCH AUTOSEL 6.13 15/34] drm/amdgpu: allow pinning DMA-bufs into VRAM if all importers can do P2P Alex Deucher
2025-04-27 23:59     ` Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 16/34] drm/xe/xe3lpg: Apply Wa_14022293748, Wa_22019794406 Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 17/34] nvme: re-read ANA log page after ns scan completes Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 18/34] nvme: multipath: fix return value of nvme_available_path Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 19/34] objtool: Stop UNRET validation on UD2 Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 20/34] gpiolib: of: Move Atmel HSMCI quirk up out of the regulator comment Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 21/34] x86/xen: disable CPU idle and frequency drivers for PVH dom0 Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 22/34] selftests/mincore: Allow read-ahead pages to reach the end of the file Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 23/34] x86/bugs: Use SBPB in write_ibpb() if applicable Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 24/34] x86/bugs: Don't fill RSB on VMEXIT with eIBRS+retpoline Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 25/34] x86/bugs: Don't fill RSB on context switch with eIBRS Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 26/34] nvmet-fc: take tgtport reference only once Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 27/34] nvmet-fc: put ref when assoc->del_work is already scheduled Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 28/34] net_sched: sch_sfq: use a temporary work area for validating configuration Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 29/34] cifs: Fix encoding of SMB1 Session Setup Kerberos Request in non-UNICODE mode Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 30/34] timekeeping: Add a lockdep override in tick_freeze() Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 31/34] cifs: Fix querying of WSL CHR and BLK reparse points over SMB1 Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 32/34] net: phy: move phy_link_change() prior to mdio_bus_phy_may_suspend() Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 33/34] iommu: Clear iommu-dma ops on cleanup Sasha Levin
2025-04-14 13:27 ` [PATCH AUTOSEL 6.13 34/34] ext4: make block validity check resistent to sb bh corruption Sasha Levin

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=20250414132729.679254-15-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=Yunxiang.Li@amd.com \
    --cc=airlied@gmail.com \
    --cc=alexander.deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=christian.koenig@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=felix.kuehling@amd.com \
    --cc=linaro-mm-sig@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=matthew.auld@intel.com \
    --cc=pak.lui@amd.com \
    --cc=simona.vetter@ffwll.ch \
    --cc=simona@ffwll.ch \
    --cc=stable@vger.kernel.org \
    --cc=sumit.semwal@linaro.org \
    --cc=tvrtko.ursulin@igalia.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