Thread (48 messages) 48 messages, 9 authors, 2021-08-27

Re: [PATCH v15 06/12] swiotlb: Use is_swiotlb_force_bounce for swiotlb data bouncing

From: Will Deacon <will@kernel.org>
Date: 2021-07-05 19:04:10
Also in: dri-devel, intel-gfx, linux-devicetree, linux-iommu, linux-pci, lkml, xen-devel

Hi Nathan,

I may have just spotted something in these logs...

On Fri, Jul 02, 2021 at 10:55:17PM -0700, Nathan Chancellor wrote:
[    2.340956] pci 0000:0c:00.1: Adding to iommu group 4
[    2.340996] pci 0000:0c:00.2: Adding to iommu group 4
[    2.341038] pci 0000:0c:00.3: Adding to iommu group 4
[    2.341078] pci 0000:0c:00.4: Adding to iommu group 4
[    2.341122] pci 0000:0c:00.6: Adding to iommu group 4
[    2.341163] pci 0000:0d:00.0: Adding to iommu group 4
[    2.341203] pci 0000:0d:00.1: Adding to iommu group 4
[    2.361821] pci 0000:00:00.2: AMD-Vi: Found IOMMU cap 0x40
[    2.361839] pci 0000:00:00.2: AMD-Vi: Extended features (0x206d73ef22254ade):
[    2.361846]  PPR X2APIC NX GT IA GA PC GA_vAPIC
[    2.361861] AMD-Vi: Interrupt remapping enabled
[    2.361865] AMD-Vi: Virtual APIC enabled
[    2.361870] AMD-Vi: X2APIC enabled
[    2.362272] AMD-Vi: Lazy IO/TLB flushing enabled
So at this point, the AMD IOMMU driver does:

	swiotlb        = (iommu_default_passthrough() || sme_me_mask) ? 1 : 0;

where 'swiotlb' is a global variable indicating whether or not swiotlb
is in use. It's picked up a bit later on by pci_swiotlb_late_init(), which
will call swiotlb_exit() if 'swiotlb' is false.

Now, that used to work fine, because swiotlb_exit() clears
'io_tlb_default_mem' to NULL, but now with the restricted DMA changes, I
think that all the devices which have successfully probed beforehand will
have stale pointers to the freed structure in their 'dev->dma_io_tlb_mem'
field.

Will
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help