Messages in this thread Patch in this message | | | Date | Thu, 25 Sep 2008 12:42:12 +0200 | From | Joerg Roedel <> | Subject | Re: [PATCH 3/3] x86/iommu: use __GFP_ZERO instead of memset for GART |
| |
On Thu, Sep 25, 2008 at 12:20:12PM +0200, Ingo Molnar wrote: > > * Joerg Roedel <joerg.roedel@amd.com> wrote: > > > #ifdef CONFIG_IOMMU_LEAK > > if (leak_trace) { > > - iommu_leak_tab = (void *)__get_free_pages(GFP_KERNEL, > > + iommu_leak_tab = (void *)__get_free_pages(GFP_KERNEL|__GFP_ZERO, > > get_order(iommu_pages*sizeof(void *))); > > - if (iommu_leak_tab) > > - memset(iommu_leak_tab, 0, iommu_pages * 8); > > else > > printk(KERN_DEBUG > > "PCI-DMA: Cannot allocate leak trace area\n"); > > hm, that looks broken.
Argh, yes. Please try this one:
= From c402fd7f5fe930d45a02ef863bf3fb61851e6ad0 Mon Sep 17 00:00:00 2001 From: Joerg Roedel <joerg.roedel@amd.com> Date: Thu, 25 Sep 2008 12:39:06 +0200 Subject: [PATCH] x86/iommu: use __GFP_ZERO instead of memset for GART
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> --- arch/x86/kernel/pci-gart_64.c | 13 +++++-------- 1 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c index aecea06..d077116 100644 --- a/arch/x86/kernel/pci-gart_64.c +++ b/arch/x86/kernel/pci-gart_64.c @@ -674,13 +674,13 @@ static __init int init_k8_gatt(struct agp_kern_info *info) info->aper_size = aper_size >> 20; gatt_size = (aper_size >> PAGE_SHIFT) * sizeof(u32); - gatt = (void *)__get_free_pages(GFP_KERNEL, get_order(gatt_size)); + gatt = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO, + get_order(gatt_size)); if (!gatt) panic("Cannot allocate GATT table"); if (set_memory_uc((unsigned long)gatt, gatt_size >> PAGE_SHIFT)) panic("Could not set GART PTEs to uncacheable pages"); - memset(gatt, 0, gatt_size); agp_gatt_table = gatt; enable_gart_translations(); @@ -788,19 +788,16 @@ void __init gart_iommu_init(void) iommu_size = check_iommu_size(info.aper_base, aper_size); iommu_pages = iommu_size >> PAGE_SHIFT; - iommu_gart_bitmap = (void *) __get_free_pages(GFP_KERNEL, + iommu_gart_bitmap = (void *) __get_free_pages(GFP_KERNEL | __GFP_ZERO, get_order(iommu_pages/8)); if (!iommu_gart_bitmap) panic("Cannot allocate iommu bitmap\n"); - memset(iommu_gart_bitmap, 0, iommu_pages/8); #ifdef CONFIG_IOMMU_LEAK if (leak_trace) { - iommu_leak_tab = (void *)__get_free_pages(GFP_KERNEL, + iommu_leak_tab = (void *)__get_free_pages(GFP_KERNEL|__GFP_ZERO, get_order(iommu_pages*sizeof(void *))); - if (iommu_leak_tab) - memset(iommu_leak_tab, 0, iommu_pages * 8); - else + if (!iommu_leak_tab) printk(KERN_DEBUG "PCI-DMA: Cannot allocate leak trace area\n"); } -- 1.5.6.4
-- | AMD Saxony Limited Liability Company & Co. KG Operating | Wilschdorfer Landstr. 101, 01109 Dresden, Germany System | Register Court Dresden: HRA 4896 Research | General Partner authorized to represent: Center | AMD Saxony LLC (Wilmington, Delaware, US) | General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy
| |