Messages in this thread Patch in this message | | | Date | Thu, 11 Sep 2008 11:10:00 +0200 | From | Joerg Roedel <> | Subject | Re: [PATCH] x86: avoid unnecessary low zone allocation in AMD IOMMU's alloc_coherent |
| |
On Wed, Sep 10, 2008 at 11:45:34PM +0900, FUJITA Tomonori wrote: > On Wed, 10 Sep 2008 16:38:18 +0200 > Joerg Roedel <joro@8bytes.org> wrote: > > Ok, thats a valid point. I queue your patch with the AMD IOMMU updates > > for 2.6.28. Thanks. > > Ingo already has queued it his tree, I think.
I asked Ingo to remove it from his tree to avoid merge conflicts with updates I am currently preparing. Here is the patch I queued into my 2.6.28 update chain.
Joerg
=== commit 42a7fa8d8a7f1680cba76e4824dba30bfd1c9d70 Author: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Date: Wed Sep 10 20:19:40 2008 +0900
x86: avoid unnecessary low zone allocation in AMD IOMMU's alloc_coherent
x86's common alloc_coherent (dma_alloc_coherent in dma-mapping.h) sets up the gfp flag according to the device dma_mask but AMD IOMMU doesn't need it for devices that the IOMMU can do virtual mappings for. This patch avoids unnecessary low zone allocation.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c index ae38b24..09261dc 100644 --- a/arch/x86/kernel/amd_iommu.c +++ b/arch/x86/kernel/amd_iommu.c @@ -1360,6 +1360,9 @@ static void *alloc_coherent(struct device *dev, size_t size, if (!check_device(dev)) return NULL; + if (!get_device_resources(dev, &iommu, &domain, &devid)) + flag &= ~(__GFP_DMA | __GFP_HIGHMEM | __GFP_DMA32); + virt_addr = (void *)__get_free_pages(flag, get_order(size)); if (!virt_addr) return 0; @@ -1367,8 +1370,6 @@ static void *alloc_coherent(struct device *dev, size_t size, memset(virt_addr, 0, size); paddr = virt_to_phys(virt_addr); - get_device_resources(dev, &iommu, &domain, &devid); - if (!iommu || !domain) { *dma_addr = (dma_addr_t)paddr; return virt_addr; -- | 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
| |