diff options
author | Alexander Gordeev <agordeev@redhat.com> | 2013-05-22 08:53:48 +0900 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2013-05-22 08:53:48 +0900 |
commit | b29900e62598cecd519c9ab2b8e4d03f8ebf702d (patch) | |
tree | bb7082a5ea560b02730b3f7b257d3a7a82e163d7 | |
parent | 966fbe193f47c68e70a80ec9991098e88e7959cb (diff) |
AHCI: Make distinct names for ports in /proc/interrupts
Currently all interrupts assigned to AHCI ports show up in
'/proc/interrupts' as 'ahci'. This fix adds port numbers as
suffixes and hence makes the descriptions distinct.
Reported-by: Jan Beulich <JBeulich@suse.com>
Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
-rw-r--r-- | drivers/ata/ahci.c | 4 | ||||
-rw-r--r-- | drivers/ata/ahci.h | 1 | ||||
-rw-r--r-- | drivers/ata/libahci.c | 10 |
3 files changed, 14 insertions, 1 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 251e57d3894..4d1c672d170 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -1142,9 +1142,11 @@ int ahci_host_activate(struct ata_host *host, int irq, unsigned int n_msis) return rc; for (i = 0; i < host->n_ports; i++) { + struct ahci_port_priv *pp = host->ports[i]->private_data; + rc = devm_request_threaded_irq(host->dev, irq + i, ahci_hw_interrupt, ahci_thread_fn, IRQF_SHARED, - dev_driver_string(host->dev), host->ports[i]); + pp->irq_desc, host->ports[i]); if (rc) goto out_free_irqs; } diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h index b830e6c9fe4..05adf29a281 100644 --- a/drivers/ata/ahci.h +++ b/drivers/ata/ahci.h @@ -306,6 +306,7 @@ struct ahci_port_priv { int fbs_last_dev; /* save FBS.DEV of last FIS */ /* enclosure management info per PM slot */ struct ahci_em_priv em_priv[EM_MAX_SLOTS]; + char *irq_desc; /* desc in /proc/interrupts */ }; struct ahci_host_priv { diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c index 34c82167b96..3797a7bba15 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c @@ -2234,6 +2234,16 @@ static int ahci_port_start(struct ata_port *ap) if (!pp) return -ENOMEM; + if (ap->host->n_ports > 1) { + pp->irq_desc = devm_kzalloc(dev, 8, GFP_KERNEL); + if (!pp->irq_desc) { + devm_kfree(dev, pp); + return -ENOMEM; + } + snprintf(pp->irq_desc, 8, + "%s%d", dev_driver_string(dev), ap->port_no); + } + /* check FBS capability */ if ((hpriv->cap & HOST_CAP_FBS) && sata_pmp_supported(ap)) { void __iomem *port_mmio = ahci_port_base(ap); |