Skip to content
  • Philippe Mathieu-Daudé's avatar
    be5a8cf3
    hw/audio/intel-hda: Do not ignore DMA overrun errors · be5a8cf3
    Philippe Mathieu-Daudé authored
    
    
    Per the "High Definition Audio Specification" manual (rev. 1.0a),
    section "3.3.30 Offset 5Dh: RIRBSTS - RIRB Status":
    
      Response Overrun Interrupt Status (RIRBOIS):
    
      Hardware sets this bit to a 1 when an overrun occurs in the RIRB.
      An interrupt may be generated if the Response Overrun Interrupt
      Control bit is set.
    
      This bit will be set if the RIRB DMA engine is not able to write
      the incoming responses to memory before additional incoming
      responses overrun the internal FIFO.
    
      When hardware detects an overrun, it will drop the responses which
      overrun the buffer and set the RIRBOIS status bit to indicate the
      error condition. Optionally, if the RIRBOIC is set, the hardware
      will also generate an error to alert software to the problem.
    
    QEMU emulates the DMA engine with the stl_le_pci_dma() calls. This
    function returns a MemTxResult indicating whether the DMA access
    was successful.
    Handle any MemTxResult error as "DMA engine is not able to write the
    incoming responses to memory" and raise the Overrun Interrupt flag
    when this case occurs.
    
    Signed-off-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
    Message-Id: <20211218160912.1591633-2-philmd@redhat.com>
    Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
    be5a8cf3
    hw/audio/intel-hda: Do not ignore DMA overrun errors
    Philippe Mathieu-Daudé authored
    
    
    Per the "High Definition Audio Specification" manual (rev. 1.0a),
    section "3.3.30 Offset 5Dh: RIRBSTS - RIRB Status":
    
      Response Overrun Interrupt Status (RIRBOIS):
    
      Hardware sets this bit to a 1 when an overrun occurs in the RIRB.
      An interrupt may be generated if the Response Overrun Interrupt
      Control bit is set.
    
      This bit will be set if the RIRB DMA engine is not able to write
      the incoming responses to memory before additional incoming
      responses overrun the internal FIFO.
    
      When hardware detects an overrun, it will drop the responses which
      overrun the buffer and set the RIRBOIS status bit to indicate the
      error condition. Optionally, if the RIRBOIC is set, the hardware
      will also generate an error to alert software to the problem.
    
    QEMU emulates the DMA engine with the stl_le_pci_dma() calls. This
    function returns a MemTxResult indicating whether the DMA access
    was successful.
    Handle any MemTxResult error as "DMA engine is not able to write the
    incoming responses to memory" and raise the Overrun Interrupt flag
    when this case occurs.
    
    Signed-off-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
    Message-Id: <20211218160912.1591633-2-philmd@redhat.com>
    Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
Loading