From: Mark Langsdorf <mark.langsdorf@amd.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>
Subject: [PATCH] Enable GART-IOMMU only after setting up protection methods
Date: Wed, 8 Apr 2009 16:08:55 -0500 [thread overview]
Message-ID: <200904081608.55746.mark.langsdorf@amd.com> (raw)
In-Reply-To: <200903171457.25582.mark.langsdorf@amd.com>
The current code to set up the GART as an IOMMU enables GART
translations before it removes the aperture from the kernel
memory map, sets the GART PTEs to UC, sets up the guard and
scratch pages, or does a wbinvd(). This leaves the possibility
of cache aliasing open and can cause system crashes.
Re-order the code and add tlbflush so as to enable the
GART translations only after all safeguards are in place and
the tlb has been flushed.
AMD has tested this patch and seen no adverse effects.
Signed-off-by: Mark Langsdorf <mark.langsdorf@amd.com>
diff -r 0d1744c7acc7 arch/x86/kernel/pci-gart_64.c
--- a/arch/x86/kernel/pci-gart_64.c Fri Mar 27 16:47:28 2009 -0500
+++ b/arch/x86/kernel/pci-gart_64.c Mon Mar 30 15:05:47 2009 -0500
@@ -38,6 +38,7 @@
#include <asm/swiotlb.h>
#include <asm/dma.h>
#include <asm/k8.h>
+#include <asm/tlbflush.h>
static unsigned long iommu_bus_base; /* GART remapping area (physical) */
static unsigned long iommu_size; /* size of remapping area bytes */
@@ -682,9 +683,9 @@
if (set_memory_uc((unsigned long)gatt, gatt_size >> PAGE_SHIFT))
panic("Could not set GART PTEs to uncacheable pages");
+ wbinvd();
+
agp_gatt_table = gatt;
-
- enable_gart_translations();
error = sysdev_class_register(&gart_sysdev_class);
if (!error)
@@ -855,6 +856,11 @@
for (i = EMERGENCY_PAGES; i < iommu_pages; i++)
iommu_gatt_base[i] = gart_unmapped_entry;
+ wbinvd();
+ flush_tlb_all();
+
+ enable_gart_translations();
+
flush_gart();
dma_ops = &gart_dma_ops;
}
next prev parent reply other threads:[~2009-04-08 21:02 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-17 19:57 [PATCH][retry 5] Conform L3 Cache Index Disable to Linux Standards Mark Langsdorf
2009-03-19 8:18 ` Ingo Molnar
2009-04-08 21:02 ` [PATCH][retry 6] " Mark Langsdorf
2009-04-09 3:46 ` Ingo Molnar
2009-04-09 9:48 ` Andreas Herrmann
2009-04-08 21:08 ` Mark Langsdorf [this message]
2009-04-09 4:44 ` [PATCH] Enable GART-IOMMU only after setting up protection methods Yinghai Lu
2009-04-09 16:48 ` Langsdorf, Mark
2009-04-09 12:27 ` Joerg Roedel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200904081608.55746.mark.langsdorf@amd.com \
--to=mark.langsdorf@amd.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox