Skip to content

[26.04_linux-nvidia-bos] PCI: mirror PI7C9X3G606GPC Port 4 BAR0#443

Open
nirmoy wants to merge 1 commit into
NVIDIA:26.04_linux-nvidia-bosfrom
nirmoy:codex/pericom-msix-bar-war-bos
Open

[26.04_linux-nvidia-bos] PCI: mirror PI7C9X3G606GPC Port 4 BAR0#443
nirmoy wants to merge 1 commit into
NVIDIA:26.04_linux-nvidia-bosfrom
nirmoy:codex/pericom-msix-bar-war-bos

Conversation

@nirmoy
Copy link
Copy Markdown
Collaborator

@nirmoy nirmoy commented May 27, 2026

Summary

  • Backport the PI7C9X3G606GPC Port 4 BAR0 workaround from the 6.17 PR.
  • Add a PCI final/early-resume quirk to mirror the upstream BAR0 value into downstream Port 4 BAR0.
  • Scope the WAR to the Diodes-confirmed OS-visible Tile0/P4 mapping: upstream bus + 1, device 04, function 0.
  • Port 4 BAR0 may read back as zero through normal PCI config space even after a successful write, so the quirk rewrites BAR0 whenever it runs.

Validation

  • Current PR head: a69e886f8becb7608a3ca2e26315d384383c82ab.
  • Local patch checks passed at current head:
    • scripts/checkpatch.pl --strict --ignore GERRIT_CHANGE_ID --git HEAD
    • git diff --check HEAD~1..HEAD
    • make O=/tmp/nv-kernels-pr443-quirks-build -j$(nproc) drivers/pci/quirks.o
  • Previous BOS package validation booted 7.0.0-2007-nvidia-bos-64k on the Quark DUT: OS 172.17.33.143 via jumper 10.22.18.250; BMC 172.17.33.144.
Linux localhost-right 7.0.0-2007-nvidia-bos-64k #7 SMP PREEMPT_DYNAMIC Thu May 28 19:54:58 UTC 2026 aarch64
  • Quirk/topology evidence from the booted BOS kernel:
pci 0002:a1:00.0: BAR 0 [mem 0x10300000-0x1037ffff]
pci 0002:a2:04.0: [12d8:c008] type 01 class 0x060400 PCIe Switch Downstream Port
pci 0002:a3:00.0: [1344:51c3] type 00 class 0x010802 PCIe Endpoint
pci 0002:a1:00.0: BAR 0 [mem 0x10300000-0x1037ffff]: assigned
pci 0002:a2:04.0: wrote upstream BAR 0 0x10300000 to Port 4 BAR 0 for PI7C9X3G606GPC BAR0 mirror workaround
  • Retested the equivalent 6.18 PR code after removing the 64-bit upstream BAR0 skip. The Quark DUT booted 6.18.33-pr447-pericom-no64 and showed the quirk still firing:
pci 0002:a1:00.0: BAR 0 [mem 0x10300000-0x1037ffff]: assigned
pci 0002:a2:04.0: wrote upstream BAR 0 0x10300000 to Port 4 BAR 0 for PI7C9X3G606GPC BAR0 mirror workaround
  • Ran a 300s fio randrw smoke on the NVMe-backed rootfs with the no-64-skip test kernel:
pr447-no64-rootfs-smoke: err= 0
READ: bw=251MiB/s, io=73.6GiB, run=300009msec
WRITE: bw=108MiB/s, io=31.6GiB, run=300009msec
  • Post-fio journalctl -b -k scan for BTRFS error, I/O error, nvme.*timeout, device inaccessible, read-only, blk_update_request, and Buffer I/O error returned no matches.
  • Did not use the BMC/I2C BAR0 readback helper for this validation. The Quark platform owner said that helper uses special CPED/CDEP access that is not supported as routine validation on this platform and can put the PCIe switch into a bad state.

Notes:

  • The 24.04 DUT needed a temporary run-parts compatibility wrapper to run the 26.04 BOS kernel maintscripts, which pass multiple hook directories. The wrapper was removed after package configuration.
  • OFED/DKMS modules on this 24.04 DUT report unsupported test-kernel headers for some test kernels. DKMS hooks were temporarily bypassed only to finish package configuration/initramfs/grub; hooks were restored afterward.

References

Launchpad: https://bugs.launchpad.net/ubuntu/+source/linux-nvidia-6.17/+bug/2154457

6.17 PR: #442
NVBug: https://nvbugspro.nvidia.com/bug/6205517
NVBug: https://nvbugspro.nvidia.com/bug/6134331

@nirmoy nirmoy added the help wanted Extra attention is needed label May 27, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 27, 2026

PR Validation Report

Patchscan ✅ No Missing Fixes

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

PR Lint ✅ All checks passed

Details
Checking 1 commits...

Cherry-pick digest:
┌──────────────┬──────────────────────────────────────────────────────────────────┬────────────┬─────────┬───────────────────────────┐
│ Local        │ Referenced upstream / Patch subject                              │ Patch-ID   │ Subject │ SoB chain                 │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ a69e886f8bec │ [SAUCE] pci: quirks: mirror pi7c9x3g606gpc port 4 bar0           │ N/A        │ N/A     │ nirmoyd                   │
└──────────────┴──────────────────────────────────────────────────────────────────┴────────────┴─────────┴───────────────────────────┘

Lint: all checks passed.

@nirmoy
Copy link
Copy Markdown
Collaborator Author

nirmoy commented May 27, 2026

Boro review

Summary

No issues found across the reviewed commits.

Findings: no problems found

Latest watcher review: open review

Kernel deb build: successful (download debs, 4 files)

Head: a69e886f8bec

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

@nirmoy nirmoy force-pushed the codex/pericom-msix-bar-war-bos branch from ed7f4ba to 5f3ea04 Compare May 28, 2026 13:22
@nirmoy nirmoy marked this pull request as ready for review May 28, 2026 14:17
@nirmoy nirmoy marked this pull request as draft May 28, 2026 15:00
@nirmoy nirmoy removed the help wanted Extra attention is needed label May 28, 2026
@nirmoy nirmoy force-pushed the codex/pericom-msix-bar-war-bos branch 2 times, most recently from b836068 to f171d75 Compare May 28, 2026 20:42
@nirmoy nirmoy marked this pull request as ready for review May 28, 2026 21:01
@nirmoy nirmoy added the help wanted Extra attention is needed label May 28, 2026
@nirmoy nirmoy force-pushed the codex/pericom-msix-bar-war-bos branch 2 times, most recently from 0b64a56 to 24d68b9 Compare May 29, 2026 19:24
Some Pericom/Diodes PI7C9X3G606GPC switches require downstream
Port 4 BAR0 to mirror BAR0 of the immediate upstream port. Firmware may
apply this during boot, but Linux PCI resource assignment can move the
upstream BAR0 and leave Port 4 without the required mirror.

Diodes confirmed that Tile0/P4 is OS-visible as device 04, function 0 on
the bus below the upstream port. Add a final and early resume quirk for
that downstream function. The quirk verifies that the immediate upstream
bridge is the same switch, then writes Port 4 BAR0 from the upstream
BAR0 after resource assignment and during early resume. Port 4 BAR0 may
read back as zero even after a successful write, so the write must be
validated by platform-specific means.

Change-Id: I25f2390bf686109487b60d85d1573f8883e7ad28
Signed-off-by: Nirmoy Das <nirmoyd@nvidia.com>
@nirmoy nirmoy force-pushed the codex/pericom-msix-bar-war-bos branch from 24d68b9 to a69e886 Compare May 29, 2026 19:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

help wanted Extra attention is needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant