From: Marek Szyprowski <m.szyprowski@samsung.com>
To: 'Michal Nazarewicz' <mina86@mina86.com>,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-media@vger.kernel.org, linux-mm@kvack.org,
linaro-mm-sig@lists.linaro.org
Cc: 'Kyungmin Park' <kyungmin.park@samsung.com>,
'Russell King' <linux@arm.linux.org.uk>,
'Andrew Morton' <akpm@linux-foundation.org>,
'KAMEZAWA Hiroyuki' <kamezawa.hiroyu@jp.fujitsu.com>,
'Daniel Walker' <dwalker@codeaurora.org>,
'Mel Gorman' <mel@csn.ul.ie>, 'Arnd Bergmann' <arnd@arndb.de>,
'Jesse Barker' <jesse.barker@linaro.org>,
'Jonathan Corbet' <corbet@lwn.net>,
'Shariq Hasnain' <shariq.hasnain@linaro.org>,
'Chunsang Jeong' <chunsang.jeong@linaro.org>,
'Dave Hansen' <dave@linux.vnet.ibm.com>,
'Benjamin Gaignard' <benjamin.gaignard@linaro.org>
Subject: RE: [PATCH 01/11] mm: page_alloc: set_migratetype_isolate: drain PCP prior to isolating
Date: Thu, 05 Jan 2012 20:20:33 +0100 [thread overview]
Message-ID: <000601cccbdf$18a87320$49f95960$%szyprowski@samsung.com> (raw)
In-Reply-To: <op.v7ma4hm33l0zgt@mpn-glaptop>
Hello,
On Thursday, January 05, 2012 4:40 PM Michał Nazarewicz wrote:
> On Thu, 29 Dec 2011 13:39:02 +0100, Marek Szyprowski <m.szyprowski@samsung.com> wrote:
> > From: Michal Nazarewicz <mina86@mina86.com>
> >
> > When set_migratetype_isolate() sets pageblock's migrate type, it does
> > not change each page_private data. This makes sense, as the function
> > has no way of knowing what kind of information page_private stores.
> >
> > Unfortunately, if a page is on PCP list, it's page_private indicates
> > its migrate type. This means, that if a page on PCP list gets
> > isolated, a call to free_pcppages_bulk() will assume it has the old
> > migrate type rather than MIGRATE_ISOLATE. This means, that a page
> > which should be isolated, will end up on a free list of it's old
> > migrate type.
> >
> > Coincidentally, at the very end, set_migratetype_isolate() calls
> > drain_all_pages() which leads to calling free_pcppages_bulk(), which
> > does the wrong thing.
> >
> > To avoid this situation, this commit moves the draining prior to
> > setting pageblock's migratetype and moving pages from old free list to
> > MIGRATETYPE_ISOLATE's free list.
> >
> > Because of spin locks this is a non-trivial change however as both
> > set_migratetype_isolate() and free_pcppages_bulk() grab zone->lock.
> > To solve this problem, this commit renames free_pcppages_bulk() to
> > __free_pcppages_bulk() and changes it so that it no longer grabs
> > zone->lock instead requiring caller to hold it. This commit later
> > adds a __zone_drain_all_pages() function which works just like
> > drain_all_pages() expects that it drains only pages from a single zone
> > and assumes that caller holds zone->lock.
>
> As it turns out, with some more testing on SMP systems, this whole patch
> turned out to be incorrect.
>
> We have been thinking about other approach and, if we were to use something
> else then the first patch from CMAv17[1], the best thing we could came up
> with was to unconditionally call drain_all_pages() at the beginning of
> set_migratetype_isolate() before the call to spin_lock_irqsave(). It has
> a possible race condition but a nightly stress test did have not shown any
> problems.
>
> Nonetheless, the cleanest, in my opinion, solution is to use the first patch
> from CMAv17 which can be found at [1].
>
> So, to sum up: if you intend to test CMAv18, instead of applying this first
> patch either use first patch from CMAv17[1] or put an unconditional call to
> drain_all_pages() at the beginning of set_migrate_isolate() function.
>
> Sorry for the troubles.
>
> [1] http://www.spinics.net/lists/arm-kernel/msg148494.html
I've updated our public git repository to include this workaround. You can
pull the patches from the following addresses:
git://git.infradead.org/users/kmpark/linux-samsung 3.2-rc7-cma-v18
http://git.infradead.org/users/kmpark/linux-samsung/shortlog/refs/heads/3.2-rc7-cma-v18
Best regards
--
Marek Szyprowski
Samsung Poland R&D Center
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2012-01-05 19:20 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-29 12:39 [PATCHv18 0/11] Contiguous Memory Allocator Marek Szyprowski
2011-12-29 12:39 ` [PATCH 01/11] mm: page_alloc: set_migratetype_isolate: drain PCP prior to isolating Marek Szyprowski
2012-01-01 7:49 ` Gilad Ben-Yossef
2012-01-01 15:54 ` Michal Nazarewicz
2012-01-01 16:06 ` Gilad Ben-Yossef
2012-01-01 18:52 ` Michal Nazarewicz
2012-01-05 15:39 ` Michal Nazarewicz
2012-01-05 19:20 ` Marek Szyprowski [this message]
2011-12-29 12:39 ` [PATCH 02/11] mm: compaction: introduce isolate_{free,migrate}pages_range() Marek Szyprowski
2012-01-10 13:43 ` Mel Gorman
2012-01-10 15:04 ` Michal Nazarewicz
2011-12-29 12:39 ` [PATCH 03/11] mm: compaction: export some of the functions Marek Szyprowski
2011-12-29 12:39 ` [PATCH 04/11] mm: page_alloc: introduce alloc_contig_range() Marek Szyprowski
2012-01-10 14:16 ` Mel Gorman
2012-01-13 20:04 ` Michal Nazarewicz
2012-01-16 9:01 ` Mel Gorman
2012-01-16 12:48 ` Michal Nazarewicz
2012-01-17 21:54 ` [Linaro-mm-sig] " sandeep patil
2012-01-17 22:19 ` Michal Nazarewicz
2012-01-18 0:46 ` sandeep patil
2012-01-18 1:44 ` Michal Nazarewicz
2012-01-19 7:36 ` Marek Szyprowski
2011-12-29 12:39 ` [PATCH 05/11] mm: mmzone: MIGRATE_CMA migration type added Marek Szyprowski
2012-01-10 14:38 ` Mel Gorman
2012-01-10 15:04 ` Michal Nazarewicz
2011-12-29 12:39 ` [PATCH 06/11] mm: page_isolation: MIGRATE_CMA isolation functions added Marek Szyprowski
2011-12-29 12:39 ` [PATCH 07/11] mm: add optional memory reclaim in split_free_page() Marek Szyprowski
2012-01-10 14:45 ` Mel Gorman
2011-12-29 12:39 ` [PATCH 08/11] drivers: add Contiguous Memory Allocator Marek Szyprowski
2011-12-29 12:39 ` [PATCH 09/11] X86: integrate CMA with DMA-mapping subsystem Marek Szyprowski
2011-12-29 12:39 ` [PATCH 10/11] ARM: " Marek Szyprowski
2011-12-29 12:39 ` [PATCH 11/11] ARM: Samsung: use CMA for 2 memory banks for s5p-mfc device Marek Szyprowski
2012-01-10 8:42 ` [PATCHv18 0/11] Contiguous Memory Allocator Marek Szyprowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='000601cccbdf$18a87320$49f95960$%szyprowski@samsung.com' \
--to=m.szyprowski@samsung.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=benjamin.gaignard@linaro.org \
--cc=chunsang.jeong@linaro.org \
--cc=corbet@lwn.net \
--cc=dave@linux.vnet.ibm.com \
--cc=dwalker@codeaurora.org \
--cc=jesse.barker@linaro.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=kyungmin.park@samsung.com \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux@arm.linux.org.uk \
--cc=mel@csn.ul.ie \
--cc=mina86@mina86.com \
--cc=shariq.hasnain@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox