[alsa-devel] [PATCH v2 00/27] Revised full patchset for PCM in-kernel copy support
Takashi Sakamoto
o-takashi at sakamocchi.jp
Fri Jun 2 09:13:10 CEST 2017
On Jul 02 2017 05:58, Takashi Iwai wrote:
> Hi,
>
> this is a full patchset of what I sent previously, containing the all
> changes instead of the snippet. The main purpose of this patchset is
> to eliminate the remaining usages of set_fs(). They are basically
> used for in-kernel PCM data transfer, and this patch provides the new
> API functions and replaces the hackish set_fs() calls with them.
>
> Unlike the first patchset with the unified copy_silence ops, this adds
> a new copy_kernel ops instead. At the same time, copy/silence are
> changed to receive the position and size in bytes instead of frames.
> This allows us to simplify the PCM core code. As a result, a good
> amount of code could be removed from pcm_lib.c.
>
> The difference from the previous patchset is that this is a full
> patchset, i.e. all relevant drivers have been covered, and also some
> small issues have been addressed, in addition, the documentation
> update is provided, too.
>
> I'm Cc'ing the media and the USB people since it touches solo6x10 and
> usb-gadget drivers.
>
> The previous ACK was dropped as each patch was rewritten again. Sorry
> for the doubly patch-review labours.
>
>
> thanks,
>
> Takashi
>
> ===
>
> Takashi Iwai (26):
> ALSA: pcm: Introduce copy_user, copy_kernel and fill_silence ops
Below commits look good to me.
> ALSA: dummy: Convert to new PCM copy ops
> ALSA: es1938: Convert to the new PCM copy ops
> ALSA: nm256: Convert to new PCM copy ops
> ALSA: korg1212: Convert to the new PCM ops
> ALSA: rme32: Convert to the new PCM copy ops
> ALSA: rme96: Convert to the new PCM ops
> ALSA: rme9652: Convert to the new PCM ops
> ALSA: hdsp: Convert to the new PCM ops
> ALSA: gus: Convert to the new PCM ops
> ALSA: sb: Convert to the new PCM ops
> ALSA: sh: Convert to the new PCM ops
> ASoC: blackfin: Convert to the new PCM ops
> [media] solo6x10: Convert to the new PCM ops
> ALSA: pcm: Drop the old copy and silence ops
> ALSA: pcm: Check PCM state by a common helper function
> ALSA: pcm: Shuffle codes
> ALSA: pcm: Call directly the common read/write helpers
> ALSA: pcm: More unification of PCM transfer codes
> ALSA: pcm: Unify read/write loop
> ALSA: pcm: Simplify snd_pcm_playback_silence()
> ALSA: pcm: Direct in-kernel read/write support
> usb: gadget: u_uac1: Kill set_fs() usage
> ALSA: pcm: Kill set_fs() in PCM OSS layer
> ALSA: pcm: Build OSS writev/readv helpers conditionally
> ALSA: doc: Update copy_user, copy_kernel and fill_silence PCM ops
Reviewed-by: Takashi Sakamoto <o-takashi at sakamocchi.jp>
I did easy test with snd-hda-intel/snd-fireworks in below conditions.
Things work well:
1. ALSA application (aplay/arecord) for '__user *' <-> '__kernel *' copying.
2. loaded snd-oss-pcm and an Open Sound System application
(ossplay/ossrecord), for '__kernel *' <-> '__kernel *' copying.
I have no devices for which drivers have the .copy_user, .copy_kernel
and .fill_silence, and all of my attemps to work with OTG chip for v4.12
fails (sigh...). My test is not comprehensive at all, however the
patchset is programmed with handler-oriented ways and in this point I
think snd-pcm works as expected.
I note that patch 19 brings merge conflict to current HEAD
ee6f4cde4f74("Merge branch 'for-linus'"), due to my patch,
2c4842d3b6b3("ALSA: pcm: add local header file for snd-pcm module"). I
should have postponed it.. For the above test, I handy modifies the
history with little affections for my reviewing.
> .../sound/kernel-api/writing-an-alsa-driver.rst | 111 ++--
> drivers/media/pci/solo6x10/solo6x10-g723.c | 32 +-
> drivers/usb/gadget/function/u_uac1.c | 7 +-
> include/sound/pcm.h | 80 ++-
> sound/core/oss/io.c | 4 +-
> sound/core/oss/pcm_oss.c | 81 +--
> sound/core/oss/pcm_plugin.h | 6 +-
> sound/core/pcm_lib.c | 564 ++++++++-------------
> sound/drivers/dummy.c | 20 +-
> sound/isa/gus/gus_pcm.c | 97 ++--
> sound/isa/sb/emu8000_pcm.c | 190 ++++---
> sound/pci/es1938.c | 33 +-
> sound/pci/korg1212/korg1212.c | 112 ++--
> sound/pci/nm256/nm256.c | 57 ++-
> sound/pci/rme32.c | 65 ++-
> sound/pci/rme96.c | 70 ++-
> sound/pci/rme9652/hdsp.c | 67 ++-
> sound/pci/rme9652/rme9652.c | 71 ++-
> sound/sh/sh_dac_audio.c | 54 +-
> sound/soc/blackfin/bf5xx-ac97-pcm.c | 27 +-
> sound/soc/blackfin/bf5xx-i2s-pcm.c | 36 +-
> sound/soc/soc-pcm.c | 5 +-
> 22 files changed, 977 insertions(+), 812 deletions(-)
Regards
Takashi Sakamoto
More information about the Alsa-devel
mailing list