On 04/06/2015 03:10 PM, Denys Vlasenko wrote:
Reduces kernel size by 68739 bytes on allyesconfig build:

     text     data      bss       dec     hex filename
82662736 22255384 20627456 125545576 77bac68 vmlinux0
82594029 22255352 20627456 125476837 77a9fe5 vmlinux1

Signed-off-by: Denys Vlasenko <dvlas...@redhat.com>
Cc: Marek Szyprowski <m.szyprow...@samsung.com>
Cc: Konrad Rzeszutek Wilk <konrad.w...@oracle.com>
Cc: David Woodhouse <dw...@infradead.org>
Cc: Don Dutile <ddut...@redhat.com>
Cc: Thomas Gleixner <t...@linutronix.de>
Cc: Ingo Molnar <mi...@redhat.com>
Cc: "H. Peter Anvin" <h...@zytor.com>
Cc: Andi Kleen <a...@firstfloor.org>
Cc: x...@kernel.org
Cc: linux-kernel@vger.kernel.org
---

Changes in v2: added EXPORT_SYMBOL()
Changes in v3: added *correct* EXPORT_SYMBOL()

  arch/x86/include/asm/dma-mapping.h | 28 ++--------------------------
  arch/x86/kernel/pci-dma.c          | 27 +++++++++++++++++++++++++++
  2 files changed, 29 insertions(+), 26 deletions(-)

diff --git a/arch/x86/include/asm/dma-mapping.h 
b/arch/x86/include/asm/dma-mapping.h
index 808dae6..6339320 100644
--- a/arch/x86/include/asm/dma-mapping.h
+++ b/arch/x86/include/asm/dma-mapping.h
@@ -127,33 +127,9 @@ static inline gfp_t dma_alloc_coherent_gfp_flags(struct 
device *dev, gfp_t gfp)

  #define dma_alloc_coherent(d,s,h,f)   dma_alloc_attrs(d,s,h,f,NULL)

-static inline void *
+void *
  dma_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle,
-               gfp_t gfp, struct dma_attrs *attrs)
-{
-       struct dma_map_ops *ops = get_dma_ops(dev);
-       void *memory;
-
-       gfp &= ~(__GFP_DMA | __GFP_HIGHMEM | __GFP_DMA32);
-
-       if (dma_alloc_from_coherent(dev, size, dma_handle, &memory))
-               return memory;
-
-       if (!dev)
-               dev = &x86_dma_fallback_dev;
-
-       if (!is_device_dma_capable(dev))
-               return NULL;
-
-       if (!ops->alloc)
-               return NULL;
-
-       memory = ops->alloc(dev, size, dma_handle,
-                           dma_alloc_coherent_gfp_flags(dev, gfp), attrs);
-       debug_dma_alloc_coherent(dev, size, *dma_handle, memory);
-
-       return memory;
-}
+               gfp_t gfp, struct dma_attrs *attrs);

  #define dma_free_coherent(d,s,c,h) dma_free_attrs(d,s,c,h,NULL)

diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
index a25e202..74e2f6a 100644
--- a/arch/x86/kernel/pci-dma.c
+++ b/arch/x86/kernel/pci-dma.c
@@ -140,6 +140,34 @@ void dma_generic_free_coherent(struct device *dev, size_t 
size, void *vaddr,
                free_pages((unsigned long)vaddr, get_order(size));
  }

+void *dma_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle,
+                     gfp_t gfp, struct dma_attrs *attrs)
+{
+       struct dma_map_ops *ops = get_dma_ops(dev);
+       void *memory;
+
+       gfp &= ~(__GFP_DMA | __GFP_HIGHMEM | __GFP_DMA32);
+
+       if (dma_alloc_from_coherent(dev, size, dma_handle, &memory))
+               return memory;
+
+       if (!dev)
+               dev = &x86_dma_fallback_dev;
+
+       if (!is_device_dma_capable(dev))
+               return NULL;
+
+       if (!ops->alloc)
+               return NULL;
+
+       memory = ops->alloc(dev, size, dma_handle,
+                           dma_alloc_coherent_gfp_flags(dev, gfp), attrs);
+       debug_dma_alloc_coherent(dev, size, *dma_handle, memory);
+
+       return memory;
+}
+EXPORT_SYMBOL(dma_alloc_attrs)
+
  /*
   * See <Documentation/x86/x86_64/boot-options.txt> for the iommu kernel
   * parameter documentation.

Less inlining, correct export symbol.
Ack.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to