[alsa-devel] [PATCH 1/2] ALSA: hda - Fix probing and stuttering on CMI8888 HD-audio controller

Takashi Iwai tiwai at suse.de
Wed Oct 29 08:50:53 CET 2014


At Wed, 29 Oct 2014 07:21:24 +1100,
Geoffrey McRae wrote:
> 
> I can confirm that disable of MSI is required as even Windows 7
> 64bit does not enable this for Intel HDA. Out of curiosity I altered
> the driver to use MSI-X with the same results, interrupts are never
> received even though the PCI caps state that MSI is supported.
> 
> Playback is very poor and stutters if I do not allow snoop by
> commenting out "case AZX_DRIVER_CMEDIA:" in azx_check_snoop_available.

OK, so we have some conflicting results.  Possibly we need non-cached
pages only for CORB/RIRB but leave the stream buffers?  Could you
check the patch below?


thanks,

Takashi

---
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index cfcca4c30d4d..118029d7c6de 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -366,14 +366,15 @@ static void __mark_pages_wc(struct azx *chip, struct snd_dma_buffer *dmab, bool
 {
 	int pages;
 
-	if (azx_snoop(chip))
+	if (azx_snoop(chip) && chip->driver_type != AZX_DRIVER_CMEDIA)
 		return;
 	if (!dmab || !dmab->area || !dmab->bytes)
 		return;
-
 #ifdef CONFIG_SND_DMA_SGBUF
 	if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_SG) {
 		struct snd_sg_buf *sgbuf = dmab->private_data;
+		if (chip->driver_type == AZX_DRIVER_CMEDIA)
+			return;
 		if (on)
 			set_pages_array_wc(sgbuf->page_table, sgbuf->pages);
 		else
@@ -1376,7 +1377,6 @@ static void azx_check_snoop_available(struct azx *chip)
 		snoop = false;
 		break;
 	case AZX_DRIVER_CTHDA:
-	case AZX_DRIVER_CMEDIA:
 		snoop = false;
 		break;
 	}


More information about the Alsa-devel mailing list