Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751835AbdHAH6O (ORCPT ); Tue, 1 Aug 2017 03:58:14 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:38031 "EHLO mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751166AbdHAH6M (ORCPT ); Tue, 1 Aug 2017 03:58:12 -0400 X-AuditID: cbfec7f1-f796e6d00000116b-95-598034912884 Subject: Re: [PATCH] dma-mapping: Reduce dma_mapping_error() inline bloat To: Robin Murphy , hch@lst.de Cc: linux-kernel@vger.kernel.org From: Marek Szyprowski Message-id: <200b5187-e162-2bc3-7c04-268ae4fcbd61@samsung.com> Date: Tue, 01 Aug 2017 09:58:07 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-version: 1.0 In-reply-to: <6a23eacf6603e75e995f8720c24b54c4fc2926f5.1500917215.git.robin.murphy@arm.com> Content-type: text/plain; charset=utf-8; format=flowed Content-transfer-encoding: 7bit Content-language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupileLIzCtJLcpLzFFi42LZduznOd2JJg2RBtt7NS1Wrj7KZHF51xw2 i4MfnrA6MHusmbeG0WP3zQY2j8+b5AKYo7hsUlJzMstSi/TtErgy7nZ9ZyuYwFfx+98ytgbG vdxdjJwcEgImEtcaJrBC2GISF+6tZ+ti5OIQEljKKLHr8wJmCOczo8TUvVNZYTo6Lr+GqlrG KLHq/QNGCOc5o8TKzb+YQaqEBTwlTq1YB2aLCBhLXPl1iwnEZhZQkPh1bxPYJDYBQ4mut11s IDavgJ3E8v/7geIcHCwCqhIb7vqDhEUFYiTmLmhhhygRlPgx+R4LiM0pECux9+AkNoiRVhLP /rWyQtjyEpvXvGWGsMUlmltvsoDcJiHQzi7xYvtOsPkSArISmw4wQzzjInHjYAcjhC0s8er4 FnYIW0bi8uRuFgi7n1GiqVUbwp7BKHHuLS+EbS1x+PhFqL18EpO2TWeGGM8r0dEmBFHiIdGy cyfUKkeJE9svs0KCah2jxP9HU5kmMCrMQvLaLCTvzELyziwk7yxgZFnFKJJaWpybnlpspFec mFtcmpeul5yfu4kRmEJO/zv+cQfj+xNWhxgFOBiVeHg7TOsjhVgTy4orcw8xSnAwK4nwrtBo iBTiTUmsrEotyo8vKs1JLT7EKM3BoiTOy3XqWoSQQHpiSWp2ampBahFMlomDU6qB0fneJI3p T80W5fzxUGdjVVwccXyf5ePU1VrGxUHP2RU9kvKmprnwvY3j9Zij9X1arGaMwv9g8RJObnYn 3jU/Cte1Ldf33DGRWz73z5mfPFpeKgq3NjDFLlz3jvf2etc6kaJJ+9rCeF6YH9r8ZqXFR8aS p8fVk++5nV8+XUr2IFPFDd7tPDkxSizFGYmGWsxFxYkA+n6sLh0DAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrNIsWRmVeSWpSXmKPExsVy+t/xK7oTTBoiDc6uN7RYufook8XlXXPY LA5+eMLqwOyxZt4aRo/dNxvYPD5vkgtgjnKzyUhNTEktUkjNS85PycxLt1UKDXHTtVBSyEvM TbVVitD1DQlSUihLzCkF8owM0ICDc4B7sJK+XYJbxt2u72wFE/gqfv9bxtbAuJe7i5GTQ0LA RKLj8ms2CFtM4sK99UA2F4eQwBJGieeLL0M5zxklbrybxARSJSzgKXFqxTpmEFtEwFjiyq9b YHFmAQWJX/c2sUI0bGCUaF7fwwiSYBMwlOh62wW2glfATmL5//1ARRwcLAKqEhvu+oOERQVi JK7NvMMKUSIo8WPyPRYQm1MgVmLByS3sEPPNJL68PMwKYctLbF7zlhnCFpdobr3JMoFRcBaS 9llIWmYhaZmFpGUBI8sqRpHU0uLc9NxiI73ixNzi0rx0veT83E2MwIjaduznlh2MXe+CDzEK cDAq8fA+MK+PFGJNLCuuzD3EKMHBrCTCu0KjIVKINyWxsiq1KD++qDQntfgQoynQbxOZpUST 84HRnlcSb2hiaG5paGRsYWFuZKQkzjv1w5VwIYH0xJLU7NTUgtQimD4mDk6pBkYL+R8GTLdZ 0oLMrn+O3lPdpepXvPeTaaueXvFe+8N7yjvqFi44YyJWddDYpPDHzqxAf55P3L138gt3bzHK +B2QdCbBUPDBCrZD0xik+kKO7jmUo82y92TPy9gGt5K0zpOFtW8sNjAwZWwLPHQ7gmnVi/9c nzT9U58ovEm5vkDlS0XilOeLFyixFGckGmoxFxUnAgA9D+DwvgIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170801075809eucas1p10e64ad5326348e9d83c8aabb01873991 X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRs=?= =?UTF-8?B?7IK87ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRtT?= =?UTF-8?B?YW1zdW5nIEVsZWN0cm9uaWNzG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTI=?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170724172940epcas4p4b06b8fd5c66a475e1f8be1361981a14b X-RootMTR: 20170724172940epcas4p4b06b8fd5c66a475e1f8be1361981a14b References: <6a23eacf6603e75e995f8720c24b54c4fc2926f5.1500917215.git.robin.murphy@arm.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1757 Lines: 49 Hi Robin, On 2017-07-24 19:29, Robin Murphy wrote: > Thanks to the nested inlining, all drivers correctly calling > dma_mapping_error() after a mapping a page or single buffer generate two > calls to get_arch_dma_ops() per callsite, which all adds up to a fair > old chunk of useless code, e.g. ~3KB for an arm64 defconfig plus extras: > > text data bss dec hex filename > 13051391 1503898 327768 14883057 e318f1 vmlinux.o.old > 13050751 1503898 327768 14882417 e31671 vmlinux.o.new > > Give the compiler a hand by making it clear we want the same ops. Reviewed-by: Marek Szyprowski Similar pattern is used in drivers/xen/swiotlb-xen.c for mmap and get_sgtable. This could be also fixed, although those are not used so frequently as dma_mapping_error. > Signed-off-by: Robin Murphy > --- > include/linux/dma-mapping.h | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h > index 843ab866e0f4..239e53d12ee8 100644 > --- a/include/linux/dma-mapping.h > +++ b/include/linux/dma-mapping.h > @@ -541,10 +541,11 @@ static inline void dma_free_noncoherent(struct device *dev, size_t size, > > static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) > { > - debug_dma_mapping_error(dev, dma_addr); > + const struct dma_map_ops *ops = get_dma_ops(dev); > > - if (get_dma_ops(dev)->mapping_error) > - return get_dma_ops(dev)->mapping_error(dev, dma_addr); > + debug_dma_mapping_error(dev, dma_addr); > + if (ops->mapping_error) > + return ops->mapping_error(dev, dma_addr); > return 0; > } > Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland