Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752905AbbDFTVX (ORCPT ); Mon, 6 Apr 2015 15:21:23 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44984 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751945AbbDFTVU (ORCPT ); Mon, 6 Apr 2015 15:21:20 -0400 Message-ID: <5522DC80.9050807@redhat.com> Date: Mon, 06 Apr 2015 15:20:32 -0400 From: Don Dutile User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.8.0 MIME-Version: 1.0 To: Denys Vlasenko , linux-kernel@vger.kernel.org CC: Marek Szyprowski , Konrad Rzeszutek Wilk , David Woodhouse , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Andi Kleen , x86@kernel.org Subject: Re: [PATCH v3] x86: deinline dma_alloc_attrs() References: <1428347421-11432-1-git-send-email-dvlasenk@redhat.com> In-Reply-To: <1428347421-11432-1-git-send-email-dvlasenk@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3731 Lines: 115 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 > Cc: Marek Szyprowski > Cc: Konrad Rzeszutek Wilk > Cc: David Woodhouse > Cc: Don Dutile > Cc: Thomas Gleixner > Cc: Ingo Molnar > Cc: "H. Peter Anvin" > Cc: Andi Kleen > Cc: x86@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 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 majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/