diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2013-11-29 14:25:33 +0100 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2013-12-09 09:19:26 +0100 |
commit | d58ce68a454e5ae9cbde0308def379e272f13b10 (patch) | |
tree | 7e0230097d384f4a63291ec50befe7bef7c0b822 /hw/audio | |
parent | 7f0ba7bb4378f22b017e08947219a352d491bac4 (diff) | |
download | qemu-d58ce68a454e5ae9cbde0308def379e272f13b10.zip qemu-d58ce68a454e5ae9cbde0308def379e272f13b10.tar.gz qemu-d58ce68a454e5ae9cbde0308def379e272f13b10.tar.bz2 |
intel-hda: fix position buffer
Fix position buffer updates to use the correct stream offset.
Without this patch both IN (record) and OUT (playback) streams
will update the IN buffer positions. The linux kernel notices
and complains:
hda-intel: Invalid position buffer, using LPIB read method instead.
The bug may also lead to glitches when recording and playing
at the same time:
https://bugzilla.redhat.com/show_bug.cgi?id=947785
Cc: qemu-stable@nongnu.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw/audio')
-rw-r--r-- | hw/audio/intel-hda.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c index 4327264..6ab8c24 100644 --- a/hw/audio/intel-hda.c +++ b/hw/audio/intel-hda.c @@ -444,6 +444,7 @@ static bool intel_hda_xfer(HDACodecDevice *dev, uint32_t stnr, bool output, } } if (d->dp_lbase & 0x01) { + s = st - d->st; addr = intel_hda_addr(d->dp_lbase & ~0x01, d->dp_ubase); stl_le_pci_dma(&d->pci, addr + 8*s, st->lpib); } |