All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Fuchs <fuchsfl@gmail.com>
To: Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	linux-sound@vger.kernel.org
Cc: Kees Cook <kees@kernel.org>,
	Markus Elfring <elfring@users.sourceforge.net>,
	Adrian McMenamin <adrianmcmenamin@gmail.com>,
	Florian Fuchs <fuchsfl@gmail.com>,
	linux-kernel@vger.kernel.org
Subject: [PATCH] ALSA: sh: aica: Fix spu_memset() stride
Date: Thu, 22 Oct 2026 18:32:41 +0200	[thread overview]
Message-ID: <20261022163241.2504922-1-fuchsfl@gmail.com> (raw)

spu_memset() writes one 32-bit word per iteration, but advances the
destination offset by only one byte. spu_reset() calls it with
0x200000 / 4 words to clear the 2 MiB of sound RAM, so:

 - three out of four writel() calls target an unaligned address. The
   SH4 can't do that. Each one traps and is emulated by the unaligned
   access fixup. This call to spu_memset() causes 393216 unaligned
   accesses, visible in /proc/cpu/alignment.
 - the clear covered only about 512 KiB of sound RAM, not 2 MiB.

Advance the offset by the size of the written word, to clear the full
sound RAM using aligned writes.

Fixes: 198de43d758c ("[ALSA] Add ALSA support for the SEGA Dreamcast PCM device")
Signed-off-by: Florian Fuchs <fuchsfl@gmail.com>
---
The patch has been tested on the hardware and sound is also still
working well, the boot is faster by about 4s due to less unaligned
fixups.

Previously: 7.9s to boot:
[    2.900000] AICA AICA: ALSA Driver for Yamaha AICA Super Intelligent Sound Processor
..
[    7.872000] ALSA device list:
[    7.876000]   #1: Yamaha AICA Super Intelligent Sound Processor for SEGA Dreamcast

After: 3.8s to boot:
[    2.892000] AICA AICA: ALSA Driver for Yamaha AICA Super Intelligent Sound Processor
..
[    3.796000] ALSA device list:
[    3.800000]   #1: Yamaha AICA Super Intelligent Sound Processor for SEGA Dreamcast

 sound/sh/aica.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/sh/aica.c b/sound/sh/aica.c
index 078fc7fc08f9..04f80c8c89c0 100644
--- a/sound/sh/aica.c
+++ b/sound/sh/aica.c
@@ -94,7 +94,7 @@ static void spu_memset(u32 toi, u32 what, int length)
 		local_irq_save(flags);
 		writel(what, toi + SPU_MEMORY_BASE);
 		local_irq_restore(flags);
-		toi++;
+		toi += sizeof(what);
 	}
 }
 

base-commit: c1b1c25de0d6008c3fcabc942fba635ea3693c3f
-- 
2.43.0


             reply	other threads:[~2026-10-22 16:46 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-22 16:32 Florian Fuchs [this message]
2026-10-22 20:48 ` [PATCH] ALSA: sh: aica: Fix spu_memset() stride Adrian McMenamin
2026-10-23 13:41 ` Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261022163241.2504922-1-fuchsfl@gmail.com \
    --to=fuchsfl@gmail.com \
    --cc=adrianmcmenamin@gmail.com \
    --cc=elfring@users.sourceforge.net \
    --cc=kees@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.