Visible to Intel only — GUID: idk1571194744555
Ixiasoft
1. About this Document
2. System Requirements
3. Hardware Installation
4. Installing the OPAE Software
5. OPAE Tools
6. Sample Test: Native Loopback
7. Installing the Intel XL710 Driver
8. Configuring Ethernet Interfaces
9. Testing Network Loopback Using Data Plane Development Kit (DPDK)
10. Graceful Shutdown
11. Single Event Upset (SEU)
12. Document Revision History for Intel Acceleration Stack User Guide: Intel® FPGA PAC N3000
A. Troubleshooting
B. Upgrade your Intel® FPGA PAC N3000 with Production Version of BMC and Intel® Arria® 10 Image
C. Configure the 4.19 Kernel
D. fpgabist Sample Output
Visible to Intel only — GUID: idk1571194744555
Ixiasoft
11.2. DPDK Handling of SEU
When the SEU errors occur, an interrupt is generated in DPDK IFPGA Rawdev driver which supports FPGA management. The interrupt handler is defined in the file $RTE_SDK/drivers/raw/ifpga/ifpga_rawdev.c as:
static void
fme_interrupt_handler(void *param)
{
struct opae_manager *mgr = (struct opae_manager *)param;
IFPGA_RAWDEV_PMD_INFO("%s interrupt occurred\n", __func__);
fme_err_handle_error0(mgr);
fme_err_handle_nonfaterror(mgr);
fme_err_handle_catfatal_error(mgr);
}
The function fme_err_handle_catfatal_error(mgr) handles the SEU error by causing a panic through rte_panic() function call. The implementation of this interrupt handler is provided as reference code and can be customized.
When a SEU event occurs, you receive a panic message while running the DPDK application using the following command:
$ sudo ./x86_64-native-linuxapp-gcc/app/testpmd -l 0,1,2,3,4,5,6,7 -n 4 \
--vdev 'ifpga_rawdev_cfg0,ifpga=15:00.0,port=0' -- -i --no-numa
Figure 25. Panic Message
To recover from the SEU panic which is caused by the reference SEU event interrupt handler, follow these steps:
- Unbind from vfio driver:
sudo rmmod vfio-pci
- Rebind to OPAE driver:
modprobe intel-fpga-pci echo 0000:BB:DD.F > /sys/bus/pci/drivers/intel-fpga-pci/bind
- Re-configure the FPGA:
- Extract the N3000_supplemental_files.zip which is provided as part of the Acceleration Stack Installer:
$ unzip N3000_supplemental_files.zip
$ cd N3000_supplemental_files/
- Find PCIe Root Port:
Sample output:$ chmod +x find_RP.sh
The first entry in the list is the PCIe Root port. The last entry is the Intel® FPGA PAC N3000.0000:ae:00.0 0000:af:00.0 0000:b0:09.0 0000:b2:00.0 -> intel-fpga-dev.0
- Record the RP AER value:
$ sudo setpci -s ae:00.0 ECAP_AER+0x08.L 00210000
$ sudo setpci -s ae:00.0 ECAP_AER+0x14.L 000031c1
Note: Your AER values may differ from the above responses. - Disable AER:
$ sudo setpci -s <RP BDF> ECAP_AER+0x08.L=0xffffffff
$ sudo setpci -s <RP BDF> ECAP_AER+0x14.L=0xffffffff
- Trigger re-configure FPGA:
$ sudo rsu fpga b2:00.0
- Enable AER , use the values obtained from step 3b:
$ sudo setpci -s <RP BDF> ECAP_AER+0x08.L=0x00210000
$ sudo setpci -s <RP BDF> ECAP_AER+0x14.L=0x000031c1
- Extract the N3000_supplemental_files.zip which is provided as part of the Acceleration Stack Installer:
- Install vfio-pci driver.
$ sudo modprobe vfio-pci
- Bind all ports to the vfio-pci driver and restart the DPDK application.