Re: [PATCH 02/11] unpaged: private write VM_RESERVED

From: Dominik Brodowski (linux_at_dominikbrodowski.net)
Date: 11/17/05

  • Next message: Lee Revell: "Re: [linux-pm] [RFC] userland swsusp"
    Date:	Thu, 17 Nov 2005 21:46:17 +0100
    To: Dave Jones <davej@redhat.com>, Hugh Dickins <hugh@veritas.com>, Andrew Morton <akpm@osdl.org>, Nick Piggin <nickpiggin@yahoo.com.au>, linux-kernel@vger.kernel.org
    
    

    Hi!

    On Thu, Nov 17, 2005 at 02:41:02PM -0500, Dave Jones wrote:
    > On Thu, Nov 17, 2005 at 07:30:04PM +0000, Hugh Dickins wrote:
    > > The PageReserved removal in 2.6.15-rc1 issued a "deprecated" message
    > > when you tried to mmap or mprotect MAP_PRIVATE PROT_WRITE a VM_RESERVED,
    > > and failed with -EACCES: because do_wp_page lacks the refinement to COW
    > > pages in those areas, nor do we expect to find anonymous pages in them;
    > > and it seemed just bloat to add code for handling such a peculiar case.
    > > But immediately it caused vbetool and ddcprobe (using lrmi) to fail.
    > >
    > > So revert the "deprecated" messages, letting mmap and mprotect succeed.
    > > But leave do_wp_page's BUG_ON(vma->vm_flags & VM_RESERVED) in place
    > > until we've added the code to do it right: so this particular patch is
    > > only good if the app doesn't really need to write to that private area.
    > >
    > > Dave Jones has changed vbetool & ddcprobe to use MAP_SHARED or PROT_READ
    > > just as well, but we don't want to force people to update their tools.
    >
    > Actually Dave Miller did the detective work on that one, I just
    > rebuilt some packages, and spread the good word :)

    My Samsung X05 requires vbetool to resume from suspend-to-ram properly. Up
    to 2.6.14, vbetool-0.3 worked fine; the PageReserved patch broke this (as
    reported). Also the new package by Dave {Miller,Jones} didn't help and does
    not help, even with these new 11 patches. Using the unmodified, original
    vbetool-0.3, though, does work as expected, and I can resume back into X
    again.

    kernel vbetool-0.3 vbetool-0.3+lrmi-patch
    --------------------------------------------------------------
    2.6.14 + ?
    2.6.15-rc1 - -
    2.6.15-rc1+patches + -

    However -- and this is the first time I'm experiencing this bug, I now got
    this in my dmesg right after the last resume from sleep.

    [4294994.302000] Restarting tasks... done
    [4295188.230000] Bad page state at free_hot_cold_page (in process 'gaim', page c15eb020)
    [4295188.230000] flags:0x80000414 mapping:00000000 mapcount:0 count:0
    [4295188.230000] flags:0x80000414 mapping:00000000 mapcount:0 count:0
    [4295188.230000] Backtrace:
    [4295188.230000] [<c0103b59>] dump_stack+0x15/0x17
    [4295188.230000] [<c0138f99>] bad_page+0x5b/0x92
    [4295188.230000] [<c013967b>] free_hot_cold_page+0x5c/0xfe
    [4295188.230000] [<c0139727>] free_hot_page+0xa/0xc
    [4295188.230000] [<c013eff0>] __page_cache_release+0x8f/0x94
    [4295188.230000] [<c013ecd3>] put_page+0x5b/0x5d
    [4295188.230000] [<c0148d69>] free_page_and_swap_cache+0x2c/0x2f
    [4295188.230000] [<c0142609>] zap_pte_range+0x1a1/0x214
    [4295188.230000] [<c014271a>] unmap_page_range+0x9e/0xe8
    [4295188.230000] [<c0142827>] unmap_vmas+0xc3/0x199
    [4295188.230000] [<c0145cf7>] unmap_region+0x77/0xf2
    [4295188.230000] [<c0145f91>] do_munmap+0xdd/0xf3
    [4295188.230000] [<c0145ff6>] sys_munmap+0x4f/0x68
    [4295188.230000] [<c0102cab>] sysenter_past_esp+0x54/0x75
    [4295188.230000] Trying to fix it up, but a reboot is needed
    [4295188.230000] Bad page state at free_hot_cold_page (in process 'gaim', page c15eb040)
    [4295188.230000] flags:0x80000414 mapping:00000000 mapcount:0 count:0
    [4295188.230000] Backtrace:
    [4295188.230000] [<c0103b59>] dump_stack+0x15/0x17
    [4295188.230000] [<c0138f99>] bad_page+0x5b/0x92
    [4295188.230000] [<c013967b>] free_hot_cold_page+0x5c/0xfe
    [4295188.230000] [<c0139727>] free_hot_page+0xa/0xc
    [4295188.230000] [<c013eff0>] __page_cache_release+0x8f/0x94
    [4295188.230000] [<c013ecd3>] put_page+0x5b/0x5d
    [4295188.230000] [<c0148d69>] free_page_and_swap_cache+0x2c/0x2f
    [4295188.230000] [<c0142609>] zap_pte_range+0x1a1/0x214
    [4295188.230000] [<c014271a>] unmap_page_range+0x9e/0xe8
    [4295188.230000] [<c0142827>] unmap_vmas+0xc3/0x199
    [4295188.230000] [<c0145cf7>] unmap_region+0x77/0xf2
    [4295188.230000] [<c0145f91>] do_munmap+0xdd/0xf3
    [4295188.230000] [<c0145ff6>] sys_munmap+0x4f/0x68
    [4295188.230000] [<c0102cab>] sysenter_past_esp+0x54/0x75
    [4295188.230000] Trying to fix it up, but a reboot is needed
    [4295188.230000] Bad page state at free_hot_cold_page (in process 'gaim', page c15eb060)
    [4295188.230000] flags:0x80000414 mapping:00000000 mapcount:0 count:0
    [4295188.230000] Backtrace:
    [4295188.230000] [<c0103b59>] dump_stack+0x15/0x17
    [4295188.230000] [<c0138f99>] bad_page+0x5b/0x92
    [4295188.230000] [<c013967b>] free_hot_cold_page+0x5c/0xfe
    [4295188.230000] [<c0139727>] free_hot_page+0xa/0xc
    [4295188.230000] [<c013eff0>] __page_cache_release+0x8f/0x94
    [4295188.231000] [<c013ecd3>] put_page+0x5b/0x5d

    ... and so on. Don't know whether this is related... and it isn't
    reproducible.

            Dominik
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/


  • Next message: Lee Revell: "Re: [linux-pm] [RFC] userland swsusp"