lkml.org 
[lkml]   [2022]   [Nov]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[patch 12/39] genirq/msi: Add bus token to struct msi_domain_info
    Date
    From: Ahmed S. Darwish <darwi@linutronix.de>

    Add a bus token member to struct msi_domain_info and let
    msi_create_irq_domain() set the bus token.

    That allows to remove the bus token updates at the call sites.

    Suggested-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ahmed S. Darwish <darwi@linutronix.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    ---
    include/linux/msi.h | 19 +++++++++++--------
    kernel/irq/msi.c | 7 +++++--
    2 files changed, 16 insertions(+), 10 deletions(-)

    --- a/include/linux/msi.h
    +++ b/include/linux/msi.h
    @@ -16,6 +16,7 @@
    * abuse. The only function which is relevant for drivers is msi_get_virq().
    */

    +#include <linux/irqdomain_defs.h>
    #include <linux/cpumask.h>
    #include <linux/xarray.h>
    #include <linux/mutex.h>
    @@ -365,6 +366,7 @@ struct msi_domain_ops {
    /**
    * struct msi_domain_info - MSI interrupt domain data
    * @flags: Flags to decribe features and capabilities
    + * @bus_token: The domain bus token
    * @ops: The callback data structure
    * @chip: Optional: associated interrupt chip
    * @chip_data: Optional: associated interrupt chip data
    @@ -374,14 +376,15 @@ struct msi_domain_ops {
    * @data: Optional: domain specific data
    */
    struct msi_domain_info {
    - u32 flags;
    - struct msi_domain_ops *ops;
    - struct irq_chip *chip;
    - void *chip_data;
    - irq_flow_handler_t handler;
    - void *handler_data;
    - const char *handler_name;
    - void *data;
    + u32 flags;
    + enum irq_domain_bus_token bus_token;
    + struct msi_domain_ops *ops;
    + struct irq_chip *chip;
    + void *chip_data;
    + irq_flow_handler_t handler;
    + void *handler_data;
    + const char *handler_name;
    + void *data;
    };

    /* Flags for msi_domain_info */
    --- a/kernel/irq/msi.c
    +++ b/kernel/irq/msi.c
    @@ -694,8 +694,11 @@ struct irq_domain *msi_create_irq_domain
    domain = irq_domain_create_hierarchy(parent, IRQ_DOMAIN_FLAG_MSI, 0,
    fwnode, &msi_domain_ops, info);

    - if (domain && !domain->name && info->chip)
    - domain->name = info->chip->name;
    + if (domain) {
    + if (!domain->name && info->chip)
    + domain->name = info->chip->name;
    + irq_domain_update_bus_token(domain, info->bus_token);
    + }

    return domain;
    }
    \
     
     \ /
      Last update: 2022-11-11 14:58    [W:3.092 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site