linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] n_tty: use kmalloc() instead of vmalloc() to avoid crash on armada-xp
Date: Thu, 12 Mar 2015 12:59:11 +0000	[thread overview]
Message-ID: <20150312125910.GN8656@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <550187A4.8010704@hurleysoftware.com>

On Thu, Mar 12, 2015 at 08:33:40AM -0400, Peter Hurley wrote:
> On 03/11/2015 10:24 AM, Stas Sergeev wrote:
> > However, while testing, I've suddenly got another crash happened
> > a bit earlier than the previous one used to happen: (OOM? How??)
> > ---
> > [    0.000000] Booting Linux on physical CPU 0x0
> > [    0.000000] Linux version 4.0.0-rc2-00137-gb672c98-dirty
> > (root at host-010-117) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) )
> > #2 SMP 5
> > [    0.000000] CPU: ARMv7 Processor [562f5842] revision 2 (ARMv7),
> > cr=10c5387d
> > [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction
> > cache
> > [    0.000000] Machine model: Marvell Armada XP Development Board
> > DB-MV784MP-GP
> > [    0.000000] Ignoring memory block 0x100000000 - 0x200000000
> 
> Once you patch your bootloader, you'll want to configure your kernel
> for CONFIG_ARM_LPAE=y to enable the high 4GB of memory you have, as
> it's being ignored in this config right now (as shown above and in
> the oom message below).

The OOM is happening during boot.  During boot, there is 760MB of lowmem
free initially, along with a few gigabytes of highmem.

If we look at the buddy state:

[    7.220815] Normal: 2*4kB (UR) 17*8kB (UR) 0*16kB 0*32kB 0*64kB
0*128kB 1*256kB (R) 0*512kB 1*1024kB (R) 1*2048kB (R) 0*4096kB = 3472kB
[    7.233210] HighMem: 0*4kB 1*8kB (M) 0*16kB 0*32kB 0*64kB 0*128kB
2*256kB (UM) 1*512kB (M) 1*1024kB (M) 1*2048kB (M) 767*4096kB (MR) = 3B

we can see that most of lowmem is in the reserve migration type, and
some is also in the unmovable type.  3MB of reserved lowmem for atomic
allocations is about what I'd expect given the memory sizes.

Highmem has some memory in the movable migratation type, but the bulk
is in the reserve migration type - but this is irrelevant as you'll
see from the next bit of information:

[    6.818183] swapper/0 invoked oom-killer: gfp_mask=0x2040d0, order=0,
oom_score_adj=0

Let's decode that gfp_mask.

	___GFP_NOTRACK | ___GFP_COMP | ___GFP_FS | ___GFP_IO | ___GFP_WAIT

This does not give the allocator permission to allocate from highmem -
for that, it needs ___GFP_HIGH to be in there, but it isn't.

The kernel should _not_ consume 760MB of lowmem during boot, but according
to the accounting, it looks like it has.

If the memory allocation structures are ending up in the problem region
of physical RAM, then that could be responsible for this OOM - but that
won't happen, because we don't place that stuff into highmem.

In short, I don't have a clue what would cause 760MB of lowmem to be
gobbled up, but one thing I'm absolutely certain of is that adding more
highmem won't solve this - if anything, it'll probably make things worse
due to more lowmem being consumed to track the additional highmem pages.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

  parent reply	other threads:[~2015-03-12 12:59 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-10 16:54 [PATCH] n_tty: use kmalloc() instead of vmalloc() to avoid crash on armada-xp Stas Sergeev
2015-03-10 17:17 ` Catalin Marinas
2015-03-10 17:27   ` Stas Sergeev
2015-03-10 17:38     ` Russell King - ARM Linux
2015-03-10 18:31       ` Stas Sergeev
2015-03-10 18:54         ` Russell King - ARM Linux
2015-03-11 12:30       ` Stas Sergeev
2015-03-11 12:47         ` Russell King - ARM Linux
2015-03-11 14:24           ` Stas Sergeev
2015-03-11 16:30             ` Peter Hurley
2015-03-11 16:39               ` Stas Sergeev
2015-03-12 12:33             ` Peter Hurley
2015-03-12 12:47               ` Stas Sergeev
2015-03-12 13:04                 ` Russell King - ARM Linux
2015-03-12 13:11                   ` Stas Sergeev
2015-03-12 15:34                     ` Vladimir Murzin
2015-03-12 12:59               ` Russell King - ARM Linux [this message]
2015-03-10 17:29 ` Russell King - ARM Linux
2015-03-10 17:35 ` Peter Hurley
2015-03-10 17:51   ` Stas Sergeev
2015-03-10 18:45     ` Peter Hurley
2015-03-11 12:44 ` Gregory CLEMENT
2015-03-11 12:57   ` Stas Sergeev
2015-03-11 13:14   ` Russell King - ARM Linux
2015-03-11 14:33     ` Stas Sergeev
2015-03-11 15:01     ` Stas Sergeev
2015-03-11 15:13       ` Gregory CLEMENT
2015-03-11 15:22         ` Stas Sergeev
2015-03-12 13:06           ` Russell King - ARM Linux
2015-03-11 16:52 ` Thomas Petazzoni
2015-03-11 17:26   ` Stas Sergeev
2015-03-11 17:46     ` Russell King - ARM Linux
2015-03-11 17:56       ` Stas Sergeev
2015-03-11 18:11         ` Thomas Petazzoni
2015-03-11 18:38           ` Stas Sergeev
2015-03-11 18:41             ` Russell King - ARM Linux
2015-03-11 18:08       ` Stas Sergeev
2015-03-11 18:33         ` Thomas Petazzoni
2015-03-12 12:44           ` Stas Sergeev
2015-03-12 12:47             ` Thomas Petazzoni
2015-03-12 13:03               ` Stas Sergeev
2015-03-12 13:12                 ` Russell King - ARM Linux
2015-03-12 13:16                   ` Stas Sergeev
2015-03-12 13:55                 ` Thomas Petazzoni

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=20150312125910.GN8656@n2100.arm.linux.org.uk \
    --to=linux@arm.linux.org.uk \
    --cc=linux-arm-kernel@lists.infradead.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;
as well as URLs for NNTP newsgroup(s).