Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Jaroslav Kysela <perex@perex.cz>
To: David Henningsson <david.henningsson@canonical.com>
Cc: Takashi Iwai <tiwai@suse.de>, alsa-devel@alsa-project.org
Subject: Re: [alsa-cvslog] [ALSA GIT]ALSA utilities repository branch master updated. v1.0.26-26-ge05b903
Date: Wed, 10 Apr 2013 09:10:17 +0200	[thread overview]
Message-ID: <51651059.4080804@perex.cz> (raw)
In-Reply-To: <51650774.9060703@canonical.com>

Date 10.4.2013 08:32, David Henningsson wrote:
> On 04/10/2013 08:10 AM, Takashi Iwai wrote:
>> At Tue, 09 Apr 2013 22:07:03 +0200,
>> David Henningsson wrote:
>>>
>>> On 04/09/2013 06:11 PM, Takashi Iwai wrote:
>>>> At Tue, 09 Apr 2013 17:52:23 +0200,
>>>> Jaroslav Kysela wrote:
>>>>>
>>>>> Date 9.4.2013 14:47, Takashi Iwai wrote:
>>>>>> At Mon,  8 Apr 2013 14:51:54 +0200 (CEST),
>>>>>> GIT server wrote:
>>>>>>>
>>>>>>> This is an automated email from the git hooks/post-receive script. It was
>>>>>>> generated because a ref change was pushed to the repository containing
>>>>>>> the project "ALSA utilities repository".
>>>>>>>
>>>>>>> The branch, master has been updated
>>>>>>>          via  e05b903b1fb16e967d838edac408304cd4470fee (commit)
>>>>>>>         from  46cb355d4ff41c8065b02644b0534ab42d16cb72 (commit)
>>>>>>>
>>>>>>> Those revisions listed above that are new to this repository have
>>>>>>> not appeared on any other notification email; so we list those
>>>>>>> revisions in full, below.
>>>>>>>
>>>>>>> - Log -----------------------------------------------------------------
>>>>>>> commit e05b903b1fb16e967d838edac408304cd4470fee
>>>>>>> Author: Jaroslav Kysela <perex@perex.cz>
>>>>>>> Date:   Mon Apr 8 14:49:31 2013 +0200
>>>>>>>
>>>>>>>       alsactl: move systemd config to the daemon mode
>>>>>>>
>>>>>>>       Signed-off-by: Jaroslav Kysela <perex@perex.cz>
>>>>>>
>>>>>> I'm not thrilled by the silent default behavior change like this.
>>>>>> This will affect all systems using systemd from now on.
>>>>>>
>>>>>> I understand the reason behind it, but I wonder whether it's an
>>>>>> overkill.  Yet another daemon, unconditionally no matter whether
>>>>>> hotplug or not?  Hmm...
>>>>>
>>>>> The question is, how we can detect the hotplug scheme. Almost all
>>>>> systems have USB today and laptops have PCI express card slots, so....
>>>>> Fedora has the systemd configs in the alsa-utils package. A removal of
>>>>> this package is sufficient do disable the daemon.
>>>>
>>>> Yes, but then this would break the formerly working environment, too.
>>>>
>>>>> Eventually, we can
>>>>> save the state periodically using cron (without the changes tracking),
>>>>> but my measurement is that the alsactl daemon eats approx. 150kb of memory.
>>>>
>>>> I'm not concerned about alsactl memory footprint so much.
>>>> But having another daemon unconditionally just to save/restore the
>>>> mixer status is a question.
>>>>
>>>>> Some other quick ideas:
>>>>>
>>>>> - make the static/hotplug schemes depending on an environment variable
>>>>>     passed through the bootloader
>>>>> - another two packages on top of alsa-utils with two configs
>>>>
>>>> Manageable, but maybe will become a bit messy...
>>>>
>>>>> - save the last state inside the driver and offer it to the userspace
>>>>>     upon the card removal (seems overkill)
>>>>
>>>> This won't be that bad, I think.  But, accessing the information after
>>>> removal is the problem, after all.  The device and proc files are
>>>> removed at disconnection, so user-space can't access it.  Otherwise
>>>> the normal "alsactl store" should have worked.  So this can't be a
>>>> card-basis interface.
>>>>
>>>> A possible w/a would be that we can keep some stable ctl lists and
>>>> provide it as a (one-time) death message from a global proc or a sysfs
>>>> file, for example.  Then we don't need periodical sync.
>>>>
>>>> Whether this is a better option?  I dunno, honestly, too...
>>>
>>> Coming from a non-systemd world...
>>>
>>> Is the problem you're trying to solve that mixer state is not saved on
>>> hot-unplug; and if so, is this not working for non-systemd installations
>>> either then? Or is it systemd that causes this problem?
>>>
>>> I was expecting that when you unplug something, some kind of synchronous
>>> udev event was fired, which could read the current mixer state and save
>>> it, before it all goes away. But perhaps this was too optimistic...
>>
>> This was the implementation, so far, and known to be broken.  alsactl
>> was triggered by udev. But, in the case of hotplug, when it's
>> unplugged, there is no more device file.  Thus you can't get the mixer
>> status _after_ the unplug. And, of course, the udev event is triggered
>> at the disconnection, that is, it's performed after the unplug.
> 
> Is it possible to add a uevent that synchronously fires just before the 
> device file is removed? Then the mixer state could be read. (The mixer 
> state must be completely stored in kernel, of course, since you can't 
> read it from unplugged hardware.)

I'm not sure, if moving every logic to the kernel is a good idea.

>> Jaroslav's change is to start alsactl as a system daemon by systemd,
>> and let it keeping all mixer states in background.
> 
> Btw, one could also fire udev events on mixer changes (possibly delayed 
> by a few seconds to avoid a uevent storm). Then at least the daemon 
> would not be running constantly. As a minor benefit, this would also 
> protect against settings getting lost on sudden power outages.

I think that the daemon solution is a better idea. The consumed
resources are negligible and the daemon is woken in very long periods
(by default 150 seconds or a ctl event). Also, the consumed resources
for new tasks are higher than if all logic is in a daemon.

					Jaroslav

-- 
Jaroslav Kysela <perex@perex.cz>
Linux Kernel Sound Maintainer
ALSA Project; Red Hat, Inc.

      parent reply	other threads:[~2013-04-10  7:10 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20130408125154.6264F2651CD@alsa0.perex.cz>
2013-04-09 12:47 ` [alsa-cvslog] [ALSA GIT]ALSA utilities repository branch master updated. v1.0.26-26-ge05b903 Takashi Iwai
2013-04-09 15:52   ` Jaroslav Kysela
2013-04-09 16:11     ` Takashi Iwai
2013-04-09 16:38       ` Jaroslav Kysela
2013-04-09 20:07       ` David Henningsson
2013-04-10  6:10         ` Takashi Iwai
2013-04-10  6:32           ` Clemens Ladisch
2013-04-10  6:32           ` David Henningsson
2013-04-10  6:58             ` Takashi Iwai
2013-04-10  7:11               ` David Henningsson
2013-04-10  7:20                 ` Takashi Iwai
2013-04-10  9:20                   ` Jaroslav Kysela
2013-04-10  9:33                     ` Takashi Iwai
2013-04-10  7:10             ` Jaroslav Kysela [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51651059.4080804@perex.cz \
    --to=perex@perex.cz \
    --cc=alsa-devel@alsa-project.org \
    --cc=david.henningsson@canonical.com \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox