diff mbox

ALSA: emu10k1: Rate-limit error messages about page errors

Message ID 20180517180548.6335-1-tiwai@suse.de (mailing list archive)
State New, archived
Headers show

Commit Message

Takashi Iwai May 17, 2018, 6:05 p.m. UTC
The error messages at sanity checks of memory pages tend to repeat too
many times once when it hits, and without the rate limit, it may flood
and become unreadable.  Replace such messages with the *_ratelimited()
variant.

Bugzilla: http://bugzilla.opensuse.org/show_bug.cgi?id=1093027
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/pci/emu10k1/memory.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Maciej S. Szmigiero May 18, 2018, 12:12 p.m. UTC | #1
On 17.05.2018 20:05, Takashi Iwai wrote:
> Bugzilla: http://bugzilla.opensuse.org/show_bug.cgi?id=1093027

FYI: When developing IOMMU workarounds for the snd_emu10k1 driver
I've also hit bugs in AMD IOMMU kernel driver (as far as I can remember
they only shown for <32-bit DMA masks, that is on Live, but not on
Audigy).

The earliest released kernel to have them fixed was probably 4.15.0.

Maciej
Takashi Iwai May 18, 2018, 12:21 p.m. UTC | #2
On Fri, 18 May 2018 14:12:32 +0200,
Maciej S. Szmigiero wrote:
> 
> On 17.05.2018 20:05, Takashi Iwai wrote:
> > Bugzilla: http://bugzilla.opensuse.org/show_bug.cgi?id=1093027
> 
> FYI: When developing IOMMU workarounds for the snd_emu10k1 driver
> I've also hit bugs in AMD IOMMU kernel driver (as far as I can remember
> they only shown for <32-bit DMA masks, that is on Live, but not on
> Audigy).
> 
> The earliest released kernel to have them fixed was probably 4.15.0.

That makes sense, as there have been lots of iova rewrites that
happened in 4.15 development.


thanks,

Takashi
diff mbox

Patch

diff --git a/sound/pci/emu10k1/memory.c b/sound/pci/emu10k1/memory.c
index 5865f3b90b34..dbc7d8d0e1c4 100644
--- a/sound/pci/emu10k1/memory.c
+++ b/sound/pci/emu10k1/memory.c
@@ -248,13 +248,13 @@  search_empty(struct snd_emu10k1 *emu, int size)
 static int is_valid_page(struct snd_emu10k1 *emu, dma_addr_t addr)
 {
 	if (addr & ~emu->dma_mask) {
-		dev_err(emu->card->dev,
+		dev_err_ratelimited(emu->card->dev,
 			"max memory size is 0x%lx (addr = 0x%lx)!!\n",
 			emu->dma_mask, (unsigned long)addr);
 		return 0;
 	}
 	if (addr & (EMUPAGESIZE-1)) {
-		dev_err(emu->card->dev, "page is not aligned\n");
+		dev_err_ratelimited(emu->card->dev, "page is not aligned\n");
 		return 0;
 	}
 	return 1;
@@ -345,7 +345,7 @@  snd_emu10k1_alloc_pages(struct snd_emu10k1 *emu, struct snd_pcm_substream *subst
 		else
 			addr = snd_pcm_sgbuf_get_addr(substream, ofs);
 		if (! is_valid_page(emu, addr)) {
-			dev_err(emu->card->dev,
+			dev_err_ratelimited(emu->card->dev,
 				"emu: failure page = %d\n", idx);
 			mutex_unlock(&hdr->block_mutex);
 			return NULL;