2009-01-10 15:30:06

by Carsten Schlote

[permalink] [raw]
Subject: [PATCH][ATA] Add ide-disk led-trigger to ATA subsystem

- Adds a call to ide-disk LED trigger to libata-sff.c
- Changed Kconfig to allow for ide-disk LED trigger when ATA drivers
are enabled.

Open Issue:
- There might be more suitable place to call the trigger function.
Only devices using libata-sff.c trigger LEDs right now.

Signed-off-by: Carsten Schlote <[email protected]>
---
drivers/ata/libata-sff.c | 3 +++
drivers/leds/Kconfig | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)

Index: .kernel/drivers/leds/Kconfig
===================================================================
--- .kernel.orig/drivers/leds/Kconfig 2009-01-07 22:13:40.000000000
+0100
+++ .kernel/drivers/leds/Kconfig 2009-01-07 22:14:46.000000000 +0100
@@ -185,7 +185,7 @@

config LEDS_TRIGGER_IDE_DISK
bool "LED IDE Disk Trigger"
- depends on LEDS_TRIGGERS && BLK_DEV_IDEDISK
+ depends on LEDS_TRIGGERS && BLK_DEV_IDEDISK || ATA
help
This allows LEDs to be controlled by IDE disk activity.
If unsure, say Y.
Index: .kernel/drivers/ata/libata-sff.c
===================================================================
--- .kernel.orig/drivers/ata/libata-sff.c 2009-01-07 22:14:09.000000000
+0100
+++ .kernel/drivers/ata/libata-sff.c 2009-01-07 22:14:46.000000000 +0100
@@ -36,6 +36,7 @@
#include <linux/pci.h>
#include <linux/libata.h>
#include <linux/highmem.h>
+#include <linux/leds.h>

#include "libata.h"

@@ -647,6 +648,8 @@
*/
void ata_sff_exec_command(struct ata_port *ap, const struct
ata_taskfile *tf)
{
+ ledtrig_ide_activity();
+
DPRINTK("ata%u: cmd 0x%X\n", ap->print_id, tf->command);

iowrite8(tf->command, ap->ioaddr.command_addr);


2009-01-14 08:25:48

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH][ATA] Add ide-disk led-trigger to ATA subsystem

(cc linux-ide)

On Sat, 10 Jan 2009 16:08:27 +0100 Carsten Schlote <[email protected]> wrote:

> - Adds a call to ide-disk LED trigger to libata-sff.c
> - Changed Kconfig to allow for ide-disk LED trigger when ATA drivers
> are enabled.
>
> Open Issue:
> - There might be more suitable place to call the trigger function.
> Only devices using libata-sff.c trigger LEDs right now.
>
> Signed-off-by: Carsten Schlote <[email protected]>
> ---
> drivers/ata/libata-sff.c | 3 +++
> drivers/leds/Kconfig | 2 +-
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
> Index: .kernel/drivers/leds/Kconfig
> ===================================================================
> --- .kernel.orig/drivers/leds/Kconfig 2009-01-07 22:13:40.000000000
> +0100
> +++ .kernel/drivers/leds/Kconfig 2009-01-07 22:14:46.000000000 +0100
> @@ -185,7 +185,7 @@
>
> config LEDS_TRIGGER_IDE_DISK
> bool "LED IDE Disk Trigger"
> - depends on LEDS_TRIGGERS && BLK_DEV_IDEDISK
> + depends on LEDS_TRIGGERS && BLK_DEV_IDEDISK || ATA
> help
> This allows LEDs to be controlled by IDE disk activity.
> If unsure, say Y.
> Index: .kernel/drivers/ata/libata-sff.c
> ===================================================================
> --- .kernel.orig/drivers/ata/libata-sff.c 2009-01-07 22:14:09.000000000
> +0100
> +++ .kernel/drivers/ata/libata-sff.c 2009-01-07 22:14:46.000000000 +0100
> @@ -36,6 +36,7 @@
> #include <linux/pci.h>
> #include <linux/libata.h>
> #include <linux/highmem.h>
> +#include <linux/leds.h>
>
> #include "libata.h"
>
> @@ -647,6 +648,8 @@
> */
> void ata_sff_exec_command(struct ata_port *ap, const struct
> ata_taskfile *tf)
> {
> + ledtrig_ide_activity();
> +
> DPRINTK("ata%u: cmd 0x%X\n", ap->print_id, tf->command);
>
> iowrite8(tf->command, ap->ioaddr.command_addr);
>

2009-01-18 08:21:57

by Pavel Machek

[permalink] [raw]
Subject: Re: [PATCH][ATA] Add ide-disk led-trigger to ATA subsystem

On Sat 2009-01-10 16:08:27, Carsten Schlote wrote:
> - Adds a call to ide-disk LED trigger to libata-sff.c
> - Changed Kconfig to allow for ide-disk LED trigger when ATA drivers
> are enabled.
>
> Open Issue:
> - There might be more suitable place to call the trigger function.
> Only devices using libata-sff.c trigger LEDs right now.
>
> Signed-off-by: Carsten Schlote <[email protected]>
> ---
> drivers/ata/libata-sff.c | 3 +++
> drivers/leds/Kconfig | 2 +-
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
> Index: .kernel/drivers/leds/Kconfig
> ===================================================================
> --- .kernel.orig/drivers/leds/Kconfig 2009-01-07 22:13:40.000000000
> +0100
> +++ .kernel/drivers/leds/Kconfig 2009-01-07 22:14:46.000000000 +0100
> @@ -185,7 +185,7 @@
>
> config LEDS_TRIGGER_IDE_DISK
> bool "LED IDE Disk Trigger"
> - depends on LEDS_TRIGGERS && BLK_DEV_IDEDISK
> + depends on LEDS_TRIGGERS && BLK_DEV_IDEDISK || ATA

()s might be nice?

> @@ -647,6 +648,8 @@
> */
> void ata_sff_exec_command(struct ata_port *ap, const struct
> ata_taskfile *tf)
> {
> + ledtrig_ide_activity();
> +
> DPRINTK("ata%u: cmd 0x%X\n", ap->print_id, tf->command);
>
> iowrite8(tf->command, ap->ioaddr.command_addr);
>

Is there a more generic place so that we won't have to modify all the
libata drivers?
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

2009-01-18 15:50:46

by Jeff Garzik

[permalink] [raw]
Subject: Re: [PATCH][ATA] Add ide-disk led-trigger to ATA subsystem

Pavel Machek wrote:
> On Sat 2009-01-10 16:08:27, Carsten Schlote wrote:
>> void ata_sff_exec_command(struct ata_port *ap, const struct
>> ata_taskfile *tf)
>> {
>> + ledtrig_ide_activity();
>> +
>> DPRINTK("ata%u: cmd 0x%X\n", ap->print_id, tf->command);
>>
>> iowrite8(tf->command, ap->ioaddr.command_addr);
>>
>
> Is there a more generic place so that we won't have to modify all the
> libata drivers?


One would think you could do this at the block layer...

Jeff


2009-01-18 18:30:08

by Alan

[permalink] [raw]
Subject: Re: [PATCH][ATA] Add ide-disk led-trigger to ATA subsystem

On Sun, 18 Jan 2009 10:50:30 -0500
Jeff Garzik <[email protected]> wrote:

> Pavel Machek wrote:
> > On Sat 2009-01-10 16:08:27, Carsten Schlote wrote:
> >> void ata_sff_exec_command(struct ata_port *ap, const struct
> >> ata_taskfile *tf)
> >> {
> >> + ledtrig_ide_activity();
> >> +
> >> DPRINTK("ata%u: cmd 0x%X\n", ap->print_id, tf->command);
> >>
> >> iowrite8(tf->command, ap->ioaddr.command_addr);
> >>
> >
> > Is there a more generic place so that we won't have to modify all the
> > libata drivers?
>
>
> One would think you could do this at the block layer...

ata_sff_exec_command is also on a timing critical path so the wrong place
to be touching other stuff. It's mid command issue.