/root/src/xen/xen/include/asm/irq.h
Line | Count | Source (jump to first uncovered line) |
1 | | #ifndef _ASM_HW_IRQ_H |
2 | | #define _ASM_HW_IRQ_H |
3 | | |
4 | | /* (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar */ |
5 | | |
6 | | #include <asm/atomic.h> |
7 | | #include <asm/numa.h> |
8 | | #include <xen/cpumask.h> |
9 | | #include <xen/smp.h> |
10 | | #include <asm/hvm/irq.h> |
11 | | #include <irq_vectors.h> |
12 | | #include <asm/percpu.h> |
13 | | |
14 | | extern unsigned int nr_irqs_gsi; |
15 | | extern unsigned int nr_irqs; |
16 | 0 | #define nr_static_irqs nr_irqs_gsi |
17 | | |
18 | 795 | #define IO_APIC_IRQ(irq) (platform_legacy_irq(irq) ? \ |
19 | 290 | (1 << (irq)) & io_apic_irqs : \ |
20 | 505 | (irq) < nr_irqs_gsi) |
21 | | |
22 | 98 | #define MSI_IRQ(irq) ((irq) >= nr_irqs_gsi && (irq) < nr_irqs) |
23 | | |
24 | 32 | #define LEGACY_VECTOR(irq) ((irq) + FIRST_LEGACY_VECTOR) |
25 | | |
26 | | typedef struct { |
27 | | DECLARE_BITMAP(_bits,NR_VECTORS); |
28 | | } vmask_t; |
29 | | |
30 | | struct irq_desc; |
31 | | |
32 | | struct arch_irq_desc { |
33 | | s16 vector; /* vector itself is only 8 bits, */ |
34 | | s16 old_vector; /* but we use -1 for unassigned */ |
35 | | cpumask_var_t cpu_mask; |
36 | | cpumask_var_t old_cpu_mask; |
37 | | cpumask_var_t pending_mask; |
38 | | unsigned move_cleanup_count; |
39 | | vmask_t *used_vectors; |
40 | | u8 move_in_progress : 1; |
41 | | s8 used; |
42 | | }; |
43 | | |
44 | | /* For use with irq_desc.arch.used */ |
45 | 947 | #define IRQ_UNUSED (0) |
46 | 121 | #define IRQ_USED (1) |
47 | | #define IRQ_RESERVED (-1) |
48 | | |
49 | 484 | #define IRQ_VECTOR_UNASSIGNED (-1) |
50 | | |
51 | | typedef int vector_irq_t[NR_VECTORS]; |
52 | | DECLARE_PER_CPU(vector_irq_t, vector_irq); |
53 | | |
54 | | extern bool opt_noirqbalance; |
55 | | |
56 | | #define OPT_IRQ_VECTOR_MAP_DEFAULT 0 /* Do the default thing */ |
57 | 16 | #define OPT_IRQ_VECTOR_MAP_NONE 1 /* None */ |
58 | 59 | #define OPT_IRQ_VECTOR_MAP_GLOBAL 2 /* One global vector map (no vector sharing) */ |
59 | 42 | #define OPT_IRQ_VECTOR_MAP_PERDEV 3 /* Per-device vetor map (no vector sharing w/in a device) */ |
60 | | |
61 | | extern int opt_irq_vector_map; |
62 | | |
63 | | /* |
64 | | * Per-cpu current frame pointer - the location of the last exception frame on |
65 | | * the stack |
66 | | */ |
67 | | DECLARE_PER_CPU(struct cpu_user_regs *, __irq_regs); |
68 | | |
69 | | static inline struct cpu_user_regs *get_irq_regs(void) |
70 | 4.14k | { |
71 | 4.14k | return __get_cpu_var(__irq_regs); |
72 | 4.14k | } Unexecuted instantiation: mpparse.c:get_irq_regs Unexecuted instantiation: mmconfig-shared.c:get_irq_regs Unexecuted instantiation: mmconfig_64.c:get_irq_regs Unexecuted instantiation: mmconf-fam10h.c:get_irq_regs Unexecuted instantiation: acpi_mmcfg.c:get_irq_regs Unexecuted instantiation: ro-page-fault.c:get_irq_regs Unexecuted instantiation: misc-hypercalls.c:get_irq_regs Unexecuted instantiation: iret.c:get_irq_regs Unexecuted instantiation: emul-priv-op.c:get_irq_regs Unexecuted instantiation: emul-inv-op.c:get_irq_regs Unexecuted instantiation: emul-gate-op.c:get_irq_regs Unexecuted instantiation: descriptor-tables.c:get_irq_regs Unexecuted instantiation: callback.c:get_irq_regs Unexecuted instantiation: backtrace.c:get_irq_regs Unexecuted instantiation: op_model_athlon.c:get_irq_regs Unexecuted instantiation: op_model_ppro.c:get_irq_regs Unexecuted instantiation: op_model_p4.c:get_irq_regs Unexecuted instantiation: nmi_int.c:get_irq_regs Unexecuted instantiation: nested_ept.c:get_irq_regs Unexecuted instantiation: nested_hap.c:get_irq_regs Unexecuted instantiation: hap.c:get_irq_regs Unexecuted instantiation: multi.c:get_irq_regs Unexecuted instantiation: mem_sharing.c:get_irq_regs Unexecuted instantiation: mem_paging.c:get_irq_regs Unexecuted instantiation: guest_walk.c:get_irq_regs Unexecuted instantiation: altp2m.c:get_irq_regs Unexecuted instantiation: p2m-pod.c:get_irq_regs Unexecuted instantiation: p2m-ept.c:get_irq_regs Unexecuted instantiation: p2m-pt.c:get_irq_regs Unexecuted instantiation: p2m.c:get_irq_regs Unexecuted instantiation: paging.c:get_irq_regs Unexecuted instantiation: vvmx.c:get_irq_regs Unexecuted instantiation: vmx.c:get_irq_regs Unexecuted instantiation: vmcs.c:get_irq_regs Unexecuted instantiation: realmode.c:get_irq_regs Unexecuted instantiation: vmcb.c:get_irq_regs Unexecuted instantiation: svmdebug.c:get_irq_regs Unexecuted instantiation: svm.c:get_irq_regs Unexecuted instantiation: nestedsvm.c:get_irq_regs Unexecuted instantiation: intr.c:get_irq_regs Unexecuted instantiation: vpt.c:get_irq_regs Unexecuted instantiation: vpic.c:get_irq_regs Unexecuted instantiation: vmsi.c:get_irq_regs Unexecuted instantiation: vlapic.c:get_irq_regs Unexecuted instantiation: viridian.c:get_irq_regs Unexecuted instantiation: vioapic.c:get_irq_regs Unexecuted instantiation: stdvga.c:get_irq_regs Unexecuted instantiation: save.c:get_irq_regs Unexecuted instantiation: rtc.c:get_irq_regs Unexecuted instantiation: pmtimer.c:get_irq_regs Unexecuted instantiation: nestedhvm.c:get_irq_regs Unexecuted instantiation: mtrr.c:get_irq_regs Unexecuted instantiation: ioreq.c:get_irq_regs Unexecuted instantiation: intercept.c:get_irq_regs Unexecuted instantiation: i8254.c:get_irq_regs Unexecuted instantiation: hvm.c:get_irq_regs Unexecuted instantiation: emulate.c:get_irq_regs Unexecuted instantiation: dm.c:get_irq_regs Unexecuted instantiation: asid.c:get_irq_regs Unexecuted instantiation: probe.c:get_irq_regs Unexecuted instantiation: delivery.c:get_irq_regs Unexecuted instantiation: default.c:get_irq_regs Unexecuted instantiation: x2apic.c:get_irq_regs Unexecuted instantiation: bigsmp.c:get_irq_regs Unexecuted instantiation: vmce.c:get_irq_regs Unexecuted instantiation: util.c:get_irq_regs Unexecuted instantiation: non-fatal.c:get_irq_regs Unexecuted instantiation: mce_intel.c:get_irq_regs Unexecuted instantiation: mce-apei.c:get_irq_regs Unexecuted instantiation: mce.c:get_irq_regs Unexecuted instantiation: mctelem.c:get_irq_regs Unexecuted instantiation: barrier.c:get_irq_regs Unexecuted instantiation: mcaction.c:get_irq_regs Unexecuted instantiation: mce_amd.c:get_irq_regs Unexecuted instantiation: amd_nonfatal.c:get_irq_regs Unexecuted instantiation: vpmu_intel.c:get_irq_regs Unexecuted instantiation: vpmu_amd.c:get_irq_regs Unexecuted instantiation: vpmu.c:get_irq_regs Unexecuted instantiation: mwait-idle.c:get_irq_regs Unexecuted instantiation: intel.c:get_irq_regs Unexecuted instantiation: common.c:get_irq_regs Unexecuted instantiation: amd.c:get_irq_regs Unexecuted instantiation: cpuidle_menu.c:get_irq_regs Unexecuted instantiation: cpu_idle.c:get_irq_regs Unexecuted instantiation: suspend.c:get_irq_regs Unexecuted instantiation: power.c:get_irq_regs Unexecuted instantiation: lib.c:get_irq_regs Unexecuted instantiation: xstate.c:get_irq_regs Unexecuted instantiation: hpet.c:get_irq_regs Unexecuted instantiation: tboot.c:get_irq_regs Unexecuted instantiation: x86_emulate.c:get_irq_regs Unexecuted instantiation: usercopy.c:get_irq_regs Unexecuted instantiation: traps.c:get_irq_regs Unexecuted instantiation: smpboot.c:get_irq_regs Unexecuted instantiation: smp.c:get_irq_regs Unexecuted instantiation: setup.c:get_irq_regs Unexecuted instantiation: psr.c:get_irq_regs Unexecuted instantiation: platform_hypercall.c:get_irq_regs Unexecuted instantiation: physdev.c:get_irq_regs Unexecuted instantiation: numa.c:get_irq_regs Unexecuted instantiation: nmi.c:get_irq_regs Unexecuted instantiation: mm.c:get_irq_regs Unexecuted instantiation: microcode.c:get_irq_regs Unexecuted instantiation: microcode_intel.c:get_irq_regs Unexecuted instantiation: microcode_amd.c:get_irq_regs Unexecuted instantiation: machine_kexec.c:get_irq_regs Unexecuted instantiation: ioport_emulate.c:get_irq_regs Unexecuted instantiation: msr.c:get_irq_regs Unexecuted instantiation: io_apic.c:get_irq_regs Unexecuted instantiation: i8259.c:get_irq_regs Unexecuted instantiation: i387.c:get_irq_regs Unexecuted instantiation: hypercall.c:get_irq_regs Unexecuted instantiation: flushtlb.c:get_irq_regs Unexecuted instantiation: domain_page.c:get_irq_regs Unexecuted instantiation: debug.c:get_irq_regs Unexecuted instantiation: crash.c:get_irq_regs Unexecuted instantiation: compat.c:get_irq_regs Unexecuted instantiation: cpuid.c:get_irq_regs Unexecuted instantiation: apic.c:get_irq_regs Unexecuted instantiation: xsm_core.c:get_irq_regs Unexecuted instantiation: vga.c:get_irq_regs Unexecuted instantiation: apei-io.c:get_irq_regs Unexecuted instantiation: erst.c:get_irq_regs Unexecuted instantiation: reboot.c:get_irq_regs Unexecuted instantiation: pmstat.c:get_irq_regs Unexecuted instantiation: iommu_guest.c:get_irq_regs Unexecuted instantiation: iommu_cmd.c:get_irq_regs Unexecuted instantiation: iommu_intr.c:get_irq_regs Unexecuted instantiation: pci_amd_iommu.c:get_irq_regs Unexecuted instantiation: iommu_map.c:get_irq_regs Unexecuted instantiation: iommu_init.c:get_irq_regs Unexecuted instantiation: ats.c:get_irq_regs Unexecuted instantiation: vtd.c:get_irq_regs Unexecuted instantiation: quirks.c:get_irq_regs Unexecuted instantiation: intremap.c:get_irq_regs Unexecuted instantiation: qinval.c:get_irq_regs Unexecuted instantiation: utils.c:get_irq_regs Unexecuted instantiation: dmar.c:get_irq_regs Unexecuted instantiation: io.c:get_irq_regs Unexecuted instantiation: iommu.c:get_irq_regs Unexecuted instantiation: msix.c:get_irq_regs Unexecuted instantiation: msi.c:get_irq_regs Unexecuted instantiation: header.c:get_irq_regs Unexecuted instantiation: vpci.c:get_irq_regs Unexecuted instantiation: pci.c:get_irq_regs Unexecuted instantiation: utility.c:get_irq_regs Unexecuted instantiation: cpufreq_misc_governors.c:get_irq_regs Unexecuted instantiation: cpufreq_ondemand.c:get_irq_regs Unexecuted instantiation: cpufreq.c:get_irq_regs Unexecuted instantiation: ehci-dbgp.c:get_irq_regs Unexecuted instantiation: ns16550.c:get_irq_regs Unexecuted instantiation: console.c:get_irq_regs Unexecuted instantiation: libelf-loader.c:get_irq_regs Unexecuted instantiation: llvm.c:get_irq_regs Unexecuted instantiation: tmem_control.c:get_irq_regs Unexecuted instantiation: tmem_xen.c:get_irq_regs Unexecuted instantiation: tmem.c:get_irq_regs Unexecuted instantiation: xmalloc_tlsf.c:get_irq_regs Unexecuted instantiation: xenoprof.c:get_irq_regs Unexecuted instantiation: wait.c:get_irq_regs Unexecuted instantiation: vsprintf.c:get_irq_regs Unexecuted instantiation: vm_event.c:get_irq_regs Unexecuted instantiation: trace.c:get_irq_regs Unexecuted instantiation: timer.c:get_irq_regs Unexecuted instantiation: time.c:get_irq_regs Unexecuted instantiation: tasklet.c:get_irq_regs Unexecuted instantiation: sysctl.c:get_irq_regs Unexecuted instantiation: symbols.c:get_irq_regs Unexecuted instantiation: stop_machine.c:get_irq_regs Unexecuted instantiation: spinlock.c:get_irq_regs Unexecuted instantiation: softirq.c:get_irq_regs Unexecuted instantiation: shutdown.c:get_irq_regs Unexecuted instantiation: schedule.c:get_irq_regs Unexecuted instantiation: sched_null.c:get_irq_regs Unexecuted instantiation: sched_rt.c:get_irq_regs Unexecuted instantiation: sched_credit2.c:get_irq_regs Unexecuted instantiation: sched_credit.c:get_irq_regs Unexecuted instantiation: sched_arinc653.c:get_irq_regs Unexecuted instantiation: rwlock.c:get_irq_regs Unexecuted instantiation: rcupdate.c:get_irq_regs Unexecuted instantiation: rangeset.c:get_irq_regs Unexecuted instantiation: preempt.c:get_irq_regs Unexecuted instantiation: page_alloc.c:get_irq_regs Unexecuted instantiation: multicall.c:get_irq_regs Unexecuted instantiation: monitor.c:get_irq_regs Unexecuted instantiation: memory.c:get_irq_regs Unexecuted instantiation: mem_access.c:get_irq_regs Unexecuted instantiation: kimage.c:get_irq_regs Unexecuted instantiation: kexec.c:get_irq_regs Unexecuted instantiation: keyhandler.c:get_irq_regs Unexecuted instantiation: kernel.c:get_irq_regs Line | Count | Source | 70 | 4.14k | { | 71 | 4.14k | return __get_cpu_var(__irq_regs); | 72 | 4.14k | } |
Unexecuted instantiation: guestcopy.c:get_irq_regs Unexecuted instantiation: grant_table.c:get_irq_regs Unexecuted instantiation: event_fifo.c:get_irq_regs Unexecuted instantiation: event_channel.c:get_irq_regs Unexecuted instantiation: event_2l.c:get_irq_regs Unexecuted instantiation: domain.c:get_irq_regs Unexecuted instantiation: domctl.c:get_irq_regs Unexecuted instantiation: cpupool.c:get_irq_regs Unexecuted instantiation: cpu.c:get_irq_regs |
73 | | |
74 | | static inline struct cpu_user_regs *set_irq_regs(struct cpu_user_regs *new_regs) |
75 | 3.84M | { |
76 | 3.84M | struct cpu_user_regs *old_regs, **pp_regs = &__get_cpu_var(__irq_regs); |
77 | 3.84M | |
78 | 3.84M | old_regs = *pp_regs; |
79 | 3.84M | *pp_regs = new_regs; |
80 | 3.84M | return old_regs; |
81 | 3.84M | } Unexecuted instantiation: mmconfig-shared.c:set_irq_regs Unexecuted instantiation: cpu.c:set_irq_regs Unexecuted instantiation: mmconfig_64.c:set_irq_regs Unexecuted instantiation: mmconf-fam10h.c:set_irq_regs Unexecuted instantiation: acpi_mmcfg.c:set_irq_regs Unexecuted instantiation: ro-page-fault.c:set_irq_regs Unexecuted instantiation: misc-hypercalls.c:set_irq_regs Unexecuted instantiation: iret.c:set_irq_regs Unexecuted instantiation: emul-priv-op.c:set_irq_regs Unexecuted instantiation: emul-inv-op.c:set_irq_regs Unexecuted instantiation: emul-gate-op.c:set_irq_regs Unexecuted instantiation: descriptor-tables.c:set_irq_regs Unexecuted instantiation: callback.c:set_irq_regs Unexecuted instantiation: backtrace.c:set_irq_regs Unexecuted instantiation: op_model_athlon.c:set_irq_regs Unexecuted instantiation: op_model_ppro.c:set_irq_regs Unexecuted instantiation: op_model_p4.c:set_irq_regs Unexecuted instantiation: nmi_int.c:set_irq_regs Unexecuted instantiation: nested_ept.c:set_irq_regs Unexecuted instantiation: nested_hap.c:set_irq_regs Unexecuted instantiation: hap.c:set_irq_regs Unexecuted instantiation: multi.c:set_irq_regs Unexecuted instantiation: mem_sharing.c:set_irq_regs Unexecuted instantiation: mem_paging.c:set_irq_regs Unexecuted instantiation: guest_walk.c:set_irq_regs Unexecuted instantiation: altp2m.c:set_irq_regs Unexecuted instantiation: p2m-pod.c:set_irq_regs Unexecuted instantiation: p2m-ept.c:set_irq_regs Unexecuted instantiation: p2m-pt.c:set_irq_regs Unexecuted instantiation: p2m.c:set_irq_regs Unexecuted instantiation: paging.c:set_irq_regs Unexecuted instantiation: vvmx.c:set_irq_regs Unexecuted instantiation: vmx.c:set_irq_regs Unexecuted instantiation: vmcs.c:set_irq_regs Unexecuted instantiation: realmode.c:set_irq_regs Unexecuted instantiation: vmcb.c:set_irq_regs Unexecuted instantiation: svmdebug.c:set_irq_regs Unexecuted instantiation: svm.c:set_irq_regs Unexecuted instantiation: nestedsvm.c:set_irq_regs Unexecuted instantiation: intr.c:set_irq_regs Unexecuted instantiation: vpt.c:set_irq_regs Unexecuted instantiation: vpic.c:set_irq_regs Unexecuted instantiation: vmsi.c:set_irq_regs Unexecuted instantiation: vlapic.c:set_irq_regs Unexecuted instantiation: viridian.c:set_irq_regs Unexecuted instantiation: vioapic.c:set_irq_regs Unexecuted instantiation: stdvga.c:set_irq_regs Unexecuted instantiation: save.c:set_irq_regs Unexecuted instantiation: rtc.c:set_irq_regs Unexecuted instantiation: pmtimer.c:set_irq_regs Unexecuted instantiation: nestedhvm.c:set_irq_regs Unexecuted instantiation: mtrr.c:set_irq_regs Unexecuted instantiation: ioreq.c:set_irq_regs Unexecuted instantiation: intercept.c:set_irq_regs Unexecuted instantiation: i8254.c:set_irq_regs Unexecuted instantiation: hvm.c:set_irq_regs Unexecuted instantiation: emulate.c:set_irq_regs Unexecuted instantiation: dm.c:set_irq_regs Unexecuted instantiation: asid.c:set_irq_regs Unexecuted instantiation: probe.c:set_irq_regs Unexecuted instantiation: delivery.c:set_irq_regs Unexecuted instantiation: default.c:set_irq_regs Unexecuted instantiation: x2apic.c:set_irq_regs Unexecuted instantiation: bigsmp.c:set_irq_regs Unexecuted instantiation: vmce.c:set_irq_regs Unexecuted instantiation: util.c:set_irq_regs Unexecuted instantiation: non-fatal.c:set_irq_regs Unexecuted instantiation: mce_intel.c:set_irq_regs Unexecuted instantiation: mce-apei.c:set_irq_regs Unexecuted instantiation: mce.c:set_irq_regs Unexecuted instantiation: mctelem.c:set_irq_regs Unexecuted instantiation: barrier.c:set_irq_regs Unexecuted instantiation: mcaction.c:set_irq_regs Unexecuted instantiation: mce_amd.c:set_irq_regs Unexecuted instantiation: amd_nonfatal.c:set_irq_regs Unexecuted instantiation: vpmu_intel.c:set_irq_regs Unexecuted instantiation: vpmu_amd.c:set_irq_regs Unexecuted instantiation: vpmu.c:set_irq_regs Unexecuted instantiation: mwait-idle.c:set_irq_regs Unexecuted instantiation: intel.c:set_irq_regs Unexecuted instantiation: common.c:set_irq_regs Unexecuted instantiation: amd.c:set_irq_regs Unexecuted instantiation: cpuidle_menu.c:set_irq_regs Unexecuted instantiation: cpu_idle.c:set_irq_regs Unexecuted instantiation: suspend.c:set_irq_regs Unexecuted instantiation: power.c:set_irq_regs Unexecuted instantiation: lib.c:set_irq_regs Unexecuted instantiation: xstate.c:set_irq_regs Unexecuted instantiation: hpet.c:set_irq_regs Unexecuted instantiation: tboot.c:set_irq_regs Unexecuted instantiation: x86_emulate.c:set_irq_regs Unexecuted instantiation: usercopy.c:set_irq_regs Unexecuted instantiation: traps.c:set_irq_regs Unexecuted instantiation: smpboot.c:set_irq_regs Unexecuted instantiation: smp.c:set_irq_regs Unexecuted instantiation: setup.c:set_irq_regs Unexecuted instantiation: psr.c:set_irq_regs Unexecuted instantiation: platform_hypercall.c:set_irq_regs Unexecuted instantiation: physdev.c:set_irq_regs Unexecuted instantiation: numa.c:set_irq_regs Unexecuted instantiation: nmi.c:set_irq_regs Unexecuted instantiation: mpparse.c:set_irq_regs Unexecuted instantiation: mm.c:set_irq_regs Unexecuted instantiation: microcode.c:set_irq_regs Unexecuted instantiation: microcode_intel.c:set_irq_regs Unexecuted instantiation: microcode_amd.c:set_irq_regs Unexecuted instantiation: machine_kexec.c:set_irq_regs Unexecuted instantiation: ioport_emulate.c:set_irq_regs Unexecuted instantiation: msr.c:set_irq_regs Unexecuted instantiation: io_apic.c:set_irq_regs Unexecuted instantiation: i8259.c:set_irq_regs Unexecuted instantiation: i387.c:set_irq_regs Unexecuted instantiation: hypercall.c:set_irq_regs Unexecuted instantiation: flushtlb.c:set_irq_regs Unexecuted instantiation: domain_page.c:set_irq_regs Unexecuted instantiation: debug.c:set_irq_regs Unexecuted instantiation: crash.c:set_irq_regs Unexecuted instantiation: compat.c:set_irq_regs Unexecuted instantiation: cpuid.c:set_irq_regs Unexecuted instantiation: apic.c:set_irq_regs Unexecuted instantiation: xsm_core.c:set_irq_regs Unexecuted instantiation: vga.c:set_irq_regs Unexecuted instantiation: apei-io.c:set_irq_regs Unexecuted instantiation: erst.c:set_irq_regs Unexecuted instantiation: reboot.c:set_irq_regs Unexecuted instantiation: pmstat.c:set_irq_regs Unexecuted instantiation: iommu_guest.c:set_irq_regs Unexecuted instantiation: iommu_cmd.c:set_irq_regs Unexecuted instantiation: iommu_intr.c:set_irq_regs Unexecuted instantiation: pci_amd_iommu.c:set_irq_regs Unexecuted instantiation: iommu_map.c:set_irq_regs Unexecuted instantiation: iommu_init.c:set_irq_regs Unexecuted instantiation: ats.c:set_irq_regs Unexecuted instantiation: vtd.c:set_irq_regs Unexecuted instantiation: quirks.c:set_irq_regs Unexecuted instantiation: intremap.c:set_irq_regs Unexecuted instantiation: qinval.c:set_irq_regs Unexecuted instantiation: utils.c:set_irq_regs Unexecuted instantiation: dmar.c:set_irq_regs Unexecuted instantiation: io.c:set_irq_regs Unexecuted instantiation: iommu.c:set_irq_regs Unexecuted instantiation: msix.c:set_irq_regs Unexecuted instantiation: msi.c:set_irq_regs Unexecuted instantiation: header.c:set_irq_regs Unexecuted instantiation: vpci.c:set_irq_regs Unexecuted instantiation: pci.c:set_irq_regs Unexecuted instantiation: utility.c:set_irq_regs Unexecuted instantiation: cpufreq_misc_governors.c:set_irq_regs Unexecuted instantiation: cpufreq_ondemand.c:set_irq_regs Unexecuted instantiation: cpufreq.c:set_irq_regs Unexecuted instantiation: ehci-dbgp.c:set_irq_regs Unexecuted instantiation: ns16550.c:set_irq_regs Unexecuted instantiation: console.c:set_irq_regs Unexecuted instantiation: libelf-loader.c:set_irq_regs Unexecuted instantiation: llvm.c:set_irq_regs Unexecuted instantiation: tmem_control.c:set_irq_regs Unexecuted instantiation: tmem_xen.c:set_irq_regs Unexecuted instantiation: tmem.c:set_irq_regs Unexecuted instantiation: xmalloc_tlsf.c:set_irq_regs Unexecuted instantiation: xenoprof.c:set_irq_regs Unexecuted instantiation: wait.c:set_irq_regs Unexecuted instantiation: vsprintf.c:set_irq_regs Unexecuted instantiation: vm_event.c:set_irq_regs Unexecuted instantiation: trace.c:set_irq_regs Unexecuted instantiation: timer.c:set_irq_regs Unexecuted instantiation: time.c:set_irq_regs Unexecuted instantiation: tasklet.c:set_irq_regs Unexecuted instantiation: sysctl.c:set_irq_regs Unexecuted instantiation: symbols.c:set_irq_regs Unexecuted instantiation: stop_machine.c:set_irq_regs Unexecuted instantiation: spinlock.c:set_irq_regs Unexecuted instantiation: softirq.c:set_irq_regs Unexecuted instantiation: shutdown.c:set_irq_regs Unexecuted instantiation: schedule.c:set_irq_regs Unexecuted instantiation: sched_null.c:set_irq_regs Unexecuted instantiation: sched_rt.c:set_irq_regs Unexecuted instantiation: sched_credit2.c:set_irq_regs Unexecuted instantiation: sched_credit.c:set_irq_regs Unexecuted instantiation: sched_arinc653.c:set_irq_regs Unexecuted instantiation: rwlock.c:set_irq_regs Unexecuted instantiation: rcupdate.c:set_irq_regs Unexecuted instantiation: rangeset.c:set_irq_regs Unexecuted instantiation: preempt.c:set_irq_regs Unexecuted instantiation: page_alloc.c:set_irq_regs Unexecuted instantiation: multicall.c:set_irq_regs Unexecuted instantiation: monitor.c:set_irq_regs Unexecuted instantiation: memory.c:set_irq_regs Unexecuted instantiation: mem_access.c:set_irq_regs Unexecuted instantiation: kimage.c:set_irq_regs Unexecuted instantiation: kexec.c:set_irq_regs Unexecuted instantiation: keyhandler.c:set_irq_regs Unexecuted instantiation: kernel.c:set_irq_regs Line | Count | Source | 75 | 3.84M | { | 76 | 3.84M | struct cpu_user_regs *old_regs, **pp_regs = &__get_cpu_var(__irq_regs); | 77 | 3.84M | | 78 | 3.84M | old_regs = *pp_regs; | 79 | 3.84M | *pp_regs = new_regs; | 80 | 3.84M | return old_regs; | 81 | 3.84M | } |
Unexecuted instantiation: guestcopy.c:set_irq_regs Unexecuted instantiation: grant_table.c:set_irq_regs Unexecuted instantiation: event_fifo.c:set_irq_regs Unexecuted instantiation: event_channel.c:set_irq_regs Unexecuted instantiation: event_2l.c:set_irq_regs Unexecuted instantiation: domain.c:set_irq_regs Unexecuted instantiation: domctl.c:set_irq_regs Unexecuted instantiation: cpupool.c:set_irq_regs |
82 | | |
83 | | |
84 | 892 | #define platform_legacy_irq(irq) ((irq) < 16) |
85 | | |
86 | | void event_check_interrupt(struct cpu_user_regs *regs); |
87 | | void invalidate_interrupt(struct cpu_user_regs *regs); |
88 | | void call_function_interrupt(struct cpu_user_regs *regs); |
89 | | void apic_timer_interrupt(struct cpu_user_regs *regs); |
90 | | void error_interrupt(struct cpu_user_regs *regs); |
91 | | void pmu_apic_interrupt(struct cpu_user_regs *regs); |
92 | | void spurious_interrupt(struct cpu_user_regs *regs); |
93 | | void irq_move_cleanup_interrupt(struct cpu_user_regs *regs); |
94 | | |
95 | | uint8_t alloc_hipriority_vector(void); |
96 | | |
97 | | void set_direct_apic_vector( |
98 | | uint8_t vector, void (*handler)(struct cpu_user_regs *)); |
99 | | void alloc_direct_apic_vector( |
100 | | uint8_t *vector, void (*handler)(struct cpu_user_regs *)); |
101 | | |
102 | | void do_IRQ(struct cpu_user_regs *regs); |
103 | | |
104 | | void disable_8259A_irq(struct irq_desc *); |
105 | | void enable_8259A_irq(struct irq_desc *); |
106 | | int i8259A_irq_pending(unsigned int irq); |
107 | | void mask_8259A(void); |
108 | | void unmask_8259A(void); |
109 | | void init_8259A(int aeoi); |
110 | | void make_8259A_irq(unsigned int irq); |
111 | | bool bogus_8259A_irq(unsigned int irq); |
112 | | int i8259A_suspend(void); |
113 | | int i8259A_resume(void); |
114 | | |
115 | | void setup_IO_APIC(void); |
116 | | void disable_IO_APIC(void); |
117 | | void setup_ioapic_dest(void); |
118 | | vmask_t *io_apic_get_used_vector_map(unsigned int irq); |
119 | | |
120 | | extern unsigned int io_apic_irqs; |
121 | | |
122 | | DECLARE_PER_CPU(unsigned int, irq_count); |
123 | | |
124 | | struct pirq; |
125 | | struct arch_pirq { |
126 | | int irq; |
127 | | union { |
128 | | struct hvm_pirq { |
129 | | int emuirq; |
130 | | struct hvm_pirq_dpci dpci; |
131 | | } hvm; |
132 | | }; |
133 | | }; |
134 | | |
135 | 5.37k | #define pirq_dpci(pirq) ((pirq) ? &(pirq)->arch.hvm.dpci : NULL) |
136 | 4.28k | #define dpci_pirq(pd) container_of(pd, struct pirq, arch.hvm.dpci) |
137 | | |
138 | | int pirq_shared(struct domain *d , int irq); |
139 | | |
140 | | int map_domain_pirq(struct domain *d, int pirq, int irq, int type, |
141 | | void *data); |
142 | | int unmap_domain_pirq(struct domain *d, int pirq); |
143 | | int get_free_pirq(struct domain *d, int type); |
144 | | int get_free_pirqs(struct domain *, unsigned int nr); |
145 | | void free_domain_pirqs(struct domain *d); |
146 | | int map_domain_emuirq_pirq(struct domain *d, int pirq, int irq); |
147 | | int unmap_domain_pirq_emuirq(struct domain *d, int pirq); |
148 | | bool hvm_domain_use_pirq(const struct domain *, const struct pirq *); |
149 | | |
150 | | /* Reset irq affinities to match the given CPU mask. */ |
151 | | void fixup_irqs(const cpumask_t *mask, bool verbose); |
152 | | void fixup_eoi(void); |
153 | | |
154 | | int init_irq_data(void); |
155 | | |
156 | | void clear_irq_vector(int irq); |
157 | | |
158 | | int irq_to_vector(int irq); |
159 | | int create_irq(nodeid_t node); |
160 | | void destroy_irq(unsigned int irq); |
161 | | int assign_irq_vector(int irq, const cpumask_t *); |
162 | | |
163 | | extern void irq_complete_move(struct irq_desc *); |
164 | | |
165 | | extern struct irq_desc *irq_desc; |
166 | | |
167 | | void lock_vector_lock(void); |
168 | | void unlock_vector_lock(void); |
169 | | |
170 | | void setup_vector_irq(unsigned int cpu); |
171 | | |
172 | | void move_native_irq(struct irq_desc *); |
173 | | void move_masked_irq(struct irq_desc *); |
174 | | |
175 | | int bind_irq_vector(int irq, int vector, const cpumask_t *); |
176 | | |
177 | | void irq_set_affinity(struct irq_desc *, const cpumask_t *mask); |
178 | | |
179 | | int init_domain_irq_mapping(struct domain *); |
180 | | void cleanup_domain_irq_mapping(struct domain *); |
181 | | |
182 | 102 | #define domain_pirq_to_irq(d, pirq) pirq_field(d, pirq, arch.irq, 0) |
183 | 3.94k | #define domain_irq_to_pirq(d, irq) ({ \ |
184 | 3.94k | void *__ret = radix_tree_lookup(&(d)->arch.irq_pirq, irq); \ |
185 | 3.84k | __ret ? radix_tree_ptr_to_int(__ret) : 0; \ |
186 | 3.94k | }) |
187 | 0 | #define PIRQ_ALLOCATED -1 |
188 | 0 | #define domain_pirq_to_emuirq(d, pirq) pirq_field(d, pirq, \ |
189 | 0 | arch.hvm.emuirq, IRQ_UNBOUND) |
190 | 0 | #define domain_emuirq_to_pirq(d, emuirq) ({ \ |
191 | 0 | void *__ret = radix_tree_lookup(&(d)->arch.hvm_domain.emuirq_pirq, \ |
192 | 0 | emuirq); \ |
193 | 0 | __ret ? radix_tree_ptr_to_int(__ret) : IRQ_UNBOUND; \ |
194 | 0 | }) |
195 | 8.63k | #define IRQ_UNBOUND -1 |
196 | 0 | #define IRQ_PT -2 |
197 | 0 | #define IRQ_MSI_EMU -3 |
198 | | |
199 | | bool cpu_has_pending_apic_eoi(void); |
200 | | |
201 | 536 | static inline void arch_move_irqs(struct vcpu *v) { } Unexecuted instantiation: mmconfig_64.c:arch_move_irqs Unexecuted instantiation: cpupool.c:arch_move_irqs Unexecuted instantiation: domctl.c:arch_move_irqs Unexecuted instantiation: domain.c:arch_move_irqs Unexecuted instantiation: event_2l.c:arch_move_irqs Unexecuted instantiation: event_channel.c:arch_move_irqs Unexecuted instantiation: event_fifo.c:arch_move_irqs Unexecuted instantiation: grant_table.c:arch_move_irqs Unexecuted instantiation: guestcopy.c:arch_move_irqs Unexecuted instantiation: irq.c:arch_move_irqs Unexecuted instantiation: kernel.c:arch_move_irqs Unexecuted instantiation: keyhandler.c:arch_move_irqs Unexecuted instantiation: kexec.c:arch_move_irqs Unexecuted instantiation: kimage.c:arch_move_irqs Unexecuted instantiation: mem_access.c:arch_move_irqs Unexecuted instantiation: memory.c:arch_move_irqs Unexecuted instantiation: monitor.c:arch_move_irqs Unexecuted instantiation: multicall.c:arch_move_irqs Unexecuted instantiation: page_alloc.c:arch_move_irqs Unexecuted instantiation: preempt.c:arch_move_irqs Unexecuted instantiation: rangeset.c:arch_move_irqs Unexecuted instantiation: rcupdate.c:arch_move_irqs Unexecuted instantiation: rwlock.c:arch_move_irqs Unexecuted instantiation: sched_arinc653.c:arch_move_irqs Unexecuted instantiation: sched_credit.c:arch_move_irqs Unexecuted instantiation: sched_credit2.c:arch_move_irqs Unexecuted instantiation: sched_rt.c:arch_move_irqs Unexecuted instantiation: sched_null.c:arch_move_irqs schedule.c:arch_move_irqs Line | Count | Source | 201 | 536 | static inline void arch_move_irqs(struct vcpu *v) { } |
Unexecuted instantiation: shutdown.c:arch_move_irqs Unexecuted instantiation: softirq.c:arch_move_irqs Unexecuted instantiation: spinlock.c:arch_move_irqs Unexecuted instantiation: stop_machine.c:arch_move_irqs Unexecuted instantiation: symbols.c:arch_move_irqs Unexecuted instantiation: sysctl.c:arch_move_irqs Unexecuted instantiation: tasklet.c:arch_move_irqs Unexecuted instantiation: time.c:arch_move_irqs Unexecuted instantiation: timer.c:arch_move_irqs Unexecuted instantiation: trace.c:arch_move_irqs Unexecuted instantiation: vm_event.c:arch_move_irqs Unexecuted instantiation: vsprintf.c:arch_move_irqs Unexecuted instantiation: wait.c:arch_move_irqs Unexecuted instantiation: xenoprof.c:arch_move_irqs Unexecuted instantiation: xmalloc_tlsf.c:arch_move_irqs Unexecuted instantiation: tmem.c:arch_move_irqs Unexecuted instantiation: tmem_xen.c:arch_move_irqs Unexecuted instantiation: tmem_control.c:arch_move_irqs Unexecuted instantiation: llvm.c:arch_move_irqs Unexecuted instantiation: libelf-loader.c:arch_move_irqs Unexecuted instantiation: console.c:arch_move_irqs Unexecuted instantiation: ns16550.c:arch_move_irqs Unexecuted instantiation: ehci-dbgp.c:arch_move_irqs Unexecuted instantiation: cpufreq.c:arch_move_irqs Unexecuted instantiation: cpufreq_ondemand.c:arch_move_irqs Unexecuted instantiation: cpufreq_misc_governors.c:arch_move_irqs Unexecuted instantiation: utility.c:arch_move_irqs Unexecuted instantiation: pci.c:arch_move_irqs Unexecuted instantiation: vpci.c:arch_move_irqs Unexecuted instantiation: header.c:arch_move_irqs Unexecuted instantiation: msi.c:arch_move_irqs Unexecuted instantiation: msix.c:arch_move_irqs Unexecuted instantiation: iommu.c:arch_move_irqs Unexecuted instantiation: io.c:arch_move_irqs Unexecuted instantiation: dmar.c:arch_move_irqs Unexecuted instantiation: utils.c:arch_move_irqs Unexecuted instantiation: qinval.c:arch_move_irqs Unexecuted instantiation: intremap.c:arch_move_irqs Unexecuted instantiation: quirks.c:arch_move_irqs Unexecuted instantiation: vtd.c:arch_move_irqs Unexecuted instantiation: ats.c:arch_move_irqs Unexecuted instantiation: iommu_init.c:arch_move_irqs Unexecuted instantiation: iommu_map.c:arch_move_irqs Unexecuted instantiation: pci_amd_iommu.c:arch_move_irqs Unexecuted instantiation: iommu_intr.c:arch_move_irqs Unexecuted instantiation: iommu_cmd.c:arch_move_irqs Unexecuted instantiation: iommu_guest.c:arch_move_irqs Unexecuted instantiation: pmstat.c:arch_move_irqs Unexecuted instantiation: reboot.c:arch_move_irqs Unexecuted instantiation: erst.c:arch_move_irqs Unexecuted instantiation: apei-io.c:arch_move_irqs Unexecuted instantiation: vga.c:arch_move_irqs Unexecuted instantiation: xsm_core.c:arch_move_irqs Unexecuted instantiation: apic.c:arch_move_irqs Unexecuted instantiation: cpuid.c:arch_move_irqs Unexecuted instantiation: compat.c:arch_move_irqs Unexecuted instantiation: crash.c:arch_move_irqs Unexecuted instantiation: debug.c:arch_move_irqs Unexecuted instantiation: domain_page.c:arch_move_irqs Unexecuted instantiation: flushtlb.c:arch_move_irqs Unexecuted instantiation: hypercall.c:arch_move_irqs Unexecuted instantiation: i387.c:arch_move_irqs Unexecuted instantiation: i8259.c:arch_move_irqs Unexecuted instantiation: io_apic.c:arch_move_irqs Unexecuted instantiation: msr.c:arch_move_irqs Unexecuted instantiation: ioport_emulate.c:arch_move_irqs Unexecuted instantiation: machine_kexec.c:arch_move_irqs Unexecuted instantiation: microcode_amd.c:arch_move_irqs Unexecuted instantiation: microcode_intel.c:arch_move_irqs Unexecuted instantiation: microcode.c:arch_move_irqs Unexecuted instantiation: mm.c:arch_move_irqs Unexecuted instantiation: mpparse.c:arch_move_irqs Unexecuted instantiation: mmconfig-shared.c:arch_move_irqs Unexecuted instantiation: nmi.c:arch_move_irqs Unexecuted instantiation: numa.c:arch_move_irqs Unexecuted instantiation: physdev.c:arch_move_irqs Unexecuted instantiation: platform_hypercall.c:arch_move_irqs Unexecuted instantiation: psr.c:arch_move_irqs Unexecuted instantiation: setup.c:arch_move_irqs Unexecuted instantiation: smp.c:arch_move_irqs Unexecuted instantiation: smpboot.c:arch_move_irqs Unexecuted instantiation: traps.c:arch_move_irqs Unexecuted instantiation: usercopy.c:arch_move_irqs Unexecuted instantiation: x86_emulate.c:arch_move_irqs Unexecuted instantiation: tboot.c:arch_move_irqs Unexecuted instantiation: hpet.c:arch_move_irqs Unexecuted instantiation: xstate.c:arch_move_irqs Unexecuted instantiation: lib.c:arch_move_irqs Unexecuted instantiation: power.c:arch_move_irqs Unexecuted instantiation: suspend.c:arch_move_irqs Unexecuted instantiation: cpu_idle.c:arch_move_irqs Unexecuted instantiation: cpuidle_menu.c:arch_move_irqs Unexecuted instantiation: amd.c:arch_move_irqs Unexecuted instantiation: common.c:arch_move_irqs Unexecuted instantiation: intel.c:arch_move_irqs Unexecuted instantiation: mwait-idle.c:arch_move_irqs Unexecuted instantiation: vpmu.c:arch_move_irqs Unexecuted instantiation: vpmu_amd.c:arch_move_irqs Unexecuted instantiation: vpmu_intel.c:arch_move_irqs Unexecuted instantiation: amd_nonfatal.c:arch_move_irqs Unexecuted instantiation: mce_amd.c:arch_move_irqs Unexecuted instantiation: mcaction.c:arch_move_irqs Unexecuted instantiation: barrier.c:arch_move_irqs Unexecuted instantiation: mctelem.c:arch_move_irqs Unexecuted instantiation: mce.c:arch_move_irqs Unexecuted instantiation: mce-apei.c:arch_move_irqs Unexecuted instantiation: mce_intel.c:arch_move_irqs Unexecuted instantiation: non-fatal.c:arch_move_irqs Unexecuted instantiation: util.c:arch_move_irqs Unexecuted instantiation: vmce.c:arch_move_irqs Unexecuted instantiation: bigsmp.c:arch_move_irqs Unexecuted instantiation: x2apic.c:arch_move_irqs Unexecuted instantiation: default.c:arch_move_irqs Unexecuted instantiation: delivery.c:arch_move_irqs Unexecuted instantiation: probe.c:arch_move_irqs Unexecuted instantiation: asid.c:arch_move_irqs Unexecuted instantiation: dm.c:arch_move_irqs Unexecuted instantiation: emulate.c:arch_move_irqs Unexecuted instantiation: hvm.c:arch_move_irqs Unexecuted instantiation: i8254.c:arch_move_irqs Unexecuted instantiation: intercept.c:arch_move_irqs Unexecuted instantiation: ioreq.c:arch_move_irqs Unexecuted instantiation: mtrr.c:arch_move_irqs Unexecuted instantiation: nestedhvm.c:arch_move_irqs Unexecuted instantiation: pmtimer.c:arch_move_irqs Unexecuted instantiation: rtc.c:arch_move_irqs Unexecuted instantiation: save.c:arch_move_irqs Unexecuted instantiation: stdvga.c:arch_move_irqs Unexecuted instantiation: vioapic.c:arch_move_irqs Unexecuted instantiation: viridian.c:arch_move_irqs Unexecuted instantiation: vlapic.c:arch_move_irqs Unexecuted instantiation: vmsi.c:arch_move_irqs Unexecuted instantiation: vpic.c:arch_move_irqs Unexecuted instantiation: vpt.c:arch_move_irqs Unexecuted instantiation: intr.c:arch_move_irqs Unexecuted instantiation: nestedsvm.c:arch_move_irqs Unexecuted instantiation: svm.c:arch_move_irqs Unexecuted instantiation: svmdebug.c:arch_move_irqs Unexecuted instantiation: vmcb.c:arch_move_irqs Unexecuted instantiation: realmode.c:arch_move_irqs Unexecuted instantiation: vmcs.c:arch_move_irqs Unexecuted instantiation: vmx.c:arch_move_irqs Unexecuted instantiation: vvmx.c:arch_move_irqs Unexecuted instantiation: paging.c:arch_move_irqs Unexecuted instantiation: p2m.c:arch_move_irqs Unexecuted instantiation: p2m-pt.c:arch_move_irqs Unexecuted instantiation: p2m-ept.c:arch_move_irqs Unexecuted instantiation: p2m-pod.c:arch_move_irqs Unexecuted instantiation: altp2m.c:arch_move_irqs Unexecuted instantiation: guest_walk.c:arch_move_irqs Unexecuted instantiation: mem_paging.c:arch_move_irqs Unexecuted instantiation: mem_sharing.c:arch_move_irqs Unexecuted instantiation: multi.c:arch_move_irqs Unexecuted instantiation: hap.c:arch_move_irqs Unexecuted instantiation: nested_hap.c:arch_move_irqs Unexecuted instantiation: nested_ept.c:arch_move_irqs Unexecuted instantiation: nmi_int.c:arch_move_irqs Unexecuted instantiation: op_model_p4.c:arch_move_irqs Unexecuted instantiation: op_model_ppro.c:arch_move_irqs Unexecuted instantiation: op_model_athlon.c:arch_move_irqs Unexecuted instantiation: backtrace.c:arch_move_irqs Unexecuted instantiation: callback.c:arch_move_irqs Unexecuted instantiation: descriptor-tables.c:arch_move_irqs Unexecuted instantiation: emul-gate-op.c:arch_move_irqs Unexecuted instantiation: emul-inv-op.c:arch_move_irqs Unexecuted instantiation: emul-priv-op.c:arch_move_irqs Unexecuted instantiation: iret.c:arch_move_irqs Unexecuted instantiation: misc-hypercalls.c:arch_move_irqs Unexecuted instantiation: ro-page-fault.c:arch_move_irqs Unexecuted instantiation: acpi_mmcfg.c:arch_move_irqs Unexecuted instantiation: mmconf-fam10h.c:arch_move_irqs Unexecuted instantiation: cpu.c:arch_move_irqs |
202 | | |
203 | | struct msi_info; |
204 | | int allocate_and_map_gsi_pirq(struct domain *d, int index, int *pirq_p); |
205 | | int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p, |
206 | | int type, struct msi_info *msi); |
207 | | |
208 | | #endif /* _ASM_HW_IRQ_H */ |