Lines Matching full:global

63 	return imsic ? &imsic->global : NULL;  in imsic_get_global_config()
135 for_each_set_bit(i, lpriv->dirty_bitmap, imsic->global.nr_ids + 1) { in __imsic_local_sync()
155 mlocal = per_cpu_ptr(imsic->global.local, mvec->cpu); in __imsic_local_sync()
173 bitmap_fill(lpriv->dirty_bitmap, imsic->global.nr_ids + 1); in imsic_local_sync_all()
365 if (!lpriv || imsic->global.nr_ids < local_id) in imsic_vector_from_local_id()
421 struct imsic_global_config *global = &imsic->global; in imsic_local_init() local
438 lpriv->dirty_bitmap = bitmap_zalloc(global->nr_ids + 1, GFP_KERNEL); in imsic_local_init()
448 lpriv->vectors = kcalloc(global->nr_ids + 1, sizeof(*lpriv->vectors), in imsic_local_init()
454 for (i = 0; i <= global->nr_ids; i++) { in imsic_local_init()
497 struct imsic_global_config *global = &imsic->global; in imsic_matrix_init() local
500 imsic->matrix = irq_alloc_matrix(global->nr_ids + 1, in imsic_matrix_init()
501 0, global->nr_ids + 1); in imsic_matrix_init()
515 struct imsic_global_config *global, in imsic_populate_global_dt() argument
522 &global->guest_index_bits); in imsic_populate_global_dt()
524 global->guest_index_bits = 0; in imsic_populate_global_dt()
528 &global->hart_index_bits); in imsic_populate_global_dt()
531 global->hart_index_bits = __fls(*nr_parent_irqs); in imsic_populate_global_dt()
532 if (BIT(global->hart_index_bits) < *nr_parent_irqs) in imsic_populate_global_dt()
533 global->hart_index_bits++; in imsic_populate_global_dt()
538 &global->group_index_bits); in imsic_populate_global_dt()
540 global->group_index_bits = 0; in imsic_populate_global_dt()
547 &global->group_index_shift); in imsic_populate_global_dt()
549 global->group_index_shift = IMSIC_MMIO_PAGE_SHIFT * 2; in imsic_populate_global_dt()
553 &global->nr_ids); in imsic_populate_global_dt()
561 &global->nr_guest_ids); in imsic_populate_global_dt()
563 global->nr_guest_ids = global->nr_ids; in imsic_populate_global_dt()
569 struct imsic_global_config *global, in imsic_populate_global_acpi() argument
574 global->guest_index_bits = imsic->guest_index_bits; in imsic_populate_global_acpi()
575 global->hart_index_bits = imsic->hart_index_bits; in imsic_populate_global_acpi()
576 global->group_index_bits = imsic->group_index_bits; in imsic_populate_global_acpi()
577 global->group_index_shift = imsic->group_index_shift; in imsic_populate_global_acpi()
578 global->nr_ids = imsic->num_ids; in imsic_populate_global_acpi()
579 global->nr_guest_ids = imsic->num_guest_ids; in imsic_populate_global_acpi()
623 struct imsic_global_config *global, in imsic_parse_fwnode() argument
645 rc = imsic_populate_global_dt(fwnode, global, nr_parent_irqs); in imsic_parse_fwnode()
647 rc = imsic_populate_global_acpi(fwnode, global, nr_parent_irqs, opaque); in imsic_parse_fwnode()
654 if (i < global->guest_index_bits) { in imsic_parse_fwnode()
660 i = BITS_PER_LONG - IMSIC_MMIO_PAGE_SHIFT - global->guest_index_bits; in imsic_parse_fwnode()
661 if (i < global->hart_index_bits) { in imsic_parse_fwnode()
668 global->guest_index_bits - global->hart_index_bits; in imsic_parse_fwnode()
669 if (i < global->group_index_bits) { in imsic_parse_fwnode()
675 i = global->group_index_bits + global->group_index_shift - 1; in imsic_parse_fwnode()
682 if (global->nr_ids < IMSIC_MIN_ID || in imsic_parse_fwnode()
683 global->nr_ids >= IMSIC_MAX_ID || in imsic_parse_fwnode()
684 (global->nr_ids & IMSIC_MIN_ID) != IMSIC_MIN_ID) { in imsic_parse_fwnode()
690 if (global->nr_guest_ids < IMSIC_MIN_ID || in imsic_parse_fwnode()
691 global->nr_guest_ids >= IMSIC_MAX_ID || in imsic_parse_fwnode()
692 (global->nr_guest_ids & IMSIC_MIN_ID) != IMSIC_MIN_ID) { in imsic_parse_fwnode()
703 global->base_addr = res.start; in imsic_parse_fwnode()
704 global->base_addr &= ~(BIT(global->guest_index_bits + in imsic_parse_fwnode()
705 global->hart_index_bits + in imsic_parse_fwnode()
707 global->base_addr &= ~((BIT(global->group_index_bits) - 1) << in imsic_parse_fwnode()
708 global->group_index_shift); in imsic_parse_fwnode()
720 struct imsic_global_config *global; in imsic_setup_state() local
749 global = &imsic->global; in imsic_setup_state()
751 global->local = alloc_percpu(typeof(*global->local)); in imsic_setup_state()
752 if (!global->local) { in imsic_setup_state()
758 rc = imsic_parse_fwnode(fwnode, global, &nr_parent_irqs, &nr_mmios, opaque); in imsic_setup_state()
785 base_addr &= ~(BIT(global->guest_index_bits + in imsic_setup_state()
786 global->hart_index_bits + in imsic_setup_state()
788 base_addr &= ~((BIT(global->group_index_bits) - 1) << in imsic_setup_state()
789 global->group_index_shift); in imsic_setup_state()
790 if (base_addr != global->base_addr) { in imsic_setup_state()
828 reloff = i * BIT(global->guest_index_bits) * in imsic_setup_state()
838 * BIT(global->guest_index_bits) * IMSIC_MMIO_PAGE_SZ in imsic_setup_state()
842 BIT(global->guest_index_bits) * IMSIC_MMIO_PAGE_SZ); in imsic_setup_state()
849 local = per_cpu_ptr(global->local, cpu); in imsic_setup_state()
886 free_percpu(imsic->global.local); in imsic_setup_state()