Public bug reported:

It's been observed that plugging in a TBT3 NVME device to a port marked
with ExternalFacingPort that some DMA transactions occur that are not a
full page and so the DMA API attempts to use software bounce buffers
instead of relying upon the IOMMU translation.

This doesn't work and leads to messaging like:

swiotlb buffer is full (sz: 4096 bytes), total 0 (slots), used 0 (slots)

The bounce buffers were originally set up, but torn down during
the boot process.
* This happens because as part of IOMMU initialization
  `amd_iommu_init_dma_ops` gets called and resets the global swiotlb to 0.
* When late_init gets called `pci_swiotlb_late_init` `swiotlb_exit` is
  called and the buffers are torn down.

This can be observed in the logs:
```
[    0.407286] AMD-Vi: Extended features (0x246577efa2254afa): PPR NX GT [5] IA 
GA PC GA_vAPIC
[    0.407291] AMD-Vi: Interrupt remapping enabled
[    0.407292] AMD-Vi: Virtual APIC enabled
[    0.407872] software IO TLB: tearing down default memory pool
```
This series fixes the behavior of AMD IOMMU to enable swiotlb so that
non-page aligned DMA goes through a bounce buffer.

It also adds a message to help with debugging similar problems in the
future.

** Affects: hwe-next
     Importance: Undecided
         Status: New

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New

** Affects: linux-oem-5.14 (Ubuntu)
     Importance: Undecided
         Status: Invalid

** Affects: linux-oem-5.17 (Ubuntu)
     Importance: Undecided
         Status: New

** Affects: linux (Ubuntu Focal)
     Importance: Undecided
         Status: Invalid

** Affects: linux-oem-5.14 (Ubuntu Focal)
     Importance: Undecided
         Status: New

** Affects: linux-oem-5.17 (Ubuntu Focal)
     Importance: Undecided
         Status: Invalid

** Affects: linux (Ubuntu Impish)
     Importance: Undecided
         Status: New

** Affects: linux-oem-5.14 (Ubuntu Impish)
     Importance: Undecided
         Status: Invalid

** Affects: linux-oem-5.17 (Ubuntu Impish)
     Importance: Undecided
         Status: Invalid

** Affects: linux (Ubuntu Jammy)
     Importance: Undecided
         Status: New

** Affects: linux-oem-5.14 (Ubuntu Jammy)
     Importance: Undecided
         Status: Invalid

** Affects: linux-oem-5.17 (Ubuntu Jammy)
     Importance: Undecided
         Status: New


** Tags: amd oem-priority originate-from-1968137

** Tags added: amd oem-priority originate-from-1968137

** Also affects: linux-oem-5.17 (Ubuntu)
   Importance: Undecided
       Status: New

** Also affects: linux-oem-5.14 (Ubuntu)
   Importance: Undecided
       Status: New

** Also affects: linux (Ubuntu Focal)
   Importance: Undecided
       Status: New

** Also affects: linux-oem-5.14 (Ubuntu Focal)
   Importance: Undecided
       Status: New

** Also affects: linux-oem-5.17 (Ubuntu Focal)
   Importance: Undecided
       Status: New

** Also affects: linux (Ubuntu Jammy)
   Importance: Undecided
       Status: New

** Also affects: linux-oem-5.14 (Ubuntu Jammy)
   Importance: Undecided
       Status: New

** Also affects: linux-oem-5.17 (Ubuntu Jammy)
   Importance: Undecided
       Status: New

** Changed in: linux (Ubuntu Focal)
       Status: New => Invalid

** Changed in: linux-oem-5.14 (Ubuntu Jammy)
       Status: New => Invalid

** Changed in: linux-oem-5.17 (Ubuntu Focal)
       Status: New => Invalid

** Also affects: linux (Ubuntu Impish)
   Importance: Undecided
       Status: New

** Also affects: linux-oem-5.14 (Ubuntu Impish)
   Importance: Undecided
       Status: New

** Also affects: linux-oem-5.17 (Ubuntu Impish)
   Importance: Undecided
       Status: New

** Changed in: linux-oem-5.14 (Ubuntu Impish)
       Status: New => Invalid

** Changed in: linux-oem-5.17 (Ubuntu Impish)
       Status: New => Invalid

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1969086

Title:
  Enable swiotlb to avoid untrusted devices errors on AMD platforms

Status in HWE Next:
  New
Status in linux package in Ubuntu:
  New
Status in linux-oem-5.14 package in Ubuntu:
  Invalid
Status in linux-oem-5.17 package in Ubuntu:
  New
Status in linux source package in Focal:
  Invalid
Status in linux-oem-5.14 source package in Focal:
  New
Status in linux-oem-5.17 source package in Focal:
  Invalid
Status in linux source package in Impish:
  New
Status in linux-oem-5.14 source package in Impish:
  Invalid
Status in linux-oem-5.17 source package in Impish:
  Invalid
Status in linux source package in Jammy:
  New
Status in linux-oem-5.14 source package in Jammy:
  Invalid
Status in linux-oem-5.17 source package in Jammy:
  New

Bug description:
  It's been observed that plugging in a TBT3 NVME device to a port marked
  with ExternalFacingPort that some DMA transactions occur that are not a
  full page and so the DMA API attempts to use software bounce buffers
  instead of relying upon the IOMMU translation.

  This doesn't work and leads to messaging like:

  swiotlb buffer is full (sz: 4096 bytes), total 0 (slots), used 0
  (slots)

  The bounce buffers were originally set up, but torn down during
  the boot process.
  * This happens because as part of IOMMU initialization
    `amd_iommu_init_dma_ops` gets called and resets the global swiotlb to 0.
  * When late_init gets called `pci_swiotlb_late_init` `swiotlb_exit` is
    called and the buffers are torn down.

  This can be observed in the logs:
  ```
  [    0.407286] AMD-Vi: Extended features (0x246577efa2254afa): PPR NX GT [5] 
IA GA PC GA_vAPIC
  [    0.407291] AMD-Vi: Interrupt remapping enabled
  [    0.407292] AMD-Vi: Virtual APIC enabled
  [    0.407872] software IO TLB: tearing down default memory pool
  ```
  This series fixes the behavior of AMD IOMMU to enable swiotlb so that
  non-page aligned DMA goes through a bounce buffer.

  It also adds a message to help with debugging similar problems in the
  future.

To manage notifications about this bug go to:
https://bugs.launchpad.net/hwe-next/+bug/1969086/+subscriptions


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to