Skip to content

fix roi bar controller integration#80

Merged
sercanarga merged 10 commits into
sercanarga:integration/roi-73-78from
NetVar1337:fix/roi-73-78-final
Jul 11, 2026
Merged

fix roi bar controller integration#80
sercanarga merged 10 commits into
sercanarga:integration/roi-73-78from
NetVar1337:fix/roi-73-78-final

Conversation

@NetVar1337

Copy link
Copy Markdown
Contributor

summary

  • compose normalized reads and UR completions with multibar response routing
  • restore lifecycle, MSI/MSI-X, HDA, and DMA service wiring
  • fix NVMe doorbell stride, MSI-only delivery, and HDA delayed writes
  • reset transaction and BAR response state on FLR

affected modules

  • generated BAR controller and device BAR implementation
  • NVMe, HDA, MSI-X, generic, and multibar RTL validation

go test ./... and go vet ./... pass with Verilator 5.032.

@NetVar1337 NetVar1337 force-pushed the fix/roi-73-78-final branch from 4756661 to de6d230 Compare July 11, 2026 04:25
@sercanarga

Copy link
Copy Markdown
Owner

every audio build: bar_controller.sv.tmpl declares hda_tlp_tx_{tdata,tkeepdw,tvalid,tlast,tuser} but not hda_tlp_tx_tready. it's only used (~842) and assigned (~1183), so under `default_nettype none it errors "signal not found". one-line wire fix, verified locally, all 9 audio cells go green.

worth pointing your ai at: go test and vet pass on both our machines, but only hdl-lint.sh caught it. the go verilator sims test blocks in isolation and never elaborate the full audio controller as --top-module. good one for your ai to reason about closing (a top-level elaboration per device class?) so full-controller structural bugs stop slipping past go test.

fwiw on 5.048 one new test fails on a dotted tlps_ur.source modport ref its dut makes. 5.032 allows it. not firmware.

please also ask for a comprehensive sv analysis and bug fix for this branch.

@sercanarga sercanarga merged commit 90709ae into sercanarga:integration/roi-73-78 Jul 11, 2026
sercanarga added a commit that referenced this pull request Jul 11, 2026
… reference

Batch 1 from comparison with 16SalomonArs/Pcileech-DMA-NVMe-VMD (per-area, base-independent):
- SMART: live Critical Warning byte (temp>=343 sets bit1, media errors bit2);
  temperature sensors at dword idx 50/51; cumulative warning/critical composite
  temp time at idx 48/49 (saturating).
- I/O: MDTS cap (MAX_XFER_DW=8192 / 32KiB) rejects oversized read/write/write-
  zeroes with INVALID_FIELD; PRP list walk rejects >512 entries.
- DSM: opcode 0x09 with Deallocate bit now invalidates backing-cache slots in
  the range (wires the existing S_DSM_* path) so post-TRIM reads return zero.
- Admin: Set/Get Features persist + validate FIDs 0x01/0x02/0x04/0x06/0x07/
  0x08/0x09/0x0A/0x0B; unknown FIDs return INVALID_FIELD (was silent success).
- MSI-X: vector-control dword write masked to bit 0 (bits 31:1 read 0, spec).
- README: VMD / Intel RST host placement guidance (class 010802, VMD-mapped port).

No port/PBA/interrupt-delivery changes; #75/#80 contracts preserved.
go test -race ./... green (27 pkgs); hdl-lint: 170 total, 0 fail.
sercanarga added a commit that referenced this pull request Jul 11, 2026
… reference

Batch 1 from comparison with 16SalomonArs/Pcileech-DMA-NVMe-VMD (per-area, base-independent):
- SMART: live Critical Warning byte (temp>=343 sets bit1, media errors bit2);
  temperature sensors at dword idx 50/51; cumulative warning/critical composite
  temp time at idx 48/49 (saturating).
- I/O: MDTS cap (MAX_XFER_DW=8192 / 32KiB) rejects oversized read/write/write-
  zeroes with INVALID_FIELD; PRP list walk rejects >512 entries.
- DSM: opcode 0x09 with Deallocate bit now invalidates backing-cache slots in
  the range (wires the existing S_DSM_* path) so post-TRIM reads return zero.
- Admin: Set/Get Features persist + validate FIDs 0x01/0x02/0x04/0x06/0x07/
  0x08/0x09/0x0A/0x0B; unknown FIDs return INVALID_FIELD (was silent success).
- MSI-X: vector-control dword write masked to bit 0 (bits 31:1 read 0, spec).
- README: VMD / Intel RST host placement guidance (class 010802, VMD-mapped port).

No port/PBA/interrupt-delivery changes; #75/#80 contracts preserved.
go test -race ./... green (27 pkgs); hdl-lint: 170 total, 0 fail.
sercanarga added a commit that referenced this pull request Jul 11, 2026
Batch 2 (generator-contained parts) from NVMe-VMD reference comparison:
- AER (opcode 0x0C) is now asynchronous: latch cmd_cid + aer_registered,
  consume the SQE without posting a CQE; post the deferred completion from
  S_IDLE when an async event fires (SMART critical warning -> event_info
  0x2). Duplicate AER while registered returns INVALID_FIELD. New states
  S_AER_POST/S_AER_FINISH; regs cleared on rst / cc_reset / shutdown.
  Fixes the prior behavior of bumping aer_pending and returning with no
  completion, which left the host's AER command pending forever.
- cfgspace DWORD1 writemask 0xFFFFFFFF -> 0x7D00FFFF: Command fully
  writable; Status W1C error bits (8,10-14) stay writable; Status RO bits
  (Capabilities List, 66MHz, DEVSEL, FBTB, reserved) are now read-only so
  a host CfgWr of 0 can no longer permanently clear them (identity/detection
  risk). Full 3-way W1C shadow still needs the upstream pcileech-fpga
  submodule mem_wrap change (deferred).

#75/#80 contracts preserved (no msix_vector_select; irq_delivery intact).
go test -race ./... green (27 pkgs); hdl-lint: 170 total, 0 fail.
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.

2 participants