All of lore.kernel.org
 help / color / mirror / Atom feed
From: Minchan Kim <minchan.kim@gmail.com>
To: Christoph Lameter <cl@linux-foundation.org>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Milton Miller <miltonm@bga.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Russell King <linux@arm.linux.org.uk>, Mel Gorman <mel@csn.ul.ie>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Kukjin Kim <kgene.kim@samsung.com>
Subject: Re: [PATCH] Tight check of pfn_valid on sparsemem - v4
Date: Thu, 29 Jul 2010 00:56:17 +0900	[thread overview]
Message-ID: <20100728155617.GA5401@barrios-desktop> (raw)
In-Reply-To: <alpine.DEB.2.00.1007281005440.21717@router.home>

On Wed, Jul 28, 2010 at 10:14:51AM -0500, Christoph Lameter wrote:
> On Wed, 28 Jul 2010, Minchan Kim wrote:
> 
> > static inline int memmap_valid(unsigned long pfn)
> > {
> >        struct page *page = pfn_to_page(pfn);
> >        struct page *__pg = virt_to_page(page);
> 
> Does that work both for vmemmap and real mmapping?

When Kame suggested this idea, he doesn't consider vmemmap model. 
(He prevent this featur's enabling by config !SPARSEMEM_VMEMMAP)

config SPARSEMEM_HAS_HOLE
       bool "allow holes in sparsemem's memmap"
       depends on ARM && SPARSEMEM && !SPARSEMEM_VMEMMAP
       default n

When I change it with ARCH_HAS_HOLES_MEMORYMODEL, it was my mistake.
I can change it with ARCH_HAS_HOLES_MEMORYMODEL && !SPARSE_VMEMMAP. 

I wonder whether we supports VMEMMAP. 
That's because hole problem of sparsemem is specific on ARM. 
ARM forks uses it for saving memory space but VMEMMAP does use more memory.
I think it's irony. 

> 
> >        return page_private(__pg) == MAGIC_MEMMAP && PageReserved(__pg);
> > }
> 
> Problem is that pages may be allocated for the mmap from a variety of
> places. The pages in mmap_init_zone() and allocated during boot may have
> PageReserved set whereas the page allocated via vmemmap_alloc_block() have
> PageReserved cleared since they came from the page allocator.
> 
> You need to have consistent use of PageReserved in page structs for the
> mmap in order to do this properly.

Yes if we supports both model. 

> 
> Simplest scheme would be to clear PageReserved() in all page struct
> associated with valid pages and clear those for page structs that do not
> refer to valid pages.

I can't understand your words.
Clear PG_resereved in valid pages and invalid pages both?

I guess your code look like that clear PG_revered on valid memmap
but set PG_reserved on invalid memmap.
Right?

invalid memmap pages will be freed by free_memmap and will be used 
on any place. How do we make sure it has PG_reserved?

Maybe I don't understand your point. 


> 
> Then
> 
> mmap_valid = !PageReserved(xxx(pfn_to_page(pfn))

-- 
Kind regards,
Minchan Kim

WARNING: multiple messages have this Message-ID (diff)
From: Minchan Kim <minchan.kim@gmail.com>
To: Christoph Lameter <cl@linux-foundation.org>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Milton Miller <miltonm@bga.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Russell King <linux@arm.linux.org.uk>, Mel Gorman <mel@csn.ul.ie>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Kukjin Kim <kgene.kim@samsung.com>
Subject: Re: [PATCH] Tight check of pfn_valid on sparsemem - v4
Date: Thu, 29 Jul 2010 00:56:17 +0900	[thread overview]
Message-ID: <20100728155617.GA5401@barrios-desktop> (raw)
In-Reply-To: <alpine.DEB.2.00.1007281005440.21717@router.home>

On Wed, Jul 28, 2010 at 10:14:51AM -0500, Christoph Lameter wrote:
> On Wed, 28 Jul 2010, Minchan Kim wrote:
> 
> > static inline int memmap_valid(unsigned long pfn)
> > {
> >        struct page *page = pfn_to_page(pfn);
> >        struct page *__pg = virt_to_page(page);
> 
> Does that work both for vmemmap and real mmapping?

When Kame suggested this idea, he doesn't consider vmemmap model. 
(He prevent this featur's enabling by config !SPARSEMEM_VMEMMAP)

config SPARSEMEM_HAS_HOLE
       bool "allow holes in sparsemem's memmap"
       depends on ARM && SPARSEMEM && !SPARSEMEM_VMEMMAP
       default n

When I change it with ARCH_HAS_HOLES_MEMORYMODEL, it was my mistake.
I can change it with ARCH_HAS_HOLES_MEMORYMODEL && !SPARSE_VMEMMAP. 

I wonder whether we supports VMEMMAP. 
That's because hole problem of sparsemem is specific on ARM. 
ARM forks uses it for saving memory space but VMEMMAP does use more memory.
I think it's irony. 

> 
> >        return page_private(__pg) == MAGIC_MEMMAP && PageReserved(__pg);
> > }
> 
> Problem is that pages may be allocated for the mmap from a variety of
> places. The pages in mmap_init_zone() and allocated during boot may have
> PageReserved set whereas the page allocated via vmemmap_alloc_block() have
> PageReserved cleared since they came from the page allocator.
> 
> You need to have consistent use of PageReserved in page structs for the
> mmap in order to do this properly.

Yes if we supports both model. 

> 
> Simplest scheme would be to clear PageReserved() in all page struct
> associated with valid pages and clear those for page structs that do not
> refer to valid pages.

I can't understand your words.
Clear PG_resereved in valid pages and invalid pages both?

I guess your code look like that clear PG_revered on valid memmap
but set PG_reserved on invalid memmap.
Right?

invalid memmap pages will be freed by free_memmap and will be used 
on any place. How do we make sure it has PG_reserved?

Maybe I don't understand your point. 


> 
> Then
> 
> mmap_valid = !PageReserved(xxx(pfn_to_page(pfn))

-- 
Kind regards,
Minchan Kim

--
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/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2010-07-28 15:56 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-26 15:46 [PATCH] Tight check of pfn_valid on sparsemem - v4 Minchan Kim
2010-07-26 15:46 ` Minchan Kim
2010-07-26 15:46 ` Minchan Kim
2010-07-26 16:40 ` Christoph Lameter
2010-07-26 16:40   ` Christoph Lameter
2010-07-26 16:40   ` Christoph Lameter
2010-07-26 22:47   ` Minchan Kim
2010-07-26 22:47     ` Minchan Kim
2010-07-26 22:47     ` Minchan Kim
2010-07-27  5:55   ` miltonm
2010-07-27  5:55     ` miltonm
2010-07-27  6:11     ` Minchan Kim
2010-07-27  8:12       ` Milton Miller
2010-07-27  8:12         ` Milton Miller
2010-07-27  8:13         ` KAMEZAWA Hiroyuki
2010-07-27  8:13           ` KAMEZAWA Hiroyuki
2010-07-27 10:01           ` Minchan Kim
2010-07-27 10:01             ` Minchan Kim
2010-07-27 14:34             ` Christoph Lameter
2010-07-27 14:34               ` Christoph Lameter
2010-07-27 22:33               ` Minchan Kim
2010-07-27 22:33                 ` Minchan Kim
2010-07-28 15:14                 ` Christoph Lameter
2010-07-28 15:14                   ` Christoph Lameter
2010-07-28 15:56                   ` Minchan Kim [this message]
2010-07-28 15:56                     ` Minchan Kim
2010-07-28 17:02                     ` Christoph Lameter
2010-07-28 17:02                       ` Christoph Lameter
2010-07-28 22:57                       ` Minchan Kim
2010-07-28 22:57                         ` Minchan Kim
2010-07-29 15:46                         ` Christoph Lameter
2010-07-29 15:46                           ` Christoph Lameter
2010-07-29 16:18                           ` Minchan Kim
2010-07-29 16:18                             ` Minchan Kim
2010-07-29 16:47                             ` Christoph Lameter
2010-07-29 16:47                               ` Christoph Lameter
2010-07-29 17:03                               ` Minchan Kim
2010-07-29 17:03                                 ` Minchan Kim
2010-07-29 17:30                                 ` Christoph Lameter
2010-07-29 17:30                                   ` Christoph Lameter
2010-07-29 18:33                                   ` Russell King - ARM Linux
2010-07-29 18:33                                     ` Russell King - ARM Linux
2010-07-29 19:55                                     ` Christoph Lameter
2010-07-29 19:55                                       ` Christoph Lameter
2010-07-29 21:13                                       ` Russell King - ARM Linux
2010-07-29 21:13                                         ` Russell King - ARM Linux
2010-07-29 20:55                                     ` Dave Hansen
2010-07-29 20:55                                       ` Dave Hansen
2010-07-29 22:14                                       ` Russell King - ARM Linux
2010-07-29 22:14                                         ` Russell King - ARM Linux
2010-07-29 22:28                                         ` Christoph Lameter
2010-07-29 22:28                                           ` Christoph Lameter
2010-07-30  0:38                                         ` Dave Hansen
2010-07-30  0:38                                           ` Dave Hansen
2010-07-30  9:43                                           ` Minchan Kim
2010-07-30  9:43                                             ` Minchan Kim
2010-07-30 12:48                                           ` Christoph Lameter
2010-07-30 12:48                                             ` Christoph Lameter
2010-07-30 15:43                                             ` Dave Hansen
2010-07-30 15:43                                               ` Dave Hansen
2010-07-31 15:30                                             ` Russell King - ARM Linux
2010-07-31 15:30                                               ` Russell King - ARM Linux
2010-08-02 15:48                                               ` Christoph Lameter
2010-08-02 15:48                                                 ` Christoph Lameter
2010-07-30  9:32                                       ` Minchan Kim
2010-07-30  9:32                                         ` Minchan Kim
2010-07-31 10:38                                         ` Russell King - ARM Linux
2010-07-31 10:38                                           ` Russell King - ARM Linux
2010-08-11 15:31                                           ` Dave Hansen
2010-08-11 15:31                                             ` Dave Hansen
2010-07-27  9:56         ` Minchan Kim
2010-07-27  9:56           ` Minchan Kim

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=20100728155617.GA5401@barrios-desktop \
    --to=minchan.kim@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kgene.kim@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mel@csn.ul.ie \
    --cc=miltonm@bga.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.