Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-11-03 Thread Guenter Roeck
On Mon, Nov 03, 2014 at 12:28:29PM -0600, Felipe Balbi wrote:
> Hi,
> 
> On Mon, Nov 03, 2014 at 10:22:13AM -0800, Guenter Roeck wrote:
> > On Mon, Nov 03, 2014 at 11:59:35AM -0600, Felipe Balbi wrote:
> > > Hi,
> > > 
> > > On Mon, Oct 27, 2014 at 08:55:07AM -0700, Guenter Roeck wrote:
> > > > Various drivers implement architecture and/or device specific means to
> > > > remove power from the system.  For the most part, those drivers set the
> > > > global variable pm_power_off to point to a function within the driver.
> > > > 
> > > > This mechanism has a number of drawbacks.  Typically only one means
> > > > to remove power is supported (at least if pm_power_off is used).
> > > > At least in theory there can be multiple means to remove power, some of
> > > > which may be less desirable.  For example, one mechanism might power 
> > > > off the
> > > > entire system through an I/O port or gpio pin, while another might 
> > > > power off
> > > > a board by disabling its power controller. Other mechanisms may really 
> > > > just
> > > > execute a restart sequence or drop into the ROM monitor, or put the CPU 
> > > > into
> > > > sleep mode.  Using pm_power_off can also be racy if the function 
> > > > pointer is
> > > > set from a driver built as module, as the driver may be in the process 
> > > > of
> > > > being unloaded when pm_power_off is called.  If there are multiple 
> > > > power-off
> > > > handlers in the system, removing a module with such a handler may
> > > > inadvertently reset the pointer to pm_power_off to NULL, leaving the 
> > > > system
> > > > with no means to remove power.
> > > > 
> > > > Introduce a system power-off handler call chain to solve the described
> > > > problems.  This call chain is expected to be executed from the 
> > > > architecture
> > > > specific machine_power_off() function.  Drivers providing system 
> > > > power-off
> > > > functionality are expected to register with this call chain.  By using 
> > > > the
> > > > priority field in the notifier block, callers can control power-off 
> > > > handler
> > > > execution sequence and thus ensure that the power-off handler with the
> > > > optimal capabilities to remove power for a given system is called first.
> > > > A call chain instead of a single call to the highest priority handler is
> > > > used to provide fallback: If multiple power-off handlers are installed,
> > > > all handlers will be called until one actually succeeds to power off the
> > > > system.
> > > > 
> > > > Patch 01/47 implements the power-off handler API.
> > > > 
> > > > Patches 02/47 to 04/47 are cleanup patches to prepare for the move of
> > > > pm_power_off to a common location.
> > > > 
> > > > Patches 05/47 to 07/47 remove references to pm_power_off from devicetree
> > > > bindings descriptions.
> > > > 
> > > > Patch 08/47 moves the pm_power_off variable from architecture code to
> > > > kernel/reboot.c. 
> > > > 
> > > > Patches 09/47 to 34/47 convert various drivers to register with the 
> > > > kernel
> > > > power-off handler instead of setting pm_power_off directly.
> > > > 
> > > > Patches 35/47 to 46/47 do the same for architecture code.
> > > > 
> > > > Patch 47/47 finally removes pm_power_off.
> > > > 
> > > > For the most part, the individual patches include explanations why 
> > > > specific
> > > > priorities were chosen, at least if the selected priority is not the 
> > > > default
> > > > priority. Subsystem and architecture maintainers are encouraged to have 
> > > > a look
> > > > at the selected priorities and suggest improvements.
> > > > 
> > > > I ran the final code through my normal build and qemu tests. Results are
> > > > available at http://server.roeck-us.net:8010/builders in the 
> > > > 'poweroff-handler'
> > > > column. I also built all available configurations for arm, mips, 
> > > > powerpc,
> > > > m68k, and sh architectures.
> > > > 
> > > > The series is available in branch poweroff-handler of my repository at
> > > > git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git.
> > > > It is based on 3.18-rc2.
> > > > 
> > > > A note on Cc: In the initial submission I had way too many Cc:, causing 
> > > > the
> > > > patchset to be treated as spam by many mailers and mailing list 
> > > > handlers,
> > > > which of course defeated the purpose. This time around I am cutting down
> > > > the distribution list down significantly. My apologies to anyone I may 
> > > > have
> > > > failed to copy this time around.
> > > 
> > > you touch every single architecture with this patchset, but you didn't
> > > care about Ccing any of the arch-specific mailing lists, like lakml ?
> > > 
> > What is lakml ? linux-kernel@vger.kernel.org was copied, if that is what you
> 
> only the greatest mailing list of all time.
> 
> heh, Linux ARM Kernel Mailing List.
> 

Similar to linux-omap, linux-arm-kernel was copied on individual patches
if get_maintainer.pl suggested it. I'll be happy to add both lists 

Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-11-03 Thread Felipe Balbi
Hi,

On Mon, Nov 03, 2014 at 10:22:13AM -0800, Guenter Roeck wrote:
> On Mon, Nov 03, 2014 at 11:59:35AM -0600, Felipe Balbi wrote:
> > Hi,
> > 
> > On Mon, Oct 27, 2014 at 08:55:07AM -0700, Guenter Roeck wrote:
> > > Various drivers implement architecture and/or device specific means to
> > > remove power from the system.  For the most part, those drivers set the
> > > global variable pm_power_off to point to a function within the driver.
> > > 
> > > This mechanism has a number of drawbacks.  Typically only one means
> > > to remove power is supported (at least if pm_power_off is used).
> > > At least in theory there can be multiple means to remove power, some of
> > > which may be less desirable.  For example, one mechanism might power off 
> > > the
> > > entire system through an I/O port or gpio pin, while another might power 
> > > off
> > > a board by disabling its power controller. Other mechanisms may really 
> > > just
> > > execute a restart sequence or drop into the ROM monitor, or put the CPU 
> > > into
> > > sleep mode.  Using pm_power_off can also be racy if the function pointer 
> > > is
> > > set from a driver built as module, as the driver may be in the process of
> > > being unloaded when pm_power_off is called.  If there are multiple 
> > > power-off
> > > handlers in the system, removing a module with such a handler may
> > > inadvertently reset the pointer to pm_power_off to NULL, leaving the 
> > > system
> > > with no means to remove power.
> > > 
> > > Introduce a system power-off handler call chain to solve the described
> > > problems.  This call chain is expected to be executed from the 
> > > architecture
> > > specific machine_power_off() function.  Drivers providing system power-off
> > > functionality are expected to register with this call chain.  By using the
> > > priority field in the notifier block, callers can control power-off 
> > > handler
> > > execution sequence and thus ensure that the power-off handler with the
> > > optimal capabilities to remove power for a given system is called first.
> > > A call chain instead of a single call to the highest priority handler is
> > > used to provide fallback: If multiple power-off handlers are installed,
> > > all handlers will be called until one actually succeeds to power off the
> > > system.
> > > 
> > > Patch 01/47 implements the power-off handler API.
> > > 
> > > Patches 02/47 to 04/47 are cleanup patches to prepare for the move of
> > > pm_power_off to a common location.
> > > 
> > > Patches 05/47 to 07/47 remove references to pm_power_off from devicetree
> > > bindings descriptions.
> > > 
> > > Patch 08/47 moves the pm_power_off variable from architecture code to
> > > kernel/reboot.c. 
> > > 
> > > Patches 09/47 to 34/47 convert various drivers to register with the kernel
> > > power-off handler instead of setting pm_power_off directly.
> > > 
> > > Patches 35/47 to 46/47 do the same for architecture code.
> > > 
> > > Patch 47/47 finally removes pm_power_off.
> > > 
> > > For the most part, the individual patches include explanations why 
> > > specific
> > > priorities were chosen, at least if the selected priority is not the 
> > > default
> > > priority. Subsystem and architecture maintainers are encouraged to have a 
> > > look
> > > at the selected priorities and suggest improvements.
> > > 
> > > I ran the final code through my normal build and qemu tests. Results are
> > > available at http://server.roeck-us.net:8010/builders in the 
> > > 'poweroff-handler'
> > > column. I also built all available configurations for arm, mips, powerpc,
> > > m68k, and sh architectures.
> > > 
> > > The series is available in branch poweroff-handler of my repository at
> > > git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git.
> > > It is based on 3.18-rc2.
> > > 
> > > A note on Cc: In the initial submission I had way too many Cc:, causing 
> > > the
> > > patchset to be treated as spam by many mailers and mailing list handlers,
> > > which of course defeated the purpose. This time around I am cutting down
> > > the distribution list down significantly. My apologies to anyone I may 
> > > have
> > > failed to copy this time around.
> > 
> > you touch every single architecture with this patchset, but you didn't
> > care about Ccing any of the arch-specific mailing lists, like lakml ?
> > 
> What is lakml ? linux-kernel@vger.kernel.org was copied, if that is what you

only the greatest mailing list of all time.

heh, Linux ARM Kernel Mailing List.

> refer to. I don't find a reference to lakml anywhere, sorry. I'll be happy to
> add it manually if you provide the address.
> 
> Architecture specific mailing lists were copied on individual patches as long
> as those mailing lists are reported by the MAINTAINERS file.
> 
> > Please resend with proper people in Cc, IIRC RMK had a few very
> > important comments about the idea behind this series.
> > 
> Felipe,
> 
> That doesn't work. I tried with rev 1. 

Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-11-03 Thread Guenter Roeck
On Mon, Nov 03, 2014 at 11:59:35AM -0600, Felipe Balbi wrote:
> Hi,
> 
> On Mon, Oct 27, 2014 at 08:55:07AM -0700, Guenter Roeck wrote:
> > Various drivers implement architecture and/or device specific means to
> > remove power from the system.  For the most part, those drivers set the
> > global variable pm_power_off to point to a function within the driver.
> > 
> > This mechanism has a number of drawbacks.  Typically only one means
> > to remove power is supported (at least if pm_power_off is used).
> > At least in theory there can be multiple means to remove power, some of
> > which may be less desirable.  For example, one mechanism might power off the
> > entire system through an I/O port or gpio pin, while another might power off
> > a board by disabling its power controller. Other mechanisms may really just
> > execute a restart sequence or drop into the ROM monitor, or put the CPU into
> > sleep mode.  Using pm_power_off can also be racy if the function pointer is
> > set from a driver built as module, as the driver may be in the process of
> > being unloaded when pm_power_off is called.  If there are multiple power-off
> > handlers in the system, removing a module with such a handler may
> > inadvertently reset the pointer to pm_power_off to NULL, leaving the system
> > with no means to remove power.
> > 
> > Introduce a system power-off handler call chain to solve the described
> > problems.  This call chain is expected to be executed from the architecture
> > specific machine_power_off() function.  Drivers providing system power-off
> > functionality are expected to register with this call chain.  By using the
> > priority field in the notifier block, callers can control power-off handler
> > execution sequence and thus ensure that the power-off handler with the
> > optimal capabilities to remove power for a given system is called first.
> > A call chain instead of a single call to the highest priority handler is
> > used to provide fallback: If multiple power-off handlers are installed,
> > all handlers will be called until one actually succeeds to power off the
> > system.
> > 
> > Patch 01/47 implements the power-off handler API.
> > 
> > Patches 02/47 to 04/47 are cleanup patches to prepare for the move of
> > pm_power_off to a common location.
> > 
> > Patches 05/47 to 07/47 remove references to pm_power_off from devicetree
> > bindings descriptions.
> > 
> > Patch 08/47 moves the pm_power_off variable from architecture code to
> > kernel/reboot.c. 
> > 
> > Patches 09/47 to 34/47 convert various drivers to register with the kernel
> > power-off handler instead of setting pm_power_off directly.
> > 
> > Patches 35/47 to 46/47 do the same for architecture code.
> > 
> > Patch 47/47 finally removes pm_power_off.
> > 
> > For the most part, the individual patches include explanations why specific
> > priorities were chosen, at least if the selected priority is not the default
> > priority. Subsystem and architecture maintainers are encouraged to have a 
> > look
> > at the selected priorities and suggest improvements.
> > 
> > I ran the final code through my normal build and qemu tests. Results are
> > available at http://server.roeck-us.net:8010/builders in the 
> > 'poweroff-handler'
> > column. I also built all available configurations for arm, mips, powerpc,
> > m68k, and sh architectures.
> > 
> > The series is available in branch poweroff-handler of my repository at
> > git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git.
> > It is based on 3.18-rc2.
> > 
> > A note on Cc: In the initial submission I had way too many Cc:, causing the
> > patchset to be treated as spam by many mailers and mailing list handlers,
> > which of course defeated the purpose. This time around I am cutting down
> > the distribution list down significantly. My apologies to anyone I may have
> > failed to copy this time around.
> 
> you touch every single architecture with this patchset, but you didn't
> care about Ccing any of the arch-specific mailing lists, like lakml ?
> 
What is lakml ? linux-kernel@vger.kernel.org was copied, if that is what you
refer to. I don't find a reference to lakml anywhere, sorry. I'll be happy to
add it manually if you provide the address.

Architecture specific mailing lists were copied on individual patches as long
as those mailing lists are reported by the MAINTAINERS file.

> Please resend with proper people in Cc, IIRC RMK had a few very
> important comments about the idea behind this series.
> 
Felipe,

That doesn't work. I tried with rev 1. The result was that the patch series
was flagged as spam and got dropped by most mailing lists, as explained above,
and I got tagged as spammer by Google and several other mail servers,
preventing me from posting _anything_ for several days.

Please point me to the comments you refer to above in case I missed them.

Thanks,
Guenter
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of 

Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-11-03 Thread Felipe Balbi
Hi,

On Mon, Oct 27, 2014 at 08:55:07AM -0700, Guenter Roeck wrote:
> Various drivers implement architecture and/or device specific means to
> remove power from the system.  For the most part, those drivers set the
> global variable pm_power_off to point to a function within the driver.
> 
> This mechanism has a number of drawbacks.  Typically only one means
> to remove power is supported (at least if pm_power_off is used).
> At least in theory there can be multiple means to remove power, some of
> which may be less desirable.  For example, one mechanism might power off the
> entire system through an I/O port or gpio pin, while another might power off
> a board by disabling its power controller. Other mechanisms may really just
> execute a restart sequence or drop into the ROM monitor, or put the CPU into
> sleep mode.  Using pm_power_off can also be racy if the function pointer is
> set from a driver built as module, as the driver may be in the process of
> being unloaded when pm_power_off is called.  If there are multiple power-off
> handlers in the system, removing a module with such a handler may
> inadvertently reset the pointer to pm_power_off to NULL, leaving the system
> with no means to remove power.
> 
> Introduce a system power-off handler call chain to solve the described
> problems.  This call chain is expected to be executed from the architecture
> specific machine_power_off() function.  Drivers providing system power-off
> functionality are expected to register with this call chain.  By using the
> priority field in the notifier block, callers can control power-off handler
> execution sequence and thus ensure that the power-off handler with the
> optimal capabilities to remove power for a given system is called first.
> A call chain instead of a single call to the highest priority handler is
> used to provide fallback: If multiple power-off handlers are installed,
> all handlers will be called until one actually succeeds to power off the
> system.
> 
> Patch 01/47 implements the power-off handler API.
> 
> Patches 02/47 to 04/47 are cleanup patches to prepare for the move of
> pm_power_off to a common location.
> 
> Patches 05/47 to 07/47 remove references to pm_power_off from devicetree
> bindings descriptions.
> 
> Patch 08/47 moves the pm_power_off variable from architecture code to
> kernel/reboot.c. 
> 
> Patches 09/47 to 34/47 convert various drivers to register with the kernel
> power-off handler instead of setting pm_power_off directly.
> 
> Patches 35/47 to 46/47 do the same for architecture code.
> 
> Patch 47/47 finally removes pm_power_off.
> 
> For the most part, the individual patches include explanations why specific
> priorities were chosen, at least if the selected priority is not the default
> priority. Subsystem and architecture maintainers are encouraged to have a look
> at the selected priorities and suggest improvements.
> 
> I ran the final code through my normal build and qemu tests. Results are
> available at http://server.roeck-us.net:8010/builders in the 
> 'poweroff-handler'
> column. I also built all available configurations for arm, mips, powerpc,
> m68k, and sh architectures.
> 
> The series is available in branch poweroff-handler of my repository at
> git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git.
> It is based on 3.18-rc2.
> 
> A note on Cc: In the initial submission I had way too many Cc:, causing the
> patchset to be treated as spam by many mailers and mailing list handlers,
> which of course defeated the purpose. This time around I am cutting down
> the distribution list down significantly. My apologies to anyone I may have
> failed to copy this time around.

you touch every single architecture with this patchset, but you didn't
care about Ccing any of the arch-specific mailing lists, like lakml ?

Please resend with proper people in Cc, IIRC RMK had a few very
important comments about the idea behind this series.

> Important changes since v2:
> - Rebased series to v3.18-rc2.
> - Do not hold any locks while executing the power-off call chain.
>   This ensures that power-off handlers are executed in the state
>   selected by the machine_power_off function for a given architecture,
>   ie without changing the current semantics of power-off callbacks and
>   machine_power_off functions.
>   Power-off handler registration and de-registration is handled in atomic
>   context with interrupts disabled to ensure that those functions are not
>   interrupted by code which powers off the system.
> - Use [xxx_]power_off[_xxx] instead of [xxx_]poweroff[_xxx] for newly
>   introduced function and variable names.
> - Use power-off instead of poweroff in descriptive text and comments.
> - Replace POWEROFF_PRIORITY_xxx with POWER_OFF_PRIORITY_xxx
> - Use ACPI: instead of acpi: for messages in acpi code.
> 
> Important changes since v1:
> - Rebased series to v3.18-rc1.
> - Use raw notifier with spinlock protection instead of atomic notifiers,
>   

Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-11-03 Thread Felipe Balbi
Hi,

On Mon, Oct 27, 2014 at 08:55:07AM -0700, Guenter Roeck wrote:
 Various drivers implement architecture and/or device specific means to
 remove power from the system.  For the most part, those drivers set the
 global variable pm_power_off to point to a function within the driver.
 
 This mechanism has a number of drawbacks.  Typically only one means
 to remove power is supported (at least if pm_power_off is used).
 At least in theory there can be multiple means to remove power, some of
 which may be less desirable.  For example, one mechanism might power off the
 entire system through an I/O port or gpio pin, while another might power off
 a board by disabling its power controller. Other mechanisms may really just
 execute a restart sequence or drop into the ROM monitor, or put the CPU into
 sleep mode.  Using pm_power_off can also be racy if the function pointer is
 set from a driver built as module, as the driver may be in the process of
 being unloaded when pm_power_off is called.  If there are multiple power-off
 handlers in the system, removing a module with such a handler may
 inadvertently reset the pointer to pm_power_off to NULL, leaving the system
 with no means to remove power.
 
 Introduce a system power-off handler call chain to solve the described
 problems.  This call chain is expected to be executed from the architecture
 specific machine_power_off() function.  Drivers providing system power-off
 functionality are expected to register with this call chain.  By using the
 priority field in the notifier block, callers can control power-off handler
 execution sequence and thus ensure that the power-off handler with the
 optimal capabilities to remove power for a given system is called first.
 A call chain instead of a single call to the highest priority handler is
 used to provide fallback: If multiple power-off handlers are installed,
 all handlers will be called until one actually succeeds to power off the
 system.
 
 Patch 01/47 implements the power-off handler API.
 
 Patches 02/47 to 04/47 are cleanup patches to prepare for the move of
 pm_power_off to a common location.
 
 Patches 05/47 to 07/47 remove references to pm_power_off from devicetree
 bindings descriptions.
 
 Patch 08/47 moves the pm_power_off variable from architecture code to
 kernel/reboot.c. 
 
 Patches 09/47 to 34/47 convert various drivers to register with the kernel
 power-off handler instead of setting pm_power_off directly.
 
 Patches 35/47 to 46/47 do the same for architecture code.
 
 Patch 47/47 finally removes pm_power_off.
 
 For the most part, the individual patches include explanations why specific
 priorities were chosen, at least if the selected priority is not the default
 priority. Subsystem and architecture maintainers are encouraged to have a look
 at the selected priorities and suggest improvements.
 
 I ran the final code through my normal build and qemu tests. Results are
 available at http://server.roeck-us.net:8010/builders in the 
 'poweroff-handler'
 column. I also built all available configurations for arm, mips, powerpc,
 m68k, and sh architectures.
 
 The series is available in branch poweroff-handler of my repository at
 git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git.
 It is based on 3.18-rc2.
 
 A note on Cc: In the initial submission I had way too many Cc:, causing the
 patchset to be treated as spam by many mailers and mailing list handlers,
 which of course defeated the purpose. This time around I am cutting down
 the distribution list down significantly. My apologies to anyone I may have
 failed to copy this time around.

you touch every single architecture with this patchset, but you didn't
care about Ccing any of the arch-specific mailing lists, like lakml ?

Please resend with proper people in Cc, IIRC RMK had a few very
important comments about the idea behind this series.

 Important changes since v2:
 - Rebased series to v3.18-rc2.
 - Do not hold any locks while executing the power-off call chain.
   This ensures that power-off handlers are executed in the state
   selected by the machine_power_off function for a given architecture,
   ie without changing the current semantics of power-off callbacks and
   machine_power_off functions.
   Power-off handler registration and de-registration is handled in atomic
   context with interrupts disabled to ensure that those functions are not
   interrupted by code which powers off the system.
 - Use [xxx_]power_off[_xxx] instead of [xxx_]poweroff[_xxx] for newly
   introduced function and variable names.
 - Use power-off instead of poweroff in descriptive text and comments.
 - Replace POWEROFF_PRIORITY_xxx with POWER_OFF_PRIORITY_xxx
 - Use ACPI: instead of acpi: for messages in acpi code.
 
 Important changes since v1:
 - Rebased series to v3.18-rc1.
 - Use raw notifier with spinlock protection instead of atomic notifiers,
   since some power-off handlers need to have interrupts enabled.
 - Renamed API functions 

Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-11-03 Thread Guenter Roeck
On Mon, Nov 03, 2014 at 11:59:35AM -0600, Felipe Balbi wrote:
 Hi,
 
 On Mon, Oct 27, 2014 at 08:55:07AM -0700, Guenter Roeck wrote:
  Various drivers implement architecture and/or device specific means to
  remove power from the system.  For the most part, those drivers set the
  global variable pm_power_off to point to a function within the driver.
  
  This mechanism has a number of drawbacks.  Typically only one means
  to remove power is supported (at least if pm_power_off is used).
  At least in theory there can be multiple means to remove power, some of
  which may be less desirable.  For example, one mechanism might power off the
  entire system through an I/O port or gpio pin, while another might power off
  a board by disabling its power controller. Other mechanisms may really just
  execute a restart sequence or drop into the ROM monitor, or put the CPU into
  sleep mode.  Using pm_power_off can also be racy if the function pointer is
  set from a driver built as module, as the driver may be in the process of
  being unloaded when pm_power_off is called.  If there are multiple power-off
  handlers in the system, removing a module with such a handler may
  inadvertently reset the pointer to pm_power_off to NULL, leaving the system
  with no means to remove power.
  
  Introduce a system power-off handler call chain to solve the described
  problems.  This call chain is expected to be executed from the architecture
  specific machine_power_off() function.  Drivers providing system power-off
  functionality are expected to register with this call chain.  By using the
  priority field in the notifier block, callers can control power-off handler
  execution sequence and thus ensure that the power-off handler with the
  optimal capabilities to remove power for a given system is called first.
  A call chain instead of a single call to the highest priority handler is
  used to provide fallback: If multiple power-off handlers are installed,
  all handlers will be called until one actually succeeds to power off the
  system.
  
  Patch 01/47 implements the power-off handler API.
  
  Patches 02/47 to 04/47 are cleanup patches to prepare for the move of
  pm_power_off to a common location.
  
  Patches 05/47 to 07/47 remove references to pm_power_off from devicetree
  bindings descriptions.
  
  Patch 08/47 moves the pm_power_off variable from architecture code to
  kernel/reboot.c. 
  
  Patches 09/47 to 34/47 convert various drivers to register with the kernel
  power-off handler instead of setting pm_power_off directly.
  
  Patches 35/47 to 46/47 do the same for architecture code.
  
  Patch 47/47 finally removes pm_power_off.
  
  For the most part, the individual patches include explanations why specific
  priorities were chosen, at least if the selected priority is not the default
  priority. Subsystem and architecture maintainers are encouraged to have a 
  look
  at the selected priorities and suggest improvements.
  
  I ran the final code through my normal build and qemu tests. Results are
  available at http://server.roeck-us.net:8010/builders in the 
  'poweroff-handler'
  column. I also built all available configurations for arm, mips, powerpc,
  m68k, and sh architectures.
  
  The series is available in branch poweroff-handler of my repository at
  git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git.
  It is based on 3.18-rc2.
  
  A note on Cc: In the initial submission I had way too many Cc:, causing the
  patchset to be treated as spam by many mailers and mailing list handlers,
  which of course defeated the purpose. This time around I am cutting down
  the distribution list down significantly. My apologies to anyone I may have
  failed to copy this time around.
 
 you touch every single architecture with this patchset, but you didn't
 care about Ccing any of the arch-specific mailing lists, like lakml ?
 
What is lakml ? linux-kernel@vger.kernel.org was copied, if that is what you
refer to. I don't find a reference to lakml anywhere, sorry. I'll be happy to
add it manually if you provide the address.

Architecture specific mailing lists were copied on individual patches as long
as those mailing lists are reported by the MAINTAINERS file.

 Please resend with proper people in Cc, IIRC RMK had a few very
 important comments about the idea behind this series.
 
Felipe,

That doesn't work. I tried with rev 1. The result was that the patch series
was flagged as spam and got dropped by most mailing lists, as explained above,
and I got tagged as spammer by Google and several other mail servers,
preventing me from posting _anything_ for several days.

Please point me to the comments you refer to above in case I missed them.

Thanks,
Guenter
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  

Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-11-03 Thread Felipe Balbi
Hi,

On Mon, Nov 03, 2014 at 10:22:13AM -0800, Guenter Roeck wrote:
 On Mon, Nov 03, 2014 at 11:59:35AM -0600, Felipe Balbi wrote:
  Hi,
  
  On Mon, Oct 27, 2014 at 08:55:07AM -0700, Guenter Roeck wrote:
   Various drivers implement architecture and/or device specific means to
   remove power from the system.  For the most part, those drivers set the
   global variable pm_power_off to point to a function within the driver.
   
   This mechanism has a number of drawbacks.  Typically only one means
   to remove power is supported (at least if pm_power_off is used).
   At least in theory there can be multiple means to remove power, some of
   which may be less desirable.  For example, one mechanism might power off 
   the
   entire system through an I/O port or gpio pin, while another might power 
   off
   a board by disabling its power controller. Other mechanisms may really 
   just
   execute a restart sequence or drop into the ROM monitor, or put the CPU 
   into
   sleep mode.  Using pm_power_off can also be racy if the function pointer 
   is
   set from a driver built as module, as the driver may be in the process of
   being unloaded when pm_power_off is called.  If there are multiple 
   power-off
   handlers in the system, removing a module with such a handler may
   inadvertently reset the pointer to pm_power_off to NULL, leaving the 
   system
   with no means to remove power.
   
   Introduce a system power-off handler call chain to solve the described
   problems.  This call chain is expected to be executed from the 
   architecture
   specific machine_power_off() function.  Drivers providing system power-off
   functionality are expected to register with this call chain.  By using the
   priority field in the notifier block, callers can control power-off 
   handler
   execution sequence and thus ensure that the power-off handler with the
   optimal capabilities to remove power for a given system is called first.
   A call chain instead of a single call to the highest priority handler is
   used to provide fallback: If multiple power-off handlers are installed,
   all handlers will be called until one actually succeeds to power off the
   system.
   
   Patch 01/47 implements the power-off handler API.
   
   Patches 02/47 to 04/47 are cleanup patches to prepare for the move of
   pm_power_off to a common location.
   
   Patches 05/47 to 07/47 remove references to pm_power_off from devicetree
   bindings descriptions.
   
   Patch 08/47 moves the pm_power_off variable from architecture code to
   kernel/reboot.c. 
   
   Patches 09/47 to 34/47 convert various drivers to register with the kernel
   power-off handler instead of setting pm_power_off directly.
   
   Patches 35/47 to 46/47 do the same for architecture code.
   
   Patch 47/47 finally removes pm_power_off.
   
   For the most part, the individual patches include explanations why 
   specific
   priorities were chosen, at least if the selected priority is not the 
   default
   priority. Subsystem and architecture maintainers are encouraged to have a 
   look
   at the selected priorities and suggest improvements.
   
   I ran the final code through my normal build and qemu tests. Results are
   available at http://server.roeck-us.net:8010/builders in the 
   'poweroff-handler'
   column. I also built all available configurations for arm, mips, powerpc,
   m68k, and sh architectures.
   
   The series is available in branch poweroff-handler of my repository at
   git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git.
   It is based on 3.18-rc2.
   
   A note on Cc: In the initial submission I had way too many Cc:, causing 
   the
   patchset to be treated as spam by many mailers and mailing list handlers,
   which of course defeated the purpose. This time around I am cutting down
   the distribution list down significantly. My apologies to anyone I may 
   have
   failed to copy this time around.
  
  you touch every single architecture with this patchset, but you didn't
  care about Ccing any of the arch-specific mailing lists, like lakml ?
  
 What is lakml ? linux-kernel@vger.kernel.org was copied, if that is what you

only the greatest mailing list of all time.

heh, Linux ARM Kernel Mailing List.

 refer to. I don't find a reference to lakml anywhere, sorry. I'll be happy to
 add it manually if you provide the address.
 
 Architecture specific mailing lists were copied on individual patches as long
 as those mailing lists are reported by the MAINTAINERS file.
 
  Please resend with proper people in Cc, IIRC RMK had a few very
  important comments about the idea behind this series.
  
 Felipe,
 
 That doesn't work. I tried with rev 1. The result was that the patch series
 was flagged as spam and got dropped by most mailing lists, as explained above,
 and I got tagged as spammer by Google and several other mail servers,
 preventing me from posting _anything_ for several days.

heh, that sucks.

-- 
balbi



Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-11-03 Thread Guenter Roeck
On Mon, Nov 03, 2014 at 12:28:29PM -0600, Felipe Balbi wrote:
 Hi,
 
 On Mon, Nov 03, 2014 at 10:22:13AM -0800, Guenter Roeck wrote:
  On Mon, Nov 03, 2014 at 11:59:35AM -0600, Felipe Balbi wrote:
   Hi,
   
   On Mon, Oct 27, 2014 at 08:55:07AM -0700, Guenter Roeck wrote:
Various drivers implement architecture and/or device specific means to
remove power from the system.  For the most part, those drivers set the
global variable pm_power_off to point to a function within the driver.

This mechanism has a number of drawbacks.  Typically only one means
to remove power is supported (at least if pm_power_off is used).
At least in theory there can be multiple means to remove power, some of
which may be less desirable.  For example, one mechanism might power 
off the
entire system through an I/O port or gpio pin, while another might 
power off
a board by disabling its power controller. Other mechanisms may really 
just
execute a restart sequence or drop into the ROM monitor, or put the CPU 
into
sleep mode.  Using pm_power_off can also be racy if the function 
pointer is
set from a driver built as module, as the driver may be in the process 
of
being unloaded when pm_power_off is called.  If there are multiple 
power-off
handlers in the system, removing a module with such a handler may
inadvertently reset the pointer to pm_power_off to NULL, leaving the 
system
with no means to remove power.

Introduce a system power-off handler call chain to solve the described
problems.  This call chain is expected to be executed from the 
architecture
specific machine_power_off() function.  Drivers providing system 
power-off
functionality are expected to register with this call chain.  By using 
the
priority field in the notifier block, callers can control power-off 
handler
execution sequence and thus ensure that the power-off handler with the
optimal capabilities to remove power for a given system is called first.
A call chain instead of a single call to the highest priority handler is
used to provide fallback: If multiple power-off handlers are installed,
all handlers will be called until one actually succeeds to power off the
system.

Patch 01/47 implements the power-off handler API.

Patches 02/47 to 04/47 are cleanup patches to prepare for the move of
pm_power_off to a common location.

Patches 05/47 to 07/47 remove references to pm_power_off from devicetree
bindings descriptions.

Patch 08/47 moves the pm_power_off variable from architecture code to
kernel/reboot.c. 

Patches 09/47 to 34/47 convert various drivers to register with the 
kernel
power-off handler instead of setting pm_power_off directly.

Patches 35/47 to 46/47 do the same for architecture code.

Patch 47/47 finally removes pm_power_off.

For the most part, the individual patches include explanations why 
specific
priorities were chosen, at least if the selected priority is not the 
default
priority. Subsystem and architecture maintainers are encouraged to have 
a look
at the selected priorities and suggest improvements.

I ran the final code through my normal build and qemu tests. Results are
available at http://server.roeck-us.net:8010/builders in the 
'poweroff-handler'
column. I also built all available configurations for arm, mips, 
powerpc,
m68k, and sh architectures.

The series is available in branch poweroff-handler of my repository at
git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git.
It is based on 3.18-rc2.

A note on Cc: In the initial submission I had way too many Cc:, causing 
the
patchset to be treated as spam by many mailers and mailing list 
handlers,
which of course defeated the purpose. This time around I am cutting down
the distribution list down significantly. My apologies to anyone I may 
have
failed to copy this time around.
   
   you touch every single architecture with this patchset, but you didn't
   care about Ccing any of the arch-specific mailing lists, like lakml ?
   
  What is lakml ? linux-kernel@vger.kernel.org was copied, if that is what you
 
 only the greatest mailing list of all time.
 
 heh, Linux ARM Kernel Mailing List.
 

Similar to linux-omap, linux-arm-kernel was copied on individual patches
if get_maintainer.pl suggested it. I'll be happy to add both lists manually
to the entire series for the next version of the patch set if the respective
maintainers (Tony and Russell) ask me to do so.

Note that this doesn't mean that the patches will actually be accepted by
those lists, especially if the lists are moderated for non-subscribers.

Guenter
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to 

Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-10-27 Thread Johan Hovold
On Mon, Oct 27, 2014 at 12:33:10PM -0500, Felipe Balbi wrote:
> On Mon, Oct 27, 2014 at 10:16:17AM -0700, Guenter Roeck wrote:
> > On Mon, Oct 27, 2014 at 11:03:24AM -0500, Felipe Balbi wrote:
> > > Adding Johan, who's working on RTC power off for AM335x devices
> > > 
> > Hi Felipe,
> > 
> > is that the rtc-omap driver ?
> 
> yes it is.
> 
> > I am tracking linux-next for related changes. As new power-off handlers are
> > introduced, I prepare patches for those as well. I currently have patches 
> > for
> > the following two drivers in the queue:
> > drivers/regulator/act8865-regulator.c
> > drivers/rtc/rtc-omap.c
> > 
> > I plan to send review requests for those patches in a week or so (I think
> > there is still some change pending to the power-off function in the rtc-omap
> > driver, and I want to wait for it).
> 
> yeah, Johan's working on that.

It's finished. I just sent the final version to akpm this morning
(adding a single mdelay), so you should be fine basing any conversion on
either v2 (in mmotm) or v3.

Johan
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-10-27 Thread Felipe Balbi
On Mon, Oct 27, 2014 at 10:16:17AM -0700, Guenter Roeck wrote:
> On Mon, Oct 27, 2014 at 11:03:24AM -0500, Felipe Balbi wrote:
> > Adding Johan, who's working on RTC power off for AM335x devices
> > 
> Hi Felipe,
> 
> is that the rtc-omap driver ?

yes it is.

> I am tracking linux-next for related changes. As new power-off handlers are
> introduced, I prepare patches for those as well. I currently have patches for
> the following two drivers in the queue:
>   drivers/regulator/act8865-regulator.c
>   drivers/rtc/rtc-omap.c
> 
> I plan to send review requests for those patches in a week or so (I think
> there is still some change pending to the power-off function in the rtc-omap
> driver, and I want to wait for it).

yeah, Johan's working on that.

> My current plan is to send a pull request for the series directly to Linus
> when the next commit window opens; this is what a number of maintainers
> suggested I should do. This pull request would exclude the last patch,
> so pm_power_off would still be there. Next steps would then be to submit
> another set of patches to update the newly introduced power-off handlers
> and then to finally remove pm_power_off; this would probably happen after
> the commit window closes.
> 
> At least that is the plan unless someone has a better idea 

sounds like a good idea to me :-)

> There may be some variants; for example, it might make sense to create an
> immutable branch with the key patches (1-3 and 8) to enable others to use
> the new functions immediately. That would require Acks from affected
> maintainers for patch 1, though, so I can not do that yet.

alright, I think an immutable branch people can merge would be
appreciated nevertheless, but I'd certainly defer that to arch and soc
maintainers.

cheers

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-10-27 Thread Guenter Roeck
On Mon, Oct 27, 2014 at 11:03:24AM -0500, Felipe Balbi wrote:
> Adding Johan, who's working on RTC power off for AM335x devices
> 
Hi Felipe,

is that the rtc-omap driver ?

I am tracking linux-next for related changes. As new power-off handlers are
introduced, I prepare patches for those as well. I currently have patches for
the following two drivers in the queue:
drivers/regulator/act8865-regulator.c
drivers/rtc/rtc-omap.c

I plan to send review requests for those patches in a week or so (I think
there is still some change pending to the power-off function in the rtc-omap
driver, and I want to wait for it).

My current plan is to send a pull request for the series directly to Linus
when the next commit window opens; this is what a number of maintainers
suggested I should do. This pull request would exclude the last patch,
so pm_power_off would still be there. Next steps would then be to submit
another set of patches to update the newly introduced power-off handlers
and then to finally remove pm_power_off; this would probably happen after
the commit window closes.

At least that is the plan unless someone has a better idea 

There may be some variants; for example, it might make sense to create an
immutable branch with the key patches (1-3 and 8) to enable others to use
the new functions immediately. That would require Acks from affected
maintainers for patch 1, though, so I can not do that yet.

Thanks,
Guenter

> On Mon, Oct 27, 2014 at 08:55:07AM -0700, Guenter Roeck wrote:
> > Various drivers implement architecture and/or device specific means to
> > remove power from the system.  For the most part, those drivers set the
> > global variable pm_power_off to point to a function within the driver.
> > 
> > This mechanism has a number of drawbacks.  Typically only one means
> > to remove power is supported (at least if pm_power_off is used).
> > At least in theory there can be multiple means to remove power, some of
> > which may be less desirable.  For example, one mechanism might power off the
> > entire system through an I/O port or gpio pin, while another might power off
> > a board by disabling its power controller. Other mechanisms may really just
> > execute a restart sequence or drop into the ROM monitor, or put the CPU into
> > sleep mode.  Using pm_power_off can also be racy if the function pointer is
> > set from a driver built as module, as the driver may be in the process of
> > being unloaded when pm_power_off is called.  If there are multiple power-off
> > handlers in the system, removing a module with such a handler may
> > inadvertently reset the pointer to pm_power_off to NULL, leaving the system
> > with no means to remove power.
> > 
> > Introduce a system power-off handler call chain to solve the described
> > problems.  This call chain is expected to be executed from the architecture
> > specific machine_power_off() function.  Drivers providing system power-off
> > functionality are expected to register with this call chain.  By using the
> > priority field in the notifier block, callers can control power-off handler
> > execution sequence and thus ensure that the power-off handler with the
> > optimal capabilities to remove power for a given system is called first.
> > A call chain instead of a single call to the highest priority handler is
> > used to provide fallback: If multiple power-off handlers are installed,
> > all handlers will be called until one actually succeeds to power off the
> > system.
> > 
> > Patch 01/47 implements the power-off handler API.
> > 
> > Patches 02/47 to 04/47 are cleanup patches to prepare for the move of
> > pm_power_off to a common location.
> > 
> > Patches 05/47 to 07/47 remove references to pm_power_off from devicetree
> > bindings descriptions.
> > 
> > Patch 08/47 moves the pm_power_off variable from architecture code to
> > kernel/reboot.c. 
> > 
> > Patches 09/47 to 34/47 convert various drivers to register with the kernel
> > power-off handler instead of setting pm_power_off directly.
> > 
> > Patches 35/47 to 46/47 do the same for architecture code.
> > 
> > Patch 47/47 finally removes pm_power_off.
> > 
> > For the most part, the individual patches include explanations why specific
> > priorities were chosen, at least if the selected priority is not the default
> > priority. Subsystem and architecture maintainers are encouraged to have a 
> > look
> > at the selected priorities and suggest improvements.
> > 
> > I ran the final code through my normal build and qemu tests. Results are
> > available at http://server.roeck-us.net:8010/builders in the 
> > 'poweroff-handler'
> > column. I also built all available configurations for arm, mips, powerpc,
> > m68k, and sh architectures.
> > 
> > The series is available in branch poweroff-handler of my repository at
> > git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git.
> > It is based on 3.18-rc2.
> > 
> > A note on Cc: In the initial submission I had way 

Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-10-27 Thread Felipe Balbi
Adding Johan, who's working on RTC power off for AM335x devices

On Mon, Oct 27, 2014 at 08:55:07AM -0700, Guenter Roeck wrote:
> Various drivers implement architecture and/or device specific means to
> remove power from the system.  For the most part, those drivers set the
> global variable pm_power_off to point to a function within the driver.
> 
> This mechanism has a number of drawbacks.  Typically only one means
> to remove power is supported (at least if pm_power_off is used).
> At least in theory there can be multiple means to remove power, some of
> which may be less desirable.  For example, one mechanism might power off the
> entire system through an I/O port or gpio pin, while another might power off
> a board by disabling its power controller. Other mechanisms may really just
> execute a restart sequence or drop into the ROM monitor, or put the CPU into
> sleep mode.  Using pm_power_off can also be racy if the function pointer is
> set from a driver built as module, as the driver may be in the process of
> being unloaded when pm_power_off is called.  If there are multiple power-off
> handlers in the system, removing a module with such a handler may
> inadvertently reset the pointer to pm_power_off to NULL, leaving the system
> with no means to remove power.
> 
> Introduce a system power-off handler call chain to solve the described
> problems.  This call chain is expected to be executed from the architecture
> specific machine_power_off() function.  Drivers providing system power-off
> functionality are expected to register with this call chain.  By using the
> priority field in the notifier block, callers can control power-off handler
> execution sequence and thus ensure that the power-off handler with the
> optimal capabilities to remove power for a given system is called first.
> A call chain instead of a single call to the highest priority handler is
> used to provide fallback: If multiple power-off handlers are installed,
> all handlers will be called until one actually succeeds to power off the
> system.
> 
> Patch 01/47 implements the power-off handler API.
> 
> Patches 02/47 to 04/47 are cleanup patches to prepare for the move of
> pm_power_off to a common location.
> 
> Patches 05/47 to 07/47 remove references to pm_power_off from devicetree
> bindings descriptions.
> 
> Patch 08/47 moves the pm_power_off variable from architecture code to
> kernel/reboot.c. 
> 
> Patches 09/47 to 34/47 convert various drivers to register with the kernel
> power-off handler instead of setting pm_power_off directly.
> 
> Patches 35/47 to 46/47 do the same for architecture code.
> 
> Patch 47/47 finally removes pm_power_off.
> 
> For the most part, the individual patches include explanations why specific
> priorities were chosen, at least if the selected priority is not the default
> priority. Subsystem and architecture maintainers are encouraged to have a look
> at the selected priorities and suggest improvements.
> 
> I ran the final code through my normal build and qemu tests. Results are
> available at http://server.roeck-us.net:8010/builders in the 
> 'poweroff-handler'
> column. I also built all available configurations for arm, mips, powerpc,
> m68k, and sh architectures.
> 
> The series is available in branch poweroff-handler of my repository at
> git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git.
> It is based on 3.18-rc2.
> 
> A note on Cc: In the initial submission I had way too many Cc:, causing the
> patchset to be treated as spam by many mailers and mailing list handlers,
> which of course defeated the purpose. This time around I am cutting down
> the distribution list down significantly. My apologies to anyone I may have
> failed to copy this time around.
> 
> Important changes since v2:
> - Rebased series to v3.18-rc2.
> - Do not hold any locks while executing the power-off call chain.
>   This ensures that power-off handlers are executed in the state
>   selected by the machine_power_off function for a given architecture,
>   ie without changing the current semantics of power-off callbacks and
>   machine_power_off functions.
>   Power-off handler registration and de-registration is handled in atomic
>   context with interrupts disabled to ensure that those functions are not
>   interrupted by code which powers off the system.
> - Use [xxx_]power_off[_xxx] instead of [xxx_]poweroff[_xxx] for newly
>   introduced function and variable names.
> - Use power-off instead of poweroff in descriptive text and comments.
> - Replace POWEROFF_PRIORITY_xxx with POWER_OFF_PRIORITY_xxx
> - Use ACPI: instead of acpi: for messages in acpi code.
> 
> Important changes since v1:
> - Rebased series to v3.18-rc1.
> - Use raw notifier with spinlock protection instead of atomic notifiers,
>   since some power-off handlers need to have interrupts enabled.
> - Renamed API functions from _poweroff to _power_off.
> - Added various Acks.
> - Build tested all configurations for arm, powerpc, 

Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-10-27 Thread Felipe Balbi
Adding Johan, who's working on RTC power off for AM335x devices

On Mon, Oct 27, 2014 at 08:55:07AM -0700, Guenter Roeck wrote:
 Various drivers implement architecture and/or device specific means to
 remove power from the system.  For the most part, those drivers set the
 global variable pm_power_off to point to a function within the driver.
 
 This mechanism has a number of drawbacks.  Typically only one means
 to remove power is supported (at least if pm_power_off is used).
 At least in theory there can be multiple means to remove power, some of
 which may be less desirable.  For example, one mechanism might power off the
 entire system through an I/O port or gpio pin, while another might power off
 a board by disabling its power controller. Other mechanisms may really just
 execute a restart sequence or drop into the ROM monitor, or put the CPU into
 sleep mode.  Using pm_power_off can also be racy if the function pointer is
 set from a driver built as module, as the driver may be in the process of
 being unloaded when pm_power_off is called.  If there are multiple power-off
 handlers in the system, removing a module with such a handler may
 inadvertently reset the pointer to pm_power_off to NULL, leaving the system
 with no means to remove power.
 
 Introduce a system power-off handler call chain to solve the described
 problems.  This call chain is expected to be executed from the architecture
 specific machine_power_off() function.  Drivers providing system power-off
 functionality are expected to register with this call chain.  By using the
 priority field in the notifier block, callers can control power-off handler
 execution sequence and thus ensure that the power-off handler with the
 optimal capabilities to remove power for a given system is called first.
 A call chain instead of a single call to the highest priority handler is
 used to provide fallback: If multiple power-off handlers are installed,
 all handlers will be called until one actually succeeds to power off the
 system.
 
 Patch 01/47 implements the power-off handler API.
 
 Patches 02/47 to 04/47 are cleanup patches to prepare for the move of
 pm_power_off to a common location.
 
 Patches 05/47 to 07/47 remove references to pm_power_off from devicetree
 bindings descriptions.
 
 Patch 08/47 moves the pm_power_off variable from architecture code to
 kernel/reboot.c. 
 
 Patches 09/47 to 34/47 convert various drivers to register with the kernel
 power-off handler instead of setting pm_power_off directly.
 
 Patches 35/47 to 46/47 do the same for architecture code.
 
 Patch 47/47 finally removes pm_power_off.
 
 For the most part, the individual patches include explanations why specific
 priorities were chosen, at least if the selected priority is not the default
 priority. Subsystem and architecture maintainers are encouraged to have a look
 at the selected priorities and suggest improvements.
 
 I ran the final code through my normal build and qemu tests. Results are
 available at http://server.roeck-us.net:8010/builders in the 
 'poweroff-handler'
 column. I also built all available configurations for arm, mips, powerpc,
 m68k, and sh architectures.
 
 The series is available in branch poweroff-handler of my repository at
 git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git.
 It is based on 3.18-rc2.
 
 A note on Cc: In the initial submission I had way too many Cc:, causing the
 patchset to be treated as spam by many mailers and mailing list handlers,
 which of course defeated the purpose. This time around I am cutting down
 the distribution list down significantly. My apologies to anyone I may have
 failed to copy this time around.
 
 Important changes since v2:
 - Rebased series to v3.18-rc2.
 - Do not hold any locks while executing the power-off call chain.
   This ensures that power-off handlers are executed in the state
   selected by the machine_power_off function for a given architecture,
   ie without changing the current semantics of power-off callbacks and
   machine_power_off functions.
   Power-off handler registration and de-registration is handled in atomic
   context with interrupts disabled to ensure that those functions are not
   interrupted by code which powers off the system.
 - Use [xxx_]power_off[_xxx] instead of [xxx_]poweroff[_xxx] for newly
   introduced function and variable names.
 - Use power-off instead of poweroff in descriptive text and comments.
 - Replace POWEROFF_PRIORITY_xxx with POWER_OFF_PRIORITY_xxx
 - Use ACPI: instead of acpi: for messages in acpi code.
 
 Important changes since v1:
 - Rebased series to v3.18-rc1.
 - Use raw notifier with spinlock protection instead of atomic notifiers,
   since some power-off handlers need to have interrupts enabled.
 - Renamed API functions from _poweroff to _power_off.
 - Added various Acks.
 - Build tested all configurations for arm, powerpc, and mips architectures.
 - Fixed two compile errors in mips patch.
 - Replaced dev_err and 

Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-10-27 Thread Guenter Roeck
On Mon, Oct 27, 2014 at 11:03:24AM -0500, Felipe Balbi wrote:
 Adding Johan, who's working on RTC power off for AM335x devices
 
Hi Felipe,

is that the rtc-omap driver ?

I am tracking linux-next for related changes. As new power-off handlers are
introduced, I prepare patches for those as well. I currently have patches for
the following two drivers in the queue:
drivers/regulator/act8865-regulator.c
drivers/rtc/rtc-omap.c

I plan to send review requests for those patches in a week or so (I think
there is still some change pending to the power-off function in the rtc-omap
driver, and I want to wait for it).

My current plan is to send a pull request for the series directly to Linus
when the next commit window opens; this is what a number of maintainers
suggested I should do. This pull request would exclude the last patch,
so pm_power_off would still be there. Next steps would then be to submit
another set of patches to update the newly introduced power-off handlers
and then to finally remove pm_power_off; this would probably happen after
the commit window closes.

At least that is the plan unless someone has a better idea 

There may be some variants; for example, it might make sense to create an
immutable branch with the key patches (1-3 and 8) to enable others to use
the new functions immediately. That would require Acks from affected
maintainers for patch 1, though, so I can not do that yet.

Thanks,
Guenter

 On Mon, Oct 27, 2014 at 08:55:07AM -0700, Guenter Roeck wrote:
  Various drivers implement architecture and/or device specific means to
  remove power from the system.  For the most part, those drivers set the
  global variable pm_power_off to point to a function within the driver.
  
  This mechanism has a number of drawbacks.  Typically only one means
  to remove power is supported (at least if pm_power_off is used).
  At least in theory there can be multiple means to remove power, some of
  which may be less desirable.  For example, one mechanism might power off the
  entire system through an I/O port or gpio pin, while another might power off
  a board by disabling its power controller. Other mechanisms may really just
  execute a restart sequence or drop into the ROM monitor, or put the CPU into
  sleep mode.  Using pm_power_off can also be racy if the function pointer is
  set from a driver built as module, as the driver may be in the process of
  being unloaded when pm_power_off is called.  If there are multiple power-off
  handlers in the system, removing a module with such a handler may
  inadvertently reset the pointer to pm_power_off to NULL, leaving the system
  with no means to remove power.
  
  Introduce a system power-off handler call chain to solve the described
  problems.  This call chain is expected to be executed from the architecture
  specific machine_power_off() function.  Drivers providing system power-off
  functionality are expected to register with this call chain.  By using the
  priority field in the notifier block, callers can control power-off handler
  execution sequence and thus ensure that the power-off handler with the
  optimal capabilities to remove power for a given system is called first.
  A call chain instead of a single call to the highest priority handler is
  used to provide fallback: If multiple power-off handlers are installed,
  all handlers will be called until one actually succeeds to power off the
  system.
  
  Patch 01/47 implements the power-off handler API.
  
  Patches 02/47 to 04/47 are cleanup patches to prepare for the move of
  pm_power_off to a common location.
  
  Patches 05/47 to 07/47 remove references to pm_power_off from devicetree
  bindings descriptions.
  
  Patch 08/47 moves the pm_power_off variable from architecture code to
  kernel/reboot.c. 
  
  Patches 09/47 to 34/47 convert various drivers to register with the kernel
  power-off handler instead of setting pm_power_off directly.
  
  Patches 35/47 to 46/47 do the same for architecture code.
  
  Patch 47/47 finally removes pm_power_off.
  
  For the most part, the individual patches include explanations why specific
  priorities were chosen, at least if the selected priority is not the default
  priority. Subsystem and architecture maintainers are encouraged to have a 
  look
  at the selected priorities and suggest improvements.
  
  I ran the final code through my normal build and qemu tests. Results are
  available at http://server.roeck-us.net:8010/builders in the 
  'poweroff-handler'
  column. I also built all available configurations for arm, mips, powerpc,
  m68k, and sh architectures.
  
  The series is available in branch poweroff-handler of my repository at
  git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git.
  It is based on 3.18-rc2.
  
  A note on Cc: In the initial submission I had way too many Cc:, causing the
  patchset to be treated as spam by many mailers and mailing list handlers,
  which of course defeated the 

Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-10-27 Thread Felipe Balbi
On Mon, Oct 27, 2014 at 10:16:17AM -0700, Guenter Roeck wrote:
 On Mon, Oct 27, 2014 at 11:03:24AM -0500, Felipe Balbi wrote:
  Adding Johan, who's working on RTC power off for AM335x devices
  
 Hi Felipe,
 
 is that the rtc-omap driver ?

yes it is.

 I am tracking linux-next for related changes. As new power-off handlers are
 introduced, I prepare patches for those as well. I currently have patches for
 the following two drivers in the queue:
   drivers/regulator/act8865-regulator.c
   drivers/rtc/rtc-omap.c
 
 I plan to send review requests for those patches in a week or so (I think
 there is still some change pending to the power-off function in the rtc-omap
 driver, and I want to wait for it).

yeah, Johan's working on that.

 My current plan is to send a pull request for the series directly to Linus
 when the next commit window opens; this is what a number of maintainers
 suggested I should do. This pull request would exclude the last patch,
 so pm_power_off would still be there. Next steps would then be to submit
 another set of patches to update the newly introduced power-off handlers
 and then to finally remove pm_power_off; this would probably happen after
 the commit window closes.
 
 At least that is the plan unless someone has a better idea 

sounds like a good idea to me :-)

 There may be some variants; for example, it might make sense to create an
 immutable branch with the key patches (1-3 and 8) to enable others to use
 the new functions immediately. That would require Acks from affected
 maintainers for patch 1, though, so I can not do that yet.

alright, I think an immutable branch people can merge would be
appreciated nevertheless, but I'd certainly defer that to arch and soc
maintainers.

cheers

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH v3 00/47] kernel: Add support for power-off handler call chain

2014-10-27 Thread Johan Hovold
On Mon, Oct 27, 2014 at 12:33:10PM -0500, Felipe Balbi wrote:
 On Mon, Oct 27, 2014 at 10:16:17AM -0700, Guenter Roeck wrote:
  On Mon, Oct 27, 2014 at 11:03:24AM -0500, Felipe Balbi wrote:
   Adding Johan, who's working on RTC power off for AM335x devices
   
  Hi Felipe,
  
  is that the rtc-omap driver ?
 
 yes it is.
 
  I am tracking linux-next for related changes. As new power-off handlers are
  introduced, I prepare patches for those as well. I currently have patches 
  for
  the following two drivers in the queue:
  drivers/regulator/act8865-regulator.c
  drivers/rtc/rtc-omap.c
  
  I plan to send review requests for those patches in a week or so (I think
  there is still some change pending to the power-off function in the rtc-omap
  driver, and I want to wait for it).
 
 yeah, Johan's working on that.

It's finished. I just sent the final version to akpm this morning
(adding a single mdelay), so you should be fine basing any conversion on
either v2 (in mmotm) or v3.

Johan
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/