[haiku-commits] Re: haiku: hrev47800 - src/add-ons/kernel/drivers/audio/hda

  • From: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 03 Sep 2014 09:41:08 -0500

On , julian.harnath@xxxxxxxxxxxxxx wrote:
hrev47800 adds 4 changesets to branch 'master'
old head: 952aff674e07c1d0b3777ecec9622386dbc9f3e8
new head: ec8fc5ee39bac3272d3223f8bc66ff5bb48bfd92
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=ec8fc5e+%5E952aff6

----------------------------------------------------------------------------


ec8fc5e: Use uncached memory areas if snooping is not possible

  * Some chipsets do not support bus-snooping for the HDA data
    transfers. So, when trying to enable snooping, verify that the
    setting was accepted.

  * When snooping is not possible, set memory areas for audio buffers,
    buffer descriptor lists and command ring-buffers as uncached to
    ensure memory coherency with the HDA controller.

  * This fixes KDLs during booting on some systems where snooping
    is not supported (seen on two systems with AMD chipsets, maybe
    applies to others as well).
    After setting up the buffer descriptor list for a stream, it was a
    gamble whether these writes would be visible to the HDA controller
    when subsequently enabling the stream. On some boots it was unlucky
    and then the HDA controller's DMA engine would go haywire and start
    overwriting random kernel memory with audio input data. The
    scheduler was usually the first victim and caused page fault KDLs
    due to corrupted data structures.

[ Julian Harnath <julian.harnath@xxxxxxxxxxxxxx> ]

Wow! *Really* nice catch! I wonder if that is what was causing some of the AMD
crashing?

 -- Alex

Other related posts: