| /kernel/linux/linux-6.6/arch/x86/kvm/ |
| D | ioapic.c | 46 #include "ioapic.h" 54 struct kvm_ioapic *ioapic, 58 static unsigned long ioapic_read_indirect(struct kvm_ioapic *ioapic) in ioapic_read_indirect() argument 62 switch (ioapic->ioregsel) { in ioapic_read_indirect() 70 result = ((ioapic->id & 0xf) << 24); in ioapic_read_indirect() 75 u32 redir_index = (ioapic->ioregsel - 0x10) >> 1; in ioapic_read_indirect() 82 redir_content = ioapic->redirtbl[index].bits; in ioapic_read_indirect() 85 result = (ioapic->ioregsel & 0x1) ? in ioapic_read_indirect() 95 static void rtc_irq_eoi_tracking_reset(struct kvm_ioapic *ioapic) in rtc_irq_eoi_tracking_reset() argument 97 ioapic->rtc_status.pending_eoi = 0; in rtc_irq_eoi_tracking_reset() [all …]
|
| D | ioapic.h | 14 #define IOAPIC_VERSION_ID 0x11 /* IOAPIC version */ 26 #define IOAPIC_REG_APIC_ID 0x00 /* x86 IOAPIC only */ 28 #define IOAPIC_REG_ARB_ID 0x02 /* x86 IOAPIC only */ 30 /*ioapic delivery mode*/ 114 int kvm_ioapic_set_irq(struct kvm_ioapic *ioapic, int irq, int irq_source_id, 116 void kvm_ioapic_clear_all(struct kvm_ioapic *ioapic, int irq_source_id);
|
| /kernel/linux/linux-5.10/arch/x86/kvm/ |
| D | ioapic.c | 45 #include "ioapic.h" 53 struct kvm_ioapic *ioapic, 57 static unsigned long ioapic_read_indirect(struct kvm_ioapic *ioapic, in ioapic_read_indirect() argument 63 switch (ioapic->ioregsel) { in ioapic_read_indirect() 71 result = ((ioapic->id & 0xf) << 24); in ioapic_read_indirect() 76 u32 redir_index = (ioapic->ioregsel - 0x10) >> 1; in ioapic_read_indirect() 83 redir_content = ioapic->redirtbl[index].bits; in ioapic_read_indirect() 86 result = (ioapic->ioregsel & 0x1) ? in ioapic_read_indirect() 96 static void rtc_irq_eoi_tracking_reset(struct kvm_ioapic *ioapic) in rtc_irq_eoi_tracking_reset() argument 98 ioapic->rtc_status.pending_eoi = 0; in rtc_irq_eoi_tracking_reset() [all …]
|
| D | ioapic.h | 14 #define IOAPIC_VERSION_ID 0x11 /* IOAPIC version */ 26 #define IOAPIC_REG_APIC_ID 0x00 /* x86 IOAPIC only */ 28 #define IOAPIC_REG_ARB_ID 0x02 /* x86 IOAPIC only */ 30 /*ioapic delivery mode*/ 119 int kvm_ioapic_set_irq(struct kvm_ioapic *ioapic, int irq, int irq_source_id, 121 void kvm_ioapic_clear_all(struct kvm_ioapic *ioapic, int irq_source_id);
|
| /kernel/linux/linux-5.10/drivers/acpi/ |
| D | ioapic.c | 3 * IOAPIC/IOxAPIC/IOSAPIC driver 10 * Based on original drivers/pci/ioapic.c 21 #define pr_fmt(fmt) "ACPI: IOAPIC: " fmt 86 *type = "IOAPIC"; in acpi_is_ioapic() 101 struct acpi_pci_ioapic *ioapic; in handle_ioapic_add() local 110 list_for_each_entry(ioapic, &ioapic_list, list) in handle_ioapic_add() 111 if (ioapic->handle == handle) { in handle_ioapic_add() 122 ioapic = kzalloc(sizeof(*ioapic), GFP_KERNEL); in handle_ioapic_add() 123 if (!ioapic) { in handle_ioapic_add() 124 pr_err("cannot allocate memory for new IOAPIC\n"); in handle_ioapic_add() [all …]
|
| D | processor_core.c | 268 struct acpi_madt_io_apic *ioapic = (struct acpi_madt_io_apic *)entry; in get_ioapic_id() local 270 if (ioapic->global_irq_base != gsi_base) in get_ioapic_id() 273 *phys_addr = ioapic->address; in get_ioapic_id() 274 *ioapic_id = ioapic->id; in get_ioapic_id() 335 * acpi_get_ioapic_id - Get IOAPIC ID and physical address matching @gsi_base 336 * @handle: ACPI object for IOAPIC device 338 * @phys_addr: Pointer to store physical address of matching IOAPIC record 341 * for an ACPI IOAPIC record matching @gsi_base. 342 * Return IOAPIC id and store physical address in @phys_addr if found a match,
|
| /kernel/linux/linux-6.6/drivers/acpi/ |
| D | ioapic.c | 3 * IOAPIC/IOxAPIC/IOSAPIC driver 10 * Based on original drivers/pci/ioapic.c 21 #define pr_fmt(fmt) "ACPI: IOAPIC: " fmt 87 *type = "IOAPIC"; in acpi_is_ioapic() 102 struct acpi_pci_ioapic *ioapic; in handle_ioapic_add() local 111 list_for_each_entry(ioapic, &ioapic_list, list) in handle_ioapic_add() 112 if (ioapic->handle == handle) { in handle_ioapic_add() 123 ioapic = kzalloc(sizeof(*ioapic), GFP_KERNEL); in handle_ioapic_add() 124 if (!ioapic) { in handle_ioapic_add() 125 pr_err("cannot allocate memory for new IOAPIC\n"); in handle_ioapic_add() [all …]
|
| D | processor_core.c | 326 struct acpi_madt_io_apic *ioapic = (struct acpi_madt_io_apic *)entry; in get_ioapic_id() local 328 if (ioapic->global_irq_base != gsi_base) in get_ioapic_id() 331 *phys_addr = ioapic->address; in get_ioapic_id() 332 *ioapic_id = ioapic->id; in get_ioapic_id() 393 * acpi_get_ioapic_id - Get IOAPIC ID and physical address matching @gsi_base 394 * @handle: ACPI object for IOAPIC device 396 * @phys_addr: Pointer to store physical address of matching IOAPIC record 399 * for an ACPI IOAPIC record matching @gsi_base. 400 * Return IOAPIC id and store physical address in @phys_addr if found a match,
|
| /kernel/linux/linux-5.10/arch/x86/kernel/apic/ |
| D | io_apic.c | 105 static struct ioapic { struct 140 static inline int mp_ioapic_pin_count(int ioapic) in mp_ioapic_pin_count() argument 142 struct mp_ioapic_gsi *gsi_cfg = mp_ioapic_gsi_routing(ioapic); in mp_ioapic_pin_count() 147 static inline u32 mp_pin_to_gsi(int ioapic, int pin) in mp_pin_to_gsi() argument 149 return mp_ioapic_gsi_routing(ioapic)->gsi_base + pin; in mp_pin_to_gsi() 157 static inline struct irq_domain *mp_ioapic_irqdomain(int ioapic) in mp_ioapic_irqdomain() argument 159 return ioapics[ioapic].irqdomain; in mp_ioapic_irqdomain() 182 * disable_ioapic_support() - disables ioapic support at runtime 231 pr_err("IOAPIC %d: suspend/resume impossible!\n", idx); in alloc_ioapic_saved_registers() 671 * Restore IO APIC entries which was saved in the ioapic structure. [all …]
|
| /kernel/linux/linux-6.6/arch/x86/kernel/apic/ |
| D | io_apic.c | 107 static struct ioapic { struct 142 static inline int mp_ioapic_pin_count(int ioapic) in mp_ioapic_pin_count() argument 144 struct mp_ioapic_gsi *gsi_cfg = mp_ioapic_gsi_routing(ioapic); in mp_ioapic_pin_count() 149 static inline u32 mp_pin_to_gsi(int ioapic, int pin) in mp_pin_to_gsi() argument 151 return mp_ioapic_gsi_routing(ioapic)->gsi_base + pin; in mp_pin_to_gsi() 159 static inline struct irq_domain *mp_ioapic_irqdomain(int ioapic) in mp_ioapic_irqdomain() argument 161 return ioapics[ioapic].irqdomain; in mp_ioapic_irqdomain() 184 * disable_ioapic_support() - disables ioapic support at runtime 233 pr_err("IOAPIC %d: suspend/resume impossible!\n", idx); in alloc_ioapic_saved_registers() 652 * Restore IO APIC entries which was saved in the ioapic structure. [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/interrupt-controller/ |
| D | intel,ce4100-ioapic.yaml | 4 $id: http://devicetree.org/schemas/interrupt-controller/intel,ce4100-ioapic.yaml# 18 from internal sources and from an external I/O APIC (ioapic). 22 Many of the Intel's generic devices like hpet, ioapic, lapic have 32 const: intel,ce4100-ioapic 56 compatible = "intel,ce4100-ioapic";
|
| D | intel,ce4100-lapic.yaml | 18 from internal sources and from an external I/O APIC (ioapic). 22 Many of the Intel's generic devices like hpet, ioapic, lapic have
|
| /kernel/linux/linux-5.10/arch/x86/kernel/acpi/ |
| D | boot.c | 70 * Locks related to IOAPIC hotplug 382 int ioapic; in mp_config_acpi_gsi() local 401 ioapic = mp_find_ioapic(gsi); in mp_config_acpi_gsi() 402 mp_irq.dstapic = mpc_ioapic_id(ioapic); in mp_config_acpi_gsi() 403 mp_irq.dstirq = mp_find_ioapic_pin(ioapic, gsi); in mp_config_acpi_gsi() 414 int ioapic, pin; in mp_register_ioapic_irq() local 416 /* Convert 'gsi' to 'ioapic.pin'(INTIN#) */ in mp_register_ioapic_irq() 417 ioapic = mp_find_ioapic(gsi); in mp_register_ioapic_irq() 418 if (ioapic < 0) { in mp_register_ioapic_irq() 419 pr_warn("Failed to find ioapic for gsi : %u\n", gsi); in mp_register_ioapic_irq() [all …]
|
| /kernel/linux/linux-6.6/arch/x86/kernel/acpi/ |
| D | boot.c | 78 * Locks related to IOAPIC hotplug 464 int ioapic; in mp_config_acpi_gsi() local 483 ioapic = mp_find_ioapic(gsi); in mp_config_acpi_gsi() 484 mp_irq.dstapic = mpc_ioapic_id(ioapic); in mp_config_acpi_gsi() 485 mp_irq.dstirq = mp_find_ioapic_pin(ioapic, gsi); in mp_config_acpi_gsi() 495 int ioapic, pin; in mp_register_ioapic_irq() local 497 /* Convert 'gsi' to 'ioapic.pin'(INTIN#) */ in mp_register_ioapic_irq() 498 ioapic = mp_find_ioapic(gsi); in mp_register_ioapic_irq() 499 if (ioapic < 0) { in mp_register_ioapic_irq() 500 pr_warn("Failed to find ioapic for gsi : %u\n", gsi); in mp_register_ioapic_irq() [all …]
|
| /kernel/linux/linux-6.6/Documentation/translations/zh_CN/core-api/irq/ |
| D | irq-domain.rst | 185 Device --> IOAPIC -> Interrupt remapping Controller -> Local APIC -> CPU 189 1) IOAPIC 控制器 206 IOAPIC irq_domain (manage IOAPIC delivery entries/pins)
|
| /kernel/linux/linux-5.10/arch/x86/include/asm/ |
| D | hw_irq.h | 74 * @ioapic: IOAPIC specific allocation data 87 struct ioapic_alloc_info ioapic; member
|
| D | io_apic.h | 124 extern int mpc_ioapic_id(int ioapic); 125 extern unsigned int mpc_ioapic_addr(int ioapic); 167 extern int mp_find_ioapic_pin(int ioapic, u32 gsi);
|
| /kernel/linux/linux-6.6/arch/x86/include/asm/ |
| D | hw_irq.h | 72 * @ioapic: IOAPIC specific allocation data 85 struct ioapic_alloc_info ioapic; member
|
| D | io_apic.h | 103 extern int mpc_ioapic_id(int ioapic); 104 extern unsigned int mpc_ioapic_addr(int ioapic); 146 extern int mp_find_ioapic_pin(int ioapic, u32 gsi);
|
| /kernel/linux/linux-6.6/drivers/platform/x86/ |
| D | intel_scu_wdt.c | 37 /* IOAPIC builds identity mapping between GSI and IRQ on MID */ in tangier_probe() 41 dev_warn(&pdev->dev, "cannot find interrupt %d in ioapic\n", gsi); in tangier_probe()
|
| /kernel/linux/linux-5.10/arch/x86/platform/intel-mid/device_libs/ |
| D | platform_mrfld_wdt.c | 36 /* IOAPIC builds identity mapping between GSI and IRQ on MID */ in tangier_probe() 40 dev_warn(&pdev->dev, "cannot find interrupt %d in ioapic\n", gsi); in tangier_probe()
|
| /kernel/linux/linux-5.10/arch/loongarch/kvm/intc/ |
| D | ls7a_irq.c | 523 kvm_err("Failed register ioapic, err:%d\n", ret); in kvm_create_ls7a_ioapic() 532 kvm_err("Failed register alias ioapic, err:%d\n", ret); in kvm_create_ls7a_ioapic() 597 struct ls7a_kvm_ioapic *ioapic) in kvm_dump_ls7a_ioapic_state() argument 603 if (!ioapic) in kvm_dump_ls7a_ioapic_state() 607 ioapic_state = &(ioapic->ls7a_ioapic); in kvm_dump_ls7a_ioapic_state() 609 ls7a_ioapic_lock(ioapic, &flags); in kvm_dump_ls7a_ioapic_state() 632 ls7a_ioapic_unlock(ioapic, &flags); in kvm_dump_ls7a_ioapic_state()
|
| /kernel/linux/linux-5.10/Documentation/core-api/irq/ |
| D | irq-domain.rst | 195 Device --> IOAPIC -> Interrupt remapping Controller -> Local APIC -> CPU 199 1) IOAPIC controller 216 IOAPIC irq_domain (manage IOAPIC delivery entries/pins)
|
| /kernel/linux/linux-5.10/drivers/iommu/intel/ |
| D | irq_remapping.c | 333 pr_warn("Failed to set source-id of IOAPIC (%d)\n", apic); in set_ioapic_sid() 945 pr_info("IOAPIC id %d under DRHD base 0x%Lx IOMMU %d\n", in ir_parse_one_ioapic_scope() 989 * Finds the assocaition between IOAPIC's and its Interrupt-remapping 1018 pr_err(FW_BUG "ioapic %d has no mapping iommu, " in parse_ioapics_under_ir() 1284 …apic_printk(APIC_VERBOSE, KERN_DEBUG "IOAPIC[%d]: Set IRTE entry (P:%d FPD:%d Dst_Mode:%d Redir_hi… in intel_irq_remapping_prepare_irte() 1291 entry = (struct IR_IO_APIC_route_entry *)info->ioapic.entry; in intel_irq_remapping_prepare_irte() 1292 info->ioapic.entry = NULL; in intel_irq_remapping_prepare_irte() 1302 entry->vector = info->ioapic.pin; in intel_irq_remapping_prepare_irte() 1304 entry->trigger = info->ioapic.trigger; in intel_irq_remapping_prepare_irte() 1305 entry->polarity = info->ioapic.polarity; in intel_irq_remapping_prepare_irte() [all …]
|
| /kernel/linux/linux-6.6/Documentation/core-api/irq/ |
| D | irq-domain.rst | 222 Device --> IOAPIC -> Interrupt remapping Controller -> Local APIC -> CPU 226 1) IOAPIC controller 243 IOAPIC irq_domain (manage IOAPIC delivery entries/pins)
|