(+86) 15013630202 sales@pcie.com

When use FPGA with PCIe, driver offen happen mc-err

Mar 04, 2024

Dear:



  1. We use orin nx with FPGA which connected through PCIe@14160000(PCIe.04).

  2. Driver is simple, disable MMU, and set addr to FPGA, FPGA report a interrupt and then copy data.


Question:

When running with start & stop fpga, there are many mc-err print from kernel log.

From the log, can got:

when hanppen mc-err, the intterrupt need about 2 seconds.

if no mc-err, interrrupt just need about 0.32 seconds


Could you please help to analyze how to avoid this mc-err ?


LOGS:

[ 8691.904678] fpga_irq_handler: -------int acq

[ 8691.909230] fpga_irq_acq_tasklet_func: Flow Mode Interrupt, Disable FPGA Acq

[ 8692.066956] Ioctl_CMD_CONTINUE_ACQ_MODIFY_FREQ: AcqFreeNodes=0 AcqNodeDmaIdx=255 AcqNodeCmpIdx=255 AcqNodeCpuIdx=0

[ 8692.077728] setFpgaDmaStartParam: reset dma addr, cnt = 0, des = 255

[ 8692.084292] Ioctl_CMD_CONTINUE_ACQ_MODIFY_FREQ: Restart FPGA ACQ Dma

[ 8692.224146] fpga_irq_handler: -------int acq

[ 8692.228697] fpga_irq_acq_tasklet_func: Flow Mode Interrupt, Disable FPGA Acq

[ 8692.385106] Ioctl_CMD_CONTINUE_ACQ_MODIFY_FREQ: AcqFreeNodes=0 AcqNodeDmaIdx=255 AcqNodeCmpIdx=255 AcqNodeCpuIdx=0

[ 8692.395873] setFpgaDmaStartParam: reset dma addr, cnt = 0, des = 255

[ 8692.402431] Ioctl_CMD_CONTINUE_ACQ_MODIFY_FREQ: Restart FPGA ACQ Dma

[ 8692.542288] fpga_irq_handler: -------int acq

[ 8692.546834] fpga_irq_acq_tasklet_func: Flow Mode Interrupt, Disable FPGA Acq

[ 8694.517377] Ioctl_CMD_CONTINUE_ACQ_MODIFY_FREQ: AcqFreeNodes=0 AcqNodeDmaIdx=255 AcqNodeCmpIdx=255 AcqNodeCpuIdx=0

[ 8694.528157] setFpgaDmaStartParam: reset dma addr, cnt = 0, des = 255

[ 8694.534728] Ioctl_CMD_CONTINUE_ACQ_MODIFY_FREQ: Restart FPGA ACQ Dma
[ 8694.541286] mc-err: (255) csw_pcie4w: EMEM address decode error
[ 8694.547396] mc-err: status = 0x200100e1; hi_addr_reg = 0x00000000 addr = 0x00000000
[ 8694.555457] mc-err: secure: no, access-type: write
[ 8694.560992] mc-err: (255) csw_pcie4w: EMEM address decode error
[ 8694.567111] mc-err: status = 0x200100e1; hi_addr_reg = 0x00000000 addr = 0x00000000
[ 8694.575181] mc-err: secure: no, access-type: write
[ 8694.582845] mc-err: (255) csw_pcie4w: EMEM address decode error
[ 8694.588950] mc-err: status = 0x200100e1; hi_addr_reg = 0x00000000 addr = 0x00000000
[ 8694.597005] mc-err: secure: no, access-type: write
[ 8694.604680] mc-err: (255) csw_pcie4w: EMEM address decode error
[ 8694.610779] mc-err: status = 0x200100e1; hi_addr_reg = 0x00000000 addr = 0x00000000
[ 8694.618837] mc-err: secure: no, access-type: write
[ 8694.626514] mc-err: Too many MC errors; throttling prints

[ 8694.674583] fpga_irq_handler: -------int acq

[ 8694.679129] fpga_irq_acq_tasklet_func: Flow Mode Interrupt, Disable FPGA Acq

[ 8696.643089] Ioctl_CMD_CONTINUE_ACQ_MODIFY_FREQ: AcqFreeNodes=0 AcqNodeDmaIdx=255 AcqNodeCmpIdx=255 AcqNodeCpuIdx=0

[ 8696.653875] setFpgaDmaStartParam: reset dma addr, cnt = 0, des = 255

[ 8696.660454] Ioctl_CMD_CONTINUE_ACQ_MODIFY_FREQ: Restart FPGA ACQ Dma

[ 8696.667108] mc-err: (255) csw_pcie4w: EMEM address decode error

[ 8696.673246] mc-err: status = 0x200100e1; hi_addr_reg = 0x00000000 addr = 0x00000000

[ 8696.681315] mc-err: secure: no, access-type: write

[ 8696.686708] mc-err: (255) csw_pcie4w: EMEM address decode error

[ 8696.692826] mc-err: status = 0x200100e1; hi_addr_reg = 0x00000000 addr = 0x00000000

[ 8696.700884] mc-err: secure: no, access-type: write

[ 8696.708552] mc-err: (255) csw_pcie4w: EMEM address decode error

[ 8696.714677] mc-err: status = 0x200100e1; hi_addr_reg = 0x00000000 addr = 0x00000000

[ 8696.722751] mc-err: secure: no, access-type: write

[ 8696.730651] mc-err: (255) csw_pcie4w: EMEM address decode error

[ 8696.736798] mc-err: status = 0x200100e1; hi_addr_reg = 0x00000000 addr = 0x00000000

[ 8696.744863] mc-err: secure: no, access-type: write

[ 8696.752232] mc-err: Too many MC errors; throttling prints

[ 8696.800282] fpga_irq_handler: -------int acq


thanks