[alsa-devel] [PATCH 00/25 v2] ALSA: support AMDTP variants
Takashi Iwai
tiwai at suse.de
Tue Aug 25 14:03:09 CEST 2015
On Tue, 25 Aug 2015 13:47:23 +0200,
Takashi Sakamoto wrote:
>
> Hi,
>
> On Aug 25 2015 14:24, Takashi Iwai wrote:
> > On Mon, 24 Aug 2015 08:26:56 +0200,
> > Takashi Iwai wrote:
> >>
> >> On Sun, 23 Aug 2015 16:58:44 +0200,
> >> Takashi Sakamoto wrote:
> >>>
> >>> On 2015年08月23日 17:04, Takashi Iwai wrote:
> >>>> On Sat, 22 Aug 2015 11:19:16 +0200,
> >>>> Takashi Sakamoto wrote:
> >>>>>
> >>>>> This patchset for Linux 4.3 updates my previous one:
> >>>>
> >>>> Sorry this seems too late for 4.3. If this got reviewed and acked by
> >>>> Clemens or other, I would take it. But otherwise it's too intrusive
> >>>> to take in the last day of the development cycle.
> >>>>
> >>>>
> >>>> Takashi
> >>>
> >>> OK.
> >>
> >> Now 4.2-rc8 was released unexpectedly, so we have a chance to review
> >> for one more week. Let's see.
> >
> > So I started a quick review from the bottom, and as already posted,
> > there are obvious errors, and I stopped reading at that point.
> >
> > Here are a few suggestions:
> >
> > - In general, the series is way too big and contains a wide variety of
> > changes. Better to split to smaller patch series. This makes much
> > easier to review, and more importantly to merge. Otherwise a
> > failure in one patch would block the whole series.
>
> I agree with it, of course. If possible, I'd like to post small changes
> because a large patchset really exhausts me.
>
> But this patchset is for new device drivers, sigh. The changes are just
> for devices supported by this patchset, and have no advantages to the
> other devices already supported by the other drivers. What is even
> worse, it can bring disadvantages or overhead to current stack.
> Therefore, it's meaning less to apply a part of the patchset.
Well, if the patch makes the existing things significant worse from
the performance POV, it's anyway not acceptable. So, it's invalid as
a counter argument to split patchsets.
If the whole patchset is designed to implement one thing, then it's
unavoidable to have them as a single patchset. But your patchset
looks more than that -- it starts from a rename patch, restructuring
patches, then patches for digi00x and tascam, at least. (Also there
are PCM support, MIDI support, etc, which can be separated too.)
> > - __u32 or such is basically for API exposed to user space. In
> > kernel, better to use u32 instead.
> >
> > - When you write a new code, consider using EXPORT_SYMBOL_GPL()
> > instead of EXPORT_SYMBOL().
> >
> > - Re-read each patch once before submission as if you were a reviewer;
> > this often helps to catch the typos or simple mistakes.
>
> I always have several nights for self-reviewing, nevertheless patchset
> includes such a trivial mistakes... (This is one of reasons that I don't
> like to post such a large patchset.)
The same applied to review -- errors can be overlooked more in a
larger patchset.
> For all that, the last part of this patchset is a bot worse. I concide
> it, sorry. MIDI functionality of TASCAM FireWire series is enough
> complicated to me and I always have a headache at considering about is
> (then make some easy mistakes).
>
> > Also, I see quite a few code duplications in the series. For example,
> > PCM read/write/silence loop is almost identical except for a few lines
> > of differences inside the loop. Ditto for MIDI accessors. Can they
> > be shared somehow better?
>
> I think you mention about the codes in data block processing, such as
> read_pcm_s32() in sound/firewire/amdtp-am824.c (originally in amdtp.c).
> These functions are called as frequently as 8,000 times per second, thus
> it's preferrable to keep the size as small as possible for CPU usage.
>
> While, each data block processing includes quite similar codes. In this
> meaning, your idea is valid, indeed. But currently, I adhere to the way
> to implement different data block processing as what the shape is.
> There's no public specification about it and I prefer to keep the codes
> as easy to read as possible.
Well, if you provide simple ops like write_s32(), read_s32(),
silence_s32(), etc, all codes can be same. The inner loop calls one
of this ops, which returns a BE32 value or convert to a native value,
etc. The performance cost by such a function call isn't too tragic.
thanks,
Takashi
More information about the Alsa-devel
mailing list