Driver Errors with Ubuntu 22.04 and 24.04 New Installation or Kernel 6.8 (or Later) Upgrade
- Updated2024-09-20
- 3 minute(s) read
Driver Errors with Ubuntu 22.04 and 24.04 New Installation or Kernel 6.8 (or Later) Upgrade
When setting up or replicating an existing Ubuntu 22.04 or 24.04 system, runtime failure messages may occur.
Symptoms
Because this scenario affects overall driver function, drivers may return various error messages including messages about internal errors or hardware failure. For example:
The device could not be calibrated.
Status Code: -50152
A hardware failure has occurred. The operation could note be completed as specified.
Affected Distributions and Kernels
- Ubuntu 22.04.04 HWE (kernel 6.8.0-40-generic)
- Ubuntu 24.04.01 (kernel 6.8.0-40-generic)
You can check the kernel version using the command: uname -r
Confirming the Problem
Use one of the following two methods to identify if the PC has this issue.
- Look for PTE Read access is not set kernel messages in the system journal:
- Open a new Terminal window.
- Enter this command: journalctl -k | grep -i NO_PASID
- Look for journal entries similar to this example:
Sep 09 14:00:10 my_test_machine kernel: DMAR: [DMA Read NO_PASID] Request device [03:00.0] fault addr 0x1166b8000 [fault reason 0x06] PTE Read access is not set
- Correlate the timestamp to a previous failure.
To check if similar errors happened before the last reboot, enter this command instead: journalctl | grep -i NO_PASID
-
Look for a kernel message specifying that the IOMMU default domain type is set to Translated:
- Open a new Terminal window.
- Enter the command: journalctl -k | grep -i IOMMU
- Look for journal entries similar to this example:
[ 0.262686] iommu: Default domain type: Translated
Solution
The recommended solution is to configure the IOMMU default domain type to Passthrough mode using the following steps.
The following process does not include steps for creating a copy of the GRUB configuration file. Create a backup copy of the existing configuration file before you modify the configuration. Read the complete process before you begin.
- Edit the GRUB configuration file:
- Open a Terminal window.
- At the command prompt, enter the following to open the file in the VI editor: sudo vi /etc/default/grub
- Enter the user password if prompted.
- Move the cursor to the line specifying the variable GRUB_CMDLINE_LINUX_DEFAULT
- Press the i key to put the VI editor into insert mode.
- Add the command “ iommu=pt”.
For example: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash iommu=pt"
Note Do not modify or delete the existing variable definition text. Add the command at the position shown in the preceding example. - Press the escape key to return the VI editor to command mode.
- Save the GRUB configuration file and exit the VI editor using the command :wq
- In the Terminal window, enter the following command to regenerate the GRUB configuration file: sudo update-grub
- Reboot the system.
- Verify that the GRUB configuration has been properly updated and that the IOMMU
default domain type is configured to pass-through mode.
- Open a new Terminal window.
- Enter the command: journalctl -k | grep -i IOMMU
- Look for journal entries similar to this example:
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.8.0-41-generic root=UUID=d27287cc-623b-4c29-93ec-23a5eb00177a ro quiet splash iommu=pt vt.handoff=7 ... [ 0.261029] iommu: Default domain type: Passthrough (set via kernel command line)