[PATCH 0/3] ALSA: Set max DMA segment size
Hi,
this is a oneliner patches to address the spurious kernel WARNING from DMA debug code for the missing setup of DMA segment size for SG pages.
Takashi
===
Takashi Iwai (3): ALSA: hda: Set max DMA segment size ASoC: SOF: hda: Set max DMA segment size ASoC: intel: skylake: Set max DMA segment size
sound/pci/hda/hda_intel.c | 1 + sound/soc/intel/skylake/skl.c | 1 + sound/soc/sof/intel/hda.c | 1 + 3 files changed, 3 insertions(+)
The recent code refactoring to use the standard DMA helper requires the max DMA segment size setup for SG list management. Without it, the kernel may spew warnings when a large buffer is allocated.
This patch sets up dma_set_max_seg_size() for avoiding spurious warnings.
Fixes: 2c95b92ecd92 ("ALSA: memalloc: Unify x86 SG-buffer handling (take#3)") Cc: stable@vger.kernel.org BugLink: https://github.com/thesofproject/linux/issues/3430 Signed-off-by: Takashi Iwai tiwai@suse.de --- sound/pci/hda/hda_intel.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 917ad9d375b1..572ff0d1fafe 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1941,6 +1941,7 @@ static int azx_first_init(struct azx *chip) dma_bits = 32; if (dma_set_mask_and_coherent(&pci->dev, DMA_BIT_MASK(dma_bits))) dma_set_mask_and_coherent(&pci->dev, DMA_BIT_MASK(32)); + dma_set_max_seg_size(&pci->dev, UINT_MAX);
/* read number of streams from GCAP register instead of using * hardcoded value
The recent code refactoring to use the standard DMA helper requires the max DMA segment size setup for SG list management. Without it, the kernel may spew warnings when a large buffer is allocated.
This patch sets up dma_set_max_seg_size() for avoiding spurious warnings.
Fixes: 2c95b92ecd92 ("ALSA: memalloc: Unify x86 SG-buffer handling (take#3)") Cc: stable@vger.kernel.org BugLink: https://github.com/thesofproject/linux/issues/3430 Signed-off-by: Takashi Iwai tiwai@suse.de --- sound/soc/sof/intel/hda.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/soc/sof/intel/hda.c b/sound/soc/sof/intel/hda.c index c8fb082209ce..1385695d7745 100644 --- a/sound/soc/sof/intel/hda.c +++ b/sound/soc/sof/intel/hda.c @@ -956,6 +956,7 @@ int hda_dsp_probe(struct snd_sof_dev *sdev) dev_dbg(sdev->dev, "DMA mask is 32 bit\n"); dma_set_mask_and_coherent(&pci->dev, DMA_BIT_MASK(32)); } + dma_set_max_seg_size(&pci->dev, UINT_MAX);
/* init streams */ ret = hda_dsp_stream_init(sdev);
On Tue, Feb 15, 2022 at 02:27:55PM +0100, Takashi Iwai wrote:
The recent code refactoring to use the standard DMA helper requires the max DMA segment size setup for SG list management. Without it, the kernel may spew warnings when a large buffer is allocated.
Acked-by: Mark Brown broonie@kernel.org
The recent code refactoring to use the standard DMA helper requires the max DMA segment size setup for SG list management. Without it, the kernel may spew warnings when a large buffer is allocated.
This patch sets up dma_set_max_seg_size() for avoiding spurious warnings.
Fixes: 2c95b92ecd92 ("ALSA: memalloc: Unify x86 SG-buffer handling (take#3)") Cc: stable@vger.kernel.org BugLink: https://github.com/thesofproject/linux/issues/3430 Signed-off-by: Takashi Iwai tiwai@suse.de --- sound/soc/intel/skylake/skl.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c index 148ddf4cace0..aeca58246fc7 100644 --- a/sound/soc/intel/skylake/skl.c +++ b/sound/soc/intel/skylake/skl.c @@ -952,6 +952,7 @@ static int skl_first_init(struct hdac_bus *bus) /* allow 64bit DMA address if supported by H/W */ if (dma_set_mask_and_coherent(bus->dev, DMA_BIT_MASK(64))) dma_set_mask_and_coherent(bus->dev, DMA_BIT_MASK(32)); + dma_set_max_seg_size(bus->dev, UINT_MAX);
/* initialize streams */ snd_hdac_ext_stream_init_all
On 2022-02-15 2:27 PM, Takashi Iwai wrote:
The recent code refactoring to use the standard DMA helper requires the max DMA segment size setup for SG list management. Without it, the kernel may spew warnings when a large buffer is allocated.
This patch sets up dma_set_max_seg_size() for avoiding spurious warnings.
Thanks for accounting for skylake-driver when providing fixes.
Acked-by: Cezary Rojewski cezary.rojewski@intel.com
Fixes: 2c95b92ecd92 ("ALSA: memalloc: Unify x86 SG-buffer handling (take#3)") Cc: stable@vger.kernel.org BugLink: https://github.com/thesofproject/linux/issues/3430 Signed-off-by: Takashi Iwai tiwai@suse.de
sound/soc/intel/skylake/skl.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c index 148ddf4cace0..aeca58246fc7 100644 --- a/sound/soc/intel/skylake/skl.c +++ b/sound/soc/intel/skylake/skl.c @@ -952,6 +952,7 @@ static int skl_first_init(struct hdac_bus *bus) /* allow 64bit DMA address if supported by H/W */ if (dma_set_mask_and_coherent(bus->dev, DMA_BIT_MASK(64))) dma_set_mask_and_coherent(bus->dev, DMA_BIT_MASK(32));
dma_set_max_seg_size(bus->dev, UINT_MAX);
/* initialize streams */ snd_hdac_ext_stream_init_all
On Tue, Feb 15, 2022 at 02:27:56PM +0100, Takashi Iwai wrote:
The recent code refactoring to use the standard DMA helper requires the max DMA segment size setup for SG list management. Without it, the kernel may spew warnings when a large buffer is allocated.
Acked-by: Mark Brown broonie@kernel.org
On Tue, 15 Feb 2022 14:27:53 +0100, Takashi Iwai wrote:
Hi,
this is a oneliner patches to address the spurious kernel WARNING from DMA debug code for the missing setup of DMA segment size for SG pages.
Takashi
===
Takashi Iwai (3): ALSA: hda: Set max DMA segment size ASoC: SOF: hda: Set max DMA segment size ASoC: intel: skylake: Set max DMA segment size
Merged now to for-linus branch.
Takashi
participants (3)
-
Cezary Rojewski
-
Mark Brown
-
Takashi Iwai