| /kernel/lib/hypervisor/include/hypervisor/ |
| A D | interrupt_tracker.h | 37 InterruptType Get(uint32_t vector) const { in Get() argument 38 if (vector >= N) { in Get() 42 size_t bitoff = vector * 2; in Get() 52 if (vector >= N) { in Set() 56 size_t bitoff = vector * 2; in Set() 72 InterruptType Scan(uint32_t* vector) { in Scan() argument 107 uint32_t vector; in Pending() local 119 InterruptType TryPop(uint32_t vector) { in TryPop() argument 129 InterruptType Pop(uint32_t* vector) { in Pop() argument 141 bitmap_.Set(vector, type); in Track() [all …]
|
| /kernel/dev/pdev/interrupt/ |
| A D | interrupt.cpp | 21 DEBUG_ASSERT(vector < ARM_MAX_INT); in pdev_get_int_handler() 22 return &int_handler_table[vector]; in pdev_get_int_handler() 26 if (!is_valid_interrupt(vector, 0)) { in register_int_handler() 32 auto h = pdev_get_int_handler(vector); in register_int_handler() 150 zx_status_t mask_interrupt(unsigned int vector) { in mask_interrupt() argument 151 return intr_ops->mask(vector); in mask_interrupt() 155 return intr_ops->unmask(vector); in unmask_interrupt() 160 return intr_ops->configure(vector, tm, pol); in configure_interrupt() 165 return intr_ops->get_config(vector, tm, pol); in get_interrupt_config() 177 return intr_ops->is_valid(vector, flags); in is_valid_interrupt() [all …]
|
| /kernel/dev/interrupt/arm_gic/v2/ |
| A D | arm_gicv2.cpp | 62 return (vector < max_irqs); in gic_is_valid_interrupt() 76 int reg = vector / 32; in gic_set_enable() 193 if (vector >= max_irqs) { in gic_mask_interrupt() 203 if (vector >= max_irqs) { in gic_unmask_interrupt() 207 gic_set_enable(vector, true); in gic_unmask_interrupt() 216 if ((vector >= max_irqs) || (vector < GIC_BASE_SPI)) { in gic_configure_interrupt() 243 if (vector >= max_irqs) { in gic_get_interrupt_config() 258 return vector; in gic_remap_interrupt() 266 if (vector >= 0x3fe) { in gic_handle_irq() 272 if (vector >= 32) in gic_handle_irq() [all …]
|
| /kernel/dev/interrupt/arm_gic/v3/ |
| A D | arm_gicv3.cpp | 65 return (vector < gic_max_int); in gic_is_valid_interrupt() 90 int reg = vector / 32; in gic_set_enable() 93 if (vector < 32) { in gic_set_enable() 255 if (vector >= gic_max_int) { in gic_mask_interrupt() 281 if (vector <= 15 || vector >= gic_max_int) { in gic_configure_interrupt() 290 uint reg = vector / 16; in gic_configure_interrupt() 324 return vector; in gic_remap_interrupt() 335 if (vector >= 0x3fe) { in gic_handle_irq() 342 if (vector >= 32) { in gic_handle_irq() 359 gic_write_eoir(vector); in gic_handle_irq() [all …]
|
| /kernel/dev/pdev/include/pdev/ |
| A D | interrupt.h | 20 struct int_handler_struct* pdev_get_int_handler(unsigned int vector); 24 zx_status_t (*mask)(unsigned int vector); 25 zx_status_t (*unmask)(unsigned int vector); 26 zx_status_t (*configure)(unsigned int vector, 29 zx_status_t (*get_config)(unsigned int vector, 32 bool (*is_valid)(unsigned int vector, uint32_t flags); 35 unsigned int (*remap)(unsigned int vector);
|
| /kernel/dev/interrupt/include/dev/ |
| A D | interrupt.h | 29 zx_status_t mask_interrupt(unsigned int vector); 30 zx_status_t unmask_interrupt(unsigned int vector); 41 zx_status_t configure_interrupt(unsigned int vector, 45 zx_status_t get_interrupt_config(unsigned int vector, 51 zx_status_t register_int_handler(unsigned int vector, int_handler handler, void* arg); 58 bool is_valid_interrupt(unsigned int vector, uint32_t flags); 60 unsigned int remap_interrupt(unsigned int vector);
|
| /kernel/platform/pc/ |
| A D | interrupts.cpp | 127 zx_status_t mask_interrupt(unsigned int vector) { in mask_interrupt() argument 129 apic_io_mask_irq(vector, IO_APIC_IRQ_MASK); in mask_interrupt() 133 zx_status_t unmask_interrupt(unsigned int vector) { in unmask_interrupt() argument 135 apic_io_mask_irq(vector, IO_APIC_IRQ_UNMASK); in unmask_interrupt() 144 vector, in configure_interrupt() 164 uint64_t x86_vector = frame->vector; in platform_irq() 183 if (!is_valid_interrupt(vector, 0)) { in register_int_handler() 217 vector, handler, arg); in register_int_handler() 259 return apic_io_is_valid_irq(vector); in is_valid_interrupt() 263 if (vector > NUM_ISA_IRQS) { in remap_interrupt() [all …]
|
| /kernel/dev/interrupt/arm_gic/common/include/dev/interrupt/ |
| A D | arm_gic_common.h | 36 static inline zx_status_t gic_register_sgi_handler(unsigned int vector, int_handler handler) { in gic_register_sgi_handler() argument 37 DEBUG_ASSERT(vector < GIC_BASE_PPI); in gic_register_sgi_handler() 38 return register_int_handler(vector, handler, nullptr); in gic_register_sgi_handler()
|
| A D | arm_gic_hw_interface.h | 27 uint64_t (*get_lr_from_vector)(bool hw, uint8_t prio, uint32_t vector); 70 uint64_t gic_get_lr_from_vector(bool hw, uint8_t prio, uint32_t vector);
|
| /kernel/arch/x86/include/arch/x86/ |
| A D | apic.h | 55 void apic_irq_set(unsigned int vector, bool enable); 57 uint8_t vector, 60 void apic_send_self_ipi(uint8_t vector, enum apic_interrupt_delivery_mode dm); 62 uint8_t vector, 65 uint8_t vector, 132 uint8_t vector); 139 uint8_t vector); 152 uint8_t vector);
|
| /kernel/arch/arm64/hypervisor/gic/ |
| A D | gicv3.cpp | 67 uint32_t vector = ICH_LR_VIRTUAL_ID(val); in gicv3_write_gich_lr() local 68 uint32_t reg = vector / 32; in gicv3_write_gich_lr() 69 uint32_t mask = 1u << (vector % 32); in gicv3_write_gich_lr() 72 if (vector < 32) { in gicv3_write_gich_lr() 90 static uint64_t gicv3_get_lr_from_vector(bool hw, uint8_t prio, uint32_t vector) { in gicv3_get_lr_from_vector() argument 92 ICH_LR_VIRTUAL_ID(vector); in gicv3_get_lr_from_vector() 94 lr |= ICH_LR_HARDWARE | ICH_LR_PHYSICAL_ID(vector); in gicv3_get_lr_from_vector()
|
| A D | gicv2.cpp | 97 uint32_t vector = GICH_LR_VIRTUAL_ID(val); in gicv2_write_gich_lr() local 98 uint32_t reg = vector / 32; in gicv2_write_gich_lr() 99 uint32_t mask = 1u << (vector % 32); in gicv2_write_gich_lr() 114 static uint64_t gicv2_get_lr_from_vector(bool hw, uint8_t prio, uint32_t vector) { in gicv2_get_lr_from_vector() argument 115 uint64_t lr = GICH_LR_PENDING | GICH_LR_PRIORITY(prio) | GICH_LR_VIRTUAL_ID(vector); in gicv2_get_lr_from_vector() 117 lr |= GICH_LR_HARDWARE | GICH_LR_PHYSICAL_ID(vector); in gicv2_get_lr_from_vector()
|
| /kernel/object/ |
| A D | interrupt_event_dispatcher.cpp | 19 uint32_t vector, in Create() argument 27 InterruptEventDispatcher* disp = new (&ac) InterruptEventDispatcher(vector); in Create() 45 vector = remap_interrupt(vector); in Create() 47 if (!is_valid_interrupt(vector, 0)) in Create() 80 zx_status_t status = configure_interrupt(vector, tm, pol); in Create() 92 unmask_interrupt(vector); in Create()
|
| A D | vcpu_dispatcher.cpp | 46 cpu_mask_t VcpuDispatcher::PhysicalInterrupt(uint32_t vector) { in PhysicalInterrupt() argument 48 return vcpu_->Interrupt(vector, hypervisor::InterruptType::PHYSICAL); in PhysicalInterrupt() 51 void VcpuDispatcher::VirtualInterrupt(uint32_t vector) { in VirtualInterrupt() argument 53 vcpu_->VirtualInterrupt(vector); in VirtualInterrupt()
|
| /kernel/object/include/object/ |
| A D | interrupt_event_dispatcher.h | 20 uint32_t vector, 29 explicit InterruptEventDispatcher(uint32_t vector) in InterruptEventDispatcher() argument 30 : vector_(vector) {} in InterruptEventDispatcher()
|
| A D | pci_interrupt_dispatcher.h | 36 PciInterruptDispatcher(const fbl::RefPtr<PcieDevice>& device, uint32_t vector, bool maskable) in PciInterruptDispatcher() argument 37 : device_(device), vector_(vector), maskable_(maskable) { } in PciInterruptDispatcher()
|
| A D | vcpu_dispatcher.h | 30 cpu_mask_t PhysicalInterrupt(uint32_t vector); 31 void VirtualInterrupt(uint32_t vector);
|
| /kernel/arch/arm64/hypervisor/ |
| A D | vcpu.cpp | 48 uint32_t vector; in gich_maybe_interrupt() local 49 hypervisor::InterruptType type = gich_state->interrupt_tracker.Pop(&vector); in gich_maybe_interrupt() 53 } else if (gich_state->active_interrupts.GetOne(vector)) { in gich_maybe_interrupt() 67 uint8_t prio = vector < GIC_BASE_SPI ? 0 : 0x10; in gich_maybe_interrupt() 68 uint64_t lr = gic_get_lr_from_vector(hw, prio, vector); in gich_maybe_interrupt() 80 uint32_t vector = gic_get_vector_from_lr(gich_state->lr[i]); in gich_active_interrupts() local 81 gich_state->active_interrupts.SetOne(vector); in gich_active_interrupts() 255 cpu_mask_t Vcpu::Interrupt(uint32_t vector, hypervisor::InterruptType type) { in Interrupt() argument 257 gich_state_.interrupt_tracker.Interrupt(vector, type, &signaled); in Interrupt() 264 void Vcpu::VirtualInterrupt(uint32_t vector) { in VirtualInterrupt() argument [all …]
|
| /kernel/lib/hypervisor/ |
| A D | hypervisor_unittest.cpp | 522 uint32_t vector = UINT32_MAX; in interrupt_bitmap() local 530 vector = UINT32_MAX; in interrupt_bitmap() 535 EXPECT_EQ(0u, vector, ""); in interrupt_bitmap() 537 vector = UINT32_MAX; in interrupt_bitmap() 542 EXPECT_EQ(0u, vector, ""); in interrupt_bitmap() 544 vector = UINT32_MAX; in interrupt_bitmap() 552 vector = UINT32_MAX; in interrupt_bitmap() 557 EXPECT_EQ(1u, vector, ""); in interrupt_bitmap() 559 vector = UINT32_MAX; in interrupt_bitmap() 564 EXPECT_EQ(1u, vector, ""); in interrupt_bitmap() [all …]
|
| /kernel/arch/x86/ |
| A D | mp.cpp | 322 uint8_t vector = 0; in arch_mp_send_ipi() local 325 vector = X86_INT_IPI_GENERIC; in arch_mp_send_ipi() 328 vector = X86_INT_IPI_RESCHEDULE; in arch_mp_send_ipi() 331 vector = X86_INT_IPI_INTERRUPT; in arch_mp_send_ipi() 334 vector = X86_INT_IPI_HALT; in arch_mp_send_ipi() 341 apic_send_broadcast_ipi(vector, DELIVERY_MODE_FIXED); in arch_mp_send_ipi() 344 apic_send_broadcast_self_ipi(vector, DELIVERY_MODE_FIXED); in arch_mp_send_ipi() 367 apic_send_ipi(vector, (uint8_t)percpu->apic_id, DELIVERY_MODE_FIXED); in arch_mp_send_ipi()
|
| A D | lapic.cpp | 205 uint8_t vector, in apic_send_ipi() argument 211 uint32_t request = ICR_VECTOR(vector) | ICR_LEVEL_ASSERT; in apic_send_ipi() 226 void apic_send_self_ipi(uint8_t vector, enum apic_interrupt_delivery_mode dm) { in apic_send_self_ipi() argument 227 uint32_t request = ICR_VECTOR(vector) | ICR_LEVEL_ASSERT; in apic_send_self_ipi() 234 write_msr(LAPIC_X2APIC_MSR_SELF_IPI, vector); in apic_send_self_ipi() 244 uint8_t vector, in apic_send_broadcast_self_ipi() argument 246 uint32_t request = ICR_VECTOR(vector) | ICR_LEVEL_ASSERT; in apic_send_broadcast_self_ipi() 263 uint8_t vector, in apic_send_broadcast_ipi() argument 265 uint32_t request = ICR_VECTOR(vector) | ICR_LEVEL_ASSERT; in apic_send_broadcast_ipi()
|
| A D | ioapic.cpp | 301 uint8_t vector) { in apic_io_configure_irq() argument 308 ((vector < X86_INT_PLATFORM_BASE) || (vector > X86_INT_PLATFORM_MAX))) { in apic_io_configure_irq() 319 reg |= IO_APIC_RTE_VECTOR(vector); in apic_io_configure_irq() 348 uint8_t vector) { in apic_io_configure_irq_vector() argument 362 reg |= IO_APIC_RTE_VECTOR(vector); in apic_io_configure_irq_vector() 372 uint8_t vector = IO_APIC_RTE_GET_VECTOR(reg); in apic_io_fetch_irq_vector() local 374 return vector; in apic_io_fetch_irq_vector() 392 uint8_t vector) { in apic_io_configure_isa_irq() argument 411 vector); in apic_io_configure_isa_irq()
|
| A D | faults.cpp | 86 printf("vector %lu\n", (ulong)frame->vector); in exception_die() 339 switch (frame->vector) { in handle_exception_types() 457 if (unlikely(arch_blocking_disallowed()) && frame->vector != X86_INT_NMI) { in x86_exception_handler() 468 ktrace_tiny(TAG_IRQ_ENTER, ((uint32_t)frame->vector << 8) | arch_curr_cpu_num()); in x86_exception_handler() 485 ktrace_tiny(TAG_IRQ_EXIT, ((uint)frame->vector << 8) | arch_curr_cpu_num()); in x86_exception_handler() 489 frame->vector, frame->ip); in x86_exception_handler() 520 zx_context->arch.u.x86_64.vector = arch_context->frame->vector; in arch_fill_in_exception_context()
|
| /kernel/arch/x86/hypervisor/ |
| A D | vcpu.cpp | 127 static bool has_error_code(uint32_t vector) { in has_error_code() argument 128 switch (vector) { in has_error_code() 142 void AutoVmcs::IssueInterrupt(uint32_t vector) { in IssueInterrupt() argument 145 if (vector == X86_INT_BREAKPOINT || vector == X86_INT_OVERFLOW) { in IssueInterrupt() 149 } else if (vector == X86_INT_NMI) { in IssueInterrupt() 151 } else if (vector <= X86_INT_VIRT) { in IssueInterrupt() 155 if (has_error_code(vector)) { in IssueInterrupt() 711 uint32_t vector; in local_apic_maybe_interrupt() local 714 vector = X86_INT_NMI; in local_apic_maybe_interrupt() 724 if (vector > X86_INT_VIRT && vector < X86_INT_PLATFORM_BASE) { in local_apic_maybe_interrupt() [all …]
|
| /kernel/dev/interrupt/arm_gic/common/ |
| A D | arm_gic_hw_interface.cpp | 74 uint64_t gic_get_lr_from_vector(bool hw, uint8_t prio, uint32_t vector) { in gic_get_lr_from_vector() argument 75 return gic_ops->get_lr_from_vector(hw, prio, vector); in gic_get_lr_from_vector()
|