devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 0/3] Introduce iommu-map-masked for platform devices
@ 2025-09-28 17:17 Charan Teja Kalla
  2025-09-28 17:17 ` [RFC PATCH 1/3] dtbindings: add binding for iommu-map-masked property Charan Teja Kalla
                   ` (4 more replies)
  0 siblings, 5 replies; 36+ messages in thread
From: Charan Teja Kalla @ 2025-09-28 17:17 UTC (permalink / raw)
  To: joro, will, robin.murphy, saravanak, conor+dt, robh, mchehab, bod,
	krzk+dt, abhinav.kumar, vikash.garodia, dikshita.agarwal
  Cc: linux-media, linux-arm-msm, devicetree, linux-kernel, iommu,
	Charan Teja Kalla

This series introduces a new iommu property called iommu-map-masked(may
be there is a better name), which is used to represent the IOMMU
specifier pairs for each function of a __multi-functional platform
device__, where each function can emit unique master id(s) that can be
associated with individual translation context.

Currently, the iommu configuration - at least for arm architecture-
requires all the functions of a platform device will be represented
under single dt node thus endup in using only a single translation
context.

A simple solution to associate individual translation context for each
function of a device can be through creating per function child nodes in
the device tree, but dt is only to just represent the soc layout to
linux kernel.

Supporting such cases requires a new iommu property called,
iommu-map-masked(taking cue from iommu-map for pci devices) and syntax
is:
   iommu-map-masked = <FUNCTION_ID1 &iommu ID1 MASK1>,
		      <FUNCTION_ID2 &iommu ID2 MASK2>;
NOTE: As an RFC, it is considered that this property always expects 4
cells.

During the probe phase of the driver for a multi-functional device
behind an IOMMU, a child device is instantiated for each FUNCTION_ID.
The call to of_dma_configure_id() on each child sets up the IOMMU
configuration, ensuring that each function of the device is associated
with a distinct translation context.

This property can also be used in association with 'iommus=' when dt
bindings requires the presence of 'iommus=', example[2]. For these
cases, representation will be(on arm64):
   iommus = <&iommu sid mask>; //for default function.
   iommu-map-masked = <FUNCTION_ID &iommu sid mask>;//additional
function.

USECASE [1]:
-----------
Video IP, 32bit, have 2 hardware sub blocks(or can be called as
functions) called as pixel and nonpixel blocks, that does decode and
encode of the video stream. These sub blocks are __configured__ to
generate different stream IDs.

With the classical approach of representing all sids with iommus= end up
in using a single translation context limited to the 4GB. There are
video usecases which needs larger IOVA space, like higher concurrent
video sessions(eg: 32 session and 192MB per session) where 4GB of IOVA
is not sufficient.

For this case, it can be considered as iommus= property can be
associated with pixel functionality and iommu-map-masked= is with
non-pixel or viceversa.

[1] https://lore.kernel.org/all/20250627-video_cb-v3-0-51e18c0ffbce@quicinc.com/

Charan Teja Kalla (3):
  dtbindings: add binding for iommu-map-masked property
  of: create a wrapper for of_map_id()
  of: implment the 'iommu-map-masked' to represent multi-functional
    devices

 .../bindings/media/qcom,sm8550-iris.yaml      | 31 ++++++++++-
 drivers/iommu/of_iommu.c                      | 44 +++++++++++++++
 drivers/of/base.c                             | 55 ++++++++++++++++---
 include/linux/of.h                            | 15 +++++
 4 files changed, 133 insertions(+), 12 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2025-10-19 12:13 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-28 17:17 [RFC PATCH 0/3] Introduce iommu-map-masked for platform devices Charan Teja Kalla
2025-09-28 17:17 ` [RFC PATCH 1/3] dtbindings: add binding for iommu-map-masked property Charan Teja Kalla
2025-09-28 17:17 ` [RFC PATCH 2/3] of: create a wrapper for of_map_id() Charan Teja Kalla
2025-09-28 17:17 ` [RFC PATCH 3/3] of: implment the 'iommu-map-masked' to represent multi-functional devices Charan Teja Kalla
2025-09-28 20:23 ` [RFC PATCH 0/3] Introduce iommu-map-masked for platform devices Rob Herring
2025-10-09  0:26   ` Krzysztof Kozlowski
2025-10-09 12:16     ` Robin Murphy
2025-10-09 13:16       ` Dmitry Baryshkov
2025-10-09 13:14     ` Dmitry Baryshkov
2025-10-09  3:05   ` Vikash Garodia
2025-09-29 10:20 ` Robin Murphy
2025-10-08 19:10   ` Charan Teja Kalla
2025-10-09 10:46     ` Robin Murphy
2025-10-09 13:19       ` Dmitry Baryshkov
2025-10-09 17:03         ` Robin Murphy
2025-10-09 18:25           ` Dmitry Baryshkov
2025-10-10 19:53             ` Charan Teja Kalla
2025-10-10 22:30               ` Rob Herring
2025-10-11  0:54                 ` Dmitry Baryshkov
2025-10-12 20:44               ` Bryan O'Donoghue
2025-10-12 21:57                 ` Bryan O'Donoghue
2025-10-12 22:47                 ` Dmitry Baryshkov
2025-10-13 10:18                   ` Bryan O'Donoghue
2025-10-13 11:20             ` Robin Murphy
2025-10-13 12:31               ` Dmitry Baryshkov
2025-10-14 14:07                 ` Robin Murphy
2025-10-14 18:33                   ` Dmitry Baryshkov
2025-10-15  8:32                   ` Charan Teja Kalla
2025-10-19 12:13                     ` Dmitry Baryshkov
2025-10-14 15:07                 ` Bryan O'Donoghue
2025-10-14 18:35                   ` Dmitry Baryshkov
2025-10-14 20:49                     ` Bryan O'Donoghue
2025-10-14 22:18                       ` Dmitry Baryshkov
2025-10-15  8:53                         ` Bryan O'Donoghue
2025-10-15 21:55                           ` Rob Herring
2025-10-14 22:38                       ` Dmitry Baryshkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).