From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7396C2248A8 for ; Thu, 23 Apr 2026 13:30:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776951018; cv=none; b=oG84NGsK61CVK7B7DHQoaZ9m+PhO6cWsXOOSorQKTCUixy6546Wfk0CXwWWlfNP5UO3q5sArux0SeFzKUU+ku4K90IvB+soXE3XFQ/Dmwf6JYYici1kd+5EQheyLUGgBO32InC9PJ30zVezfm1hN3Aa6bgdbE/R9/Gn8zMVHVfo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776951018; c=relaxed/simple; bh=IQk9tf8jtI734WVYY1gXH96FiyZAYSnp0pjs1ZGk6Dw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ABDa0hc9ZRNvBXe5d/KY62+CS4lnv1h/dCZwyCGpkhVzsGcx/dLXdth3P9bL+FkStM43eNZol3H/E11PyPSzUFxRvS1zlRB+hLtE3L3GCm0Uv1YVfcZ5+TijAeY3LxK859e2abmygkcNIYZDdekjArvqEp1uYZ3hklYugPL2j8w= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=W83kJCb9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HnsKjtIQ; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="W83kJCb9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HnsKjtIQ" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63N8tph0179249 for ; Thu, 23 Apr 2026 13:30:16 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= oFs1RbQ0XkUdAOvZ3WrAthRL+JhVyLKMhXKejRMG50Q=; b=W83kJCb90RXTWXsv +N4MsWO5j3J1l018/9HTuTnXyck6N5sO3sEEcmhS6D/J1UM/Numbte+0JLmFIG7Y fDB8QyPCUSsSLwS8LDR933AUrLI7bmggaJMItyAr9c89SwvCR68I0DTo74N1nMPR mUyAUDvVEp8wWry2YPw3McZb9pj9zoLi+oijVtIH/sCL4RxmiT9PSj5zHM7B96YU 8Wk+xoeVo6mf5vdmbRsDNU1TM8zC+h2Q0oj+OnIVF4Tb1JyUEKvEI3BRvZWV+Ajz 1atvVcHB4z+RISev0c0n14GFqxUk7VkRYeozQfZ2qqh1VZnXh5sZqMLtyfM5Peup 5+72rQ== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dqe62hnj0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 23 Apr 2026 13:30:15 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2b7867bb92dso59170515ad.3 for ; Thu, 23 Apr 2026 06:30:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776951015; x=1777555815; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=oFs1RbQ0XkUdAOvZ3WrAthRL+JhVyLKMhXKejRMG50Q=; b=HnsKjtIQp1p0pIkHzGrUR8cXxpLeaEE93TYXK+1K0N7hnVuKIu4UBYjtKCONCRilLy pJV0SwGAwRU0kTvEl+Vps3rlVQO27EQ1b7mUzEZygji60mHO8/1crVs2y6DYDEIWJzPt dNEbGLWBgssBbFtVU7RF2hwqNDr89FANxN9Yw1wg2sUbf9EvLZs44FVnktDSmGhw1NNH MNYGeRTLZlA5i22ohQo5Xe/qPVN9YtgInibaiLh3Upsj0oOjTUdfdqgf62hBjyv9K2CI ks3+D5UbGq5v144CZXN4RkzXHCCd3T0YQ4V8nhGanZQ8DGeMN3yTLttZfZcEptqgd5Nm qqOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776951015; x=1777555815; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=oFs1RbQ0XkUdAOvZ3WrAthRL+JhVyLKMhXKejRMG50Q=; b=CLEiYYfSxnyGHcFfkTA16GMT14cP0sHxU8FqFaZcxZkS1imfyWPlPfkwwjRHcGmlZL EDZxVHr1Tfpb1KYp8+aLCYHkgCEGUcvuIyih0tElD+GRwu3gvfYDNrtprgRYP7Fyv4dm LY4TolLQ0yNqjSS385fLCGwD3g95bOQSVyAQKHHcH/N4/QigrCgtwEN+vW6+aUO9kD75 97aec87VVsAw+dm+jdhm2uD7dltNoT4cgutKbtETJlS1f3jENMaVLsWakPk+6kgQe5Sy azmgztMuP9ES9limwY6s+gOECD6EQNN6Cc8MlZX3Q6kJKLIBqmcxRKmXtRBCrAyB52sR OhuA== X-Gm-Message-State: AOJu0Yx5ws+yf0JWPMnjBiPwuvsYBBHymB5EXCdeHtNkVqw2olMEYfe4 6tTDqRtSedwXoF1YiuR5EA4aSZUzTwhkvOWFFZucOWZhNFgRuL1SVKdDIvcKCH+t4K0/I22F3gx x4hgXS/vjEAxfD1dxpZ4217QTScpkxmippXAst6iq825tP/5CEJkw5AELH1zgWvnykQ== X-Gm-Gg: AeBDieus7g3irVcvyafV13Y9o1o+pBpmhRIHTjRr2iZhgPIa3HStAM9rPZZS8YGlYfE z0EBL2l+DpyyHgbk9jYe4x/77Ho0mLf6GEqR1rtfdWVUPjREcEiDAJsyyvUacPP5y9Lt0esBuSF QY68o/xvWP4suW9hqy2jdRo7ixoqlQ8zY3zB+a/brrv21nQgpzHNAZVxZL5RZZGpU1523Dr5eJ9 KvE+XVY/G8YGk0ugnvegv88SIjqQElEzAnaQe05gMy3cQphwsEj2QXZivp6w9qi64RU8KSvc9I8 IliK8cMcT7Ovr2iy9DuUjTZcKoHxuSamhT3NN3PcD/1/xgjeOMIj3NmsJ3175iAYj7b4kXbql/n bCqTW/2Q9IlJPR5DDXAvb7TtnaTFJdiZG948LVsH4lowIzX6R410U7tzgjqGLGiOmUw== X-Received: by 2002:a17:903:1104:b0:2b4:6529:7b9f with SMTP id d9443c01a7336-2b5f9f37032mr302686725ad.26.1776951014832; Thu, 23 Apr 2026 06:30:14 -0700 (PDT) X-Received: by 2002:a17:903:1104:b0:2b4:6529:7b9f with SMTP id d9443c01a7336-2b5f9f37032mr302686055ad.26.1776951014097; Thu, 23 Apr 2026 06:30:14 -0700 (PDT) Received: from hu-bvisredd-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cbaasm198795635ad.54.2026.04.23.06.30.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 06:30:13 -0700 (PDT) From: Vishnu Reddy Date: Thu, 23 Apr 2026 18:59:31 +0530 Subject: [PATCH v2 02/13] drivers: base: Add generic dma context bus Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260423-glymur-v2-2-0296bccb9f4e@oss.qualcomm.com> References: <20260423-glymur-v2-0-0296bccb9f4e@oss.qualcomm.com> In-Reply-To: <20260423-glymur-v2-0-0296bccb9f4e@oss.qualcomm.com> To: Bryan O'Donoghue , Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Joerg Roedel , Will Deacon , Robin Murphy , Bjorn Andersson , Konrad Dybcio , Stefan Schmidt , Hans Verkuil , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Thierry Reding , Mikko Perttunen , David Airlie , Simona Vetter , Jonathan Hunter Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, driver-core@lists.linux.dev, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, Vishnu Reddy , Ekansh Gupta , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776950985; l=5182; i=busanna.reddy@oss.qualcomm.com; s=20260216; h=from:subject:message-id; bh=m9Ev3cg1dRS/apkqmuIWrlLItkWfgL3nCRaQ+GTJ4d8=; b=a0MO/i8o4a8De0o+pVmxc5nct6busfcAWycf0+sRmWbw7J9/KUDBhEJPpZ7lySVphzTFDiOk0 lCbAAc8uQyBCNukA9WgkyrwbsxQ7npM3UxMTlbG7g7ze+2dYMgz8VVH X-Developer-Key: i=busanna.reddy@oss.qualcomm.com; a=ed25519; pk=9vmy9HahBKVAa+GBFj1yHVbz0ey/ucIs1hrlfx+qtok= X-Proofpoint-GUID: vevpv3cWIHGHLcDfP0Qoc1yY702cS8X2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDIzMDEzNCBTYWx0ZWRfX5Muxa0FT9Rf9 OSnT3h/5X7kWTe8r6wSxFVsWa/TmvLezCi1qY3DmTqxzacvZxdVZcV0A/5QF/w0kv6RnoV4HgqR 1bt5gMCPOYNyG29xto3gs0wGxusLB4lOjtLb5pZniITjYgAHgzEeyduSEFgLgX3HpVktAS3mQfw 3PygyTFupZVhqsNrFPf2dV5xwyTZ5dqtJJ0vcVqEhKGDRLCwgxXnjdmEonRyjHxyEIDY8xjrNIU 7uZL0aSo1IQrENz4iQ7BPhg4M819Tf7Q+SGFR7heC2cUSC5E0i7P9JN0Zn65BvfmDdtq1y/aOQv XFiIlEIYLtwL+dXyGQVrQWCr+MzzmFCfe5VMo5PZllso5IJkPIMv2UUL8fagDpy+A3LCXww92CO N0k+nBd9a3YSJympJgV8eHQecxg7NZ0hgqmecVJphpcfGFd/auEus3iRWQ/RvdZAnplnZs8XcJ+ RAZ5PDom8/ahW5UkalQ== X-Proofpoint-ORIG-GUID: vevpv3cWIHGHLcDfP0Qoc1yY702cS8X2 X-Authority-Analysis: v=2.4 cv=Nv7htcdJ c=1 sm=1 tr=0 ts=69ea1ee7 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=nxtABoNUPiTGfhWLCFsA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-23_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 adultscore=0 phishscore=0 malwarescore=0 clxscore=1015 bulkscore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604230134 From: Ekansh Gupta When a driver needs to create virtual device at runtime and map it to an IOMMU context for memory isolation, there is no common bus available for this purpose. Each driver ends up implementing its own bus type, leading to duplicated logic across multiple drivers. host1x driver implemented its own bus type to attach an IOMMU context to a dynamically created device. The Iris VPU driver now has the same requirement. Rather than duplicating the same bus logic again, a shared bus type is introduced under drivers/base that multiple drivers can use directly. The bus takes care of creating a device and attaching the IOMMU context to it based on the client inputs. Suggested-by: Dmitry Baryshkov Signed-off-by: Ekansh Gupta Signed-off-by: Vikash Garodia Signed-off-by: Vishnu Reddy --- drivers/base/Kconfig | 3 ++ drivers/base/Makefile | 1 + drivers/base/dma_context_bus.c | 77 +++++++++++++++++++++++++++++++++++++++++ include/linux/dma_context_bus.h | 26 ++++++++++++++ 4 files changed, 107 insertions(+) diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig index f7d385cbd3ba..499ea92dd88f 100644 --- a/drivers/base/Kconfig +++ b/drivers/base/Kconfig @@ -4,6 +4,9 @@ menu "Generic Driver Options" config AUXILIARY_BUS bool +config DMA_CONTEXT_BUS + bool + config UEVENT_HELPER bool "Support for uevent helper" help diff --git a/drivers/base/Makefile b/drivers/base/Makefile index 8074a10183dc..348e69695e55 100644 --- a/drivers/base/Makefile +++ b/drivers/base/Makefile @@ -8,6 +8,7 @@ obj-y := component.o core.o bus.o dd.o syscore.o \ topology.o container.o property.o cacheinfo.o \ swnode.o faux.o obj-$(CONFIG_AUXILIARY_BUS) += auxiliary.o +obj-$(CONFIG_DMA_CONTEXT_BUS) += dma_context_bus.o obj-$(CONFIG_DEVTMPFS) += devtmpfs.o obj-y += power/ obj-$(CONFIG_ISA_BUS_API) += isa.o diff --git a/drivers/base/dma_context_bus.c b/drivers/base/dma_context_bus.c new file mode 100644 index 000000000000..c2ac189ce08d --- /dev/null +++ b/drivers/base/dma_context_bus.c @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#include +#include + +static atomic_t dma_context_bus_device_id = ATOMIC_INIT(0); + +static int dma_context_bus_device_configure(struct device *dev) +{ + const u32 *iommu_fid = dev_get_drvdata(dev); + struct device_node *of_node = dev->of_node; + + if (!of_node) + of_node = dev->parent->of_node; + + return of_dma_configure_id(dev, of_node, true, iommu_fid); +} + +const struct bus_type dma_context_bus_type = { + .name = "dma-context-bus", + .dma_configure = dma_context_bus_device_configure, +}; +EXPORT_SYMBOL_GPL(dma_context_bus_type); + +static void release_dma_context_bus_device(struct device *dev) +{ + kfree(dev); +} + +struct device *create_dma_context_bus_device(struct device *parent_device, + struct device_node *of_node, + u64 dma_mask, const u32 *iommu_fid) +{ + struct device *dev; + int dev_id, ret; + + dev = kzalloc_obj(*dev); + if (!dev) + return ERR_PTR(-ENOMEM); + + dev->release = release_dma_context_bus_device; + dev->bus = &dma_context_bus_type; + dev->parent = parent_device; + dev->coherent_dma_mask = dma_mask; + dev->dma_mask = &dev->coherent_dma_mask; + dev->of_node = of_node; + + dev_id = atomic_inc_return(&dma_context_bus_device_id); + dev_set_name(dev, "dma-context-bus-%d", dev_id); + dev_set_drvdata(dev, (void *)iommu_fid); + + ret = device_register(dev); + if (ret) { + put_device(dev); + return ERR_PTR(ret); + } + + return dev; +} +EXPORT_SYMBOL_GPL(create_dma_context_bus_device); + +static int __init dma_context_bus_init(void) +{ + int err; + + err = bus_register(&dma_context_bus_type); + if (err) { + pr_err("dma-context-bus registration failed: %d\n", err); + return err; + } + + return 0; +} +postcore_initcall(dma_context_bus_init); diff --git a/include/linux/dma_context_bus.h b/include/linux/dma_context_bus.h new file mode 100644 index 000000000000..3d89594fbce4 --- /dev/null +++ b/include/linux/dma_context_bus.h @@ -0,0 +1,26 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#ifndef _LINUX_DMA_CONTEXT_BUS_H +#define _LINUX_DMA_CONTEXT_BUS_H + +#include + +#ifdef CONFIG_DMA_CONTEXT_BUS +extern const struct bus_type dma_context_bus_type; + +struct device *create_dma_context_bus_device(struct device *parent_device, + struct device_node *of_node, + u64 dma_mask, const u32 *iommu_f_id); +#else +static inline struct device *create_dma_context_bus_device(struct device *parent_device, + struct device_node *of_node, + u64 dma_mask, const u32 *iommu_f_id) +{ + return NULL; +} +#endif + +#endif /* _LINUX_DMA_CONTEXT_BUS_H */ -- 2.34.1