Skip to content

[26.04_linux-nvidia-bos] Backport Vera I3C v7 support - #519

Draft
nirmoy wants to merge 12 commits into
NVIDIA:26.04_linux-nvidia-bosfrom
nirmoy:codex/vera-i3c-v7-7.0-bos
Draft

[26.04_linux-nvidia-bos] Backport Vera I3C v7 support#519
nirmoy wants to merge 12 commits into
NVIDIA:26.04_linux-nvidia-bosfrom
nirmoy:codex/vera-i3c-v7-7.0-bos

Conversation

@nirmoy

@nirmoy nirmoy commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

Backport the Vera I3C v7 series to the 26.04 BOS 7.0 kernel. The series
adds the I3C core and DesignWare changes needed for Vera/Tegra410, ACPI
matching for the controller, and SPD5118 hwmon support for DDR5
temperature monitoring.

This PR is only for 26.04_linux-nvidia-bos; Vera does not require a
companion non-BOS kernel PR.

The PR contains 10 commits from the series landed in i3c/next, the
required ACPICA LVR prerequisite, and one downstream config commit. It
intentionally omits 7bf5a11dde2c ("hwmon: spd5118: Remove 16-bit
addressing") and adapts the following I3C patch to retain existing
16-bit legacy-addressing support for I2C SPD5118 devices.

Source series: https://lore.kernel.org/r/20260728065955.809445-1-akhilrajeev@nvidia.com

Landed range: 81e7c27b0d5c^..9cd3db0cda47 from i3c/next

Additional prerequisite: f0ee0b0927f7 ("ACPICA: Add LVR to
acrestyp.h")

Backport adaptations for the Linux 7.0 target:

  • use the pre-8d8afa428318 static I3C reattach helper name
  • emit OF and ACPI modaliases for SETAASA devices so modules can autoload
  • retain 16-bit legacy I2C addressing while adding the I3C regmap path
  • fit the ACPI enum include/insertion into the 7.0 layout
  • retain the 7.0 non-freezable workqueue documentation while adding addr_method
  • add the DesignWare clock quirk without importing newer IBI/runtime-PM probe code absent from 7.0

Validation:

  • git diff --check passes against 26.04_linux-nvidia-bos
  • targeted W=1 builds pass for drivers/i3c/i3c.o,
    drivers/i3c/master/dw-i3c-master.o, and drivers/hwmon/spd5118.o
  • the previous missing reattach helper and ACPI lvr compiler errors are fixed
  • annotation parsing resolves CONFIG_I3C, CONFIG_DW_I3C_MASTER, and
    CONFIG_SENSORS_SPD5118 to m for both arm64 BOS flavours and n for amd64

Runtime validation is waiting for Vera hardware with a valid SBIOS for I3C.

LP: https://bugs.launchpad.net/bugs/2139154

@nirmoy
nirmoy force-pushed the codex/vera-i3c-v7-7.0-bos branch from 7702fa0 to f1d8a38 Compare August 3, 2026 10:13
@nirmoy

nirmoy commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator Author

BaseOS Kernel Review

Summary

The series has two I3C build blockers: ACPI code accesses a missing lvr member, and SETAASA calls an undefined helper. It also regresses SPD5118 devices using 16-bit legacy addressing.

Findings: Critical: 0, High: 3, Medium: 1, Low: 4

Latest watcher review: open review

Generated test plan: open test plan

Kernel deb build: failed (failure log, build artifacts)

Head: f1d8a389bddf

This comment is maintained by nv-pr-bot. It is updated when the GitHub watcher publishes a newer review.

@nirmoy
nirmoy marked this pull request as ready for review August 3, 2026 13:17
@nirmoy nirmoy added the help wanted Extra attention is needed label Aug 3, 2026
@jamieNguyenNVIDIA

Copy link
Copy Markdown
Collaborator

@nirmoy: You should target these at the 26.04 branches rather than the 24.04 ones.

@nvmochs

nvmochs commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

@nirmoy: You should target these at the 26.04 branches rather than the 24.04 ones.

And only 7.0-bos since this is a Vera-only item.

@nirmoy
nirmoy marked this pull request as draft August 3, 2026 16:23
@nirmoy nirmoy removed help wanted Extra attention is needed pending_review_comment labels Aug 3, 2026
@nirmoy

nirmoy commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator Author

Ack @jamieNguyenNVIDIA @nvmochs Thanks I didn't notice it.
Thanks @clsotog build CI found the same https://baseos-internal-tools.nvidia.com:4001/reviews/NVIDIA/NV-Kernels/519/debs/build-error.txt. I am waiting for a SBIOS version to test it. I will fix when testing it.

Moved to draft.

@nirmoy nirmoy changed the title [24.04_linux-nvidia-bos-7.0-next] Backport Vera I3C v7 support [26.04_linux-nvidia-bos] Backport Vera I3C v7 support Aug 3, 2026
@nirmoy
nirmoy force-pushed the codex/vera-i3c-v7-7.0-bos branch from f1d8a38 to 362a669 Compare August 3, 2026 16:44
@nirmoy
nirmoy changed the base branch from 24.04_linux-nvidia-bos-7.0-next to 26.04_linux-nvidia-bos August 3, 2026 16:44
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

PR Validation Report

Patchscan ✅ No Missing Fixes

All cherry-picked commits checked — no missing upstream fixes found.

PR Lint ❌ Errors found

Details
Checking 12 commits...

Cherry-pick digest:
┌──────────────┬──────────────────────────────────────────────────────────────────┬────────────┬─────────┬───────────────────────────┐
│ Local        │ Referenced upstream / Patch subject                              │ Patch-ID   │ Subject │ SoB chain                 │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 1d895edca704 │ [SAUCE] [config] enable i3c and spd5118 for tegra410             │ N/A        │ N/A     │ nirmoyd                   │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ b3f6323a2407 │ [SAUCE] hwmon: spd5118: add i3c support                          │ N/A        │ N/A     │ akhilraj, belloni, nirmoy │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 5811b07da3ae │ [SAUCE] i3c: dw-i3c-master: add acpi id for tegra410             │ N/A        │ N/A     │ akhilraj, belloni         │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 7d56e779b41e │ [SAUCE] i3c: dw-i3c-master: add acpi core clock frequency quirk  │ N/A        │ N/A     │ akhilraj, belloni         │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 602308a9ffe3 │ [SAUCE] i3c: dw-i3c-master: add setaasa as supported ccc         │ N/A        │ N/A     │ akhilraj, belloni         │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ f9bc9fa94ac5 │ [SAUCE] i3c: master: match i3c device through dt and acpi        │ N/A        │ N/A     │ akhilraj, belloni, nirmoy │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 4ddb0d80a0e8 │ [SAUCE] i3c: master: add support for devices without pid         │ N/A        │ N/A     │ akhilraj, belloni         │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 4ab3465d3d92 │ [SAUCE] i3c: master: add support for devices using setaasa       │ N/A        │ N/A     │ akhilraj, belloni, nirmoy │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 66d4b620fde8 │ [SAUCE] i3c: master: support acpi enumeration of child devices   │ N/A        │ N/A     │ akhilraj, belloni         │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ ba4c9565bc82 │ f0ee0b0927f7 ACPICA: Add LVR to acrestyp.h                       │ match      │ match   │ preserved + nirmoyd added │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 6eec0b5e55e0 │ [SAUCE] i3c: master: use unified device property interface       │ N/A        │ N/A     │ akhilraj, belloni         │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ 0a766992fe35 │ [SAUCE] dt-bindings: i3c: add mipi-i3c-static-method to support  │ N/A        │ N/A     │ akhilraj, belloni         │
└──────────────┴──────────────────────────────────────────────────────────────────┴────────────┴─────────┴───────────────────────────┘

Lint results:
E: b3f6323a2407 ("hwmon: spd5118: Add I3C support"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 5811b07da3ae ("i3c: dw-i3c-master: Add ACPI ID for Tegra410"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 7d56e779b41e ("i3c: dw-i3c-master: Add ACPI core clock frequency "): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 602308a9ffe3 ("i3c: dw-i3c-master: Add SETAASA as supported CCC"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: f9bc9fa94ac5 ("i3c: master: match I3C device through DT and ACPI"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 4ddb0d80a0e8 ("i3c: master: Add support for devices without PID"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 4ab3465d3d92 ("i3c: master: Add support for devices using SETAASA"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 66d4b620fde8 ("i3c: master: Support ACPI enumeration of child dev"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 6eec0b5e55e0 ("i3c: master: Use unified device property interface"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)
E: 0a766992fe35 ("dt-bindings: i3c: Add mipi-i3c-static-method to su"): not SAUCE/UBUNTU/Revert but has no upstream reference trailer (cherry picked from commit ... or backported from ...)

@nirmoy
nirmoy force-pushed the codex/vera-i3c-v7-7.0-bos branch from 362a669 to f4c5a13 Compare August 3, 2026 16:59
@nirmoy

nirmoy commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator Author

Move to 26.04_linux-nvidia-bos

@nvmochs

nvmochs commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

@nirmoy

  • As these were picked from linux-next, they no longer required the SAUCE prefix.

  • The picks are missing your SOB.

  • A couple of the patches contain annotation notes from you, indicating there were changes during pick. Those should use the "backported from" tag instead of "cherry picked from".


It intentionally omits 7bf5a11dde2c ("hwmon: spd5118: Remove 16-bit addressing") and adapts the following I3C patch to retain existing 16-bit legacy-addressing support for I2C SPD5118 devices.

Can you provide more details?


For "NVIDIA: SAUCE: i3c: master: match I3C device through DT and ACPI" where you have added the modalias support, would it be better for that to be submitted as a separate patch that is also submitted upstream?


One codex finding on the annotations patch...

  • debian.nvidia-bos/config/annotations:189: setting CONFIG_I3C to n on amd64 makes I3C-dependent symbols disappear after olddefconfig, but the annotations still inherit amd64 m policies from debian.master. The build prepare path runs olddefconfig before annotations --check, so amd64 config check will fail.

Relevant mismatches I saw:
CONFIG_AD4062, CONFIG_ADI_I3C_MASTER, CONFIG_CDNS_I3C_MASTER, CONFIG_DW_I3C_MASTER, CONFIG_IIO_ST_LSM6DSX_I3C, CONFIG_INV_ICM45600_I3C, CONFIG_MCTP_TRANSPORT_I3C, CONFIG_MIPI_I3C_HCI, CONFIG_MIPI_I3C_HCI_PCI, CONFIG_REGMAP_I3C, CONFIG_SVC_I3C_MASTER go m/n -> -; CONFIG_I3C_OR_I2C goes m -> y; CONFIG_SENSORS_SPD5118_DETECT goes n -> -.

CONFIG_DW_I3C_MASTER at debian.nvidia-bos/config/annotations:171 should likely use amd64: '-', not n, and the other inherited I3C-dependent policies need amd64 BOS overrides too.

Arm64 resolves as intended:
CONFIG_I3C=m, CONFIG_DW_I3C_MASTER=m, CONFIG_REGMAP_I3C=m, CONFIG_SENSORS_SPD5118=m.

@nirmoy
nirmoy marked this pull request as ready for review August 7, 2026 13:11
@nirmoy nirmoy added help wanted Extra attention is needed pending_review_comment labels Aug 7, 2026
@nirmoy
nirmoy force-pushed the codex/vera-i3c-v7-7.0-bos branch from f4c5a13 to 4842b44 Compare August 7, 2026 13:45
@nirmoy
nirmoy marked this pull request as draft August 7, 2026 13:47
@nirmoy
nirmoy force-pushed the codex/vera-i3c-v7-7.0-bos branch from 4842b44 to 338320b Compare August 7, 2026 13:50
@nirmoy nirmoy removed help wanted Extra attention is needed pending_review_comment labels Aug 7, 2026
@nirmoy
nirmoy force-pushed the codex/vera-i3c-v7-7.0-bos branch from 338320b to a25c399 Compare August 7, 2026 14:34
Add the 'mipi-i3c-static-method' property mentioned in the MIPI I3C
Discovery and Configuration Specification [1] to specify which discovery
method an I3C device supports during bus initialization. The property is
a bitmap, where a bit value of 1 indicates support for that method, and 0
indicates lack of support.

Bit 0: SETDASA CCC (Direct)
Bit 1: SETAASA CCC (Broadcast)
Bit 2: Other CCC (vendor / standards extension)
All other bits are reserved.

It is specifically needed when an I3C device requires SETAASA for the
address assignment. SETDASA will be supported by default if this property
is absent, which means for now the property just serves as a flag to
enable SETAASA, but keep the property as a bitmap to align with the
specifications.

[1] https://www.mipi.org/mipi-disco-for-i3c-download

Reviewed-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
Link: https://patch.msgid.link/20260728065955.809445-2-akhilrajeev@nvidia.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 81e7c27b0d5cb3029fc01374c3a96019d3a9e673 linux-next)
Replace all OF-specific functions with unified device property functions
as a prerequisite to support both ACPI and device tree.

Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
Link: https://patch.msgid.link/20260728065955.809445-3-akhilrajeev@nvidia.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit ee170021bee17124c13f42813607bca553a6b48a linux-next)
Add a new field called lvr to struct acpi_resource_i2c_serialbus.

Link: acpica/acpica@e62e74baf7e0
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://patch.msgid.link/2354060.iZASKD2KPV@rafael.j.wysocki
(cherry picked from commit f0ee0b0)
Signed-off-by: Nirmoy Das <nirmoyd@nvidia.com>
akhilr-nv and others added 9 commits August 7, 2026 08:16
Although the existing subsystem allows host controllers to register
through the ACPI table, it was not possible to describe I3C or I2C
devices when using ACPI. This is because the driver relied on the reg
property to retrieve the PID, static address, etc., whereas ACPI uses
_ADR or serial resources to describe such devices.

Read _ADR and LVR from ACPI resources and extract the data as per the
ACPI specification for an I3C bus. Also read mipi-i3c-static-address as
per the MIPI DISCO specifications [1] to get the static address to be
used.

Enable describing I3C or I2C devices in the ACPI table. This is required
if the device uses a static address or if it needs device-specific
properties.

[1] https://www.mipi.org/mipi-disco-for-i3c-download

Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
Link: https://patch.msgid.link/20260728065955.809445-4-akhilrajeev@nvidia.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit b46a4b3c5d1e312e74e5364a04c283a5c88e0916 linux-next)
Add support for devices using SETAASA, such as SPD5118 and SPD5108
attached to DDR5 memory modules that do not support ENTDAA. Follow the
guidelines proposed by the MIPI Discovery and Configuration
Specification [1] for discovering such devices.

SETAASA (Set All Addresses to Static Address) differs from standard I3C
address assignment that uses ENTDAA or SETDASA to assign dynamic
addresses. Devices using SETAASA assign their pre-defined static addresses
as their dynamic addresses during DAA, and it is not mandatory for these
devices to implement standard CCC commands like GETPID, GETDCR, or GETBCR.
For such devices, it is generally recommended to issue SETHID (specified
by JEDEC JESD300) as a prerequisite for SETAASA to stop HID bit flipping.

[1] https://www.mipi.org/mipi-disco-for-i3c-download

Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
Link: https://www.mipi.org/mipi-disco-for-i3c-download
Link: https://patch.msgid.link/20260728065955.809445-5-akhilrajeev@nvidia.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit bbaf8733b84846897d2d3b997ce650dd2d2539a4 linux-next)
[nirmoy: use the pre-8d8afa428318 static reattach helper name]
Signed-off-by: Nirmoy Das <nirmoyd@nvidia.com>
Devices using SETAASA for address assignment are not required to have
a 48-bit PID according to the I3C specification. Allow such devices to
register and use the static address where PID was required.

Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
Link: https://patch.msgid.link/20260728065955.809445-6-akhilrajeev@nvidia.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit a1dd42fb82fa71bf4cb6462b4803b55d844c1286 linux-next)
SETAASA-based devices cannot always be identified by PID or DCR; the
standard I3C id_table matching may not be applicable. Allow such devices to
match through Device Tree or ACPI.

Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
Link: https://patch.msgid.link/20260728065955.809445-7-akhilrajeev@nvidia.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 3456baa2110c1fa31e7609ace50117346b99c3d4 linux-next)
Signed-off-by: Nirmoy Das <nirmoyd@nvidia.com>
Add SETAASA and SETHID to the supported list of CCC commands for
DesignWare I3C host controller.

SETAASA is a broadcast command that assigns predefined static addresses
to all I3C devices on the bus.

SETHID is to stop HID bit flipping by the SPD Hub to which the SPD devices
are connected. It is a prerequisite command to be sent before SETAASA as
recommended by JESD300-5 and JESD403 sideband bus specifications.

Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
Link: https://patch.msgid.link/20260728065955.809445-8-akhilrajeev@nvidia.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit fc6963aad560aebeb926e677aa26746c42c6223b linux-next)
Some ACPI-enumerated devices like Tegra410 do not expose the controller
core clock through the clk framework. Unlike device tree, ACPI on Arm does
not model clock providers. The hardware is expected to have its clocks
enabled by firmware before the OS takes over.

Make the core clock optional and allow selected ACPI devices to provide the
core clock rate through the "clock-frequency" _DSD property when the core
clock is absent.

Resolve device quirks before acquiring the core clock so platforms without
the ACPI skip-clock quirk still fail probe immediately when the clock is
missing, before any MMIO access.

Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
Link: https://patch.msgid.link/20260728065955.809445-9-akhilrajeev@nvidia.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 0fd9549975b5b8186a78b654e02518113cc2ac93 linux-next)
Update variable names to generic names and add Tegra410 ACPI ID to
support the I3C controller in Tegra410, which is a DesignWare I3C host
controller.

Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
Link: https://patch.msgid.link/20260728065955.809445-10-akhilrajeev@nvidia.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 97d7cfb62a215ed5c64c6e7772545be4afab167f linux-next)
Add a regmap config and a probe function to support I3C-based
communication with SPD5118 devices.

On an I3C bus, SPD5118 devices are enumerated via SETAASA and always
require an ACPI or device tree entry. Device matching is hence through
the OF match tables only and does not need an I3C class match table. The
device identity is verified in the type registers before proceeding to
the common probe function.

Acked-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
Link: https://patch.msgid.link/20260728065955.809445-12-akhilrajeev@nvidia.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit 9cd3db0cda4741befa6de8af94eb371b9ec6d057 linux-next)
[nirmoy: retain legacy 16-bit addressing support for I2C devices]
Signed-off-by: Nirmoy Das <nirmoyd@nvidia.com>
BugLink: https://bugs.launchpad.net/bugs/2139154

Vera uses the Tegra410 DesignWare I3C controller to access SPD5118
temperature sensors on DDR5 memory modules.

Enable CONFIG_I3C, CONFIG_DW_I3C_MASTER, and CONFIG_SENSORS_SPD5118 as
modules for the arm64 NVIDIA BOS flavours. Keep them disabled on amd64,
where the hardware is not present.

Signed-off-by: Nirmoy Das <nirmoyd@nvidia.com>
@nirmoy
nirmoy force-pushed the codex/vera-i3c-v7-7.0-bos branch from a25c399 to 1d895ed Compare August 7, 2026 15:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants