* [PATCH 1/2] ALSA: emu10k1: fix SNDRV_EMU10K1_IOCTL_SINGLE_STEP
@ 2023-04-22 16:10 Oswald Buddenhagen
2023-04-22 16:10 ` [PATCH 2/2] ALSA: emu10k1: don't stop DSP in _snd_emu10k1_{,audigy_}init_efx() Oswald Buddenhagen
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Oswald Buddenhagen @ 2023-04-22 16:10 UTC (permalink / raw)
To: alsa-devel; +Cc: Takashi Iwai
- Use correct address limit for Audigy
- Use the right constant to actually make a step on Audigy
- Don't store *_DBG_STEP and the address in emu->fx8010.dbg, as
otherwise unrelated operations would make steps, too
This is untested. as10k1 was never ported to Audigy anyway.
Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
---
sound/pci/emu10k1/emufx.c | 24 +++++++++++++-----------
1 file changed, 13 insertions(+), 11 deletions(-)
diff --git a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c
index 6a51aed59238..70ec2cb9efe8 100644
--- a/sound/pci/emu10k1/emufx.c
+++ b/sound/pci/emu10k1/emufx.c
@@ -2646,17 +2646,19 @@ static int snd_emu10k1_fx8010_ioctl(struct snd_hwdep * hw, struct file *file, un
return -EPERM;
if (get_user(addr, (unsigned int __user *)argp))
return -EFAULT;
- if (addr > 0x1ff)
- return -EINVAL;
- if (emu->audigy)
- snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg |= A_DBG_SINGLE_STEP | addr);
- else
- snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg |= EMU10K1_DBG_SINGLE_STEP | addr);
- udelay(10);
- if (emu->audigy)
- snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg |= A_DBG_SINGLE_STEP | A_DBG_STEP_ADDR | addr);
- else
- snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg |= EMU10K1_DBG_SINGLE_STEP | EMU10K1_DBG_STEP | addr);
+ if (emu->audigy) {
+ if (addr > A_DBG_STEP_ADDR)
+ return -EINVAL;
+ snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg |= A_DBG_SINGLE_STEP);
+ udelay(10);
+ snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg | A_DBG_STEP | addr);
+ } else {
+ if (addr > EMU10K1_DBG_SINGLE_STEP_ADDR)
+ return -EINVAL;
+ snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg |= EMU10K1_DBG_SINGLE_STEP);
+ udelay(10);
+ snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg | EMU10K1_DBG_STEP | addr);
+ }
return 0;
case SNDRV_EMU10K1_IOCTL_DBG_READ:
if (emu->audigy)
--
2.40.0.152.g15d061e6df
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] ALSA: emu10k1: don't stop DSP in _snd_emu10k1_{,audigy_}init_efx()
2023-04-22 16:10 [PATCH 1/2] ALSA: emu10k1: fix SNDRV_EMU10K1_IOCTL_SINGLE_STEP Oswald Buddenhagen
@ 2023-04-22 16:10 ` Oswald Buddenhagen
2023-04-22 20:25 ` [PATCH 1/2] ALSA: emu10k1: fix SNDRV_EMU10K1_IOCTL_SINGLE_STEP kernel test robot
2023-04-23 7:34 ` Takashi Iwai
2 siblings, 0 replies; 5+ messages in thread
From: Oswald Buddenhagen @ 2023-04-22 16:10 UTC (permalink / raw)
To: alsa-devel; +Cc: Takashi Iwai
These functions don't actually touch the DSP until they poke the code
into it, at which point it's temporarily stopped anyway. And fx8010.dbg
is already zero anyway.
Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
---
sound/pci/emu10k1/emufx.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c
index 70ec2cb9efe8..b43acf0611a2 100644
--- a/sound/pci/emu10k1/emufx.c
+++ b/sound/pci/emu10k1/emufx.c
@@ -1259,9 +1259,6 @@ static int _snd_emu10k1_audigy_init_efx(struct snd_emu10k1 *emu)
gpr_map[gpr++] = 0x0000ffff;
bit_shifter16 = gpr;
- /* stop FX processor */
- snd_emu10k1_ptr_write(emu, A_DBG, 0, (emu->fx8010.dbg = 0) | A_DBG_SINGLE_STEP);
-
#if 1
/* PCM front Playback Volume (independent from stereo mix)
* playback = 0 + ( gpr * FXBUS_PCM_LEFT_FRONT >> 31)
@@ -1899,9 +1896,6 @@ static int _snd_emu10k1_init_efx(struct snd_emu10k1 *emu)
tmp = 0x88; /* we need 4 temporary GPR */
/* from 0x8c to 0xff is the area for tone control */
- /* stop FX processor */
- snd_emu10k1_ptr_write(emu, DBG, 0, (emu->fx8010.dbg = 0) | EMU10K1_DBG_SINGLE_STEP);
-
/*
* Process FX Buses
*/
--
2.40.0.152.g15d061e6df
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] ALSA: emu10k1: fix SNDRV_EMU10K1_IOCTL_SINGLE_STEP
2023-04-22 16:10 [PATCH 1/2] ALSA: emu10k1: fix SNDRV_EMU10K1_IOCTL_SINGLE_STEP Oswald Buddenhagen
2023-04-22 16:10 ` [PATCH 2/2] ALSA: emu10k1: don't stop DSP in _snd_emu10k1_{,audigy_}init_efx() Oswald Buddenhagen
@ 2023-04-22 20:25 ` kernel test robot
2023-04-23 7:34 ` Takashi Iwai
2 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2023-04-22 20:25 UTC (permalink / raw)
To: Oswald Buddenhagen, alsa-devel; +Cc: oe-kbuild-all, Takashi Iwai
Hi Oswald,
kernel test robot noticed the following build errors:
[auto build test ERROR on tiwai-sound/for-next]
[also build test ERROR on tiwai-sound/for-linus linus/master v6.3-rc7 next-20230421]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Oswald-Buddenhagen/ALSA-emu10k1-don-t-stop-DSP-in-_snd_emu10k1_-audigy_-init_efx/20230423-002213
base: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next
patch link: https://lore.kernel.org/r/20230422161021.1144004-1-oswald.buddenhagen%40gmx.de
patch subject: [PATCH 1/2] ALSA: emu10k1: fix SNDRV_EMU10K1_IOCTL_SINGLE_STEP
config: i386-allyesconfig (https://download.01.org/0day-ci/archive/20230423/202304230435.xkjl2DgF-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
reproduce (this is a W=1 build):
# https://github.com/intel-lab-lkp/linux/commit/dfbd3fc49e3b9ec81160caee29b1d41476d5a6aa
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Oswald-Buddenhagen/ALSA-emu10k1-don-t-stop-DSP-in-_snd_emu10k1_-audigy_-init_efx/20230423-002213
git checkout dfbd3fc49e3b9ec81160caee29b1d41476d5a6aa
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=i386 olddefconfig
make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202304230435.xkjl2DgF-lkp@intel.com/
All errors (new ones prefixed by >>):
sound/pci/emu10k1/emufx.c: In function 'snd_emu10k1_fx8010_ioctl':
>> sound/pci/emu10k1/emufx.c:2654:80: error: 'A_DBG_STEP' undeclared (first use in this function); did you mean 'A_DBG_ZC'?
2654 | snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg | A_DBG_STEP | addr);
| ^~~~~~~~~~
| A_DBG_ZC
sound/pci/emu10k1/emufx.c:2654:80: note: each undeclared identifier is reported only once for each function it appears in
vim +2654 sound/pci/emu10k1/emufx.c
2541
2542 static int snd_emu10k1_fx8010_ioctl(struct snd_hwdep * hw, struct file *file, unsigned int cmd, unsigned long arg)
2543 {
2544 struct snd_emu10k1 *emu = hw->private_data;
2545 struct snd_emu10k1_fx8010_info *info;
2546 struct snd_emu10k1_fx8010_code *icode;
2547 struct snd_emu10k1_fx8010_pcm_rec *ipcm;
2548 unsigned int addr;
2549 void __user *argp = (void __user *)arg;
2550 int res;
2551
2552 switch (cmd) {
2553 case SNDRV_EMU10K1_IOCTL_PVERSION:
2554 emu->support_tlv = 1;
2555 return put_user(SNDRV_EMU10K1_VERSION, (int __user *)argp);
2556 case SNDRV_EMU10K1_IOCTL_INFO:
2557 info = kzalloc(sizeof(*info), GFP_KERNEL);
2558 if (!info)
2559 return -ENOMEM;
2560 snd_emu10k1_fx8010_info(emu, info);
2561 if (copy_to_user(argp, info, sizeof(*info))) {
2562 kfree(info);
2563 return -EFAULT;
2564 }
2565 kfree(info);
2566 return 0;
2567 case SNDRV_EMU10K1_IOCTL_CODE_POKE:
2568 if (!capable(CAP_SYS_ADMIN))
2569 return -EPERM;
2570
2571 icode = memdup_user(argp, sizeof(*icode));
2572 if (IS_ERR(icode))
2573 return PTR_ERR(icode);
2574 res = snd_emu10k1_icode_poke(emu, icode, false);
2575 kfree(icode);
2576 return res;
2577 case SNDRV_EMU10K1_IOCTL_CODE_PEEK:
2578 icode = memdup_user(argp, sizeof(*icode));
2579 if (IS_ERR(icode))
2580 return PTR_ERR(icode);
2581 res = snd_emu10k1_icode_peek(emu, icode);
2582 if (res == 0 && copy_to_user(argp, icode, sizeof(*icode))) {
2583 kfree(icode);
2584 return -EFAULT;
2585 }
2586 kfree(icode);
2587 return res;
2588 case SNDRV_EMU10K1_IOCTL_PCM_POKE:
2589 ipcm = memdup_user(argp, sizeof(*ipcm));
2590 if (IS_ERR(ipcm))
2591 return PTR_ERR(ipcm);
2592 res = snd_emu10k1_ipcm_poke(emu, ipcm);
2593 kfree(ipcm);
2594 return res;
2595 case SNDRV_EMU10K1_IOCTL_PCM_PEEK:
2596 ipcm = memdup_user(argp, sizeof(*ipcm));
2597 if (IS_ERR(ipcm))
2598 return PTR_ERR(ipcm);
2599 res = snd_emu10k1_ipcm_peek(emu, ipcm);
2600 if (res == 0 && copy_to_user(argp, ipcm, sizeof(*ipcm))) {
2601 kfree(ipcm);
2602 return -EFAULT;
2603 }
2604 kfree(ipcm);
2605 return res;
2606 case SNDRV_EMU10K1_IOCTL_TRAM_SETUP:
2607 if (!capable(CAP_SYS_ADMIN))
2608 return -EPERM;
2609 if (get_user(addr, (unsigned int __user *)argp))
2610 return -EFAULT;
2611 mutex_lock(&emu->fx8010.lock);
2612 res = snd_emu10k1_fx8010_tram_setup(emu, addr);
2613 mutex_unlock(&emu->fx8010.lock);
2614 return res;
2615 case SNDRV_EMU10K1_IOCTL_STOP:
2616 if (!capable(CAP_SYS_ADMIN))
2617 return -EPERM;
2618 if (emu->audigy)
2619 snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg |= A_DBG_SINGLE_STEP);
2620 else
2621 snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg |= EMU10K1_DBG_SINGLE_STEP);
2622 return 0;
2623 case SNDRV_EMU10K1_IOCTL_CONTINUE:
2624 if (!capable(CAP_SYS_ADMIN))
2625 return -EPERM;
2626 if (emu->audigy)
2627 snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg = 0);
2628 else
2629 snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg = 0);
2630 return 0;
2631 case SNDRV_EMU10K1_IOCTL_ZERO_TRAM_COUNTER:
2632 if (!capable(CAP_SYS_ADMIN))
2633 return -EPERM;
2634 if (emu->audigy)
2635 snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg | A_DBG_ZC);
2636 else
2637 snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg | EMU10K1_DBG_ZC);
2638 udelay(10);
2639 if (emu->audigy)
2640 snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg);
2641 else
2642 snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg);
2643 return 0;
2644 case SNDRV_EMU10K1_IOCTL_SINGLE_STEP:
2645 if (!capable(CAP_SYS_ADMIN))
2646 return -EPERM;
2647 if (get_user(addr, (unsigned int __user *)argp))
2648 return -EFAULT;
2649 if (emu->audigy) {
2650 if (addr > A_DBG_STEP_ADDR)
2651 return -EINVAL;
2652 snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg |= A_DBG_SINGLE_STEP);
2653 udelay(10);
> 2654 snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg | A_DBG_STEP | addr);
2655 } else {
2656 if (addr > EMU10K1_DBG_SINGLE_STEP_ADDR)
2657 return -EINVAL;
2658 snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg |= EMU10K1_DBG_SINGLE_STEP);
2659 udelay(10);
2660 snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg | EMU10K1_DBG_STEP | addr);
2661 }
2662 return 0;
2663 case SNDRV_EMU10K1_IOCTL_DBG_READ:
2664 if (emu->audigy)
2665 addr = snd_emu10k1_ptr_read(emu, A_DBG, 0);
2666 else
2667 addr = snd_emu10k1_ptr_read(emu, DBG, 0);
2668 if (put_user(addr, (unsigned int __user *)argp))
2669 return -EFAULT;
2670 return 0;
2671 }
2672 return -ENOTTY;
2673 }
2674
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] ALSA: emu10k1: fix SNDRV_EMU10K1_IOCTL_SINGLE_STEP
2023-04-22 16:10 [PATCH 1/2] ALSA: emu10k1: fix SNDRV_EMU10K1_IOCTL_SINGLE_STEP Oswald Buddenhagen
2023-04-22 16:10 ` [PATCH 2/2] ALSA: emu10k1: don't stop DSP in _snd_emu10k1_{,audigy_}init_efx() Oswald Buddenhagen
2023-04-22 20:25 ` [PATCH 1/2] ALSA: emu10k1: fix SNDRV_EMU10K1_IOCTL_SINGLE_STEP kernel test robot
@ 2023-04-23 7:34 ` Takashi Iwai
2023-04-23 7:48 ` Oswald Buddenhagen
2 siblings, 1 reply; 5+ messages in thread
From: Takashi Iwai @ 2023-04-23 7:34 UTC (permalink / raw)
To: Oswald Buddenhagen; +Cc: alsa-devel
On Sat, 22 Apr 2023 18:10:20 +0200,
Oswald Buddenhagen wrote:
>
> - Use correct address limit for Audigy
> - Use the right constant to actually make a step on Audigy
> - Don't store *_DBG_STEP and the address in emu->fx8010.dbg, as
> otherwise unrelated operations would make steps, too
>
> This is untested. as10k1 was never ported to Audigy anyway.
>
> Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Applied both patches now.
Although 0-day bot caught some build error, I couldn't reproduce it,
so took as is. Let's see whether it's broken at some config combo.
thanks,
Takashi
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] ALSA: emu10k1: fix SNDRV_EMU10K1_IOCTL_SINGLE_STEP
2023-04-23 7:34 ` Takashi Iwai
@ 2023-04-23 7:48 ` Oswald Buddenhagen
0 siblings, 0 replies; 5+ messages in thread
From: Oswald Buddenhagen @ 2023-04-23 7:48 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel
On Sun, Apr 23, 2023 at 09:34:55AM +0200, Takashi Iwai wrote:
>Although 0-day bot caught some build error, I couldn't reproduce it,
>so took as is. Let's see whether it's broken at some config combo.
>
undeclared logical dependency on the "fixup DSP defines" patch, i think.
but even without that mistake the bot would croak, because i made my
tooling describe deps in a human-readable way rather than sha1 +
patch-ids. i guess i'll have to include both to make it bot-friendly ...
regards
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-04-23 7:49 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-22 16:10 [PATCH 1/2] ALSA: emu10k1: fix SNDRV_EMU10K1_IOCTL_SINGLE_STEP Oswald Buddenhagen
2023-04-22 16:10 ` [PATCH 2/2] ALSA: emu10k1: don't stop DSP in _snd_emu10k1_{,audigy_}init_efx() Oswald Buddenhagen
2023-04-22 20:25 ` [PATCH 1/2] ALSA: emu10k1: fix SNDRV_EMU10K1_IOCTL_SINGLE_STEP kernel test robot
2023-04-23 7:34 ` Takashi Iwai
2023-04-23 7:48 ` Oswald Buddenhagen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox