From patchwork Tue Feb 11 16:31:06 2025 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: 13969997 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 20E121D54EE for ; Tue, 11 Feb 2025 16:31:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739291476; cv=none; b=WiyM53FzoqHxsB9ojb1UdQl6NDTT+BY1Zld1kaE+wgaxr3M0SKW7MaulpfzBp9exnvFGSMvTVYMcxjwQKDXxINjxpGykN+d7y7MVLVYiyzI7KWpws7MPeuAH7B9noe8bKrC/kkYKsyiu10HCbPlD0VYzr8lS3v77XCDD0Nq83e4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739291476; c=relaxed/simple; bh=WWVE1VsYiOh9i7wmeSgBNQ7ZY0D3tyX6PU2eiWITlgA=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=BRQ1l3WtLIjcbVI3jz634/awT9P81g064M/cA5j1rsXqBh4sng+gBU3r8svtG7g1qka0u6tOhZViW3JmLtmApxox1ivdhQqObJyS+1cndbRWjkStwzBgEWpOCxASl0bKPMbSAkxE015VU5ZNxTkYREvC5wdMfuBRw/N2qpPEAIE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=aTcjPgQ6; arc=none smtp.client-ip=209.85.208.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aTcjPgQ6" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-5de5a853090so7394790a12.3 for ; Tue, 11 Feb 2025 08:31:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739291473; x=1739896273; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=cB9GGK9j287qQwW682FU+FnOXGITaIfNkLXZoLCeIRg=; b=aTcjPgQ6WzU0N9ySaoAtkJawVcwMge7428FHu0IzHBb7F6WpUu+bB9HTM8S0f8eW7F J7hWzs9A3yhepoOMvsAEkIMclmuMJyJf/lLBNgIHgMnfW9pIJAKzhD+CKuYCrwkeoIpv uVb1+LUhdIX/CgOYGzGG41aD7XaEwlLX8XO/nmDhzzQPmlNInFHiYIKn/yrLpqw98dvR 4JvNIwPsjcXkXmR0sH1+tEscdKxZxVubn4H2uOsErFein+vvqDHzpfM5e5Ra1Y9pWf1c v5vqk4v0HX8pX1/7AnnexeofhUOfBvnW3DjehAirpcyJE3kMe2Uv5nz2s84sLGaxiP41 wVBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739291473; x=1739896273; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cB9GGK9j287qQwW682FU+FnOXGITaIfNkLXZoLCeIRg=; b=cIqd5BLNFru/0VNpdFyAftwp2lbJE8JHvvYnEfgnrxrebY1A/IaEOCEUsIK65PMq64 FWdqcAL1nI9P5vUEgrmnznjvgdX8K0wCyOta8s6ElfrI3RJkeMGOnfmtTxBqGojnNIV5 tHaqcJVB5s2eGwl9a/HNA0tT5n69xqOyWT9CsKHnptvITfVdbvr+bV2+WVM/NO+0g1AU 5VlLRkYS5F+t4l12veojI/9tBKKmQhsVTR08bdZBDJiXChsWDVTIRoTyg1SIaRWrUXQM uXrz/3qdlMg0MzuTmoS9dJxMzcU82YeOLtR2Gg4RBdE1rAWtRxcsThx/pzzAnGqVZOWU 5F9Q== X-Forwarded-Encrypted: i=1; AJvYcCVqnmSf8W0IhK9Z0God/w8CtuIfWr9hMPD4ivLTrRWuQdWM+P58UKQEvagsK92XH2yU19YWOZl5XH2msQ==@vger.kernel.org X-Gm-Message-State: AOJu0YyQeWSdl9eyUrv3y7YV5V9x1BiUNC+jrG1VZXiQGVQvJTHSFUzr e9QWGFJIpUCQS0f1QIFJ0eyLCR+uTtLnv2lS8kzU+FHk7F5q/HB8eBNpNP9s X-Gm-Gg: ASbGncsBgdP3Tolt04YUU0zxIKM6QOMXmuWHPPegXIz9HCF3kWUGbNj1c7sXhq/FUtK wTqW5g7t7+3W/zMPvmyZCFq0pIwFaIuAREN7Q8VKX27QwBq3Di7JaFZrU+14zDMMkN9w/vSkSjI 46oy+imTbnslf5rFnb2fL4P/IWny2+kvYxigPtwe1u0qdfkH5jP5FcXSOgp3A91EnOPa5YuCpxg XxpmaRU7LJ+698lz6cY57QNgXINqjpv6Zgh9LeQfdawbZhMb+FZnoJymA7IUg/J++Uq87vuH1mv n5lohCEtyBFtX1671CuRsRMQeBPW X-Google-Smtp-Source: AGHT+IEe/kXp42nTvgE04i7M8NJuzTiQ6kmVxfRkZm7tSxkcMoG7qhTNznS24oTUjaEHCExq/khNgg== X-Received: by 2002:a05:6402:1ed6:b0:5de:525c:53cb with SMTP id 4fb4d7f45d1cf-5de525c544amr17964157a12.6.1739291473181; Tue, 11 Feb 2025 08:31:13 -0800 (PST) Received: from able.fritz.box ([2a00:e180:154a:1300:5b91:7670:e404:c65a]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dcf1b7ade9sm9838748a12.25.2025.02.11.08.31.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 08:31:12 -0800 (PST) From: " =?utf-8?q?Christian_K=C3=B6nig?= " X-Google-Original-From: =?utf-8?q?Christian_K=C3=B6nig?= To: sumit.semwal@linaro.org, tzimmermann@suse.de, simona@ffwll.ch, dmitry.osipenko@collabora.com, tvrtko.ursulin@igalia.com, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org Subject: [PATCH 1/4] dma-buf: fix incorrect dma-fence documentation Date: Tue, 11 Feb 2025 17:31:06 +0100 Message-Id: <20250211163109.12200-2-christian.koenig@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250211163109.12200-1-christian.koenig@amd.com> References: <20250211163109.12200-1-christian.koenig@amd.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 There isn't much worse than documentation giving an incorrect advise. Grabbing a spinlock while interrupts are disabled usually means that you must also disable interrupts for all other uses of this spinlock. Otherwise really hard to debug issues can occur. So fix that invalid documentation. Signed-off-by: Christian König Reviewed-by: Simona Vetter --- include/linux/dma-fence.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h index e7ad819962e3..e230af0d123f 100644 --- a/include/linux/dma-fence.h +++ b/include/linux/dma-fence.h @@ -169,8 +169,8 @@ struct dma_fence_ops { * implementation know that there is another driver waiting on the * signal (ie. hw->sw case). * - * This function can be called from atomic context, but not - * from irq context, so normal spinlocks can be used. + * This is called with irq's disabled, so only spinlocks which also + * disable irq's can be used. * * A return value of false indicates the fence already passed, * or some failure occurred that made it impossible to enable From patchwork Tue Feb 11 16:31:07 2025 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: 13969998 Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C8B7253B77 for ; Tue, 11 Feb 2025 16:31:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739291478; cv=none; b=q9j8IfQt1Ml6vh3BxDdkN04yP9gLY8vDc889h5qwVk1x/+vHv0wzGvjGgSlcku4Fa0JNNSK/wYxEgWn/D8qpliaGa3rGZxKpjvLX1yQJd66EVULv0s47wjxFV1hYl8Kd76qt4oz8iYDKorjSD8AvvGFvS/eyzTl2SmDJn4lD+7E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739291478; c=relaxed/simple; bh=/UJufU9Xxbi9+7qOGZ2QIrYxQzqG0pDjXfewSz29e5w=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=QpjiW4ZgFKpYIbx5yI8ldEuaj3FB3LRZPpb8EEX1nYaAzPOWVmgbs+G5l4jIkS+yB9BRRU2oWyJJhK5mhCeheYfWnhRBrVIuWIAxGPxsxoDNQbf1zrUwE3q55GaPileJoAfNqUJ7l9cp0M0QSU1HKq/QqGjxFayHBTBCukHSl2k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IhfUgxuK; arc=none smtp.client-ip=209.85.208.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IhfUgxuK" Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-5de6e26d4e4so5641252a12.1 for ; Tue, 11 Feb 2025 08:31:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739291475; x=1739896275; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=6SZKMir/CCVtFZIbZW4Fj8Q80/bYL9FqnHdhMsDaITQ=; b=IhfUgxuKCSP8/2ogLphX6r1WWpN3bBHTiwU0Gi1v4W80WVQ8eUQaiCGt4jElxleCy5 33czY0NiJr8Gt7BV+RjrOsInZ/fCbcP3pdhe+70jQyHLoQHBWySyZaS9e8/yy3qyNXFp cN51OxwG5ljjP+H3ZjmyuhgMOs8iT5FCxhK0RdCnojfTbXhpdCbtgnvx4oNPpItUgDG4 Ge2Z4e73RRTwyHlWWDHGBG1QMumux9rYzsc6nWVu2omyOi5+XSP/DRZ8Vdr20VFmdh/G XwqweTthGvevQ3OcQR7tb1Z1n1W7mrVXIcPPIc1OD/Is1unuR1NMXm7o0MAKwacp2lwy 744A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739291475; x=1739896275; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6SZKMir/CCVtFZIbZW4Fj8Q80/bYL9FqnHdhMsDaITQ=; b=IzEgiiRvoJe9dNJq2wMvwMjZ1B4e9YwWiRdL43PgSBp2/5DbB3JwYbXeD1TnRsOgck rM0UCbpX/LFEb+23IVQ6wOKuBmb8jDQeeWI4OBdi/r2igfgoT7K1PdtT75EbKkviO+8i chbDui5bJWa5vVWFgqI2rVUKaUX/lD669mrXmHQT7aoaStJDDDprXkobyaS5zQ4zAtpb aFBrqCljLwcC0JOM6r4RnEinfiuE5to5qYf4bdITRPPsjCHHmJRVBU1p7P6OlXVdlw3c 1HWod+qEw+CBu3173JRcch4Ivc2dZLPs64Dc1PZnEbneWdOKJSiytZ4oxjmQSpG/Yu8Y H58g== X-Forwarded-Encrypted: i=1; AJvYcCVtXyPAy5e8SMayy6QgFqXKtJ/UAv0bKfTNW2DFwVD/0NggL/W9dKwNnQJdo++LEBwclNyT6O+U8rxcEw==@vger.kernel.org X-Gm-Message-State: AOJu0YxQfu9gWO+ltT6WjZd4AodwSNRTulXfJkBcmvllTxf3yLf4Qli+ J+cB2EHo3CvMSVEkukaC1dMKjqpRIR1shpNrJYaRFbcygcbrMBYb X-Gm-Gg: ASbGncvhI42uI5Xp4K0RPxBHuByli5xNQEyrTq/5FVaxy6dh8O+022N5rtkxjWWAiUs 0/20gJfSTOKsMVFwVsaDYJE/Sq5P5yQ+V4hWVUg3gZlp1lrj8bpVJlHwQfBQtPLZN+kyruq+Aso rEkojCiGCxCZ6SMHxAjBtNbkrkwgKG5Whaq00VmmRh/EWaP/x7jxq3Kf8A6jIZBjhp76J15GIEb wlDmBtmbVJnAdI+OQqcfTYmqx6ginZF+pHJ4cqkYyNCwKEm7SX4sbjctrTNwPkqd502ewMIp4ia e4c7BOZ+/GZQbuyych1nUkwNNu22 X-Google-Smtp-Source: AGHT+IEpS2WYCCXVKPTuo/qumvE+XCs2EJBxozM2SlFTakSrMGFjjYts4TVIa5Yz3Yb26t4kH7nU+A== X-Received: by 2002:a05:6402:42c8:b0:5dc:1289:7f1c with SMTP id 4fb4d7f45d1cf-5de450d6951mr20692891a12.29.1739291474370; Tue, 11 Feb 2025 08:31:14 -0800 (PST) Received: from able.fritz.box ([2a00:e180:154a:1300:5b91:7670:e404:c65a]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dcf1b7ade9sm9838748a12.25.2025.02.11.08.31.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 08:31:13 -0800 (PST) From: " =?utf-8?q?Christian_K=C3=B6nig?= " X-Google-Original-From: =?utf-8?q?Christian_K=C3=B6nig?= To: sumit.semwal@linaro.org, tzimmermann@suse.de, simona@ffwll.ch, dmitry.osipenko@collabora.com, tvrtko.ursulin@igalia.com, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org Subject: [PATCH 2/4] dma-buf/dma-fence: remove unnecessary callbacks Date: Tue, 11 Feb 2025 17:31:07 +0100 Message-Id: <20250211163109.12200-3-christian.koenig@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250211163109.12200-1-christian.koenig@amd.com> References: <20250211163109.12200-1-christian.koenig@amd.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The fence_value_str and timeline_value_str callbacks were just an unnecessary abstraction in the SW sync implementation. The only caller of those callbacks already knew that the fence in questions is a timeline_fence. So print the values directly instead of using a redirection. Additional to that remove the implementations from virtgpu and vgem. As far as I can see those were never used in the first place. Signed-off-by: Christian König Reviewed-by: Simona Vetter Reviewed-by: Dmitry Osipenko --- drivers/dma-buf/sw_sync.c | 16 ---------------- drivers/dma-buf/sync_debug.c | 21 ++------------------- drivers/gpu/drm/vgem/vgem_fence.c | 15 --------------- drivers/gpu/drm/virtio/virtgpu_fence.c | 16 ---------------- include/linux/dma-fence.h | 21 --------------------- 5 files changed, 2 insertions(+), 87 deletions(-) diff --git a/drivers/dma-buf/sw_sync.c b/drivers/dma-buf/sw_sync.c index f5905d67dedb..849280ae79a9 100644 --- a/drivers/dma-buf/sw_sync.c +++ b/drivers/dma-buf/sw_sync.c @@ -173,20 +173,6 @@ static bool timeline_fence_signaled(struct dma_fence *fence) return !__dma_fence_is_later(fence->seqno, parent->value, fence->ops); } -static void timeline_fence_value_str(struct dma_fence *fence, - char *str, int size) -{ - snprintf(str, size, "%lld", fence->seqno); -} - -static void timeline_fence_timeline_value_str(struct dma_fence *fence, - char *str, int size) -{ - struct sync_timeline *parent = dma_fence_parent(fence); - - snprintf(str, size, "%d", parent->value); -} - static void timeline_fence_set_deadline(struct dma_fence *fence, ktime_t deadline) { struct sync_pt *pt = dma_fence_to_sync_pt(fence); @@ -208,8 +194,6 @@ static const struct dma_fence_ops timeline_fence_ops = { .get_timeline_name = timeline_fence_get_timeline_name, .signaled = timeline_fence_signaled, .release = timeline_fence_release, - .fence_value_str = timeline_fence_value_str, - .timeline_value_str = timeline_fence_timeline_value_str, .set_deadline = timeline_fence_set_deadline, }; diff --git a/drivers/dma-buf/sync_debug.c b/drivers/dma-buf/sync_debug.c index 237bce21d1e7..270daae7d89a 100644 --- a/drivers/dma-buf/sync_debug.c +++ b/drivers/dma-buf/sync_debug.c @@ -82,25 +82,8 @@ static void sync_print_fence(struct seq_file *s, seq_printf(s, "@%lld.%09ld", (s64)ts64.tv_sec, ts64.tv_nsec); } - if (fence->ops->timeline_value_str && - fence->ops->fence_value_str) { - char value[64]; - bool success; - - fence->ops->fence_value_str(fence, value, sizeof(value)); - success = strlen(value); - - if (success) { - seq_printf(s, ": %s", value); - - fence->ops->timeline_value_str(fence, value, - sizeof(value)); - - if (strlen(value)) - seq_printf(s, " / %s", value); - } - } - + seq_printf(s, ": %lld", fence->seqno); + seq_printf(s, " / %d", parent->value); seq_putc(s, '\n'); } diff --git a/drivers/gpu/drm/vgem/vgem_fence.c b/drivers/gpu/drm/vgem/vgem_fence.c index e15754178395..5298d995faa7 100644 --- a/drivers/gpu/drm/vgem/vgem_fence.c +++ b/drivers/gpu/drm/vgem/vgem_fence.c @@ -53,25 +53,10 @@ static void vgem_fence_release(struct dma_fence *base) dma_fence_free(&fence->base); } -static void vgem_fence_value_str(struct dma_fence *fence, char *str, int size) -{ - snprintf(str, size, "%llu", fence->seqno); -} - -static void vgem_fence_timeline_value_str(struct dma_fence *fence, char *str, - int size) -{ - snprintf(str, size, "%llu", - dma_fence_is_signaled(fence) ? fence->seqno : 0); -} - static const struct dma_fence_ops vgem_fence_ops = { .get_driver_name = vgem_fence_get_driver_name, .get_timeline_name = vgem_fence_get_timeline_name, .release = vgem_fence_release, - - .fence_value_str = vgem_fence_value_str, - .timeline_value_str = vgem_fence_timeline_value_str, }; static void vgem_fence_timeout(struct timer_list *t) diff --git a/drivers/gpu/drm/virtio/virtgpu_fence.c b/drivers/gpu/drm/virtio/virtgpu_fence.c index f28357dbde35..44c1d8ef3c4d 100644 --- a/drivers/gpu/drm/virtio/virtgpu_fence.c +++ b/drivers/gpu/drm/virtio/virtgpu_fence.c @@ -49,26 +49,10 @@ static bool virtio_gpu_fence_signaled(struct dma_fence *f) return false; } -static void virtio_gpu_fence_value_str(struct dma_fence *f, char *str, int size) -{ - snprintf(str, size, "[%llu, %llu]", f->context, f->seqno); -} - -static void virtio_gpu_timeline_value_str(struct dma_fence *f, char *str, - int size) -{ - struct virtio_gpu_fence *fence = to_virtio_gpu_fence(f); - - snprintf(str, size, "%llu", - (u64)atomic64_read(&fence->drv->last_fence_id)); -} - static const struct dma_fence_ops virtio_gpu_fence_ops = { .get_driver_name = virtio_gpu_get_driver_name, .get_timeline_name = virtio_gpu_get_timeline_name, .signaled = virtio_gpu_fence_signaled, - .fence_value_str = virtio_gpu_fence_value_str, - .timeline_value_str = virtio_gpu_timeline_value_str, }; struct virtio_gpu_fence *virtio_gpu_fence_alloc(struct virtio_gpu_device *vgdev, diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h index e230af0d123f..8778e2d758da 100644 --- a/include/linux/dma-fence.h +++ b/include/linux/dma-fence.h @@ -238,27 +238,6 @@ struct dma_fence_ops { */ void (*release)(struct dma_fence *fence); - /** - * @fence_value_str: - * - * Callback to fill in free-form debug info specific to this fence, like - * the sequence number. - * - * This callback is optional. - */ - void (*fence_value_str)(struct dma_fence *fence, char *str, int size); - - /** - * @timeline_value_str: - * - * Fills in the current value of the timeline as a string, like the - * sequence number. Note that the specific fence passed to this function - * should not matter, drivers should only use it to look up the - * corresponding timeline structures. - */ - void (*timeline_value_str)(struct dma_fence *fence, - char *str, int size); - /** * @set_deadline: * From patchwork Tue Feb 11 16:31:08 2025 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: 13969999 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7ABDE253F15 for ; Tue, 11 Feb 2025 16:31:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739291480; cv=none; b=gLzYu0RxUxX9XKGRA0lnC7yMjOyWorUJ5csFenJTLsI5oYr0XrFK0IWPlYHYIFfNobQ4XVoFW/WrbbjzVijFEdvObmhyloXmwUbymHi0/V/myABbgG0xcIY+cL6So0uVgctuYNdgjcBRSEP7jCPY5LhRIJQ/ORvEeHTwkUKH6HE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739291480; c=relaxed/simple; bh=Q5mwKHkQvgVLYgnuvEx7yolm1zD7j+vDEvj41j803M0=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=Na0CzdElZqUAVSUFVykxoMLQmMMHXAEps/5PRT3P7PC60EcnpdkdLtT9OctyATKOq8P+xVV2jkPG2wmZoELJl515ULXF6/hoLC6pAKzVzzId2jL5Zv9WzfzmbGVOZko435q9caMTXGZMHun+eSQFUP8g2RDXZt0xZ9tCvqfPSDQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lOGrZZ9d; arc=none smtp.client-ip=209.85.208.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lOGrZZ9d" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-5de5a853090so7394969a12.3 for ; Tue, 11 Feb 2025 08:31:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739291477; x=1739896277; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Iap7JYgTMRHbjhfQG7wI8MFuWjBZrMJp1uv8Se86XIw=; b=lOGrZZ9dcxsnHuaQ8er4sFS9UVgmeX0TT9molvAVCSAW0oHDewfL4TEazGhNRJnewe 56ePpvOl6nQslHzAbL429bkZQp5l7rDP0W1HIH8ez47ElAQp6UaPNXj0+EKvf+aq4oaV U9SFi6WqtZYDhpi+nJ0TR5lKUbyQpZLZf8FQjpdQqvwJNibj5qDoPvK9Dl30qXN1M4Ig HybqVivmP/QaflFnKQtRRpgBpNn6IQeXD7pNAKlBb2itmFJbs0O0qj4BCl7xzEhLOXvp 4NGG+Yn6PueK1A9Pins+k5I/wnLxZ4UsJJ/kRMELjZzAAt45lMTp8nS/yi0kqgp4WvnP 2txA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739291477; x=1739896277; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Iap7JYgTMRHbjhfQG7wI8MFuWjBZrMJp1uv8Se86XIw=; b=wxN5JK0cPkzDBdm5MR36Lsv1L5nG3LSZrqQMkI/YhlyhiwdZPqMvzpE5C67Veh4gmw AXZt/4Z1Q6RpR6FE71XQ+1ELdPV5C78rbg6YKeC8voC1rSwMzWJSTqRJ+ZHwFchmkuXP EmiRKmbk7Ezw2j3RrRrAtcaTNL2d6k2pqh6NbfbfvqlqXOtPrg1ujYfJFHGMLGlehOzg NF+W25bqxyv2TRzLVKGTHPc6kj/DplL5WTST1jRM8lMwdglEXlvlxkunWuY65Fc+ew1d hFnGzhit1rEiUZjCTlL/ZQLcHg4zaar5vhmqmpgDAkAhNTTo9GH737a4FIQTVIrnLYTM ps8w== X-Forwarded-Encrypted: i=1; AJvYcCV4xcwVmc9s4VKQa0CTPiQgDpI1bcycES4kOTSYLA++MnOJq/bGlzja2wouDQNr1HfVjHB9/F3M+9MNuw==@vger.kernel.org X-Gm-Message-State: AOJu0Yz1zc6/S9NABpjXEcnjJcHAdD8VRKYJxZh9hMadD3HFh4KXOw7Y 4KVG3jY1HwbxxQkUYpMK40+vfJrq6DPzyFNfSDz2eCSIESFiDGOmOfoRA7eG X-Gm-Gg: ASbGncsdhjG/xAIoLuoWew9aEErl0tc6OXgJOODy1nq3wNsFkjD9KvsAC3AifCBh8Nh ++GgyYZOzu/BCcGGDOotRaoJmlo70UOF1nvYn/wfDcY5027hDZgg7chTLun8RMv9/9NliOnY1nQ U9vjOjpXc63VWQu4kdZrzJbAG5uPeIX/QQvNN8npfg2nD5/D6+s4WKQv42o1cNVKDbYkWO/6q8R 7TUXteEVoAAHDGzSpj05TIm7z98TrJgItZjv0G99g1leZcAhCRGj4SPEyBk5DhCsjciean2542/ Q6xDgS7JjMF0GclLmjAK9F9/V+uk X-Google-Smtp-Source: AGHT+IGF9R9HgdOEGRm7oeMq6tll9Vr6d7qgWBF/JPebGyFBvvrkKcnRNN07e+0gFg7U8jOVOVfd1g== X-Received: by 2002:a05:6402:321d:b0:5dc:cf9b:b048 with SMTP id 4fb4d7f45d1cf-5de45040066mr19096031a12.1.1739291476410; Tue, 11 Feb 2025 08:31:16 -0800 (PST) Received: from able.fritz.box ([2a00:e180:154a:1300:5b91:7670:e404:c65a]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dcf1b7ade9sm9838748a12.25.2025.02.11.08.31.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 08:31:15 -0800 (PST) From: " =?utf-8?q?Christian_K=C3=B6nig?= " X-Google-Original-From: =?utf-8?q?Christian_K=C3=B6nig?= To: sumit.semwal@linaro.org, tzimmermann@suse.de, simona@ffwll.ch, dmitry.osipenko@collabora.com, tvrtko.ursulin@igalia.com, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org Subject: [PATCH 3/4] dma-buf: dma-buf: stop mapping sg_tables on attach Date: Tue, 11 Feb 2025 17:31:08 +0100 Message-Id: <20250211163109.12200-4-christian.koenig@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250211163109.12200-1-christian.koenig@amd.com> References: <20250211163109.12200-1-christian.koenig@amd.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 As a workaround to smoothly transit from static to dynamic DMA-buf handling we cached the sg_table on attach if dynamic handling mismatched between exporter and importer. Since Dmitry and Thomas cleaned that up and also documented the lock handling we can drop this workaround now. Signed-off-by: Christian König Reviewed-by: Simona Vetter Reviewed-by: Dmitry Osipenko --- drivers/dma-buf/dma-buf.c | 149 ++++++++++++++------------------------ include/linux/dma-buf.h | 14 ---- 2 files changed, 56 insertions(+), 107 deletions(-) diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index 5baa83b85515..357b94a3dbaa 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -782,7 +782,7 @@ static void mangle_sg_table(struct sg_table *sg_table) /* To catch abuse of the underlying struct page by importers mix * up the bits, but take care to preserve the low SG_ bits to - * not corrupt the sgt. The mixing is undone in __unmap_dma_buf + * not corrupt the sgt. The mixing is undone on unmap * before passing the sgt back to the exporter. */ for_each_sgtable_sg(sg_table, sg, i) @@ -790,29 +790,20 @@ static void mangle_sg_table(struct sg_table *sg_table) #endif } -static struct sg_table *__map_dma_buf(struct dma_buf_attachment *attach, - enum dma_data_direction direction) -{ - struct sg_table *sg_table; - signed long ret; - - sg_table = attach->dmabuf->ops->map_dma_buf(attach, direction); - if (IS_ERR_OR_NULL(sg_table)) - return sg_table; - - if (!dma_buf_attachment_is_dynamic(attach)) { - ret = dma_resv_wait_timeout(attach->dmabuf->resv, - DMA_RESV_USAGE_KERNEL, true, - MAX_SCHEDULE_TIMEOUT); - if (ret < 0) { - attach->dmabuf->ops->unmap_dma_buf(attach, sg_table, - direction); - return ERR_PTR(ret); - } - } - mangle_sg_table(sg_table); - return sg_table; +/** + * dma_buf_pin_on_map - check if a DMA-buf should be pinned when mapped + * @attach: the DMA-buf attachment to check + * + * Returns: True if a DMA-buf export provided pin/unpin callbacks and we can't + * use the importers move notify for some reason. + */ +static bool +dma_buf_pin_on_map(struct dma_buf_attachment *attach) +{ + return attach->dmabuf->ops->pin && + (!IS_ENABLED(CONFIG_DMABUF_MOVE_NOTIFY) || + !attach->importer_ops); } /** @@ -935,48 +926,11 @@ dma_buf_dynamic_attach(struct dma_buf *dmabuf, struct device *dev, list_add(&attach->node, &dmabuf->attachments); dma_resv_unlock(dmabuf->resv); - /* When either the importer or the exporter can't handle dynamic - * mappings we cache the mapping here to avoid issues with the - * reservation object lock. - */ - if (dma_buf_attachment_is_dynamic(attach) != - dma_buf_is_dynamic(dmabuf)) { - struct sg_table *sgt; - - dma_resv_lock(attach->dmabuf->resv, NULL); - if (dma_buf_is_dynamic(attach->dmabuf)) { - ret = dmabuf->ops->pin(attach); - if (ret) - goto err_unlock; - } - - sgt = __map_dma_buf(attach, DMA_BIDIRECTIONAL); - if (!sgt) - sgt = ERR_PTR(-ENOMEM); - if (IS_ERR(sgt)) { - ret = PTR_ERR(sgt); - goto err_unpin; - } - dma_resv_unlock(attach->dmabuf->resv); - attach->sgt = sgt; - attach->dir = DMA_BIDIRECTIONAL; - } - return attach; err_attach: kfree(attach); return ERR_PTR(ret); - -err_unpin: - if (dma_buf_is_dynamic(attach->dmabuf)) - dmabuf->ops->unpin(attach); - -err_unlock: - dma_resv_unlock(attach->dmabuf->resv); - - dma_buf_detach(dmabuf, attach); - return ERR_PTR(ret); } EXPORT_SYMBOL_NS_GPL(dma_buf_dynamic_attach, "DMA_BUF"); @@ -995,16 +949,6 @@ struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf, } EXPORT_SYMBOL_NS_GPL(dma_buf_attach, "DMA_BUF"); -static void __unmap_dma_buf(struct dma_buf_attachment *attach, - struct sg_table *sg_table, - enum dma_data_direction direction) -{ - /* uses XOR, hence this unmangles */ - mangle_sg_table(sg_table); - - attach->dmabuf->ops->unmap_dma_buf(attach, sg_table, direction); -} - /** * dma_buf_detach - Remove the given attachment from dmabuf's attachments list * @dmabuf: [in] buffer to detach from. @@ -1022,11 +966,12 @@ void dma_buf_detach(struct dma_buf *dmabuf, struct dma_buf_attachment *attach) dma_resv_lock(dmabuf->resv, NULL); if (attach->sgt) { + mangle_sg_table(attach->sgt); + attach->dmabuf->ops->unmap_dma_buf(attach, attach->sgt, + attach->dir); - __unmap_dma_buf(attach, attach->sgt, attach->dir); - - if (dma_buf_is_dynamic(attach->dmabuf)) - dmabuf->ops->unpin(attach); + if (dma_buf_pin_on_map(attach)) + dma_buf_unpin(attach); } list_del(&attach->node); @@ -1058,7 +1003,7 @@ int dma_buf_pin(struct dma_buf_attachment *attach) struct dma_buf *dmabuf = attach->dmabuf; int ret = 0; - WARN_ON(!dma_buf_attachment_is_dynamic(attach)); + WARN_ON(!attach->importer_ops); dma_resv_assert_held(dmabuf->resv); @@ -1081,7 +1026,7 @@ void dma_buf_unpin(struct dma_buf_attachment *attach) { struct dma_buf *dmabuf = attach->dmabuf; - WARN_ON(!dma_buf_attachment_is_dynamic(attach)); + WARN_ON(!attach->importer_ops); dma_resv_assert_held(dmabuf->resv); @@ -1115,7 +1060,7 @@ struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *attach, enum dma_data_direction direction) { struct sg_table *sg_table; - int r; + signed long ret; might_sleep(); @@ -1136,29 +1081,37 @@ struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *attach, return attach->sgt; } - if (dma_buf_is_dynamic(attach->dmabuf)) { - if (!IS_ENABLED(CONFIG_DMABUF_MOVE_NOTIFY)) { - r = attach->dmabuf->ops->pin(attach); - if (r) - return ERR_PTR(r); - } + if (dma_buf_pin_on_map(attach)) { + ret = attach->dmabuf->ops->pin(attach); + if (ret) + return ERR_PTR(ret); } - sg_table = __map_dma_buf(attach, direction); + sg_table = attach->dmabuf->ops->map_dma_buf(attach, direction); if (!sg_table) sg_table = ERR_PTR(-ENOMEM); + if (IS_ERR(sg_table)) + goto error_unpin; - if (IS_ERR(sg_table) && dma_buf_is_dynamic(attach->dmabuf) && - !IS_ENABLED(CONFIG_DMABUF_MOVE_NOTIFY)) - attach->dmabuf->ops->unpin(attach); + /* + * When not providing ops the importer doesn't wait for fences either. + */ + if (!attach->importer_ops) { + ret = dma_resv_wait_timeout(attach->dmabuf->resv, + DMA_RESV_USAGE_KERNEL, true, + MAX_SCHEDULE_TIMEOUT); + if (ret < 0) + goto error_unmap; + } + mangle_sg_table(sg_table); - if (!IS_ERR(sg_table) && attach->dmabuf->ops->cache_sgt_mapping) { + if (attach->dmabuf->ops->cache_sgt_mapping) { attach->sgt = sg_table; attach->dir = direction; } #ifdef CONFIG_DMA_API_DEBUG - if (!IS_ERR(sg_table)) { + { struct scatterlist *sg; u64 addr; int len; @@ -1175,6 +1128,16 @@ struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *attach, } #endif /* CONFIG_DMA_API_DEBUG */ return sg_table; + +error_unmap: + attach->dmabuf->ops->unmap_dma_buf(attach, sg_table, direction); + sg_table = ERR_PTR(ret); + +error_unpin: + if (dma_buf_pin_on_map(attach)) + attach->dmabuf->ops->unpin(attach); + + return sg_table; } EXPORT_SYMBOL_NS_GPL(dma_buf_map_attachment, "DMA_BUF"); @@ -1230,11 +1193,11 @@ void dma_buf_unmap_attachment(struct dma_buf_attachment *attach, if (attach->sgt == sg_table) return; - __unmap_dma_buf(attach, sg_table, direction); + mangle_sg_table(sg_table); + attach->dmabuf->ops->unmap_dma_buf(attach, sg_table, direction); - if (dma_buf_is_dynamic(attach->dmabuf) && - !IS_ENABLED(CONFIG_DMABUF_MOVE_NOTIFY)) - dma_buf_unpin(attach); + if (dma_buf_pin_on_map(attach)) + attach->dmabuf->ops->unpin(attach); } EXPORT_SYMBOL_NS_GPL(dma_buf_unmap_attachment, "DMA_BUF"); diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h index 36216d28d8bd..c54ff2dda8cb 100644 --- a/include/linux/dma-buf.h +++ b/include/linux/dma-buf.h @@ -583,20 +583,6 @@ static inline bool dma_buf_is_dynamic(struct dma_buf *dmabuf) return !!dmabuf->ops->pin; } -/** - * dma_buf_attachment_is_dynamic - check if a DMA-buf attachment uses dynamic - * mappings - * @attach: the DMA-buf attachment to check - * - * Returns true if a DMA-buf importer wants to call the map/unmap functions with - * the dma_resv lock held. - */ -static inline bool -dma_buf_attachment_is_dynamic(struct dma_buf_attachment *attach) -{ - return !!attach->importer_ops; -} - struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf, struct device *dev); struct dma_buf_attachment * From patchwork Tue Feb 11 16:31:09 2025 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: 13970000 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 76B0E253B77 for ; Tue, 11 Feb 2025 16:31:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739291481; cv=none; b=PRd66/DkRq0nbNDG63OAonCqs1vlfERmC6t2FS3jy8aH12qEbblsw/HyGpV6jZpFzTfDpAZ9mRL0uG4RNyJACPoMC2JBanqOrT6+gx7XTDqnPwCEnJjlmJ9UjpZSk/t8SL1uxpLner9JAZ7LruzApb9B/C1i6i4VhCquVsfrnYc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739291481; c=relaxed/simple; bh=BjZHtnbQDyB2OJIfdSvI61rykxRXqZT2cfmCzH8yYqo=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=GSVYVZctdi91pMbEN/ugk1HffFU5OVOpBfhYi580bP5SBuy6CqrGNPkGtFJ3nSNaJLtymUY77EUUTHBwqSpEwLAp7l1Ph6WHK/pHadG7FfxCWqKU2UbtZHnjFbFIluvgF7gP7RYOnTk9x8SgkuGTgQ1xFzFTSuMoaRlIiKmLmwc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=cpWIG6al; arc=none smtp.client-ip=209.85.208.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cpWIG6al" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-5de6e26d4e4so5641390a12.1 for ; Tue, 11 Feb 2025 08:31:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739291478; x=1739896278; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=MxattA3QjQC0bUvmIjtYp3+w3vcxByTR3qghr1+qO3E=; b=cpWIG6alpkIzzHOo1p/P1DvSgbUZD5IHuWCrujU1pw57rzuBiWPX1jqg1DwCQ0MXk+ W/Zk+7SHBM/fx6eEXvXFWvXjqon4CdgvtvV8LrCFRFak96SEQgoSt0IFE1uN30QMWt3u lb0QAN5k9AE4UE+9dVG5qQJwC80oUp7Em8cL5XWJwL9HdjjylM/2v4uwsLucD+6Zr1GM 96goW3yzf1J/rh/1DhQZehZcLoiWasjTCBpEB5XzBw4DTYxPYaeY7RDrW6D1bIi8PrZB 41Cww7lrGsQfs55RV7j3bww/ZdPsqw84b3itR3icZzfWEMu6flWRr3ROhR/KAFW8L5Dv 75lA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739291478; x=1739896278; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MxattA3QjQC0bUvmIjtYp3+w3vcxByTR3qghr1+qO3E=; b=RKMRzlY9sBqZRHv4fegtUI0O3k7h40DrmPCNa4K+Es1U7LU7XR8pgM2XVklxEkJM2V 24MEz3IzzGB2OjG35xmE2rduvZWCXMivjmkCapCIeW1dTXUULpQEOCRqkmW6VINPXsnP 1Tv+wD7Y2uyvDo1gNCL0lIy91djXUMwpZA2F0zhg3jrOYnybzyigdQShqsjDpzbngLFb Z9sdk/bN7DjNbhdgmsRMoEUdBSoTPjsg41SqEpLgw/DC1SO1ugOeiQKVX6qkniWwhOey 0fdre51lzHBIfEadpjrIBGSnR8Sng0yRaBMUcTxCRHfkuM/hEavwrg1WdrMjvSDspOOn UTpA== X-Forwarded-Encrypted: i=1; AJvYcCWQ6xzZe8RnL3fWS0uWRSs03XvK4BqrWvG4DBKYZ7vmbNuXxLhDQjT8ArXkqFjr+U4YpDI/uJ8V2HF+BA==@vger.kernel.org X-Gm-Message-State: AOJu0Yzvm6nxR3PoPFZy+NPdNp4KnUDpn/4whNzQ6+lbga8G59/Xuoc5 PWCiPJDMrRkCCFr+Afa4TXyfDJN23TRxwBaMrx3Giv1iqusIYI0v X-Gm-Gg: ASbGncsqr6RxtNuhGO9B63fRBowEx0YKjV0Gf7p8BjUgXw6/uCkp6rYMrP8QkotFl+D rIXL8fwyHWZSsQwtlKbdHIXEFdGgdiNxXbNryCtXI8dk2rp3S1voQvQ7PETJ6icOdaLb/2y6TlB uVnTRkawQPHwCtWXh4G6zLuhPWTODKy7r7w985JCl8yScWAmfuXuY6xMZMtlBVZhUMNtS7qVwBJ I+55pEZKINAAqlgslKAI/nfmtmF+UvwRGqbIDARn9lsG7+HMObmhnPb6rwiTFvBk5nxuOc1pBru 8cXVkWJBkn6cBnO84XQB1ovZrLxd X-Google-Smtp-Source: AGHT+IE7lLBJbOd+ug9udhKeOc+JeGKaTO/5yCW136COcWGhRp26YaAZtFv890iY2cxKgMfZCaakVA== X-Received: by 2002:a05:6402:42c8:b0:5dc:1289:7f1c with SMTP id 4fb4d7f45d1cf-5de450d6951mr20693170a12.29.1739291477157; Tue, 11 Feb 2025 08:31:17 -0800 (PST) Received: from able.fritz.box ([2a00:e180:154a:1300:5b91:7670:e404:c65a]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dcf1b7ade9sm9838748a12.25.2025.02.11.08.31.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 08:31:16 -0800 (PST) From: " =?utf-8?q?Christian_K=C3=B6nig?= " X-Google-Original-From: =?utf-8?q?Christian_K=C3=B6nig?= To: sumit.semwal@linaro.org, tzimmermann@suse.de, simona@ffwll.ch, dmitry.osipenko@collabora.com, tvrtko.ursulin@igalia.com, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org Subject: [PATCH 4/4] dma-buf: drop caching of sg_tables Date: Tue, 11 Feb 2025 17:31:09 +0100 Message-Id: <20250211163109.12200-5-christian.koenig@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250211163109.12200-1-christian.koenig@amd.com> References: <20250211163109.12200-1-christian.koenig@amd.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 That was purely for the transition from static to dynamic dma-buf handling and can be removed again now. Signed-off-by: Christian König Reviewed-by: Simona Vetter Reviewed-by: Dmitry Osipenko --- drivers/dma-buf/dma-buf.c | 34 -------------------------- drivers/dma-buf/udmabuf.c | 1 - drivers/gpu/drm/drm_prime.c | 1 - drivers/gpu/drm/virtio/virtgpu_prime.c | 1 - include/linux/dma-buf.h | 13 ---------- 5 files changed, 50 deletions(-) diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index 357b94a3dbaa..35221c4ddbf5 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -636,10 +636,6 @@ struct dma_buf *dma_buf_export(const struct dma_buf_export_info *exp_info) || !exp_info->ops->release)) return ERR_PTR(-EINVAL); - if (WARN_ON(exp_info->ops->cache_sgt_mapping && - (exp_info->ops->pin || exp_info->ops->unpin))) - return ERR_PTR(-EINVAL); - if (WARN_ON(!exp_info->ops->pin != !exp_info->ops->unpin)) return ERR_PTR(-EINVAL); @@ -964,17 +960,7 @@ void dma_buf_detach(struct dma_buf *dmabuf, struct dma_buf_attachment *attach) return; dma_resv_lock(dmabuf->resv, NULL); - - if (attach->sgt) { - mangle_sg_table(attach->sgt); - attach->dmabuf->ops->unmap_dma_buf(attach, attach->sgt, - attach->dir); - - if (dma_buf_pin_on_map(attach)) - dma_buf_unpin(attach); - } list_del(&attach->node); - dma_resv_unlock(dmabuf->resv); if (dmabuf->ops->detach) @@ -1069,18 +1055,6 @@ struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *attach, dma_resv_assert_held(attach->dmabuf->resv); - if (attach->sgt) { - /* - * Two mappings with different directions for the same - * attachment are not allowed. - */ - if (attach->dir != direction && - attach->dir != DMA_BIDIRECTIONAL) - return ERR_PTR(-EBUSY); - - return attach->sgt; - } - if (dma_buf_pin_on_map(attach)) { ret = attach->dmabuf->ops->pin(attach); if (ret) @@ -1105,11 +1079,6 @@ struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *attach, } mangle_sg_table(sg_table); - if (attach->dmabuf->ops->cache_sgt_mapping) { - attach->sgt = sg_table; - attach->dir = direction; - } - #ifdef CONFIG_DMA_API_DEBUG { struct scatterlist *sg; @@ -1190,9 +1159,6 @@ void dma_buf_unmap_attachment(struct dma_buf_attachment *attach, dma_resv_assert_held(attach->dmabuf->resv); - if (attach->sgt == sg_table) - return; - mangle_sg_table(sg_table); attach->dmabuf->ops->unmap_dma_buf(attach, sg_table, direction); diff --git a/drivers/dma-buf/udmabuf.c b/drivers/dma-buf/udmabuf.c index cc7398cc17d6..2fa2c9135eac 100644 --- a/drivers/dma-buf/udmabuf.c +++ b/drivers/dma-buf/udmabuf.c @@ -285,7 +285,6 @@ static int end_cpu_udmabuf(struct dma_buf *buf, } static const struct dma_buf_ops udmabuf_ops = { - .cache_sgt_mapping = true, .map_dma_buf = map_udmabuf, .unmap_dma_buf = unmap_udmabuf, .release = release_udmabuf, diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c index 32a8781cfd67..c284f306d597 100644 --- a/drivers/gpu/drm/drm_prime.c +++ b/drivers/gpu/drm/drm_prime.c @@ -810,7 +810,6 @@ int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma) EXPORT_SYMBOL(drm_gem_dmabuf_mmap); static const struct dma_buf_ops drm_gem_prime_dmabuf_ops = { - .cache_sgt_mapping = true, .attach = drm_gem_map_attach, .detach = drm_gem_map_detach, .map_dma_buf = drm_gem_map_dma_buf, diff --git a/drivers/gpu/drm/virtio/virtgpu_prime.c b/drivers/gpu/drm/virtio/virtgpu_prime.c index fe6a0b018571..c6f3be3cb914 100644 --- a/drivers/gpu/drm/virtio/virtgpu_prime.c +++ b/drivers/gpu/drm/virtio/virtgpu_prime.c @@ -75,7 +75,6 @@ static void virtgpu_gem_unmap_dma_buf(struct dma_buf_attachment *attach, static const struct virtio_dma_buf_ops virtgpu_dmabuf_ops = { .ops = { - .cache_sgt_mapping = true, .attach = virtio_dma_buf_attach, .detach = drm_gem_map_detach, .map_dma_buf = virtgpu_gem_map_dma_buf, diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h index c54ff2dda8cb..544f8f8c3f44 100644 --- a/include/linux/dma-buf.h +++ b/include/linux/dma-buf.h @@ -34,15 +34,6 @@ struct dma_buf_attachment; * @vunmap: [optional] unmaps a vmap from the buffer */ struct dma_buf_ops { - /** - * @cache_sgt_mapping: - * - * If true the framework will cache the first mapping made for each - * attachment. This avoids creating mappings for attachments multiple - * times. - */ - bool cache_sgt_mapping; - /** * @attach: * @@ -493,8 +484,6 @@ struct dma_buf_attach_ops { * @dmabuf: buffer for this attachment. * @dev: device attached to the buffer. * @node: list of dma_buf_attachment, protected by dma_resv lock of the dmabuf. - * @sgt: cached mapping. - * @dir: direction of cached mapping. * @peer2peer: true if the importer can handle peer resources without pages. * @priv: exporter specific attachment data. * @importer_ops: importer operations for this attachment, if provided @@ -514,8 +503,6 @@ struct dma_buf_attachment { struct dma_buf *dmabuf; struct device *dev; struct list_head node; - struct sg_table *sgt; - enum dma_data_direction dir; bool peer2peer; const struct dma_buf_attach_ops *importer_ops; void *importer_priv;