From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751238AbbCYFFI (ORCPT ); Wed, 25 Mar 2015 01:05:08 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:24949 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750802AbbCYFFD (ORCPT ); Wed, 25 Mar 2015 01:05:03 -0400 X-AuditID: cbfee690-f79ab6d0000046f7-79-551241fd8382 Message-id: <5512421D.4000603@samsung.com> Date: Wed, 25 Mar 2015 14:05:33 +0900 From: Heesub Shin User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-version: 1.0 To: Sergey Senozhatsky , Andrew Morton , Minchan Kim Cc: Nitin Gupta , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Sergey Senozhatsky , sunae.seo@samsung.com, cmlaika.kim@samsung.com Subject: Re: [PATCH 1/2] zsmalloc: do not remap dst page while prepare next src page References: <1427210687-6634-1-git-send-email-sergey.senozhatsky@gmail.com> <1427210687-6634-2-git-send-email-sergey.senozhatsky@gmail.com> In-reply-to: <1427210687-6634-2-git-send-email-sergey.senozhatsky@gmail.com> Content-type: text/plain; charset=windows-1252 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrPIsWRmVeSWpSXmKPExsVy+t8zLd2/jkKhBl/OiVvMWb+GzWLlvHNs Fi8PaVocnL2EyeLyrjlsFvfW/Ge1WPb1PbvFhpZZ7BaPJkxislj7+TG7RePud2wO3B47Z91l 99i0qpPNY9OnSeweJ2b8ZvHo27KK0WPnp82sHp83yQWwR3HZpKTmZJalFunbJXBl9F9ezVjQ zFOxbvI71gbGx5xdjJwcEgImEvdanrFD2GISF+6tZ+ti5OIQEljGKDHt4G12mKLGk32MEInp jBKbzj2Gch4ySjy9tgSoioODV0BLYsZUHpAGFgFVib7tXUwgYTYBbYlD24JBwqICERIfVn1l A7F5BQQlfky+xwIyRkSghVFi27xVYDOZBQ4zSrzYvJkZpEpYIEziyK52FhBbSKCXUWLJBXcQ m1PAR+J39xJWkAXMAnoS9y9qgYSZBeQlNq95ywwyR0KglUPi6r6NzBAHCUh8m3yIBaReQkBW YtMBZojHJCUOrrjBMoFRbBaSm2YhTJ2FZOoCRuZVjKKpBckFxUnpRSZ6xYm5xaV56XrJ+bmb GCHxOmEH470D1ocYBTgYlXh4PUSEQoVYE8uKK3MPMZoCHTGRWUo0OR+YFPJK4g2NzYwsTE1M jY3MLc2UxHlfS/0MFhJITyxJzU5NLUgtii8qzUktPsTIxMEp1cBY2DDh9IoJQpkPfm0Rd8xd 6Hhwdreo+hYZ35KDUkuNv6RXPbxj2HegwGSnAIenwwlZhqKZGq86xF+93HGyRtLvvWbUz2fT NZqFRKvKNs3PX5q1c8obZQ27uszQ4w8zS4/I5m285st7fpdTS5mXfq2U81zNYp4jauuOiT9y ehulcUCT77wI12olluKMREMt5qLiRAC3zg3P0gIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupkleLIzCtJLcpLzFFi42I5/e+xoO5fR6FQg3lfhSzmrF/DZrFy3jk2 i5eHNC0Ozl7CZHF51xw2i3tr/rNaLPv6nt1iQ8ssdotHEyYxWaz9/JjdonH3OzYHbo+ds+6y e2xa1cnmsenTJHaPEzN+s3j0bVnF6LHz02ZWj8+b5ALYoxoYbTJSE1NSixRS85LzUzLz0m2V vIPjneNNzQwMdQ0tLcyVFPISc1NtlVx8AnTdMnOAjlRSKEvMKQUKBSQWFyvp22GaEBripmsB 0xih6xsSBNdjZIAGEtYxZvRfXs1Y0MxTsW7yO9YGxsecXYycHBICJhKNJ/sYIWwxiQv31rN1 MXJxCAlMZ5TYdO4xI4TzkFHi6bUl7F2MHBy8AloSM6bygDSwCKhK9G3vYgIJswloSxzaFgwS FhWIkPiw6isbiM0rICjxY/I9FpAxIgItjBLb5q0Cm8kscJhR4sXmzcwgVcICYRJHdrWzgNhC Ar2MEksuuIPYnAI+Er+7l7CCLGAW0JO4f1ELJMwsIC+xec1b5gmMArOQ7JiFUDULSdUCRuZV jKKpBckFxUnpuUZ6xYm5xaV56XrJ+bmbGMHJ4Jn0DsZVDRaHGAU4GJV4eD1EhEKFWBPLiitz DzFKcDArifAaSACFeFMSK6tSi/Lji0pzUosPMZoCA2Ais5Rocj4wUeWVxBsam5gZWRqZGZuY GxsrifMq2beFCAmkJ5akZqemFqQWwfQxcXBKNTAmuU23TPOU4Xj4e9P7rte5potWp16YkbLn ZMuOV51uU6Utqh3Dzvguitt81tsww51f6MLTbxf9KjUORXonVE9fF31rkhnndi7miUcaz1v8 cji9fq3SpJzD1Wwvvzx6v/g646p3jyT439ScSbq04//0eQ6Gp1Tm/dVQW3z5cveKh9c1v32Z Ub/mnxJLcUaioRZzUXEiAIgc9NccAwAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, On 03/25/2015 12:24 AM, Sergey Senozhatsky wrote: > object may belong to different pages. zs_object_copy() handles > this case and maps a new source page (get_next_page() and > kmap_atomic()) when object crosses boundaries of the current > source page. But it also performs unnecessary kunmap/kmap_atomic > of the destination page (it remains unchanged), which can be > avoided. No, it's not unnecessary. We should do kunmap_atomic() in the reverse order of kmap_atomic(), so unfortunately it's inevitable to kunmap_atomic() both on d_addr and s_addr. > > Signed-off-by: Sergey Senozhatsky > --- > mm/zsmalloc.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c > index d920e8b..7af4456 100644 > --- a/mm/zsmalloc.c > +++ b/mm/zsmalloc.c > @@ -1536,12 +1536,10 @@ static void zs_object_copy(unsigned long src, unsigned long dst, > break; > > if (s_off + size >= PAGE_SIZE) { > - kunmap_atomic(d_addr); > kunmap_atomic(s_addr); Removing kunmap_atomic(d_addr) here may cause BUG_ON() at __kunmap_atomic(). I tried yours to see it really happens: > kernel BUG at arch/arm/mm/highmem.c:113! > Internal error: Oops - BUG: 0 [#1] SMP ARM > Modules linked in: > CPU: 2 PID: 1774 Comm: bash Not tainted 4.0.0-rc2-mm1+ #105 > Hardware name: ARM-Versatile Express > task: ee971300 ti: e8a26000 task.ti: e8a26000 > PC is at __kunmap_atomic+0x144/0x14c > LR is at zs_object_copy+0x19c/0x2dc regards heesub