Lines Matching refs:ioapic

89 static struct ioapic {  struct
125 static inline int mp_ioapic_pin_count(int ioapic) in mp_ioapic_pin_count() argument
127 struct mp_ioapic_gsi *gsi_cfg = mp_ioapic_gsi_routing(ioapic); in mp_ioapic_pin_count()
132 u32 mp_pin_to_gsi(int ioapic, int pin) in mp_pin_to_gsi() argument
134 return mp_ioapic_gsi_routing(ioapic)->gsi_base + pin; in mp_pin_to_gsi()
142 static inline int mp_init_irq_at_boot(int ioapic, int irq) in mp_init_irq_at_boot() argument
147 return ioapic == 0 || (irq >= 0 && irq < nr_legacy_irqs()); in mp_init_irq_at_boot()
155 static inline struct irq_domain *mp_ioapic_irqdomain(int ioapic) in mp_ioapic_irqdomain() argument
157 return ioapics[ioapic].irqdomain; in mp_ioapic_irqdomain()
944 int ioapic = (int)(long)domain->host_data; in alloc_irq_from_domain() local
945 int type = ioapics[ioapic].irqdomain_cfg.type; in alloc_irq_from_domain()
973 static int mp_map_pin_to_irq(u32 gsi, int idx, int ioapic, int pin, in mp_map_pin_to_irq() argument
977 struct irq_domain *domain = mp_ioapic_irqdomain(ioapic); in mp_map_pin_to_irq()
978 struct mp_pin_info *info = mp_pin_info(ioapic, pin); in mp_map_pin_to_irq()
1031 static int pin_2_irq(int idx, int ioapic, int pin, unsigned int flags) in pin_2_irq() argument
1033 u32 gsi = mp_pin_to_gsi(ioapic, pin); in pin_2_irq()
1061 return mp_map_pin_to_irq(gsi, idx, ioapic, pin, flags); in pin_2_irq()
1066 int ioapic, pin, idx; in mp_map_gsi_to_irq() local
1068 ioapic = mp_find_ioapic(gsi); in mp_map_gsi_to_irq()
1069 if (ioapic < 0) in mp_map_gsi_to_irq()
1072 pin = mp_find_ioapic_pin(ioapic, gsi); in mp_map_gsi_to_irq()
1073 idx = find_irq_entry(ioapic, pin, mp_INT); in mp_map_gsi_to_irq()
1077 return mp_map_pin_to_irq(gsi, idx, ioapic, pin, flags); in mp_map_gsi_to_irq()
1084 int ioapic, pin; in mp_unmap_irq() local
1089 ioapic = (int)(long)data->domain->host_data; in mp_unmap_irq()
1091 info = mp_pin_info(ioapic, pin); in mp_unmap_irq()
1097 ioapics[ioapic].irqdomain_cfg.type == IOAPIC_DOMAIN_LEGACY) in mp_unmap_irq()
1255 mpc_ioapic_id(attr->ioapic), attr->ioapic_pin); in setup_ioapic_irq()
1264 attr->ioapic, mpc_ioapic_id(attr->ioapic), attr->ioapic_pin, in setup_ioapic_irq()
1269 mpc_ioapic_id(attr->ioapic), attr->ioapic_pin); in setup_ioapic_irq()
1279 ioapic_write_entry(attr->ioapic, attr->ioapic_pin, entry); in setup_ioapic_irq()
1284 unsigned int ioapic, pin; in setup_IO_APIC_irqs() local
1289 for_each_ioapic_pin(ioapic, pin) { in setup_IO_APIC_irqs()
1290 idx = find_irq_entry(ioapic, pin, mp_INT); in setup_IO_APIC_irqs()
1294 mpc_ioapic_id(ioapic), pin); in setup_IO_APIC_irqs()
1296 pin_2_irq(idx, ioapic, pin, in setup_IO_APIC_irqs()
1297 ioapic ? 0 : IOAPIC_MAP_ALLOC); in setup_IO_APIC_irqs()
2330 static int mp_irqdomain_create(int ioapic) in mp_irqdomain_create() argument
2333 int hwirqs = mp_ioapic_pin_count(ioapic); in mp_irqdomain_create()
2334 struct ioapic *ip = &ioapics[ioapic]; in mp_irqdomain_create()
2336 struct mp_ioapic_gsi *gsi_cfg = mp_ioapic_gsi_routing(ioapic); in mp_irqdomain_create()
2338 size = sizeof(struct mp_pin_info) * mp_ioapic_pin_count(ioapic); in mp_irqdomain_create()
2347 (void *)(long)ioapic); in mp_irqdomain_create()
2377 int ioapic; in setup_IO_APIC() local
2385 for_each_ioapic(ioapic) in setup_IO_APIC()
2386 BUG_ON(mp_irqdomain_create(ioapic)); in setup_IO_APIC()
2462 ret = __add_pin_to_irq_node(cfg, node, attr->ioapic, attr->ioapic_pin); in io_apic_setup_irq_pin()
2468 static int io_apic_get_redir_entries(int ioapic) in io_apic_get_redir_entries() argument
2474 reg_01.raw = io_apic_read(ioapic, 1); in io_apic_get_redir_entries()
2494 static int io_apic_get_unique_id(int ioapic, int apic_id) in io_apic_get_unique_id() argument
2515 reg_00.raw = io_apic_read(ioapic, 0); in io_apic_get_unique_id()
2520 "%d\n", ioapic, apic_id, reg_00.bits.ID); in io_apic_get_unique_id()
2539 "trying %d\n", ioapic, apic_id, i); in io_apic_get_unique_id()
2551 io_apic_write(ioapic, 0, reg_00.raw); in io_apic_get_unique_id()
2552 reg_00.raw = io_apic_read(ioapic, 0); in io_apic_get_unique_id()
2558 ioapic); in io_apic_get_unique_id()
2564 "IOAPIC[%d]: Assigned apic_id %d\n", ioapic, apic_id); in io_apic_get_unique_id()
2625 static int io_apic_get_version(int ioapic) in io_apic_get_version() argument
2631 reg_01.raw = io_apic_read(ioapic, 1); in io_apic_get_version()
2639 int ioapic, pin, idx; in acpi_get_override_irq() local
2644 ioapic = mp_find_ioapic(gsi); in acpi_get_override_irq()
2645 if (ioapic < 0) in acpi_get_override_irq()
2648 pin = mp_find_ioapic_pin(ioapic, gsi); in acpi_get_override_irq()
2652 idx = find_irq_entry(ioapic, pin, mp_INT); in acpi_get_override_irq()
2669 int pin, ioapic, irq, irq_entry; in setup_ioapic_dest() local
2676 for_each_ioapic_pin(ioapic, pin) { in setup_ioapic_dest()
2677 irq_entry = find_irq_entry(ioapic, pin, mp_INT); in setup_ioapic_dest()
2681 irq = pin_2_irq(irq_entry, ioapic, pin, 0); in setup_ioapic_dest()
2682 if (irq < 0 || !mp_init_irq_at_boot(ioapic, irq)) in setup_ioapic_dest()
2816 int mp_find_ioapic_pin(int ioapic, u32 gsi) in mp_find_ioapic_pin() argument
2820 if (WARN_ON(ioapic < 0)) in mp_find_ioapic_pin()
2823 gsi_cfg = mp_ioapic_gsi_routing(ioapic); in mp_find_ioapic_pin()
2872 int idx, ioapic, entries; in mp_register_ioapic() local
2879 for_each_ioapic(ioapic) in mp_register_ioapic()
2880 if (ioapics[ioapic].mp_config.apicaddr == address) { in mp_register_ioapic()
2882 address, ioapic); in mp_register_ioapic()
2912 for_each_ioapic(ioapic) { in mp_register_ioapic()
2913 gsi_cfg = mp_ioapic_gsi_routing(ioapic); in mp_register_ioapic()
2963 int ioapic, pin; in mp_unregister_ioapic() local
2967 for_each_ioapic(ioapic) in mp_unregister_ioapic()
2968 if (ioapics[ioapic].gsi_config.gsi_base == gsi_base) { in mp_unregister_ioapic()
2977 for_each_pin(ioapic, pin) { in mp_unregister_ioapic()
2978 pin_info = mp_pin_info(ioapic, pin); in mp_unregister_ioapic()
2981 pin, ioapic); in mp_unregister_ioapic()
2987 ioapics[ioapic].nr_registers = 0; in mp_unregister_ioapic()
2988 ioapic_destroy_irqdomain(ioapic); in mp_unregister_ioapic()
2989 free_ioapic_saved_registers(ioapic); in mp_unregister_ioapic()
2990 if (ioapics[ioapic].iomem_res) in mp_unregister_ioapic()
2991 release_resource(ioapics[ioapic].iomem_res); in mp_unregister_ioapic()
2992 clear_fixmap(FIX_IO_APIC_BASE_0 + ioapic); in mp_unregister_ioapic()
2993 memset(&ioapics[ioapic], 0, sizeof(ioapics[ioapic])); in mp_unregister_ioapic()
3000 int ioapic; in mp_ioapic_registered() local
3002 for_each_ioapic(ioapic) in mp_ioapic_registered()
3003 if (ioapics[ioapic].gsi_config.gsi_base == gsi_base) in mp_ioapic_registered()
3010 int ioapic, int ioapic_pin, in set_io_apic_irq_attr() argument
3013 irq_attr->ioapic = ioapic; in set_io_apic_irq_attr()
3022 int ioapic = (int)(long)domain->host_data; in mp_irqdomain_map() local
3023 struct mp_pin_info *info = mp_pin_info(ioapic, hwirq); in mp_irqdomain_map()
3028 u32 gsi = mp_pin_to_gsi(ioapic, hwirq); in mp_irqdomain_map()
3050 set_io_apic_irq_attr(&attr, ioapic, hwirq, info->trigger, in mp_irqdomain_map()
3060 int ioapic = (int)(long)domain->host_data; in mp_irqdomain_unmap() local
3063 ioapic_mask_entry(ioapic, pin); in mp_irqdomain_unmap()
3064 __remove_pin_from_irq(cfg, ioapic, pin); in mp_irqdomain_unmap()
3072 int ioapic, pin; in mp_set_gsi_attr() local
3075 ioapic = mp_find_ioapic(gsi); in mp_set_gsi_attr()
3076 if (ioapic < 0) in mp_set_gsi_attr()
3079 pin = mp_find_ioapic_pin(ioapic, gsi); in mp_set_gsi_attr()
3080 info = mp_pin_info(ioapic, pin); in mp_set_gsi_attr()