lkml.org 
[lkml]   [2013]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC 03/10] irqdomain: Add a name field
    Date
    This patch adds a name field to the irq_domain structure to help mere
    mortals understand the mappings between irq domains and virqs. It also
    converts a number of places that have open-coded some kind of fudging
    an irqdomain name to use the new field. This means a more consistent
    display of names in irq domain log messages and debugfs output.

    Signed-off-by: Grant Likely <grant.likely@linaro.org>
    ---
    include/linux/irqdomain.h | 1 +
    kernel/irq/generic-chip.c | 1 +
    kernel/irq/irqdomain.c | 19 ++++++-------------
    3 files changed, 8 insertions(+), 13 deletions(-)

    diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
    index 6f06241..e5e513c 100644
    --- a/include/linux/irqdomain.h
    +++ b/include/linux/irqdomain.h
    @@ -89,6 +89,7 @@ struct irq_domain_chip_generic;
    */
    struct irq_domain {
    struct list_head link;
    + const char *name;

    /* type of reverse mapping_technique */
    unsigned int revmap_type;
    diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c
    index 95575d8..ca98cc5 100644
    --- a/kernel/irq/generic-chip.c
    +++ b/kernel/irq/generic-chip.c
    @@ -305,6 +305,7 @@ int irq_alloc_domain_generic_chips(struct irq_domain *d, int irqs_per_chip,
    /* Calc pointer to the next generic chip */
    tmp += sizeof(*gc) + num_ct * sizeof(struct irq_chip_type);
    }
    + d->name = name;
    return 0;
    }
    EXPORT_SYMBOL_GPL(irq_alloc_domain_generic_chips);
    diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
    index 1ac8cf4..b1b5e67 100644
    --- a/kernel/irq/irqdomain.c
    +++ b/kernel/irq/irqdomain.c
    @@ -410,12 +410,15 @@ int irq_domain_associate_many(struct irq_domain *domain, unsigned int irq_base,
    */
    if (ret != -EPERM) {
    pr_info("%s didn't like hwirq-0x%lx to VIRQ%i mapping (rc=%d)\n",
    - of_node_full_name(domain->of_node), hwirq, virq, ret);
    + domain->name, hwirq, virq, ret);
    }
    irq_data->domain = NULL;
    irq_data->hwirq = 0;
    continue;
    }
    + /* If not already assigned, give the domain the chip's name */
    + if (!domain->name && irq_data->chip)
    + domain->name = irq_data->chip->name;
    }

    switch (domain->revmap_type) {
    @@ -708,8 +711,6 @@ static int virq_debug_show(struct seq_file *m, void *private)
    {
    unsigned long flags;
    struct irq_desc *desc;
    - const char *p;
    - static const char none[] = "none";
    void *data;
    int i;

    @@ -731,20 +732,12 @@ static int virq_debug_show(struct seq_file *m, void *private)
    seq_printf(m, "0x%05lx ", desc->irq_data.hwirq);

    chip = irq_desc_get_chip(desc);
    - if (chip && chip->name)
    - p = chip->name;
    - else
    - p = none;
    - seq_printf(m, "%-15s ", p);
    + seq_printf(m, "%-15s ", (chip && chip->name) ? chip->name : "none");

    data = irq_desc_get_chip_data(desc);
    seq_printf(m, data ? "0x%p " : " %p ", data);

    - if (desc->irq_data.domain)
    - p = of_node_full_name(desc->irq_data.domain->of_node);
    - else
    - p = none;
    - seq_printf(m, "%s\n", p);
    + seq_printf(m, "%s\n", desc->irq_data.domain->name);
    }

    raw_spin_unlock_irqrestore(&desc->lock, flags);
    --
    1.8.1.2


    \
     
     \ /
      Last update: 2013-06-10 03:41    [W:3.689 / U:0.168 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site