public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] disable CPU side GART accesses
@ 2008-10-15 21:48 Bob Montgomery
  2008-10-15 23:40 ` Linus Torvalds
  2008-10-15 23:48 ` Ingo Molnar
  0 siblings, 2 replies; 17+ messages in thread
From: Bob Montgomery @ 2008-10-15 21:48 UTC (permalink / raw)
  To: linux-kernel@vger.kernel.org; +Cc: vojtech, Linus Torvalds, chandru

This patch prevents improper access of the GART aperture from kdump
kernels running on AMD systems.  

Symptoms of the problem include hangs, spurious restarts, and MCE
(Machine Check Exception) panics in some AMD Opteron systems that
enable the GART IOMMU and access /proc/vmcore or /dev/oldmem from a
kdump kernel.  Note that the GART IOMMU will not be enabled on systems
with less than 4 GB of RAM, so symptoms will not appear.  This problem
has been reproduced on Family 10H Quad-Core AMD Opteron systems.

This patch changes the initialization of the GART to set the DISGARTCPU
bit in the GART Aperture Control Register (AMD64_GARTAPERTURECTL).
Setting the bit prevents requests from the CPUs from accessing the
GART.  In other words, CPU memory accesses to the aperture address
range will not cause the GART to perform an address translation.
The aperture area is currently being unmapped at the kernel level
with set_memory_np() in gart_iommu_init to prevent accesses from the
CPU, but that kernel level unmapping is not in effect in the kexec'd
kdump kernel.  By disabling the CPU-side accesses within the GART,
which does persist through the kexec of the kdump kernel, the kdump
kernel is prevented from interacting with the GART during accesses
to the dump memory areas which include the address range of the GART
aperture.  Although the patch can be applied to the kdump kernel,
it is not exercised there because the kdump kernel doesn't attempt
to initialize the GART, since it typically runs in less than 4 GB
of memory.


Signed-off-by: Bob Montgomery <bob.montgomery@hp.com>


--- linux-2.6.27/include/asm-x86/gart.h	2008-10-13 16:36:34.000000000 -0600
+++ linux-2.6.27-fix/include/asm-x86/gart.h	2008-10-14 10:37:32.000000000 -0600
@@ -44,7 +44,8 @@ static inline void enable_gart_translati
         /* Enable GART translation for this hammer. */
         pci_read_config_dword(dev, AMD64_GARTAPERTURECTL, &ctl);
         ctl |= GARTEN;
-        ctl &= ~(DISGARTCPU | DISGARTIO);
+        ctl |= DISGARTCPU;
+        ctl &= ~(DISGARTIO);
         pci_write_config_dword(dev, AMD64_GARTAPERTURECTL, ctl);
 }
 



^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2008-11-19 22:09 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-15 21:48 [PATCH] disable CPU side GART accesses Bob Montgomery
2008-10-15 23:40 ` Linus Torvalds
2008-10-16 19:17   ` Bob Montgomery
2008-10-15 23:48 ` Ingo Molnar
2008-10-16  0:22   ` Yinghai Lu
2008-10-16 17:00     ` Bob Montgomery
2008-10-16 17:43       ` Yinghai Lu
2008-10-16 19:26         ` Bob Montgomery
2008-10-27 22:42   ` Bob Montgomery
2008-10-27 23:06     ` Yinghai Lu
2008-10-29 20:52       ` Bob Montgomery
2008-10-29 21:24         ` Dave Airlie
2008-10-29 21:32           ` Dave Jones
2008-10-29 21:40             ` Dave Airlie
2008-11-03 23:36               ` Bob Montgomery
2008-11-03 23:55                 ` Dave Airlie
2008-11-19 22:12                   ` Bob Montgomery

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox