Thread (40 messages) 40 messages, 7 authors, 2012-05-18

[PATCH v9 00/19] Introduce a led trigger for CPU activity and consolidate LED driver in ARM

From: Bryan Wu <hidden>
Date: 2012-05-08 17:46:08
Also in: lkml

Andrew, Richard and Russell,

Any comments and suggestions about my v9 patchset.

Thanks a lot,
-Bryan

On Tue, May 1, 2012 at 11:01 PM, Bryan Wu [off-list ref] wrote:
Based on Linus Walleij's ARM LED consolidation work, this patchset introduce a
new generic led trigger for CPU not only for ARM but also for others.

For enabling CPU idle event, CPU arch code should call ledtrig_cpu() stub to
trigger idle start or idle end event.

These patches convert old style LED driver in arch/arm to gpio_led or new led
driver interface. Against linux-next 20120501 and build successfully for all the machines.

Test ledtrig-cpu driver on OMAP4 Panda board.
--
root at PandaBoard:~# uname -a
Linux PandaBoard 3.4.0-rc5-next-20120501-00019-gccaf932 #2 SMP Tue May 1 22:43:58 CST 2012 armv7l armv7l armv7l GNU/Linux
root at PandaBoard:~# dmesg | grep ledtrig-cpu
[ ? ?2.033203] ledtrig-cpu: registered to indicate activity on CPUs
root at PandaBoard:~# cat /sys/class/leds/pandaboard\:\:status1/trigger
none nand-disk mmc0 mmc1 [heartbeat] cpu0 cpu1
root at PandaBoard:~# cat /sys/class/leds/pandaboard\:\:status2/trigger
none nand-disk [mmc0] mmc1 heartbeat cpu0 cpu1
root at PandaBoard:~# echo cpu0 > /sys/class/leds/pandaboard\:\:status1/trigger
root at PandaBoard:~# cat /sys/class/leds/pandaboard\:\:status1/trigger
none nand-disk mmc0 mmc1 heartbeat [cpu0] cpu1
root at PandaBoard:~# echo cpu1 > /sys/class/leds/pandaboard\:\:status2/trigger
root at PandaBoard:~# cat /sys/class/leds/pandaboard\:\:status2/trigger
none nand-disk mmc0 mmc1 heartbeat cpu0 [cpu1]

Then try some heavy task like dd and use taskset to assign the task to a specific CPU,
LED will turn on or off as expect

root at PandaBoard:~# dd if=/dev/zero of=/dev/null &
[1] 1202
root at PandaBoard:~# taskset -pc 0 1202
pid 1202's current affinity list: 0,1
pid 1202's new affinity list: 0
root at PandaBoard:~# taskset -pc 1 1202
pid 1202's current affinity list: 0
pid 1202's new affinity list: 1

Try to hotplug on CPU 1

root at PandaBoard:~# echo 0 > /sys/devices/system/cpu/cpu1/online
root at PandaBoard:~# dmesg | tail
[ ? ?4.740173] EXT4-fs (mmcblk0p2): recovery complete
[ ? ?5.242736] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[ ? ?6.020446] init: ureadahead main process (764) terminated with status 5
[ ? ?6.685058] udevd[817]: starting version 175
[ ? ?7.090179] EXT4-fs (mmcblk0p2): re-mounted. Opts: errors=remount-ro
[ ? ?8.548797] init: udev-fallback-graphics main process (970) terminated with status 1
[ ? 10.964263] Adding 524232k swap on /SWAP.swap. ?Priority:-1 extents:13 across:593912k SS
[ ?128.872192] init: failsafe main process (1014) killed by TERM signal
[ ?275.078094] [sched_delayed] process 1202 (dd) no longer affine to cpu1
[ ?275.078369] CPU1: shutdown
root at PandaBoard:~# echo 1 > /sys/devices/system/cpu/cpu1/online
[ ?293.458679] CPU1: Unknown IPI message 0x1
root at PandaBoard:~# taskset -pc 1 1202
pid 1202's current affinity list: 0,1
pid 1202's new affinity list: 1
--

Please find these patches here:
? ? ? git://kernel.ubuntu.com/roc/linux-2.6/.git leds

v8 --> v9:
?* use mutex to replace rw_sema pointed out by Tim Gardner
?* add a new struct led_trigger_cpu
?* add lock_is_inited to record mutex lock initialization

v7 --> v8:
?* add a patch to unify the led-trigger name
?* fix some typo pointed

v6 --> v7:
?* add BUILD_BUG_ON() to detect NR_CPUS > 9999
?* move out pr_info from the loop as one line message
?* add percpu rw_semaphore to protect critical region in ledtrig_cpu_init()
?* fix error in English comments

v5 --> v6:
?* replace ?__get_cpu_var() to per_cpu()
?* remove smp_processor_id() which is wrong with for_each_possible_cpu()
?* test on real OMAP4 Panda board
?* add comments about CPU hotplug in the CPU LED trigger driver

v4 --> v5:
?* rebase all the patches on top of latest linux-next
?* replace on_each_cpu() with for_each_possible_cpu()
?* add some description of ledtrig_cpu() API
?* remove old leds code from driver nwflash.c, which should use a new led trigger then
?* this trigger driver can be built as module now

v3 --> v4:
?* fix a typo pointed by Jochen Friedrich
?* fix some building errors
?* add Reviewed-by and Tested-by into patch log

v2 --> v3:
?* almost rewrote the whole ledtrig-cpu driver, which is more simple
?* every CPU will have a per-CPU trigger
?* cpu trigger can be assigned to any leds
?* fix a lockdep issue in led-trigger common code
?* other fix according to review

v1 --> v2:
?* remove select operations in Kconfig of every machines
?* add back supporting of led in core module of mach-integrator
?* solidate name scheme in ledtrig-cpu.c
?* add comments of CPU_LED_* cpu led events
?* fold patches of RealView and Versatile together
?* add machine_is_ check during assabet led driver init
?* add some Acked-by in patch logs
?* remove code for simpad machine in machine-sa11000, since Jochen Friedrich
?introduced gpiolib and gpio-led driver for simpad
?* on Assabet and Netwinder machine, LED operations is reversed like:
?setting bit means turn off leds
?clearing bit means turn on leds
?* add a new function to read CM_CTRL register for led driver

Bryan Wu (19):
?led-triggers: rename *trigger to *trig for unified naming scheme
?led-triggers: create a trigger for CPU activity
?ARM: at91: convert old leds drivers to gpio_led and led_trigger
? ?drivers
?ARM: mach-realview and mach-versatile: retire custom LED code
?ARM: mach-ks8695: remove leds driver, since nobody use it
?ARM: mach-shark: retire custom LED code
?ARM: mach-orion5x: convert custom LED code to gpio_led and LED CPU
? ?trigger
?ARM: mach-integrator: move CM_CTRL to header file for accessing by
? ?other functions
?ARM: mach-integrator: retire custom LED code
?ARM: mach-clps711x: retire custom LED code of P720T machine
?ARM: mach-ebsa110: retire custom LED code
?ARM: mach-footbridge: retire custom LED code
?char: nwflash: remove old led event code
?ARM: mach-pxa: retire custom LED code
?ARM: plat-samsung: remove including old leds event API header file
?ARM: mach-pnx4008: remove including old leds event API header file
?ARM: mach-omap1: retire custom LED code
?ARM: mach-sa1100: retire custom LED code
?ARM: use new LEDS CPU trigger stub to replace old one

?arch/arm/Kconfig ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? 53 -----
?arch/arm/include/asm/leds.h ? ? ? ? ? ? ? ? ?| ? 50 -----
?arch/arm/kernel/Makefile ? ? ? ? ? ? ? ? ? ? | ? ?1 -
?arch/arm/kernel/leds.c ? ? ? ? ? ? ? ? ? ? ? | ?121 -----------
?arch/arm/kernel/process.c ? ? ? ? ? ? ? ? ? ?| ? ?6 +-
?arch/arm/kernel/time.c ? ? ? ? ? ? ? ? ? ? ? | ? 17 --
?arch/arm/mach-at91/board-csb337.c ? ? ? ? ? ?| ? ?2 -
?arch/arm/mach-at91/board-ecbat91.c ? ? ? ? ? | ? 18 +-
?arch/arm/mach-at91/board-eco920.c ? ? ? ? ? ?| ? 22 +-
?arch/arm/mach-at91/board-kafa.c ? ? ? ? ? ? ?| ? 17 +-
?arch/arm/mach-at91/board-kb9202.c ? ? ? ? ? ?| ? 23 +-
?arch/arm/mach-at91/board-rm9200dk.c ? ? ? ? ?| ? ?3 -
?arch/arm/mach-at91/board-rm9200ek.c ? ? ? ? ?| ? ?3 -
?arch/arm/mach-at91/board-rsi-ews.c ? ? ? ? ? | ? ?3 -
?arch/arm/mach-at91/board-sam9-l9260.c ? ? ? ?| ? 23 +-
?arch/arm/mach-at91/board-sam9261ek.c ? ? ? ? | ? ?3 -
?arch/arm/mach-at91/board-yl-9200.c ? ? ? ? ? | ? ?3 -
?arch/arm/mach-at91/include/mach/board.h ? ? ?| ? ?1 -
?arch/arm/mach-at91/leds.c ? ? ? ? ? ? ? ? ? ?| ?105 ---------
?arch/arm/mach-clps711x/Makefile ? ? ? ? ? ? ?| ? ?2 -
?arch/arm/mach-clps711x/common.c ? ? ? ? ? ? ?| ? ?1 -
?arch/arm/mach-clps711x/include/mach/time.h ? | ? ?2 -
?arch/arm/mach-clps711x/p720t-leds.c ? ? ? ? ?| ? 66 ------
?arch/arm/mach-clps711x/p720t.c ? ? ? ? ? ? ? | ? 59 ++++++
?arch/arm/mach-ebsa110/Makefile ? ? ? ? ? ? ? | ? ?4 +-
?arch/arm/mach-ebsa110/leds.c ? ? ? ? ? ? ? ? | ? 79 ++++---
?arch/arm/mach-footbridge/Makefile ? ? ? ? ? ?| ? ?4 -
?arch/arm/mach-footbridge/ebsa285-leds.c ? ? ?| ?138 ------------
?arch/arm/mach-footbridge/ebsa285.c ? ? ? ? ? | ? 79 +++++++
?arch/arm/mach-footbridge/netwinder-hw.c ? ? ?| ?110 ++++++++--
?arch/arm/mach-footbridge/netwinder-leds.c ? ?| ?138 ------------
?arch/arm/mach-integrator/Makefile ? ? ? ? ? ?| ? ?3 +-
?arch/arm/mach-integrator/core.c ? ? ? ? ? ? ?| ? ?3 -
?arch/arm/mach-integrator/include/mach/cm.h ? | ? ?2 +
?arch/arm/mach-integrator/leds.c ? ? ? ? ? ? ?| ?158 ++++++++------
?arch/arm/mach-ks8695/Makefile ? ? ? ? ? ? ? ?| ? ?3 -
?arch/arm/mach-ks8695/devices.c ? ? ? ? ? ? ? | ? 21 --
?arch/arm/mach-ks8695/include/mach/devices.h ?| ? ?5 -
?arch/arm/mach-ks8695/leds.c ? ? ? ? ? ? ? ? ?| ? 92 --------
?arch/arm/mach-omap1/Makefile ? ? ? ? ? ? ? ? | ? ?8 -
?arch/arm/mach-omap1/board-h2.c ? ? ? ? ? ? ? | ? 32 +++
?arch/arm/mach-omap1/board-h3.c ? ? ? ? ? ? ? | ? 32 +++
?arch/arm/mach-omap1/board-osk.c ? ? ? ? ? ? ?| ? 33 +++
?arch/arm/mach-omap1/leds-h2p2-debug.c ? ? ? ?| ?166 ---------------
?arch/arm/mach-omap1/leds-innovator.c ? ? ? ? | ? 98 ---------
?arch/arm/mach-omap1/leds-osk.c ? ? ? ? ? ? ? | ?113 ----------
?arch/arm/mach-omap1/leds.c ? ? ? ? ? ? ? ? ? | ? 69 ------
?arch/arm/mach-omap1/leds.h ? ? ? ? ? ? ? ? ? | ? ?3 -
?arch/arm/mach-omap1/time.c ? ? ? ? ? ? ? ? ? | ? ?1 -
?arch/arm/mach-omap1/timer32k.c ? ? ? ? ? ? ? | ? ?1 -
?arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c | ? ?1 -
?arch/arm/mach-orion5x/rd88f5181l-ge-setup.c ?| ? ?1 -
?arch/arm/mach-orion5x/rd88f5182-setup.c ? ? ?| ? 72 ++-----
?arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c | ? ?1 -
?arch/arm/mach-pnx4008/time.c ? ? ? ? ? ? ? ? | ? ?1 -
?arch/arm/mach-pxa/Makefile ? ? ? ? ? ? ? ? ? | ? ?8 -
?arch/arm/mach-pxa/idp.c ? ? ? ? ? ? ? ? ? ? ?| ? 79 +++++++
?arch/arm/mach-pxa/leds-idp.c ? ? ? ? ? ? ? ? | ?115 ----------
?arch/arm/mach-pxa/leds-lubbock.c ? ? ? ? ? ? | ?124 -----------
?arch/arm/mach-pxa/leds-mainstone.c ? ? ? ? ? | ?119 -----------
?arch/arm/mach-pxa/leds.c ? ? ? ? ? ? ? ? ? ? | ? 32 ---
?arch/arm/mach-pxa/leds.h ? ? ? ? ? ? ? ? ? ? | ? 13 --
?arch/arm/mach-pxa/lubbock.c ? ? ? ? ? ? ? ? ?| ? 93 ++++++++
?arch/arm/mach-pxa/mainstone.c ? ? ? ? ? ? ? ?| ? 92 ++++++++
?arch/arm/mach-realview/core.c ? ? ? ? ? ? ? ?| ? 39 ----
?arch/arm/mach-realview/core.h ? ? ? ? ? ? ? ?| ? ?2 -
?arch/arm/mach-realview/realview_eb.c ? ? ? ? | ? ?5 -
?arch/arm/mach-realview/realview_pb1176.c ? ? | ? ?5 -
?arch/arm/mach-realview/realview_pb11mp.c ? ? | ? ?5 -
?arch/arm/mach-realview/realview_pba8.c ? ? ? | ? ?5 -
?arch/arm/mach-realview/realview_pbx.c ? ? ? ?| ? ?5 -
?arch/arm/mach-sa1100/Makefile ? ? ? ? ? ? ? ?| ? ?9 -
?arch/arm/mach-sa1100/assabet.c ? ? ? ? ? ? ? | ? 83 ++++++++
?arch/arm/mach-sa1100/badge4.c ? ? ? ? ? ? ? ?| ? 30 +++
?arch/arm/mach-sa1100/cerf.c ? ? ? ? ? ? ? ? ?| ? 42 ++++
?arch/arm/mach-sa1100/hackkit.c ? ? ? ? ? ? ? | ? 32 +++
?arch/arm/mach-sa1100/lart.c ? ? ? ? ? ? ? ? ?| ? 26 +++
?arch/arm/mach-sa1100/leds-assabet.c ? ? ? ? ?| ?113 ----------
?arch/arm/mach-sa1100/leds-badge4.c ? ? ? ? ? | ?110 ----------
?arch/arm/mach-sa1100/leds-cerf.c ? ? ? ? ? ? | ?109 ----------
?arch/arm/mach-sa1100/leds-hackkit.c ? ? ? ? ?| ?111 ----------
?arch/arm/mach-sa1100/leds-lart.c ? ? ? ? ? ? | ?100 ---------
?arch/arm/mach-sa1100/leds.c ? ? ? ? ? ? ? ? ?| ? 50 -----
?arch/arm/mach-sa1100/leds.h ? ? ? ? ? ? ? ? ?| ? 13 --
?arch/arm/mach-shark/Makefile ? ? ? ? ? ? ? ? | ? ?4 +-
?arch/arm/mach-shark/core.c ? ? ? ? ? ? ? ? ? | ? ?1 -
?arch/arm/mach-shark/leds.c ? ? ? ? ? ? ? ? ? | ?226 ++++++++------------
?arch/arm/mach-versatile/core.c ? ? ? ? ? ? ? | ? ?5 -
?arch/arm/plat-omap/Kconfig ? ? ? ? ? ? ? ? ? | ? ?3 +-
?arch/arm/plat-omap/debug-leds.c ? ? ? ? ? ? ?| ?293 ++++++--------------------
?arch/arm/plat-samsung/time.c ? ? ? ? ? ? ? ? | ? ?1 -
?arch/arm/plat-versatile/Kconfig ? ? ? ? ? ? ?| ? ?4 +-
?arch/arm/plat-versatile/leds.c ? ? ? ? ? ? ? | ? 13 +-
?drivers/char/nwflash.c ? ? ? ? ? ? ? ? ? ? ? | ? 34 ---
?drivers/leds/Kconfig ? ? ? ? ? ? ? ? ? ? ? ? | ? 10 +
?drivers/leds/Makefile ? ? ? ? ? ? ? ? ? ? ? ?| ? ?1 +
?drivers/leds/led-triggers.c ? ? ? ? ? ? ? ? ?| ? 84 ++++----
?drivers/leds/ledtrig-cpu.c ? ? ? ? ? ? ? ? ? | ?163 ++++++++++++++
?include/linux/leds.h ? ? ? ? ? ? ? ? ? ? ? ? | ? 16 ++
?99 files changed, 1470 insertions(+), 3032 deletions(-)
?delete mode 100644 arch/arm/include/asm/leds.h
?delete mode 100644 arch/arm/kernel/leds.c
?delete mode 100644 arch/arm/mach-clps711x/p720t-leds.c
?delete mode 100644 arch/arm/mach-footbridge/ebsa285-leds.c
?delete mode 100644 arch/arm/mach-footbridge/netwinder-leds.c
?delete mode 100644 arch/arm/mach-ks8695/leds.c
?delete mode 100644 arch/arm/mach-omap1/leds-h2p2-debug.c
?delete mode 100644 arch/arm/mach-omap1/leds-innovator.c
?delete mode 100644 arch/arm/mach-omap1/leds-osk.c
?delete mode 100644 arch/arm/mach-omap1/leds.c
?delete mode 100644 arch/arm/mach-omap1/leds.h
?delete mode 100644 arch/arm/mach-pxa/leds-idp.c
?delete mode 100644 arch/arm/mach-pxa/leds-lubbock.c
?delete mode 100644 arch/arm/mach-pxa/leds-mainstone.c
?delete mode 100644 arch/arm/mach-pxa/leds.c
?delete mode 100644 arch/arm/mach-pxa/leds.h
?delete mode 100644 arch/arm/mach-sa1100/leds-assabet.c
?delete mode 100644 arch/arm/mach-sa1100/leds-badge4.c
?delete mode 100644 arch/arm/mach-sa1100/leds-cerf.c
?delete mode 100644 arch/arm/mach-sa1100/leds-hackkit.c
?delete mode 100644 arch/arm/mach-sa1100/leds-lart.c
?delete mode 100644 arch/arm/mach-sa1100/leds.c
?delete mode 100644 arch/arm/mach-sa1100/leds.h
?create mode 100644 drivers/leds/ledtrig-cpu.c

--
1.7.9.5


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


-- 
Bryan Wu [off-list ref]
Kernel Developer ? ?+86.186-168-78255 Mobile
Canonical Ltd. ? ? ?www.canonical.com
Ubuntu - Linux for human beings | www.ubuntu.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help