AMD IOMMU: reset command buffer pointers manually
commit8fb9f8d889b104a9acebaff83b637bcc56706576
authorJoerg Roedel <joerg.roedel@amd.com>
Fri, 19 Dec 2008 13:42:12 +0000 (19 14:42 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 14 Jan 2009 17:44:07 +0000 (14 09:44 -0800)
treefbdb21cb577051377f0f6dc5c3433fc4fe81a816
parent9d8ce36fb8cd27442e1b700f3068908a63de2fff
AMD IOMMU: reset command buffer pointers manually

Upstream commit cf558d25e5c9f70fa0279c9b7b8b4aed7cae9bd4

Under special circumstances the IOMMU does not reset the head and tail
pointer of its command ringbuffer to zero when the command base is
written. This causes the IOMMU to fetch random memory and executes it as
an command. Since these commands are likely illegal IOMMU stops fetching
further commands including IOTLB flushes. This leads to completion wait
errors at boot and in some cases to data corruption and kernel crashes.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/x86/kernel/amd_iommu_init.c