aboutsummaryrefslogtreecommitdiff
path: root/hw/audio
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2013-11-29 14:25:33 +0100
committerMichael Roth <mdroth@linux.vnet.ibm.com>2014-02-20 21:59:17 -0600
commit97f74de48cbedeb2555ddf85c2cfe822ef8eadb2 (patch)
treebe4d80dd424e50751b7d55962de0de1eea1690c0 /hw/audio
parent30a08ab4e15a5fc810c9b4541456d2ebac68c646 (diff)
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> (cherry picked from commit d58ce68a454e5ae9cbde0308def379e272f13b10) Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Diffstat (limited to 'hw/audio')
-rw-r--r--hw/audio/intel-hda.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c
index 4327264394..6ab8c245d3 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);
}