Patch "Revert "ALSA: emu10k1: fix synthesizer sample playback position and caching"" has been added to the 6.8-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    Revert "ALSA: emu10k1: fix synthesizer sample playback position and caching"

to the 6.8-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     revert-alsa-emu10k1-fix-synthesizer-sample-playback-.patch
and it can be found in the queue-6.8 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 7f1b3826b1a7255394d63765c1204c647d496a2b
Author: Oswald Buddenhagen <oswald.buddenhagen@xxxxxx>
Date:   Mon Apr 1 16:58:05 2024 +0200

    Revert "ALSA: emu10k1: fix synthesizer sample playback position and caching"
    
    [ Upstream commit 03f56ed4ead162551ac596c9e3076ff01f1c5836 ]
    
    As already anticipated in the original commit, playback was broken for
    very short samples. I just didn't expect it to be an actual problem,
    because we're talking about less than 1.5 milliseconds here. But clearly
    such wavetable samples do actually exist.
    
    The problem was that for such short samples we'd set the current
    position beyond the end of the loop, so we'd run off the end of the
    sample and play garbage.
    This is a bigger (more audible) problem than the original one, which was
    that we'd start playback with garbage (whatever was still in the cache),
    which would be mostly masked by the note's attack phase.
    
    So revert to the old behavior for now. We'll subsequently fix it
    properly with a bigger patch series.
    Note that this isn't a full revert - the dead code is not re-introduced,
    because that would be silly.
    
    Fixes: df335e9a8bcb ("ALSA: emu10k1: fix synthesizer sample playback position and caching")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=218625
    Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@xxxxxx>
    Message-ID: <20240401145805.528794-1-oswald.buddenhagen@xxxxxx>
    Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/sound/pci/emu10k1/emu10k1_callback.c b/sound/pci/emu10k1/emu10k1_callback.c
index d36234b88fb42..941bfbf812ed3 100644
--- a/sound/pci/emu10k1/emu10k1_callback.c
+++ b/sound/pci/emu10k1/emu10k1_callback.c
@@ -255,7 +255,7 @@ lookup_voices(struct snd_emux *emu, struct snd_emu10k1 *hw,
 		/* check if sample is finished playing (non-looping only) */
 		if (bp != best + V_OFF && bp != best + V_FREE &&
 		    (vp->reg.sample_mode & SNDRV_SFNT_SAMPLE_SINGLESHOT)) {
-			val = snd_emu10k1_ptr_read(hw, CCCA_CURRADDR, vp->ch) - 64;
+			val = snd_emu10k1_ptr_read(hw, CCCA_CURRADDR, vp->ch);
 			if (val >= vp->reg.loopstart)
 				bp = best + V_OFF;
 		}
@@ -362,7 +362,7 @@ start_voice(struct snd_emux_voice *vp)
 
 	map = (hw->silent_page.addr << hw->address_mode) | (hw->address_mode ? MAP_PTI_MASK1 : MAP_PTI_MASK0);
 
-	addr = vp->reg.start + 64;
+	addr = vp->reg.start;
 	temp = vp->reg.parm.filterQ;
 	ccca = (temp << 28) | addr;
 	if (vp->apitch < 0xe400)
@@ -430,9 +430,6 @@ start_voice(struct snd_emux_voice *vp)
 		/* Q & current address (Q 4bit value, MSB) */
 		CCCA, ccca,
 
-		/* cache */
-		CCR, REG_VAL_PUT(CCR_CACHEINVALIDSIZE, 64),
-
 		/* reset volume */
 		VTFT, vtarget | vp->ftarget,
 		CVCF, vtarget | CVCF_CURRENTFILTER_MASK,




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux