All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
To: Marcel Holtmann <marcel@holtmann.org>
Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>,
	Johannes Berg <johannes@sipsolutions.net>,
	John Linville <linville@tuxdriver.com>,
	linux-wireless <linux-wireless@vger.kernel.org>
Subject: Re: [PATCH] rfkill: create useful userspace interface
Date: Thu, 11 Jun 2009 13:56:35 +0100	[thread overview]
Message-ID: <4A30FF03.9000500@tuffmail.co.uk> (raw)
In-Reply-To: <1244721689.27363.15.camel@violet>

Marcel Holtmann wrote:
> Hi Alan,
>
>   
>>>>>> I don't think we should expect userspace to know whether or not a device
>>>>>> has a persistent state.  Yes, it _could_ maintain whitelists, but why
>>>>>> should it have to if the driver already knows?
>>>>>>         
>>>>>>             
>>>>> If you want that, then the best approach seems an extra sysfs attribute
>>>>> for this. It is not intrusive on the event API and lets udev etc. have
>>>>> these information, too.
>>>>>       
>>>>>           
>>>> I have no problems with either approach.  As long as the information of
>>>> which devices have restored their initial state from NVS is available to
>>>> userspace, it is enough.
>>>>     
>>>>         
>>> just to get the semantic right here. We are not telling userspace if a
>>> state has been restored or not. We are telling userspace that this
>>> specific RFKILL switch is capable of storing something in a persistent
>>> state over boot. There is a difference here.
>>>
>>> If a RFKILL driver claims it is capable of persistent storage then it
>>> better work or it should not claims it. Either it does it all the time
>>> or doesn't do it at all. Otherwise we end up in policy again and that is
>>> not the job of the kernel.
>>>
>>>   
>>>       
>>>> Do note that this information also needs to be available for resume (state
>>>> should be checkpointed to NVS on sleep, and restored from NVS on resume.  I
>>>> believe tpacpi does this, but if it doesn't, I will fix it eventually).
>>>>     
>>>>         
>>> Correct. That is the job of the driver. If it is broken, that needs
>>> fixing.
>>>   
>>>       
>> The core needs fixing too, currently it restores state for all devices
>> on resume.
>>
>> This is my fault again, for coming up with scenarios you probably don't
>> care about :-).  The problem is that suspend to disk provides a
>> possibility that the state will change for _any_ driver.  It's more
>> obvious with rfkill-input and NVS, if the wireless toggle key is pressed
>> when the disk image is being written out.  But you can also contrive it
>> with no NVS and rfkilld, if rfkilld gets started in the initramfs of the
>> resume kernel.  We took the easy way out, rather than adding resume
>> handlers to all drivers, or trying to work out what the real design
>> problem was :-).
>>
>> I hope that explains the issue.  I agree with your logic, I just want to
>> be clear that it needs more work on the rfkill core.  Drivers with NVS
>> should have a resume handler to call rfkill_set_sw_state(), but for this
>> to work the core will need to stop restoring their state (for NVS
>> drivers only).  As a detail, I think this behaviour difference with NVS
>> means it should be flagged with a more explicit API, e.g.
>> rfkill_init_persistent_sw_state().
>>     
>
> I don't see any problem here. If the driver needs extra help from the
> RFKILL subsystem to express its states, that is just fine with me.
>
>   
>> rfkill-input would like another (even more intrusive) hack here to set
>> the global state on resume.  But I for one can live without it for the
>> transition.  I think NVS state change over suspend is much more of a
>> corner case.  At least on eeepc-laptop it only seems to happen if the
>> user does something relatively odd.  And the worst that will happen is
>> they have to press the wireless-toggle key a second time before it
>> starts working.
>>     
>
> So one think is NVS states and the other are the HW switches. For the
> NVS ones we need extra support for suspend/resume details, but that is
> as mentioned above just fine. Also please keep in mind that NVS states
> are per device and not global. If a system wants to treat them as global
> that is userspace policy and not our concern from the kernel side.
>
> For the HW states, I think they gonna store its state pretty obvious and
> if we need a resume callback to poll its current state, then that seems
> logical to me too.
>   

Ok.  I will work on this and post a few more patches.  I guess it's
still easiest if I post this as running code, and try to justify it to
you guys.


1/3:  The original patch removing set_global_sw_state() - this hasn't
been applied yet.

2/3:  Remove the core restore-on-resume code.  Devices with NVS will
maintain their state, and _must_ check NVS on resume.  Other devices are
expected to restore their own state.

I think this should work, because it's how the rfkill rewrite was
designed to start with.  It may take me a while to figure out _why_ it
works though.  I'm not sure about the ordering - whether my
acpi/platform driver resume callback will run before the rfkill class
resume handler, and if so then how does it work?  I don't want to submit
code unless I understand it :-).

3/3: Export the "persistent" flag in sysfs - now we have hopefully
settled what it means.


Thanks
Alan

  reply	other threads:[~2009-06-11 12:56 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-28 15:31 [PATCH] rfkill: create useful userspace interface Johannes Berg
2009-05-28 15:44 ` [PATCH v2] " Johannes Berg
2009-05-28 15:47   ` Marcel Holtmann
2009-05-28 15:58   ` [PATCH v3] " Johannes Berg
2009-05-29  8:38     ` [PATCH v4] " Johannes Berg
2009-05-29 10:43       ` Marcel Holtmann
2009-05-31  9:13 ` [PATCH] " Alan Jenkins
2009-05-31  9:58   ` Johannes Berg
2009-05-31 12:36     ` Henrique de Moraes Holschuh
2009-05-31 13:18     ` Alan Jenkins
2009-05-31 19:01     ` Marcel Holtmann
2009-06-01  7:33       ` Johannes Berg
2009-06-01  8:17         ` Alan Jenkins
2009-06-01 12:10           ` Johannes Berg
2009-06-01 13:05             ` Alan Jenkins
2009-06-01 14:47             ` Marcel Holtmann
2009-06-01 14:57               ` Johannes Berg
2009-06-01 16:10               ` Alan Jenkins
2009-06-01 19:44                 ` Marcel Holtmann
2009-06-01 22:26                   ` Alan Jenkins
2009-06-02  7:38                     ` Marcel Holtmann
2009-06-02  8:01                       ` Johannes Berg
2009-06-02  8:18                         ` Marcel Holtmann
2009-06-03  4:03                           ` Henrique de Moraes Holschuh
2009-06-03  5:57                             ` Marcel Holtmann
2009-06-03 21:33                               ` Henrique de Moraes Holschuh
2009-06-04  4:13                                 ` Marcel Holtmann
2009-06-07 12:38                                   ` Alan Jenkins
2009-06-07 12:57                                     ` Henrique de Moraes Holschuh
2009-06-07 15:28                                       ` Alan Jenkins
2009-06-07 17:16                                       ` Johannes Berg
2009-06-07 17:26                                         ` Alan Jenkins
2009-06-08 10:14                                           ` [RFC] rfkill: remove set_global_sw_state() Alan Jenkins
2009-06-08 10:32                                             ` Johannes Berg
2009-06-08 11:10                                               ` Alan Jenkins
2009-06-08 11:13                                                 ` Johannes Berg
2009-06-08 11:15                                                   ` Alan Jenkins
2009-06-08 11:19                                               ` [PATCH v2] rfkill: remove set_global_sw_state Alan Jenkins
2009-06-08 11:22                                                 ` Alan Jenkins
2009-06-08 11:24                                                   ` [PATCH v3] " Alan Jenkins
2009-06-08 12:27                                                     ` [PATCH v4] " Alan Jenkins
2009-06-10  1:55                                                       ` Henrique de Moraes Holschuh
2009-06-07 15:46                                     ` [PATCH] rfkill: create useful userspace interface Marcel Holtmann
2009-06-07 16:04                                       ` Alan Jenkins
2009-06-07 16:35                                         ` Marcel Holtmann
2009-06-07 17:16                                           ` Alan Jenkins
2009-06-07 17:25                                             ` Johannes Berg
2009-06-10  2:05                                           ` Henrique de Moraes Holschuh
2009-06-10  7:13                                             ` Marcel Holtmann
2009-06-10  9:06                                               ` Alan Jenkins
2009-06-11 12:01                                                 ` Marcel Holtmann
2009-06-11 12:56                                                   ` Alan Jenkins [this message]
2009-06-07 17:04                                       ` Dan Williams
2009-06-10  2:22                                         ` Henrique de Moraes Holschuh
2009-06-10  7:16                                           ` Marcel Holtmann
2009-06-02  8:33                         ` Alan Jenkins
2009-06-02  8:41                           ` Marcel Holtmann
2009-06-03  4:10                             ` Henrique de Moraes Holschuh
2009-06-03  6:01                               ` Marcel Holtmann
2009-06-03 21:38                                 ` Henrique de Moraes Holschuh
2009-06-04  4:20                                   ` Marcel Holtmann
2009-06-03 13:03                               ` Dan Williams
2009-06-03 21:40                                 ` Henrique de Moraes Holschuh
2009-06-04  4:24                                   ` Marcel Holtmann
2009-06-07 13:54                                     ` Henrique de Moraes Holschuh
2009-06-07 15:36                                       ` Marcel Holtmann
2009-06-10  2:44                                         ` Henrique de Moraes Holschuh
2009-06-10  7:19                                           ` Marcel Holtmann
2009-06-01 12:28           ` Henrique de Moraes Holschuh
2009-06-01 12:37             ` Henrique de Moraes Holschuh
2009-06-01 12:38             ` Johannes Berg
2009-06-01 12:45               ` Henrique de Moraes Holschuh
2009-06-01 12:50                 ` Johannes Berg
2009-06-01 13:33                   ` Henrique de Moraes Holschuh
2009-06-01 14:29                     ` Johannes Berg
2009-06-01 15:36                       ` Henrique de Moraes Holschuh
2009-06-01 15:37                         ` Johannes Berg
2009-06-01 15:50                           ` Henrique de Moraes Holschuh
2009-06-01 15:53                             ` Johannes Berg
2009-06-01 17:56                               ` Henrique de Moraes Holschuh
2009-06-01 19:22                                 ` Johannes Berg
2009-06-01 12:43             ` Johannes Berg
2009-06-01 12:49               ` Henrique de Moraes Holschuh
2009-06-01 12:53                 ` Johannes Berg
2009-05-31 13:51 ` Alan Jenkins
2009-05-31 13:54   ` Johannes Berg
2009-05-31 18:22     ` Alan Jenkins
2009-05-31 19:03     ` Marcel Holtmann
2009-05-31 21:19       ` Dan Williams
2009-06-01  7:18         ` Marcel Holtmann
2009-06-01  7:27       ` Johannes Berg
2009-06-01  7:40         ` Alan Jenkins
2009-06-01 14:41         ` Marcel Holtmann
2009-06-02  8:08 ` [PATCH v5] " Johannes Berg
2009-06-02  8:33   ` Marcel Holtmann
2009-06-02  9:41 ` [PATCH v6] " Johannes Berg

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=4A30FF03.9000500@tuffmail.co.uk \
    --to=alan-jenkins@tuffmail.co.uk \
    --cc=hmh@hmh.eng.br \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=marcel@holtmann.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.