blob: d488edff4d29f6f6d83b9d9c731c4aada4f8b0fd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#ifndef __ASM_X86_HVM_IOMMU_H__
#define __ASM_X86_HVM_IOMMU_H__
#include <xen/errno.h>
struct iommu_ops;
extern const struct iommu_ops intel_iommu_ops;
extern const struct iommu_ops amd_iommu_ops;
extern int intel_vtd_setup(void);
extern int amd_iov_detect(void);
static inline const struct iommu_ops *iommu_get_ops(void)
{
switch ( boot_cpu_data.x86_vendor )
{
case X86_VENDOR_INTEL:
return &intel_iommu_ops;
case X86_VENDOR_AMD:
return &amd_iommu_ops;
default:
BUG();
}
return NULL;
}
static inline int iommu_hardware_setup(void)
{
switch ( boot_cpu_data.x86_vendor )
{
case X86_VENDOR_INTEL:
return intel_vtd_setup();
case X86_VENDOR_AMD:
return amd_iov_detect();
default:
return -ENODEV;
}
return 0;
}
#endif /* __ASM_X86_HVM_IOMMU_H__ */
|