From d58ce68a454e5ae9cbde0308def379e272f13b10 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Fri, 29 Nov 2013 14:25:33 +0100 Subject: 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 --- hw/audio/intel-hda.c | 1 + 1 file changed, 1 insertion(+) (limited to 'hw/audio/intel-hda.c') 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); } -- cgit v1.1