У меня есть Intel NUC со встроенной графикой HD Graphics 530. Я очень постарался, но не смог запустить передачу GPU passthrough. Я постарался предоставить как можно больше деталей и буду рад предоставить любые другие сведения, которые могут помочь:
```
root@jupiter:~# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 94
model name : Intel® Core i5-6600T CPU @ 2.70GHz
stepping : 3
microcode : 0xec
cpu MHz : 2700.000
cache size : 6144 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d arch_capabilities
vmx flags : vnmi preemption_timer invvpid ept_x_only ept_ad ept_1gb flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest ple shadow_vmcs pml
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit srbds
bogomips : 5399.81
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management: The weird thing is that /dev/dri` does not even show up in the host even though lspci shows the GPU:
```
```
root@jupiter:~# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 94
model name : Intel® Core i5-6600T CPU @ 2.70GHz
stepping : 3
microcode : 0xec
cpu MHz : 2700.000
cache size : 6144 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d arch_capabilities
vmx flags : vnmi preemption_timer invvpid ept_x_only ept_ad ept_1gb flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest ple shadow_vmcs pml
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit srbds
bogomips : 5399.81
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management: The weird thing is that /dev/dri` does not even show up in the host even though lspci shows the GPU:
```
```
root@jupiter:~# lspci
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 94
model name : Intel® Core i5-6600T CPU @ 2.70GHz
stepping : 3
microcode : 0xec
cpu MHz : 2700.000
cache size : 6144 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d arch_capabilities
vmx flags : vnmi preemption_timer invvpid ept_x_only ept_ad ept_1gb flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest ple shadow_vmcs pml
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit srbds
bogomips : 5399.81
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management: The weird thing is that /dev/dri` does not even show up in the host even though lspci shows the GPU:
```
```
root@jupiter:~# lspci
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 94
model name : Intel® Core i5-6600T CPU @ 2.70GHz
stepping : 3
microcode : 0xec
cpu MHz : 2700.000
cache size : 6144 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d arch_capabilities
vmx flags : vnmi preemption_timer invvpid ept_x_only ept_ad ept_1gb flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest ple shadow_vmcs pml
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit srbds
bogomips : 5399.81
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management: The weird thing is that /dev/dri` does not even show up in the host even though lspci shows the GPU:
```
```
root@jupiter:~# dmesg | grep -i iommu
[ 0.000000] Kernel command line: .... iommu=on
[ 2.000000] DMAR: IOMMU enabled
[ 2.000000] DMAR: IOMMU feature fl1gp_support inconsistent
[ 2.000000] DMAR: IOMMU feature sm_enable inconsistent
[ 2.000000] DMAR: IOMMU feature vt_on inconsistent
[ 2.000000] DMAR: IOMMU feature va_map_prot_vw inconsistent
[ 2.000000] DMAR: IOMMU feature sm_passthrough inconsistent
[ 2.000000] DMAR: IOMMU feature tc_passthrough inconsistent
[ 2.000000] DMAR: IOMMU feature va_arb_no_remap_mapping inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_detect inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_sync_wait inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_bus_sync_wait inconsistent
[ 2.000000] DMAR: IOMMU feature mmconf_mcfg_prot inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_protect_pgd inconsistent
[ 2.000000] DMAR: IOMMU feature interleave_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature acpi_reset_flag inconsistent
[ 2.000000] DMAR: IOMMU feature acpi_enable_flag inconsistent
[ 2.000000] DMAR: IOMMU feature no_remap_mapping inconsistent
[ 2.000000] DMAR: IOMMU feature use_mmconf_pg_table inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature acpi_disable_flag inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_sync_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_bus_sync_pte inconsistent
[ 2.000000] DMAR: IOMMU feature mmconf_pg_alloc inconsistent
[ 2.000000] DMAR: IOMMU feature mmconf_iommu_protect_pgd inconsistent
[ 2.000000] DMAR: IOMMU feature sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature bus_sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature enable_remap_tables inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_protect_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature interleave_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature enable_remap_tables inconsistent
[ 2.000000] DMAR: IOMMU feature sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature bus_sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature enable_remap_tables inconsistent
[ 2.000000] DMAR: IOMMU feature bus_sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU: no available DMAR TT table slots
[ 2.000000] DMAR: IOMMU enabled
[ 2.000000] DMAR: IOMMU feature fl1gp_support inconsistent
[ 2.000000] DMAR: IOMMU feature sm_enable inconsistent
[ 2.000000] DMAR: IOMMU feature vt_on inconsistent
[ 2.000000] DMAR: IOMMU feature va_map_prot_vw inconsistent
[ 2.000000] DMAR: IOMMU feature sm_passthrough inconsistent
[ 2.000000] DMAR: IOMMU feature tc_passthrough inconsistent
[ 2.000000] DMAR: IOMMU feature va_arb_no_remap_mapping inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_detect inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_sync_wait inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_bus_sync_wait inconsistent
[ 2.000000] DMAR: IOMMU feature mmconf_mcfg_prot inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_protect_pgd inconsistent
[ 2.000000] DMAR: IOMMU feature interleave_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature acpi_reset_flag inconsistent
[ 2.000000] DMAR: IOMMU feature acpi_enable_flag inconsistent
[ 2.000000] DMAR: IOMMU feature no_remap_mapping inconsistent
[ 2.000000] DMAR: IOMMU feature use_mmconf_pg_table inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature acpi_disable_flag inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_sync_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_bus_sync_pte inconsistent
[ 2.000000] DMAR: IOMMU feature mmconf_pg_alloc inconsistent
[ 2.000000] DMAR: IOMMU feature mmconf_iommu_protect_pgd inconsistent
[ 2.000000] DMAR: IOMMU feature sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature bus_sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature enable_remap_tables inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_protect_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature interleave_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature enable_remap_tables inconsistent
[ 2.000000] DMAR: IOMMU feature sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature bus_sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature enable_remap_tables inconsistent
[ 2.000000] DMAR: IOMMU feature bus_sync_pte_access inconsistent
```
Here's a breakdown of the problem and a possible solution:
**Understanding the Problem**
The core issue seems to be that your system's IOMMU (Input/Output Memory Management Unit) isn't configured optimally. Here's why that's important:
* **IOMMU Functionality:** The IOMMU is responsible for isolating hardware devices from the rest of the system's memory. It prevents a faulty device from crashing the entire system. It is used for virtual machines and containers.
* **`inconsistent` Flags:** The `dmesg` output you're showing has many "inconsistent" flags related to IOMMU features. This means that the system detects conflicting or unsupported settings for these features.
* **Missing TT Table Slots:** "no available DMAR TT table slots" is a crucial error. TT tables (Translation Tables) are used by the IOMMU to translate virtual addresses used by devices to physical memory addresses. If there aren't enough of these tables, the IOMMU can't properly map device memory, and this leads to problems.
**Possible Solutions**
1. **BIOS/UEFI Settings:**
* **Enable IOMMU:** Make sure IOMMU is explicitly enabled in your BIOS/UEFI settings. The name of this setting may vary depending on the motherboard manufacturer (e.g., "VT-d," "AMD-Vi," "IOMMU").
* **Set Default IOMMU Mode:** Some BIOSes allow you to set the default IOMMU mode (e.g., "Auto," "Enabled," "Disabled"). Try enabling it explicitly.
* **SR-IOV Support:** If your devices support Single Root I/O Virtualization (SR-IOV), enable it in the BIOS/UEFI. SR-IOV allows a single PCIe device to appear as multiple virtual devices, which can improve performance and IOMMU isolation.
* **Resize BAR (Base Address Register):** Some devices use BAR to access memory. If available, try setting BAR to "Auto" or "Maximum Size."
2. **Kernel Parameters (grub):**
You can modify the kernel command line to provide more information to the IOMMU. Edit your GRUB configuration file (usually `/etc/default/grub`):
* **`intel_iommu=on` or `amd_iommu=on`:** (Choose the appropriate one based on your CPU vendor) This explicitly enables the IOMMU.
* **`iommu=pt`**: This enables "passthrough mode" which can help with some IOMMU issues.
After modifying `/etc/default/grub`, run `sudo update-grub` (or `sudo grub-mkconfig -o /boot/grub/grub.cfg` on some systems) to apply the changes. Then reboot.
3. **Firmware Updates:**
* **Motherboard Firmware:** Update your motherboard's BIOS/UEFI to the latest version from the manufacturer's website. Firmware updates often include IOMMU fixes and improvements.
* **Device Drivers:** Ensure your hardware drivers are up-to-date.
4. **Kernel Version:**
* A newer kernel version might have improved IOMMU support or fixes for specific hardware configurations. Consider upgrading to a newer stable kernel release.
5. **Check Hardware Compatibility:**
* While unlikely, there's a chance that your hardware (motherboard, CPU, devices) may not fully support the IOMMU features you're trying to use. Check the manufacturer's documentation for compatibility information.
**Debugging Steps**
1. **Start with the BIOS:** This is usually the most likely source of the problem. Experiment with the IOMMU-related settings in your BIOS.
2. **Kernel Parameters:** If BIOS settings don't resolve the issue, try adding the `intel_iommu=on` or `amd_iommu=on` kernel parameter.
3. **Monitor dmesg:** After each change, check `dmesg` again to see if the "inconsistent" flags have been cleared or reduced.
4. **Isolate Devices:** If you have multiple devices that use the IOMMU, try disabling them one by one to see if a specific device is causing the problem.
**Important Considerations**
* **Experiment Carefully:** Changes to BIOS settings or kernel parameters can potentially cause system instability. Make changes one at a time and test thoroughly after each change.
* **Documentation:** Refer to the documentation for your motherboard, CPU, and devices for specific instructions and compatibility information.
To help me provide a more tailored solution, could you please provide the following information?
* **Motherboard Model:** The exact model of your motherboard.
* **CPU Model:** The exact model of your CPU.
* **Operating System:** Which Linux distribution and version are you running?
* **Devices Involved:** Are you using virtual machines (e.g., KVM/QEMU, VirtualBox) or containers (e.g., Docker, LXC)? If so, which ones? Are there any PCI devices that you use?
Let me know how it goes, and I'll do my best to assist further.
```
root@jupiter:~# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 94
model name : Intel® Core i5-6600T CPU @ 2.70GHz
stepping : 3
microcode : 0xec
cpu MHz : 2700.000
cache size : 6144 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d arch_capabilities
vmx flags : vnmi preemption_timer invvpid ept_x_only ept_ad ept_1gb flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest ple shadow_vmcs pml
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit srbds
bogomips : 5399.81
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management: The weird thing is that /dev/dri` does not even show up in the host even though lspci shows the GPU:
```
```
root@jupiter:~# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 94
model name : Intel® Core i5-6600T CPU @ 2.70GHz
stepping : 3
microcode : 0xec
cpu MHz : 2700.000
cache size : 6144 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d arch_capabilities
vmx flags : vnmi preemption_timer invvpid ept_x_only ept_ad ept_1gb flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest ple shadow_vmcs pml
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit srbds
bogomips : 5399.81
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management: The weird thing is that /dev/dri` does not even show up in the host even though lspci shows the GPU:
```
```
root@jupiter:~# lspci
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 94
model name : Intel® Core i5-6600T CPU @ 2.70GHz
stepping : 3
microcode : 0xec
cpu MHz : 2700.000
cache size : 6144 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d arch_capabilities
vmx flags : vnmi preemption_timer invvpid ept_x_only ept_ad ept_1gb flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest ple shadow_vmcs pml
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit srbds
bogomips : 5399.81
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management: The weird thing is that /dev/dri` does not even show up in the host even though lspci shows the GPU:
```
```
root@jupiter:~# lspci
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 94
model name : Intel® Core i5-6600T CPU @ 2.70GHz
stepping : 3
microcode : 0xec
cpu MHz : 2700.000
cache size : 6144 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d arch_capabilities
vmx flags : vnmi preemption_timer invvpid ept_x_only ept_ad ept_1gb flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest ple shadow_vmcs pml
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit srbds
bogomips : 5399.81
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management: The weird thing is that /dev/dri` does not even show up in the host even though lspci shows the GPU:
```
```
root@jupiter:~# dmesg | grep -i iommu
[ 0.000000] Kernel command line: .... iommu=on
[ 2.000000] DMAR: IOMMU enabled
[ 2.000000] DMAR: IOMMU feature fl1gp_support inconsistent
[ 2.000000] DMAR: IOMMU feature sm_enable inconsistent
[ 2.000000] DMAR: IOMMU feature vt_on inconsistent
[ 2.000000] DMAR: IOMMU feature va_map_prot_vw inconsistent
[ 2.000000] DMAR: IOMMU feature sm_passthrough inconsistent
[ 2.000000] DMAR: IOMMU feature tc_passthrough inconsistent
[ 2.000000] DMAR: IOMMU feature va_arb_no_remap_mapping inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_detect inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_sync_wait inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_bus_sync_wait inconsistent
[ 2.000000] DMAR: IOMMU feature mmconf_mcfg_prot inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_protect_pgd inconsistent
[ 2.000000] DMAR: IOMMU feature interleave_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature acpi_reset_flag inconsistent
[ 2.000000] DMAR: IOMMU feature acpi_enable_flag inconsistent
[ 2.000000] DMAR: IOMMU feature no_remap_mapping inconsistent
[ 2.000000] DMAR: IOMMU feature use_mmconf_pg_table inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature acpi_disable_flag inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_sync_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_bus_sync_pte inconsistent
[ 2.000000] DMAR: IOMMU feature mmconf_pg_alloc inconsistent
[ 2.000000] DMAR: IOMMU feature mmconf_iommu_protect_pgd inconsistent
[ 2.000000] DMAR: IOMMU feature sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature bus_sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature enable_remap_tables inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_protect_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature interleave_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature enable_remap_tables inconsistent
[ 2.000000] DMAR: IOMMU feature sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature bus_sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature enable_remap_tables inconsistent
[ 2.000000] DMAR: IOMMU feature bus_sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU: no available DMAR TT table slots
[ 2.000000] DMAR: IOMMU enabled
[ 2.000000] DMAR: IOMMU feature fl1gp_support inconsistent
[ 2.000000] DMAR: IOMMU feature sm_enable inconsistent
[ 2.000000] DMAR: IOMMU feature vt_on inconsistent
[ 2.000000] DMAR: IOMMU feature va_map_prot_vw inconsistent
[ 2.000000] DMAR: IOMMU feature sm_passthrough inconsistent
[ 2.000000] DMAR: IOMMU feature tc_passthrough inconsistent
[ 2.000000] DMAR: IOMMU feature va_arb_no_remap_mapping inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_detect inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_sync_wait inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_bus_sync_wait inconsistent
[ 2.000000] DMAR: IOMMU feature mmconf_mcfg_prot inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_protect_pgd inconsistent
[ 2.000000] DMAR: IOMMU feature interleave_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature acpi_reset_flag inconsistent
[ 2.000000] DMAR: IOMMU feature acpi_enable_flag inconsistent
[ 2.000000] DMAR: IOMMU feature no_remap_mapping inconsistent
[ 2.000000] DMAR: IOMMU feature use_mmconf_pg_table inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature acpi_disable_flag inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_sync_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_bus_sync_pte inconsistent
[ 2.000000] DMAR: IOMMU feature mmconf_pg_alloc inconsistent
[ 2.000000] DMAR: IOMMU feature mmconf_iommu_protect_pgd inconsistent
[ 2.000000] DMAR: IOMMU feature sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature bus_sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature enable_remap_tables inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_protect_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature interleave_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature enable_remap_tables inconsistent
[ 2.000000] DMAR: IOMMU feature sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature bus_sync_pte_access inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pte inconsistent
[ 2.000000] DMAR: IOMMU feature iommu_revalid_pmd inconsistent
[ 2.000000] DMAR: IOMMU feature enable_remap_tables inconsistent
[ 2.000000] DMAR: IOMMU feature bus_sync_pte_access inconsistent
```
Here's a breakdown of the problem and a possible solution:
**Understanding the Problem**
The core issue seems to be that your system's IOMMU (Input/Output Memory Management Unit) isn't configured optimally. Here's why that's important:
* **IOMMU Functionality:** The IOMMU is responsible for isolating hardware devices from the rest of the system's memory. It prevents a faulty device from crashing the entire system. It is used for virtual machines and containers.
* **`inconsistent` Flags:** The `dmesg` output you're showing has many "inconsistent" flags related to IOMMU features. This means that the system detects conflicting or unsupported settings for these features.
* **Missing TT Table Slots:** "no available DMAR TT table slots" is a crucial error. TT tables (Translation Tables) are used by the IOMMU to translate virtual addresses used by devices to physical memory addresses. If there aren't enough of these tables, the IOMMU can't properly map device memory, and this leads to problems.
**Possible Solutions**
1. **BIOS/UEFI Settings:**
* **Enable IOMMU:** Make sure IOMMU is explicitly enabled in your BIOS/UEFI settings. The name of this setting may vary depending on the motherboard manufacturer (e.g., "VT-d," "AMD-Vi," "IOMMU").
* **Set Default IOMMU Mode:** Some BIOSes allow you to set the default IOMMU mode (e.g., "Auto," "Enabled," "Disabled"). Try enabling it explicitly.
* **SR-IOV Support:** If your devices support Single Root I/O Virtualization (SR-IOV), enable it in the BIOS/UEFI. SR-IOV allows a single PCIe device to appear as multiple virtual devices, which can improve performance and IOMMU isolation.
* **Resize BAR (Base Address Register):** Some devices use BAR to access memory. If available, try setting BAR to "Auto" or "Maximum Size."
2. **Kernel Parameters (grub):**
You can modify the kernel command line to provide more information to the IOMMU. Edit your GRUB configuration file (usually `/etc/default/grub`):
* **`intel_iommu=on` or `amd_iommu=on`:** (Choose the appropriate one based on your CPU vendor) This explicitly enables the IOMMU.
* **`iommu=pt`**: This enables "passthrough mode" which can help with some IOMMU issues.
After modifying `/etc/default/grub`, run `sudo update-grub` (or `sudo grub-mkconfig -o /boot/grub/grub.cfg` on some systems) to apply the changes. Then reboot.
3. **Firmware Updates:**
* **Motherboard Firmware:** Update your motherboard's BIOS/UEFI to the latest version from the manufacturer's website. Firmware updates often include IOMMU fixes and improvements.
* **Device Drivers:** Ensure your hardware drivers are up-to-date.
4. **Kernel Version:**
* A newer kernel version might have improved IOMMU support or fixes for specific hardware configurations. Consider upgrading to a newer stable kernel release.
5. **Check Hardware Compatibility:**
* While unlikely, there's a chance that your hardware (motherboard, CPU, devices) may not fully support the IOMMU features you're trying to use. Check the manufacturer's documentation for compatibility information.
**Debugging Steps**
1. **Start with the BIOS:** This is usually the most likely source of the problem. Experiment with the IOMMU-related settings in your BIOS.
2. **Kernel Parameters:** If BIOS settings don't resolve the issue, try adding the `intel_iommu=on` or `amd_iommu=on` kernel parameter.
3. **Monitor dmesg:** After each change, check `dmesg` again to see if the "inconsistent" flags have been cleared or reduced.
4. **Isolate Devices:** If you have multiple devices that use the IOMMU, try disabling them one by one to see if a specific device is causing the problem.
**Important Considerations**
* **Experiment Carefully:** Changes to BIOS settings or kernel parameters can potentially cause system instability. Make changes one at a time and test thoroughly after each change.
* **Documentation:** Refer to the documentation for your motherboard, CPU, and devices for specific instructions and compatibility information.
To help me provide a more tailored solution, could you please provide the following information?
* **Motherboard Model:** The exact model of your motherboard.
* **CPU Model:** The exact model of your CPU.
* **Operating System:** Which Linux distribution and version are you running?
* **Devices Involved:** Are you using virtual machines (e.g., KVM/QEMU, VirtualBox) or containers (e.g., Docker, LXC)? If so, which ones? Are there any PCI devices that you use?
Let me know how it goes, and I'll do my best to assist further.
