#define pr_fmt(fmt) "irq: " fmt#include<linux/debugfs.h>#include<linux/hardirq.h>#include<linux/interrupt.h>#include<linux/irq.h>#include<linux/irqdesc.h>#include<linux/irqdomain.h>#include<linux/module.h>#include<linux/mutex.h>#include<linux/of.h>#include<linux/of_address.h>#include<linux/of_irq.h>#include<linux/topology.h>#include<linux/seq_file.h>#include<linux/slab.h>#include<linux/smp.h>#include<linux/fs.h>staticLIST_HEAD(irq_domain_list);staticDEFINE_MUTEX(irq_domain_mutex);staticDEFINE_MUTEX(revmap_trees_mutex);staticstructirq_domain*irq_default_domain;staticvoidirq_domain_check_hierarchy(structirq_domain*domain);structirqchip_fwid{structfwnode_handlefwnode;char*name;void*data;};/** * irq_domain_alloc_fwnode - Allocate a fwnode_handle suitable for * identifying an irq domain * @data: optional user-provided data * * Allocate a struct device_node, and return a poiner to the embedded * fwnode_handle (or NULL on failure). */structfwnode_handle*irq_domain_alloc_fwnode(void*data){structirqchip_fwid*fwid;char*name;fwid=kzalloc(sizeof(