diff options
| author | Kevin Bowling <kbowling@FreeBSD.org> | 2026-08-16 05:48:58 +0000 |
|---|---|---|
| committer | Kevin Bowling <kbowling@FreeBSD.org> | 2026-08-23 03:28:33 +0000 |
| commit | 5e56a1fb09cd3cc2081978dd6508ff5bc7c59eca (patch) | |
| tree | 732745e9e6e7fe55c15047f13725e91a397b051e /mt792x_core.c | |
| parent | ee81cd1d8f5596a6ab4c8eb29009405572cc162b (diff) | |
82580 reports fatal parity and uncorrectable ECC errors through ICR.FER
and its four region PEIND hierarchy. Region specific status registers
identify PCIe, DMA transmit, DMA receive, DMA host, and LAN port
memories that can leave traffic stopped.
Enable the documented DMA, PCIe, packet-buffer, and host-owned LAN
parity and ECC checks only after initializing queue and filter tables.
Leave the flexible filter parity controls under management firmware
ownership. Capture read-clear and RW1C status in the interrupt filter
and keep FER masked until the admin task resolves the event.
Reset for a host-owned region or an unknown FER source. Leave
management-only recovery to firmware. Use CTRL.RST before master
disable because fatal 82580 memory errors can stop PCIe traffic. Do not
use CTRL.DEV_RST: specification update item 9 declares that bit reserved
and says it must always be written as zero. Wait for EEPROM auto read
completion; STATUS bit 21 is reserved on 82580, not PF_RST_DONE.
Validated on an Intel I340-T2 (82580, revision 1). A one queue
port programmed LANPERRCTL as 0x6e00 while a four-queue port programmed
0x7e00, avoiding the RSS checker until RETA is initialized. Both ports
programmed PEINDM 0xf, DTPARC 0x1555, DRPARC and DDPARC 0x55,
PCIEERRCTL 0x5555, and PCIEECCCTL 0x11. Three down/up cycles left all
status and counters clear.
A synthetic ICS.FER event on each function caused exactly one
unknown source reset without advancing the sibling function counters.
Controls were restored, the linked port recovered carrier, and
bidirectional traffic after recovery.
Enabling flexible filter parity checkers before programming their
memories produced genuine LAN region faults with LANPERRSTS bits 0 and
1. Each fault advanced fatal_lan and fatal_resets exactly once, left
the sibling function unchanged, and recovered the port proving hardware
events will trigger the intended recovery.
MFC after: 2 weeks
Sponsored by: BBOX.io
Diffstat (limited to 'mt792x_core.c')
0 files changed, 0 insertions, 0 deletions
