Skip to contentSkip to conversation

sound fix for 3.1

GIT PULL Takashi Iwai 2 participants 4 messages Oct 2, 2011 – Oct 25, 2011 Sound

lore
Share & tools
lore
#0 lore raw

Linus,

please pull a sound fix for v3.1 from:

git://github.com/tiwai/sound.git for-linus

The only commit to pull is 798cb7e897210dbf827f69a302c0967e0380ebac, a fix for a regression introduced in 3.1-rc.

Thanks!

Takashi

===

Takashi Iwai (1):
ALSA: hda - Fix a regression of the position-buffer check

---
 sound/pci/hda/hda_intel.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
sound/pci/hda/hda_intel.c +5 -4
index be69822..e9a2a87 100644
@@ -1924,7 +1924,8 @@ static unsigned int azx_via_get_position(struct azx *chip,
 }
 
 static unsigned int azx_get_position(struct azx *chip,
-				     struct azx_dev *azx_dev)
+				     struct azx_dev *azx_dev,
+				     bool with_check)
 {
 	unsigned int pos;
 	int stream = azx_dev->substream->stream;
@@ -1940,7 +1941,7 @@ static unsigned int azx_get_position(struct azx *chip,
 	default:
 		/* use the position buffer */
 		pos = le32_to_cpu(*azx_dev->posbuf);
-		if (chip->position_fix[stream] == POS_FIX_AUTO) {
+		if (with_check && chip->position_fix[stream] == POS_FIX_AUTO) {
 			if (!pos || pos == (u32)-1) {
 				printk(KERN_WARNING
 				       "hda-intel: Invalid position buffer, "
@@ -1964,7 +1965,7 @@ static snd_pcm_uframes_t azx_pcm_pointer(struct snd_pcm_substream *substream)
 	struct azx *chip = apcm->chip;
 	struct azx_dev *azx_dev = get_azx_dev(substream);
 	return bytes_to_frames(substream->runtime,
-			       azx_get_position(chip, azx_dev));
+			       azx_get_position(chip, azx_dev, false));
 }
 
 /*
@@ -1987,7 +1988,7 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev)
 		return -1;	/* bogus (too early) interrupt */
 
 	stream = azx_dev->substream->stream;
-	pos = azx_get_position(chip, azx_dev);
+	pos = azx_get_position(chip, azx_dev, true);
 
 	if (WARN_ONCE(!azx_dev->period_bytes,
 		      "hda-intel: zero azx_dev->period_bytes"))
#1 lore raw

Hi,

Quoted 2 lines · Takashi Iwai

The only commit to pull is 798cb7e897210dbf827f69a302c0967e0380ebac, a fix for a regression introduced in 3.1-rc.

Unfortunately that fix causes problems in audio playback for me. The audio seems to play faster and have rather large skips.

Reverting that commit ontop of v3.1-rc10-2-gfb630b9 fixes that problem for me.

05:00.0 Audio device: Creative Labs [SB X-Fi Xtreme Audio] CA0110-IBG
Subsystem: Creative Labs SB1040
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (500ns min, 5000ns max)
Interrupt: pin A routed to IRQ 16
Region 0: Memory at fb9fc000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [dc] Power Management version 3
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: snd_hda_intel

Anything more you need?

Greetings,

Andres

#2 lore raw

At Tue, 25 Oct 2011 09:02:46 +0200,

Quoted 26 lines · Andres Freund

Hi,

Quoted 2 lines · Takashi Iwai

The only commit to pull is 798cb7e897210dbf827f69a302c0967e0380ebac, a fix for a regression introduced in 3.1-rc.

Unfortunately that fix causes problems in audio playback for me. The audio seems to play faster and have rather large skips.

Reverting that commit ontop of v3.1-rc10-2-gfb630b9 fixes that problem for me.

05:00.0 Audio device: Creative Labs [SB X-Fi Xtreme Audio] CA0110-IBG
Subsystem: Creative Labs SB1040
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (500ns min, 5000ns max)
Interrupt: pin A routed to IRQ 16
Region 0: Memory at fb9fc000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [dc] Power Management version 3
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: snd_hda_intel

Quoted 1 line

Anything more you need?

Grrr, I hate this endless madness with the DMA position...

Could you try position_fix=1 or position_fix=2 option whether it fixes the problem? If position_fix=1 works, try the patch below without the option.

thanks,

Takashi

---

sound/pci/hda/hda_intel.c +2 -2
index bd7fc99..096507d 100644
@@ -3063,12 +3063,12 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
 	  .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8,
 	  .class_mask = 0xffffff,
 	  .driver_data = AZX_DRIVER_CTX | AZX_DCAPS_CTX_WORKAROUND |
-	  AZX_DCAPS_RIRB_PRE_DELAY },
+	  AZX_DCAPS_RIRB_PRE_DELAY | AZX_DCAPS_POSFIX_LPIB },
 #else
 	/* this entry seems still valid -- i.e. without emu20kx chip */
 	{ PCI_DEVICE(0x1102, 0x0009),
 	  .driver_data = AZX_DRIVER_CTX | AZX_DCAPS_CTX_WORKAROUND |
-	  AZX_DCAPS_RIRB_PRE_DELAY },
+	  AZX_DCAPS_RIRB_PRE_DELAY | AZX_DCAPS_POSFIX_LPIB },
 #endif
 	/* Vortex86MX */
 	{ PCI_DEVICE(0x17f3, 0x3010), .driver_data = AZX_DRIVER_GENERIC },
#3 lore raw

Hi,

Quoted 35 lines · On Tuesday 25 Oct 2011 10:30:20 Takashi Iwai wrote:
Quoted 35 lines · Takashi Iwai
Quoted 2 lines

The only commit to pull is 798cb7e897210dbf827f69a302c0967e0380ebac, a fix for a regression introduced in 3.1-rc.

Unfortunately that fix causes problems in audio playback for me. The audio seems to play faster and have rather large skips.

Reverting that commit ontop of v3.1-rc10-2-gfb630b9 fixes that problem for me.

05:00.0 Audio device: Creative Labs [SB X-Fi Xtreme Audio] CA0110-IBG

Subsystem: Creative Labs SB1040
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-

Stepping- SERR- FastB2B- DisINTx-

Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-

<TAbort- <MAbort- >SERR- <PERR- INTx-

Latency: 64 (500ns min, 5000ns max)
Interrupt: pin A routed to IRQ 16
Region 0: Memory at fb9fc000 (32-bit, non-prefetchable) [size=16K] Capabilities: [dc] Power Management version 3

Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA

PME(D0-,D1-,D2-,D3hot-,D3cold-)

Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-

Kernel driver in use: snd_hda_intel

Quoted 7 lines
Quoted 1 line

Anything more you need?

Grrr, I hate this endless madness with the DMA position...

Could you try position_fix=1 or position_fix=2 option whether it fixes the problem? If position_fix=1 works, try the patch below without the option.

Will do as soon as I am home again (~7 hours from now).

Andres