Skip to content

Commit

Permalink
[PATCH] x86-64: make GART PTEs uncacheable
Browse files Browse the repository at this point in the history
This patches fixes the silent data corruption problems being seen using the
GART iommu where 4kB of data where incorrect (seen mostly on Nvidia CK804
systems).  This fix, to mark the memory regin the GART PTEs reside on as
uncacheable, also brings the code in line with the AGP specification.

Signed-off-by: Joachim Deguara <[email protected]>
Signed-off-by: Andi Kleen <[email protected]>
  • Loading branch information
Joachim Deguara authored and Andi Kleen committed Apr 24, 2007
1 parent c445a31 commit cf6387d
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion arch/x86_64/kernel/pci-gart.c
Original file line number Diff line number Diff line change
Expand Up @@ -519,7 +519,11 @@ static __init int init_k8_gatt(struct agp_kern_info *info)
gatt_size = (aper_size >> PAGE_SHIFT) * sizeof(u32);
gatt = (void *)__get_free_pages(GFP_KERNEL, get_order(gatt_size));
if (!gatt)
panic("Cannot allocate GATT table");
panic("Cannot allocate GATT table");
if (change_page_attr_addr((unsigned long)gatt, gatt_size >> PAGE_SHIFT, PAGE_KERNEL_NOCACHE))
panic("Could not set GART PTEs to uncacheable pages");
global_flush_tlb();

memset(gatt, 0, gatt_size);
agp_gatt_table = gatt;

Expand Down

0 comments on commit cf6387d

Please sign in to comment.