diff options
author | Joerg Roedel <joerg.roedel@amd.com> | 2010-09-23 15:15:19 +0200 |
---|---|---|
committer | Joerg Roedel <joerg.roedel@amd.com> | 2010-09-23 16:26:03 +0200 |
commit | 4c894f47bb49284008073d351c0ddaac8860864e (patch) | |
tree | 4f14600bbc3a7b9c22dfb667edebba736e7e3ca9 /arch/x86/include/asm/amd_iommu_types.h | |
parent | x86/amd-iommu: Set iommu configuration flags in enable-loop (diff) | |
download | linux-dev-4c894f47bb49284008073d351c0ddaac8860864e.tar.xz linux-dev-4c894f47bb49284008073d351c0ddaac8860864e.zip |
x86/amd-iommu: Work around S3 BIOS bug
This patch adds a workaround for an IOMMU BIOS problem to
the AMD IOMMU driver. The result of the bug is that the
IOMMU does not execute commands anymore when the system
comes out of the S3 state resulting in system failure. The
bug in the BIOS is that is does not restore certain hardware
specific registers correctly. This workaround reads out the
contents of these registers at boot time and restores them
on resume from S3. The workaround is limited to the specific
IOMMU chipset where this problem occurs.
Cc: stable@kernel.org
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Diffstat (limited to 'arch/x86/include/asm/amd_iommu_types.h')
-rw-r--r-- | arch/x86/include/asm/amd_iommu_types.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/x86/include/asm/amd_iommu_types.h b/arch/x86/include/asm/amd_iommu_types.h index ef2d5cd7d7e7..08616180deaf 100644 --- a/arch/x86/include/asm/amd_iommu_types.h +++ b/arch/x86/include/asm/amd_iommu_types.h @@ -414,6 +414,15 @@ struct amd_iommu { /* default dma_ops domain for that IOMMU */ struct dma_ops_domain *default_dom; + + /* + * This array is required to work around a potential BIOS bug. + * The BIOS may miss to restore parts of the PCI configuration + * space when the system resumes from S3. The result is that the + * IOMMU does not execute commands anymore which leads to system + * failure. + */ + u32 cache_cfg[4]; }; /* |