its_node
struct acpi_iort_node *iommu_node, *its_node = NULL;
its_node = iort_node_map_id(iommu_node,
if (its_node)
if (!its_node)
its = (struct acpi_iort_its_group *)its_node->node_data;
static struct its_vpe *its_build_vinv_cmd(struct its_node *its,
static struct its_vpe *its_build_vint_cmd(struct its_node *its,
static struct its_vpe *its_build_vclear_cmd(struct its_node *its,
static struct its_vpe *its_build_invdb_cmd(struct its_node *its,
static struct its_vpe *its_build_vsgi_cmd(struct its_node *its,
static u64 its_cmd_ptr_to_offset(struct its_node *its,
static int its_queue_full(struct its_node *its)
static struct its_cmd_block *its_allocate_entry(struct its_node *its)
static struct its_cmd_block *its_post_commands(struct its_node *its)
static void its_flush_cmd(struct its_node *its, struct its_cmd_block *cmd)
static int its_wait_for_range_completion(struct its_node *its,
void name(struct its_node *its, \
static void its_build_sync_cmd(struct its_node *its,
static void its_build_vsync_cmd(struct its_node *its,
static DEFINE_PER_CPU(struct its_node *, local_4_1_its);
static void its_send_mapc(struct its_node *its, struct its_collection *col,
static void its_send_invall(struct its_node *its, struct its_collection *col)
static void its_send_vmapp(struct its_node *its,
struct its_node *its;
its = list_first_entry(&its_nodes, struct its_node, entry);
static void its_send_vinvall(struct its_node *its, struct its_vpe *vpe)
static void its_send_invdb(struct its_node *its, struct its_vpe *vpe)
struct its_node *its;
struct its_node *its = its_dev->its;
static void its_map_vm(struct its_node *its, struct its_vm *vm)
static void its_unmap_vm(struct its_node *its, struct its_vm *vm)
static u64 its_read_baser(struct its_node *its, struct its_baser *baser)
static void its_write_baser(struct its_node *its, struct its_baser *baser,
static int its_setup_baser(struct its_node *its, struct its_baser *baser,
static bool its_parse_indirect_baser(struct its_node *its,
static u32 compute_its_aff(struct its_node *its)
static struct its_node *find_sibling_its(struct its_node *cur_its)
struct its_node *its;
static void its_free_tables(struct its_node *its)
static int its_probe_baser_psz(struct its_node *its, struct its_baser *baser)
static int its_alloc_tables(struct its_node *its)
struct its_node *sibling;
struct its_node *its;
static bool require_its_list_vmovp(struct its_vm *vm, struct its_node *its)
static int its_alloc_collections(struct its_node *its)
struct its_node *its;
static void its_cpu_init_collection(struct its_node *its)
struct its_node *its;
struct its_node *its = its_dev->its;
static struct its_device *its_find_device(struct its_node *its, u32 dev_id)
static struct its_baser *its_get_baser(struct its_node *its, u32 type)
static bool its_alloc_table_entry(struct its_node *its,
static bool its_alloc_device_table(struct its_node *its, u32 dev_id)
struct its_node *its;
static struct its_device *its_create_device(struct its_node *its, u32 dev_id,
struct its_node *its;
struct its_node *its = its_dev->its;
struct its_node *its;
struct its_node *its;
static struct its_node *find_4_1_its(void)
struct its_node *its = *this_cpu_ptr(&local_4_1_its);
struct its_node *its;
static struct its_vpe *valid_vpe(struct its_node *its, struct its_vpe *vpe)
struct its_node *its = find_4_1_its();
struct its_node *its;
struct its_node *its;
struct its_node *its = data;
struct its_node *its = data;
struct its_node *its = data;
struct its_node *its = its_dev->its;
struct its_node *its = data;
struct its_node *its = data;
struct its_node *its = data;
struct its_node *its = data;
struct its_node *its = data;
static void its_enable_quirks(struct its_node *its)
struct its_node *its;
struct its_node *its;
static int its_init_domain(struct its_node *its)
struct its_node *its;
its = list_first_entry(&its_nodes, struct its_node, entry);
static int __init its_compute_its_list_map(struct its_node *its)
static int __init its_probe_one(struct its_node *its)
static struct its_node __init *its_node_init(struct resource *res,
struct its_node *its;
static void its_node_destroy(struct its_node *its)
struct its_node *its;
struct its_node *its;
struct its_node *its;
static struct its_node *find_4_1_its(void);
static struct its_collection *its_build_mapd_cmd(struct its_node *its,
static struct its_collection *its_build_mapc_cmd(struct its_node *its,
static struct its_collection *its_build_mapti_cmd(struct its_node *its,
static struct its_collection *its_build_movi_cmd(struct its_node *its,
static struct its_collection *its_build_discard_cmd(struct its_node *its,
static struct its_collection *its_build_inv_cmd(struct its_node *its,
static struct its_collection *its_build_int_cmd(struct its_node *its,
static struct its_collection *its_build_clear_cmd(struct its_node *its,
static struct its_collection *its_build_invall_cmd(struct its_node *its,
static struct its_vpe *its_build_vinvall_cmd(struct its_node *its,
static struct its_vpe *its_build_vmapp_cmd(struct its_node *its,
static struct its_vpe *its_build_vmapti_cmd(struct its_node *its,
static struct its_vpe *its_build_vmovi_cmd(struct its_node *its,
static struct its_vpe *its_build_vmovp_cmd(struct its_node *its,
its = its_dev->its_node;
static void gicv5_its_print_info(struct gicv5_its_chip_data *its_node)
device_id_bits = devtab_cfgr_field(its_node, DEVICEID_BITS);
str = devtab_cfgr_field(its_node, STRUCTURE);
fwnode_get_name(its_node->fwnode),
struct gicv5_its_chip_data *its_node;
its_node = kzalloc_obj(*its_node);
if (!its_node)
mutex_init(&its_node->dev_alloc_lock);
xa_init(&its_node->its_devices);
its_node->fwnode = handle;
its_node->its_base = its_base;
its_node->msi_domain_flags = IRQ_DOMAIN_FLAG_ISOLATED_MSI |
cr0 = its_readl_relaxed(its_node, GICV5_ITS_CR0);
ret = gicv5_its_disable(its_node);
its_node->flags |= ITS_FLAGS_NON_COHERENT;
its_writel_relaxed(its_node, cr1, GICV5_ITS_CR1);
ret = gicv5_its_init_devtab(its_node);
ret = gicv5_its_enable(its_node);
ret = gicv5_its_init_domain(its_node, parent_domain);
gicv5_its_print_info(its_node);
gicv5_its_disable(its_node);
gicv5_its_deinit_devtab(its_node);
kfree(its_node);
struct gicv5_its_chip_data *its_node;
static u32 its_readl_relaxed(struct gicv5_its_chip_data *its_node, const u32 reg_offset)
return readl_relaxed(its_node->its_base + reg_offset);
static void its_writel_relaxed(struct gicv5_its_chip_data *its_node, const u32 val,
writel_relaxed(val, its_node->its_base + reg_offset);
static void its_writeq_relaxed(struct gicv5_its_chip_data *its_node, const u64 val,
writeq_relaxed(val, its_node->its_base + reg_offset);
its_dev->its_node = its;
struct gicv5_its_chip_data *its = its_dev->its_node;
struct gicv5_its_chip_data *its = its_dev->its_node;