From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 9DE803815E3 for ; Wed, 29 Apr 2026 15:26:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777476416; cv=none; b=kmaCqW8zE19EbHlggPINCTGti8yTuNIzmr4gPO0F3Esc0WR+D6tyHCkqWTFmFn2O/xZpF4L5wAbmGrEzXuy2oPhBTSHk+nID2bxmJQ5Uqz/r+SVXnTtFj6MK45OI7mFiDYR/BR1weBgwxVOOngIB8GMmdJYeq+71tSVAxvXfEPY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777476416; c=relaxed/simple; bh=DL12ZWqeJwgmWM4073U0nNO7Rud8B90RO8c36PxK6lA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=J4QpblFNddbcusYIMOvdiQAR6+Ma+ZSLRQJ0HDQwH5lRtPcSTGUVtChnqaSnY6DpfMNrK33RZhuy2DNqi0sg40al6HlfRIYWR+Pe3jDfW0rxtjzErocCb49frtihkTq8kECNsDnCvLz5AgJsJxf2KDk7SFVEtgJGbTL5aCeC0eo= 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=EevxMA7L; arc=none smtp.client-ip=209.85.221.49 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="EevxMA7L" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-43d6fbd0954so9596367f8f.1 for ; Wed, 29 Apr 2026 08:26:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777476409; x=1778081209; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Pdajlfqb0Mkqw7FfTkWcBSlkNtUxKMEiU4sOjeajLqA=; b=EevxMA7LPtKpXQoHdd237w6Vc8pJbzdxm6cjW6PNSoDJlLosPzx0qIFsRDgPYNbdG7 mexMEQ4B7y3zWxfct269nOC9bu4er8Y6GvfmyrrJRneIVajWkRzJhh1B0Y8Rak9y6l8U JBBZfSuG7lH+3EHCHD3CbnDANBUEW90SUEboSu1+/E8aF9lElvHqUuTUTUWwSCv0jTek eB4W4U2CzXvdYQJ0yK9hi/Fd/NnwU9NR9zcOpQpDQbD7Ksp9i/dB9dfdeVbtLEAivF1p rPNP2fBYkQWVm+FyjgRqQaI8WlJvCVhPpVCW/tZ0pIGGuC7zB+WQvEfLOHlCqhvGkBt3 yoHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777476409; x=1778081209; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Pdajlfqb0Mkqw7FfTkWcBSlkNtUxKMEiU4sOjeajLqA=; b=Z/F1gEDvpZBv82ZX04T+Vr/fz0UizgnXYT/8SJHBUZ6cuhvP7lustXl+wb1rpXkN4R T4xOQA0gO96IY4GhXZlC2JgX1cBfGMLWICVyY5ww0/l28PiFSLklbUJyO7hayhgj5Xua k5mTJNKgLP2ObIgVG8jp44Z/B8X2vyZvlK1qkZqwT8JAMlIf/E5qZXO4cCMD8DqlDsZd xw2z0WsxOKBbPkjChLF4enUhsqXB7z2oE/UpWzk21drXNRIyQpWoRiLEK6om1D5Wq+zg QBvAosNGCeNCPdh9ZTv8MQBiLkfDv6CLaXYO27h64qrYjrprQTZz/xj2eKzIxbxCYcEq KjuA== X-Forwarded-Encrypted: i=1; AFNElJ+HS3keLXsZ/hcqXhZjYnCn0S1Tn8wQe3gyYH1YKJYggO1D2BQSRw4xnCewGMqmTKnFKQT1bGxxpLF8MaA=@vger.kernel.org X-Gm-Message-State: AOJu0YxzRoXmiRCsNNFkuDCz0ZRwbTqcm3c9CE+KDHZYtrPQjxfid5Vz eJL3+qInaZsVsYxQSEw0aEbrQmMQ/paQyadWiEOpWjbBR8BkLH5DVfMQ X-Gm-Gg: AeBDietT09W7R/XTyYJVLgFmyWStA58BjpVD3kRXITdr9Yfsrh9HnHHon57ypIf262y PIlVpr9JXC2n5Sr4CbaInWb6doY1G04OKQ0qrVkO13zNQaoN9adhOUQ1mArJCVcG2mwi1M0lnFa AXUavd0xQmWjA0XhSUCnwHXQ2DjK6nIZ1EYhOBcUBu5YhoKEPDkVHPv0YGeZxd7B09Q2jKPEkRq 9CH3gVdlDO1yd/nvSINMGqieDLgHXgIOso/NwQvp1q3uqi8xn1h1AHZVjMgxEjt9HL1G4jroaZ2 vKmS/VQ3SIoiOp+Ba/VdlEIhAU0bEldl09/DDImwCDktf0Yo4Phj/ZED8hOPgmYvd1uvZNWZZR8 f9XgsxY/2b4mT+toQvaiEooj1/p2W0cc6vLo9B6J+PbWBRsqUW/RVxAO8ygEhteak2rPCVHDLUT cDkDRN3qbN1/oFnnDciF0kYyw/RaPyegljcax7lYlwkEfYQP6S6YCyZs/RwitumhyA8wOGc7BJK p+69QdyxFvbZheTReahNMo1RGBMIIlsDPxULrrmhKCR X-Received: by 2002:a05:6000:2002:b0:43f:e9ee:5610 with SMTP id ffacd0b85a97d-44790d12be0mr7198547f8f.43.1777476408973; Wed, 29 Apr 2026 08:26:48 -0700 (PDT) Received: from 127.0.0.1localhost ([82.132.184.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-447b76e5c22sm6382951f8f.28.2026.04.29.08.26.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 08:26:48 -0700 (PDT) From: Pavel Begunkov To: Jens Axboe , Keith Busch , Christoph Hellwig , Sagi Grimberg , Alexander Viro , Christian Brauner , Andrew Morton , Sumit Semwal , =?UTF-8?q?Christian=20K=C3=B6nig?= , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-fsdevel@vger.kernel.org, io-uring@vger.kernel.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org Cc: asml.silence@gmail.com, Nitesh Shetty , Kanchan Joshi , Anuj Gupta , Tushar Gohad , William Power , Phil Cayton , Jason Gunthorpe Subject: [PATCH v3 06/10] block: forward create_dmabuf_token to drivers Date: Wed, 29 Apr 2026 16:25:52 +0100 Message-ID: <559756c5e22dcfa183080a979de039910d1b896d.1777475843.git.asml.silence@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Add a trivial implementation of the create_dmabuf_token call for block devices that forwards the call to a new blk-mq callback if it's available. Signed-off-by: Pavel Begunkov --- block/fops.c | 14 ++++++++++++++ include/linux/blk-mq.h | 9 +++++++++ 2 files changed, 23 insertions(+) diff --git a/block/fops.c b/block/fops.c index 713a3ba3f457..3d8a48a7d645 100644 --- a/block/fops.c +++ b/block/fops.c @@ -951,6 +951,19 @@ static int blkdev_mmap_prepare(struct vm_area_desc *desc) return generic_file_mmap_prepare(desc); } +static int blkdev_create_dmabuf_token(struct file *file, + struct io_dmabuf_token *token) +{ + struct request_queue *q = bdev_get_queue(file_bdev(file)); + + if (!(file->f_flags & O_DIRECT)) + return -EINVAL; + if (!q->mq_ops || !q->mq_ops->create_dmabuf_token) + return -EINVAL; + + return q->mq_ops->create_dmabuf_token(q, token); +} + const struct file_operations def_blk_fops = { .open = blkdev_open, .release = blkdev_release, @@ -969,6 +982,7 @@ const struct file_operations def_blk_fops = { .fallocate = blkdev_fallocate, .uring_cmd = blkdev_uring_cmd, .fop_flags = FOP_BUFFER_RASYNC, + .create_dmabuf_token = blkdev_create_dmabuf_token, }; static __init int blkdev_init(void) diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index 18a2388ba581..ee31fb3ada10 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h @@ -15,6 +15,8 @@ struct blk_mq_tags; struct blk_flush_queue; struct io_comp_batch; +struct io_dmabuf_token; + #define BLKDEV_MIN_RQ 4 #define BLKDEV_DEFAULT_RQ 128 @@ -684,6 +686,13 @@ struct blk_mq_ops { */ void (*show_rq)(struct seq_file *m, struct request *rq); #endif + + /** + * @create_dma_token: Create a dma token, which will be using to map + * a dmabuf for IO requests. + */ + int (*create_dmabuf_token)(struct request_queue *, + struct io_dmabuf_token *token); }; /* Keep hctx_flag_name[] in sync with the definitions below */ -- 2.53.0