Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1615548 > unrolled thread
| Started by | Samuel Sieb <samuel@sieb.net> |
|---|---|
| First post | 2017-04-03 22:50 +0200 |
| Last post | 2017-04-07 12:30 +0200 |
| Articles | 9 — 2 participants |
Back to article view | Back to linux.kernel
AMD IOMMU causing filesystem corruption Samuel Sieb <samuel@sieb.net> - 2017-04-03 22:50 +0200
Re: AMD IOMMU causing filesystem corruption Joerg Roedel <joro@8bytes.org> - 2017-04-03 23:40 +0200
Re: AMD IOMMU causing filesystem corruption Samuel Sieb <samuel@sieb.net> - 2017-04-04 05:50 +0200
Re: AMD IOMMU causing filesystem corruption Samuel Sieb <samuel@sieb.net> - 2017-04-04 09:20 +0200
Re: AMD IOMMU causing filesystem corruption Joerg Roedel <joro@8bytes.org> - 2017-04-04 09:40 +0200
Re: AMD IOMMU causing filesystem corruption Samuel Sieb <samuel@sieb.net> - 2017-04-04 18:30 +0200
Re: AMD IOMMU causing filesystem corruption Joerg Roedel <joro@8bytes.org> - 2017-04-07 12:30 +0200
Re: AMD IOMMU causing filesystem corruption Samuel Sieb <samuel@sieb.net> - 2017-04-08 08:50 +0200
Re: AMD IOMMU causing filesystem corruption Joerg Roedel <joro@8bytes.org> - 2017-04-07 12:30 +0200
| From | Samuel Sieb <samuel@sieb.net> |
|---|---|
| Date | 2017-04-03 22:50 +0200 |
| Subject | AMD IOMMU causing filesystem corruption |
| Message-ID | <tsh5f-3nO-5@gated-at.bofh.it> |
I filed a bug in bugzilla, but I wasn't sure what category to put it in, so I suspect I ended up picking one that doesn't get looked at much. https://bugzilla.kernel.org/show_bug.cgi?id=195051 The issue is that on a specific Acer laptop with a dual-core A9, if I don't disable the IOMMU using iommu=off, it has immediate and rapidly fatal filesystem corruption by the time a user logs into the desktop. What led me to try that was at one point I noticed an error message about the iommu in the logs. However, I did not have a chance to save that due to the corruption obliterating the log files.
[toc] | [next] | [standalone]
| From | Joerg Roedel <joro@8bytes.org> |
|---|---|
| Date | 2017-04-03 23:40 +0200 |
| Message-ID | <tshRE-3X5-23@gated-at.bofh.it> |
| In reply to | #1615548 |
Hi Samuel,
On Mon, Apr 03, 2017 at 01:38:08PM -0700, Samuel Sieb wrote:
> I filed a bug in bugzilla, but I wasn't sure what category to put it
> in, so I suspect I ended up picking one that doesn't get looked at
> much.
>
> https://bugzilla.kernel.org/show_bug.cgi?id=195051
>
> The issue is that on a specific Acer laptop with a dual-core A9, if
> I don't disable the IOMMU using iommu=off, it has immediate and
> rapidly fatal filesystem corruption by the time a user logs into the
> desktop. What led me to try that was at one point I noticed an error
> message about the iommu in the logs. However, I did not have a
> chance to save that due to the corruption obliterating the log
> files.
You have a system based on the AMD Stoney platform, on which the PCI-ATS
feature of the GPU is broken, as we recently found out.
Can you please test whether the attached patch fixes the issue on your
machine?
From 09cbdcbbd23f0823e7651b4f35b13ae633b3fbe2 Mon Sep 17 00:00:00 2001
From: Joerg Roedel <jroedel@suse.de>
Date: Tue, 28 Mar 2017 13:20:27 +0200
Subject: [PATCH] PCI: Blacklist AMD Stoney GPU devices for ATS
ATS is broken on these devices. Under invalidation load, the
GPU does not reply to invalidations anymore, causing
Completion-wait loop timeouts on the AMD IOMMU driver side.
Fix it by not enabling ATS on these devices.
Note that below mentioned commit is not broken, it just
triggers the issue because it might cause invalidation
storms on devices.
Fixes: b1516a14657a ('iommu/amd: Implement flush queue')
Reported-by: Daniel Drake <drake@endlessm.com>
Cc: Alexander Deucher <Alexander.Deucher@amd.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
drivers/pci/ats.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/pci/ats.c b/drivers/pci/ats.c
index eeb9fb2..711bdb2 100644
--- a/drivers/pci/ats.c
+++ b/drivers/pci/ats.c
@@ -17,10 +17,18 @@
#include "pci.h"
+static const struct pci_device_id broken_ats_tbl[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_AMD, 0x98e4) }, /* AMD Stoney GPU part */
+ { 0 }
+};
+
void pci_ats_init(struct pci_dev *dev)
{
int pos;
+ if (pci_match_id(broken_ats_tbl, dev))
+ return;
+
pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ATS);
if (!pos)
return;
--
1.9.1
[toc] | [prev] | [next] | [standalone]
| From | Samuel Sieb <samuel@sieb.net> |
|---|---|
| Date | 2017-04-04 05:50 +0200 |
| Message-ID | <tsnDH-7L4-9@gated-at.bofh.it> |
| In reply to | #1615572 |
On 04/03/2017 02:39 PM, Joerg Roedel wrote: > You have a system based on the AMD Stoney platform, on which the PCI-ATS > feature of the GPU is broken, as we recently found out. > > Can you please test whether the attached patch fixes the issue on your > machine? > Yes, that works, thank you! Now I'm curious what Windows does. Either they don't use that feature or they already knew to avoid it. In which case, why did AMD take so long to let the kernel developers know?
[toc] | [prev] | [next] | [standalone]
| From | Samuel Sieb <samuel@sieb.net> |
|---|---|
| Date | 2017-04-04 09:20 +0200 |
| Message-ID | <tsqUV-1Er-7@gated-at.bofh.it> |
| In reply to | #1615688 |
On 04/03/2017 08:37 PM, Samuel Sieb wrote: > On 04/03/2017 02:39 PM, Joerg Roedel wrote: >> You have a system based on the AMD Stoney platform, on which the PCI-ATS >> feature of the GPU is broken, as we recently found out. >> >> Can you please test whether the attached patch fixes the issue on your >> machine? >> > Yes, that works, thank you! > Unfortunately, that turned out to be a bit premature. After compiling a kernel on it remotely over ssh (not interacting with the logged in desktop), a reboot failed with endless completion-wait loop timeout messages and after a force poweroff and restart it won't boot. The EFI filesystem was even destroyed, probably because the kernel installation modified a file on there.
[toc] | [prev] | [next] | [standalone]
| From | Joerg Roedel <joro@8bytes.org> |
|---|---|
| Date | 2017-04-04 09:40 +0200 |
| Message-ID | <tsrei-1N1-13@gated-at.bofh.it> |
| In reply to | #1615744 |
On Tue, Apr 04, 2017 at 12:11:31AM -0700, Samuel Sieb wrote: > Unfortunately, that turned out to be a bit premature. After > compiling a kernel on it remotely over ssh (not interacting with the > logged in desktop), a reboot failed with endless completion-wait > loop timeout messages and after a force poweroff and restart it > won't boot. The EFI filesystem was even destroyed, probably because > the kernel installation modified a file on there. Yeah, please boot the machine with amd_iommu=off during re-installation and when you install the modified kernel. And then boot into the patches kernel with amd_iommu=on (which is the default). Thanks, Joerg
[toc] | [prev] | [next] | [standalone]
| From | Samuel Sieb <samuel@sieb.net> |
|---|---|
| Date | 2017-04-04 18:30 +0200 |
| Message-ID | <tszvc-7i4-23@gated-at.bofh.it> |
| In reply to | #1615752 |
On 04/04/2017 12:32 AM, Joerg Roedel wrote: > On Tue, Apr 04, 2017 at 12:11:31AM -0700, Samuel Sieb wrote: >> Unfortunately, that turned out to be a bit premature. After >> compiling a kernel on it remotely over ssh (not interacting with the >> logged in desktop), a reboot failed with endless completion-wait >> loop timeout messages and after a force poweroff and restart it >> won't boot. The EFI filesystem was even destroyed, probably because >> the kernel installation modified a file on there. > > Yeah, please boot the machine with amd_iommu=off during re-installation > and when you install the modified kernel. And then boot into the patches > kernel with amd_iommu=on (which is the default). > That's what I did. While running with iommu=off, I compiled and installed a 4.11rc kernel with the patch. I rebooted to use that kernel and then compiled and installed a 4.10 kernel with that patch and another unrelated patch. That is what I described above. The filesystem destruction happened while running the 4.11rc kernel with that patch. Is there any way to verify that the patch was actually having any effect? Can I check if ATS is enabled or not? I will have to rebuild the system before I can test again.
[toc] | [prev] | [next] | [standalone]
| From | Joerg Roedel <joro@8bytes.org> |
|---|---|
| Date | 2017-04-07 12:30 +0200 |
| Message-ID | <ttzjr-5Oz-9@gated-at.bofh.it> |
| In reply to | #1616197 |
On Tue, Apr 04, 2017 at 09:29:37AM -0700, Samuel Sieb wrote: > That's what I did. While running with iommu=off, I compiled and > installed a 4.11rc kernel with the patch. I rebooted to use that > kernel and then compiled and installed a 4.10 kernel with that patch > and another unrelated patch. That is what I described above. The > filesystem destruction happened while running the 4.11rc kernel with > that patch. Is there any way to verify that the patch was actually > having any effect? Can I check if ATS is enabled or not? I will > have to rebuild the system before I can test again. Can you please send me output of 'lspci -nv' on your system? Thanks, Joerg
[toc] | [prev] | [next] | [standalone]
| From | Samuel Sieb <samuel@sieb.net> |
|---|---|
| Date | 2017-04-08 08:50 +0200 |
| Message-ID | <ttSm5-1Q8-11@gated-at.bofh.it> |
| In reply to | #1618660 |
On 04/07/2017 03:22 AM, Joerg Roedel wrote: > Can you please send me output of 'lspci -nv' on your system? > I have to figure out how to rebuild the system and find the time to do it before I can test that patch, but here's the lspci output: 00:00.0 0600: 1022:1576 Subsystem: 1025:1099 Flags: bus master, fast devsel, latency 0 00:00.2 0806: 1022:1577 Subsystem: 1025:1099 Flags: fast devsel, IRQ 24 Capabilities: [40] Secure device <?> Capabilities: [64] MSI: Enable+ Count=1/4 Maskable- 64bit+ Capabilities: [74] HyperTransport: MSI Mapping Enable+ Fixed+ 00:01.0 0300: 1002:98e4 (rev c1) (prog-if 00 [VGA controller]) Subsystem: 1025:1099 Flags: bus master, fast devsel, latency 0, IRQ 37 Memory at e0000000 (64-bit, prefetchable) [size=256M] Memory at f0000000 (64-bit, prefetchable) [size=8M] I/O ports at 3000 [size=256] Memory at f0d00000 (32-bit, non-prefetchable) [size=256K] Expansion ROM at f0d80000 [disabled] [size=128K] Capabilities: [48] Vendor Specific Information: Len=08 <?> Capabilities: [50] Power Management version 3 Capabilities: [58] Express Root Complex Integrated Endpoint, MSI 00 Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?> Capabilities: [270] #19 Capabilities: [2b0] Address Translation Service (ATS) Capabilities: [2c0] Page Request Interface (PRI) Capabilities: [2d0] Process Address Space ID (PASID) Kernel driver in use: amdgpu Kernel modules: amdgpu 00:01.1 0403: 1002:15b3 Subsystem: 1002:15b3 Flags: bus master, fast devsel, latency 0, IRQ 255 Memory at f0d60000 (64-bit, non-prefetchable) [size=16K] Capabilities: [48] Vendor Specific Information: Len=08 <?> Capabilities: [50] Power Management version 3 Capabilities: [58] Express Root Complex Integrated Endpoint, MSI 00 Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+ Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?> Kernel modules: snd_hda_intel 00:02.0 0600: 1022:157b Flags: fast devsel 00:02.1 0604: 1022:157c (prog-if 00 [Normal decode]) Flags: bus master, fast devsel, latency 0, IRQ 26 Bus: primary=00, secondary=01, subordinate=01, sec-latency=0 I/O behind bridge: 00001000-00001fff Memory behind bridge: f0e00000-f0ffffff Prefetchable memory behind bridge: 00000000f1000000-00000000f11fffff Capabilities: [50] Power Management version 3 Capabilities: [58] Express Root Port (Slot+), MSI 00 Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [c0] Subsystem: 1022:1234 Capabilities: [c8] HyperTransport: MSI Mapping Enable+ Fixed+ Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?> Capabilities: [270] #19 Kernel driver in use: pcieport Kernel modules: shpchp 00:02.2 0604: 1022:157c (prog-if 00 [Normal decode]) Flags: bus master, fast devsel, latency 0, IRQ 27 Bus: primary=00, secondary=02, subordinate=02, sec-latency=0 I/O behind bridge: 00002000-00002fff Memory behind bridge: f0c00000-f0cfffff Capabilities: [50] Power Management version 3 Capabilities: [58] Express Root Port (Slot+), MSI 00 Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [c0] Subsystem: 1022:1234 Capabilities: [c8] HyperTransport: MSI Mapping Enable+ Fixed+ Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?> Capabilities: [270] #19 Kernel driver in use: pcieport Kernel modules: shpchp 00:02.3 0604: 1022:157c (prog-if 00 [Normal decode]) Flags: bus master, fast devsel, latency 0, IRQ 28 Bus: primary=00, secondary=03, subordinate=03, sec-latency=0 Memory behind bridge: f0800000-f09fffff Capabilities: [50] Power Management version 3 Capabilities: [58] Express Root Port (Slot+), MSI 00 Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [c0] Subsystem: 1022:1234 Capabilities: [c8] HyperTransport: MSI Mapping Enable+ Fixed+ Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?> Capabilities: [270] #19 Kernel driver in use: pcieport Kernel modules: shpchp 00:03.0 0600: 1022:157b Flags: fast devsel 00:08.0 1080: 1022:1578 Subsystem: 1025:1099 Flags: bus master, fast devsel, latency 0, IRQ 255 Memory at f0d40000 (64-bit, prefetchable) [size=128K] Memory at f0b00000 (32-bit, non-prefetchable) [size=1M] Memory at f0d6f000 (32-bit, non-prefetchable) [size=4K] Memory at f0d6a000 (32-bit, non-prefetchable) [size=8K] Capabilities: [50] MSI-X: Enable- Count=2 Masked- Capabilities: [5c] HyperTransport: MSI Mapping Enable+ Fixed+ Capabilities: [60] Power Management version 3 Capabilities: [a4] PCI Advanced Features 00:09.0 0600: 1022:157d Flags: fast devsel 00:09.2 0403: 1022:157a Subsystem: 1025:1099 Flags: bus master, fast devsel, latency 0, IRQ 255 Memory at f0d64000 (32-bit, non-prefetchable) [size=16K] Capabilities: [60] Power Management version 3 Capabilities: [a4] PCI Advanced Features Kernel modules: snd_hda_intel 00:10.0 0c03: 1022:7914 (rev 20) (prog-if 30 [XHCI]) Subsystem: 1025:1099 Flags: bus master, fast devsel, latency 0, IRQ 18 Memory at f0d68000 (64-bit, non-prefetchable) [size=8K] Capabilities: [50] Power Management version 3 Capabilities: [70] MSI: Enable- Count=1/8 Maskable- 64bit+ Capabilities: [90] MSI-X: Enable+ Count=8 Masked- Capabilities: [a0] Express Root Complex Integrated Endpoint, MSI 00 Capabilities: [100] Latency Tolerance Reporting Kernel driver in use: xhci_hcd 00:11.0 0106: 1022:7901 (rev 4b) (prog-if 01 [AHCI 1.0]) Subsystem: 1025:1099 Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 19 I/O ports at 3118 [size=8] I/O ports at 3124 [size=4] I/O ports at 3110 [size=8] I/O ports at 3120 [size=4] I/O ports at 3100 [size=16] Memory at f0d6c000 (32-bit, non-prefetchable) [size=1K] Capabilities: [60] Power Management version 3 Capabilities: [70] SATA HBA v1.0 Kernel driver in use: ahci 00:12.0 0c03: 1022:7908 (rev 49) (prog-if 20 [EHCI]) Subsystem: 1025:1099 Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 18 Memory at f0d6d000 (32-bit, non-prefetchable) [size=256] Capabilities: [c0] Power Management version 2 Capabilities: [e4] Debug port: BAR=1 offset=00e0 Kernel driver in use: ehci-pci 00:14.0 0c05: 1022:790b (rev 4b) Subsystem: 1025:1099 Flags: 66MHz, medium devsel Kernel driver in use: piix4_smbus Kernel modules: i2c_piix4, sp5100_tco 00:14.3 0601: 1022:790e (rev 11) Subsystem: 1025:1099 Flags: bus master, 66MHz, medium devsel, latency 0 00:18.0 0600: 1022:15b0 Flags: fast devsel 00:18.1 0600: 1022:15b1 Flags: fast devsel 00:18.2 0600: 1022:15b2 Flags: fast devsel 00:18.3 0600: 1022:15b3 Flags: fast devsel Capabilities: [f0] Secure device <?> 00:18.4 0600: 1022:15b4 Flags: fast devsel Kernel modules: fam15h_power 00:18.5 0600: 1022:15b5 Flags: fast devsel 02:00.0 ff00: 10ec:5287 (rev 01) Subsystem: 1025:1099 Flags: bus master, fast devsel, latency 0, IRQ 33 Memory at f0c05000 (32-bit, non-prefetchable) [size=4K] Expansion ROM at f0c10000 [disabled] [size=64K] Capabilities: [40] Power Management version 3 Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [70] Express Endpoint, MSI 00 Capabilities: [b0] MSI-X: Enable- Count=1 Masked- Capabilities: [d0] Vital Product Data Capabilities: [100] Advanced Error Reporting Capabilities: [140] Virtual Channel Capabilities: [160] Device Serial Number 00-00-00-00-00-00-00-00 Capabilities: [170] Latency Tolerance Reporting Capabilities: [178] L1 PM Substates Kernel driver in use: rtsx_pci Kernel modules: rtsx_pci 02:00.1 0200: 10ec:8168 (rev 12) Subsystem: 1025:1099 Flags: bus master, fast devsel, latency 0, IRQ 35 I/O ports at 2000 [size=256] Memory at f0c04000 (64-bit, non-prefetchable) [size=4K] Memory at f0c00000 (64-bit, non-prefetchable) [size=16K] Capabilities: [40] Power Management version 3 Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [70] Express Endpoint, MSI 01 Capabilities: [b0] MSI-X: Enable- Count=4 Masked- Capabilities: [d0] Vital Product Data Capabilities: [100] Advanced Error Reporting Capabilities: [160] Device Serial Number 00-00-00-00-00-00-00-00 Capabilities: [170] Latency Tolerance Reporting Capabilities: [178] L1 PM Substates Kernel driver in use: r8169 Kernel modules: r8169 03:00.0 0280: 168c:0042 (rev 31) Subsystem: 11ad:08a6 Flags: bus master, fast devsel, latency 0, IRQ 39 Memory at f0800000 (64-bit, non-prefetchable) [size=2M] Capabilities: [40] Power Management version 3 Capabilities: [50] MSI: Enable+ Count=8/8 Maskable+ 64bit- Capabilities: [70] Express Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting Capabilities: [148] Virtual Channel Capabilities: [168] Device Serial Number 00-00-00-00-00-00-00-00 Capabilities: [178] Latency Tolerance Reporting Capabilities: [180] L1 PM Substates Kernel driver in use: ath10k_pci Kernel modules: ath10k_pci
[toc] | [prev] | [next] | [standalone]
| From | Joerg Roedel <joro@8bytes.org> |
|---|---|
| Date | 2017-04-07 12:30 +0200 |
| Message-ID | <ttzjs-5Oz-25@gated-at.bofh.it> |
| In reply to | #1616197 |
On Tue, Apr 04, 2017 at 09:29:37AM -0700, Samuel Sieb wrote: > That's what I did. While running with iommu=off, I compiled and > installed a 4.11rc kernel with the patch. I rebooted to use that > kernel and then compiled and installed a 4.10 kernel with that patch > and another unrelated patch. That is what I described above. The > filesystem destruction happened while running the 4.11rc kernel with > that patch. Is there any way to verify that the patch was actually > having any effect? Can I check if ATS is enabled or not? I will > have to rebuild the system before I can test again. Also, please try the attached debug-diff on your kernel. It completly disables the use of ATS in the amd-iommu driver. diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index 98940d1392cb..f019aa67c54c 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -467,7 +467,7 @@ static int iommu_init_device(struct device *dev) struct amd_iommu *iommu; iommu = amd_iommu_rlookup_table[dev_data->devid]; - dev_data->iommu_v2 = iommu->is_iommu_v2; + dev_data->iommu_v2 = false; } dev->archdata.iommu = dev_data; diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c index 6130278c5d71..41d0e645960c 100644 --- a/drivers/iommu/amd_iommu_init.c +++ b/drivers/iommu/amd_iommu_init.c @@ -171,7 +171,7 @@ int amd_iommus_present; /* IOMMUs have a non-present cache? */ bool amd_iommu_np_cache __read_mostly; -bool amd_iommu_iotlb_sup __read_mostly = true; +bool amd_iommu_iotlb_sup __read_mostly = false; u32 amd_iommu_max_pasid __read_mostly = ~0;
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web