[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