/root/src/xen/xen/include/asm/iommu.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * This program is free software; you can redistribute it and/or modify it |
3 | | * under the terms and conditions of the GNU General Public License, |
4 | | * version 2, as published by the Free Software Foundation. |
5 | | * |
6 | | * This program is distributed in the hope it will be useful, but WITHOUT |
7 | | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
8 | | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
9 | | * more details. |
10 | | * |
11 | | * You should have received a copy of the GNU General Public License along with |
12 | | * this program; If not, see <http://www.gnu.org/licenses/>. |
13 | | */ |
14 | | #ifndef __ARCH_X86_IOMMU_H__ |
15 | | #define __ARCH_X86_IOMMU_H__ |
16 | | |
17 | | #include <xen/errno.h> |
18 | | #include <xen/list.h> |
19 | | #include <xen/spinlock.h> |
20 | | #include <asm/processor.h> |
21 | | #include <asm/hvm/vmx/vmcs.h> |
22 | | |
23 | | #define DEFAULT_DOMAIN_ADDRESS_WIDTH 48 |
24 | 1 | #define MAX_IOMMUS 32 |
25 | | |
26 | | struct g2m_ioport { |
27 | | struct list_head list; |
28 | | unsigned int gport; |
29 | | unsigned int mport; |
30 | | unsigned int np; |
31 | | }; |
32 | | |
33 | | struct arch_iommu |
34 | | { |
35 | | u64 pgd_maddr; /* io page directory machine address */ |
36 | | spinlock_t mapping_lock; /* io page table lock */ |
37 | | int agaw; /* adjusted guest address width, 0 is level 2 30-bit */ |
38 | | u64 iommu_bitmap; /* bitmap of iommu(s) that the domain uses */ |
39 | | struct list_head mapped_rmrrs; |
40 | | |
41 | | /* amd iommu support */ |
42 | | int paging_mode; |
43 | | struct page_info *root_table; |
44 | | struct guest_iommu *g_iommu; |
45 | | }; |
46 | | |
47 | | extern const struct iommu_ops intel_iommu_ops; |
48 | | extern const struct iommu_ops amd_iommu_ops; |
49 | | int intel_vtd_setup(void); |
50 | | int amd_iov_detect(void); |
51 | | |
52 | | static inline const struct iommu_ops *iommu_get_ops(void) |
53 | 442 | { |
54 | 442 | switch ( boot_cpu_data.x86_vendor ) |
55 | 442 | { |
56 | 442 | case X86_VENDOR_INTEL: |
57 | 442 | return &intel_iommu_ops; |
58 | 0 | case X86_VENDOR_AMD: |
59 | 0 | return &amd_iommu_ops; |
60 | 442 | } |
61 | 442 | |
62 | 0 | BUG(); |
63 | 0 |
|
64 | 0 | return NULL; |
65 | 442 | } Unexecuted instantiation: cpu.c:iommu_get_ops Unexecuted instantiation: acpi_mmcfg.c:iommu_get_ops Unexecuted instantiation: ro-page-fault.c:iommu_get_ops Unexecuted instantiation: misc-hypercalls.c:iommu_get_ops Unexecuted instantiation: iret.c:iommu_get_ops Unexecuted instantiation: emul-priv-op.c:iommu_get_ops Unexecuted instantiation: emul-inv-op.c:iommu_get_ops Unexecuted instantiation: emul-gate-op.c:iommu_get_ops Unexecuted instantiation: descriptor-tables.c:iommu_get_ops Unexecuted instantiation: callback.c:iommu_get_ops Unexecuted instantiation: backtrace.c:iommu_get_ops Unexecuted instantiation: op_model_athlon.c:iommu_get_ops Unexecuted instantiation: op_model_ppro.c:iommu_get_ops Unexecuted instantiation: op_model_p4.c:iommu_get_ops Unexecuted instantiation: nmi_int.c:iommu_get_ops Unexecuted instantiation: nested_ept.c:iommu_get_ops Unexecuted instantiation: nested_hap.c:iommu_get_ops Unexecuted instantiation: hap.c:iommu_get_ops Unexecuted instantiation: multi.c:iommu_get_ops Unexecuted instantiation: mem_sharing.c:iommu_get_ops Unexecuted instantiation: mem_paging.c:iommu_get_ops Unexecuted instantiation: guest_walk.c:iommu_get_ops Unexecuted instantiation: altp2m.c:iommu_get_ops Unexecuted instantiation: p2m-pod.c:iommu_get_ops Unexecuted instantiation: p2m-ept.c:iommu_get_ops Unexecuted instantiation: p2m-pt.c:iommu_get_ops Unexecuted instantiation: p2m.c:iommu_get_ops Unexecuted instantiation: paging.c:iommu_get_ops Unexecuted instantiation: vvmx.c:iommu_get_ops Unexecuted instantiation: vmx.c:iommu_get_ops Unexecuted instantiation: vmcs.c:iommu_get_ops Unexecuted instantiation: realmode.c:iommu_get_ops Unexecuted instantiation: vmcb.c:iommu_get_ops Unexecuted instantiation: svmdebug.c:iommu_get_ops Unexecuted instantiation: svm.c:iommu_get_ops Unexecuted instantiation: nestedsvm.c:iommu_get_ops Unexecuted instantiation: intr.c:iommu_get_ops Unexecuted instantiation: vpt.c:iommu_get_ops Unexecuted instantiation: vpic.c:iommu_get_ops Unexecuted instantiation: vmsi.c:iommu_get_ops Unexecuted instantiation: vlapic.c:iommu_get_ops Unexecuted instantiation: viridian.c:iommu_get_ops Unexecuted instantiation: vioapic.c:iommu_get_ops Unexecuted instantiation: stdvga.c:iommu_get_ops Unexecuted instantiation: save.c:iommu_get_ops Unexecuted instantiation: rtc.c:iommu_get_ops Unexecuted instantiation: pmtimer.c:iommu_get_ops Unexecuted instantiation: nestedhvm.c:iommu_get_ops Unexecuted instantiation: mtrr.c:iommu_get_ops Unexecuted instantiation: ioreq.c:iommu_get_ops Unexecuted instantiation: intercept.c:iommu_get_ops Unexecuted instantiation: i8254.c:iommu_get_ops Unexecuted instantiation: hvm.c:iommu_get_ops Unexecuted instantiation: emulate.c:iommu_get_ops Unexecuted instantiation: dm.c:iommu_get_ops Unexecuted instantiation: asid.c:iommu_get_ops Unexecuted instantiation: probe.c:iommu_get_ops Unexecuted instantiation: delivery.c:iommu_get_ops Unexecuted instantiation: default.c:iommu_get_ops Unexecuted instantiation: x2apic.c:iommu_get_ops Unexecuted instantiation: bigsmp.c:iommu_get_ops Unexecuted instantiation: vmce.c:iommu_get_ops Unexecuted instantiation: util.c:iommu_get_ops Unexecuted instantiation: non-fatal.c:iommu_get_ops Unexecuted instantiation: mce_intel.c:iommu_get_ops Unexecuted instantiation: mce-apei.c:iommu_get_ops Unexecuted instantiation: mce.c:iommu_get_ops Unexecuted instantiation: mctelem.c:iommu_get_ops Unexecuted instantiation: barrier.c:iommu_get_ops Unexecuted instantiation: mcaction.c:iommu_get_ops Unexecuted instantiation: mce_amd.c:iommu_get_ops Unexecuted instantiation: amd_nonfatal.c:iommu_get_ops Unexecuted instantiation: vpmu_intel.c:iommu_get_ops Unexecuted instantiation: vpmu_amd.c:iommu_get_ops Unexecuted instantiation: vpmu.c:iommu_get_ops Unexecuted instantiation: mwait-idle.c:iommu_get_ops Unexecuted instantiation: intel.c:iommu_get_ops Unexecuted instantiation: common.c:iommu_get_ops Unexecuted instantiation: amd.c:iommu_get_ops Unexecuted instantiation: cpu_idle.c:iommu_get_ops Unexecuted instantiation: suspend.c:iommu_get_ops Unexecuted instantiation: power.c:iommu_get_ops Unexecuted instantiation: lib.c:iommu_get_ops Unexecuted instantiation: xstate.c:iommu_get_ops Unexecuted instantiation: hpet.c:iommu_get_ops Unexecuted instantiation: tboot.c:iommu_get_ops Unexecuted instantiation: x86_emulate.c:iommu_get_ops Unexecuted instantiation: usercopy.c:iommu_get_ops Unexecuted instantiation: traps.c:iommu_get_ops Unexecuted instantiation: smpboot.c:iommu_get_ops Unexecuted instantiation: smp.c:iommu_get_ops Unexecuted instantiation: setup.c:iommu_get_ops Unexecuted instantiation: psr.c:iommu_get_ops Unexecuted instantiation: platform_hypercall.c:iommu_get_ops Unexecuted instantiation: physdev.c:iommu_get_ops Unexecuted instantiation: numa.c:iommu_get_ops Unexecuted instantiation: nmi.c:iommu_get_ops Unexecuted instantiation: mpparse.c:iommu_get_ops Unexecuted instantiation: mm.c:iommu_get_ops Unexecuted instantiation: microcode.c:iommu_get_ops Unexecuted instantiation: microcode_intel.c:iommu_get_ops Unexecuted instantiation: microcode_amd.c:iommu_get_ops Unexecuted instantiation: machine_kexec.c:iommu_get_ops Unexecuted instantiation: irq.c:iommu_get_ops Unexecuted instantiation: ioport_emulate.c:iommu_get_ops Unexecuted instantiation: msr.c:iommu_get_ops Unexecuted instantiation: io_apic.c:iommu_get_ops Unexecuted instantiation: i8259.c:iommu_get_ops Unexecuted instantiation: i387.c:iommu_get_ops Unexecuted instantiation: hypercall.c:iommu_get_ops Unexecuted instantiation: flushtlb.c:iommu_get_ops Unexecuted instantiation: domain_page.c:iommu_get_ops Unexecuted instantiation: debug.c:iommu_get_ops Unexecuted instantiation: crash.c:iommu_get_ops Unexecuted instantiation: compat.c:iommu_get_ops Unexecuted instantiation: cpuid.c:iommu_get_ops Unexecuted instantiation: apic.c:iommu_get_ops Unexecuted instantiation: xsm_core.c:iommu_get_ops Unexecuted instantiation: apei-io.c:iommu_get_ops Unexecuted instantiation: erst.c:iommu_get_ops Unexecuted instantiation: pmstat.c:iommu_get_ops Unexecuted instantiation: iommu_guest.c:iommu_get_ops Unexecuted instantiation: iommu_cmd.c:iommu_get_ops Unexecuted instantiation: iommu_intr.c:iommu_get_ops Unexecuted instantiation: pci_amd_iommu.c:iommu_get_ops Unexecuted instantiation: iommu_map.c:iommu_get_ops Unexecuted instantiation: iommu_init.c:iommu_get_ops Unexecuted instantiation: ats.c:iommu_get_ops Unexecuted instantiation: vtd.c:iommu_get_ops Unexecuted instantiation: quirks.c:iommu_get_ops Unexecuted instantiation: intremap.c:iommu_get_ops Unexecuted instantiation: qinval.c:iommu_get_ops Unexecuted instantiation: utils.c:iommu_get_ops Unexecuted instantiation: dmar.c:iommu_get_ops Line | Count | Source | 53 | 126 | { | 54 | 126 | switch ( boot_cpu_data.x86_vendor ) | 55 | 126 | { | 56 | 126 | case X86_VENDOR_INTEL: | 57 | 126 | return &intel_iommu_ops; | 58 | 0 | case X86_VENDOR_AMD: | 59 | 0 | return &amd_iommu_ops; | 60 | 126 | } | 61 | 126 | | 62 | 0 | BUG(); | 63 | 0 |
| 64 | 0 | return NULL; | 65 | 126 | } |
Unexecuted instantiation: io.c:iommu_get_ops Line | Count | Source | 53 | 316 | { | 54 | 316 | switch ( boot_cpu_data.x86_vendor ) | 55 | 316 | { | 56 | 316 | case X86_VENDOR_INTEL: | 57 | 316 | return &intel_iommu_ops; | 58 | 0 | case X86_VENDOR_AMD: | 59 | 0 | return &amd_iommu_ops; | 60 | 316 | } | 61 | 316 | | 62 | 0 | BUG(); | 63 | 0 |
| 64 | 0 | return NULL; | 65 | 316 | } |
Unexecuted instantiation: msix.c:iommu_get_ops Unexecuted instantiation: msi.c:iommu_get_ops Unexecuted instantiation: header.c:iommu_get_ops Unexecuted instantiation: vpci.c:iommu_get_ops Unexecuted instantiation: utility.c:iommu_get_ops Unexecuted instantiation: cpufreq_misc_governors.c:iommu_get_ops Unexecuted instantiation: cpufreq_ondemand.c:iommu_get_ops Unexecuted instantiation: cpufreq.c:iommu_get_ops Unexecuted instantiation: ehci-dbgp.c:iommu_get_ops Unexecuted instantiation: ns16550.c:iommu_get_ops Unexecuted instantiation: console.c:iommu_get_ops Unexecuted instantiation: libelf-loader.c:iommu_get_ops Unexecuted instantiation: llvm.c:iommu_get_ops Unexecuted instantiation: tmem_control.c:iommu_get_ops Unexecuted instantiation: tmem_xen.c:iommu_get_ops Unexecuted instantiation: tmem.c:iommu_get_ops Unexecuted instantiation: xenoprof.c:iommu_get_ops Unexecuted instantiation: wait.c:iommu_get_ops Unexecuted instantiation: vsprintf.c:iommu_get_ops Unexecuted instantiation: vm_event.c:iommu_get_ops Unexecuted instantiation: trace.c:iommu_get_ops Unexecuted instantiation: timer.c:iommu_get_ops Unexecuted instantiation: time.c:iommu_get_ops Unexecuted instantiation: tasklet.c:iommu_get_ops Unexecuted instantiation: sysctl.c:iommu_get_ops Unexecuted instantiation: symbols.c:iommu_get_ops Unexecuted instantiation: stop_machine.c:iommu_get_ops Unexecuted instantiation: spinlock.c:iommu_get_ops Unexecuted instantiation: softirq.c:iommu_get_ops Unexecuted instantiation: shutdown.c:iommu_get_ops Unexecuted instantiation: schedule.c:iommu_get_ops Unexecuted instantiation: sched_null.c:iommu_get_ops Unexecuted instantiation: sched_rt.c:iommu_get_ops Unexecuted instantiation: sched_credit2.c:iommu_get_ops Unexecuted instantiation: sched_credit.c:iommu_get_ops Unexecuted instantiation: sched_arinc653.c:iommu_get_ops Unexecuted instantiation: rcupdate.c:iommu_get_ops Unexecuted instantiation: rangeset.c:iommu_get_ops Unexecuted instantiation: page_alloc.c:iommu_get_ops Unexecuted instantiation: multicall.c:iommu_get_ops Unexecuted instantiation: monitor.c:iommu_get_ops Unexecuted instantiation: memory.c:iommu_get_ops Unexecuted instantiation: mem_access.c:iommu_get_ops Unexecuted instantiation: kimage.c:iommu_get_ops Unexecuted instantiation: kexec.c:iommu_get_ops Unexecuted instantiation: keyhandler.c:iommu_get_ops Unexecuted instantiation: kernel.c:iommu_get_ops Unexecuted instantiation: guestcopy.c:iommu_get_ops Unexecuted instantiation: grant_table.c:iommu_get_ops Unexecuted instantiation: event_fifo.c:iommu_get_ops Unexecuted instantiation: event_channel.c:iommu_get_ops Unexecuted instantiation: event_2l.c:iommu_get_ops Unexecuted instantiation: domain.c:iommu_get_ops Unexecuted instantiation: domctl.c:iommu_get_ops Unexecuted instantiation: cpupool.c:iommu_get_ops Unexecuted instantiation: mmconfig_64.c:iommu_get_ops |
66 | | |
67 | | static inline int iommu_hardware_setup(void) |
68 | 1 | { |
69 | 1 | switch ( boot_cpu_data.x86_vendor ) |
70 | 1 | { |
71 | 1 | case X86_VENDOR_INTEL: |
72 | 1 | return intel_vtd_setup(); |
73 | 0 | case X86_VENDOR_AMD: |
74 | 0 | return amd_iov_detect(); |
75 | 1 | } |
76 | 1 | |
77 | 0 | return -ENODEV; |
78 | 1 | } Unexecuted instantiation: mmconfig_64.c:iommu_hardware_setup Unexecuted instantiation: acpi_mmcfg.c:iommu_hardware_setup Unexecuted instantiation: ro-page-fault.c:iommu_hardware_setup Unexecuted instantiation: misc-hypercalls.c:iommu_hardware_setup Unexecuted instantiation: iret.c:iommu_hardware_setup Unexecuted instantiation: emul-priv-op.c:iommu_hardware_setup Unexecuted instantiation: emul-inv-op.c:iommu_hardware_setup Unexecuted instantiation: emul-gate-op.c:iommu_hardware_setup Unexecuted instantiation: descriptor-tables.c:iommu_hardware_setup Unexecuted instantiation: callback.c:iommu_hardware_setup Unexecuted instantiation: backtrace.c:iommu_hardware_setup Unexecuted instantiation: op_model_athlon.c:iommu_hardware_setup Unexecuted instantiation: op_model_ppro.c:iommu_hardware_setup Unexecuted instantiation: op_model_p4.c:iommu_hardware_setup Unexecuted instantiation: nmi_int.c:iommu_hardware_setup Unexecuted instantiation: nested_ept.c:iommu_hardware_setup Unexecuted instantiation: nested_hap.c:iommu_hardware_setup Unexecuted instantiation: hap.c:iommu_hardware_setup Unexecuted instantiation: multi.c:iommu_hardware_setup Unexecuted instantiation: mem_sharing.c:iommu_hardware_setup Unexecuted instantiation: mem_paging.c:iommu_hardware_setup Unexecuted instantiation: guest_walk.c:iommu_hardware_setup Unexecuted instantiation: altp2m.c:iommu_hardware_setup Unexecuted instantiation: p2m-pod.c:iommu_hardware_setup Unexecuted instantiation: p2m-ept.c:iommu_hardware_setup Unexecuted instantiation: p2m-pt.c:iommu_hardware_setup Unexecuted instantiation: p2m.c:iommu_hardware_setup Unexecuted instantiation: paging.c:iommu_hardware_setup Unexecuted instantiation: vvmx.c:iommu_hardware_setup Unexecuted instantiation: vmx.c:iommu_hardware_setup Unexecuted instantiation: vmcs.c:iommu_hardware_setup Unexecuted instantiation: realmode.c:iommu_hardware_setup Unexecuted instantiation: vmcb.c:iommu_hardware_setup Unexecuted instantiation: svmdebug.c:iommu_hardware_setup Unexecuted instantiation: svm.c:iommu_hardware_setup Unexecuted instantiation: nestedsvm.c:iommu_hardware_setup Unexecuted instantiation: intr.c:iommu_hardware_setup Unexecuted instantiation: vpt.c:iommu_hardware_setup Unexecuted instantiation: vpic.c:iommu_hardware_setup Unexecuted instantiation: vmsi.c:iommu_hardware_setup Unexecuted instantiation: vlapic.c:iommu_hardware_setup Unexecuted instantiation: viridian.c:iommu_hardware_setup Unexecuted instantiation: vioapic.c:iommu_hardware_setup Unexecuted instantiation: stdvga.c:iommu_hardware_setup Unexecuted instantiation: save.c:iommu_hardware_setup Unexecuted instantiation: rtc.c:iommu_hardware_setup Unexecuted instantiation: pmtimer.c:iommu_hardware_setup Unexecuted instantiation: nestedhvm.c:iommu_hardware_setup Unexecuted instantiation: mtrr.c:iommu_hardware_setup Unexecuted instantiation: ioreq.c:iommu_hardware_setup Unexecuted instantiation: intercept.c:iommu_hardware_setup Unexecuted instantiation: i8254.c:iommu_hardware_setup Unexecuted instantiation: hvm.c:iommu_hardware_setup Unexecuted instantiation: emulate.c:iommu_hardware_setup Unexecuted instantiation: dm.c:iommu_hardware_setup Unexecuted instantiation: asid.c:iommu_hardware_setup Unexecuted instantiation: probe.c:iommu_hardware_setup Unexecuted instantiation: delivery.c:iommu_hardware_setup Unexecuted instantiation: default.c:iommu_hardware_setup Unexecuted instantiation: x2apic.c:iommu_hardware_setup Unexecuted instantiation: bigsmp.c:iommu_hardware_setup Unexecuted instantiation: vmce.c:iommu_hardware_setup Unexecuted instantiation: util.c:iommu_hardware_setup Unexecuted instantiation: non-fatal.c:iommu_hardware_setup Unexecuted instantiation: mce_intel.c:iommu_hardware_setup Unexecuted instantiation: mce-apei.c:iommu_hardware_setup Unexecuted instantiation: mce.c:iommu_hardware_setup Unexecuted instantiation: mctelem.c:iommu_hardware_setup Unexecuted instantiation: barrier.c:iommu_hardware_setup Unexecuted instantiation: mcaction.c:iommu_hardware_setup Unexecuted instantiation: mce_amd.c:iommu_hardware_setup Unexecuted instantiation: amd_nonfatal.c:iommu_hardware_setup Unexecuted instantiation: vpmu_intel.c:iommu_hardware_setup Unexecuted instantiation: vpmu_amd.c:iommu_hardware_setup Unexecuted instantiation: vpmu.c:iommu_hardware_setup Unexecuted instantiation: mwait-idle.c:iommu_hardware_setup Unexecuted instantiation: intel.c:iommu_hardware_setup Unexecuted instantiation: common.c:iommu_hardware_setup Unexecuted instantiation: amd.c:iommu_hardware_setup Unexecuted instantiation: cpu_idle.c:iommu_hardware_setup Unexecuted instantiation: suspend.c:iommu_hardware_setup Unexecuted instantiation: power.c:iommu_hardware_setup Unexecuted instantiation: lib.c:iommu_hardware_setup Unexecuted instantiation: xstate.c:iommu_hardware_setup Unexecuted instantiation: hpet.c:iommu_hardware_setup Unexecuted instantiation: tboot.c:iommu_hardware_setup Unexecuted instantiation: x86_emulate.c:iommu_hardware_setup Unexecuted instantiation: usercopy.c:iommu_hardware_setup Unexecuted instantiation: traps.c:iommu_hardware_setup Unexecuted instantiation: smpboot.c:iommu_hardware_setup Unexecuted instantiation: smp.c:iommu_hardware_setup Unexecuted instantiation: setup.c:iommu_hardware_setup Unexecuted instantiation: psr.c:iommu_hardware_setup Unexecuted instantiation: platform_hypercall.c:iommu_hardware_setup Unexecuted instantiation: physdev.c:iommu_hardware_setup Unexecuted instantiation: numa.c:iommu_hardware_setup Unexecuted instantiation: nmi.c:iommu_hardware_setup Unexecuted instantiation: mpparse.c:iommu_hardware_setup Unexecuted instantiation: mm.c:iommu_hardware_setup Unexecuted instantiation: microcode.c:iommu_hardware_setup Unexecuted instantiation: microcode_intel.c:iommu_hardware_setup Unexecuted instantiation: microcode_amd.c:iommu_hardware_setup Unexecuted instantiation: machine_kexec.c:iommu_hardware_setup Unexecuted instantiation: irq.c:iommu_hardware_setup Unexecuted instantiation: ioport_emulate.c:iommu_hardware_setup Unexecuted instantiation: msr.c:iommu_hardware_setup Unexecuted instantiation: io_apic.c:iommu_hardware_setup Unexecuted instantiation: i8259.c:iommu_hardware_setup Unexecuted instantiation: i387.c:iommu_hardware_setup Unexecuted instantiation: hypercall.c:iommu_hardware_setup Unexecuted instantiation: flushtlb.c:iommu_hardware_setup Unexecuted instantiation: domain_page.c:iommu_hardware_setup Unexecuted instantiation: debug.c:iommu_hardware_setup Unexecuted instantiation: crash.c:iommu_hardware_setup Unexecuted instantiation: compat.c:iommu_hardware_setup Unexecuted instantiation: cpuid.c:iommu_hardware_setup Unexecuted instantiation: apic.c:iommu_hardware_setup Unexecuted instantiation: xsm_core.c:iommu_hardware_setup Unexecuted instantiation: apei-io.c:iommu_hardware_setup Unexecuted instantiation: erst.c:iommu_hardware_setup Unexecuted instantiation: pmstat.c:iommu_hardware_setup Unexecuted instantiation: iommu_guest.c:iommu_hardware_setup Unexecuted instantiation: iommu_cmd.c:iommu_hardware_setup Unexecuted instantiation: iommu_intr.c:iommu_hardware_setup Unexecuted instantiation: pci_amd_iommu.c:iommu_hardware_setup Unexecuted instantiation: iommu_map.c:iommu_hardware_setup Unexecuted instantiation: iommu_init.c:iommu_hardware_setup Unexecuted instantiation: ats.c:iommu_hardware_setup Unexecuted instantiation: vtd.c:iommu_hardware_setup Unexecuted instantiation: quirks.c:iommu_hardware_setup Unexecuted instantiation: intremap.c:iommu_hardware_setup Unexecuted instantiation: qinval.c:iommu_hardware_setup Unexecuted instantiation: utils.c:iommu_hardware_setup Unexecuted instantiation: dmar.c:iommu_hardware_setup Unexecuted instantiation: pci.c:iommu_hardware_setup Unexecuted instantiation: io.c:iommu_hardware_setup iommu.c:iommu_hardware_setup Line | Count | Source | 68 | 1 | { | 69 | 1 | switch ( boot_cpu_data.x86_vendor ) | 70 | 1 | { | 71 | 1 | case X86_VENDOR_INTEL: | 72 | 1 | return intel_vtd_setup(); | 73 | 0 | case X86_VENDOR_AMD: | 74 | 0 | return amd_iov_detect(); | 75 | 1 | } | 76 | 1 | | 77 | 0 | return -ENODEV; | 78 | 1 | } |
Unexecuted instantiation: msix.c:iommu_hardware_setup Unexecuted instantiation: msi.c:iommu_hardware_setup Unexecuted instantiation: header.c:iommu_hardware_setup Unexecuted instantiation: vpci.c:iommu_hardware_setup Unexecuted instantiation: utility.c:iommu_hardware_setup Unexecuted instantiation: cpufreq_misc_governors.c:iommu_hardware_setup Unexecuted instantiation: cpufreq_ondemand.c:iommu_hardware_setup Unexecuted instantiation: cpufreq.c:iommu_hardware_setup Unexecuted instantiation: ehci-dbgp.c:iommu_hardware_setup Unexecuted instantiation: ns16550.c:iommu_hardware_setup Unexecuted instantiation: console.c:iommu_hardware_setup Unexecuted instantiation: libelf-loader.c:iommu_hardware_setup Unexecuted instantiation: llvm.c:iommu_hardware_setup Unexecuted instantiation: tmem_control.c:iommu_hardware_setup Unexecuted instantiation: tmem_xen.c:iommu_hardware_setup Unexecuted instantiation: tmem.c:iommu_hardware_setup Unexecuted instantiation: xenoprof.c:iommu_hardware_setup Unexecuted instantiation: wait.c:iommu_hardware_setup Unexecuted instantiation: vsprintf.c:iommu_hardware_setup Unexecuted instantiation: vm_event.c:iommu_hardware_setup Unexecuted instantiation: trace.c:iommu_hardware_setup Unexecuted instantiation: timer.c:iommu_hardware_setup Unexecuted instantiation: time.c:iommu_hardware_setup Unexecuted instantiation: tasklet.c:iommu_hardware_setup Unexecuted instantiation: sysctl.c:iommu_hardware_setup Unexecuted instantiation: symbols.c:iommu_hardware_setup Unexecuted instantiation: stop_machine.c:iommu_hardware_setup Unexecuted instantiation: spinlock.c:iommu_hardware_setup Unexecuted instantiation: softirq.c:iommu_hardware_setup Unexecuted instantiation: shutdown.c:iommu_hardware_setup Unexecuted instantiation: schedule.c:iommu_hardware_setup Unexecuted instantiation: sched_null.c:iommu_hardware_setup Unexecuted instantiation: sched_rt.c:iommu_hardware_setup Unexecuted instantiation: sched_credit2.c:iommu_hardware_setup Unexecuted instantiation: sched_credit.c:iommu_hardware_setup Unexecuted instantiation: sched_arinc653.c:iommu_hardware_setup Unexecuted instantiation: rcupdate.c:iommu_hardware_setup Unexecuted instantiation: rangeset.c:iommu_hardware_setup Unexecuted instantiation: page_alloc.c:iommu_hardware_setup Unexecuted instantiation: multicall.c:iommu_hardware_setup Unexecuted instantiation: monitor.c:iommu_hardware_setup Unexecuted instantiation: memory.c:iommu_hardware_setup Unexecuted instantiation: mem_access.c:iommu_hardware_setup Unexecuted instantiation: kimage.c:iommu_hardware_setup Unexecuted instantiation: kexec.c:iommu_hardware_setup Unexecuted instantiation: keyhandler.c:iommu_hardware_setup Unexecuted instantiation: kernel.c:iommu_hardware_setup Unexecuted instantiation: guestcopy.c:iommu_hardware_setup Unexecuted instantiation: grant_table.c:iommu_hardware_setup Unexecuted instantiation: event_fifo.c:iommu_hardware_setup Unexecuted instantiation: event_channel.c:iommu_hardware_setup Unexecuted instantiation: event_2l.c:iommu_hardware_setup Unexecuted instantiation: domain.c:iommu_hardware_setup Unexecuted instantiation: domctl.c:iommu_hardware_setup Unexecuted instantiation: cpupool.c:iommu_hardware_setup Unexecuted instantiation: cpu.c:iommu_hardware_setup |
79 | | |
80 | | /* Does this domain have a P2M table we can use as its IOMMU pagetable? */ |
81 | 4.85M | #define iommu_use_hap_pt(d) (hap_enabled(d) && iommu_hap_pt_share) |
82 | | |
83 | | void iommu_update_ire_from_apic(unsigned int apic, unsigned int reg, unsigned int value); |
84 | | unsigned int iommu_read_apic_from_ire(unsigned int apic, unsigned int reg); |
85 | | int iommu_setup_hpet_msi(struct msi_desc *); |
86 | | |
87 | | /* While VT-d specific, this must get declared in a generic header. */ |
88 | | int adjust_vtd_irq_affinities(void); |
89 | | int __must_check iommu_pte_flush(struct domain *d, u64 gfn, u64 *pte, |
90 | | int order, int present); |
91 | | bool_t iommu_supports_eim(void); |
92 | | int iommu_enable_x2apic_IR(void); |
93 | | void iommu_disable_x2apic_IR(void); |
94 | | |
95 | | extern bool untrusted_msi; |
96 | | |
97 | | int pi_update_irte(const struct pi_desc *pi_desc, const struct pirq *pirq, |
98 | | const uint8_t gvec); |
99 | | |
100 | | #endif /* !__ARCH_X86_IOMMU_H__ */ |
101 | | /* |
102 | | * Local variables: |
103 | | * mode: C |
104 | | * c-file-style: "BSD" |
105 | | * c-basic-offset: 4 |
106 | | * indent-tabs-mode: nil |
107 | | * End: |
108 | | */ |