Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751760Ab2EHRqI (ORCPT ); Tue, 8 May 2012 13:46:08 -0400 Received: from mail-yx0-f174.google.com ([209.85.213.174]:34856 "EHLO mail-yx0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751276Ab2EHRqF convert rfc822-to-8bit (ORCPT ); Tue, 8 May 2012 13:46:05 -0400 MIME-Version: 1.0 In-Reply-To: <1335884506-15370-1-git-send-email-bryan.wu@canonical.com> References: <1335884506-15370-1-git-send-email-bryan.wu@canonical.com> From: Bryan Wu Date: Wed, 9 May 2012 01:45:43 +0800 X-Google-Sender-Auth: 8v8qX3rGAbOOc0f0hzdzoAsQtu0 Message-ID: Subject: Re: [PATCH v9 00/19] Introduce a led trigger for CPU activity and consolidate LED driver in ARM To: linux@arm.linux.org.uk, rpurdie@rpsys.net, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linus.walleij@linaro.org, akpm@linux-foundation.org, arnd.bergmann@linaro.org, nicolas.pitre@linaro.org, tim.gardner@canonical.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 14438 Lines: 295 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 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@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@PandaBoard:~# dmesg | grep ledtrig-cpu > [ ? ?2.033203] ledtrig-cpu: registered to indicate activity on CPUs > root@PandaBoard:~# cat /sys/class/leds/pandaboard\:\:status1/trigger > none nand-disk mmc0 mmc1 [heartbeat] cpu0 cpu1 > root@PandaBoard:~# cat /sys/class/leds/pandaboard\:\:status2/trigger > none nand-disk [mmc0] mmc1 heartbeat cpu0 cpu1 > root@PandaBoard:~# echo cpu0 > /sys/class/leds/pandaboard\:\:status1/trigger > root@PandaBoard:~# cat /sys/class/leds/pandaboard\:\:status1/trigger > none nand-disk mmc0 mmc1 heartbeat [cpu0] cpu1 > root@PandaBoard:~# echo cpu1 > /sys/class/leds/pandaboard\:\:status2/trigger > root@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@PandaBoard:~# dd if=/dev/zero of=/dev/null & > [1] 1202 > root@PandaBoard:~# taskset -pc 0 1202 > pid 1202's current affinity list: 0,1 > pid 1202's new affinity list: 0 > root@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@PandaBoard:~# echo 0 > /sys/devices/system/cpu/cpu1/online > root@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@PandaBoard:~# echo 1 > /sys/devices/system/cpu/cpu1/online > [ ?293.458679] CPU1: Unknown IPI message 0x1 > root@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@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel -- Bryan Wu Kernel Developer ? ?+86.186-168-78255 Mobile Canonical Ltd. ? ? ?www.canonical.com Ubuntu - Linux for human beings | www.ubuntu.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/