Handling Exception Events - 2.0 English

Versal Adaptive SoC DMA and Bridge Subsystem for PCI Express Product Guide (PG344)

Document ID
PG344
Release Date
2024-06-03
Version
2.0 English

C2H Completion On Invalid Queue

When QDMA receives a Completion on a queue which has an invalid context as indicated by the Valid bit in the C2H CMPT Context, the Completion is silently dropped.

C2H Completion On A Full Ring

The maximum number of Completion entries in the Completion Ring is 2 less than the total number of entries in the Completion Ring. The C2H Completion Context has PIDX and CIDX in it. This allows the QDMA to calculate the number of Completions in the Completion Ring. When the QDMA receives a Completion on a queue that is full, QDMA takes the following actions:

  • Invalidates the C2H Completion Context for that queue.
  • Marks the C2H Completion Context with error.
  • Drops the Completion.
  • If enabled, sends a Status Descriptor marked with error.
  • If enabled and not outstanding, sends an Interrupt.
  • Sends a Marker Response with error.
  • Logs the error in the C2H Error Status Register.

C2H Completion With Descriptor Error

When the QDMA C2H Engine encounters a Descriptor Error, the following actions are taken in the context of the C2H Completion Engine:

  • Invalidates the C2H Completion Context for that queue.
  • Marks the C2H Completion Context with error.
  • Sends the Completion out to the Completion Ring. It is marked with an error.
  • If enabled and not outstanding, sends a Status Descriptor marked with error.
  • If enabled and not outstanding, sends an Interrupt. Note that the Completion Engine can only send an interrupt and/or status descriptor if not outstanding. One implication of this is that if the interrupt happens to be outstanding when the descriptor error is encountered, a queue interrupt will not be sent to the software. Despite that, the error is logged and an error interrupt is still sent, if not masked by the software
  • Sends a Marker Response with error.

C2H Completion With Invalid CIDX

The C2H Completion Engine has logic to detect that the CIDX value in the CIDX update points to an empty location in the Completion Ring. When it detects such error, the C2H Completion Engine:

  • Invalidates the Completion Context.
  • Marks the Completion Context with error.
  • Logs an error in the C2H error status register.

Port ID Mismatch

The CMPT context specifies the port over which CMPTs are expected for that CMPT queue. If the port_id in the incoming CMPT is not the same as the port_id in the CMPT context, the CMPT Engine treats the incoming CMPT as a mis-directed CMPT and drops it. It also logs an error. Note that the CMPT queue is not invalidated when a port_id mismatch occurs.