[lkml]   [2010]   [Jul]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] Tight check of pfn_valid on sparsemem - v4
    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)

    bool "allow holes in sparsemem's memmap"
    default n

    When I change it with ARCH_HAS_HOLES_MEMORYMODEL, it was my mistake.

    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.

    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

     \ /
      Last update: 2010-07-28 17:59    [W:0.024 / U:151.628 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site